Chiavi SSH: perché è id_rsa più grande di id_rsa.pub?

Il mio tasto privato ( ~/.ssh/id_rsa ) è un file di 1766 byte, ma la mia chiave pubblica ( ~/.ssh/id_rsa.pub ) è solo 396 byte di lunghezza. Perché la differenza enorme? È perché la chiave privata viene crittografata usando AES? Non è AES ciphertext di solito circa la stessa lunghezza del text in chiaro?

  • Come abilitare KeepAlive nella row di command di putty
  • Connect Direct vs sFTP?
  • La logging di sshd tenta di accedere senza una chiave privata
  • Applicazione di python in background su Linux
  • Installare Linux su ssh
  • come interrompere una connessione ssh bloccata
  • 2 Solutions collect form web for “Chiavi SSH: perché è id_rsa più grande di id_rsa.pub?”

    La chiave privata ha maggiori informazioni rispetto alla chiave pubblica. Mentre la chiave pubblica trasport solo l'esponente di crittografia (e) e il module (n), la chiave privata include inoltre un esponente di decrittografia (d) ei due fattori prime (p e q) del module. La chiave privata ha essenzialmente una chiave pubblica all'interno di essa.

    [Crittografia: ciphertext = messaggio ^ e (mod n); Decryption: message = ciphertext ^ d (mod n)]

    Per visualizzare tutti i dati nel file della chiave privata:

     $ openssl rsa -in id_rsa -text -noout 

    Modifica: Il file di chiave privata apparentemente non ha l'esponente di crittografia, ma ha esponenti d_1 e d_2, where d_1 = d (mod p-1) e d_2 = d (mod q-1). Questi vengono utilizzati per velocizzare la decodifica – è ansible dividere l'esponenza di decrittografia in chiamate di esponenza più piccole, che finiscono per essere più veloci di un grande m = c ^ d (mod n) per grandi d e grandi n.

    Purtroppo non è stato specificato in quale formato i tasti sono memorizzati. Immagino che si sta riferendo alla codifica chiave OpenSSH. In questo formato i tasti vengono memorizzati in blocchi di dati codificati in base 64. A seconda della codifica durante la crittografia, di solito c'è una sorta di imbottitura implicata durante la crittografia dei dati. Quindi i dati risultanti sono un multiplo della dimensione del block di crittografia.

    Le chiavi OpenSSH possono anche includere alcune specie di commenti e properties; aggiuntive inserite tra il ---- BEGIN SSH2 [PUBLIC|PRIVATE] KEY ---- e -----END RSA [PUBLIC|PRIVATE] KEY----- marcatori. Vedi RFC4716 .

    Inoltre, per il pubblico, vengono salvati il ​​module e l'esponente pubblico mentre per la chiave privata viene salvato l'esponente privato. Vedere generazione di codice RSA su Wikipedia per dettagli sulla base math. Ci sono molti posti sul web che descrivono la connessione math tra questi tasti. Non so se hai bisogno di una copia di queste spiegazioni qui.

    Teoricamente è ansible calcolare la chiave privata dalle informazioni di chiave pubblica, ma fare questo è mathmente molto più difficile dell'altro. Basta considerare la chiave privata come "fonte" che include tutte le variables e la chiave pubblica come risultato del calcolo. È facile eseguire il calcolo più e più volte se conosci tutte le variables ma sapendo solo il risultato è difficile get tutte le variables di origine. Questo è anche il motivo per cui è sufficiente salvare la chiave privata in un luogo sicuro. È sempre ansible utilizzare la chiave privata per ricalcolare la chiave pubblica. Ma non l'altra strada – bene, teoricamente si può fare questo, ma a seconda della lunghezza della chiave potrebbe richiedere molti anni;).

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.