Objetivo deste
post e esclarecer uma dúvida que é frequente nas discussões sobre
assinatura digital.
Primeiro
precisamos entender como funciona o processo de verificação da
assinatura, e como fazemos a validação de um certificado digital
Para obtenção
da chave privada e do certificado com OpenSSL, usamos o seguinte
comando:
root@criativo:/home/edpes/SSLtest#
openssl req -nodes -x509 -sha256 -newkey rsa:4096 -keyout edpesPV.key
-out edpesKey.crt -days 365 -subj "/C=NL/ST=Zuid
Brasil/L=SaoPaulo O=Edson Pessotti OU=IT Dept/CN=”edpes Sign Key"
Generating
a 4096 bit RSA private key
........................................................++
......++
writing new private key to
'edpesPV.key'
Agora
temos a chave Privada com a qual assinaremos o documento digital, e o
certifica com o quaal validaremos a asssinatura
Agora vamos
separar o processo de validação das assinaturas digitais em duas
etapas, a primeira a verificação da assinatura digital
propriamente dita e a segunda a validação do certificado digital do
signatário.
A primeira
etapa tem como objetivo garantir a autenticidade e integridade do
documento eletrônico onde a assinatura digital foi firmada, e esses
pontos são verificados utilizando os algoritmos de assinatura
digital, como por exemplo o RSA e de integridade, onde o mais comum
para nós até agora é o SHA‐256.
Exemplo som
OpenSSL.
openssl dgst
-sha256 -sign edpesPV.key -out teste2.txt.sha256 teste.txt
Essa etapa é
executada utilizando a chave privada do signatário e não o seu
certificado digital, que será utilizado somente no processo de
verificação da validade da assinatura.
Com isso, aqui
já aparecem elementos desconhecidos da maioria das pessoas, pois
para assinar um documento eletrônico não é utilizado o certificado
digital e sim uma chave privada que foi gerada no momento da
solicitação do certificado e todo titular de um certificado
digital, possui uma chave privada, que é conhecimento exclusivo do
usuário, e o certificado digital emitido.
Já os
processos de assinatura digital são um processo criptográfico que
envolve dois conjuntos de algoritmos muito importantes, os algoritmos
de resumo de mensagem e os algoritmos de assinatura digital.
Os algoritmos
de resumo de mensagem são utilizados para gerar um resumo binário,
de tamanho fixo, que é gerado considerando todo o documento
eletrônico, assim, esse resumo se torna uma identidade do documento.
Após o
calculo do resumo, qualquer mudança, por menor que seja, irá
resultar em um resumo completamente diferente, e com isso, será
possível identificar qualquer alteração no documento após o seu
cálculo.
Já a
assinatura digital, como nos documentos físicos, tem como objetivo
garantir a anuência ou intenção em relação ao conteúdo de um
documento eletrônico e essa assinatura é produzida através da
criptografia do resumo de mensagem gerado utilizando a chave privada
do signatário.
As chaves
privadas são elementos de cunho pessoal e privado, somente o seu
proprietário devera ter a capacidade de utiliza-la e com isso,
existe uma responsabilidade direta entre o proprietário da chave
privada utilizada na assinatura e o documento assinado.
Os
interessados em verificar a integridade e autenticidade do documento
eletrônico assinado digitalmente, precisa somente calcular o resumo
do documento eletrônico assinado, decifrar o resumo cifrado
anteriormente utilizando a chave pública do signatário e comparar o
resultado com o calculado.
Se o resumo
calculado for idêntico ao decifrado pela chave pública, que foi
localizada no certificado digital do assinante, é possível concluir
que o documento está integro e o assinante é o titular do
certificado digital, no qual a chave pública utilizada foi
resgatada.
Exemplo com
OpenSSL:
root@criativo:/home/edpes/SSLtest#
openssl dgst -sha256 -verify <(openssl x509 -in edpesKey.crt
-pubkey -noout) -signature teste2.txt.sha256 teste.txt
Verified OK
Assim fica
provado a autênticidae e a integridade do documento digital:
A partir desse
ponto está claro o desejo do signatário em relação ao documento
assinado, mas ainda é necessário verificar se o mesmo está
habilitado a produzir a assinatura digital aposta ao documento.
É a partir
desse ponto que iniciamos a segunda etapa do processo de validação
da assinatura digital e essa etapa tem o objetivo de validar o
certificado digital do signatário e garantir que o mesmo está apto
a efetuar a assinatura digital do documento eletrônico.
O certificado
digital foi pensado com o objetivo de dar credibilidade às chaves
criptográficas que são utilizadas em um ecossistema criptográfico
e um dos elementos fundamentais de uma infraestrutura de chaves
públicas.
Através do
certificado digital podemos averiguar a validade da chave pública
utilizada para verificar a assinatura digital e essa averiguação
deve ocorrer avaliando quatro condições importantes.
A primeira
condição a ser avaliada é a data de validade do certificado
digital e consequentemente a data permitida para uso da chave pública
e privada do signatário
O certificado
digital possui duas datas que são a data na qual as chaves do
titular passam a ter validade e a data de expiração das chaves.
Assim, essas datas precisam ser verificadas com o objetivo de
garantir a validade das chaves no momento da assinatura digital do
documento eletrônico.
Após a
verificação das datas, a próxima condição a ser verificada é a
cadeia de confiança referente ao certificado digital utilizado.
Avaliar a cadeia de confiança tem como finalidade garantir a
confiabilidade do certificado digital e consequentemente das chaves
utilizadas no processo de assinatura e verificação do documento
assinado digitalmente.
As entidades
interessadas e que irão efetuar a validação da assinatura digital
devem possuir as Autoridades Certificadoras nas quais confiam e essas
Autoridades Certificadoras compõem a sua cadeia de confiança.
Aqui no
Brasil, como em alguns país do mundo, existe legislação para uso e
aceitação dos documentos assinados digitalmente e assim,
independente das Autoridades Certificadoras nas quais essas entidades
confiem, as Autoridades Certificadoras participantes da ICP-Brasil
gozam de credibilidade e confiança em território nacional.
Portanto,
nenhuma entidade subordinada ás leis brasileiras pode se recusar a
aceitar um documento eletrônico assinado com um certificado digital,
emitido por uma Autoridade Certificadora credenciada pelo governo
federal e que esteja válido.
A cadeia de
confiança composta pelas Autoridades Certificadoras da CP-‐Brasil
devem ser aceitas por qualquer entidade em território nacional e
essa questão está resolvida na Medida Provisória 2200/2.
Com isso, o
processos de verificação deve avaliar se o certificado digital do
signatário foi emitido por uma Autoridade Certificado credenciada e
operacional na ICP-Brasil.
A terceira
condição diz respeito ao tipo de certificado digital utilizado no
processo de assinatura do documento eletrônico. A ICP-Brasil faculta
a emissão de dois tipos de certificados digitais, os certificados do
tipo A e certificados do tipo S.
Os
certificados digitais do tipo A são certificados digitais destinados
a permitir a assinatura digital dos documentos eletrônicos e com
isso, somente o titular tem conhecimento e custódia da chave privada
vinculada a esse tipo de certificado.
Já os
certificados do tipo S tem como finalidade possibilitar a
criptografia de arquivos e equipamentos de forma segura, pois
utilizando certificados digitais do tipo S o titular pode solicitar a
uma entidade externa a custódia de sua chave privada e, em um
incidente que comprometa a sua chave privada, ela poderá recorrer a
essa entidade externa para resgatar uma cópia da sua chave.
Consequentemente, esse tipo de certificado digital não pode ser
utilizado no processo de assinatura digital.
A última
condição a ser avaliada com o objetivo de garantir a legitimidade
da assinatura é o estado sobre a revogação do certificado digital.
Todas as
Autoridades Certificadoras devem comunicar aos terceiros sobre o
estados dos certificados digitais emitidos e essa comunicação
acontece através de dois serviços importantes, a Lista de
Certificados Revogados (LCR), ou o Online Certificate Status Protocol
(OCSP).
Assim, todas
as entidades interessadas em validar o certificado digital de um
assinante precisa utilizar um desses serviços com o objetivo de
verificar se não houve, por parte do titular, a revogação do
certificado digital utilizado.
Se o
certificado digital estiver revogado, a entidade que está
verificando a assinatura digital pode concluir que essa assinatura
foi produzida utilizando chaves que não são mais válidas e isso
anula a assinatura digital em avaliação.
Entender essas
as condições existentes para a verificação de uma assinatura
digital é fundamental tanto para o time técnico quanto para os
executivos que desejam utilizar a tecnologia em seus processos de
negócio e com o conhecimento adequado as empresas podem se
beneficiar da certificação digital de forma correta e reduzir de
forma considerável diversos custos relativos a assinatura digital de
documentos.
Espero ter
atingido o objetivo principal deste post que é conduzir os
interessados sobre o assunto a um entendimento abrangente sobre a
segurança e as etapas referente às assinaturas digitais.