Saltar ao contido

Criptografía de chave pública

Na Galipedia, a Wikipedia en galego.
Criptografía de chave pública
Imaxe
 Subclase de
 Epónimo
 Medio usado
Fontes e ligazóns
Freebase/m/061fs Editar o valor en Wikidata
MathWorldPublic-KeyCryptography Editar o valor en Wikidata
OpenAlexC203062551 e C2984195096 Editar o valor en Wikidata
Wikidata C:Commons
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.[1]

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.[2]

Descrición

[editar | editar a fonte]

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.[1]

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.[1]

Sinaturas dixitais

[editar | editar a fonte]
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.[2]

Acordo e autenticación de chaves

[editar | editar a fonte]
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.[3]

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.[2] DKIM utiliza outro mecanismo: publica chaves no DNS para verificar as sinaturas asociadas a dominios no correo electrónico.[4]

Criptosistemas híbridos

[editar | editar a fonte]

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.[1]

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.[3]

Seguridade e xestión das chaves

[editar | editar a fonte]

Algoritmos e parámetros

[editar | editar a fonte]

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.[1]

Autenticidade das chaves públicas

[editar | editar a fonte]

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.[2][3]

Compromiso e revogación

[editar | editar a fonte]

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.[3]

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.[2]

Metadatos

[editar | editar a fonte]

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.[3]

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.[2]

Antecedentes

[editar | editar a fonte]

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.[5][6][7]

Descubrimento clasificado

[editar | editar a fonte]

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.[8][9][10]

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.[11] 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.[12]

Descubrimento público

[editar | editar a fonte]

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.[13]

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.[14]

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.[13]

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.[1]

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

[editar | editar a fonte]

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.[1]

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.[3]

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.[15]

As aplicacións deben distinguirse dos estándares que implementan: por exemplo, GnuPG é software que implementa OpenPGP, non o propio estándar.[16]

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.[15] 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.

  1. 1 2 3 4 5 6 7 Alfred J. Menezes; Paul C. van Oorschot; Scott A. Vanstone (1996). "Public-Key Encryption" (PDF). Handbook of Applied Cryptography (en inglés). CRC Press. Consultado o 14 de setembro de 2026.
  2. 1 2 3 4 5 6 Alfred J. Menezes; Paul C. van Oorschot; Scott A. Vanstone (1996). "Key Management Techniques" (PDF). Handbook of Applied Cryptography (en inglés). CRC Press. Consultado o 14 de setembro de 2026.
  3. 1 2 3 4 5 6 Eric Rescorla (agosto de 2018). "The Transport Layer Security (TLS) Protocol Version 1.3" (en inglés). IETF. RFC 8446. Consultado o 14 de setembro de 2026.
  4. ↑ D. Crocker; T. Hansen; M. Kucherawy (setembro de 2011). "DomainKeys Identified Mail (DKIM) Signatures" (en inglés). IETF. RFC 6376. Consultado o 14 de setembro de 2026.
  5. ↑ Jevons, W.S. (1874). The Principles of Science: A Treatise on Logic and Scientific Method (en inglés). Macmillan & Co. p. 141. Consultado o 18 de xaneiro de 2024.
  6. ↑ Weisstein, E.W. (2024). "Jevons' Number" (en inglés). MathWorld. Consultado o 18 de xaneiro de 2024.
  7. ↑ Golomb, Solomon W. (1996). "On Factoring Jevons' Number". Cryptologia (en inglés) 20 (3): 243. doi:10.1080/0161-119691884933.
  8. ↑ Ellis, James H. (xaneiro de 1970). "The Possibility of Secure Non-secret Digital Encryption" (PDF) (en inglés). CryptoCellar. Consultado o 18 de xaneiro de 2024.
  9. ↑ Ellis, James H. (xaneiro de 1970). "The Possibility of Secure Non-secret Digital Encryption" (en inglés). The George Washington University. Consultado o 8 de decembro de 2025.
  10. ↑ Sawer, Patrick (11 de marzo de 2016). "The unsung genius who secured Britain's computer defences and paved the way for safe online shopping". The Telegraph (en inglés).
  11. ↑ Espiner, Tom (26 de outubro de 2010). "GCHQ pioneers on birth of public key crypto". ZDNet (en inglés).
  12. ↑ Singh, Simon (1999). The Code Book (en inglés). Doubleday. pp. 279–292.
  13. 1 2 Diffie, Whitfield; Hellman, Martin E. (novembro de 1976). "New Directions in Cryptography" (PDF). IEEE Transactions on Information Theory (en inglés) 22 (6): 644–654. Bibcode:1976ITIT...22..644D. doi:10.1109/TIT.1976.1055638. Arquivado (PDF) dende o orixinal o 29 de novembro de 2014.
  14. ↑ Rivest, R.; Shamir, A.; Adleman, L. (febreiro de 1978). "A Method for Obtaining Digital Signatures and Public-Key Cryptosystems" (PDF). Communications of the ACM (en inglés) 21 (2): 120–126. doi:10.1145/359340.359342. Arquivado dende o orixinal (PDF) o 17 de decembro de 2008. Consultado o 15 de novembro de 2019.
  15. 1 2 NIST (13 de agosto de 2024). "Module-Lattice-Based Key-Encapsulation Mechanism Standard" (en inglés). FIPS 203. Consultado o 14 de setembro de 2026.
  16. ↑ The GnuPG Project. "The GNU Privacy Guard" (en inglés). Consultado o 14 de setembro de 2026.

Véxase tamén

[editar | editar a fonte]

Bibliografía

[editar | editar a fonte]

Outros artigos

[editar | editar a fonte]

Ligazóns externas

[editar | editar a fonte]