Warum veröffentlicht Amazon private Schlüssel anstelle von öffentlichen Schlüsseln?

20

Mein Gehirn ist mit öffentlichen und privaten Schlüsseln um die Achse gewickelt. Wenn Sie einen Cloud-Server (Instanz) auf dem EC2-Dienst von Amazon erstellen und dann eine Verbindung über SSH herstellen möchten, müssen Sie von Amazon einen privaten Schlüssel herunterladen, um die Verbindung herzustellen. Schlägt die Idee hinter dem öffentlichen / privaten Schlüssel nicht vor, dass Amazon Sie zum Herunterladen eines öffentlichen Schlüssels auffordern sollte?

Wenn ich einen SFTP-Server für einen Kunden einrichte, sollte ich dann seinen Schlüssel auf dem Server installieren oder ihm einen Schlüssel vom Server geben? Sollte es in jedem Fall ein öffentlicher oder ein privater Schlüssel sein?

Seth
quelle
1
Waren diejenigen von uns, die mit EC2 weniger vertraut sind, von Amazon verpflichtet, einen privaten Schlüssel herunterzuladen?
Zoredache
2
Wenn Sie einen Cloud-Server in Amazon EC2 einrichten und dann eine Verbindung über SSH herstellen möchten, können Sie über die Amazon-Konsole einen privaten Schlüssel herunterladen, den Sie zum Herstellen der Verbindung verwenden. Natürlich müssen Sie den Schlüssel schützen.
Seth
@Zoredache Fairerweise ist das eine Option. Jemand, der schnell auf einer Windows-Box herumspielen möchte, hat wahrscheinlich noch nie OpenSSH verwendet, also ist es ein guter Schnelleinstieg.
Ceejayoz

Antworten:

36

Wenn Sie sich eingehender mit dem Authentifizierungsprozess befassen, was muss geheim gehalten werden? Amazon kennt die öffentliche Hälfte des Schlüssels, und jeder kann die öffentliche Hälfte kennen. Die öffentliche Hälfte des Schlüsselpaars zeigt, wenn sie mit der privaten Hälfte übereinstimmt, an, dass die private Hälfte zur Authentifizierung verwendet wurde.

Ihr privater Schlüssel, der Ihnen zur Verfügung gestellt wird, wenn Amazon ein Schlüsselpaar für Sie erstellt, ist nur dann nützlich, wenn Sie der einzige sind, über den Amazon verfügt. Wenn es kein Geheimnis ist, kann sich jeder andere, der es kennt, auch gegenüber jedem authentifizieren, der die öffentliche Hälfte des Schlüsselpaars besitzt.

Wer authentifiziert wird, muss die private Hälfte besitzen. Es ist in Ordnung, wenn jeder auf der Welt Sie authentifizieren kann, indem er die öffentliche Hälfte des Schlüssels hält, aber nur Sie sollten die Kontrolle über die private Hälfte haben.

Jeff Ferland
quelle
18

Amazon bietet Dienste zur Schlüsselgenerierung an, da es unter bestimmten Betriebssystemen (Husten, Windows, Husten) möglicherweise nicht einfach ist, SSH-Schlüsselpaare zu generieren.

Bei SSH (und SFTP) wird der öffentliche Schlüssel beim Start der EC2-Instanz in der Datei authorized_keys des Benutzers installiert. Der private Schlüssel wird nur vom Benutzer gehalten und zur Authentifizierung gegenüber dem Server vorgelegt.

Aus der Dokumentation unter:

http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-CreateKeyPair.html

Es scheint, dass Amazon das Schlüsselpaar auf seinen Servern generiert und Ihnen den privaten Schlüssel über HTTPS sendet. Dies ist vielleicht weniger als perfekt (im Idealfall haben Sie und niemand sonst den privaten Schlüssel), aber wahrscheinlich nicht so schlimm, da dies alles im Kontext Ihrer authentifizierten Sitzung geschieht und nur Sie (und Amazon vorübergehend) sehen der private Schlüssel. Sie können auch jederzeit Ihren eigenen öffentlichen Schlüssel für EC2 generieren und hochladen, wobei der private Schlüssel streng geheim bleibt.

Um SFTP-Benutzer für die Schlüsselauthentifizierung einzurichten, sollten sie SSH-Schlüssel auf ihren Computern generieren. Sobald sie ein Schlüsselpaar generiert haben, sollten sie Ihnen nur den öffentlichen Schlüssel zur Installation in der entsprechenden authorized_keys-Datei senden. Der private Schlüssel ist, wie der Name schon sagt, privat.

cjc
quelle
5
Ich generiere regelmäßig Schlüsselpaare auf Windows-Computern. Es ist nicht schwer, obwohl es mit installierter Software und nicht von Windows selbst gemacht wird.
Dominic Cronin
2
Einverstanden mit Dominic. Es ist eher die Tatsache, dass der durchschnittliche Windows-Benutzer beim Anblick einer CLI verängstigt und verloren ist und dass Windows immer noch keine Option "Anmelden mit SSH-Schlüssel" hat.
HopelessN00b
Oh ja, stimmte zu. Ich benutze Cygwin usw. mit openssh, damit alles sauber funktioniert. Ich stelle mir vor, dass die meisten Windows-Benutzer PuTTY verwenden und eine Schlüsselkonvertierung durchführen müssen. Es sind nur noch mehr Schritte.
cjc
1
Ich habe Amazon noch nie benutzt, aber anstatt Windows zu beschuldigen, würde ich davon ausgehen, dass der Grund, warum Amazon Ihnen einen Schlüssel sendet, der ist, dass Sie sich einloggen, wenn Sie keinen Schlüssel zum Einloggen haben Schlüssel an erster Stelle?
DerfK 20.08.12
1
@DerfK Sie können Ihren eigenen öffentlichen Schlüssel übermitteln und diesen zur Installation in einer neuen EC2-Instanz auswählen. Die Auswahl eines bestimmten Schlüssels ist Teil des Instanzerstellungsprozesses.
cjc
2

