Køreplan Matematik 1 - FORÅR 2005

Relaterede dokumenter
Note omkring RSA kryptering. Gert Læssøe Mikkelsen Datalogisk institut Aarhus Universitet

Note omkring RSA kryptering. Gert Læssøe Mikkelsen Datalogisk institut Aarhus Universitet

RSA Kryptosystemet. Kryptologi ved Datalogisk Institut, Aarhus Universitet

sætning: Hvis a og b er heltal da findes heltal s og t så gcd(a, b) = sa + tb.

Af Marc Skov Madsen PhD-studerende Aarhus Universitet

KRYPTOLOGI ( Litt. Peter Landrock & Knud Nissen : Kryptologi)

Affine - et krypteringssystem

Fortroligt dokument. Matematisk projekt

Matematikken bag kryptering og signering RSA

Matematikken bag kryptering og signering RSA

Eulers sætning Matematikken bag kryptering og signering v.hj.a. RSA Et offentlig nøgle krypteringssytem

Kryptologi og RSA. Jonas Lindstrøm Jensen

Koder og kryptering. Foredrag UNF 4. december 2009 Erik Zenner (Adjunkt, DTU)

Konfidentialitet og kryptografi 31. januar, Jakob I. Pagter

Kryptografi Anvendt Matematik

Camp om Kryptering. Datasikkerhed, RSA kryptering og faktorisering. Rasmus Lauritsen. August 27,

Matematikken bag kryptering og signering NemID RSA Foredrag i UNF

Sikre Beregninger. Kryptologi ved Datalogisk Institut, Aarhus Universitet

Introduktion til Kryptologi. Mikkel Kamstrup Erlandsen

RSA-kryptosystemet. RSA-kryptosystemet Erik Vestergaard

Integer Factorization

1 Om funktioner. 1.1 Hvad er en funktion?

Matricer og lineære ligningssystemer

Note om endelige legemer

Talteori. Teori og problemløsning. Indhold. Talteori - Teori og problemløsning, marts 2014, Kirsten Rosenkilde.

De rigtige reelle tal

Noter om primtal. Erik Olsen

Introduktion til Kryptologi

Algebra - Teori og problemløsning

Maple. Skærmbilledet. Vi starter med at se lidt nærmere på opstartsbilledet i Maple. Værktøjslinje til indtastningsområdet. Menulinje.

Kryptologi 101 (og lidt om PGP)

Iteration af et endomorft kryptosystem. Substitutions-permutations-net (SPN) og inversion. Eksklusiv disjunktion og dens egenskaber

Grådige algoritmer. Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Perspektiverende Datalogi 2014 Uge 39 Kryptologi

Aflevering 4: Mindste kvadraters metode

Undersøgende aktivitet om primtal. Af Petur Birgir Petersen

Talteoriopgaver Træningsophold ved Sorø Akademi 2007

Uge 6 Store Dag. Opgaver til OPGAVER 1. Opgave 1 Udregning af determinant. Håndregning Der er givet matricen A =

RSA-KRYPTERING. Studieretningsprojekt. Blerim Cazimi. Frederiksberg Tekniske Gymnasium. Matematik A. Vejleder: Jonas Kromann Olden

Komplekse tal. Mikkel Stouby Petersen 27. februar 2013

Teoretiske Øvelsesopgaver:

Matematik YY Foråret Kapitel 1. Grupper og restklasseringe.

Opgave 1 Regning med rest

Fejlkorrigerende koder, secret sharing (og kryptografi)

Grundlæggende køretidsanalyse af algoritmer

Kursusgang 3 Matrixalgebra Repetition

6.1 Reelle Indre Produkter

Projekt 7.9 Euklids algoritme, primtal og primiske tal

Kvadratiske matricer. enote Kvadratiske matricer

Talteori. Teori og problemløsning. Indhold. Talteori - Teori og problemløsning, august 2013, Kirsten Rosenkilde.

