Was ist RSA-Verschlüsselung und wie funktioniert sie?

RSA-Verschlüsselung ist ein System, das eines der größten Probleme in der Kryptographie löst: Wie kann man jemandem eine codierte Nachricht senden, ohne zuvor die Möglichkeit zu haben, den Code mit ihm zu teilen?

In diesem Artikel erfahren Sie alles, was Sie über die Entwicklung der RSA-Verschlüsselung, ihre Funktionsweise, die Mathematik dahinter, ihre Verwendung sowie einige der größten Sicherheitsprobleme wissen müssen., Wenn Sie mehr über RSA erfahren, erhalten Sie grundlegende Kenntnisse, die Ihnen helfen zu verstehen, wie viele Teile unseres Online-Lebens sicher sind.

Was ist RSA-Verschlüsselung?

Lassen Sie uns sagen, Sie wollen, sagen Sie Ihrem Freund ein Geheimnis. Wenn du direkt neben ihnen bist, kannst du es einfach flüstern. Wenn Sie sich auf gegenüberliegenden Seiten des Landes befinden, funktioniert das offensichtlich nicht. Sie könnten es aufschreiben und an sie senden oder das Telefon benutzen, aber jeder dieser Kommunikationskanäle ist unsicher und jeder, der stark genug motiviert ist, kann die Nachricht leicht abfangen.,

Wenn das Geheimnis wichtig genug wäre, würden Sie nicht riskieren, es normal aufzuschreiben-Spione oder ein schurkischer Postangestellter könnten Ihre Post durchsehen. Ebenso könnte jemand ohne Ihr Wissen auf Ihr Telefon tippen und jeden einzelnen Anruf protokollieren, den Sie tätigen.

Eine Lösung, um zu verhindern, dass Lauscher auf Nachrichteninhalte zugreifen, besteht darin, sie zu verschlüsseln. Dies bedeutet im Grunde, der Nachricht einen Code hinzuzufügen, der sie in ein Durcheinander verwandelt. Wenn Ihr Code ausreichend komplex ist, können nur Personen auf die ursprüngliche Nachricht zugreifen, die Zugriff auf den Code haben.,

Wenn Sie zuvor die Möglichkeit hatten, den Code mit Ihrem Freund zu teilen, kann jeder von Ihnen jederzeit eine verschlüsselte Nachricht senden, da er weiß, dass Sie beide die einzigen sind, die den Nachrichteninhalt lesen können. Aber was wäre, wenn Sie den Code vorher nicht teilen könnten?

Dies ist eines der grundlegenden Probleme der Kryptographie, das durch Public-Key-Verschlüsselungsschemata (auch als asymmetrische Verschlüsselung bezeichnet) wie RSA behoben wurde.

Unter RSA-Verschlüsselung werden Nachrichten mit einem Code verschlüsselt, der als öffentlicher Schlüssel bezeichnet wird und offen geteilt werden kann., Aufgrund einiger eindeutiger mathematischer Eigenschaften des RSA-Algorithmus kann eine Nachricht, sobald sie mit dem öffentlichen Schlüssel verschlüsselt wurde, nur noch mit einem anderen Schlüssel entschlüsselt werden, der als privater Schlüssel bezeichnet wird. Jeder RSA-Benutzer hat ein Schlüsselpaar, das aus seinen öffentlichen und privaten Schlüsseln besteht. Wie der Name schon sagt, muss der private Schlüssel geheim gehalten werden.

Verschlüsselungsschemata für öffentliche Schlüssel unterscheiden sich von der symmetrischen Schlüsselverschlüsselung, bei der sowohl der Verschlüsselungs-als auch der Entschlüsselungsprozess denselben privaten Schlüssel verwenden., Diese Unterschiede machen Public-Key-Verschlüsselung wie RSA nützlich für die Kommunikation in Situationen, in denen es keine Möglichkeit gab, Schlüssel vorher sicher zu verteilen.

Symmetrische Schlüsselalgorithmen haben ihre eigenen Anwendungen, z. B. das Verschlüsseln von Daten für den persönlichen Gebrauch oder wenn sichere Kanäle vorhanden sind, über die die privaten Schlüssel gemeinsam genutzt werden können.

Siehe auch: Public-key-Kryptographie

Wo wird RSA-Verschlüsselung verwendet?

Die RSA-Verschlüsselung wird häufig in Kombination mit anderen Verschlüsselungsschemata oder für digitale Signaturen verwendet, die die Authentizität und Integrität einer Nachricht nachweisen können., Es wird im Allgemeinen nicht zum Verschlüsseln ganzer Nachrichten oder Dateien verwendet, da es weniger effizient und ressourcenintensiver ist als die symmetrische Schlüsselverschlüsselung.

Um die Dinge effizienter zu machen, wird eine Datei im Allgemeinen mit einem symmetrischen Schlüsselalgorithmus verschlüsselt, und dann wird der symmetrische Schlüssel mit RSA-Verschlüsselung verschlüsselt. Bei diesem Vorgang kann nur eine Entität, die Zugriff auf den privaten RSA-Schlüssel hat, den symmetrischen Schlüssel entschlüsseln.

