miniatura|alt=Xeración de dúas chaves relacionadas: unha pública e outra privada.|Xeración dun par de chaves: a pública pódese distribuír e a privada debe manterse en segredo. A criptografía de chave pública, ou criptografía asimétrica, é o conxunto de técnicas que empregan pares de chaves matematicamente relacionadas: unha chave pública, que pode distribuírse, e unha chave privada, que se mantén en segredo. Segundo o esquema, estas chaves permiten cifrar mensaxes para un destinatario, crear sinaturas dixitais ou establecer material de chaves compartido.
A separación de chaves permite publicar a información necesaria para cifrar ou verificar unha sinatura sen revelar o segredo correspondente. Porén, é necesario autenticar a relación entre unha chave pública e a entidade á que se atribúe; doutro xeito, un atacante podería substituíla pola súa.
Descrición O usuario xera o seu par de chaves mediante o algoritmo do esquema. A relación matemática permite realizar as operacións previstas coa chave pública, pero debe facer computacionalmente inviable obter a chave privada a partir dela cos parámetros escollidos. A seguridade depende dos problemas matemáticos e do modelo de ataque considerados, e non de manter secreto o algoritmo.
Cifraxe miniatura|alt=O emisor cifra unha mensaxe coa chave pública; o destinatario recupéraa coa súa chave privada.|Cifraxe coa chave pública do destinatario e descifraxe coa súa chave privada. Nun esquema de cifraxe de chave pública, o emisor emprega a chave pública autenticada do destinatario para transformar unha mensaxe nun texto cifrado. O destinatario usa a súa chave privada para recuperala. As construcións modernas incorporan aleatoriedade ou codificacións axeitadas: aplicar sen máis unha operación alxébrica como RSA non proporciona por si só todas as garantías de seguridade requiridas.
Sinaturas dixitais miniatura|alt=Unha mensaxe asínase coa chave privada e a sinatura compróbase coa chave pública correspondente.|Verificación dunha sinatura coa chave pública do asinante. Nun esquema de sinatura dixital, o asinante produce unha sinatura coa súa chave privada e o verificador compróbaa coa chave pública correspondente. A autenticación desa chave é a que permite relacionar a sinatura cunha identidade. A non falsificabilidade esixe que un adversario sen a chave privada non poida producir sinaturas válidas para mensaxes novas nas condicións do modelo de seguridade; observar ou reenviar unha sinatura xa existente non equivale a falsificala.
Acordo e autenticación de chaves miniatura|alt=Dúas partes intercambian valores públicos e calculan un mesmo segredo compartido.|Nun acordo de chaves, ambas as partes calculan un segredo compartido a partir das súas achegas. Protocolos como Diffie–Hellman permiten que as partes deriven un segredo compartido. O acordo por si só non autentica os participantes; a autenticación pode incorporarse mediante certificados, sinaturas, chaves precompartidas ou outros mecanismos do protocolo.
A infraestrutura de chave pública emprega certificados para vincular chaves públicas con identidades baixo unhas regras de confianza. Unha alternativa é o modelo de rede de confianza, empregado en PGP, no que os usuarios avalan outras chaves. DKIM utiliza outro mecanismo: publica chaves no DNS para verificar as sinaturas asociadas a dominios no correo electrónico.
Criptosistemas híbridos A cifraxe asimétrica adoita combinarse coa simétrica. Nun criptosistema híbrido, un mecanismo asimétrico protexe ou permite establecer unha chave, e un algoritmo simétrico cifra os datos. Por exemplo, o emisor pode xerar unha chave de sesión e protexela coa chave pública do destinatario.
Nos protocolos de comunicación tamén se pode derivar o material de chaves mediante un acordo como Diffie–Hellman. Por iso, non hai unha regra xeral pola que un servidor deba xerar e enviar a chave simétrica ao cliente. TLS 1.3 negocia material compartido a partir das achegas das partes ou de chaves precompartidas, segundo a modalidade.
Seguridade e xestión das chaves Algoritmos e parámetros A dificultade dos problemas matemáticos, os parámetros, a aleatoriedade e a implementación condicionan a seguridade. Unha operación alxébrica que permite cifrar e descifrar non é necesariamente unha cifraxe segura fronte aos ataques considerados; por exemplo, a seguridade semántica pretende impedir que o texto cifrado permita extraer información computacionalmente útil sobre a mensaxe.
Autenticidade das chaves públicas Se un atacante logra substituír unha chave pública durante un intercambio non autenticado, pode establecer comunicacións separadas coas dúas partes e actuar como intermediario. Isto non implica que a mera observación dos paquetes rompa unha cifraxe correctamente deseñada. Os certificados, as impresións dixitais verificadas por unha canle fiable e os mecanismos de autenticación do protocolo son formas de protexer o intercambio; non é necesario controlar fisicamente toda a infraestrutura.
Compromiso e revogación A exposición dunha chave de sinatura permite a un atacante intentar facerse pasar polo seu titular mediante novas sinaturas. A exposición dunha chave de descifraxe pode comprometer os datos protexidos con ela. Estes efectos non son intercambiables: nos protocolos con confidencialidade cara adiante (forward secrecy, protección das comunicacións anteriores fronte ao compromiso posterior das chaves de longo prazo), a revelación da chave de autenticación non implica por si soa recuperar os segredos efémeros de sesións rematadas.
Unha autoridade de certificación vincula unha chave pública cunha identidade baixo unha política determinada. As chaves raíz deben ser aceptadas mediante un procedemento de confianza externo á propia autosinatura do certificado. Se unha autoridade é comprometida, pode ser necesario revogar certificados e substituír chaves ou áncoras de confianza; o alcance depende da xerarquía, das restricións dos certificados e dos protocolos empregados.
Metadatos A cifraxe protexe os datos que se inclúen no seu alcance. Outros datos, como tamaños, enderezos ou información de encamiñamento, poden permanecer visibles segundo o sistema. Esta é unha cuestión do deseño do protocolo e da súa implantación, non unha propiedade que obrigue a toda cifraxe de chave pública a deixar sempre sen protección os mesmos campos.
Historia A distribución das chaves secretas foi un problema central dos sistemas de cifraxe: as partes necesitaban un procedemento fiable para obter e autenticar os segredos compartidos. A criptografía de chave pública introduciu outras formas de organizar esa distribución, aínda que non elimina a necesidade de establecer confianza nas chaves.
Antecedentes En 1874, William Stanley Jevons empregou a dificultade de factorizar un número grande como exemplo da diferenza entre realizar unha operación e invertela. Solomon W. Golomb comentou posteriormente a relación dese exemplo coa dificultade utilizada en RSA. Isto non constitúe unha descrición dun sistema de criptografía de chave pública por parte de Jevons.
Descubrimento clasificado En 1970, James H. Ellis, un criptógrafo británico do Government Communications Headquarters (GCHQ) do Reino Unido, concibiu a posibilidade dunha «cifraxe non secreta» («non-secret encryption», agora chamada criptografía de chave pública), pero non vía xeito de implementala.
En 1973, o seu colega Clifford Cocks describiu o que chegou a coñecerse como o algoritmo de cifraxe RSA, proporcionando un método práctico de «cifraxe non secreta», e en 1974 outro matemático e criptógrafo do GCHQ, Malcolm J. Williamson, desenvolveu o que hoxe se coñece como intercambio de chaves Diffie–Hellman. O esquema tamén se transmitiu á National Security Agency dos Estados Unidos. Ambas as organizacións tiñan un enfoque militar e en calquera caso só se dispuña dunha potencia de computación limitada; o potencial da criptografía de chave pública seguiu sen ser aproveitado por ningunha das organizacións.
Estes descubrimentos non se recoñeceron publicamente ata que a investigación foi desclasificada polo Goberno británico en 1997.
Descubrimento público En 1976, Whitfield Diffie e Martin Hellman publicaron a súa proposta de criptografía de chave pública e un método para acordar unha chave compartida mediante exponenciación nun corpo finito. Tamén recoñeceron a contribución das ideas de Ralph Merkle sobre distribución de chaves. O método coñécese como intercambio de chaves Diffie–Hellman.
En 1977, Ron Rivest, Adi Shamir e Leonard Adleman desenvolveron de maneira independente o sistema RSA. A descrición técnica publicouse en Communications of the ACM en 1978; Martin Gardner xa presentara unha explicación divulgativa en Scientific American en agosto de 1977.
A técnica de acordo de chaves de Merkle, coñecida como crebacabezas de Merkle, inventouse en 1974 e publicouse en 1978. Diffie e Hellman xa recoñeceran a súa contribución no artigo de 1976.
Desde a década de 1970 desenvolveuse unha gran variedade de técnicas de cifraxe, sinatura dixital, acordo de chaves e outras, entre elas a sinatura Rabin, a cifraxe ElGamal, o DSA e a ECC. A súa adopción e os parámetros apropiados dependen da aplicación e dos estándares correspondentes.
Ademais dos algoritmos desenvolvidos nas comunidades académicas e de estándares abertas, varios países crearon estándares nacionais de criptografía de chave pública para o seu uso interno, como SM2 e SM9 (China), GOST R 34.10-2012 (Rusia), EC-KCDSA (Corea do Sur) e DSTU 4145 (Ucraína).
Exemplos e aplicacións RSA é un exemplo de construción empregada en esquemas de cifraxe e de sinatura, con codificacións e regras específicas para cada finalidade. ElGamal é outro esquema de cifraxe de chave pública. O transporte dunha chave mediante cifraxe debe distinguirse do seu acordo entre as partes.
Diffie–Hellman e a súa variante sobre curvas elípticas úsanse para o acordo de chaves. ECDSA e EdDSA son familias de algoritmos de sinatura. Protocolos como TLS combinan mecanismos de autenticación, establecemento de chaves e protección simétrica do tráfico.
En 2024 o NIST normalizou ML-KEM, un mecanismo de encapsulamento de chaves derivado de Kyber, no FIPS 203. A súa seguridade baséase nun problema de aprendizaxe con erros sobre módulos e está deseñado para resistir tamén adversarios cuánticos, baixo as hipóteses do estándar.
As aplicacións deben distinguirse dos estándares que implementan: por exemplo, GnuPG é software que implementa OpenPGP, non o propio estándar.
Entre as técnicas asimétricas máis establecidas, para propósitos variados, están o protocolo de intercambio de chaves Diffie-Hellman, o estándar de sinatura dixital (DSS, que incorpora o algoritmo de sinatura dixital), ElGamal, a criptografía de curva elíptica (co ECDSA, o ECDH, Ed25519 e Ed448 dentro de EdDSA, e X25519 e X448), as técnicas de acordo de chaves autenticado por contrasinal, o criptosistema Paillier, o algoritmo RSA con PKCS#1, o criptosistema Cramer-Shoup e o protocolo de acordo de chaves autenticado YAK.
Outros algoritmos asimétricos son NTRUEncrypt, Kyber e o criptosistema McEliece. Kyber deu lugar ao estándar ML-KEM de 2024. Un exemplo de algoritmo asimétrico notable pero inseguro é o criptosistema de mochila Merkle-Hellman.
Entre os protocolos e sistemas que empregan algoritmos de chave pública están S/MIME, OpenPGP, EMV, IPsec, PGP, ZRTP, TLS (do IETF, e o seu predecesor SSL), SILC, SSH, Bitcoin e Off-the-Record Messaging. GPG é unha implementación de OpenPGP.
Notas
Véxase tamén Bibliografía Introdución ás chaves públicas e á súa utilización en SSL/TLS.
IEEE 1363: Standard Specifications for Public-Key Cryptography Christof Paar, Jan Pelzl, «Introduction to Public-Key Cryptography», capítulo 6 de Understanding Cryptography, A Textbook for Students and Practitioners (o sitio web complementario contén un curso en liña de criptografía que abrangue a criptografía de chave pública), Springer, 2009.