Affine rum. a 1 u 1 + a 2 u 2 + a 3 u 3 = a 1 u 1 + (1 a 1 )( u 2 + a 3. + a 3. u 3 ) 1 a 1. Da a 2

Introduktion til MPLS

Københavns Universitet, Det naturvidenskabelige Fakultet. Afleveringsopgave 1

Matematik for økonomer 3. semester

Omskrivningsregler. Frank Nasser. 10. december 2011

Lineære 1. ordens differentialligningssystemer

Introduktion til Laplace transformen (Noter skrevet af Nikolaj Hess-Nielsen sidst revideret marts 2013)

Besvarelser til Lineær Algebra Ordinær Eksamen Juni 2018

Lineær algebra Kursusgang 6

Ekspertudtalelse om kryptering

TALTEORI Ligninger og det der ligner.

Det Ingeniør-, Natur- og Sundhedsvidenskabelige basisår Matematik 2A, Forår 2007, Hold 4 Opgave A Kommenteret version

Oversigt [LA] 1, 2, 3, [S] 9.1-3

Ringe og Primfaktorisering

Analyse 2. Bevis af Fatous lemma (Theorem 9.11) Supplerende opgave 1. Øvelser

Lidt alment om vektorrum et papir som grundlag for diskussion

Fejlkorligerende køder Fejlkorrigerende koder

Oversigt [LA] 11, 12, 13

Nøgleord og begreber Ortogonalt komplement Tømrerprincippet. [LA] 13 Ortogonal projektion

Afstande, skæringer og vinkler i rummet

DesignMat Uge 1 Gensyn med forårets stof

Symmetriske og ortogonale matricer Uge 7

Besvarelser til Lineær Algebra Ordinær eksamen - 6. Juni 2016

Primtalsfaktorisering - nogle nye resultater og anvendelser Regionalmøde Haderslev, 19. november 2003

3.1 Baser og dimension

Løsninger til udvalgte Eksamensopgaver i Lineær Algebra Juni 2000 og Juni 2001.

Et udtryk på formena n kaldes en potens med grundtal a og eksponent n. Vi vil kun betragte potenser hvor grundtallet er positivt, altså a>0.

Lineære ligningssystemer og Gauss-elimination

Lineær algebra 1. kursusgang

Andengradsligninger. Frank Nasser. 12. april 2011

Primtalsfaktorisering - nogle nye resultater og anvendelser Regionalmøde Haderslev, 19. november 2003

Grundlæggende Matematik

Kursusgang 3: Autencificering & asymmetrisk kryptering. Krav til autentificering. Kryptering som værktøj ved autentificering.

Vi indleder med at minde om at ( a) = a gælder i enhver gruppe.

Fejlkorligerende køder Fejlkorrigerende koder

Ligningssystemer - nogle konklusioner efter miniprojektet

TALTEORI Wilsons sætning og Euler-Fermats sætning.

Polynomiumsbrøker og asymptoter

Transkript:

Lineær algebra modulo n og kryptologi Køreplan 01005 Matematik 1 - FORÅR 2005 1 Introduktion Kryptologi er en ældgammel disciplin, som går flere tusinde år tilbage i tiden. Idag omfatter disciplinen mange forskelligartede ting, heriblandt kryptering. Kryptering er kunsten at holde data hemmelige for uvedkommende. I kryptering betragter man oftest en situation, hvor en part, kaldet Alice, vil sende en meddelelse til en anden part, kaldet Bob, således at ingen tredje part skal kunne lære indholdet af meddelelsen. I den klassiske kryptering, også kaldet secret-key kryptering, forudsættes det, at Alice og Bob deler noget information, som kun de to har kendskab til. Se Figur 1. Vi siger, at de først skal Figur 1: Klassisk kryptering. udveksle en hemmelig nøgle. Med denne nøgle kan Alice kryptere sin meddelelse og sende den til Bob, og Bob kan bruge nøglen til at dekryptere den sendte, krypterede meddelelse. Hvis Alice og Bob ikke fortæller andre, hvad (værdien af) nøglen er, og hvis ellers krypteringssystemet er sikkert, så kan Alice regne med, at det kun er Bob, der kan læse den originale meddelelse. Mat1 04/05 side 1

