Kryptographie und Zugriffskontrolle - Asmmetrische Verfahren: Unterschied zwischen den Versionen

Aus FernFH MediaWiki
Zur Navigation springen Zur Suche springen
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 21: Zeile 21:


<div id="table: 9">
<div id="table: 9">
{|
 
{| style="border-collapse: collapse;" border="1"
|+ Diffie-Hellman Schlüsselaustausch anhand eines Beispiels
|+ Diffie-Hellman Schlüsselaustausch anhand eines Beispiels
|
|
Zeile 131: Zeile 132:
Nachdem das Konzept zu asymmetrischen Verfahren von Whitfield Diffie und Martin Hellman beziehungsweise Ralph Merkle veröffentlicht wurde, wurde RSA als erstes Verfahren dazu entwickelt. Es wurde von Ronald Rivest, Adi Shamir und Leonard Adleman im Jahr 1978 publiziert. RSA ist mittlerweile defacto Standard und weit verbreitet.
Nachdem das Konzept zu asymmetrischen Verfahren von Whitfield Diffie und Martin Hellman beziehungsweise Ralph Merkle veröffentlicht wurde, wurde RSA als erstes Verfahren dazu entwickelt. Es wurde von Ronald Rivest, Adi Shamir und Leonard Adleman im Jahr 1978 publiziert. RSA ist mittlerweile defacto Standard und weit verbreitet.


RSA basiert auf dem Faktorisierungsproblem <ref>die Zerlegung einer Zahl in ihre Primfaktoren</ref>  großer natürlicher Zahlen. Es gilt als mathematisch sehr schwierig das Produkt zweier Primzahlen zu faktorisieren. Genau diese Tatsache macht man sich bei RSA zum Vorteil. Ein solches Problem wird auch als '''Einweg-Funktion mit Falltür''' oder '''Falltür-Funktion''' bezeichnet (engl. '''Trapdoor One Way Function'''). Um die Funktionsweise von RSA zu verstehen werden folgende mathematische Grundlagen benötigt:
RSA basiert auf dem Faktorisierungsproblem <ref>die Zerlegung einer Zahl in ihre Primfaktoren</ref>  großer natürlicher Zahlen. Es gilt als mathematisch sehr schwierig das Produkt zweier Primzahlen zu faktorisieren. Genau diese Tatsache macht man sich bei RSA zum Vorteil. Ein solches Problem wird auch als '''Einweg-Funktion mit Falltür''' oder '''Falltür-Funktion''' bezeichnet (engl. '''Trapdoor One Way Function'''). Um die Funktionsweise von RSA zu verstehen werden folgende mathematische Grundlagen benötigt:


* Der Modulo Operator beziehungsweise das Rechnen mit Restklassen.
* Der Modulo Operator beziehungsweise das Rechnen mit Restklassen.
Zeile 146: Zeile 147:
<p><math display="inline">n</math> wird auch als RSA-Modul bezeichnet. In der Praxis verwendet man natürlich möglichst große und unterschiedliche Primzahlen.</p></li>
<p><math display="inline">n</math> wird auch als RSA-Modul bezeichnet. In der Praxis verwendet man natürlich möglichst große und unterschiedliche Primzahlen.</p></li>
<li><p>Alice berechnet für <math display="inline">n</math> die Eulersche <math display="inline">\varphi</math> - Funktion mit der Formel:</p>
<li><p>Alice berechnet für <math display="inline">n</math> die Eulersche <math display="inline">\varphi</math> - Funktion mit der Formel:</p>
<math display="block">\varphi(n) = m = (p-1) * (q-1)</math><math display="block">m = (5-1) * (13-1) = 48</math></li>
<math display="block">\varphi(n) = m = (p-1) * (q-1)</math><math display="block">m = (5-1) * (13-1) = 48</math></li>
<li><p>Alice sucht sich nun eine zu <math display="inline">m</math> teilerfremde Zahl <ref></ref></p>
<li><p>Alice sucht sich nun eine zu <math display="inline">m</math> teilerfremde Zahl</p>
<p>Daher der größte gemeinsame Teiler ist 1</p>a aus, welche größer als 1 ist, daher <math display="inline">1< a < m</math>. <math display="inline">a</math> wird auch als Verschlüsselungsexponent bezeichnet. In diesem Beispiel wählt Alice <math display="inline">a = 7</math></li>
<p>Daher der größte gemeinsame Teiler ist 1</p>a aus, welche größer als 1 ist, daher <math display="inline">1< a < m</math>. <math display="inline">a</math> wird auch als Verschlüsselungsexponent bezeichnet. In diesem Beispiel wählt Alice <math display="inline">a = 7</math></li>
<li><p>Die Zahlen <math display="inline">n = 65</math> und <math display="inline">a = 7</math> stellen den öffentlichen Schlüssel von Alice dar. Diese kann sie nun Bob zur Verfügung stellen.</p></li>
<li><p>Die Zahlen <math display="inline">n = 65</math> und <math display="inline">a = 7</math> stellen den öffentlichen Schlüssel von Alice dar. Diese kann sie nun Bob zur Verfügung stellen.</p></li>
Zeile 156: Zeile 156:
<li><p>Bob sendet seinen ciphertext <math display="inline">y = 59</math> an Alice.</p></li>
<li><p>Bob sendet seinen ciphertext <math display="inline">y = 59</math> an Alice.</p></li>
<li><p>Alice berechnet mit Hilfe des erweiterten euklidischen Algorithmus das modulare Inverse, die Zahl <math display="inline">b</math>:</p>
<li><p>Alice berechnet mit Hilfe des erweiterten euklidischen Algorithmus das modulare Inverse, die Zahl <math display="inline">b</math>:</p>
<math display="block">b = a^{-1} \mod m</math><math display="block">b = 7^{-1} \mod 48</math><math display="block">b= 7</math></li>
<math display="block">b = a^{-1} \mod m</math><math display="block">b = 7^{-1} \mod 48</math><math display="block">b= 7</math></li>
<li><p>Nun kann Alice die Nachricht von Bob mit dem Satz von Euler entschlüsseln:</p>
<li><p>Nun kann Alice die Nachricht von Bob mit dem Satz von Euler entschlüsseln:</p>
<math display="block">x = y^b \mod n</math><math display="block">x = 59^7 \mod 65</math><math display="block">x = 19</math></li>
<math display="block">x = y^b \mod n</math><math display="block">x = 59^7 \mod 65</math><math display="block">x = 19</math></li>
</ol>
</ol>
Zeile 177: Zeile 175:
[[Datei:Kurve.png|300px|none|thumb|graphische Darstellung der elliptischen Kurve y2 = x3 + 17]]
[[Datei:Kurve.png|300px|none|thumb|graphische Darstellung der elliptischen Kurve y2 = x3 + 17]]


Eine elliptische Kurve ist ein Menge an Punkten die eine spezielle mathematische Funktion erfüllen. Über diese Punkte lässt sich eine additive zyklische Gruppe bilden  <ref>wie über die Gruppe der Restklassen</ref> . Innerhalb dieser Gruppe gelten bestimmte Rechenregeln. Die Verfahren aus dem diskreten Logarithmus lassen sich auf die Punkte einer elliptischen Kurve übertragen. Hier ist die nicht umkehrbare Funktion allerdings die Division eines Punktes.
Eine elliptische Kurve ist ein Menge an Punkten die eine spezielle mathematische Funktion erfüllen. Über diese Punkte lässt sich eine additive zyklische Gruppe bilden  <ref>wie über die Gruppe der Restklassen</ref> . Innerhalb dieser Gruppe gelten bestimmte Rechenregeln. Die Verfahren aus dem diskreten Logarithmus lassen sich auf die Punkte einer elliptischen Kurve übertragen. Hier ist die nicht umkehrbare Funktion allerdings die Division eines Punktes.


Bei wesentlich kürzeren Operanden und Schlüsseln bietet ECC die gleiche Sicherheit wie bei Verfahren welche auf dem diskreten Logarithmus oder RSA beruhen . Als Vergleich, ein Verfahren mit 1024 bis 3072-Bit basierend auf dem diskreten Logarithmus oder RSA ist äquivalent mit ECC von 160 bis 256-Bit.[[Datei:SHA-properties.png|300px|none|thumb|Vergleich des rechnerischen Aufwands von ECC, symmetrischen und asymmetrischen Verfahren aus [17]]]
Bei wesentlich kürzeren Operanden und Schlüsseln bietet ECC die gleiche Sicherheit wie bei Verfahren welche auf dem diskreten Logarithmus oder RSA beruhen . Als Vergleich, ein Verfahren mit 1024 bis 3072-Bit basierend auf dem diskreten Logarithmus oder RSA ist äquivalent mit ECC von 160 bis 256-Bit.[[Datei:SHA-properties.png|300px|none|thumb|Vergleich des rechnerischen Aufwands von ECC, symmetrischen und asymmetrischen Verfahren aus [17]]]

Aktuelle Version vom 28. September 2022, 10:28 Uhr

Asymmetrische Verfahren

Mitte der 1970er Jahre hatten Whitfield Diffie und Martin Hellman sowie Ralph Merkle unabhängig voneinander die Idee eines asymmetrischen Verfahrens beziehungsweise Public Key Systems . Das Prinzip beruht darauf, dass jeder Kommunikationspartner ein eigenes Schlüsselpaar besitzt, welches sich aus einem privaten und einem öffentlichen Schlüssel zusammensetzt. Der öffentliche Schlüssel kann natürlich öffentlich zugänglich gemacht werden. Der Plaintext wird vom Sender mit dem öffentlich zugänglichen Schlüssel des Empfängers verschlüsselt. Nur der Empfänger selbst ist mit seinem privaten Schlüssel in der Lage den Ciphertext wieder zu entschlüsseln. Die wesentlichen Vorteile und Nachteile von asymmetrischen Verfahren sind :

  • Es ist kein aufwendiger Schlüsselaustausch über unsichere Kanäle notwendig. Der öffentliche Schlüssel ist ohnehin nicht geheim. Es muss nur sichergestellt werden, dass der öffentliche Schlüssel auch nur jenem zuzuordnen ist, der auch im Besitz des privaten Schlüssels ist. Siehe dazu auch Kapitel [PGP].
  • Bei einem symmetrischen Verfahren musste mit jedem Kommunikationspartner ein eigener Schlüssel vereinbart beziehungsweise ausgetauscht werden. Mittels eines Public Key Verfahrens müssen keine geheimen Schlüssel verwaltet werden. Es ist ausreichend den öffentlichen Schlüssel des Kommunikationspartners zu kennen.
  • Asymmetrische Verfahren bieten eine relativ hohe Stufe der Sicherheit. Sie basieren auf einer sogenannten Falltür-Funktion. Diese sind in angemessener Zeit nicht invertierbar, außer man kennt den geheimen Schlüssel. Da es allerdings keinen mathematischen Beweis für Falltür-Funktionen gibt, wäre es aber in der Zukunft theoretisch möglich, dass ein schnelles Verfahren gefunden wird, welches eine Umkehrung ermöglicht.
  • Durch die Funktionsweise mit privaten und öffentlichen Schlüsseln bieten diese Verfahren auch die Möglichkeit für digitale Unterschriften beziehungsweise Signaturen, siehe dazu Kapitel [certificates].
  • Asymmetrische Verfahren sind durch den hohen Aufwand beim Ver- beziehungsweise Entschlüsseln im Gegensatz zu symmetrischen Verfahren sehr langsam. In der Praxis wird daher oft ein hybrider Ansatz gewählt. Der Schlüsselaustausch erfolgt asymmetrisch, die weitere Kommunikation wird symmetrisch verschlüsselt.

Diffie-Hellman Schlüsselaustausch

Der Diffie-Hellman Schlüsselaustausch (DH) (engl. Diffie Hellman Key Exchange, DHKE) ist ein Protokoll zum Austausch beziehungsweise zur Vereinbarung eines Secret Keys. Das Protokoll adressiert das Problem von symmetrischen Verfahren, dass zuerst ein gemeinsamer Schlüssel ausgetauscht werden muss, siehe Kapitel [symmetrischeVerfahren]. Mit dem DH - Verfahren ist es möglich einen Secret Key zwischen zwei Kommunikationspartnern über einen unsicheren Kanal hinweg auszutauschen. Das Verfahren wurde von 1976 von Diffie und Hellman veröffentlicht. Da auch Ralph Merkle Vorarbeit geleistet hat, wird es auch manchmal als Diffie-Hellman-Merkle Schlüsselaustausch (DHM) bezeichnet

Funktionsweise:
Der Diffie-Hellman Schlüsselaustausch verwendet eine Einweg-Funktion (ohne Falltür), welche auf dem diskreter Exponentialfunktion basiert. Für eine Umkehrung ist der diskrete Logarithmus notwendig, der dieses Problem allerdings nicht in polynomialer Laufzeit (und damit schnell genug) lösen könnte. Die Funktionsweise wird anhand eines Beispiels in Tabelle 1.1 erläutert.

Diffie-Hellman Schlüsselaustausch anhand eines Beispiels


Alice und Bob haben gemeinsames Wissen über eine Primzahl



und eine natürliche Zahl , wobei ist






Alice Bob




1. Alice sucht sich eine geheime Bob sucht sich eine geheime


zufällige Zahl aus:

zufällige Zahl aus:




2. Alice berechnet A: Bob berechnet B:






3. Alice übermittelt an Bob Bob übermittelt an Alice




4. Alice berechnet den secret key: Bob berechnet den secret key:




RSA-Verfahren

Nachdem das Konzept zu asymmetrischen Verfahren von Whitfield Diffie und Martin Hellman beziehungsweise Ralph Merkle veröffentlicht wurde, wurde RSA als erstes Verfahren dazu entwickelt. Es wurde von Ronald Rivest, Adi Shamir und Leonard Adleman im Jahr 1978 publiziert. RSA ist mittlerweile defacto Standard und weit verbreitet.

RSA basiert auf dem Faktorisierungsproblem [1] großer natürlicher Zahlen. Es gilt als mathematisch sehr schwierig das Produkt zweier Primzahlen zu faktorisieren. Genau diese Tatsache macht man sich bei RSA zum Vorteil. Ein solches Problem wird auch als Einweg-Funktion mit Falltür oder Falltür-Funktion bezeichnet (engl. Trapdoor One Way Function). Um die Funktionsweise von RSA zu verstehen werden folgende mathematische Grundlagen benötigt:

  • Der Modulo Operator beziehungsweise das Rechnen mit Restklassen.
  • Die Eulersche - Funktion einer Zahl , welche angibt wie viele natürliche es gibt die kleiner als und teilerfremd zu sind.
  • Der Satz von Euler - Fermat, welcher besagt, dass

Funktionsweise:
Die Funktionsweise wird anhand eines Beispiels mit kleinen Zahlen erklärt. Angenommen Bob will Alice eine Nachricht zukommen lassen, wird bei RSA vereinfacht wie folgt vorgegangen:

  1. Alice wählt zwei Primzahlen und aus und ermittelt deren Produkt :

    Angenommen Alice wählt für und für aus, dann ist:

    wird auch als RSA-Modul bezeichnet. In der Praxis verwendet man natürlich möglichst große und unterschiedliche Primzahlen.

  2. Alice berechnet für die Eulersche - Funktion mit der Formel:

  3. Alice sucht sich nun eine zu teilerfremde Zahl

    Daher der größte gemeinsame Teiler ist 1

    a aus, welche größer als 1 ist, daher . wird auch als Verschlüsselungsexponent bezeichnet. In diesem Beispiel wählt Alice
  4. Die Zahlen und stellen den öffentlichen Schlüssel von Alice dar. Diese kann sie nun Bob zur Verfügung stellen.

  5. Bob möchte nun eine Nachricht an Alice schicken. Seine Nachricht ist eine Zahl kleiner als , daher .

  6. Bob verschlüsselt seine Nachricht gemäß der Formel:

  7. Bob sendet seinen ciphertext an Alice.

  8. Alice berechnet mit Hilfe des erweiterten euklidischen Algorithmus das modulare Inverse, die Zahl :

  9. Nun kann Alice die Nachricht von Bob mit dem Satz von Euler entschlüsseln:

Kennt ein Angreifer nur den öffentlichen Schlüssel bestehend aus den Zahlen und , müsste dieser aus diesen zwei Zahlen den privaten Schlüssel errechnen. Das einzig bekannte Verfahren zurzeit ist die Primfaktorenzerlegung, mit welchem dies prinzipiell machbar wäre, allerdings nicht in angemessener Zeit. Zu beachten sind bei einer RSA Implementierung allerdings 2 Punkte:

  • die Wahl auf entsprechend große Primzahlen und .
  • und sollen möglichst weit auseinander liegen. Eine sequentielle Suche nach Primzahlen kann auch bei hohen Primzahlen starten und rückwärts laufen. Ein klassischer Ausgangspunkt ist . Je näher sich die Zahlen und sind, desto näher befinden sie sich auch bei und desto kürzer wäre eine systematische Suche nach Primzahlen.

In der Praxis sollte auch sichergestellt werden, dass nach Generierung des RSA Moduls, die Variablen welche und enthalten, gelöscht werden. Sie werden in der weiteren Berechnung nicht mehr benötigt.

Für RSA beziehungsweise auch andere Verschlüsselungs-Verfahren, welche auf mathematischen Falltür-Funktionen basieren, ist zu beachten, dass es theoretisch auch Gefahren gibt. Zum einen könnte ein Algorithmus entwickelt werden, der ohne große Mühen das Problem der verwendeten Falltür-Funktion löst. Zum anderen auch technische Aspekte, wie die Entwicklung von Quantencomputern, für welche diese mathematischen Probleme wahrscheinlich weniger Aufwand bedeuten.

Elliptic Curve Cryptography

Im Bereich der Primfaktorenzerlegung wurden bessere und schnellere Verfahren entwickelt und auch die Hardware wurde schneller. So wurde klar, dass nach alternativen Falltür-Funktionen gesucht werden musste, falls eines Tages eine effiziente Umkehrfunktion gefunden wird. Im Jahr 1985 wurden von Victor Miller und Neil Koblitz unabhängig voneinander Elliptische Kurven über endlichen Körpern vorgeschlagen.

graphische Darstellung der elliptischen Kurve y2 = x3 + 17

Eine elliptische Kurve ist ein Menge an Punkten die eine spezielle mathematische Funktion erfüllen. Über diese Punkte lässt sich eine additive zyklische Gruppe bilden [2] . Innerhalb dieser Gruppe gelten bestimmte Rechenregeln. Die Verfahren aus dem diskreten Logarithmus lassen sich auf die Punkte einer elliptischen Kurve übertragen. Hier ist die nicht umkehrbare Funktion allerdings die Division eines Punktes.

Bei wesentlich kürzeren Operanden und Schlüsseln bietet ECC die gleiche Sicherheit wie bei Verfahren welche auf dem diskreten Logarithmus oder RSA beruhen . Als Vergleich, ein Verfahren mit 1024 bis 3072-Bit basierend auf dem diskreten Logarithmus oder RSA ist äquivalent mit ECC von 160 bis 256-Bit.

Vergleich des rechnerischen Aufwands von ECC, symmetrischen und asymmetrischen Verfahren aus [17]
  1. die Zerlegung einer Zahl in ihre Primfaktoren
  2. wie über die Gruppe der Restklassen