Ohne Zugriff auf den symmetrischen Schlüssel kann die Originaldatei nicht entschlüsselt werden., Diese Methode kann verwendet werden, um Nachrichten und Dateien sicher zu halten, ohne zu lange zu benötigen oder zu viele Rechenressourcen zu verbrauchen.

Die RSA-Verschlüsselung kann in verschiedenen Systemen verwendet werden. Es kann in OpenSSL, wolfCrypt, cryptlib und einer Reihe anderer kryptografischer Bibliotheken implementiert werden.

Als eines der ersten weit verbreiteten Public-Key-Verschlüsselungsschemata legte RSA den Grundstein für einen Großteil unserer sicheren Kommunikation. Es wurde traditionell in TLS verwendet und war auch der ursprüngliche Algorithmus, der in der PGP-Verschlüsselung verwendet wurde., RSA ist immer noch in einer Reihe von Webbrowsern, E-Mails, VPNs, Chats und anderen Kommunikationskanälen zu sehen.

RSA wird auch häufig verwendet, um sichere Verbindungen zwischen VPN-Clients und VPN-Servern herzustellen. Unter Protokollen wie OpenVPN können TLS-Handshakes den RSA-Algorithmus verwenden, um Schlüssel auszutauschen und einen sicheren Kanal einzurichten.

hintergrund der RSA-Verschlüsselung

Wie wir bereits am Anfang dieses Artikels an, bevor die public-key-Verschlüsselung, und es war eine Herausforderung, sicher kommunizieren, wenn es hatte nie eine chance zum sicheren Austausch von Schlüsseln im Voraus., Wenn es keine Möglichkeit gab, den Code im Voraus freizugeben, oder einen sicheren Kanal, über den die Schlüssel verteilt werden konnten, gab es keine Möglichkeit zu kommunizieren, ohne dass Feinde in der Lage waren, den Nachrichteninhalt abzufangen und darauf zuzugreifen.

Erst in den 1970er Jahren begann sich wirklich etwas zu ändern. Die erste große Entwicklung zu dem, was wir jetzt Public-Key-Kryptographie nennen, wurde zu Beginn des Jahrzehnts von James H. Ellis veröffentlicht., Ellis konnte keinen Weg finden, seine Arbeit umzusetzen, aber es wurde von seinem Kollegen Clifford Cocks erweitert, um das zu werden, was wir jetzt als RSA-Verschlüsselung kennen.

Das letzte Puzzleteil ist das, was wir jetzt den Diffie-Hellman-Schlüsselaustausch nennen. Malcolm J. Williamson, ein anderer Mitarbeiter, fand ein Schema heraus, das es zwei Parteien ermöglichte, einen Verschlüsselungsschlüssel freizugeben, selbst wenn der Kanal von Gegnern überwacht wurde.

All diese Arbeiten wurden im britischen Geheimdienst, dem Government Communications Headquarters (GCHQ), durchgeführt, das die Entdeckung klassifiziert hielt., Teilweise aufgrund technologischer Einschränkungen konnte der GCHQ zu dieser Zeit keine Verwendung für Public-Key-Kryptographie sehen, so dass die Entwicklung untätig im Regal saß und Staub sammelte. Erst 1997 wurde die Arbeit freigegeben und die ursprünglichen Erfinder von RSA wurden anerkannt.

Einige Jahre später begannen sich ähnliche Konzepte in der Öffentlichkeit zu entwickeln. Ralph Merkle schuf eine frühe Form der Public-Key-Kryptographie, die Whitfield Diffie und Martin Hellman bei der Gestaltung des Diffie-Hellman-Schlüsselaustauschs beeinflusste.,

Diffie und Hellmans Ideen fehlten ein wichtiger Aspekt, der ihre Arbeit zu einer Grundlage der Kryptographie mit öffentlichem Schlüssel machen würde. Dies war eine Einwegfunktion, die schwer umzukehren wäre. 1977 fanden Ron Rivest, Adi Shamir und Leonard Adleman, deren Nachnamen das RSA-Akronym bilden, nach einem Jahr Arbeit an dem Problem eine Lösung.

Die MIT-basierte Akademiker ihren Durchbruch nach einer Passah-Party im Jahr 1977., Nach einer Nacht des Trinkens ging Rivest nach Hause, aber anstatt zu schlafen, verbrachte er den Abend fieberhaft damit, ein Papier zu schreiben, das seine Idee für die notwendige Einbahnfunktion formalisierte.

Die Idee wurde 1983 vom MIT patentiert,aber erst in den frühen Tagen des Internets wurde der RSA-Algorithmus als wichtiges Sicherheitsinstrument weit verbreitet.

Wie funktioniert die RSA-Verschlüsselung?

Die folgenden ist ein bisschen eine Vereinfachung, weil zu viele Leser haben wahrscheinlich bereits gezeichnet von Ihrer high-school-Mathe-Lehrer., Um zu verhindern, dass die Mathematik zu unhandlich wird, werden wir einige Konzepte vereinfachen und viel kleinere Zahlen verwenden. In Wirklichkeit verwendet die RSA-Verschlüsselung Primzahlen, deren Größe viel größer ist, und es gibt einige andere Komplexitäten.