En ikke-krypteret meddelelse kaldes normalt en klartekst, og en krypteret meddelelse en chiffertekst. I 1976 fandt Diffie og Hellman fra USA på at dele krypteringsnøglen i to dele, en offentlig del og en hemmelig del. Se Figur 2. Bob vælger en nøgle og sender den offentlige del til Alice. Figur 2: Public-key kryptering. Nu kan Alice sende en krypteret klartekst til Bob ved hjælp af den offentlige nøgle, og Bob kan dekryptere chifferteksten ved hjælp af sin hemmelige nøgle. Hvis Bob ikke fortæller nogen, hvad den hemmelige nøgle er, så kan Alice regne med, hvis ellers krypteringssystemet er sikkert, at det kun er Bob, der kan dekryptere chifferteksten. Sådan et system kaldes et public-key (krypterings)system og det smarte er, at Alice og Bob ikke behøver at mødes eller udveksle en hemmelig nøgle, før de starter på at sende hinanden krypterede meddelelser. 2 Rygsæksproblemet I 1978 foreslog Merkle og Hellman fra USA et public-key krypteringssystem, som er baseret på det såkaldte rygsæksproblem. Forestil dig, at du har 10 ting, som har de respektive vægte a 1,a 2,a 3,...,a 10. Antag, at du skal ud at flyve, og at du har lov til at medbringe maximum S kg i bagagen. Du vil gerne have alle dine 10 ting med, men de vejer tilsammen mere end det tilladte. Nu vil du gerne pakke din rygsæk (som kan antages at være en af de 10 ting) sådan, at den vejer nøjagtigt S kg. Kan det lade sig gøre? Sagt på en anden og mere formel måde: Definition 1 Lad a 1,a 2,...,a n være en række ikke-negative heltal. Lad også S være et ikkenegativt heltal. Spørgsmålet er, om ligningen x 1 a 1 + x 2 a 2 +... + x n a n = S (1) Mat1 04/05 side 2

har en løsning, hvor alle x i er er 0 eller 1. Dette kaldes rygsæksproblemet. Bemærk, at der ikke direkte spørges efter en løsning til (1), kun om den eksisterer. Men ofte redefinerer man problemet, således at svaret enten er ingen løsning eller også en løsning (ud af muligvis flere). For store værdier er rygsæksproblemet vanskeligt at løse. Faktisk er det vist, at rygsæksproblemet er NP-komplet. Det betyder, groft sagt, at hvis man kan finde en effektiv metode til løsning af problemet, så kan man også finde effektive metoder til løsning af en række andre problemer, som synes endog meget svære at løse. Men for nogle værdier af {a i } n er det ikke vanskeligt at finde en {0,1}-løsning til (1), hvis den eksisterer. For eksempel med sekvensen a i = 2 i 1, for 1 i n, har (1) en løsning, hvis og kun hvis 0 S 2 n 1. 1. Lav et (Maple) program, som givet sekvensen {1,2,4,8,16,32} og en variabel værdi af S, returnerer en løsning til (1), hvis en sådan en eksisterer. I modsat fald returneres -1. Argumentér, hvorfor der altid er en løsning, hvis 0 S 63. Der er en endnu større klasse af sekvenser af {a i } n, for hvilke (1) er let at løse. Disse sekvenser kaldes super-øgende. Definition 2 En sekvens af ikke-negative heltal {a i } n kaldes super-øgende, hvis der for alle 1 k n gælder, at k 1 a i < a k. 2. Lav et (Maple) program som givet en super-øgende sekvens {a i } 10 og en variabel positiv værdi af S, returnerer en løsning {x i } 10 til (1), hvis den eksisterer og -1 ellers. 3 Lineær algebra modulo n Før vi kan præsentere Merkle-Hellman s system, er vi nødt til at give lidt mere baggrund. Definition 3 Et primtal p er et positivt heltal, som kun 1 og p går op i. Eksempel. 2,3,5,7,11,13, og 41 er alle primtal, mens 12, 25 og 91 ikke er. Definition 4 Lad x og y være heltal og lad n være et positivt heltal. Vi siger, at x og y er kongruente modulo n, hvis resten ved division af x med n er lig med resten ved division af y med n. Vi skriver x y (mod n). Med andre ord gælder der, at x y (mod n), hvis n går op i x y. Eksempel. 15 7 mod 4 og 4 går op i 15-7. 3. Lad n = 13, a = 12345 og b = 103579. Verficèr om a b (mod n). Lad n = 12, a = 123. Find et heltal b så a (b + 1) (mod n). Mat1 04/05 side 3

