Por que partes de chaves públicas (e privadas) SSH se sobrepõem?

39

Especificamente, por que os 25 primeiros caracteres das chaves públicas ssh Ed25519 são sempre os mesmos?

Por exemplo, se eu fizer 5 teclas ssh-keygen -o -a 100 -t ed25519, os 25 primeiros caracteres serão sempre AAAAC3NzaC1lZDI1NTE5AAAAI.

Suponho que este seja um preâmbulo ou cabeçalho de algum tipo, mas eu adoraria saber a resposta real.

Morris Cornell-Morgan
fonte
8
Faça crossdupe crypto.stackexchange.com/questions/5944/… . Os novos arquivos de chave privada OpenSSH de formato semelhante são a codificação base64 dos dados que começa com várias seqüências de caracteres no formato XDR, na maioria das vezes constantes, embora o tipo / algoritmo de chave esteja de alguma maneira; O novo formato é usado automaticamente para ed25519 (porque não existe um formato antigo para esse tipo) e você só precisa especificar -o para outros tipos.
David_thompson_085

Respostas:

65

A sequência é codificada em base64. Quando decodificado, produz a cadeia \0\0\0\vssh-ed25519\0. Isso identifica o tipo da chave. Nesse caso, uma chave EdDSA .

Johan Myréen
fonte
16
A \0\0\0\vparte é 11 escrita como um número de 32 bits e indica o comprimento da string ssh-ed25519.
kasperd