Wie funktioniert die Passform für private RSA-Schlüssel unter der Haube?

70

Private RSA-Schlüssel können mit einer "Passphrase" versehen werden, die - wie ich es verstehe - eine sekundäre Sicherheit bieten soll, falls jemand mit der privaten Schlüsseldatei davonkommt.

Wie wird die Passphrasen-Sicherheitsebene implementiert?

qfinder
quelle
4
RSA selbst macht so etwas nicht. Es hört sich so an, als würden Sie über ein bestimmtes Programm sprechen, das RSA verwendet. In diesem Fall wäre es äußerst hilfreich, wenn Sie uns mitteilen würden, über welches Programm Sie sprechen (z. B. PGP oder GPG).
Jerry Coffin
1
Interessant - meistens bin ich neugierig auf die Passphrase, die beim Ausführen von "ssh-keygen -t rsa" auf Unix-y-Systemen angefordert wird.
Qfinder
Diese Frage scheint nicht zum Thema zu gehören, da es nicht um Programmierung geht. Weitere Informationen zu den Themen finden Sie hier in der Hilfe. Vielleicht wäre Information Security Stack Exchange ein besserer Ort, um zu fragen.
JWW

Antworten:

58

ssh-keygen verwendet OpenSSL, um RSA-Schlüssel zu generieren und im PEM-Format zu speichern. Die Verschlüsselung, über die Sie sprechen, ist spezifisch für PEM. Wenn Sie sich Ihre Schlüsseldatei ansehen,

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,5B01E932988DC66B

EPESt4ZVIrxnQXxxWWVa7cCR+vgNZ/4vTu4mdq6pjaW7jMZoB8HV+mA745mQkQw7
i+YtdVs/JqOeyGiw/3McxYYKZTlhyh7MvfIr1n8ZdZmcjQz+oFqMxChFU3r8BGgA

Der Header "DEK-Info" enthält alle Informationen, die Sie zum Entschlüsseln des Schlüssels benötigen, solange Sie die Passphrase kennen. "DES-EDE3-CBC" bedeutet Triple DES (im EDE-Modus). CBC ist der Verkettungsmodus. Die Hex-Zahl ist der Anfangsvektor, der für CBC benötigt wird.

PEM ist ein sehr altes Format und unterstützt daher nur DES / TripleDES. AES und Blowfish wurden später hinzugefügt, aber nicht von allen Implementierungen unterstützt. Mein ssh (OpenSSH 5.2) unterstützt nur DES und TripleDES.

ZZ Coder
quelle
@Phaedrus siehe github.com/bcgit/bc-java/blob/…
Janus Troelsen
4
Diese Antwort scheint zu fehlen, um das Passwort in einen von der Chiffre akzeptierten Entschlüsselungsschlüssel zu übersetzen.
Pawel Veselov
1
Was bedeutet diese Ganzzahl 4 in Proc-Type?
Amit Verma
37

Die Passphrase ist nur ein Schlüssel, mit dem die Datei, die den RSA-Schlüssel enthält, mit einer symmetrischen Verschlüsselung (normalerweise DES oder 3DES) verschlüsselt wird. Um den Schlüssel für die Verschlüsselung mit öffentlichem Schlüssel zu verwenden, müssen Sie zuerst seine Datei mit dem Entschlüsselungsschlüssel entschlüsseln. ssh tut dies automatisch, indem Sie nach der Passphrase fragen.

Wenn jemand die Datei des Schlüssels in die Hand nehmen würde, könnte er sie nur verwenden, wenn er die Passphrase kennt, mit der die Datei verschlüsselt wird.

Rudedog
quelle
1
Vielen Dank für die Antwort! Einige weitere Fragen: Ist die Passphrase Teil des RSA-Standards oder etwas anderes (wie im obigen Kommentar angegeben)? Verwendet das Programm ssh-keygen DES oder 3DES / wie würde ich das sagen? Welche Bewertung? Warum nicht AES?
Qfinder
11

Private Schlüssel, die in Allzweck-Dateisystemen gespeichert sind (im Gegensatz zu manipulationssicheren Spezial-Hardware-Token), können leicht gestohlen werden, wenn sie nicht geschützt sind. Dateisystemberechtigungen scheinen ausreichend zu sein, können jedoch häufig umgangen werden, insbesondere wenn ein Angreifer physischen Zugriff auf den Computer hat.

Eine starke symmetrische Verschlüsselung, die mit einem guten Passwort versehen ist, verhindert dies. Ein guter privater RSA-Schlüssel ist zu lang, um ihn sich zu merken (jedenfalls für mich), aber weitaus kleinere symmetrische Schlüssel können die gleiche Sicherheitsstufe bieten. Ein relativ kurzer, symmetrischer Schlüssel, der im Gehirn gespeichert ist, wird verwendet, um einen großen privaten Schlüssel zu schützen, der auf der Festplatte gespeichert ist.

erickson
quelle
Auf jeden Fall macht es Sinn - weitere Details darüber, wie genau es implementiert wird? (Welche Symmetrie genau, ob das Standard für alle Geräte usw. ist?)
Qfinder