Es gibt verschiedene Konzepte, die Sie sich durch den Kopf gehen müssen, bevor wir erklären können, wie alles zusammenpasst. Dazu gehören Trapdoor-Funktionen, das Generieren von Primzahlen, die Totient-Funktion von Carmichael und die separaten Prozesse, die an der Berechnung der öffentlichen und privaten Schlüssel beteiligt sind, die bei den Verschlüsselungs-und Entschlüsselungsprozessen verwendet werden.,

Falltürfunktionen

Die RSA-Verschlüsselung funktioniert unter der Prämisse, dass der Algorithmus in einer Richtung leicht zu berechnen ist, umgekehrt jedoch fast unmöglich. Wenn Ihnen beispielsweise gesagt würde, dass 701,111 ein Produkt aus zwei Primzahlen ist, könnten Sie dann herausfinden, was diese beiden Zahlen sind?

Selbst mit einem Taschenrechner oder einem Computer hätten die meisten von uns keine Ahnung, wo sie anfangen sollen, geschweige denn die Antwort herausfinden können. Aber wenn wir die Dinge umdrehen, wird es viel einfacher., Was ist das Ergebnis von:

907 x 773

Wenn Sie sich genug gelangweilt hätten, hätten Sie Ihr Telefon auspeitschen oder vielleicht in Ihrem Kopf berechnen können, um herauszufinden, dass die Antwort die zuvor erwähnte 701,111 ist. Diese 907 und 773 sind die Primzahlen, die unsere erste Frage beantworten, was uns zeigt, dass bestimmte Gleichungen leicht in eine Richtung herauszufinden sind, aber umgekehrt scheinbar unmöglich sind.

Ein weiterer interessanter Aspekt dieser Gleichung ist, dass es einfach ist, eine der Primzahlen herauszufinden, wenn Sie bereits die andere sowie das Produkt haben., Wenn Ihnen gesagt wird, dass 701,111 das Ergebnis von 907 multipliziert mit einer anderen Primzahl ist, können Sie die andere Primzahl mit der folgenden Gleichung herausfinden:

701,111 ÷ 907 = 773

Da die Beziehung zwischen diesen Zahlen einfach in einer Richtung zu berechnen ist, aber umgekehrt unglaublich schwierig ist, wird die Gleichung als Falltürfunktion bezeichnet. Beachten Sie, dass Computer den Vorgang zwar in einer trivialen Zeit ausführen können, das obige Beispiel jedoch für Benutzer schwer herauszufinden ist.

Aus diesem Grund verwendet RSA viel größere Zahlen., Die Größe der Primzahlen in einer echten RSA-Implementierung variiert, aber in 2048-Bit-RSA würden sie zusammenkommen, um Schlüssel mit einer Länge von 617 Ziffern zu erstellen. Um Ihnen bei der Visualisierung zu helfen, wäre ein Schlüssel eine Zahl dieser Größe:

Primzahlen generieren

Die oben genannten Falltürfunktionen bilden die Grundlage für die Funktionsweise von Verschlüsselungsschemata mit öffentlichen und privaten Schlüsseln. Ihre Eigenschaften ermöglichen die gemeinsame Nutzung öffentlicher Schlüssel, ohne die Nachricht zu gefährden oder den privaten Schlüssel preiszugeben. Sie ermöglichen auch die Verschlüsselung von Daten mit einem Schlüssel auf eine Weise, die nur vom anderen Schlüssel des Paares entschlüsselt werden kann.,

Der erste Schritt zum Verschlüsseln einer Nachricht mit RSA besteht darin, die Schlüssel zu generieren. Dazu benötigen wir zwei Primzahlen (p und q), die mit einem Primalitätstest ausgewählt werden. Ein Primalitätstest ist ein Algorithmus, der Primzahlen effizient findet, wie der Rabin-Miller-Primalitätstest.

Die Primzahlen in RSA müssen sehr groß und auch relativ weit voneinander entfernt sein. Zahlen, die klein oder näher zusammen sind, sind viel einfacher zu knacken. Trotzdem wird unser Beispiel kleinere Zahlen verwenden, um die Verfolgung und Berechnung zu vereinfachen.,

Nehmen wir an, der Primalitätstest gibt uns die Primzahlen, die wir oben verwendet haben, 907 und 773. Der nächste Schritt besteht darin, den Modul (n) mithilfe der folgenden Formel zu ermitteln:

n = p x q

Wobei p = 907 und q = 773

Daher:

n = 907 x 773

n = 701,111

Carmichaels Totient − Funktion

Sobald wir n haben, verwenden wir die Totient − Funktion von Carmichael:

λ(n) = lcm (p-1, q-1)

Wenn es eine Weile her ist, seit Sie die mathematischen Lehrbücher getroffen haben, könnte das obige etwas erschreckend aussehen., Sie können diesen Teil überspringen und einfach darauf vertrauen, dass die Mathematik funktioniert, sonst bleiben Sie bei uns für ein paar weitere Berechnungen. Alles wird so detailliert wie möglich erklärt, damit Sie sich mit den Grundlagen vertraut machen können.