Vi skriver a mod n (hvor mod n er uden paranteser) for det tal b, hvorom der gælder, at b a (mod n) og 0 b < n. Vi siger, at b er a reduceret modulo n. Der er nogle simple regler, man kan bruge til at gøre sådanne udregninger lettere. F.eks. er udtrykket (b + c) mod n det samme som udtrykket ((b mod n) + (c mod n)) mod n, og udtrykket (bc) mod n er det samme som udtrykket ((b mod n)(c mod n)) mod n. Eksempel. 2 = 17 mod 3. 9 7 mod 8 er 63 reduceret modulo 8, altså 7. Dette kan også udregnes som flg.: (9 mod 8) 7 mod 8 som jo også er 7. 4. Lad n = 19, a = 12 og b = 10. Find ab mod n. Lad n = 17, a = 11 og b 10 (mod n). Find ab mod n. Definition 5 Den største fælles divisor af to heltal, a og b, er det største heltal, som går op i både a og b. Vi skriver sfd(a,b). Eksempel. sfd(15, 35) = 5. 5. Lav et (Maple) program som tager et positivt heltal n som input og som returnerer sfd(a,n) for alle a, hvor 0 < a < n. Definition 6 Lad n være et positivt heltal, og lad x < n være et ikke-negativt heltal. Vi siger, at y er den multiplikative invers til x modulo n, hvis 1 = (xy) mod n. Vi bruger også notationen x 1 mod n for y. Faktum 1 Lad n være et positivt heltal, og lad x < n være et heltal. Så har x en multiplikativ invers modulo n, hvis og kun hvis sfd(x,n) = 1. Eksempel. 15 er den multiplikative inverse til 7 mod 26, da 7 15 = 105 1 mod 26. 2 har ikke nogen multiplikativ invers modulo 26, da der for alle heltal z gælder, at 2z 1 mod 26. 6. Lav et (Maple) program, som tager et heltal n som input, og som for ethvert heltal a mellem 0 og n gør følgende: hvis a har en multiplikativ invers, udskrives a og den inverse, ellers udskrives intet. Udskriv resultatet af programmet for n = 23 og n = 24. 4 Merkle-Hellman s public-key krypteringssystem Vi er nu klar til at vise Merkle-Hellman kryptosystemet, som består af procedurerne Start, Kryptering og Dekryptering. Start Lad {a i } n være en super-øgende sekvens, og lad c være et positivt heltal mindre end p, hvor p er et primtal, så p > n a i. For 1 i n definér b i = ca i mod p. Mat1 04/05 side 4

