Der kleine Fermat und die Schlüssel
| |
"Mathematik hinter den Public-Key-Verfahren." |
|
Public- und Private Key's
Public - Key - Verfahren werden u. a. bei der Verschlüsselung und bei der Erzeugung digitaler Signaturen eingesetzt.
-
Bei der Verschlüsselung mit öffentlichen Schlüssel, wird eine Nachricht
mittels eines offen gelegten Verfahrens und mit einem öffentlich, für jeden
verfügbaren Schlüssel des Empfängers chiffriert und mit einem nur dem
Empfänger bekannten geheimen Schlüssel dechiffriert.
-
Bei der digitalen Signatur wird aus einer Nachricht zunächst eine Art
"Quersumme" ermittelt.
Dieser Wert wird mit dem geheimen Schlüsssel des Nachrichtenerstellers verschlüsselt.
Die Nachricht wird zusammen mit der verschlüsselten "Quersumme" weitergegeben.Um die Echtheit der Nachricht zu prüfen, ermittelt der Empfänger selbst die "Quersumme" aus der Nachricht und entschlüssselt die mitgelieferte "Quersumme" des Senders mit dem öffentlichen Schlüssel des Senders.
Stimmen die übermittelte Quersumme und die berechnete überein, so geht man von einer unverfälschten und authentischen Nachricht aus.Die Algorithmen zur Berechnung der "Quersumme" heißen Hash-Algorithmen und sind dann geeignet zur digitalen Unterschrift, wenn es praktisch unmöglich ist "rückwarts" aus dem Hash-Wert eine passende Nachricht zu finden.
Einige Verfahren
Das wohl bekannteste Public-Key-Verfahren ist das RSA-Verfahren, welches Ronald L. Rivest, Adi Shamir und Leonard M. A dlman 1977 veröffentlicht haben, und welches seinen Namen aus den Anfangsbuchstaben der Professoren vom MIT erhalten hat.
Ein jüngeres Verfahren mit öffentlichen Schlüssel ist der DIGITAL S IGNATURE STANDARD (DSS), welches das National Institute of Standards and Technology im U.S. DEPARTMENT OF COMMERCE 1994 veröffentlicht hat.(FIPS PUB 186, FEDERAL INFORMATION PROCESSING STANDARDS PUBLICATION)
Sowohl der RSA-Algorithmus, als auch DSS finden neben anderen Verfahren ihren Einsatz bei
- Der digitalen Unterschrift (MD5 - RFC1321) bzw.(SHA-224/256/384/512 - RFC6234) bzw.(DSS - fips186)
- Der Authentifizierung von Clients und Server im Internet
- Dem verschlüsselten Hypertextprotokoll HTTPS, dem Secure Socket Layer (SSL)
- und viele weitere Verfahren
- z.B. PGP,
einem Verschlüsselungsprogramm,das im nicht kommerziellen Bereich weit verbreitet,als Freeware und mit Source-Code verfügbar ist und dieses trotz massiver Widerstände (oder gerade aus diesem Grund) seitens der Behörden in USA.
Das Prinzip der Falltürfunktionen
Damit diese Art "öffentlicher Verschlüsselung", bei der im Prinzip davon ausgegangen wird, daß jeder die verschlüsselte Nachricht mitlesen kann und das Verschlüsselungsverfahren samt öffentlichen Schlüssel des Empfängers kennt, einerseits praktikabel und andererseit sicher ist, müssen die Chiffrierfunktion einfach und schnell, ihre Umkehrung schwierig und langwierig sein.
Solche Funktionen haben den Spitznamen Falltürfunktionen.
Die zentrale Falltürfunktion bei der Verschlüsselung mit öffentlichen Schlüssel, die hier näher betrachtet wird, beruht auf der Multiplikation großer Zahlen, für welche schnelle Algorithmen bekannt sind.
Die Berechnung des geheimen Schlüssels aus den öffentlich bekannten Werten erfordert jedoch eine Primfaktorzerlegung, für welche bis heute jedoch keine "schnellen Algorithmen" bekannt sind!
Die nachfolgende Beschränkung der Multiplikation auf endliche Zahlenräume, d.h. auf Zahlen mit einer maximalen Anzahl von Bit's, hat u.a. einen mathematischen Hintergrund.
Innerhalb der Verschlüsselung mit öffentlichen Schlüssel spielt die Potenzierung und anschließende Bildung von Resten bei der ganzzahligen Division eine hervorragende Rolle.
Schluck!???
Keine Panik, mit ganzen Zahlen rechnen ist für viele lange her aber sicher nicht vergessen.
Betrachten wir als Beispiel die Zahlen 0,1,2,3,...,14 und definieren für diese Zahlen eine Multiplikation, welche zunächst wie die gewohnte Multiplikation das Produkt bildet aber dann, wenn das Ergebnis größer als 14 ist, wird durch 15 ganzzahlig geteilt und der entstehende Rest als Ergebnis genommen:
Beispiele:
2 * 11 = 22 | 22 = 1 * 15 Rest | 7 |
5 * 7 = 35 | 35 = 2 * 15 Rest | 5 |
7 * 11 = 77 | 77 = 5 * 15 Rest | 2 |
d.h.
2 * 11 mod (15) = 7
5 * 7 mod (15) = 5
7 * 11 mod (15) = 2
Zwei kleine Beispiele mit öffentlichen Schlüssel
1.Verschlüsselungsbeispiel:
Nehmen wir an, daß der öffentliche Schlüssel von Frank 11 und
Wenn nun Werner die Zahl 2 verschlüsselt per mail an Frank senden
möchte,
so muß er die Zahl 2 mit dem öffentlichen Schlüssel 11 von Frank
potenzieren und
den Rest bei der ganzzahligen Division durch 15 an Frank senden.
Heraus kommt:
D.h. Werner übermittelt Frank die Zahl 8 und den "Modulus" 15.
Zum Dechiffrieren potenziert Frank die Zahl 8 mit seinem geheimen Schlüssel
3 und erhält
2.Signierbeispiel:
Sicher überflüssig zu erwähnen, dennoch dient die
Verwendung der Quersumme als Hashfunktion im nachfolgenden Beispiel
natürlich ebenso, wie die verwendeten kleinen Zahlen nur der Demonstration!
Frank möchte die "Nachricht" 121
unterzeichnen und bildet zunächst den Hashwert der Nachricht:
Dann wird Werner mit dem öffentlichen Schlüssel 11 von Frank den
mitgelieferten Hashcode dechiffrieren:
(Hierbei sind sowohl der verschlüsselte, als auch der unverschlüsselte Wert
zufällig gleich 4 .)
Stimmen diese Zahlen, wie in diesem Fall, überein, geht man davon aus ,daß
die Nachricht unverfälscht ist,
und vom Besitzer des zum öffentlichen Schlüssel gehörigen geheimen Schlüssel
erstellt wurde.
Wieso klappt dies?
Eine Zahl mod(15) potenzieren mit dem öffentlichen Schlüssel des
Empfängers und anschließend das Ergebnis wieder mod(15) potenzieren, diesmal
mit dem geheimen Schlüssel des Empfängers ergibt, zumindest in den
Beispielen, wieder die Ausgangszahl!!
Was steckt dahinter?
rechnen wir zunächt einmal nicht mit den Resten beim Teilen durch 15, also
mod(15),
Wenn man jetzt mit den besagten Resten beim Teilen durch 15 rechnet, so
ergibt sich,
n 8 mod (15) =1
2 113 mod (15) = 2 bzw.
4 311 mod (15) = 4 gilt.
sein geheimer Schlüssel 3 sei und alle Rechnungen Modulo 15 durchgeführt
werden.
211 mod (15) =2048 mod (15)=8, da 2048/15 =136 Rest 8.
8*8*8=512 oder mit der Verabredung alles Modulo 15 zu rechnen:
also erhält Frank wieder die ursprüngliche Zahl 2.
8 3mod(15) = 512 mod(15) = 2, da 512/15 = 34 Rest 2
Beispiel für eine "echte" Hashfunktion im Umfeld der
Nachrichtenautentifizierung ist z.B. der oben aufgeführte Secure Hash Algorithmus, unter
dem Namen
SHA beschrieben in RFC6234
Hash = 1+2+1 = 4
Diesen Wert 4 unterschreibt er, indem er ihn mit
seinem geheimen Schlüssel 3 verschlüsselt.
Die Nachricht, der chiffrierte Hashwert der Nachricht und der Modulus
wird als "unterzeichnetes Dokument" versendet.
Um die Nachricht zu überprüfen, wird Werner zunächst selbst aus der Nachricht
den Hashwert ermitteln:
Hashwert
verschlüsselt
Nachricht,Unterschrift,Modul
Frank: 4 ->
43mod(15)= 64 mod(15) = 4 ->
121 , 4 , 15
1+2+1 = 4
411 mod(15)=4194304 mod(15) =4
eigener Hashwert
entschlüsselter Hashwert
Ergebnis
1 + 2 + 1 = 4
411mod(15)= 4194304 mod(15) = 4 ->
identisch
sondern normal:
(2 11) 3 =
2 33 =
2*(2) 32 =
2*(2 8 ) 4
(4 3) 11 =
4 33 =
4*(4 32 ) =
4*(4 8) 4
2 8 mod (15) = 256 mod (15) = 17*15 + 1 mod(15) = 1 und
falls nur n und 15 teilerfremd sind!
4 8 mod (15) = 65536 mod (15) = 4369*15 + 1 mod (15) = 1
allgemein
und damit =>
m=3 | (1,2) | als Primzahl hat 3 keine echten Teiler |
m=5 | (1,2,3,4) | auch 5 hat als Primzahl keine echten Teiler |
m=6 | (1,5) | 2 und 3 teilen 6, 4 hat mit 6 den Teiler 2 also bleiben 1 und 5 |
m=15 | (1,2,4,7,8,11,13,14) | 3,5 sind Teiler, 6,9 und 12 haben 3 als Teiler, 10 die 5 |
Jeder Zahl m kann man so die Anzahl zu m teilerfremden kleineren Zahlen zuordnen.
Diese Zuordnung ist eine besondere zahlentheoretische Funktion und wird als
Eulersche phi-Funktion bezeichnet.
- phi(3) = Anzahl(1,2) = 2
- phi(5) = Anzahl(1,2,3,4) = 4
- phi(6) = Anzahl(1,5) = 2
- phi(15)= Anzahl(1,2,4,7,8,11,13,14) = 8
Berechnen läßt sich die phi-Funktion wegen der beiden folgenden Eigenschaften:
Da Primzahlen per Definition keine echten Teiler haben gilt für sie:
-
phi(p) = p-1
also phi(7)=6, phi(17)=16 u.s.w.
Weiter gilt unter bestimmten Voraussetzung an zwei Zahlen p und q
zum Beispiel dann, wenn p und q unterschiedliche Primzahlen sind:
-
phi(p*q) = phi(p) * phi(q)
womit sich dann phi(m) für solche Primzahlprodukte ausrechnen läßt,
indem man m in seine zwei Primfaktoren zerlegt.
Nach diesen Vorbemerkungen läßt sich nun der zentrale Satz formulieren, der die mathematische Basis des hier betrachteten Public-Key-Verfahrens darstellt.
Er sagt aus , daß bei der Modulo-Multiplikation bestimmte Potenzen immer wieder die 1 ergeben, woraus folgt, daß man durch Potenzieren (chiffrieren) und anschließendem nochmaligen Potenzieren (dechiffrieren) wieder bei der ursprünglichen Zahl ankommt.
Der Satz von Euler-Fermat:
Sind a und m teilerfremd und
bezeichnet phi(m) die Eulersche Funktion von m,
so gilt:
aphi(m) mod(m) = 1
mit den Zahlen in den obigen Beispielen
aphi(15)mod(15)=a8mod(15) = 1
Mathematisch Interessierte finden hier weitere Informationen.
Nach diesen Ausführungen sind zur Erzeugung eines Public - Key - Schlüsselpaares folgende Schritte durchzuführen:
- Suche zwei Primzahlen p und q
- m = p*q wird der Modul
- Berechne n = phi(m) = phi(p*q) = phi(p)*phi(q)=(p-1)*(q-1)
- Suche damit zwei Zahlen e und d (e für encrypt und d für decrypt)
mit e*d mod(n) = 1
In unserem Beispiel sind
- p = 3, q=5 und
m = 3*5 = 15 und
n = phi(m) = phi(15) = phi(3*5)=phi(3)*phi(5)=8
- e*d mod(8) =1 oder
e * d =1 oder =9 oder =17 oder =25 oder =33 oder =41 oder allgemein 1+k*8
In diesem Beispiel sieht man, daß es durchaus mehrere Schlüsselpaare bei gegebenem p und q geben kann:
-
3 * 3 = 9 oder 5 * 5 = 25 oder 3 * 11 = 33 usw.
Große Primzahlen
In unserem Beispiel könnte Werner mit Franks öffentlichen Schlüssels 11 und des mitgegeben Moduls 15 zurückrechnen:
- Primfaktorzerlegung von 15 ergibt 3 * 5
- Die Eulersche Funktion ergibt (3-1)*(5-1) = 8
- der geheime Schlüssel von Frank ist ein ganzzahliger Wert von:
(1+k*8)/11 für k=1,2,3...
und mit k=4 wäre (1+4*8)/11=3 der geheime Schlüssel von Frank gefunden!
Damit dies nicht funktioniert, werden für p und q sehr große Primzahlen benötigt, da zur Primfaktorzerlegung keine schnellen Verfahren bekannt sind.
Die Bestimmung von Primzahlen beschäftigte bereits 275 - 194 vor Christus den griechischen Mathematiker Eratosthenens von Cyrene (heute Shahhat in Lybien), dessen Algorithmus ,
"Das Sieb des Eratostenes",
bei einer gegebenen Zahl p die Primzahleigenschaft prüft, indem ausgeschlossen wird, daß keine der bereits erkannten kleineren Primzahlen als Teiler von p vorkommt.
Ist die Primzahl sehr groß, 100 und mehr Stellen, so sind die zur Zerlegung benötigten Rechenoperationen praktisch nicht in angemessener Zeit durchführbar.
Gott sei Dank!
Darin liegt das Prinzip der Falltürfunktion.
Wie sollen aber nun zwei große Primzahlen p und q gefunden werden, wenn zum Nachweis der Primzahleigenschaft die Faktorzerlegung ebenfalls nicht in angemessener Zeit erfolgen kann?
Zur Verschlüsselung werden heute große Zahlen bereits als Primzahlen
angenommen,
wenn es sich "mit hoher Wahrscheinlichkeit" um solche handelt?!?
D.h. Primzahlen werden mit einer Art "Restrisiko" ermittelt:
Ausgehend von einer großen Zahl, wird zunächst mit kleinen Primzahlen
geprüft, ob diese Teiler sind.
Ist dies nicht der Fall, so unterstellt man, daß es sich um eine Primzahl
handelt und es muß der kleine Satz von Fermat gelten.
Gilt dieser Satz für hinreichend viele Zahlen a, dann unterstellt man, daß es
sich um eine Primzahl handelt.
Dies sei an zwei weiteren Beispielen mit etwas gößeren Zahlen erläutert:
6273 ist mit der Quersumme 18 durch 3 teilbar
also keine Primzahl. Also versuchen wir es mit der nächsten Zahl.
6274 muß man nicht betrachten, da sie durch 2 teilbat ist. Also zur nächsten
Zahl
6275 ist durch 5 teilbar.
6276 ist durch 2 teilbar.
6277 könnte eine Primzahl sein.
Also unterstellen wir, daß es sich um eine Primzahl handelt.
Nach dem kleinen Satz von Fermat gilt dann mit phi(p)=p-1
- ap-1 mod p = 1
probieren Sie mit dem Modulo - Potenzrechner z.B.
- 2 6276 mod(6277)
es ergibt 1.
versuchen Sie es mit anderen Basiszahlen a z.B. 3,5,7,11,...
Alle ergeben 1, so daß wir davon ausgehen, daß es sich um eine Primzahl handelt.(Wobei bei solch kleinen Zahlen natürlich auch der "Beweis" über die Anwendung des Siebes von Eratostens möglich ist.)
nächstes Beispiel:
7917 ist wieder durch 3 teilbar (Quersumme 24)
7919 scheint wieder eine Primzahl zu sein.
Die Prüfung mit dem Modulo Potenzierer scheint dies zu bestätigen.
Bei großen Zahlen erfordert es nun den Mut der Verzweiflung oder den Glauben daran, daß wenn das Rad immer bergab lief, daß es dann auch weiter bergab läuft, um auf Basis dieser vermeindlichen Primzahl schützenswerte Infos zu verschlüsseln.
Lassen Sie sich nicht durch diese Betrachtungen verunsichern -
jeder Mensch weiß, daß unter bestimmten Umständen das Rad wirklich
bergab läuft und daß mit der in der Mathematik verwendeten deduktiven
Denkmethode viele Sachverhalte hergeleitet werden können aber andererseits
auch viele Dinge zwischen Himmel und Erde nicht mit dieser Methode
"erklärt" werden können.
- 6277*7919=49707563 wird der Modul und
- privater und öffentlicher Schlüssel müssen als Faktoren von
k*(6277-1)*(7919-1)+1=k*49693369=49693369,99386737,149080105,198773473 ...
gesucht werden. - d.h. gesucht sind öffentlicher Schlüssel e (encrypt) und geheimer Schlüssel d (decrypt) mit
- e*d=1 mod (6276*7918) = 1 mod (49693368)
Gibt es zu einer Zahl e eine inverse Zahl d mod(m), so kann man sie mittels einer Erweiterung des Euklidschen Algorithus berechnen.
Lassen Sie dazu den Kryptorechner solche Schlüsselpaare suchen, die Sie anschließend mit dem Modulo-Potenzierer auf verifizieren können:
Wählen Sie dazu im Teil erweiterter Euklid für
u1=49693368
u2=7090 (oder einen beliebigen anderen Wert)
Die Option "Versuche nächste 10"
und klicken Sie berechnen.
In der zweiten Spalte erscheint nach einiger Zeit der inverse Wert 784669
zu der Zahl u2=7093, welche zwischenzeitlich vom Kryptorechner ausprobiert wurde.
Ergebnis: (784669,7093) ist ein Schlüsselpaar zum Modulus 49707563
Mittels des Krypto-Potenzierers, läßt sich dies verifizieren.
z.B. b=131, p=784669, m=49707563 ergibt 131pmod(m) = 31990944
b=31990944, p=7093 m=49707563 ergibt 319909447093 mod(m)=131
Größenordnung praktisch verwendbarer Primzahlen
Um eine Vorstellung von der Größe praktisch verwendbarer Schlüssel zu bekommen werden nachfolgend die Zahlen p,q,m,e und d für ein vom Programm PGP erzeugtes Schlüsselpaar für 384 Bit Länge gezeigt:
p=
55797555556840524954
22475270998881006433
215475718477923499
q=
58128867332863922506
27669916229067559634
788016912599321027
m=
32434487044616870241
86145051830701599441
26670505128653187770
49835923261496307427
98409485230669980174
5967076248113473
d=
16217243522308435120
93072525915350799720
63335252564326593828
28596817145525780688
91945381217906686687
1237222585434491
e=17
Diese "untere Grenze" einsatzfähiger Schlüssel zeigt, daß
die Berechnungen bei den meisten Programmiersprachen oder
Rechenprogrammen nicht mit den Basis - Datentypen durchgeführt
werden kann.
Ausnahme bildet z.B. die Programmiersprache JAVA, die neben der Klasse BigInteger, welche beliebig lange Integerzahlen u.a. mit Modulo - Aritmetik abhandeln kann, auch Algorithmen zur Verschlüsselung beinhaltet.
Erweiterter Euklidscher Algorithmus
Wie im Abschnitt Kochrezept gezeigt , sind der öffentliche Schlüssel e und der geheime Schlüssel d zueinander invers bezüglich der Multiplikation modulo (phi(m)):
- e * d mod (phi(m)) = 1
D.H. wenn p und q gewählt sind und damit der Modulus m=p*q und auch phi(p*q)=(p-1)*(q-1) feststeht, benötigt man ein Verfahren, das zu einem vorgegebenen e ein d berechnet, mit e * d mod(phi(p*q))=1
Mittels des nachfolgend beschrieben erweiterten Euklid'schen Algorithmus kann zu einem gegebenen e ein inverses d berechnet werden.
Zunächst jedoch zur berühmten Vorstufe dieses Verfahrens, dem
Euklid'schen Algorithmus
Der Euklid'sche Algorithmus berechnet den größten gemeinsamen Teiler zweier positiver
ganzen Zahlen.
Dieser Algorithmus ist einer der ältesten, nicht trivialen Algorithmen,
die bis heute überlebt haben.
Eine Form des Algorithmus wurde 300 vor Christus in Euklid's Buch
über die Elemente veröffentlicht.
Beispiel 1:
- 120 durch 35 gleich 3 Rest 15
- 35 durch 15 gleich 2 Rest 5
- 15 durch 5 gleich 3 Rest 0
ggT (u = 120 , v =35)
Beispiel 2:
- 63 durch 8 gleich 7 Rest 7
- 8 durch 7 gleich 1 Rest 1
ggT (u = 63 , v = 8)
Euklid'scher Algorithmus:
- Pro Iteration wird im 1. Schritt berechnet, wie oft das kleinere Element v
ganzzahlig in das größere Element u paßt. - Falls kein Rest bleibt, hat man den größten gemeinsamen Teiler mit dem Divisor gefunden. ( 5 im 1. Beispiel 3. Iterationsschritt des Verfahrens)
-
Ansonsten tritt im 2. Schritt der Divisor v an die Stelle von u
und der ganzzahlige Rest tritt an die Stelle von v. - Es folgt die nächste Iteration mit Schritt 1
Der erweiterte Euklid'scher Algorithmus:
Neben diesen Schritten werden im erweiterten Algorithmus
weitere Hilfsfelder berechnet:
1 | 0 | 120 | q |
0 | 1 | 35 | |
1 | -3 | 15 | 3 |
-2 | 7 | 5 | 2 |
0 | 0 | 0 | 3 |
in der 4. Spalte jeweils der ganzzahlige Quotient q der Werte aus der 3. Spalte vorletzte Zeile durch letzte Zeile:
- q = 120 % 35 = 3
Die ersten beiden Zeilen sind vorgegeben, mit den konstanten
1 und 0 Werten,
sowie den beiden Zahlen (im Beispiel 120 und 35)
Um eine neue Zeile zu berechnen, wird zunächst q, wie beschrieben als ganzzahliger Quotient der vorletzten und letzten Zeile, Spalte 3, berechnet.
in den ersten 3 Spalten der neuen Zeile i
kommt dann jeweils der Wert
-
x(i) = x(i - 2) - q * x(i - 1)
also der Wert aus der vorletzten Zeile vermindert um den mit q multiplizierten Wert der letzen Zeile.
1 | 0 | 63 | q |
0 | 1 | 8 | |
1 | -7 | 7 | 7 |
-1 | 8 | 1 | 1 |
0 | 0 | 0 | 0 |
Wählt man nun für die erste Zahl den Modul (Beispiel 8) und für die zweite
e (Beispiel 11),
so ergibt sich ein Inverses zu e modulo in der 2. Spalte dann,
wenn der erweiterte Euklid'sche Algorithmus in der 3. Spalte
mit 1 endet:
1 | 0 | 8 | q |
0 | 1 | 11 | |
1 | 0 | 8 | 0 |
-1 | 1 | 3 | 1 |
3 | -2 | 2 | 2 |
-4 | 3 | 1 |
Krypto - Rechner
Obwohl schon an mehreren Stellen dieses Praktikums darauf verwiesen wurde möchte ich an dieser Stelle noch einmal ganz deutlich herausstellen:
-
Die Anzahl der Dezimalstellen von Modulus und geheimen Schlüssel
muß in der Größenordnung von ein-/ bis mehreren hundert Stellen
liegen, damit nicht durch systematisches "durchprobieren" (brute force) aller
Möglichkeiten der Schlüssel mittels schneller Rechner
innerhalb von Minuten bis Tagen "geknackt" werden kann!!!
Die hier im Kryptorechner verwendete Arithmetik von Java-Skript läßt
weniger als 10 Dezimalstellen zu,
ist also nur zu Demozwecken verwendbar!!!!!!!!!!!!!
Wesentlicher Bestandteil der in der Praxis verwendbaren "Cryptoprogramme" sind die Implemtationen der Grundrechenarten und Modulo-Rechenalgorithmen mit beliebig großen Zahlen!.
Nun zum Krypto-Rechner, der nur dazu da ist, die Beispielrechnungen durchzuführen:
-
der erweiterte Euklid berechnet je nach Eingabe den ggT
zweier Zahlen
oder sucht ein inverses Element zu einem gegebenen Modulo.Dazu ist als erste Zahl der Modul, als zweite Zahl e einzugeben.
Falls die Option "nur rechnen" eingestellt ist wird versucht
ein Inverses zu e zu finden.
Ansonsten wird e erhöht und die Suche n-fach zyklisch fortgesetzt
bis ein entsprechendes Element gefunden ist oder die Schleife
abgebrochen wird.Wird ein Inverses Element gefunden, so wird es in den Modulo - Multiplizierer eingetragen, um nachzuweisen, daß das Produkt eins ergibt.
-
Der Mod - Potenzierer dient einerseits dazu die Beispiele
nachzuvollziehen.
(d.h. modulo-potenzieren mit e und anschließenden modulo-potenzieren mit d führt wieder zur Ausgangszahl).Andererseits kann der Fermat'sche Primzahltest, mit den Primzahlen bis 19 als Basis durchgeführt werden (Ergebnis 1 oder ungleich 1)
oder die nächste Zahl gesucht werden, die diese Bedingung erfüllt.Auch hier ist eine wichtige Anmerkung gerechtfertigt:
-
Wenn für eine Zahl pp nachgewiesen wird, daß
app-1 mod(pp)= 1 für bestimmte a gilt,also dasselbe Ergebnis liefert, wie eine Primzahl nach dem kleinen Satz von Fermat,
so steht damit nach deduktiven Denkmethoden, wie sie
in der Mathematik verwendet werden, nicht fest, daß
es sich wirklich um eine Primzahl handelt.Hier wird eher eine z.B. in den Naturwissenschaften eingesetzte
induktive Schlußweise verwendet,
die einfach unterstellt, daß wenn alles für eine Primzahl
spricht und kein Gegenbeweis existiert, dann verhält es
sich so, als wäre es eine Primzahl.
Versuchen Sie die Inverse zu 17 aus dem Beispiel mit m = 6277*7919 = 49707563
{2er Potenzen sind schnell berechenbar->((((x2)2)2)2)*x } zum Modulus (p-1)*(q-1) auszurechnen,
indem Sie den Modulus(6277-1)*(7919-1)=49693368 in Zelle (1,3) links neben dem Text Eingabe u1
und die 17 in Zelle (2,3), links neben dem Text Eingabe u2
eingeben und mit der Option "Versuche nächste 10" den Berechne-Button
betätigen.
Der gefundene Inverse Wert zu 17 ist dann z.B. 29231393 und erscheint in Zelle (5,2)
im Falle einer Eingabe von 3 in Zelle (2,3) erscheint als zueinander invers die Inverse 29816021 in Zelle (5,2)
und anstatt der eingegebenen 3 die 5 in Zeile (2,3) als Inverse
Beachten Sie, dass die beiden Inversen als p und q mit m aus (1,3) gleichzeitig
zur Überprü,fung in den Modulo Multiplizieren eingetragen werden.Erweiterter Euklid Mod-Potenzierer Modulo-Multiplizierer
>Download Weli's Gnupg-Public-Key-Fingerprint 0xE94FB19A33A9FE6E<
-----BEGIN PGP PUBLIC KEY BLOCK----- xsBNBFHf+vwBCAC5Fq0Xz5YLnAJydirFi105X1Ph/zwOQSxbIY6mN5QSadn9tG7K MqLEGauKYsmX5PLbwbu/bQKn8tuFhP787Ou0xdSVH8Mlj7OTnNYGAO+Nhh8ulJj5 rEMhUDx8FD5GDWJy4kvoDdSu2GZwRqnwZsgVOi1I1RUCng7kL3Ufq3FLaLGxIn0i fC7iaZWwDTBFqgqFzIRQ/aho5NYYawshULZKgylXjwi4X1GAwrW5+SRnSPkwBVmQ e+2Rk/HBC4+DBewjLO8HU3gboKVOC/bCXwcg/nI7sm0uHYZHJe7bW3YjIipmGhMf KthmaZ5Gk0jzTUCO7ExzkhDr2oWpWNOYmSaRABEBAAE= =twL9 -----END PGP PUBLIC KEY BLOCK-----