• Keine Ergebnisse gefunden

Einsatz von Standardalgorithmen in der Kryptologie

N/A
N/A
Protected

Academic year: 2021

Aktie "Einsatz von Standardalgorithmen in der Kryptologie"

Copied!
22
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Das RSA-Verfahren -

Einsatz von Standardalgorithmen in der Kryptologie

2

Verschlüsseln durch modulares Rechnen

Zielsetzung: Am Beispiel kryptologischer Verfahren

„ Relevanz von Algorithmen erkennen

„ Bedeutung schneller Algorithmen erleben

„ Standardalgorithmen kennen lernen modulares

Addieren

Verschlüsselung mit öffentl. Schlüssel (d, m)

z → (z * d) % m

z → (z * e) % m

modulares Multiplizieren

Entschlüsselung mit privat. Schlüssel (e, m) Verschlüsselung mit

öffentl. Schlüssel (d, m) z → (z + d) % m

z → (z + e) % m Entschlüsselung mit privat. Schlüssel (e, m)

Verschlüsselung mit öffentl. Schlüssel (d, m)

z → (z ** d) % m

z → (z ** e) % m Entschlüsselung mit privat. Schlüssel (e, m)

modulares Potenzieren

(2)

3

Orientierung

Im folgenden soll das RSA-Verfahren genauer untersucht werden. Dabei sollen insbesondere die algorithmischen Grundlagen analysiert werden. Die mathematischen Aspekte werden kurz angesprochen, aber nicht weiter vertieft.

Die Vorgehensweise folgt einem Vorschlag von Witten und Schulz, der in den folgenden Artikeln beschrieben wird:

H. Witten, R.-H. Schulz: RSA & Co. in der Schule, Teil1. LOG IN 140 S. 45 ff.

H. Witten, R.-H. Schulz: RSA & Co. in der Schule, Teil2. LOG IN 143 S. 50 ff.

4

Verschlüsseln mit modularer Addition

(3)

5

Den Anfang macht Caesar

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

Schlüssel: D Quelltext:

SALVECAESAR

Geheimtext:

VDOYHFDHVDU PYLZFOWBNQCYBUVNCBLGYCH

YAYBYCGMWBLCZNYHNTCZYLN VDOYH FDHVDU

6

Caesar-Verfahren mit Zahlen

A →00 B → 01

...

Z → 25

A#S#T#E#R#I#X

00#18#19#04#17#08#23

(0 + 3) % 26 = 3 (18 + 3) % 26 = 21 ...

(23 + 3) % 26 = 0

00#18#19#04#17#08#23

03#21#22#07#20#11#00

(3 + 23) % 26 = 0 (21 + 23) % 26 = 18 ...

(0 + 23) % 26 = 23

03#21#22#07#20#11#00

00#18#19#04#17#08#23

A →00 B → 01

...

Z → 25

00#18#19#04#17#08#23

A#S#T#E#R#I#X

Codierung:

Umwandlung von Zeichen in Zahlen Verschlüsselung:

Verarbeitung von Zahlen

Entschlüsselung:

Verarbeitung von Zahlen

Decodierung:

Umwandlung von Zahlen in Zeichen

(4)

7

Modulares Rechnen - Addition

Uhrenaddition: (14 + 22) % 24 = 36 % 24 = 12

%: Rest bei der ganzzahligen Division

Bsp.: 12 % 4 = 0; 12 % 5 = 2; 12 % 17 = 12 Verschlüsselung:

Verarbeitung von Zahlen

(0 + 3) % 26 = 3 (18 + 3) % 26 = 21 ...

(23 + 3) % 26 = 0

00#18#19#04#17#08#23

03#21#22#07#20#11#00

Entschlüsselung:

Verarbeitung von Zahlen

(3 + 23) % 26 = 0 (21 + 23) % 26 = 18 ...

(0 + 23) % 26 = 23

03#21#22#07#20#11#00

00#18#19#04#17#08#23

„Es ist jetzt 14 Uhr. In 22 Stunden gibt es wieder

Mittagessen.“ 14 + 22 = 12

8

Caesar-Variationen

Codierung:

Umwandlung von Zeichen in Zahlen

A →01 B → 02

...

Z → 26

A#S#T#E#R#I#X