Für diejenigen, die es nicht wissen, repräsentiert λ(n) Carmichaels Totient für n, während lcm das niedrigste gemeinsame Vielfache bedeutet, das die niedrigste Zahl ist, in die sich sowohl p als auch q teilen können. Es gibt einige verschiedene Möglichkeiten, dies herauszufinden, aber am einfachsten ist es, einem Online-Rechner zu vertrauen, der die Gleichung für Sie erstellt., Setzen wir also unsere Zahlen in die Gleichung ein:

λ(701,111) = lcm (907 − 1, 773 − 1)

λ (701,111) = lcm(906, 772)

Mit dem oben verlinkten Rechner erhalten wir:

λ (701,111) = 349,716

Generieren des öffentlichen Schlüssels

Nachdem wir Carmichaels Totient unserer Primzahlen haben, ist es Zeit, unseren öffentlichen Schlüssel herauszufinden. Unter RSA bestehen öffentliche Schlüssel aus einer Primzahl e sowie n. Die Zahl e kann zwischen 1 und dem Wert für λ(n) liegen, der in unserem Beispiel 349,716 beträgt.,

Da der öffentliche Schlüssel offen geteilt wird, ist es für e nicht so wichtig, eine Zufallszahl zu sein. In der Praxis wird e im Allgemeinen auf 65.537 gesetzt, da bei der zufälligen Auswahl viel größerer Zahlen die Verschlüsselung viel weniger effizient ist. Für das heutige Beispiel werden wir die Zahlen klein halten, um Berechnungen effizient zu machen. Angenommen:

e = 11

Unsere endgültigen verschlüsselten Daten werden als Chiffretext (c) bezeichnet. Wir leiten es aus unserer Klartextnachricht (m) ab, indem wir den öffentlichen Schlüssel mit der folgenden Formel anwenden:

c = me mod n

Wir haben uns bereits e ausgedacht und kennen auch n., Das einzige, was wir erklären müssen, ist mod. Es ist ein bisschen außerhalb der Tiefe dieses Artikels, aber es bezieht sich auf eine Modulo-Operation, was im Wesentlichen bedeutet, dass der Rest übrig bleibt, wenn Sie eine Seite durch die andere teilen. Zum Beispiel:

10 mod 3 = 1

Dies liegt daran, dass 3 dreimal in 10 geht, mit einem Rest von 1.

Zurück zu unserer Gleichung. Um die Dinge einfach zu halten, sagen wir, dass die Nachricht (m), die wir verschlüsseln und geheim halten möchten, nur eine einzige Zahl ist, 4., Lassen Sie uns alles einstecken:

c = me mod n

c = 411 mod 701,111

c = 4,194,304 mod 701,111

Um die Modulo-Bedienung zu vereinfachen, verwenden wir einen Online-Rechner, aber Sie können dies gerne selbst herausfinden. Wenn wir 4,194,304 in den Online-Rechner eingeben, erhalten wir:

c = 688,749

Wenn wir RSA zum Verschlüsseln unserer Nachricht verwenden, 4, mit unserem öffentlichen Schlüssel, erhalten wir den Chiffretext von 688,749., Die vorherigen Schritte schienen vielleicht etwas zu mathematisch zu sein, aber es ist wichtig zu wiederholen, was tatsächlich passiert ist.

Wir hatten eine Nachricht von 4, die wir geheim halten wollten. Wir haben einen öffentlichen Schlüssel angewendet, der uns das verschlüsselte Ergebnis von 688,749 gab. Jetzt, da es verschlüsselt ist, können wir die Nummer 688,749 sicher an den Besitzer des Schlüsselpaares senden. Sie sind die einzige Person, die sie mit ihrem privaten Schlüssel entschlüsseln kann. Wenn sie es entschlüsseln, sehen sie die Nachricht, die wir wirklich gesendet haben, 4.,

Generieren des privaten Schlüssels

In der RSA-Verschlüsselung können Daten oder Nachrichten, sobald sie mit einem öffentlichen Schlüssel in Chiffretext umgewandelt wurden, nur vom privaten Schlüssel aus demselben Schlüsselpaar entschlüsselt werden. Private Schlüssel bestehen aus d und n. Wir kennen bereits n, und die folgende Gleichung wird verwendet, um d zu finden:

d =1/e mod λ(n)

Im obigen Abschnitt zum Generieren des öffentlichen Schlüssels haben wir bereits entschieden, dass in unserem Beispiel e gleich 11 wäre. In ähnlicher Weise wissen wir, dass λ (n) 349,716 aus unserer früheren Arbeit unter Carmichaels Totient-Funktion entspricht., Die Dinge werden etwas komplizierter, wenn wir auf diesen Abschnitt der Formel stoßen:

1/e>

Diese Gleichung sieht möglicherweise so aus, als würden Sie aufgefordert, 1 durch 11 zu teilen, aber das ist nicht der Fall. Stattdessen symbolisiert dies nur, dass wir die modulare Umkehrung von e (in diesem Fall 11) und λ(n) (in diesem Fall 349,716) berechnen müssen.