{b i } n er den offentlige nøgle og {a i} n,c, og p udgør den hemmelige nøgle. Kryptering Lad x være en klartekst bestående af n bits. Krypteringen af x findes nu ved y = n x i b i. Dekryptering Lad y være en chiffertekst. Klarteksten findes på følgende måde: 1. Beregn z = c 1 y mod p. Bemærk, at z = c 1 n x i b i mod p = n x i c 1 b i mod p = n x i a i mod p 2. Da {a i } n er en super-øgende sekvens, kan man finde {x i} n jvf. ovenfor. Idéen i systemet er, at den offentlige nøgle {b i } n ikke er en super-øgende sekvens, så en angriber kan ikke (umiddelbart) dekryptere en chiffertekst. 7. Lav et (Maple) program, som implementerer Merkle-Hellman s system, dvs. lav procedurerne Start, Kryptering og Dekryptering. 8. Betragt Merkle-Hellman s system med n = 9 og lad (a 1,...,a 9 ) = (2,5,9,21,45,103,215,450,946). Find den offentlige nøgle når p = 2003 og c = 1289. Antag, at chifferteksten 6665 modtages. Find klarteksten (og vis alle mellemregninger). 4.1 Kryptoanalyse af Merkle-Hellman s system Bemærk først at Merkle-Hellman s knapsack system altid kan knækkes hvis man har tilstrækkelig beregningskraft. Klarteksten består af n bits, som derfor har 2 n mulige værdier. En angriber kan simpelthen kryptere alle 2 n mulige klartekster og checke hvilken af disse, der resulterer i værdien af en given chiffertekst. Dette angreb kaldes udtømmende søgning. Derfor må værdien af n vælges, sådan at ingen angriber vil kunne udføre disse 2 n operationer i overskuelig tid. Faktisk er der et angreb, som kan finde en klartekst endnu hurtigere ved brug af en tabel. Dette kaldes et meet-in-the-middle angreb. Inddata: heltal b 1,b 2,...,b n og s > 0. En tabel T. Mat1 04/05 side 5

Uddata: x i {0,1} for i = 1,...,n, således at t b ix i = s, hvis en sådan eksisterer. Metode: 1. Lad t = n/2. 2. Lad T /0. 3. For alle (2 t ) værdier af (x 1,x 2,...,x t ) tilføj til tabellen T elementet (( t 4. Sortér tabellen T på første komponent. 5. For alle (2 n t ) værdier af (x t+1,x t+2,...,x n ): b i x i ),x 1,x 2,...,x t ). (a) Beregn u = s n i=t+1 b ix i ) og check (v.h.a. en binær søgning) om u er første komponent i en indgang i tabellen T. Hvis det er tilfældet, udskriv da de pågældende x i elementer fra indgangen i T og de pågældende x i elementer brugt i udregningen af u. Bemærk, at denne metode finder altid alle løsninger, der eksisterer til det pågældende problem. Men metoden behøver kun ca. n2 n/2 operationer, hvilket for selv moderate værdier af n er langt mindre tiden for en udtømmende søgning. Til gengæld kræver metoden en tabel med ca. 2 n/2 indgange med hver n komponenter. Men kørselstiden er stadig eksponentiel i n, og hvis n vælges til at være mindst 200, er dette angreb praktisk umuligt. 9. Betragt Merkle-Hellman s system med p = 1009, n = 8 og lad den offentlige nøgle være (b 1,...,b 8 ) = (258,645,152,691,760,170,492,537). Antag, at chifferteksten 1287 modtages. Find klarteksten ved et meet-in-the-middle angreb. En endnu hurtigere måde at knække systemet på er baseret på integer programming af Lenstra. Lad d = c 1 mod p. Denne metode finder d og p, således at d/p d /p, og så {a i }n er en super-øgende sekvens, hvor a i = b id mod p. Denne super-øgende sekvens kan da bruges til at dekryptere. 10. Lad p = 31 og c = 21. Da er d = c 1 = 3 mod 31. Med n = 4 og (a 1,a 2,a 3,a 4 ) = (2,5,8,17) fås (b 1,b 2,b 3,b 4 ) = (11,12,13,16). Dekryptér chifferteksten 29. Lad nu p = 41 og d = 4. Vis, at også med disse parametre fås en super-øgende liste fra (b 1,b 2,b 3,b 4 ). Brug denne til at dekryptere chifferteksten 29. Den mest effektive måde til at knække Merkle-Hellman s system er med LLL-algoritmen. Betragt en række lineært uafhængige vektorer b 1,...b n i R n (dvs. bestående af reelle tal). Mængden L af alle heltalslineære kombinationer af vektorerne b 1,...b n kaldes en lattice, dvs. L er mængden {z 1 b 1 + z 2 b 2 +... + z n b n z 1,...,z n Z n }, hvor Z er mængden af de hele tal. (Bemærk, at når z i erne er reelle tal, taler vi om et vektorrum). Vi siger, at b 1,...b n er en basis for L. For at forstå LLL-algortimen, definerer vi først længden af en vektor, y = (y 1,...,y n ) som flg.: y = y 2 1 + y2 2 +... + y2 n. Mat1 04/05 side 6

