it-swarm.com.de

SSH - Wenn Eve die Passphrase und den öffentlichen Schlüssel hat, kann sie den privaten Schlüssel ableiten?

Ich habe benutzt ssh-keygen zum Erstellen eines privaten und öffentlichen RSA 4096-Bit-SSH-Schlüsselpaars. Ich habe eine Passphrase für den privaten Schlüssel verwendet.

Wenn ein Angreifer, Eve, die Passphrase zusätzlich zum öffentlichen Schlüssel kennt:

  1. Können sie den privaten Schlüssel ableiten? - Ich nehme ja mit genügend Zeit an.
  2. Welche Algorithmen können sie verwenden, um den öffentlichen Schlüssel abzuleiten? - Ich weiß es nicht.
  3. Wie viele (oder in welcher Reihenfolge) Operationen werden für jeden Algorithmus benötigt, um den privaten Schlüssel abzuleiten?

Update - es scheint, dass bei Verwendung von "yafu" auf einem Computer ( http://iamnirosh.blogspot.co.uk/2015/02/factoring-rsa-keys.html ) die Brute Force knackt Prozess/Factoring dauert deutlich kürzer.

  • Es wäre interessant zu sehen, wie viel Unterschied Yafu in einer verteilten Umgebung und auf Supercomputern macht.
33
unseen_rider

Der private Schlüssel hat nichts mit der Passphrase zu tun. So ist der öffentliche Schlüssel. Der öffentliche Schlüssel wird im Allgemeinen auch unverschlüsselt gespeichert, selbst wenn der private Schlüssel durch eine Passphrase geschützt ist. (Ausnahmen können bestehen, wenn der öffentliche Schlüssel in verschlüsselter Form gespeichert ist. Im Grundfall und unter der Annahme eines ausreichend großen Schlüssels bietet dies jedoch keine zusätzliche Sicherheit, da der öffentliche Schlüssel bedeutet öffentlich verbreitet werden oder zumindest einem Gegner zur Verfügung stehen.)

Versteh mich jetzt nicht falsch. Der Schutz Ihres privaten Schlüssels mit einer Passphrase ist eine sehr gute Idee, und es wird empfohlen, dies zu tun. Der private Schlüssel und der öffentliche Schlüssel haben eine mathematische Beziehung zueinander. Ihr privater Schlüssel ist jedoch immer noch nur eine Nummer. Diese Nummer hat nichts mit der Passphrase zu tun, mit der Sie die Datei verschlüsseln, die diese Nummer enthält. Dies ist alles, was die Passphrase tut.

Wenn ein Angreifer Eve die Passphrase zusätzlich zum öffentlichen Schlüssel kennt; Können sie den privaten Schlüssel ableiten? - Ich nehme ja mit genügend Zeit an.

Der öffentliche Schlüssel ist mathematisch mit dem privaten Schlüssel verbunden, und die einfache Antwort lautet: Ja, theoretisch kann bei ausreichender Zeit einer vom anderen abgeleitet werden. Der öffentliche Schlüssel muss fast per Definition im Klartext übertragen werden, um eine Identität herzustellen, bevor der verschlüsselte Kommunikationskanal eingerichtet wird, damit Eve (gemäß Konvention ist Eve ein passiver Lauscher; Mallory ist ein aktiver Mann in der Mitte) sehen kann es.

Das Ableiten des öffentlichen Schlüssels vom privaten Schlüssel in RSA ist einfach. Das Ableiten des privaten Schlüssels vom öffentlichen Schlüssel soll rechnerisch nicht durchführbar und bei ausreichend großen Schlüsseln effektiv unmöglich sein. Soweit wir wissen, gibt es keine schnelle Möglichkeit, die privaten RSA-Schlüsseldaten von einem öffentlichen 4096-Bit-RSA-Modul auf einem klassischen Computer abzuleiten (was wir derzeit haben). Selbst ein effizienter Angriff auf einen öffentlichen 2048-Bit-RSA-Modul wäre eine ziemliche Leistung, obwohl 1024-Bit-RSA in angemessener Zeit möglich ist und ein privater 768-Bit-RSA-Schlüssel wurde berücksichtigt public (es dauerte in der Größenordnung von 2.000 CPU-Jahren auf einigermaßen moderner Hardware).

"Mit genügend Zeit" ist es also möglich. Dies hängt jedoch nicht mit der Passphrase oder dem Fehlen einer Passphrase zusammen.

Um das Warum der oben genannten zu verstehen, werde ich der Einfachheit halber das Lehrbuch RSA verwenden. (Real-World-RSA ähnelt dem Lehrbuch-RSA, ist jedoch nicht genau dasselbe, da es viele reale Angriffe gibt, mit denen sich das Lehrbuch-RSA nicht befasst.) Hier ist neben einigen anderen Zahlen der private Schlüssel das Paar von Primzahlen, die allgemein als p und q bezeichnet werden, und der Öffentlichkeit Schlüssel ist ihr Produkt, n = pq , wobei n wird als öffentlicher Modul bezeichnet. Gegeben p und q , Berechnung n ist trivial (Sie müssen nur zwei - sehr große - Zahlen miteinander multiplizieren), aber nur n , das Bestimmen der entsprechenden Werte für p und q ist extrem schwer. Wir haben jedoch keinen Beweis , dass dies so ist; nur das Fehlen einer öffentlich bekannten einfachen Möglichkeit, dies tatsächlich zu tun, selbst wenn viele sehr kluge Leute lange an dem Problem gearbeitet haben. Es ist, als würde man herausfinden, dass 15 = 3 * 5 ist, nur dass es sich bei den Zahlen nicht um Zahlen mit wenigen Ziffern handelt, sondern um viele hundert Ziffern. In Annäherung erster Ordnung ist n mit Ihrem 4096-Bit-RSA-Schlüssel ungefähr 1300 Dezimalstellen lang und p und q sind jeweils etwas mehr als 600 Dezimalstellen lang. Wir können das sehen, weil log10(24096) ≈ 1233 und 10615* 10615= 101230.

Welche Algorithmen können sie verwenden, um den öffentlichen Schlüssel abzuleiten? - Ich weiß es nicht.

Semiprime Algorithmen zur Faktorisierung von Zahlen. Der aktuelle Stand der Technik für Zahlen größer als 10100 (100 Dezimalstellen, ca. 332 Bit) ist der General Number Field Sieve (GNFS) -Algorithmus.

Ein Quantencomputer könnte Shors Algorithmus verwenden, um eine Semiprime effizient zu faktorisieren, aber (zumindest in der Öffentlichkeit) wissen wir noch nicht, wie man einen ausreichend großen Quantencomputer baut, der tatsächlich funktioniert. Das ist ein Teil dessen, worum es beim Push in Richtung sogenannter Post-Quanten-Kryptographie geht. Zuletzt hörte ich, dass der Stand der Technik die Zahl 15 berücksichtigt hatte, aber das war vor ein paar Jahren; Es ist möglich, dass öffentlich bekannte Quantencomputer jetzt Zahlen größer als 15 faktorisieren können.

Wie viele (oder in welcher Reihenfolge) Operationen werden für jeden Algorithmus benötigt, um den privaten Schlüssel abzuleiten?

Die Komplexität des Faktorisierens einer Zahl mithilfe des GNFS wird auf der Wikipedia-Seite erläutert. Es ist wirklich schwierig, die Anzahl der Operationen direkt zu diskutieren, aber nach einigen Diskussionen über die Voraussetzungen fasst der Wikipedia-Artikel zusammen, dass die Laufzeit des Zahlenfeldsiebs superpolynomisch, aber subexponentiell ist in der Größe der Eingabe. Sie können die verschiedenen Faktorisierungszeiten und Algorithmen vergleichen, die für die verschiedenen RSA-Nummern verwendet wurden, die Teil eines Wettbewerbs waren, der Anfang der 90er Jahre gestartet wurde das Wissen in Bezug auf die ganzzahlige Faktorisierung zu erweitern, jetzt inaktiv.

Vergleichen Sie auch Wie ist es möglich, dass Personen, die beobachten, dass eine HTTPS-Verbindung hergestellt wird, nicht wissen, wie sie entschlüsselt werden soll? Beachten Sie, dass HTTPS anders als SSH funktioniert, das grundlegende Funktionsprinzip jedoch ähnlich bleibt.

51
a CVn

Die Passphrase schützt vor Zugriff auf den privaten Schlüssel

Die Passphrase soll den privaten Schlüssel bei physischem Zugriff schützen. Wenn sich der Hacker bei Ihrem Server anmelden und auf Ihren Zertifikatspeicher zugreifen kann, kann er die Passphrase verwenden, um eine Kopie des Zertifikats mit dem privaten Schlüssel zu erhalten . Hoffentlich haben Hacker nicht routinemäßig Zugriff auf Ihren Zertifikatspeicher, aber manchmal ist ein Hacker nur ein verärgerter Mitarbeiter.

Der Algorithmus für den öffentlichen Schlüssel schützt vor dem Ableiten des privaten Schlüssels

Wenn der Hacker keinen Zugriff auf Ihren Zertifikatspeicher hat und nur die Passphrase und den öffentlichen Schlüssel hat, kann der private Schlüssel nicht abgeleitet werden. Dies liegt an der cleveren Art und Weise, wie der RSA-Algorithmus eingerichtet ist. Die Beziehung vom privaten zum öffentlichen Schlüssel ist ein Falltürfunktion , was bedeutet, dass es einfach ist, sie in eine Richtung zu berechnen, aber nicht in die andere.

Hier ist ein Beispiel. Wenn ich Ihnen sagen würde, dass X * Y = 3014569 und X und Y ganze Zahlen sind, könnten Sie mir dann X oder Y sagen? Es wäre sehr schwierig (aufgrund der Art und Weise, wie ich X und Y gewählt habe). Wenn ich Ihnen andererseits X = 1237 und Y = 2437 sagen würde, wäre es für Sie sehr einfach, mir zu sagen, dass X * Y = 3014569 (Sie müssen nur multiplizieren!). So ist es einfach in die eine Richtung, schwer in die andere Weg. Dies ist als Primfaktorisierung Problem bekannt.

Davon abgesehen könnte er einige tausend Jahre damit verbringen, immer wieder durch die Falltür zu gehen, um Ihren privaten Schlüssel zu finden. So was:

  1. Durchlaufen Sie alle möglichen privaten Schlüssel
  2. Leiten Sie für jeden privaten Schlüssel den öffentlichen Schlüssel ab
  3. Überprüfen Sie den berechneten öffentlichen Schlüssel mit dem öffentlichen Zielschlüssel

Dies wird als Brute-Force-Angriff bezeichnet. Es würde lange dauern.

Es kann einige Abkürzungen geben (z. B. einen Quantencomputer verwenden), und Mathematiker finden immer neue Wege, um solche Dinge zu umgehen. Derzeit wird ein 4096-Bit-Schlüssel jedoch als ausreichend lang angesehen, um in absehbarer Zukunft Bestand zu haben (Einzelheiten siehe dieser Link ).

24
John Wu

Es ist möglicherweise möglich, Ihren privaten Schlüssel vom öffentlichen Schlüssel abzuleiten (es wird nur angenommen, dass niemand weiß, wie man es effizient macht), aber die Passphrase hilft überhaupt nicht.

Sie sollten verstehen, dass ssh-keygen zuerst einen Teil von Schlüsseln generiert, der völlig unabhängig von der Passphrase ist, und dass die Passphrase dann nur dazu dient, den privaten Schlüssel auf Ihrer Festplatte zu verschlüsseln. Daher ist die Passphrase nur für jemanden nützlich, der Ihren verschlüsselten privaten Schlüssel kennt.

Übrigens können Sie die Passphrase Ihres privaten Schlüssels ändern (mit ssh-keygen -p) ohne den öffentlichen Schlüssel zu ändern.

5
user2233709

Können sie den privaten Schlüssel ableiten? - Ich nehme ja mit genügend Zeit an.

Die Passphrase wird nur zum Verschlüsseln des Speichers des privaten Schlüssels auf dem Client-System verwendet. Daher ist sie nur dann nützlich, wenn sie über die verschlüsselte Datei des privaten Schlüssels verfügen. Das läuft also darauf hinaus, ob der Angreifer den privaten Schlüssel vom öffentlichen Schlüssel ableiten kann.

Die Antwort darauf hängt von der Art und Länge des Schlüssels und den verfügbaren Rechenressourcen ab.

Bei einem RSA-Schlüssel besteht die bekannteste Art der Rissbildung darin, den Modul zu berücksichtigen. Sobald der Modul berücksichtigt ist, ist es einfach, den privaten Schlüssel aus den Modulfaktoren abzuleiten.

Der bekannteste Algorithmus zum Faktorisieren ist das allgemeine Feldnummernsieb. Die Faktorisierung von 768-Bit-Zahlen wurde öffentlich demonstriert. Die Faktorisierung von 1024-Bit-Nummern wurde nicht öffentlich demonstriert, wird jedoch für Spionageagenturen und Organisationen mit ähnlichen Ressourcen als machbar angesehen. 2048-Bit-RSA sollte sicher sein, es sei denn, es gibt große Fortschritte bei den Faktorisierungstechniken oder es wird eine alternative Methode zum Angriff auf RSA gefunden. 4096-Bit ist ein weiterer Schritt in Richtung Paranoia.

Beachten Sie, dass wir nicht absolut behaupten können, dass selbst ein 4096-Bit-Schlüssel sicher ist. Es besteht weiterhin die Möglichkeit, dass Factoring-Algorithmen einen Durchbruch erzielen oder dass ein anderer Weg zum Angriff auf RSA gefunden wird.

Für herkömmliche DSA besteht der bekannteste Angriffsweg darin, das Problem des diskreten Protokolls auf einem Modulo-Prime-Feld zu lösen. Wie sich herausstellt, ist der bekannteste Algorithmus hierfür auch das allgemeine Feldnummernsieb, aber die Anwendung dieses Algorithmus auf das Problem des diskreten Protokolls ist schwieriger als die Anwendung auf das Problem der Primfaktorisierung. Ein 1024-Bit-DSA-Schlüssel ist etwas schwieriger zu knacken als ein 1024-Bit-RSA-Schlüssel, aber wahrscheinlich nicht völlig unmöglich.

Für elliptische Kurven-DSA besteht der bekannteste Angriffsweg darin, das Problem des diskreten Protokolls in einem elliptischen Kurvenfeld zu lösen. Es wird angenommen, dass dies viel schwieriger ist, als es auf einem Modulo-Prime-Feld zu lösen, und daher können die Schlüssel für ein bestimmtes Maß an angenommener Sicherheit kürzer sein.

2
Peter Green

Die Verschlüsselung mit öffentlichen Schlüsseln beruht auf der Überzeugung, dass es keine Möglichkeit gibt, den privaten Schlüssel vom öffentlichen Schlüssel abzuleiten. Die Verschlüsselung wird als asymmetrisch bezeichnet, da kein bekannter Algorithmus zum Erzeugen des privaten Schlüssels aus dem öffentlichen Schlüssel. Es bedeutet nicht, dass es keinen solchen Algorithmus gibt, es ist nur ist nicht bekannt.

Da es keinen "umgekehrten" Algorithmus gibt, erfordert das Knacken Ihres privaten Schlüssels Zeit, Rechenleistung und Vermutungen/Annahmen. Wenn Sie Bedenken hinsichtlich der Sicherheit Ihrer RSA-Schlüssel haben, verwenden Sie eine Schlüsselgröße von mindestens 8192 Bit. Angenommen, der Schlüsselgenerierungsalgorithmus Ihrer Plattform verwendet keine Verknüpfungen, die die Sicherheit des generierten Schlüssels gefährden. Solange es keinen umgekehrten Algorithmus gibt, ist das Erhöhen der Schlüsselgröße gegenüber den Standardeinstellungen der einfachste Weg, sich vor verdächtigen Personen zu schützen.

Daher muss ich den anderen zustimmen, dass es keine bekannte Möglichkeit gibt, die Passphrase und den öffentlichen Schlüssel zum Knacken Ihres privaten Schlüssels zu verwenden.

0
user134702