Dies bedeutet im Wesentlichen, dass wir anstelle einer Standardmodulooperation stattdessen die Inverse verwenden., Dies wird normalerweise mit dem erweiterten euklidischen Algorithmus gefunden, aber es ist ein wenig außerhalb des Rahmens dieses Artikels, also werden wir nur betrügen und stattdessen einen Online-Rechner verwenden., Nachdem wir nun alles verstanden haben, fügen wir unsere Informationen in die Formel ein:

d =1/11 mod 349,716

Um diesen Vorgang auszuführen, geben Sie einfach 11 ein (oder einen beliebigen Wert, den Sie möglicherweise für e haben, wenn Sie dies mit Ihrem eigenen Beispiel versuchen), wobei Integer und 349,716 (oder ein beliebiger Wert, den Sie möglicherweise für λ(n) haben, wenn Sie dies mit Ihrem eigenen Beispiel versuchen), wobei Modulo in dem oben verlinkten Online-Rechner steht., Wenn Sie es richtig gemacht haben, sollten Sie ein Ergebnis erhalten, bei dem:

d = 254, 339

Nachdem wir nun den Wert für d haben, können wir Nachrichten, die mit unserem öffentlichen Schlüssel verschlüsselt wurden, mit der folgenden Formel entschlüsseln:

m = cd mod n

Wir können jetzt zu dem Chiffretext zurückkehren, den wir unter dem Abschnitt Privaten Schlüssel generieren verschlüsselt haben. Als wir die Nachricht mit dem öffentlichen Schlüssel verschlüsselten, gab sie uns einen Wert für c von 688,749. Von oben wissen wir, dass d 254,339 entspricht. Wir wissen auch, dass n 701,111 entspricht. Das gibt uns:

m = 688,749254,339 mod 701,111.,

Wie Sie vielleicht bemerkt haben, könnte der Versuch, eine Zahl auf die 254,339-te Leistung zu bringen, für die meisten normalen Rechner etwas zu viel sein. Stattdessen werden wir einen Online-RSA-Entschlüsselungsrechner verwenden. Wenn Sie eine andere Methode verwenden möchten, wenden Sie die Befugnisse wie gewohnt an und führen die Moduloperation auf die gleiche Weise aus wie im Abschnitt Generieren des öffentlichen Schlüssels.,

Geben Sie in den oben verlinkten Rechner 701,111 ein, in dem der Versorgungsmodul angegeben ist: N, 254,399, in dem der Entschlüsselungsschlüssel angegeben ist: D, und 688,749, in dem die Chiffretextnachricht in numerischer Form angegeben ist, wie unten gezeigt:

Sobald Sie die Daten eingegeben haben, klicken Sie auf Entschlüsseln, wodurch die Zahlen durch die oben aufgeführte Entschlüsselungsformel gesetzt werden. Dadurch erhalten Sie die ursprüngliche Nachricht im Feld unten. Wenn Sie alles richtig gemacht haben, sollten Sie eine Antwort von 4 erhalten, die die ursprüngliche Nachricht war, die wir mit unserem öffentlichen Schlüssel verschlüsselt haben.,

Funktionsweise der RSA-Verschlüsselung in der Praxis

Die obigen Abschnitte sollten Ihnen ein vernünftiges Verständnis dafür geben, wie die Mathematik hinter der Verschlüsselung mit öffentlichen Schlüsseln funktioniert. Es kann etwas verwirrend sein, aber selbst diejenigen, die die Feinheiten der Gleichungen nicht verstanden haben, können hoffentlich einige wichtige Informationen über den Prozess mitnehmen.

In den oben aufgeführten Schritten haben wir gezeigt, wie zwei Entitäten sicher kommunizieren können, ohne zuvor einen Code geteilt zu haben. Zuerst müssen sie jeweils ihre eigenen Schlüsselpaare einrichten und den öffentlichen Schlüssel miteinander teilen., Die beiden Entitäten müssen ihre privaten Schlüssel geheim halten, damit ihre Kommunikation sicher bleibt.

Sobald der Absender den öffentlichen Schlüssel seines Empfängers hat, kann er damit die Daten verschlüsseln, die er sicher aufbewahren möchte. Sobald es mit einem öffentlichen Schlüssel verschlüsselt wurde, kann es nur noch mit dem privaten Schlüssel aus demselben Schlüsselpaar entschlüsselt werden. Selbst derselbe öffentliche Schlüssel kann nicht zum Entschlüsseln der Daten verwendet werden. Dies liegt an den Eigenschaften von Falltürfunktionen, die wir oben erwähnt haben.

Wenn der Empfänger die verschlüsselte Nachricht empfängt, verwendet er seinen privaten Schlüssel, um auf die Daten zuzugreifen., Wenn der Empfänger die Kommunikation auf sichere Weise zurückgeben möchte, kann er seine Nachricht mit dem öffentlichen Schlüssel der Partei verschlüsseln, mit der er kommuniziert. Sobald es mit dem öffentlichen Schlüssel verschlüsselt wurde, kann nur über den passenden privaten Schlüssel auf die Informationen zugegriffen werden.

Auf diese Weise kann die RSA-Verschlüsselung von bisher unbekannten Parteien verwendet werden, um Daten sicher zwischen sich zu senden. Wesentliche Teile der Kommunikationskanäle, die wir in unserem Online-Leben nutzen, wurden von dieser Grundlage aufgebaut.,

