Criptografia Assinaturas digitais
As assinaturas digitais são as primitivas de chave pública de autenticação de mensagem. No mundo físico, é comum usar assinaturas manuscritas em mensagens manuscritas ou digitadas. Eles são usados para vincular o signatário à mensagem.
Da mesma forma, uma assinatura digital é uma técnica que vincula uma pessoa / entidade aos dados digitais. Esta ligação pode ser verificada de forma independente pelo receptor, bem como por terceiros.
A assinatura digital é um valor criptográfico calculado a partir dos dados e de uma chave secreta conhecida apenas pelo signatário.
No mundo real, o receptor da mensagem precisa ter certeza de que a mensagem pertence ao remetente e ele não deve ser capaz de repudiar a origem dessa mensagem. Este requisito é muito importante em aplicativos de negócios, uma vez que a probabilidade de uma disputa sobre dados trocados é muito alta.
Modelo de Assinatura Digital
Conforme mencionado anteriormente, o esquema de assinatura digital é baseado na criptografia de chave pública. O modelo de esquema de assinatura digital é representado na ilustração a seguir -
Os pontos a seguir explicam todo o processo em detalhes -
Cada pessoa que adota esse esquema tem um par de chaves pública-privada.
Geralmente, os pares de chaves usados para criptografar / descriptografar e assinar / verificar são diferentes. A chave privada usada para assinatura é conhecida como chave de assinatura e a chave pública como chave de verificação.
Signer alimenta dados para a função hash e gera hash de dados.
O valor de hash e a chave de assinatura são então alimentados para o algoritmo de assinatura que produz a assinatura digital em determinado hash. A assinatura é anexada aos dados e, em seguida, ambos são enviados ao verificador.
O verificador alimenta a assinatura digital e a chave de verificação no algoritmo de verificação. O algoritmo de verificação fornece algum valor como saída.
O Verifier também executa a mesma função hash nos dados recebidos para gerar o valor hash.
Para verificação, este valor hash e a saída do algoritmo de verificação são comparados. Com base no resultado da comparação, o verificador decide se a assinatura digital é válida.
Uma vez que a assinatura digital é criada pela chave 'privada' do signatário e ninguém mais pode ter essa chave; o signatário não pode repudiar a assinatura dos dados no futuro.
Deve-se notar que em vez de assinar dados diretamente pelo algoritmo de assinatura, geralmente um hash de dados é criado. Como o hash de dados é uma representação exclusiva dos dados, é suficiente assinar o hash no lugar dos dados. O motivo mais importante de usar hash em vez de dados diretamente para assinatura é a eficiência do esquema.
Vamos supor que RSA seja usado como algoritmo de assinatura. Conforme discutido no capítulo de criptografia de chave pública, o processo de criptografia / assinatura usando RSA envolve exponenciação modular.
A assinatura de grandes volumes de dados por meio de exponenciação modular é computacionalmente cara e demorada. O hash dos dados é um resumo relativamente pequeno dos dados, portantosigning a hash is more efficient than signing the entire data.
Importância da Assinatura Digital
Dentre todas as primitivas criptográficas, a assinatura digital com criptografia de chave pública é considerada uma ferramenta muito importante e útil para alcançar a segurança da informação.
Além da capacidade de fornecer não repúdio à mensagem, a assinatura digital também fornece autenticação de mensagem e integridade de dados. Vamos ver rapidamente como isso é conseguido pela assinatura digital -
Message authentication - Quando o verificador valida a assinatura digital usando a chave pública de um remetente, ele tem a garantia de que a assinatura foi criada apenas pelo remetente que possui a chave privada secreta correspondente e mais ninguém.
Data Integrity- Caso um invasor tenha acesso aos dados e os modifique, a verificação da assinatura digital no receptor falha. O hash dos dados modificados e a saída fornecida pelo algoritmo de verificação não serão correspondentes. Portanto, o receptor pode negar a mensagem com segurança, supondo que a integridade dos dados foi violada.
Non-repudiation- Uma vez que se presume que apenas o assinante tem o conhecimento da chave de assinatura, ele só pode criar uma assinatura exclusiva em um dado dado. Assim, o receptor pode apresentar os dados e a assinatura digital a um terceiro como prova, caso surja alguma disputa no futuro.
Adicionando criptografia de chave pública ao esquema de assinatura digital, podemos criar um criptosistema que pode fornecer os quatro elementos essenciais de segurança, a saber - Privacidade, Autenticação, Integridade e Não-repúdio.
Criptografia com assinatura digital
Em muitas comunicações digitais, é desejável trocar mensagens criptografadas em vez de texto simples para obter confidencialidade. No esquema de criptografia de chave pública, uma chave pública (criptografia) do remetente está disponível em domínio aberto e, portanto, qualquer pessoa pode falsificar sua identidade e enviar qualquer mensagem criptografada ao destinatário.
Isso torna essencial que os usuários que utilizam PKC para criptografia busquem assinaturas digitais junto com dados criptografados para garantir a autenticação e não repúdio da mensagem.
Isso pode ser arquivado combinando assinaturas digitais com esquema de criptografia. Vamos discutir brevemente como atingir esse requisito. temtwo possibilities, sign-then-encrypt e encrypt-then-sign.
No entanto, o sistema de criptografia baseado em assinar e depois criptografar pode ser explorado pelo receptor para falsificar a identidade do remetente e enviar esses dados a terceiros. Portanto, este método não é preferido. O processo de criptografar e assinar é mais confiável e amplamente adotado. Isso é retratado na ilustração a seguir -
O destinatário, após receber os dados criptografados e a assinatura nele, primeiro verifica a assinatura usando a chave pública do remetente. Depois de garantir a validade da assinatura, ele recupera os dados por meio de descriptografia usando sua chave privada.