Wie verwende ich den öffentlichen Schlüssel ssh-rsa, um einen Text zu verschlüsseln?

55

Das Szenario lautet also: Da ich Bob bin, möchte ich eine Nachricht für Alice verschlüsseln. Der einzige öffentliche Schlüssel, den ich habe, ist ihr ssh-rsaid_rsa.pub wie folgt:

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyb + qaZLwgC7KAQJzYikf3XtOWuhlMXVv2mbTKa5dp0sHPRd2RaYnH8ZRkt7V8bjqct1IHGCuxI8xyoEp4at3FHe6j9RfWiarc1ldLUCmTtryI0GGpRs6Zpvqdtpcq / 1NCIYtUQAvsImyEFCtqmB2suDo1ZSllZQ0x9TCKHdCANYIOeaniuFzR57POgE3vxk / r6PO24oy8BIWqxvi29r0n1LUigVBJ7CmMHuzb4 / + i1v6PxV1Lqnj6osPP9GpXpsh8kLUCby / KcmcryWNdSP0esyCdDxkA5hlIuk8qL1vzsyPluUQuc0BEHu6nuw8WQlCF1mFFxcpJL + MhWEr01WIIw == [email protected]

Gibt es also eine Möglichkeit, eine Zeichenfolge mit diesem öffentlichen Schlüssel zu verschlüsseln, sodass sie ihren privaten Schlüssel von id_rsa(generiert von ssh-keygen) verwenden kann, um die Nachricht zu entschlüsseln?

(Ich weiß, dass es sofort möglich ist, wenn Sie eine .pemSchlüsselpaardatei verwenden. Wenn Sie mir zeigen können, wie man dies in das opensslunterstützte Format konvertiert , wäre das auch großartig!)

Vielen Dank!

Sikachu
quelle
5
Sie und Alice sollten wirklich nachforschen, gpg ... gnupg.org ; D
tink
4
Hahaha, in der Tat! Das Szenario, das ich hier habe, ist jedoch, dass ich bereits Zugriff auf ihren ssh-rsaöffentlichen Schlüssel habe und keine weitere Komplexitätsebene hinzufügen möchte (z. B. den Empfänger auffordern, gpg zu installieren usw.)
sikachu

Antworten:

71

Es ist möglich, Ihren öffentlichen ssh-Schlüssel in das PEM-Format zu konvertieren (das 'openssl rsautl' kann ihn lesen):

Beispiel:

ssh-keygen -f ~/.ssh/id_rsa.pub -e -m PKCS8 > id_rsa.pem.pub

Angenommen, 'myMessage.txt' ist Ihre Nachricht, die mit einem öffentlichen Schlüssel verschlüsselt werden soll.

Dann verschlüsseln Sie einfach Ihre Nachricht mit openssl rsautl und Ihrem konvertierten öffentlichen PEM-Schlüssel, wie Sie es normalerweise tun würden:

openssl rsautl -encrypt -pubin -inkey id_rsa.pem.pub -ssl -in myMessage.txt -out myEncryptedMessage.txt

Das Ergebnis ist Ihre verschlüsselte Nachricht in "myEncryptedMessage.txt".

So testen Sie Ihre Arbeit zum Entschlüsseln des privaten Schlüssels von Alice:

openssl rsautl -decrypt -inkey ~/.ssh/id_rsa -in myEncryptedMessage.txt -out myDecryptedMessage.txt
Dirk Thannhäuser
quelle
5
Ich habe dies in einem Skript zusammengefasst, das den öffentlichen Schlüssel des Benutzers von GitHub abruft. github.com/twe4ked/catacomb
twe4ked
Das funktioniert bei mir nicht. Meine ssh-keygenhat keine -mOption. (Ich kann nicht herausfinden, wie ich ssh-keygen nach seiner Version fragen kann.) Ersetzen -mdurch -tfunktioniert, opensslsagt mir dann aber, dass ich den öffentlichen Schlüssel nicht laden kann. Siehe stackoverflow.com/questions/18285294/… .
Jason Gross
1
Gleiches Problem wie Jason bei MaxOS Mavericks. Ersetzen Sie -m durch -t für die keygen-fähige Schlüsselgenerierung.
Robert Christian
8
Beachten Sie, dass dies nur funktioniert, wenn die Datei klein genug ist. zB 200 Bytes. Siehe stackoverflow.com/questions/7143514/…
h__
1
Nach dem, was @hyh sagte, funktioniert dies nur, wenn die Eingabedatei klein ist (die Zeile ist ungefähr 254 Bytes groß, sonst gibt es "rsa" -Routinen: RSA_padding_add_SSLv23: Daten zu groß für Schlüsselgröße: /SourceCache/OpenSSL098/OpenSSL098-52.20. 2 / src / crypto / rsa / rsa_ssl.c: 73 "Fehler.
Devy
1

Geben Sie einen Versuch ssh-Vault verwendet es ssh-rsa öffentlichen Schlüssel zu verschlüsseln „erstellen Sie ein Depot“ und die ssh-rsa privaten Schlüssel „Blick Inhalt des Tresors“ zu entschlüsseln

nbari
quelle
-3

Warum tun Sie dies nicht auf die ganz offensichtliche Art und Weise, ohne dass Sie Ihre eigene Krypto rollen müssen?

Alice sendet eine E-Mail an [email protected], die so eingerichtet ist, dass nur die Authentifizierung mit öffentlichen Schlüsseln für das Konto alice zulässig ist. Die Eigenschaften von ssh stellen sicher, dass nur Alice sich authentifizieren kann. Selbst ein Mann in der Mitte des Angriffs schlägt fehl, da (vorausgesetzt, Sie deaktivieren ssh1 und bestehen auf den richtigen Einstellungen) die anfängliche Kommunikation mit DH einen Wert erzeugt, der sowohl Alice als auch Bob, aber keinem Mann in der Mitte bekannt ist, und der zur Authentifizierung verwendet werden kann dass keine Antwort oder MITM-Attacke den Inhalt der Kommunikation sehen kann.

Also nimm Alice SFTP in deine Box und lade die Datei herunter.

Peter Gerdes
quelle
9
Wie verwendet openssl, um Ihre eigene Krypto zu rollen?
cmc
Die Verwendung von RSA zum Verschlüsseln einer Zeichenfolge mit 1024 Zeichen schlägt beispielsweise aufgrund der Nachrichtengröße fehl. Um dieses Problem zu lösen, befindet sich der Implementierer in einer prekären Situation, insbesondere wenn die Nachrichten wiederholt werden. Es ist sicherer, RSA zum Verschlüsseln eines neuen symmetrischen Chiffrierschlüssels und eines neuen Initialisierungsvektors zu verwenden, die sich wahrscheinlich nicht wiederholen. Generieren Sie daher einen eindeutigen Chiffriertext für jede gesendete Nachricht, und erhöhen Sie die Geschwindigkeit der symmetrischen Chiffrierung und reduzieren Sie die Menge an Chiffrierung und einfachem Text den RSA-Schlüssel angreifen mit. Hoffe das macht Sinn. :)
Sam
Bei dieser Methode muss Bob Alice vertrauen oder bobserver.com sperren, damit Alice nichts Bösartiges tun kann.
Mwfearnley
Es rollt sich selbst in dem Sinne, dass Alice eine beträchtliche Menge ungewöhnlicher Operationen ausführen muss, um zu entschlüsseln, nicht in dem Sinne, dass die zugrunde liegende Mathematik selbst rollt. Da dies eher im Hinblick auf Befehlszeilen-Dienstprogramme als im Hinblick auf eine API oder eine theoretische Perspektive erfragt wurde, ging die Person davon aus, dass sie tatsächlich einige konkrete Informationen übertragen wollte, ohne ein neues Protokoll auf ssh aufzupolstern. Als solches schien sftp praktisch viel einfacher zu sein, und ja, es erfordert entweder einen Blick auf den Server, das Vertrauen von Alice oder das anschließende Löschen des Servers.
Peter Gerdes
Mir kommt es so vor, als ob man tatsächlich anfällig dafür ist, dass jemand die E-Mail abfängt, in der Sie Alice genau erklären, wie sie diese ungewöhnliche Nachricht entschlüsseln kann, und ihr eine Folge von Befehlen gibt, die stattdessen Charlies MITM-Nachricht sicher entschlüsseln (openssl-Befehle sind wie Zauberei) Während die Server-Idee all dies zugunsten von Standardbefehlen vermeidet, die vielen bekannt sind, und wenn Bob es von dem Computer aus ausführt, den er verschlüsselt, vertraut er es trotzdem. Offensichtlich hängt die beste Antwort vom Bedrohungsmodell ab, aber aus dem q Kontext heraus würde dies ihnen wahrscheinlich besser dienen.
Peter Gerdes