LLL-algoritmen tager som input en række lineært uafhængige vektorer b 1,...b n i R n, en basis for L, og returnerer en række lineært uafhængige vektorer b 1,...b n i R n af reduceret længde (iht. definitionen foroven), en såkaldt reduceret basis. Angrebet på Merkle-Hellman s system er som flg.: Inddata: heltal b 1,b 2,...,b n og s > 0. Uddata: x i {0,1} for i = 1,...,n, således at n b ix i = s, hvis en sådan eksisterer. Metode: 1. Lad v være et positivt heltal, f.eks. vælg v := n. 2. Konstruér en (n + 1)-dimensionel lattice, L, fra rækkerne i matricen A: 1 0 0 0 vb 1 0 1 0 0 vb 2 0 0 1 0 vb 3 A =... 0..... 0. 0 0 0 1 vb n 1 1 1 1 2 2 2 2 vs 3. Find en reduceret basis B for L ved LLL-algoritmen. 4. For enhver vektor y = (y 1,...,y n+1 ) i B gør flg.: (a) Hvis y n+1 = 0 og hvis y i { 1 2, 1 2 } for i = 1,...,n gør flg.: i. For i = 1,...,n sæt x i := y i + 1 2. ii. Hvis n x ib i = s returnér (x 1,...,x n ). iii. For i = 1,...,n sæt x i := 1 2 y i. iv. Hvis n x ib i = s returnér (x 1,...,x n ). Bemærk, at hvis (x 1,...,x n ) er en løsning til problemet, så er y = ( n x ib i ) b n+1 i L (dvs. den kan skrives som en (heltals)linearkombination af vektorerne i basen for L). Og for denne y gælder, at y i { 1 2, 1 2 } for i = 1,...,n og y n+1 = 0. Længden af en sådan vektor er relativ lille, og hvis b i erne er forholdsvis store, er der en god chance for, at LLL-algoritmen finder en basis, hvor y er en af vektorerne. Vi bemærker, at selvom det ikke kan bevises, at LLL-algoritmen altid kan knække systemet, som beskrevet ovenfor, så har eksperimenter vist, at den gør det næsten altid i praksis. Mat1 04/05 side 7

Eksempel. I Maple kan klarteksten fra Eksempel 10 findes ved flg. kommando, 1 hvor v antages at have værdien 2:!"$#!%&!%'$(! )+* )!* )!* )!* #, -/. som giver flg. uddata: 0 )!*1 )!*3245)!*624 )!*7 5 82 )!*9 )!* )!* )!*7 5 : 5 0 # 5 : 2;' # Fra første vektor finder man løsningen (0,0,1,1). 11. (Frivillig) Betragt Merkle-Hellman s system med p = 16139, n = 8 og lad den offentlige nøgle være (b 1,...,b 8 ) = (258,645,1161,2709,5805,13287,11596,9633). Antag, at chifferteksten 28983 modtages. Find klarteksten ved et LLL-angreb. 1 I nogle versioner af Maple benyttes kommandoen LLL i stedet for lattice Mat1 04/05 side 8