Fachwissenschaftliches Seminar zur Zahlentheorie Vortragsunterlagen zum Thema: Kalenderformel und Codierung von Nachrichten“ ” Da sich die Wochentage in 7er-Zyklen übers Jahr verteilen, ist anzunehmen, dass beim Berechnen von Daten und Wochentagen das Rechnen modulo 7 eine Rolle spielt. Ein Teil der Mathematik hinter unserem Kalender wird hier vorgestellt. Eine zweite Anwendung der Kongruenzrechnung und des kleinen Satzes von Fermat ist das Thema “Codierung” aus dem Bereich der Verschlüsselungstechniken. III.6 Ewiger Kalender bezüglich Ein Ewiger Kaleniler ist eine Formel, nach der man aus dem Datum bestimmen kann' des Gre.lgorianischen Kalenders (vgl. I.8) den Wcchentag zu lassen' so Zunächst einigen wir uns darauf, das Jahr am l.März beginnen wird' (Dies daß ein Schaltiag arn End,edes Jahres, also Ende Februar angehängt : 8'Monat usw') entspricht den Monu,tsnamen September = 7.Monat, Oktober 2'' 4"' 7 '' 9'Monat Dann haben der 1., 3., 5., 6., 8., 1'0',11'Monat je 31 Tage, der je 30 Tage, und der 12.Monat hat 28 oder 29 Tage' festgesetzt, Die Gregorianische Kalenderreform fand 1582 statt' Es wurde jedes vierte Jahr ein schaltjahr daß das Jahr 1600 ein schaltjahr ist. Dann sollte (also in den Jahren sein, in jedem 100. Jahr sollte aber der Schalttag ausfallen (so daß das 170d, fSbO, 1900), in jedem 400. Jahr sollte er aber nicht ausfallen Jahr 2000 ein Schaltjahr ist). Nummern 0' Wir erteilen nun äen Wochentagen So, Mo, Di, Mi, Do' Fr' Sa 46. wegen 1,2,3,4, 5, 6 und nehmen an, der 1.März 1600 habe die Nummer gOS: 1 mod. 7 gilt für die Nummer a1 des l.Mtirz des Jahres 1600 + t ft] l t I l t I mod7 * L*J a,: cro + t + L;l- LTröj Kalender entDer l.März 1990 war ein Donnerstag, wie man einem aktuellen gz - g * 0 mod 7 fotgt os = 3 mod 7, der nehmen kann. Aus 4 = ao * 390 + in der Form l.März 1600 war aiso ein Mittwoch. schreiben wir die Jahreszahl 100c* d mit 0 < d < 100, dann ist t - 100(c- 16) * d und lal -(c- 16)* rc- 161 (,t= 3*100(c-16)+d+25(c-16)+ L n I L;l -1e8b + d,+ . [it * rz4c [1] = 3+5c.r. . [1] [;] mod 7 Dabei haben wir zu beachten, daß 100(c- 1 6 ) + 400 dl -t J : I c- 1 6 1 l--l L4l (l'März)t ein gilt, denn 4# a |. Wi. führen jetzt statt a1 die Bezeichnung die Nummer des und schreiben ents*prechendz.B. (6.Mai)rgss(: (6.3.)tr.n) für nur beachten, Wochentags, auf den der 6.Mai 1939 gefallen ist. Dlbei muß man anders als heute üblich - als 11. und 12' Monat daß Januar und Febru den wochentag zu zum vorjahr zfilen. um nun für jedes beliebige Datum berücksichtigen. bestimmen. müssen wir die unterschiedliche Länge der Monate 15 8 lll Restklassen Es ist (t.April)1 -(l.April)t*2 (l.Mai)t : ( 1 . M a i ) 1f 3 (l.Juni)r :(l.Juni)r*2 (l.Juli)r (1.August)1 :(l.Juli)r*3 (l .S e p te mb e r)r: ( 1.August) t*3 (l.Oktober)1 : (l.September)r * 2 (l.November)t : (l.Oktober)l+3 (l .D e ze mb e r)r : ( l.November ) r *2 : (l.Dezember)r (l.Januar)t *3 (l .F e b ru a r)r : ( l.Januil) r *3 -(l.März)t*3mod Z -(l.März)tf5mod7 -(l.Mäirz)r*1mod7 -(l.März)t*3mod7 -(l.März)r*6mod 7 = ( 1.Mär z) t*2mod T : (1.März)t* 4mod T : (l.März)r * 0 mod 7 : ( l.Mär z) t*2mod 7 : (l.Mäirz)r*5 mod 7 - ( l.Mär z) t*1 mod 7 Wir können nun das Datum des n.rn. im Jahre 100c* d bestimmen, wobei n, von 1 bis 28,29,30oder 31 läuft und rn die Nummern der Monate sind (also m : L für Mdrz,. . . 1 rn: 12 für Februar): (n.m.)too.tdz n * r,n * 5c * d.+ [X] . [;] mod T, wobei die Zahlen r,7l um 2 größer als die oben gefundenen Zahlen für (l.rn.)t sind, um den Summand 3 zu berücksichtigen. Man kann diese Zahlen folgender Tabelle entnehmen: Merkwürdigerweisegilt r- = ["?=tJ mod 7 (vgl. [Shockley 1967l,vgl. auch Aufgabe 53); damit ergibt sich schließli"hdi" Formel ( n . r n . ) t m "?* dn * 5 c1 ' * [1F] . [f] . [;] m o d7 . Beispiel 1: Die Schlachtvon Waterloofand am 18.6.1815statt. Die Nummer des Wochentagsist : L8* 90 + 15+ 10+ 3 + 4 : 0 mod 7. (1 8 .4 .)1 815 Die Schlachtfand also an einem Sonntagstatt. Beispiel 2z Der g.Januarim Jahr 2435wird auf einen Dienstagfallen, denn : 9 * 120+ 34+ 70+ 8 + 6 : 2mod 7. (9.11.)z€4 stklassen TIT.7 Codierung wobei n nd (also Zur Codierung (Verschlüsselung) und Decodierung (Entschlüsselung) geheimer Nachrichten können unterschiedliche zahlentheoretische Methoden verwendet werden. Wir beschränken uns hier auf zwei solche Methoden' von denen die erste auf dem Rechnen mit linearen Kongruenzen beruht, die zweite auf dem Satz von EuIBn-FERMAT. Wir vereinbaren zunächst eine eindeutige Zuordnung von Buchstaben und sonstigen zeichen zt zahlen 0,1,2,..., p - 1, wobei p eine Primzahl ist, die mindestens so groß wie die Anzahl der Buchstaben und sonstigen Zeichen sein muß. Dann wählen wir ein n € IN und teilen die zu verschlüsselndeNachricht in n-Tupel ein. Es geht nun also um die Codierung einesn-Tupels (*r,*rr. .- ,nn) von Zahlen aus 10,1, 2,. . . ,p - 1). Dazu wählen wir eine feste n, n-Matrix Ä, - 1, " ' , n)' deren Elemente Restklassenmodp sind, also A: (ori) mod p (i, i Dann berechnen wir für i : I,. . . ,rtr mit a ; i u 5m o d 'P At=f Y i € { 0 , 1 ," ' , P - 1} j=l '(1.-')' rlgender und erhalten das codierte n-Tupel (yt,yr,, . . . ,Un)' Um nun dieseswieder zu decodieren, müssen wir obiges Kongruenzensystemnach 11,,x2,,...,r,, auflösen. Dies ist natürlich nur dann eindeutig möglich, wenn die Matrix A mod p eine Inverse B mod p besitzt, wobei die Definition und die Berechnung der Inversen im Körper der Restklassen modp wie in jedem anderen Körper zu verstehen ist. Man nennt A mod p die Codierungsmatrix und B mod p die Decodierungsmatrix'IstB=(b;)modp(i,i:1,.'',n)'soergibtsichfüri:t'"')T7' *, =ib;iyi gi. auch mod'p. j=l ,iummer Ein Unbefugter darf zwar die Zuordnung von Buchstaben und Zahlen, die Primzahl p,rnd Ji" Blockläinge n kennen, ohne die Matrix B mod pbzw. die Matrix Ä mod p kann er keine Nachricht decodieren. Ist n nicht zu klein, dann ist es in der R"gel sehr schwer, diese Matrizen aus den codierten Nachrichten zu gewinnen. B e i s p i e l 1 : W i r w ä h l e nP : 3 1 , n !: , denn (2 It :3 und 3 5\ 0 7lmod31. \r z s) Es ergibt sich B- (B l2 \+ 211 \ 24 13 lmod31. 22 2b) lll Restklassen 160 Sendet man die Nachricht (rr,rr,r") : (13,17,20), so ensteht daraus (li)=,(ii)=(ä) mod 31. Die Decodierung lautet dann (;i)='(3i)=( ;:) mod 31. Der Satz von EuLER-FERMAT (Satz 6) ist der Ausgangspunkt für die l{onstruktion eines Codierungsverfahrens für geheime Nachrichten, das auf [Rivest/Shamir/Adleman i978] zurückgeht. Man spricht dabei von einem PublicKeg-Code; die Bezeichnungwird im folgenden verständlich werden. Wir denken uns zwei (sehr große) Primzahlen p und g gegeben und bilden ihr Produkt m:p.q, Die zu übermittelnde Nachricht denken wir uns als eine natürliche Zahl N, welche kleiner als rn ist. (Eine lange Nachricht besteht dann aus einer Folge solcher Zahlen N.) Im folgenden nehmen wir an, daß N nt m terlerfremd ist, alscr weder durch p noch durch g teilbar ist. Da p und q ,,sehr groß" sein sollen, wäre es ein großer Ztf.a\l,, wenn eine beliebig gewähite ZahI nicht zu. m teilerfrernd wäre. Nun wählen wir eine natürliche Zahl r nrit l . < r < v @ ) : ( p - r x q - r ) u n d g g T ( re, ( n ) ) : 1 und berechnenden Rest -Rvon N" bei Division durch rn: N"=Amodrn mit 1<J?1m. Kennt man nun.R, dann kann man darausdie Nachricht N rekonstruieren:Man bestimme die Zahl s mit rs : 1 mod cp(rn) und 1 < s < V(m); Dann ist R":Iü'"=Nmod rn,, die Nachricht N ist also der Rest von ft" bei Division durch rn. Damit nun eine Nachricht nur vom dazu befugten Empfänger verstanden werden kann, geht man folgendermaßenvor: Der Empfänger gibt seine Zahlen rn und r öffentlich bekannt(wie Telefonnummernin einem Telefonbuch), häilt aber die Primfaktoren p und q geheim.Dann kann jedermann ihm eine lll.8 MagischeQuadrate 161 Nachricht senden, denn dazu benötigt man nur die Zahlen rn und r. Zur Entschlässelung aber muß man die Zahl s kennen, und diese ka,nn man nur dann einfach bestimmen, wenn man p(rn) : (p - txq - 1) kennt, wenn man also die Primfaktoren p und g kennt. Selbst der Absender einer Nachricht kann diese, hat er sie einmal verschlässelt, nicht wieder entschltisseln. Die Einbruchsicherheit dieses Codierungsverfahrens hängt davon ab, wie schwer es ist, die Primfaktorzerlegung von n't. zu finden. Durch die ständige Weiterentwicklung der elektronischen Rechner werden hier die Grenzen immer weiter nach oben verschoben; schon heute benötigt man für einen Public-KeyCode Primzahlen, deren Stellenzahl deutlich über 50 liegt. Die Zahl r wäihlt man meistens als eine Primzahl, die größer ult p und g ist; jedenfalls sollte 2' > m sein, damit für kein .lt in obiger Bezeichnung N" : R gilt' Das Auffinden zweier Primzatrlen mit 50 oder gar 100 Ziffern ist kein großes Problem, wenn man sich damit zufrieden gibt, daß diese Zahlen ,,mit einer großen Wahrscheinlichkeit" (etwa 1- 10-50) Primzahlen sind. Die dabei verwendeten Primzahltests sind ,,Indizienbeweise", d.h., ma,n prüft notwendige Primzahleigenschaften wie z.B das Bestehen der Kongruenz 2p : 2 mod p (vgl' rrr.e). Der glückliche ,,Besitzef' zweier großer Primzahlen p und g muß natürlich die Primfatctoren von p(pg) : (p - txq - 1) kennen, weil er eine zu p(pq) teilerfremde Zahl r wählen muß. In der Regel ist die Primfaktorzerlegung von (p - txq - 1) aber kein Problemqman kann zeigen,daß im Mittel die HäJfte aller Primfaktoren einer Zahl der Größenordung 1050kl.,iner als 600 sind. Das folgende Beispiel verdeutlicht das dargestellte Codierungsverfahren,ist jedoch pral<tischunbedeutend,weil die Primzahlenp und g zu klein sind. Beispiel 2: Es sei p - 23,e - 29, also m - 667 und g(rn) : 616; ferner sei r : 15. Est ist 99T(12,667): t und 9gT(15,616): 1. Es soll die Nachricht N - 12 gesendet werden. Der Absender kennt rn und r; er berechnet L2I5 220 mod 667 und sendet die verschlüsselteNachricht R:220. Der Empfänger hat zuvor die Zahl s mit 15s : l. mod 616 berechnet,z.B. mit dem euklidischen Algorithmus:99T(15,616): 1 : 575. 15 -14'616, alsos : 575.Nun berechnet er 220675: 12 mod 667 und erhält damit die Nachricht N = 12. Man beachte, daß Potenzieren und Reduzierenmit einem gegebenenModul m, für einen Computer keine schwereArbeit ist. Bzgl. weiterer Anwendungen der Zahlentheorie in der Kryptographie vgl. [Kranakis 1986], [Schroeder1986].