Wie werden kompliziertere Nachrichten mit RSA verschlüsselt?

In unserem Beispiel haben wir die Dinge stark vereinfacht, um das Verständnis zu erleichtern, weshalb wir nur eine Nachricht mit der Nummer „4“verschlüsselt haben. In der Lage zu sein, die Nummer 4 zu verschlüsseln, scheint nicht besonders nützlich zu sein, daher fragen Sie sich möglicherweise, wie Sie einen komplizierteren Datensatz verschlüsseln können, z. B. einen symmetrischen Schlüssel (der am häufigsten von RSA verwendet wird) oder sogar eine Nachricht.,

Manche Leute sind vielleicht ratlos darüber, wie ein Schlüssel wie „n38cb29fkbjh138g7fqijnf3kaj84f8b9f…“ oder eine Nachricht wie „buy me a sandwich“ mit einem Algorithmus wie RSA verschlüsselt werden kann, der sich mit Zahlen und nicht mit Buchstaben befasst. Die Realität ist, dass alle Informationen, die unsere Computer verarbeiten, binär (1s und 0s) gespeichert sind und wir Codierungsstandards wie ASCII oder Unicode verwenden, um sie auf eine Weise darzustellen, die Menschen verstehen können (Buchstaben).,

Dies bedeutet, dass Schlüssel wie „n38cb29fkbjh138g7fqijnf3kaj84f8b9f…“ und Nachrichten wie „buy me a sandwich“ bereits als Zahlen vorhanden sind, die leicht im RSA-Algorithmus berechnet werden können. Die Zahlen, durch die sie dargestellt werden, sind für uns viel größer und schwieriger zu verwalten, weshalb wir es vorziehen, mit alphanumerischen Zeichen und nicht mit einem Durcheinander von Binärzeichen umzugehen.

Wenn Sie einen längeren Sitzungsschlüssel oder eine komplexere Nachricht mit RSA verschlüsseln möchten, würde dies einfach eine viel größere Anzahl beinhalten.,

Padding

Wenn RSA implementiert ist, verwendet es etwas namens Padding, um eine Reihe von Angriffen zu verhindern. Um zu erklären, wie das funktioniert, beginnen wir mit einem Beispiel. Angenommen, Sie haben eine codierte Nachricht an einen Freund gesendet:

Liebe Karen,

Ich hoffe es geht Ihnen gut. Essen wir morgen noch zu Abend?

Mit freundlichen Grüßen,

James

Angenommen, Sie haben die Nachricht auf einfache Weise codiert, indem Sie jeden Buchstaben in den Buchstaben geändert haben, der ihm im Alphabet folgt. Dies würde sich ändern, die Nachricht an:

Efbs Lbsfo,

J ipqf zpv bsf xfmm., Bsf xf tujmm ibwjoh ejoofs upnpsspx?

Zpvst tjodfsfmz,

Kbnft

Wenn deine Feinde diesen Brief abgefangen haben, gibt es einen Trick, mit dem sie versuchen könnten, den Code zu knacken. Sie könnten sich das Format Ihres Briefes ansehen und versuchen zu erraten, was die Nachricht sagen könnte. Sie wissen, dass Menschen ihre Buchstaben normalerweise mit „Hallo“, „Hallo“, „Liebes“ oder einer Reihe anderer Konventionen beginnen.

Wenn sie versuchen würden, „Hallo“ oder „Hallo“ als erstes Wort anzuwenden, würden sie sehen, dass es nicht zur Anzahl der Zeichen passt. Sie könnten dann versuchen, „Liebes“., Es passt, aber das bedeutet nicht unbedingt etwas. Die Angreifer würden es einfach versuchen und sehen, wohin es sie führte. Sie würden also die Buchstaben „e“, „f“, „b“ und „s“ mit „d“, „e“, „a“ bzw. Dies würde ihnen geben:

Lieber Laseo,

J ipqe zpv sind xemm. Sind xe tujmm iawjoh djooes upnpsspx?

Zpvrt tjoderemz,

Kanet

Es sieht immer noch ziemlich verwirrend aus, so dass die Angreifer versuchen könnten, einige andere Konventionen zu betrachten, wie zum Beispiel, wie wir unsere Briefe abschließen. Die Leute fügen oft „Von“ oder „Mit freundlichen Grüßen“ am Ende, aber keiner von ihnen passen das Format., Stattdessen könnten die Angreifer versuchen, „Yours aufrichtig“ und ersetzen Sie die anderen Buchstaben, um zu sehen, wo es sie bekommt. Durch Ändern von „z“, „p“, „v“, „t“, „j“ „o“, „d“ und „m“ mit „y“, „o“, „u“, „s“, „i“, „n“, „c“ und “ l “ erhalten sie:

Liebe Laser,

I ioqe Sie sind xell. Sind xe tuill iawinh dinnes uonossox?

Mit freundlichen Grüßen,

Kanet

