Frage:
Was ist der Unterschied zwischen dem PEM-Format und DSA / RSA / ECC? (Darf ich PEM mit diesen verwechseln)?
user123574
2016-11-20 19:34:03 UTC
view on stackexchange narkive permalink

Wenn Sie beispielsweise einen ECC-SSH-Schlüssel erstellen, kann dieser Befehl verwendet werden:

  ssh-keygen -o -a 100 -t ed25519  

Soweit ich weiß, wird das Argument -o verwendet, um Folgendes zu generieren:

Die privaten Schlüssel verwenden ein neueres Format im Gegensatz zu der allgemein akzeptierten PEM

Handelt es sich bei diesen "neueren Formaten" um DSA / RSA / ECC oder handelt es sich möglicherweise um PPK oder PEM? Entschuldigung, wenn ich SSH Schlüsselformate mit den Dateierweiterungen privater SSH-Schlüssel verwechsle; Ich möchte nach dem Hauptunterschied zwischen PEM und den im Zitat erwähnten "neueren Formaten" fragen.

DSA und RSA sind Arten von Chiffren.PPK und PEM sind Codierungen verschiedener Aspekte der Chiffren (öffentliche Schlüssel, private Schlüssel, Schlüsselpaare usw.).ECC ist eine Familie von Chiffretypen (genau wie RSA zur Familie der Chiffren gehört, die auf der Ganzzahlfaktorisierung basieren).
Um klar zu sein, PPK ist ein anderes Format, das von PuTTY definiert und von OpenSSH (oder OpenSSL) überhaupt nicht verwendet wird, aber puttygen kann es in und aus OpenSSH / OpenSSL konvertieren - und auch das Format 'ssh.com' (auch bekannt als Tectia).das ist wieder anders.
Vier antworten:
Mike Ounsworth
2016-11-20 22:45:31 UTC
view on stackexchange narkive permalink

Zunächst einmal ist hier der vollständige Eintrag auf der Manpage für ssh-keygen -o von meinem Computer ( ssh-keygen scheint nicht zu sein um ein Versionsflag zu haben, aber die Manpage ist vom 17. Februar 2016)

-o Bewirkt, dass ssh-keygen private Schlüssel mit dem neuen speichert OpenSSH-Format anstelle des kompatibleren PEM-Formats . Das neue Format hat eine erhöhte Beständigkeit gegen das Knacken von Brute-Force-Passwörtern, wird jedoch von OpenSSH-Versionen vor 6.5 nicht unterstützt. Ed25519-Schlüssel verwenden immer das neue Format für private Schlüssel.

Es scheint ziemlich klar zu sein, dass es sich nur um das Format der produzierten Datei handelt. Beachten Sie auch, dass ssh-keygen nur Ed25519-Schlüssel im neuen Format speichert, unabhängig davon, welche Flags Sie übergeben.


Seit Ihren beiden heutigen Fragen hatten die gleiche zugrunde liegende Frage, lassen Sie uns damit umgehen.

... diese "neueren Formate" DSA / RSA / ECC ...

Ok, DSA, RSA und ECC sind also keine unterschiedlichen Formate, sie sind völlig unterschiedliche Algorithmen und stehen in keinerlei Beziehung zueinander.

Ich wünschte, ich könnte einen besseren Weg finden, dies zu erklären, aber Ich bin mir nicht sicher, ob ich es kann, ohne zu technisch zu werden. Versuchen wir Folgendes: http und ftp sind nur unterschiedliche Formate für die Übertragung von Dateien oder .docx und . pptx sind verschiedene Formate von Office-Dokumenten. Diese "nur Formatunterschiede" zu nennen ist grundsätzlich falsch. Die Software macht in beiden Fällen eine ganz andere Sache (obwohl sie das gleiche Endergebnis liefert; eine Datei überträgt oder ein hübsches Dokument erstellt).

Lassen Sie uns nun über Formate sprechen.

Sie möchten also einen privaten Schlüssel in einer Datei speichern? PEM ist ein Dateiformat zum Speichern allgemeiner kryptografischer Informationen, es gibt jedoch auch andere Dateiformate. PEM kann für viele Zwecke verwendet werden: für private Schlüssel oder Zertifikate oder für den Text einer E-Mail, die Sie verschlüsseln oder signieren möchten. Es ist nur ein Container "kryptografisches Zeug".

Analogiezeit: Speichern eines Word-Dokuments. Sie können es im alten .doc -Format speichern, das von allen Office-Versionen und auch von Open Source-Programmen allgemein akzeptiert wird (PEM ist ebenfalls älter und allgemein anerkannt), oder Sie können das neuere verwenden .docx -Format (das -o OpenSSH-Format). Manchmal sind neue Funktionen nicht abwärtskompatibel und können nur im neuen Format (wie ed25519) gespeichert werden.

(Vielen Dank an @GordonDavisson für diese Analogie)

Mit Ausnahme von rückwärts Kompatibilität, welches Format Sie wählen, hat wirklich nichts mit dem Inhalt der Datei zu tun.

