[Chaos CD]
[HaBi 1]    Verschlüsseln auf Teufel komm raus.
[Gescannte Version] [ -- ] [ ++ ] [Suchen]  

 

Verschlüsseln auf Teufel komm raus.

Verschlüssein ist "in". Schliesslich soll und braucht nicht jeder Sysop privilegierter Benutzer Nachrichten (mit)zulesen, die nicht fuer ihn bestimmt sind.

Aber wie verschlüsselt man

a) mit wenig Aufwand
b) möglichst sicher
Von allen Verfahren, die es da so gibt, ist das RSA-System das beste. Es heisst so, weil die Leute, denen die diesbezügliche Erleuchtung kam, zufaellig Rivest-Shamir-Adleman heissen. Schlau, wie Mathematiker nun mal sind, fiel ihnen auf, dass man einen Text wie DAS IST JA ZUM KOTZEN in Ascii-Zeichen zerlegen kann und damit das bekommt, was Mathematiker am meisten lieben : Zahlen! (n e N 0" n,, = 255) 68 65 83 32 73 83 84 3 2 74 65 32 90 85 77 32 79 84 90 6b 78

Diese wurden dann in Gruppen a 6 Zeichen zusammengefasst: 686583 327383 843274 653290 857732 798490 697800

Der Key zum Verschlüsseln der Nachricht, n genannt, ist in der regel, um's schwerer zu machen, das Produkt zweier Primzahlen. Nimmt man 98415109 (das ist eine solche Zahl) als Key, kann man den o.a. Block zu verschlüsseln beginnen:
(686583 * 686583 * 686583) mod 98415109 - verschl. Cryptoblock
Um diesen Block wieder zu entschlüsseln, braucht man den entsprechenden Key. Man nennt ihn d, d fuer Decryption. Auch beim Entschlüsseln wird auf Teufel komm raus gerechnet:
Fuer n=98415109 ist d=63196467.
(verschlüsselter Cryptoblock ** 63196467) mod 98415109 = 686583

Wie auch Nichtmathematiker sofort erkennen, liegt der Clou der Geschichte in den beiden Zahlen n und d.
Diese stehen in folgendem Verhaeitnis zueinander:
n ist das Produkt zweier grosser Primzahlen p und q:
n = p * q
d wird bestimmt aus p und q:
d = (2 * (p-1) * (q-1) + 1) / 3

Obwohl n bekannt ist, bleiben ja p und q geheim. Ist n ausreichend gross (so 200 Ziffern), ist es quasi unmöglich, p und q zu bestimmen. An einem 300 Ziffern langen n soll angeblich der NASA-Rechner 600 Jahre zu knacken haben, wollte er p und q bestimmen.

In dem Beispiel oben war p=7151 und q=13259. Diese Primzahlen unterliegen weiteren Einschraenkungen, die man beachten muss, damit der RSA-Unsinn Iäuft:
1. Weder p-1 noch q-1 dürfen durch 3 ohne Rest teilbar sein.
2. Entweder p-1 oder q-1 muss ein g r o s s c r Primzahlfaktor sein.
3. Bei der Division p/q mueßen komplizierte Brüche entstehen, also nicht 2/3 oder 3/4 oder dgl.
Punkt 2 und 3 zu beachten, heisst ein qualltativ hochwertiges n zu finden, welches schwer zu entschlüsseln ist.

Nun zu den Programmen:

Programm 1 Verschlüsselung von Nachrichten
Programm 2 Entschlüsselung von Nachrichten
Programm 3 Bestimmung von n und d

10 DEFDBL C,M,N:DIM M(100):ZEICHENPROBLOCK=3

20 LINE INPUT"Name der Crypto-Ausgabedatei : ";AUS§

25 OPEN"O",l,AUS§

30 INPUT"Public-Key des Empfaengers (Testvoreistellung bei "RETURN = 94815109"; N

40 IF N=O THEN N-94815109

60 PRINT"Nachrichtentext eingeben oder NNNN am Zeilenanfang fuer Ende"

70 W=W+1:PRINT USING "";W;:LINE INPUT".: ";M§

71 IF LEFT§(M§,4) = "NNNN" OR LEFT§(M§,4) = "nnnn" THEN CLOSE: PRINT:PRINT"Cryptogramm unter Datei : ";AUS§;" abgespeichert.":PRINT:PRINT;END

80 M§=M§+CHR§(13):L=LEN(M§):Q=INT(L/ZEICHENPROBLOCK)

90 R = L-C*ZEICHENPROBLOCK

100 IF R‹O THEN M§=M§+CHR§(0):GOTO 80

110 FOR 1 =O TO Q-1

120 M(I) = 0

130 FOR J = 1 TO ZEICHENPROBLOCK

140 A=ASC(MID§(M§,3*1+J,1))

150 M(l)=M(1)*100

160 M(1) = M(I) + A

170 NEXT J

180 NEXT 1

185 PRINT:PRINT"Cryptogramm:":PRINT

190 FOR 1=0 TO Q- 1

200 M=M(I)

210 C=M*M:C=C-INT(C/N)*N:C=C*M:C=C-INT(C/N)*N

220 PRINT'1,USING "";C;

225 PRINT USING "";C;

230 NEXT I

235 PRINT:PRINT

240 GOTO 70



10 DEFDBL C,D,M,N

11 ZEICHENPROBLOCK=3

20 INPUT"Eigener Public-Key (Test =0+CR = 94815109) : ";N

30 IF N = 0 THEN N = 94815109

40 INPUT"Eigener Secret-Key (Test =0+CR = 63196467) : ";D

50 IF D=0 THEN D=63196467

51 LINE INPUT"Dateiname fuer entschluesselten Text : ";AUS§

52 OPEN"0",2,AUS§

60 LINE INPUT"Cryptogramm von "Datei oder Manuell : ";FRAG§

70 IF FRAG§="M" OR FRAG§="m" THEN MANUELL=-1:GOTO 90 ELSE MANUELL = 0

80 LINE INPUT"Dateiname der Crypto-Datei : ";DATEI§: OPEN"l",1,DATEI§

81 IF NOT(MANUELL) THEN PRINT:PRINT"Entschluesselter Text:":PRINT:PRINT

90 IF MANUELL THEN INPUT"Cryptoblock: ":C ELSE IF EOF(1) THEN

CLOSE:PRINT"Textende.":PRINT:PRINT:END ELSE INPUT'1,C

100 D1= D:M = 1

110 IF D1/2 = INT(D1/2) THEN 130

120 M = M*C:M = M-INT(M/N)*N

130 C=C*C:C=C-INT(C/N)*N

140 D1=INT(D1/2)-.IF D1 ‹ 0 THEN 110

150 M§=STR§(M):M§= RIGHT§(M§,LEN(M§)-1):'blank vorweg bei einigen interpr.

160 LX = LEN(M§):IF (LX/2),,‹INT(LX/2) THEN M§ = "0" + M§:GOTO 160

170 FOR T = 1 TO ZEICHENPROBLOCK

180 ZEICHEN§ = MID§(M§,1 + (T1)*2,2):ZEICHEN§ = CHR§(VAL(ZEICHEN§))

190 PRINT ZEICHEN§;

200 PRINT'2,ZEICHEN§;

210 NEXT T

220 GOTO 90



5 RANDOMIZE

10 PRINT"Programm zur Bestimmung des Public- und Secret-Keys"

PRINT" = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = :

30 PRINT"Zur Bestimmung des Secret-Keys benoetigen Sie 2 (nur Ihnen bekannte)"

40 PRINT"Primzahlen p und q. Das folgende Programm besteht aus 2 Teilen:"

50 PRINT"Teil 1 sucht im Umfang einer beliebig gewaehlten Zahl die naechste"

60 PRINT"Primzahl, die sich fuer p oder q eignet."

70 PRINT"Teil 2 bestimmt aus den so gefundenen p und q die Secret-und Public-"

80 PRINT"keys."

90 PRINT

100 PRINT"Start Teil 1":PRINT 110 DEFDBL N,P,Q,R,S,X,Y:K=10

120 INPUT"Zu analysierende Zahl (0 fuer Uebergang Programmteil 2) : "; N

130 IF N=0 THEN 280

140 IF M99999999 THEN PRINT"Bitte kleineren Wert waehlen":GOTO 120

150 IF N/2=INT(N/2) THEN N=N-1

160 FOR I=1 TO K

170 X=2+INT((N-2)*RND(0))

180 Y = 1:P = N-1

190 IF P/2=INT(P/2) THEN 210

200 Y=Y*X:Y=Y-INT(Y/N)*N

210 X=X*X:X=X-INT(X/N)*N

220 P = INT(P/2):IF P ‹ 0 THEN 190

230 IF Y,,‹1 THEN 250

240 NEXT I

250 IF Y=1 THEN PRINT N;"ist alsPrimzahl fuer p oder q geeignet.":GOTO 120

260 PRINT"Noch keine geeignete Zahl gefunden. Teste jetzt Zahl " ;N:N=N-2:GOTO 160

270 ’

280 PRINT"Start Teil 2":PRINT

290 INPUT"Welchen Wert hatten Sie fuer p bestimmt: ";P

300 INPUT"Welchen Wert hatten Sie fuer q bestimmt: ";Q

310 PRINT

320 PRINT"Ihr Public-Key lautet: ";P*Q

330 PRINT"Ihr Secret-Key lautet: ";(2*(P-1)*(Q-1) + 1)/3


Ralf übersetzt für MS-DOS aus BYTE

cryptihl.ws 850807 0905

 

  [Chaos CD]
[HaBi 1]    Verschlüsseln auf Teufel komm raus.
[Gescannte Version] [ -- ] [ ++ ] [Suchen]