Criptografia de chave pública sem certificado

Criptografia de Chave Pública Sem Certificado (do inglês, CL-PKC - Certificateless Public Key Cryptography) é um tipo de criptografia de chave pública em que existe uma entidade confiável chamada Key Generation Center (KGC) que deve emitir uma chave parcial que será compartilhada com o usuário, e o usuário, por sua vez, deve gerar um par de chaves pública/privada. O modelo de criptografia de chave pública sem certificados foi apresentado originalmente por Al-Riyami e Paterson (2003).[1] Criptografia de Chave Pública Sem Certificado (CL-PKC), assim como a Criptografia Baseada na Identidade, permite uma comunicação segura, sem necessidade de utilizar certificados digitais.

Em uma Criptografia de chave pública, a criptografia utilizada requer um par de chaves: uma chave pública (para criptografar ou para validar assinatura) e uma chave privada (para decifrar ou para assinar). A solução mais comum de uso de uma criptografia de chaves públicas é usando uma ICP(Infraestrutura de Chaves Públicas). Ainda assim, há criptografias de chave pública que dispensam a necessidade de ICP:

  • Modelo Baseado na Identidade;
  • Modelo Auto-certificado;
  • Modelo sem certificado.

Os autores Al-Riyami e Paterson buscavam uma forma de aliminar a custódia de chaves do modelo baseado em identidade, mais especificamente do protocolo de cifragem de Boneh e Franklin (2003). O CL-PKC procura então agregar melhorias a dois outros modelos, em relação ao PKC ele provê melhoria no sentido em que torna a estrutura mais simples (sem a necessidade de um certificado digital) e em relação ao modelo baseado na identidade (ID-PKC) ele aperfeiçoa a segurança pois deixa de ser necessária a custódia de chaves. Al-Riyami e Paterson para chegar a este modelo intermediário entre o baseado na identidade e o convencional com certificados digitais foram combiandas ideias do modelo de chave pública autocertificada de Girault (1991)[2] e do modelo baseado na identidade de Boneh e Franklin (2001).[3]

Modelo CL-PKC e Geração das Chaves

[editar | editar código-fonte]

A chave secreta completa (s), neste modelo, é formada por duas partes: uma parte é escolhida apenas pelo usuário (x) e a outra parte é calculada pela autoridade de confiança (KGC) e compartilhada com o usuário. A chave parcial (d) calculada pela autoridade é gerada em função da identidade do usuário (ID) e de uma chave mestra secreta da autoridade (sAC). A chave pública, por sua vez, é calculada de forma semelhante ao que ocorre no modelo convencional. O usuário a partido seu segredo (x) gera a chave pública (P). A chave pública poderá ser divulgada pelo próprio usuário ou é colocada em um diretório público.

  • Torna-se desnecessária a custódia de chaves e a utilização de certificados digitais;
  • Risco de comprometimento da chave mestra é menor, se houver perda ou violação, apenas são comprometidas as chaves parciais;
  • Apenas a chave parcial não permite decifrar e assinar, é preciso obter o segredo do usuário;
  • Processo de renovação de chaves pode ser controlado totalmente pelo usuário, alterando o seu próprio segredo (x);
  • É susceptível a um ataque chamado de Denial of Decryption (DoD), ataque que se dá quando alguém divulga falsamente uma chave pública ou a substitui em um repositório público;
  • Modelo ainda requer um repositório de chaves públicas;
  • Requer um canal autêntico e confidencial para entrega da chave parcial secreta compartilhada entre o usuário e o KGC;

Referências

  1. Al-Riyami, Sattam; Kenneth G. Paterson (2003). «Certificateless Public Key Cryptography» (PDF). Lecture Notes in Computer Science, pp. 452 – 473. Consultado em 4 de agosto de 2014 
  2. Girault, Marc (1991). «Self-certified public keys». EUROCRYPT, volume 547 of Lecture Notes in Computer Science, páginas 490-497. Springer. Consultado em 4 de agosto de 2014 
  3. Boneh, Dan; Matthew K. Franklin (2001). «Identity-Based Encryption from the Weil Pairing». Advances in Cryptology - Proceedings of CRYPTO 2001. Consultado em 4 de agosto de 2014 

Ligações externas

[editar | editar código-fonte]