Nach dieser Änderung sieht es so aus, als würden die Angreifer anfangen, irgendwohin zu gelangen. Sie haben die Wörter „Ich“, „du“ und „bist“ gefunden, zusätzlich zu den Wörtern, die ihre anfänglichen Vermutungen ausmachten.,

Da die Wörter in der richtigen grammatikalischen Reihenfolge sind, können die Angreifer ziemlich sicher sein, dass sie in die richtige Richtung gehen. Inzwischen haben sie wahrscheinlich auch erkannt, dass der Code dazu führte, dass jeder Buchstabe in den Buchstaben geändert wurde, der ihm im Alphabet folgt. Sobald sie dies erkannt haben, ist es einfach, den Rest zu übersetzen und die ursprüngliche Nachricht zu lesen.

Das obige Beispiel war nur ein einfacher Code, aber wie Sie sehen, kann die Struktur einer Nachricht Angreifern Hinweise auf ihren Inhalt geben., Sicher, es war schwierig, die Nachricht nur anhand ihrer Struktur herauszufinden, und es dauerte einige fundierte Vermutungen, aber Sie müssen bedenken, dass Computer dies viel besser können als wir. Dies bedeutet, dass sie verwendet werden können, um weit komplexere Codes in einer viel kürzeren Zeit herauszufinden, basierend auf Hinweisen, die von der Struktur und anderen Elementen stammen.

Wenn die Struktur dazu führen kann, dass ein Code geknackt wird und der Inhalt einer Nachricht angezeigt wird, benötigen wir eine Möglichkeit, die Struktur auszublenden, um die Nachricht sicher zu halten. Das bringt uns zum Polstern.,

Wenn eine Nachricht aufgefüllt wird, werden randomisierte Daten hinzugefügt, um die ursprünglichen Formatierungshinweise auszublenden, die dazu führen können, dass eine verschlüsselte Nachricht unterbrochen wird. Mit RSA sind die Dinge etwas komplizierter, da ein verschlüsselter Schlüssel nicht die offensichtliche Formatierung eines Buchstabens aufweist, die uns in unserem obigen Beispiel Hinweise gegeben hat.

Trotzdem können Gegner eine Reihe von Angriffen nutzen, um die mathematischen Eigenschaften eines Codes zu nutzen und verschlüsselte Daten zu brechen. Aufgrund dieser Bedrohung verwenden Implementierungen von RSA Auffüllschemata wie OAEP, um zusätzliche Daten in die Nachricht einzubetten., Das Hinzufügen dieser Auffüllung, bevor die Nachricht verschlüsselt wird, macht RSA viel sicherer.

Signaturnachrichten

RSA kann mehr als nur zum Verschlüsseln von Daten verwendet werden. Seine Eigenschaften machen es auch zu einem nützlichen System, um zu bestätigen, dass eine Nachricht von der Entität gesendet wurde, die behauptet, sie gesendet zu haben, und um zu beweisen, dass eine Nachricht nicht geändert oder manipuliert wurde.,

Wenn jemand die Authentizität seiner Nachricht nachweisen möchte, kann er einen Hash (eine Funktion, die Daten beliebiger Größe aufnimmt und in einen Wert fester Länge umwandelt) des Klartexts berechnen und dann mit seinem privaten Schlüssel signieren. Sie signieren den Hash, indem sie dieselbe Formel anwenden, die bei der Entschlüsselung verwendet wird (m = cd mod n). Sobald die Nachricht signiert wurde, senden sie diese digitale Signatur neben der Nachricht an den Empfänger.,

Erhält ein Empfänger eine Nachricht mit digitaler Signatur, kann er anhand der Signatur prüfen, ob die Nachricht authentisch mit dem privaten Schlüssel der Person signiert wurde, die behauptet, sie gesendet zu haben. Sie können auch sehen, ob die Nachricht von Angreifern geändert wurde, nachdem sie gesendet wurde.

Um die digitale Signatur zu überprüfen, verwendet der Empfänger zunächst dieselbe Hash-Funktion, um den Hash-Wert der empfangenen Nachricht zu ermitteln., Der Empfänger wendet dann den öffentlichen Schlüssel des Absenders mit der Verschlüsselungsformel (c = me mod n) auf die digitale Signatur an, um ihnen den Hash der digitalen Signatur zu geben.

Durch Vergleichen des Hash der Nachricht, die neben dem Hash von der verschlüsselten digitalen Signatur empfangen wurde, kann der Empfänger feststellen, ob die Nachricht authentisch ist. Wenn die beiden Werte gleich sind, wurde die Nachricht nicht geändert, da sie vom ursprünglichen Absender signiert wurde. Wenn die Nachricht sogar um ein einzelnes Zeichen geändert worden wäre, wäre der Hash-Wert völlig anders.,

RSA-Sicherheit & Angriffe

Wie die meisten Kryptosysteme hängt die Sicherheit von RSA davon ab, wie sie implementiert und verwendet wird. Ein wichtiger Faktor ist die Größe des Schlüssels. Je größer die Anzahl der Bits in einem Schlüssel ist (im Wesentlichen wie lange der Schlüssel ist), desto schwieriger ist es, Angriffe wie Brute-Forcing und Factoring zu durchbrechen.

