¿Hay alguna otra forma de compartir una clave secreta entre dos entidades sin utilizar la criptografía de clave pública?

Existen otros métodos para compartir claves en línea a través de canales públicos, sin embargo, podrían requerir algún conocimiento a priori o el método podría considerarse inseguro. Aquí hay un ejemplo de cada uno.

El teclado de una sola vez es perfectamente seguro y puede usarlo para comunicar cualquier cosa, incluidas las teclas. Por “perfectamente seguro” quiero decir que el texto cifrado no revelará información sobre el texto sin formato (aparte de la longitud, probablemente) independientemente de cuántos recursos tenga el adversario. Por lo tanto, esta es una excelente manera de enviar claves criptográficas. El problema es que necesita compartir algo con la persona con la que está hablando antes de poder comunicarse. Un cifrado de pad único es cuando agrega datos aleatorios a su mensaje pero para que la otra parte lo descifre, necesitan tener una copia exacta de estos datos aleatorios.

Un ejemplo de un método inseguro es utilizar el protocolo Merkle’s Puzzles. Aquí es donde generas un montón de acertijos (probablemente resolviendo alguna función matemática difícil) y los envías a tu compatriota por el canal público. Escogen uno de los acertijos al azar para resolverlo, lo que revela una clave y también un número de identificación que se le comunica de nuevo. Desde el número de identificación, usted sabe qué clave tiene la otra persona ahora y la usa para comunicarse.

El problema con esto es que la barrera para que un adversario encuentre la clave al resolver todos los acertijos solo se escala polinomialmente, mientras que para que algo se considere seguro, debe escalar exponencialmente; este es el caso del intercambio de claves Diffie-Hellman, por ejemplo.

El intercambio de claves Diffie-Hellman resuelve exactamente este problema. Creo que la ilustración con pintura en la página de Wikipedia hace que esto sea muy fácil de entender.

El problema es que Diffie-Hellman no proporciona autenticación, por lo que puede ser difícil estar seguro de que la entidad con la que está intercambiando una clave secreta es la entidad con la que pretendía intercambiar. Este es un problema con los intercambios mencionados en las otras respuestas también. Si le envía a alguien una unidad USB, ¿cómo sabe que la unidad USB que llega es la misma que envió? Es por eso que SSL usa criptografía de clave pública.

Cifrado basado en identidad utilizando emparejamientos es ciertamente una forma de hacerlo también. El protocolo SOK es la forma más antigua (y, en mi opinión, la más genial) de compartir una clave secreta entre dos entidades que usan IBE y criptografía basada en emparejamiento. Es un método de paso cero, simplemente funciona. En realidad, es lo que comenzó mi propio viaje personal para aprender sobre criptografía basada en emparejamiento y las matemáticas son bastante elegantes; Es simple de entender. Sin embargo, tenga cuidado, NTT posee las patentes sobre él. Nuestro propio protocolo M-Pin ‘Full “(conector descarado, soy el CEO de CertiVox) generará una clave secreta compartida con secreto directo perfecto y es otro ejemplo de criptografía basada en curva elíptica / emparejamiento en acción.

Ciertamente. No menciona el requisito de que sea por medios electrónicos: las claves secretas se pueden compartir entre dos partes a través de correo urgente, por ejemplo, con las claves impresas en una hoja de papel o almacenadas en una unidad USB u otro medio de almacenamiento.

Ese método funciona muy bien para compartir ocasionalmente, pero obviamente se vuelve engorroso a medida que aumenta el número de personas que se comunican o la frecuencia de las actualizaciones de teclas aumenta. Eso es exactamente por qué se inventó la criptografía de clave pública, para permitir el intercambio de secretos a través de canales inseguros.