Die Authentifizierung mit öffentlichen Schlüsseln funktioniert in umgekehrter Richtung, wie Sie wahrscheinlich denken. Der öffentliche Schlüssel verschlüsselt Nachrichten und der private Schlüssel entschlüsselt sie. Der Server speichert den öffentlichen Schlüssel des Kontoinhabers und verwendet ihn zum Verschlüsseln einer Nachricht. Nur der Inhaber des privaten Schlüssels kann diese Nachricht entschlüsseln.

Wenn Sie jemandem ein Geheimnis senden, das mit seinem öffentlichen Schlüssel verschlüsselt ist, und er Ihnen mitteilen kann, um welches Geheimnis es sich handelt, wissen Sie, dass er über den entsprechenden privaten Schlüssel verfügt. Der Benutzer wird dann authentifiziert.

Für AWS müssen Sie Ihren privaten Schlüssel herunterladen und speichern, da er aus Sicherheitsgründen nicht gespeichert wird. Da der private Schlüssel nirgendwo in AWS gespeichert ist, können Sie sicher sein, dass Ihre EC2-Instanz sicher ist.

jkim
quelle
1

In gewisser Hinsicht spielt es keine Rolle. Ein privates / öffentliches Schlüsselpaar besteht aus zwei Teilen. Welcher davon der öffentliche ist, liegt bei Ihnen. Wenn etwas mit einem Schlüssel verschlüsselt ist, benötigen Sie den anderen, um es zu entschlüsseln. Wenn Sie einen Schlüssel öffentlich und nicht den anderen veröffentlicht haben, ist der private Schlüssel derjenige, den Sie nicht veröffentlicht haben.

Um zu Ihrer eigentlichen Frage zu gelangen: Vermutlich besteht der Schlüssel, den Amazon Ihnen gibt, darin, Ihnen die Kontrolle über Ihre eigenen Ressourcen zu ermöglichen, sodass diese nicht an andere Personen weitergegeben werden sollten. In diesem Zusammenhang müssen Sie Amazon vertrauen, um Ihren privaten Schlüssel zu haben, zumindest so lange, bis die Einrichtung abgeschlossen ist.

Wenn Sie möchten, dass sich Ihr Kunde auf diese Weise anmeldet, muss er Ihnen einen Schlüssel geben, den er bereit ist, mit Ihnen zu teilen. Daher der öffentliche Schlüssel. Sie installieren dies auf dem Server in authorized_keys, was effektiv besagt, dass "jeder, der den privaten Schlüssel besitzt, der diesem öffentlichen Schlüssel entspricht, auf diese Ressource zugreifen kann".

Dominic Cronin
quelle
1
Ähm, nein das ist nicht wahr. Zumindest mit RSA / DH verschlüsseln Sie mit dem öffentlichen Schlüssel und entschlüsseln mit dem privaten, es funktioniert nicht andersherum. Das Signieren ist nicht dasselbe wie das Ver- / Entschlüsseln.
Zoredache
1
@ErikA Nein, der öffentliche Schlüssel kann nicht vom privaten Schlüssel abgeleitet werden. Private Schlüssel - Dateien enthalten oft beiden Tasten. Wenn Sie wirklich an einer Diskussion teilnehmen möchten, würde ich crypto.stackexchange.com vorschlagen . Diese Leute können Ihnen die wirklich tiefen inneren Details geben, einschließlich der tatsächlichen Unterschiede der RSA-Schlüssel, und warum welcher Schlüssel als öffentlich oder privat angesehen wird, ist nicht nur ein willkürlicher Münzwurf.
Jeff Ferland
@Zoredache - das wusste ich nicht: danke. Haben Sie einen Link zu einer guten Referenz?
Dominic Cronin
en.wikipedia.org/wiki/Asymmetric_key_algorithm - Ein Schlüssel sperrt oder verschlüsselt den Klartext und der andere gibt den Chiffretext frei oder entschlüsselt ihn. Keine Taste kann beide Funktionen ausführen. - en.wikipedia.org/wiki/RSA_(algorithm) - RSA beinhaltet einen öffentlichen und einen privaten Schlüssel. Der öffentliche Schlüssel ist jedem bekannt und wird zum Verschlüsseln von Nachrichten verwendet . Mit dem öffentlichen Schlüssel verschlüsselte Nachrichten können nur mit dem privaten Schlüssel entschlüsselt werden.
Zoredache
Keine dieser beiden Referenzen deutet darauf hin, was Sie mit @Zoredache sagen. Sobald Sie sich entschieden haben, welcher Schlüssel privat und welcher öffentlich ist, bestimmt dies natürlich , wie Sie ihn verwenden. Zum Zeitpunkt der Schlüsselgenerierung wurde diese Entscheidung noch nicht getroffen. Was es wert ist, hängt die Logik rund um das Signieren vollständig von der Logik rund um die Verschlüsselung ab, da das Signieren eine Verschlüsselung erfordert .
Dominic Cronin