01#19#20#05#18#09#24

Verschlüsselung:

Verarbeitung von Zahlen (d, m) = (9, 30)

(1 + 9) % 30 = 10 (19 + 9) % 30 = 28 ...

(24 + 9) % 30 = 3

01#19#20#05#18#09#24

10#28#01#16#29#20#03

Entschlüsselung:

Verarbeitung von Zahlen (e, m) = (21, 30)

(10 + 21) % 30 = 1 (28 + 21) % 30 = 19 ...

(3 + 21) % 30 = 24

10#28#01#16#29#20#03

01#19#20#05#18#09#24

Decodierung:

Umwandlung von Zahlen in Zeichen

A →01 B → 02

...

Z → 26

01#19#20#05#18#09#24

A#S#T#E#R#I#X

(5)

9

Caesar-Variationen

Codierung:

Code: A →1 Blocklänge: 2

AA →0101 AB → 0102

...

ZZ → 2626

AS#TE#RI#X

0119#2005#1809#24

Verschlüsselung:

öffentlicher Schlüssel (d, m) = (2102, 3000)

(119 + 2102) % 3000

= 2221

(2005 + 2102) % 3000

= 1107 ...

0119#2005#1809#24

2221#1107#911#2126

Entschlüsselung:

privater Schlüssel (e, m) = (898, 3000)

(2221 + 898) % 3000

= 119

(1107 + 898) % 3000

= 2005 ...

2221#1107#911#2126

0119#2005#1809#24

Decodierung:

Code: A →1 Blocklänge: 2

AA →0101 AB → 0102

...

ZZ → 2626

0119#2005#1809#24

AS#TE#RI#X

10

Aufgabe

Codierung:

Code: A →1 Blocklänge: 2

DO#MS#PE#YE#R

Verschlüsselung:

öffentlicher Schlüssel (d, m) = (567, 2911) Entschlüsselung:

privater Schlüssel (e, m) = (2344, 2911) Decodierung

Code: A →1 Blocklänge: 2

AA →0101 AB → 0102

...

ZZ → 2626

AA →0101 AB → 0102

...

ZZ → 2626

(6)

11

Aufgabe

Codierung:

Code: A →1 Blocklänge: 1 Verschlüsselung:

öffentlicher Schlüssel (d, m) = (99, 411) Entschlüsselung:

privater Schlüssel (e, m) =

103#114#112#107#114#105

Decodierung Code: A →1 Blocklänge: 2

A →01 B → 02

...

Z → 26

A →01 B → 02

...

Z → 26

12

Additives Chiffrierverfahren

Codierung:

Code: A →1 Blocklänge: 2

AA →0101 AB → 0102

...

ZZ → 2626

AS#TE#RI#X

0119#2005#1809#24

Verschlüsselung:

öffentlicher Schlüssel (d, m) = (2102, 3000)

z → (z + d) % m 0119#2005#1809#24

2221#1107#1010#2126

Entschlüsselung:

privater Schlüssel (e, m) = (898, 3000)

z → (z + e) % m 2221#1107#1010#2126

0119#2005#1809#24

Decodierung:

Code: A →1 Blocklänge: 2

AA →0101 AB → 0102

...

ZZ → 2626

0119#2005#1809#24

AS#TE#RI#X Bed.: z < m

m > maxCode

Bed.:

(d + e) % m = 0

(7)

13

Additives Chiffrierverfahren

Codierung:

Code: A →1 Blocklänge: 2

b →z AS#TE#RI#X

0119#2005#1809#24

Verschlüsselung:

öffentlicher Schlüssel (d, m) = (2102, 3000)

z → (z + d) % m 0119#2005#1809#24

2221#1107#1010#2126

Entschlüsselung:

privater Schlüssel (e, m) = (898, 3000)

z → (z + e) % m 2221#1107#1010#2126

0119#2005#1809#24

Decodierung Code: A →1 Blocklänge: 2

0119#2005#1809#24

AS#TE#RI#X eindeutige Codierung

von Zeichenblöcken

Bed.: z < m m > maxCode

Bed.:

(d + e) % m = 0

z →b Decodierung als Um- kehrung der Codierung

14

Additives Chiffrierverfahren

Korrektheit:

Die Entschlüsselung macht die Verschlüsselung rückgängig:

z → (z + d) % m → ((z + d) % m + e) % m = (z + (d + e) % m) % m = z % m = z

Verschlüsselung:

öffentlicher Schlüssel (d, m) = (2102, 3000)

z → (z + d) % m 0119#2005#1809#24

2221#1107#1010#2126

Entschlüsselung:

privater Schlüssel (e, m) = (898, 3000)

z → (z + e) % m 2221#1107#1010#2126

0119#2005#1809#24

Sicherheit:

Das "additive" Chiffrierverfahren ist nicht sicher, da man aus dem öffentlichen Schlüssel sofort den privaten Schlüssel bestimmen kann.

Bed.: m ist größer als die maximale Codezahl

Bed.:

d + e = m

(8)

15

Prinzip von Kerckhoff

Vgl. A. Beutelspacher: Kryptologie. Vieweg 1996

Das Prinzip wurde erstmals formuliert im Buch "La cryptographie militaire" von Jean Guillaume Hubert Victor Francois Alexandre Auguste Kerckhoffs van Nieuwenhof (1835 bis 1903).

Die Sicherheit eines Kryptosystems darf nicht von der Geheimhaltung des Algorithmus abhängen. Die Sicherheit darf sich nur auf die Geheimhaltung des Schlüssels gründen.

Sicherheit:

Das "additive" Chiffrierverfahren erfüllt nicht das Prinzip von Kerckhoff.

16

Verschlüsseln mit modularer Multiplikation

(9)

17

Multiplikatives Chiffrierverfahren

Codierung:

Code: A →1 Blocklänge: 1

b →z A#S#T#E#R#I#X

01#19#20#05#18#09#24

Verschlüsselung:

öffentlicher Schlüssel (d, m) = (7, 30)

z → (z * d) % m 01#19#20#05#18#09#24

07#13#20#05#06#03#18

Entschlüsselung:

privater Schlüssel (e, m) = (13, 30)

z → (z * e) % m 07#13#20#05#06#03#18

01#19#20#05#18#09#24

Decodierung Code: A →1 Blocklänge: 1

01#19#20#05#18#09#24

A#S#T#E#R#I#X eindeutige Codierung

von Zeichenblöcken

Bed.:

z < m

Bed.:

(d * e) % m = 1

z →b Decodierung als Um- kehrung der Codierung

18

Aufgabe

Codierung:

Code: A →1 Blocklänge: 1

b →z C#A#E#S#A#R

Verschlüsselung:

öffentlicher Schlüssel (d, m) = (7, 30)

z → (z * d) % m

Entschlüsselung:

privater Schlüssel (e, m) = (13, 30)

z → (z * e) % m

Decodierung Code: A →1 Blocklänge: 1

eindeutige Codierung von Zeichenblöcken

Bed.:

z < m

Bed.:

(d * e) % m = 1

z →b Decodierung als Um- kehrung der Codierung

(10)

19

Aufgabe

Codierung:

Code: A →1 Blocklänge: 1

b →z

Verschlüsselung:

öffentlicher Schlüssel (d, m) = (12, 35)

z → (z * d) % m

Entschlüsselung:

privater Schlüssel (e, m) =

z → (z * e) % m 9#36#15#5#8#3#20#14#3

Decodierung Code: A →1 Blocklänge: 1

eindeutige Codierung von Zeichenblöcken

Bed.:

z < m

Bed.:

(d * e) % m = 1

z →b Decodierung als Um- kehrung der Codierung

20

Modulares Inverses

Zwei Zahlen a, b heißen modular inverszueinander bzgl. des Moduls m genau dann, wenn gilt: (a * b) % m = 1.

Verschlüsselung:

öffentlicher Schlüssel (d, m) = (7, 30)

z → (z * d) % m 01#19#20#05#18#09#24

07#13#20#05#06#03#18

Entschlüsselung:

privater Schlüssel (e, m) = (13, 30)

z → (z * e) % m 07#13#20#05#06#03#18

01#19#20#05#18#09#24 Bed.:

z < m; ggT(d, m) = 1

Bed.:

(d * e) % m = 1

Bsp.: (7 * 13) % 30 = 1. Also: 13 ist das modulare Inverse zu 7 bzgl. des Moduls m = 30.

