Matematikken bag kryptering og signering RSA
Oversigt 1 Indbyrdes primiske tal 2 Regning med rester 3 Kryptering og signering ved hjælp af et offentligt nøgle kryptosystem RSA
Indbyrdes primiske hele tal Definition To hele tal m, n kaldes indbyrdes primiske, hvis de ingen fælles divisorer har, når vi ser bort fra 1 og -1. Med φ(m) betegner vi antallet af positive hele tal mindre end m, der er indbyrdes primiske med m (Euler s φ-funktion). Opgave Vis, at φ(12) = 4 Lad p, q være forskellige primtal. Vis at φ(p) = p 1, φ(pq) = (p 1)(q 1).
Euler s φ-funktion er tidskrævende at beregne I opgaven har vi set, at det et let at bestemme φ(n), hvis vi kender faktoriseringen af n i 2 primfaktorer. Kendes faktorisering af n ikke, er det imidlertid MEGET tidskrævende af bestemme φ(n). Har n for eksempel 100 cifre vil det, at forsøge sig frem med et tal 1, 2, 3,..., n ad gangen tage 10 100 10 12 sekunder 10 61 år på en maskine, der i 1 sekund kan foretage 10 12 (en million million) undersøgelser af om et tal er primisk med n. (Universets alder anslås til 15 10 12 år). Det er det store tidsforbrug, der fordres til bestemmelse af φ(n), der er sikkerheden i RSA-kryptosystemet, som vi vender tilbage til senere.
Bezouts identitet - specialtilfælde Lemma Lad m, n være indbyrdes primiske hele tal. Der findes hele tal f og g således at 1 = mf + ng
Opgave Find hele tal f, g, så 1 = 7f + 9g. Vis, at der findes løsninger, hvor f er positiv og hvor g er negativ. Opgave Find hele tal f, g, så 1 = 71f + 8448g
Bevis Lad d være det mindste positive hele tal på formen d = mf + ng (1) Påstanden er nu, at d = 1. Antag det modsatte og lav heltalsdivision med rest: m = q 1d + r 1, 0 r 1 < d (2) n = q 2d + r 2, 0 r 2 < d Hvis r 1 = r 2 = 0, er det i modstrid med antagelsen om, at m og n er indbyrdes primiske, idet d er en fælles divisor større end 1. Der findes altså en rest r i forskellig fra 0. Lad os antage at r 1 0. Indsæt nu udtrykket for d, jvf. (1), i (2): m = q 1(mf + ng) + r 1 r 1 = m(1 q 1f ) nq 1g = mf + ng som er et mindre positivt helt tal på den angivne form (1) i strid med minimalitetet af d.
Euklids udvidede algoritme til bestemmelse af f og g Bestem rekurssivt ved division med rest: r k = r k 2 q k 1 r k 1, 0 r k < r k 1 i q i r i x i y i 0 m 1 0 1 q 1 n 0 1... k q k r k 2 q k 1 r k 1 x k 2 q k 1 x k 1 y k 2 q k 1 y k 1..... n q n 1 = r n x n y n n + 1 0 = r n 1 q nr n..
Euklids udvidede algoritme - fortsat r n r n 1 r n r n 2 r n r 1 r n r 0, hvorfor r n = 1 r k = mx k + ny k, hvilket vises ved induktion specielt er 1 = r n = mx n + ny n
Eksempel på anvendelse af Euklids udvidede algoritme Bestem rekurssivt ved division med rest: r 0 = 71, r 1 = 8448, r k = r k 2 q k 1 r k 1, 0 r k < r k 1 x 0 = 1, x 1 = 0, x k = x k 2 q k 1 x k 1 y 0 = 0, y 1 = 1, y k = y k 2 q k 1 y k 1
Eksempel på anvendelse af Euklids udvidede algoritme Bestem rekurssivt ved division med rest: r 0 = 71, r 1 = 8448, r k = r k 2 q k 1 r k 1, 0 r k < r k 1 x 0 = 1, x 1 = 0, x k = x k 2 q k 1 x k 1 y 0 = 0, y 1 = 1, y k = y k 2 q k 1 y k 1 i q i r i x i y i 0 71 1 0 1 0 8448 0 1
Eksempel på anvendelse af Euklids udvidede algoritme Bestem rekurssivt ved division med rest: r 0 = 71, r 1 = 8448, r k = r k 2 q k 1 r k 1, 0 r k < r k 1 x 0 = 1, x 1 = 0, x k = x k 2 q k 1 x k 1 y 0 = 0, y 1 = 1, y k = y k 2 q k 1 y k 1 i q i r i x i y i 0 71 1 0 1 0 8448 0 1 2 118 71 1 0
Eksempel på anvendelse af Euklids udvidede algoritme Bestem rekurssivt ved division med rest: r 0 = 71, r 1 = 8448, r k = r k 2 q k 1 r k 1, 0 r k < r k 1 x 0 = 1, x 1 = 0, x k = x k 2 q k 1 x k 1 y 0 = 0, y 1 = 1, y k = y k 2 q k 1 y k 1 i q i r i x i y i 0 71 1 0 1 0 8448 0 1 2 118 71 1 0 3 1 70 118 1
Eksempel på anvendelse af Euklids udvidede algoritme Bestem rekurssivt ved division med rest: r 0 = 71, r 1 = 8448, r k = r k 2 q k 1 r k 1, 0 r k < r k 1 x 0 = 1, x 1 = 0, x k = x k 2 q k 1 x k 1 y 0 = 0, y 1 = 1, y k = y k 2 q k 1 y k 1 i q i r i x i y i 0 71 1 0 1 0 8448 0 1 2 118 71 1 0 3 1 70 118 1 4 70 1 119 1
Eksempel på anvendelse af Euklids udvidede algoritme Bestem rekurssivt ved division med rest: r 0 = 71, r 1 = 8448, r k = r k 2 q k 1 r k 1, 0 r k < r k 1 x 0 = 1, x 1 = 0, x k = x k 2 q k 1 x k 1 y 0 = 0, y 1 = 1, y k = y k 2 q k 1 y k 1 i q i r i x i y i 0 71 1 0 1 0 8448 0 1 2 118 71 1 0 3 1 70 118 1 4 70 1 119 1 5 0
Eksempel på anvendelse af Euklids udvidede algoritme Bestem rekurssivt ved division med rest: r 0 = 71, r 1 = 8448, r k = r k 2 q k 1 r k 1, 0 r k < r k 1 x 0 = 1, x 1 = 0, x k = x k 2 q k 1 x k 1 y 0 = 0, y 1 = 1, y k = y k 2 q k 1 y k 1 i q i r i x i y i 0 71 1 0 1 0 8448 0 1 2 118 71 1 0 3 1 70 118 1 4 70 1 119 1 5 0 Bezout 1 = 71 119 + 8448 ( 1)
Korollar Lad k, m være indbyrdes primiske hele tal. Så gælder, at k am k a Bevis. Da k, m en indbyrdes primiske, findes der hele tal f, g således at 1 = mf + kg a = amf + akg Da k amf + akg følger påstanden.
Oversigt 1 Indbyrdes primiske tal 2 Regning med rester 3 Kryptering og signering ved hjælp af et offentligt nøgle kryptosystem RSA
Modulo - regning med rester Gauss indførte en notation, som letter omgangen med heltalsdivision med rest. Definition Givet hele tal a, b og m > 0. Vi siger, at a er kongruent med b modulo m og skriver a b mod m hvis a og b har samme rest ved division med m, altså hvis m går op i forskellen a b. Når m fremgår af sammenhængen, skriver vi blot a b. Eks. 19 7 mod 12, 1 1 mod 2 og 3 2 1 mod 5.
Regneregler Lemma Lad m > 0 være givet. Hvis a 1 b 1 og a 2 b 2, så er a 1 + a 2 b 1 + b 2, a 1 a 2 b 1 b 2 Hvis k er indbyrdes primisk med m, så kan der forkortes med k: ka kb a b. Bevis. Følger af definitionen og ved anvendelse af Korollar 5: ka kb m k(a b) m a b a b.
Modulær exponentiering Opgave Lad m = 7. Vis, at 2 3 1 2 4 2 2 5 4 2 6 1 2 7 2 Bestem r, 0 r < 7, så 2 100 r
Restklasser Definition Lad m > 0 være givet. Med [a] betegner vi mængden af alle hele tal x, der er kongruent med a modulo m. Mængden [a] kaldes restklassen af a. Et fuldstændigt sæt af rester modulo m består af m hele tal, en fra hver restklasse. Et reduceret sæt af rester modulo m består af φ(m) hele tal, en fra hver restklasse, og hver for sig indbyrdes primisk med m. For m = 6 er [3] = { 9, 3, 3, 9, 15,... }, tallene 0, 1, 2, 3, 4, 5 er et fuldstændigt sæt af rester, mens tallene 6, 14, 13, 2, 27, 35 er et andet fuldstændigt sæt af rester. De tilsvarende reducerede sæt af rester har hver φ(6) = 2 elementer og er 1, 5 og 13, 35
Opgave Bestem et komplet sæt af reducerede rester modulo 12 (der skal være 4 ialt). Multiplicer hver af de 4 elementer i sættet med 5 og vis, at det nye sæt også er et komplet sæt af reducerede rester.
Sætning Lad a 1,..., a φ(m) være et reduceret sæt af rester modulo m og lad k være et helt tal primisk med m. Så er ka 1,..., ka φ(m) også et reduceret sæt af rester modulo m.
Bevis. Ifølge Lemma 2 kan vi slutte, at ka i ka j a i a j. Derfor ligger ka 1,..., ka φ(m) i hver sin restklasse. Tilsvarende er ka 1,..., ka φ(m) hver for sig primiske med m, idet Lemma 2 anvendt på en fælles divisor n i m og ka i, der naturligvis også er primisk med k, giver n ka i n a i i modstrid med at a i er primisk med m.
Euler-Fermat Sætning Antag at k, m er indbyrdes primiske. Så er k φ(m) 1 mod m.
Opgave Eftervis, at k φ(12) 1 mod 12. for alle k, der er primiske med 12.
Bevis. Lad a 1,..., a φ(m) være et reduceret sæt af rester modulo m, ifølge sætningen ovenfor ved vi, at ka 1,..., ka φ(m) også er et reduceret sæt af rester. Anvender vi nu Lemma 2, har vi a 1 a φ(m) k φ(m) a 1 a φ(m) mod m. Da a i alle er indbyrdes primisk med m giver gentagne anvendelser af forkortningsdelen af Lemma 2, det ønskede.
Oversigt 1 Indbyrdes primiske tal 2 Regning med rester 3 Kryptering og signering ved hjælp af et offentligt nøgle kryptosystem RSA
Kryptering og signering - nøglepar En person A, der ønsker at lave et kryptosystem med henblik på modtagelse gør følgende: vælger 2 store primtal p, q og beregner n = pq beregner φ(n), jvf. Opgave 2, hvilket er let for A; men tidskrævende for andre, der blot kender n vælger et e > 0 primisk med φ(n) beregner positivt f (og negativt g), så 1 = ef + φ(n)g, jvf. Lemma 1 offentligør n, e - det er den offentlige nøgle Krypteringssystemet har n, e er som offentlig nøgle og φ(n) og f som hemmelig nøgle.
Kryptering En vilkårlig person B ønsker at sende tallet k > 0 til personen A. B indkoder tallet k ved brug af den offentlige nøgle n, e - nemlig ved at beregne og sende: h k e mod n
Dekryptering Personen A modtager h og beregner ved hjælp af sin hemmelige viden om φ(n) og f h f (k e ) f k ef k 1 φ(n)g k (k φ(n) ) g k mod n ifølge Sætning 11. Opgave Lad p = 89 og q = 97. Bestem n og φ(n). Lad e=71. Bestem f > 0 og g så 1 = ef + φ(n)g Indkod k = 3 ved at beregne h = 3 e og dekrypter ved at beregne (3 e ) f.
Digital signatur Signering (underkrift, digital signatur) foretages ved at personen A indkoder f.eks. sit "navn"k med sin hemmelige nøgle f, φ(n). Modtageren kan afkode med A s offentlige nøgle e, n. Giver afkodningen "navnet"k, er der overfor modtageren godtgjort, at afsenderen har den hemmelige nøgle, der passer til den offentlige nøgle. Opgave Lav endnu et nøglesæt og vis ved et eksempel, hvordan man laver digital signatur.
Information Adr.:, Ny Munkegade, 8000 Aarhus, DENMARK e-mail: matjph@imf.au.dk Phone: (+45) 2899 2449 homepage: http://pure.au.dk/portal/da/matjph@imf.au.dk