Compartilhar via


Escovando o bit... o que é o Thumbprint?

Este termo é largamente conhecido por quem estuda e trabalha com certificação digital e estruturas PKI. Tais estruturas ajudam a verificar a autenticidade e identidade de cada parte envolvida em uma transação eletrônica. O conceito de infraestrutura PKI é bem amplo, porém o Thumbprint é um pequeno ponto de grande importância que deve ser observado com cuidado.

Quando acessamos um certificado digital, é comum observar que o hash da assinatura será diferente o thumbprint, e por mais que você faça modificações em sua Autoridade Certificadora (CA), ainda assim o thumbprint se mantem com o hash SHA1 (pelo menos até o momento com o Windows Server 2012 R2 e 2016). Mas exatamente o que é o thumbprint e qual o seu papel com a certificados digitais?  

 Thumbprint (ou impressão digital), é apenas uma propriedade relacionada a certificação digital. É anexado ao objeto de certificado pelo subsistema CryptoAPI e possui valor sempre igual a SHA1. A impressão digital é usada apenas para localizar o certificado necessário na loja (repositório de certificados). A assinatura é uma parte do certificado digital. 

Essa impressão digital é gerada dinamicamente pelo algoritmo SHA1 e não existe fisicamente no certificado. Uma vez que a impressão digital é um valor exclusivo para o certificado, é comumente usado para localizar um certificado específico em um armazenamento de certificados.  É importante não confundir o hash de assinatura do certificado com o thumprint, mas a cima de tudo, é importante saber o que é um thumbprint e sua funcionalidade dentro da estrutura de certificados. 

A CryptoAPI é um interface de programação de aplicativos criptográficos específicos da plataforma Microsoft Windows (também conhecida como CryptoAPI, Microsoft Cryptography API, MS-CAPI ou simplesmente CAPI). Trata-se de uma interface de programação de aplicativos incluída nos sistemas operacionais da família Windows (conhecido como subsistema) que fornece serviços utilizados para permitir que desenvolvedores protejam aplicativos desenhados para trabalho no Windows utilizando criptografia. É um conjunto de bibliotecas dinamicamente vinculadas que fornece uma camada de abstração isolando os programadores do código através de criptografia de dados. A API Crypto foi introduzida pela primeira vez no Windows NT 4.0 e aprimorada em versões subsequentes.  

 O CryptoAPI suporta criptografia de chave pública e de chave simétrica, embora as chaves simétricas persistentes não sejam suportadas. Ele inclui funcionalidade para criptografar e descriptografar dados e para autenticação através de certificados digitais, possuindo também uma função chamada CryptGenRandom. O CryptGenRandom é um gerador de números pseudo-aleatórios criptográficamente seguros. O CryptoAPI funciona com um número de CSPs (Cryptographic Service Providers) instalados na máquina. CSPs são os módulos que realizam o trabalho real de codificação e decodificação de dados executando as funções criptográficas. Fornecedores de HSMs podem fornecer um CSP que trabalhe com seu hardware. 

 O lançamento do Windows Vista trouxe um aprimoramento real para o Cryptography API, conhecido pela comunidade técnica como Cryptography API Next Generation (CNG). Esta nova geração de CryptoAPI permite a utilização de uma ampla gama de algoritmos criptográficos ea inclusão de um número de algoritmos mais recentes que fazem parte da Agência Nacional de Segurança dos Estados Unidos (NSA), sendo também extremamente flexivel, suportando inserção de APIs criptográficas personalizadas dentro do tempo de execução do CNG 

 No entanto, CNG Key Storage Providers ainda não suportam chaves simétricas, lembrando que o CNG funciona em modo usuário e no kernel além de suportar todos os algoritmos do CryptoAPI. O provedor Microsoft que implementa CNG é hospedado pela biblioteca Bcrypt.dll nos sistemas operacionais Windows.