Beachte: Wenn a und m teilerfremd sind, dann existiert das modulare Inverse von a bzgl. m.

Das multiplikative Chiffrierverfahren funktioniert nur, wenn man zwei Zahlen d und e findet mit (d * e) % m = 1.

(11)

21

Aufgabe

Untersuchen Sie, zu welchen der folgenden Zahlen d es ein modulares Inverses e bzgl. des Moduls 12 gibt:

d = 2 d = 3 d = 4 d = 5 d = 6 d = 7 d = 8 d = 9 d = 10 d = 11

22

Korrektheit

Korrektheit:

Die Entschlüsselung macht die Verschlüsselung rückgängig:

z → (z * d) % m → ([(z * d) % m] * e) % m = (z * [(d * e) % m]) % m = (z * 1) % m = z

Verschlüsselung:

öffentlicher Schlüssel (d, m) = (7, 30)

z → (z * d) % m 01#19#20#05#18#09#24

07#13#20#05#06#03#18

Entschlüsselung:

privater Schlüssel (e, m) = (13, 30)

z → (z * e) % m 07#13#20#05#06#03#18

01#19#20#05#18#09#24 Bed.:

z < m; ggT(d, m) = 1

Bed.:

(d * e) % m = 1

Beispiel:

Verschlüsseln: 9 → (9 * 7) % 30

Entschlüsseln: (9 * 7) % 30 → ([(9 * 7) % 30] * 13) % 30 = [(9 * 7) * 13)] % 30 = [9 * (7

* 13)] % 30 = (9 * [(7 * 13) % 30]) % 30 = (9 * 1) % 30 = 9

(12)

23

Aufgabe

Der Korrektheitsnachweis nutzt einige Regeln zum Rechnen mit modularer Multiplikation aus, u. a.:

(a % m) * (b % m) = ((a % m) * b) % m = (a * b) % m

24

Sicherheit

Verschlüsselung:

öffentlicher Schlüssel (d, m) = (7, 30)

z → (z * d) % m 01#19#20#05#18#09#24

07#13#20#05#06#03#18

Entschlüsselung:

privater Schlüssel (e, m) = (13, 30)

z → (z * e) % m 07#13#20#05#06#03#18

01#19#20#05#18#09#24 Bed.:

z < m; ggT(d, m) = 1

Bed.:

(d * e) % m = 1

Sicherheit:

Die Sicherheit des multiplikativen Chiffrierverfahrens hängt davon ab, ob man zur Zahl d aus dem öffentlichen Schlüssel das modulare Inverse e bzgl. m bestimmen kann.

(13)

25

Bestimmung des modularen Inversen

Ein naiver Ansatz besteht darin, der Reihe nach alle Zahlen

durchzuprobieren, bis man das gewünschte Ergebnis gefunden hat.

def modInvNaiv(d, m):

gefunden = False e = 1

while not gefunden:

if (d*e)%m == 1:

gefunden = True else:

e = e + 1 return e

26

Praktisch unbrauchbarer Algorithmus

Beispiel:

d = 49

m = 1000010000100001000010000100001000010000100001000010000 modInvNaiv(d, m)

Um 10 000 000 (= 107) Zahlen durchzuprobieren, benötigt ein Rechner derzeit etwas 10s.

Da das erwartete Ergebnis

775517959261225265313877628572204089387832653836742449

eine 54-stellige Zahl ist, wird der Rechner eine Zeit benötigen, die in der Größenordnung von 1047s liegt. Dies sind mehr als 1039Jahre. Bedenkt man, dass das Universum ein Alter von etwa 1010Jahre hat, dann zeigt sich, wie ungeeignet das naive Vorgehen ist.

Für größere Zahlen ist der naive Algorithmus unbrauchbar. Für die unten gezeigten Zahlen benötigt ein Rechner länger, als das Universum alt ist.

(14)

27

Bestimmung des modularen Inversen

Mit Hilfe der Ausgaben des erweiterten euklidischen Algorithmus lässt sich das modulare Inverse bestimmen:

Beispiel 1: modInv(41, 192)

Beachte: ggT(41, 192) = 1. Das modulare Inverse von 41 bzgl. 192 kann bestimmt werden.

Der Algorithmus von Bachet liefert zu den Eingaben (41, 192) die Ausgabe (1, 89, -19).