Beispiele:

PEM-Format mit einem RSA-Schlüssel.

Beachten Sie dies Die Nachricht beginnt mit ----- BEGIN RSA PRIVATE KEY ----- . Dies ist das branchenweite Standard-PEM-Format. Jede Software, die PEM lesen kann, kann Folgendes lesen:

  $ ssh-keygen -a 100 -t rsa $ cat .ssh / id_rsa ----- BEGIN RSA PRIVATE KEY ----- MIIEowIBAAKCAQEAwTLkTDZUisg0M / 3BDBOjrmBvJXb8cdfveGG1KQhAhFDLMp5wXKgGFMy339m3TGB1 + ekKoXnX3dcRQtpQbuFeDB59cmKpDGZz7BzfetpjeIOGCzG + Vt2BnDf2OlKb6EE7tC3PSmFgL0nQPSyz8x7rE7CMOQEnz1tKkK9Gpttcku8ifwmdLAHlVaTV3BIiFJN23fwe7l0czFaV98iy8YRgk / Av3gRlsBABGT5qD8wPiI4YgpxvUuT2kq53lhBTWO9hIth5tUU0N7x7QN6 / rRSi2uHcmJYXFkpsLie697G17TN5ln3EX5frsrjVyu0JhjvC5mlRBudSJWcWm / KrcTQxdQIDAQABAoIBAFR6n WtZ4nPhATquveg6 + jq4vkEim1ZodrUr / FxZ2GRDM + cJctaBPk + ACPMgL099ankB1v0u2x6M + WZDMiKZ91bTSkVnMMZUUmIvaeU9c3tx / 34LnVA8gX0 + 1zM / hh7zz1iFI3xBwh5LZ3wofPNVVLOCYn5WrAK2x48mpX02tG8m0OY5kdCdFW1f6UbCGk3K9ov82yQ + JbjWydOSZaS7bnJCRsjDhPm / Ooe2DZ8CKHRO3DOiZAAFYqsosxM2C12 + Alc + hdKHoJ0pWZWeeckZiALTENi + PzgSq4ykdBaoreeI84lpIzYQO06rrjM2 / fw1x / SQsDYhCsQnNRib
sipl2mECgYEA74rBQDIEWaIVVZ72foeZYOMmAUKCLQtNxVuGl / XoMZO3evN2vbOvNw / nn5lVt6PRykVUUl6yb5gHvRSGtGJSB1q6pBVN1EF2sfvUep6mmpEwbSbENiAXIftE0ap7PKT1aLKbLllwdsJlLCRMJIk07AvsulbkhSC + UmJVkfjblgkCgYEAznkEfzmWS358MLxb0JM 4v1DO + / + 1ne8z29ddHNppxSNj2Xjf MMvOY4KaRQa8dMwc3Eqa1EvPqnK6ila4L08Ai4CyWoGkkkIQBO9jO3mLp24xk6TRo002DbfJRnu4qW4zerypgYeFfBzwhc / IQKjXhv8AAfEUFCSYiFaWBsENuw0CgYEAwmyDyCAQqdPFrzYT6cUTt7EGYtVhpT / cgshz6Rk9uiekL9Y2VWjnWTC liq1iRUdLSiydRzJhYwHE + + / + 6GaUH4VJB1PY5soLj3TiCUHg z4vym1VwwmGvhPRV + jt + RU26ppz5GVic0LeduINJjgoTe1d + cAwg9PELqQCJZa5wREkCgYBPEuPZAaoAsalIVOro32uHLS1xrSPTsvSlxFO orleB9Ga1eDguT0KuTrx0pmcNYucBmpzgbE + / + ev7b khBvgTcaGZl6R6o8OoHqdKcNXl5nucXv1iWLPzVlhxchQd8w / qtN9HHDKrflIm9BY2Qzdj1F3XeSIDDEhzkohyE66yhhQKBgGh9knh8SxnVxaPk0Rk / bQope9AwIDuIpfsf4KC / EPSZmMNHP8xBh8aleymUot7Pj6dck31V4C3q74NKobY3p6fZ5t7tP9K6Br + J / FQFhvAdFAwpTD2Bks5HfhZO5cniPpydb0YvOnoaVnb0nzXVsf1jIgPKfsCsZxoyE0jLb9oV ----- END RSA PRIVATE KEY -----  

OpenSSH-Format mit einem ed25519-Schlüssel:

Zusätzlich zu sho rter (weil ECC-Schlüssel nur so so viel kürzer sind) bemerken, dass die Nachricht mit ---- BEGIN OPENSSH PRIVATE KEY beginnt ----- , dies ist in OpenSSH- spezifisches Format, das andere Software möglicherweise lesen kann oder nicht:

  $ ssh-keygen -o -a 100 -t ed25519 $ cat .ssh / id_ed25519.o ----- BEGIN OPENSSH PRIVATE KEY ----- b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUxOQAAACC7gIlwBMp + H6VVNZSHI0in2iCU / yi67WfeFPfuyAdkBAAAAJh7nk7je55O4wAAAAtzc2gtZWQyNTUxOQAAACC7gIlwBMp + H6VVNZSHI0in2iCU / yi67WfeFPfuyAdkBAAAAEBHl + qBAosBAUIGuvdDR8gJN / PEhempLe4NtyKiO7hCPLuAiXAEyn4fpVU1lIcjSKfaIJT / KLrtZ94U9 + 7IB2QEAAAAEm1pa2VATWlrZS1zYW1zdW5nMQECAw == ----- END OPENSSH PRIVATE KEY -----  