Da asymmetrische Schlüsselalgorithmen wie RSA durch ganzzahlige Faktorisierung unterbrochen werden können, während symmetrische Schlüsselalgorithmen wie AES dies nicht können, müssen RSA-Schlüssel viel länger sein, um das gleiche Sicherheitsniveau zu erreichen.,

Derzeit ist die größte Schlüsselgröße, die berücksichtigt wurde, 768 Bit lang. Dies wurde von einem Team von Wissenschaftlern über einen Zeitraum von zwei Jahren mit Hunderten von Maschinen durchgeführt.

Da das Factoring Ende 2009 abgeschlossen wurde und die Rechenleistung seither deutlich gestiegen ist, kann davon ausgegangen werden, dass ein Versuch ähnlicher Intensität nun einen wesentlich größeren RSA-Schlüssel berücksichtigen könnte.

Trotzdem bringt die Zeit und die Ressourcen, die für diese Art von Angriff benötigt werden, es außerhalb der Reichweite der meisten Hacker und in das Reich der Nationalstaaten., Die beste Schlüssellänge hängt von Ihrem individuellen Bedrohungsmodell ab. Das National Institute of Standards and Technology empfiehlt eine Mindestschlüsselgröße von 2048 Bit, aber 4096-Bit-Schlüssel werden auch in einigen Situationen verwendet, in denen die Bedrohungsstufe höher ist.

Factoring ist nur eine Möglichkeit, dass RSA gebrochen werden kann. Eine Reihe anderer Angriffe haben das Potenzial, die Verschlüsselung mit einer geringeren Menge an Ressourcen zu brechen,aber diese hängen von der Implementierung und anderen Faktoren, nicht unbedingt RSA selbst. Einige davon sind:

Sind die Primzahlen wirklich zufällig?,

Einige Implementierungen von RSA verwenden schwache Zufallszahlengeneratoren, um die Primzahlen zu erhalten. Wenn diese Zahlen nicht ausreichend zufällig sind, ist es für Angreifer viel einfacher, sie zu berücksichtigen und die Verschlüsselung zu brechen. Dieses Problem kann durch die Verwendung eines kryptographisch sicheren Pseudozufallszahlengenerators vermieden werden.

Schlechte Schlüsselgenerierung

RSA-Schlüssel müssen in bestimmte Parameter fallen, damit sie sicher sind. Wenn die Primzahlen p und q zu nahe beieinander liegen, kann der Schlüssel leicht entdeckt werden. Ebenso darf die Zahl d, die einen Teil des privaten Schlüssels ausmacht, nicht zu klein sein., Ein niedriger Wert macht es einfach zu lösen. Es ist wichtig, dass diese Nummern ausreichend lang sind, um Ihren Schlüssel sicher zu halten.

Seitenkanalangriffe

Dies ist eine Art von Angriff, der RSA nicht direkt unterbricht, sondern Informationen aus seiner Implementierung verwendet, um Angreifern Hinweise auf den Verschlüsselungsprozess zu geben. Diese Angriffe können Dinge wie die Analyse der verwendeten Leistungsmenge oder die Analyse der Verzweigungsvorhersage umfassen, bei der Ausführungszeitmessungen verwendet werden, um den privaten Schlüssel zu ermitteln.

Eine andere Art von Seitenkanalangriff wird als Timing-Angriff bezeichnet., Wenn ein Angreifer die Möglichkeit hat, die Entschlüsselungszeit auf dem Computer seines Ziels für eine Reihe verschiedener verschlüsselter Nachrichten zu messen, können diese Informationen es dem Angreifer ermöglichen, den privaten Schlüssel des Ziels zu ermitteln.

Die meisten Implementierungen von RSA vermeiden diesen Angriff, indem sie während des Verschlüsselungsprozesses einen einmaligen Wert hinzufügen, wodurch diese Korrelation beseitigt wird. Dieser Vorgang wird als kryptografisches Blenden bezeichnet.

Ist die RSA-Verschlüsselung für die Zukunft sicher?

Die gute Nachricht ist, dass RSA trotz dieser möglichen Angriffe als sicher gilt., Der Nachteil ist, dass es korrekt implementiert werden muss und einen Schlüssel verwendet, der in die richtigen Parameter fällt. Wie wir gerade besprochen haben, können Implementierungen, die kein Padding verwenden, Primzahlen mit unzureichender Größe verwenden oder andere Schwachstellen aufweisen, nicht als sicher angesehen werden.

Wenn Sie die RSA-Verschlüsselung verwenden möchten, stellen Sie sicher, dass Sie einen Schlüssel mit mindestens 1024 Bit verwenden. Diejenigen mit höheren Bedrohungsmodellen sollten sich an Schlüssel mit 2048 oder 4096 Bit halten, wenn sie RSA vertraulich verwenden möchten., Solange Sie sich der Schwächen von RSA bewusst sind und sie korrekt verwenden, sollten Sie sich sicher fühlen, RSA für die Schlüsselfreigabe und andere ähnliche Aufgaben zu verwenden, für die eine Verschlüsselung mit öffentlichen Schlüsseln erforderlich ist.

Siehe auch: Allgemeine Verschlüsselungstypen erklärt

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.