Also: 1 = 89*41 + (-19)*192

Also: (89*41) % 192 = (1 - (-19)*192) % 192 = (1 + 19*192) % 192 = 1 Also: modInv(41, 192) = 89

Beispiel 2: modInv(17, 192)

Beachte: ggT(17, 192) = 1. Das modulare Inverse von 17 bzgl. 192 kann bestimmt werden.

Der Algorithmus von Bachet liefert zu den Eingaben (17, 192) die Ausgabe (1, -79, 7).

Also: 1 = (-79)*17 + 7*192

Also: 1 + 192*17 = (-79+192)*17 + 7*192 Also: 1 + 192*17 - 7*192 = 113*17

Also: (113*17) % 192 = (1 + 10*192) % 192 = 1 Also: modInv(17, 192) = 113

Beispiel 3: modInv(320, 884)

Beachte: ggT(320, 884) = 4 > 1. Es gibt kein modulares Inverses von 320 bzg. 884.

28

Sicherheit

Verschlüsselung:

öffentlicher Schlüssel (d, m) = (7, 30)

z → (z * d) % m 01#19#20#05#18#09#24

07#13#20#05#06#03#18

Entschlüsselung:

privater Schlüssel (e, m) = (13, 30)

z → (z * e) % m 07#13#20#05#06#03#18

01#19#20#05#18#09#24 Bed.:

z < m; ggT(d, m) = 1

Bed.:

(d * e) % m = 1

Sicherheit:

Das "multiplikative" Chiffrierverfahren ist nicht sicher, da man aus dem öffentlichen Schlüssel mit Hilfe des erweiterten euklidischen Algorithmus den privaten Schlüssel recht schnell bestimmen kann.

(15)

29

Sicherheit

Sicherheit:

Das "multiplikative" Chiffrierverfahren ist nicht sicher, da man aus dem öffentlichen Schlüssel mit Hilfe des erweiterten euklidischen Algorithmus den privaten Schlüssel recht schnell bestimmen kann.

Die "Unsicherheit" basiert hier also darauf, dass man ein schnelles Verfahren gefunden hat, um das modulare Inverse einer Zahl zu bestimmen.

30

Verschlüsseln mit modularem Potenzieren

(16)

31

Verschlüsseln d. modulares Rechnen

modulares Addieren

Verschlüsselung mit öffentl.

Schlüssel (d, m) z → (z * d) % m

z → (z * e) % m

modulares Multiplizieren

Entschlüsselung mit privat.

Schlüssel (e, m) Verschlüsselung mit öffentl.

Schlüssel (d, m) z → (z + d) % m

z → (z + e) % m Entschlüsselung mit privat.

Schlüssel (e, m)

Verschlüsselung mit öffentl.

Schlüssel (d, m) z → (z ** d) % m

z → (z ** e) % m Entschlüsselung mit privat.

Schlüssel (e, m)

modulares Potenzieren

32

Verschlüsseln d. modulares Potenzieren

Codierung:

Code: A →1 Blocklänge: 1

b →z A#S#T#E#R#I#X

01#19#20#05#18#09#24

Verschlüsselung:

öffentlicher Schlüssel (d, m) = (13, 77)

z → (z ** d) % m 01#19#20#05#18#09#24

01#61#69#26#46#58#52

Entschlüsselung:

privater Schlüssel (e, m) = (37, 77)

z → (z ** e) % m 01#61#69#26#46#58#52

01#19#20#05#18#09#24

Decodierung Code: A →1 Blocklänge: 1

01#19#20#05#18#09#24

A#S#T#E#R#I#X eindeutige Codierung

von Zeichenblöcken

Bed.:

z < m

Bed.:

(d * e) % φ(m) = 1

z →b Decodierung als Um- kehrung der Codierung

(17)

33

Schlüsselerzeugung

Vorbereitung:

Wähle zwei verschiedene Primzahlen p und q.

Berechne m = p*q.

Berechne φ(m) = (p-1)*(q-1).

Wähle eine Zahl d, die teilerfremd zu φ(m) ist.

Berechne e so, dass (d*e) % φ(m) = 1 ist.

("Vernichte p, q, φ(m).") Schlüssel:

Der öffentliche Schlüssel ist (d, m).