Für alle, die sich fragen, ja, ich habe gerade komplette private Schlüssel gepostet.Ja, ich habe sie nur für diesen Beitrag generiert und ja, ich habe sie bereits gelöscht.
Eine etwas engere Analogie für den Unterschied zwischen PEM- und OpenSSH-Dateien wäre der Unterschied zwischen DOC- und DOCX-Dateien - beide enthalten denselben grundlegenden Inhaltstyp, und Sie können (meistens) zwischen ihnen hin und her konvertieren.Ältere Software versteht das neue Format jedoch nicht und einige neue Arten von Inhalten (Ed25519-Schlüssel) können nur im neuen Format gespeichert werden.
IIRC, dieses "PEM" -Format wird auch als PKCS # 1 bezeichnet - es gibt ein anderes ähnliches Format, PKCS # 8, das sich hauptsächlich durch die Codierung des Algorithmus innerhalb der Binärdaten und nicht in der Kopf- / Fußzeile unterscheidet.
@grawity: OpenSSLs 'Legacy'-Format _für RSA_, das OpenSSH ohne `-o` oder ed25519 verwendet, ist in der Tat PKCS1.Das "Legacy" -Format für ECDSA ist SEC1, und DSA (das OpenSSH jetzt ablehnt) ist anscheinend ein De-facto-Standard.Sie sind richtig, PKCS8 kann all dies "umschließen", und OpenSSL kann dies (und mit besserer PBE), aber nicht OpenSSH "ssh-keygen".
`----- OPENSSH PRIVATE KEY BEGINNEN -----`?[Das ist erstaunlich, ich habe die gleiche Kombination auf meinem Gepäck!] (Https://www.youtube.com/watch?v=_JNGI1dI-e8)
ColdCold
2018-10-08 01:06:07 UTC
view on stackexchange narkive permalink

Das Folgende stammt aus den OpenSSH 7.8-Versionshinweisen vom 24.08.2018. ( http://www.openssh.com/txt/release-7.8)


Diese Version enthält eine Reihe von Änderungen, die sich auf vorhandene Konfigurationen auswirken können:

ssh-keygen (1): Schreiben Sie standardmäßig private Schlüssel im OpenSSH-Format, anstatt das PEM-Format von OpenSSL zu verwenden. Das OpenSSH-Format, das seit 2014 in OpenSSH-Versionen unterstützt und in der Datei PROTOCOL.key in der Quelldistribution beschrieben wird, bietet einen wesentlich besseren Schutz gegen das Erraten von Offline-Kennwörtern und unterstützt Schlüsselkommentare in privaten Schlüsseln . Bei Bedarf können alte Schlüssel im PEM-Stil geschrieben werden, indem den Argumenten von ssh-keygen beim Generieren oder Aktualisieren eines Schlüssels "-m PEM" hinzugefügt wird.

Steffen Ullrich
2016-11-20 22:36:21 UTC
view on stackexchange narkive permalink

Handelt es sich bei diesen "neueren Formaten" um DSA / RSA / ECC oder um PPK gegen PEM?

DSA / RSA / ECC sind Algorithmen, die mit Kryptografie mit öffentlichem Schlüssel verwendet werden, und nicht Formate. Die für diese Algorithmen verwendeten Schlüssel können in verschiedenen Formaten gespeichert werden, dh in verschiedenen Wrappern und Codierungen für die Binärdaten des tatsächlichen Schlüssels.

Der Schalter -o wird verwendet, um a zu erzwingen neues Format für private Schlüssel, das sich von der zuvor verwendeten PEM unterscheidet. Dieses neue Format wird in neuem OpenSSh-Schlüsselformat und bcrypt pbkdf beschrieben. Zusammenfassend lässt sich sagen, dass es einen besseren Schutz bietet, wenn ein Angreifer Zugriff auf einen passphrasengeschützten privaten Schlüssel erhält, da er jetzt anstelle von MD5 eine ordnungsgemäße Funktion zur Schlüsselableitung für die Passphrase verwendet.

John Greene
2018-10-08 17:19:08 UTC
view on stackexchange narkive permalink

Eine einfachere Antwort ist, dass PEM ein Meta-Wrapper für die kryptografischen Informationen ist, um die Anwendung beim Parsen zu unterstützen.

Und diese in der ursprünglichen Frage angegebenen Akronyme aus drei Buchstaben werden verwendet, um die kryptografischen Informationen zu erstellen.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...