Como a chave privada SSH codificada com AES e BASE64 pode ter tamanho menor que o especificado?

0

Isso pode ser óbvio para alguns, mas gostaria de saber se eu criei 8192 chave de tamanho com:

ssh-keygen -t rsa -b 8192

Como a chave privada SSH codificada com AES e BASE64 tem tamanho menor que o especificado 8192?

Tem um tamanho de 6446.

Existe alguma compressão envolvida?

    
por Vlastimil 05.02.2018 / 19:57

2 respostas

2

Uma chave 8192 rsa é 8192 bits , não bytes. Isso é 1024 bytes.

Codificar bytes no BASE64 aumenta seu tamanho em um fator de 4/3:

$ echo $((1024*8/6))
1365

Que está perto do tamanho da chave dentro do arquivo de chave pública.

$ awk '{print $2}' rsatest.pub | wc -c
1397

É claro que o "arquivo de chave privada" contém (pelo menos) :

  1. o valor de m (módulo público)
  2. o valor de e
  3. o valor de d
  4. o valor de p
  5. o valor de q

E, na verdade, contém 8 (números grandes e pequenos):

cat rsatest | grep -v -- ----- | tr -d '\n' | base64 -d | openssl asn1parse -inform DER

Isso aumenta o tamanho em um fator de pelo menos 4, contém 6363 bytes.

Outra forma de procurar dentro do arquivo privado é:

openssl rsa -text -in rsatest

Que mostra que o arquivo contém inteiros para

  • módulo
  • publicExponent
  • privateExponent
  • prime1
  • prime2
  • expoente1
  • exponent2
  • coeficiente
por 05.02.2018 / 23:07
2

Comprimentos de chave RSA são especificados em bits, não em bytes. Sua chave bit RSA tem um módulo de comprimento de 8192 bits, ou seja, 1024 bytes.

    
por 05.02.2018 / 20:36