Der private Schlüssel ist (e, m).

Beispiel:

p = 7; q = 11 m = 77 φ(m) = 60 z. B. d = 13 e = 37

(13, 77) (37, 77)

34

Aufgabe

Codierung:

Code: A →1 Blocklänge: 1

b →z A#S#T#E#R#I#X

01#19#20#05#18#09#24

Verschlüsselung:

öffentlicher Schlüssel (d, m) = (13, 77)

z → (z ** d) % m 01#19#20#05#18#09#24

Entschlüsselung:

privater Schlüssel (e, m) = (37, 77)

z → (z ** e) % m

Decodierung Code: A →1 Blocklänge: 1

eindeutige Codierung von Zeichenblöcken

Bed.:

z < m

Bed.:

(d * e) % φ(m) = 1

z →b Decodierung als Um- kehrung der Codierung

(18)

35

Aufgabe

Codierung:

Code: A →1 Blocklänge: 1

b →z

Verschlüsselung:

öffentlicher Schlüssel (d, m) = (7, 55)

z → (z ** d) % m

Entschlüsselung:

privater Schlüssel (e, m) =

z → (z ** e) % m 28#25#02#25#04#07

Decodierung Code: A →1 Blocklänge: 1

eindeutige Codierung von Zeichenblöcken

Bed.:

z < m

Bed.:

(d * e) % φ(m) = 1

z →b Decodierung als Um- kehrung der Codierung

36

Korrektheit des RSA-Verfahrens

Behauptung:

Seien (d, m) und (e, m) ein öffentlicher und privater Schlüssel zum RSA- Verfahren. Sei z eine natürliche Zahl mit z < m. Dann gilt:

(zd% m)e% m = z Verschlüsselung:

öffentlicher Schlüssel (d, m) = (13, 77)

z → (z ** d) % m 01#19#20#05#18#09#24

01#61#69#26#46#58#52

Entschlüsselung:

privater Schlüssel (e, m) = (37, 77)

z → (z ** e) % m 01#61#69#26#46#58#52

01#19#20#05#18#09#24 Bed.:

z < m

Bed.:

(d * e) % φ(m) = 1

(19)

37

Korrektheit des RSA-Verfahrens

Beweis:

Nach den Vorgaben zur Schlüsselerzeugung gilt:

m = p⋅q; ϕ(m) = (p-1)⋅(q-1); (d⋅e) % ϕ(m) = 1.

Da (d⋅e) % ϕ(m) = 1, gibt es eine natürliche Zahl k mit d⋅e = k⋅ϕ(m) + 1.

Nach dem Satz (s. u.) gilt dann (zk⋅ϕ(m) + 1) % m = z.

Hiermit folgt jetzt:

(zd% m)e% m = (zd)e% m = (zd⋅e) % m = (zk⋅ϕ(m) + 1) % m = z Behauptung:

Seien (d, m) und (e, m) ein öffentlicher und privater Schlüssel zum RSA- Verfahren. Sei z eine natürliche Zahl mit z < m. Dann gilt:

(zd% m)e% m = z

Satz

Seien p und q Primzahlen. Dann gilt für alle natürlichen Zahlen z und alle natürlichen Zahlen k: zk(p-1)(q-1)+1% (pq) = z

38

Sicherheit des RSA-Verfahrens

Bedingung:

Die Sicherheit hängt davon ab, ob man in angemessener Zeit den Bestand- teil m des öffentlichen Schlüssels in seine Primfaktoren zerlegen kann.

Vorbereitung:

Wähle zwei verschiedene Primzahlen p und q.

Berechne m = p*q.

Berechne φ(m) = (p-1)*(q-1).

Wähle eine Zahl d, die teilerfremd zu φ(m) ist.

Berechne e so, dass (d*e) % φ(m) = 1 ist.

("Vernichte p, q, φ(m).") Schlüssel:

Der öffentliche Schlüssel ist (d, m).

Der private Schlüssel ist (e, m).

Beispiel:

p = 7; q = 11 m = 77 φ(m) = 60 z. B. d = 13 e = 37

(13, 77) (37, 77)

(20)

39

Sicherheit des RSA-Verfahrens

Sicherheit:

Bis heute gibt es keine schnellen Algorithmen, um eine Zahl in ihre Primfaktoren zu zerlegen. Das RSA-Verfahren ist bei groß gewählten Primzahlen recht sicher, da man aus dem öffentlichen Schlüssel den privaten Schlüssel bisher nicht in angemessener Zeit bestimmen kann.

40

Aufgabe

Gibt es eigentlich genug Primzahlen in der gewünschten Größenordnung?

Untersuchen Sie, wie viele Primzahlen es bis zu einer gegebenen Zahl x gibt.

(21)

41

Informationen

Gibt es genug Primzahlen in der gewünschten Größenordnung?

Für eine gegebene Zahl x gibt es ungefähr x/ln(x) Primzahlen, die kleiner als x sind.

Man wählt heute Primzahlen, die mit mindestens 512 Bit dargestellt werden. Das sind Zahlen in der Größenordnung 2512. Da 2512/ln(2512) etwa die Größenordnung 2500hat (das ist eine Zahl mit 150 Dezimalstellen), sollten genügend Primzahlen für die Verschlüsselung zur Verfügung stehen.

Wie bestimmt man große Primzahlen?

Zur Bestimmung großer Primzahlen geht man wie folgt vor. Man erzeugt eine Zufallszahl im gewünschten Größenbereich und testet, ob es sich um eine Primzahl handelt. Solche Primzahltests kann man sehr schnell mit geeigneten Verfahren durchführen. Da es sehr viele Primzahlen im gewünschten Bereich gibt (s. o.), muss man nicht in der Regel allzu viele Zahlen testen.

42

Fazit

Algorithmen spielen bei der Entwicklung von Chiffriersystemen eine große Rolle.

Im Fall des RSA-Verfahrens benötigt man einerseits gute Algorithmen, um das Verfahren überhaupt effizient durchführen zu können (z. B. schnell ein modulares Inverses bestimmen; schnell eine modulare Potenz bestimmen).

Andererseits ist das Verfahren so angelegt, dass bestimmte Operation mit den bisher bekannten Algorithmen mit vertretbarem Rechenaufwand nicht durchgeführt werden können.

(22)

43

Literaturhinweise

Folgende Materialien wurden hier benutzt:

H. Witten, R.-H. Schulz: RSA & Co. in der Schule, Teil1. LOG IN 140 S. 45 ff H. Witten, R.-H. Schulz: RSA & Co. in der Schule, Teil2. LOG IN 143 S. 50 ff K. Merkert: http://www.hsg-kl.de/faecher/inf/krypto/rsa/index.php

Referenzen

ÄHNLICHE DOKUMENTE

obald die alten Datenautobahnen, die Du ja ab so- fort nicht mehr bewusst benutzt, auch von Deinem Unterbewusstsein nicht mehr benutzt werden, wer- den die alten,

Im Europäischen Parlament gehöre ich als Mitglied dem Aus- schuss für Beschäftigung und so- ziale Angelegenheiten (EMPL) so- wie als stellvertretendes Mitglied dem Ausschuss

Das Neujahrskon- zert in Zusammenarbeit mit der Stadt Königstein und gefördert von der Taunus Sparkasse, ist seit einigen Jahren ein Publi- kumsmagnet nicht nur für

Im Seminar geht es um Selbstverantwor- tung, verbale und nonverbale Kom- munikation, Respekt und Wertschät- zung für die eigene Person, die Kollegen und Patienten – genau

Die digitale Schließanlage der TU Graz bietet die Möglichkeit, Bediensteten und Studierenden sehr flexibel Zutritt zu Gebäuden und einzelnen räumen zu geben. Nach mehreren Jahren

Diese unter ESPRIT ge- förderten Projekte waren aber nur der Beginn der ESSI-Initiative (European System and Soft- ware Initiative), deren Ziel es ist, den Bedarfan neuen Methoden

Für dieses Jahr wünsche ich uns allen Gesundheit, gute Geschäfte und bald wieder viele sorgenfreie Kontakte mit Freunden und der Familie.. Für DIE PTA IN DER APOTHEKE wird es

Aus „sozialer“ wird „emo- tionale“ Intelligenz Damals stellten Edward Lee Thorn- dike und David Wechsler, zwei US-amerikanische Psycholo- gen, eine These auf: Selbst der