¿Por qué se superponen porciones de claves públicas (y privadas) de SSH?

39

Específicamente, ¿por qué los primeros 25 caracteres de las claves públicas ssh Ed25519 son siempre iguales?

Por ejemplo, si hago 5 teclas con ssh-keygen -o -a 100 -t ed25519, los primeros 25 caracteres son siempre AAAAC3NzaC1lZDI1NTE5AAAAI.

Supongo que este es un preámbulo o encabezado de algún tipo, pero me encantaría saber la respuesta real.

Morris Cornell-Morgan
fuente
8
Crossdupe crypto.stackexchange.com/questions/5944/… . Del mismo modo, los archivos de clave privada de OpenSSH de nuevo formato son la codificación de datos base64 que comienza con varias cadenas formateadas en XDR en su mayoría constantes, aunque el tipo / algoritmo de clave es de alguna manera; el nuevo formato se usa automáticamente para ed25519 (porque no existe un formato antiguo para ese tipo) y solo necesita especificar -o para otros tipos.
dave_thompson_085

Respuestas:

65

La cadena está codificada en base64. Cuando se decodifica, produce la cadena \0\0\0\vssh-ed25519\0. Esto identifica el tipo de la clave. En este caso, una clave EdDSA .

Johan Myréen
fuente
16
La \0\0\0\vparte está escrita como un número de 32 bits e indica la longitud de la cadena ssh-ed25519.
kasperd