Algoritmus RSA. Vilém Vychodil. 4. března 2002. Abstrakt



Podobné dokumenty
Exponenciální funkce a jejich "využití" - A (Tato doplňková pomůcka nemůže v žádném případě nahradit systematickou matematickou přípravu.

je daná vztahem v 0 Ve fyzice bývá zvykem značit derivaci podle proměnné t (podle času) tečkou, proto píšeme

Kapitola 2. Bohrova teorie atomu vodíku

MATEMATICKÁ INDUKCE. 1. Princip matematické indukce

Variabilita měření a statistická regulace procesu

je konvergentní, právě když existuje číslo a R tak, že pro všechna přirozená <. Číslu a říkáme limita posloupnosti ( ) n n 1 n n n

1 Trochu o kritériích dělitelnosti

6 Intervalové odhady. spočteme aritmetický průměr, pak tyto průměry se budou chovat jako by pocházely z normálního. nekonečna.

Odhad parametru p binomického rozdělení a test hypotézy o tomto parametru. Test hypotézy o parametru p binomického rozdělení

8.2.1 Aritmetická posloupnost I

je konvergentní, právě když existuje číslo a R tak, že pro všechna přirozená <. Číslu a říkáme limita posloupnosti ( ) n n 1 n n n

3. Lineární diferenciální rovnice úvod do teorie

Spojitost a limita funkcí jedné reálné proměnné

8.2.1 Aritmetická posloupnost

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Algoritmus

1.3. POLYNOMY. V této kapitole se dozvíte:

Zformulujme PMI nyní přesně (v duchu výrokové logiky jiný kurz tohoto webu):

Kapitola 5 - Matice (nad tělesem)

1. K o m b i n a t o r i k a

1. ZÁKLADY VEKTOROVÉ ALGEBRY 1.1. VEKTOROVÝ PROSTOR A JEHO BÁZE

PRAVDĚPODOBNOST A STATISTIKA

Kapitola 4 Euklidovské prostory

Definice obecné mocniny

Konec srandy!!! Mocniny s přirozeným mocnitelem I. Předpoklady: základní početní operace

Fotometrie a radiometrie Důležitou částí kvantitativního popisu optického záření je určování jeho mohutnosti

Užití binomické věty

Obsah. 1 Mocninné řady Definice a vlastnosti mocninných řad Rozvoj funkce do mocninné řady Aplikace mocninných řad...

jako konstanta nula. Obsahem centrálních limitních vět je tvrzení, že distribuční funkce i=1 X i konvergují za určitých

procesy II Zuzana 1 Katedra pravděpodobnosti a matematické statistiky Univerzita Karlova v Praze

FUNKCÍ JEDNÉ REÁLNÉ PROMĚNNÉ PRVNÍ DIFERENCIÁL

5. Posloupnosti a řady

Vyšší mocniny. Předpoklady: Doplň místo obdélníčků správné číslo. a) ( 2) 3. = c) ( ) = 1600 = e) ( 25) 2 0,8 0, 64.

PŘÍKLAD NA PRŮMĚRNÝ INDEX ŘETĚZOVÝ NEBOLI GEOMETRICKÝ PRŮMĚR

Petr Šedivý Šedivá matematika

10.3 GEOMERTICKÝ PRŮMĚR

MATEMATIKA PŘÍKLADY K PŘÍJÍMACÍM ZKOUŠKÁM BAKALÁŘSKÉ STUDIUM MGR. RADMILA STOKLASOVÁ, PH.D.

8.1.3 Rekurentní zadání posloupnosti I

Kvantová a statistická fyzika 2 (Termodynamika a statistická fyzika)

12. N á h o d n ý v ý b ě r

2.4. INVERZNÍ MATICE

1.2. NORMA A SKALÁRNÍ SOUČIN

Zpracování a prezentace výsledků měření (KFY/ZPM)

veličiny má stejný řád jako je řád poslední číslice nejistoty. Nejistotu píšeme obvykle jenom jednou

OKRUŽNÍ A ROZVOZNÍ ÚLOHY: OBCHODNÍ CESTUJÍCÍ. FORMULACE PŘI RESPEKTOVÁNÍ ČASOVÝCH OKEN

jsou reálná a m, n jsou čísla přirozená.

MATICOVÉ HRY MATICOVÝCH HER

Vzorový příklad na rozhodování BPH_ZMAN

Deskriptivní statistika 1

Permutace s opakováním

DERIVACE FUNKCÍ JEDNÉ REÁLNÉ PROM

POLYNOM. 1) Základní pojmy. Polynomem stupně n nazveme funkci tvaru. a se nazývají koeficienty polynomu. 0, n N. Čísla. kde

c) Pomocí Liouvillovy věty dokažte, že Liouvillovo číslo je transcendentí. xp 1 (p 1)! (x 1)p (x 2) p... (x d) p e x t f(t) d t = F (0)e x F (x),

VLIV MODIFIKACE MATICE HMOTNOSTI NA VÝSLEDKY MODÁLNÍ ANALÝZY

Správnost vztahu plyne z věty o rovnosti úhlů s rameny na sebe kolmými (obr. 13).

z možností, jak tuto veličinu charakterizovat, je určit součet

O Jensenově nerovnosti

U. Jestliže lineární zobrazení Df x n n

1 POPISNÁ STATISTIKA V PROGRAMU MS EXCEL

1 Uzavřená Gaussova rovina a její topologie

množina všech reálných čísel

5.5. KOMPLEXNÍ ODMOCNINA A ŘEŠENÍ KVADRATICKÝCH A BINOMICKÝCH ROVNIC

4. PRŮBĚH FUNKCE. = f(x) načrtnout.

Abstrakt. Co jsou to komplexní čísla? K čemu se používají? Dá se s nimi dělat

Diskrétní matematika

Matematika 1. Katedra matematiky, Fakulta stavební ČVUT v Praze. středa 10-11:40 posluchárna D / 13. Posloupnosti

f x a x DSM2 Cv 9 Vytvořující funkce Vytvořující funkcí nekonečné posloupnosti a0, a1,, a n , reálných čísel míníme formální nekonečnou řadu ( )

IAJCE Přednáška č. 12

Komplexní čísla. Definice komplexních čísel

PRAVDĚPODOBNOST A STATISTIKA

Univerzita Karlova v Praze Pedagogická fakulta

Matematika I, část II

Jak funguje asymetrické šifrování?

Kombinatorika- 3. Základy diskrétní matematiky, BI-ZDM

17. Statistické hypotézy parametrické testy

Pravděpodobnostní modely

VYSOCE PŘESNÉ METODY OBRÁBĚNÍ

P2: Statistické zpracování dat

3.1 OBSAHY ROVINNÝCH ÚTVARŮ

Posloupnosti a číselné řady. n + 1. n n n n. n n n. = lim. n2 sin n! lim. = 0, je lim. lim. lim. 1 + b + b b n) = 1 b

DISKRÉTNÍ MATEMATIKA PRO INFORMATIKY

n=1 ( Re an ) 2 + ( Im a n ) 2 = 0 Im a n = Im a a n definujeme předpisem: n=1 N a n = a 1 + a a N. n=1

Základní požadavky a pravidla měření

1 Tyto materiály byly vytvořeny za pomoci grantu FRVŠ číslo 1145/2004.

1.1. Definice Reálným vektorovým prostorem nazýváme množinu V, pro jejíž prvky jsou definovány operace sčítání + :V V V a násobení skalárem : R V V

a logaritmickou funkci a goniometrické funkce. 6.1 Násobení řad. Podívejme se neprve na násobení mnohočlenů x = x x n a y = y y n.

Permutace s opakováním

Iterační výpočty projekt č. 2

TECHNIKY A CASE NÁSTROJE VÝVOJE IS

1 PSE Definice základních pojmů. (ω je elementární jev: A ω (A ω) nebo (A );

Matematika I. Název studijního programu. RNDr. Jaroslav Krieg České Budějovice

6. Posloupnosti a jejich limity, řady

Matematika 1. Ivana Pultarová Katedra matematiky, Fakulta stavební ČVUT v Praze. středa 10-11:40 posluchárna D Posloupnosti

Cvičení 6.: Výpočet střední hodnoty a rozptylu, bodové a intervalové odhady střední hodnoty a rozptylu

NMAF061, ZS Zápočtová písemná práce VZOR 5. ledna e bx2 x 2 e x2. F (b) =

2. Znát definici kombinačního čísla a základní vlastnosti kombinačních čísel. Ovládat jednoduché operace s kombinačními čísly.

Seznámíte se s pojmem primitivní funkce a neurčitý integrál funkce jedné proměnné.

ÚLOHA ČÍNSKÉHO LISTONOŠE, MATEMATICKÉ MODELY PRO ORIENTOVANÝ A NEORIENTOVANÝ GRAF

Náhodu bychom mohli definovat jako součet velkého počtu drobných nepoznaných vlivů.

DIFERENCIÁLNÍ POČET FUNKCE JEDNÉ PROMĚNNÉ. 1) Pojem funkce, graf funkce

Znegujte následující výroky a rozhodněte, jestli platí výrok, nebo jeho negace:

Transkript:

Algoritmus RSA Vilém Vychodil 4. břza 2002 Abstrakt Násldující podpůrý txt stručě shruj základí problmatiky při šifrováí algoritmm RSA. Sm spadá j samotý pricip algoritmu, al i základí mtody grováí vlkých prvočísl. Txt po čtáři vyžaduj prakticky žádé zalosti, můž být proto použit jako doplňkový matriál i v kursu Paradigmata programováí I. Autor můž být kotaktová prostřdictvím lktroické pošty a adrs <vilm.vychodil@upol.cz>. Základí pojmy V dalších úvahách vycházím z jdé algbraická struktury okruhu clých čísl (Z, +, ). Zvolím-li pvé číslo m N, pak můžm a možiě Z dfiovat biárí rlaci θ m přdpism θ m = { a, b ; a = b + t m, pro ějaké t Z}. (1) Sado lz ukázat, ž rlac θ m j kvivalc a Z. Podrobě, θ m j zcla jistě rflxiví, platí a = a + 0 m, odtud ply a, a θ m. Pokud a, b θ m, pak lz psát a = b + t m pro ějaké t Z. Tto výraz lz upravit a a t m = b. Odtud již z komutativity a z vlastostí opačého prvku ply b = a + ( t) m, to jst b, a θ m rlac j symtrická. Nyí stačí ověřit trasitivitu. Uvažujm a, b θ m, b, c θ m. Existují tdy vyjádří a = b + s m, b = c + t m. Dosazím za b dostávám a = c + t m + s m, to jst a = c + (t + s) m. Rlac θ m j vskutku kvivalc a Z. Rlac θ m dfiovaá vztahm (1) j kogruc a Z, to jst splňuj substitučí podmíky vzhldm k opracím okruhu (Z, +, ). To zamá, ž pro libovolé a, b θ m, c, d θ m platí a + c, b + d θ m a a c, b d θ m. Platost lz opět sado ověřit, vyjdm-li z vztahů a = b + t m, c = d + s m, pak lz vyjádřit a + c = b + d + (t + s) m. Odtud ply a + c, b + d θ m. Dál a c = b d + (b s + d t + t s m) m, to jst i a c, b d θ m. Pozámka. V litratuř bývá kogruc θ m azýváa obvykl kogruc modulo m. Fakt a, b θ m j obvykl zač a b (mod m). Toto začí by však v dalším txtu bylo přhldé, proto jj budm používat. Dál j dobré uvědomit si, co zamá přdpis (1). Čísla a a b jsou kogrutí modulo m, právě když m (a b), to ply rovou z dfiičího vztahu. Vzhldm k tomu, ž kogruc θ m j rlací kvivalc, lz dl í rozložit Z právě a m tříd rozkladu. Každá třída rozkladu rprstuj možiu čísl z Z, ktré dávají po vydělí číslm m stjý zbytk. Rozkladm okruhu (Z, +, ) j vytvoř faktorový okruh Z/θ m. Oprac pro třídy rozkladu lz dfiovat přirozě pomocí oprací okruhu (Z, +, ), díky substitučí podmíc avíc jsou výsldky oprací ovlivěy výběrm prvku z třídy rozkladu. 1

Dfiic 1. Nchť m N a θ m Z Z ozačuj kogruci dfiovaou vztahm (1). Ozačm a] m = {b; a, b θ m } třídu rozkladu do íž pad prvk a Z. Dál chť možia Z/θ m ozačuj systém všch tříd rozkladu dl θ m, to jst Z/θ m = {a] m ; a Z}. Na Z/θ m zavdm oprac ásldujícími přdpisy, Struktura (Z/θ m, +, ) s azývá faktorový okruh modulo m. a] m + b] m = a + b] m, (2) a] m b] m = a b] m. (3) Pozámka. Nulou okruhu (Z/θ m, +, ) j prvk 0] m. Opačým prvkm k a] m j m a] m, boť a] m + m a] m = a + m a] m = m] m = 0] m. Jdičkou okruhu j 1] m. V litratuř s můž začí opět odlišovat. Okruh (Z/θ m, +, ) j obvykl azývá okruh zbytkových tříd modulo m a zač (Z m, +, ), jho prvky bývají začy C 0 až C m 1. V ašm případě toto začí korspoduj s třídami 0] m až m 1] m. Dfiic 2. (Eulrova ϕ-fukc) Zobrazí ϕ: N N, ktré každé N zobrazuj a počt mších s ím soudělých čísl, to jst s azývá Eulrova ϕ-fukc. ϕ() = Card {k; k N, k <, sd (k, ) = 1}, (4) V ěktrých případch lz hodotu Eulrovy ϕ-fukc staovit vlmi rychl. Mtoda šifrováí RSA j založa právě a vhodých vlastostch Eulrovy ϕ-fukc. J-li prvočíslo, bo j v tvaru součiu dvou prvočísl, pak lz hodotu ϕ() staovit ihd. Lmma 1. Nchť p, q N jsou prvočísla. Pak platí ϕ(p) = p 1 a ϕ(pq) = (p 1)(q 1). Důkaz. J-li p prvočíslo, potom j každé číslo k N, k < s číslm soudělé. Těchto čísl j právě p 1. Nyí uvažujm číslo v tvaru = pq, kd p, q jsou prvočísla. Všcha čísla soudělá s jsou buďto v tvaru s p, bo t q. Soudělých čísl v tvaru s p mších jak j al právě q 1. Stjě tak soudělých čísl v tvaru t q mších jak j právě p 1. Dohromady dostávám ϕ(pq) = (pq 1) (p 1) (q 1) = pq p q + 1 = (p 1)(q 1). Lmma 2. Nchť a Z, N jsou soudělá čísla. Pak platí, (i) Všcha čísla p a] jsou s soudělá. (ii) J-li avíc q Z soudělé s, pak j i číslo q a soudělé s. (iii) Všcha čísla soudělá s tvoří právě ϕ() tříd rozkladu podl θ. Důkaz. (i) Uvažujm třídu rozkladu a] a libovolé číslo p a]. Platí p = a + t. Přdpokládjm, ž m, m p. Z přdpokladu platí m (a + t). Jlikož m, platí i m t. Rověž platí i m (p t). Podroběji, z t = m s 1, p = m s 2 ply p t = m(s 2 s 1 ), to jst m (p t). Z přdchozích zjištěí dál ply m a. Odtud dostávám m = 1. (ii) Uvažujm dvě čísla q, a Z soudělá s. To jst platí sd (q, ) = 1, sd (a, ) = 1. Chcm ukázat, ž i sd (a q, ) = 1. K úplě přsému důkazu by bylo třba dfiovat pojm asociovaé prvky, my s však pro zjdoduší omzím pouz a přirozé jvětší spolčé dělitl. Bz újmy lz vyjádřit sd (a q, ) = sd (a q, sd (, q)), z asociativity 2

dál ply sd (a q, ) = sd (sd (a q, q), ). Platí sd (a q, q) = q sd (a, ). Odtud dostávám sd (a q, ) = sd (q sd (a, ), ) = sd (q, ) = 1, což bylo dokázat. Důkaz bodu (ii) by správě potřbovat dtailější rozbor vlastostí dělitlosti v oboru itgrity, to al í cílm tohoto txtu. (iii) Existuj právě ϕ() vzájmě růzých přirozých čísl ostř mších ž a zárovň soudělých s. Ozačm tato čísla a 1,..., a ϕ(). Všchy prvky tříd a 1 ],..., a ϕ() ] jsou čísla s soudělá, to jst {a i ] ; 1 i ϕ()} j možiou všch čísl soudělých s. Navíc pro dvě třídy rozkladu a i ] = a j ] lz p a i ] vyjádřit jako p = a i + t = a j + s. Odtud dostávám a i a j = (s t). Jiak řčo a i a j, al a i, a j 1, tdy platí a i = a j. Třídy rozkladu jsou vzájmě růzé a j jich právě ϕ(). Věta 1. (Frmatova-Eulrova) Nchť q Z, N jsou soudělá čísla. Pak platí q ϕ()] = 1]. (5) Důkaz. Ozačm a 1,..., a ϕ() všcha růzá čísla soudělá s, pro ktrá platí a i < pro libovolé i = 1,..., ϕ(). Podl přdchozí lmmy jsou a 1 ],..., a ϕ() právě všchy ] třídy čísl soudělých s. J-li q číslo soudělé s, pak jsou rověž i qa 1,..., qa ϕ() čísla soudělá s, to opět ply z přdcházjící lmmy. Třídy qa i ], qa j ] jsou pro libovolá 1 i, j ϕ(), i j vzájmě růzé. Přdpokládám-li qa i ] = qa j ], pak lz libovolý p qa i ] vyjádřit v tvarch p = qa i + s a p = qa j + t. To jst platí qa i + s = qa j + t, odtud q(a i a j ) = (t s). Odtud dostávám, ž (a i a j ), protož q j s soudělé. Al čísla a i, a j 1, to jst a i = a j. Z přdchozího faktu ply, ž třídy a 1 ],..., ] a ϕ() a qa 1],..., ] qa ϕ() jsou až a pořadí totožé. Ozačm a] = a 1 ] a 2 ] a ] ϕ() = ] a 1 a 2 a ϕ(). Pak platí, a] = a 1 ] a 2 ] a ] ϕ() = qa 1] qa 2 ] qa ] ϕ() = q ϕ() a ] = q ϕ()] a]. Jlikož j a soudělé s, platí a] 0]. Tík pádm lz přdchozí vztah vykrátit a] a dostávám požadovaé tvrzí q ϕ()] = 1]. Z přdcházjícího tvrzí mimo jié ply, ž pro soudělá čísla q Z, N dělí číslo q ϕ() 1 bz zbytku, to jst q ϕ() 1. Další části txtu s věují využití vlastosti Eulrovy ϕ-fukc při asymtrickém šifrováí mtodou RSA. Pricip algoritmu RSA Algoritmus RSA j asi jzámějším rprstatm asymtrických mtod šifrováí. V roc 1977 jj avrhli Ro Rivst, Adi Shamir a Loard Adlma, algoritmus s jméo právě podl ich. Asymtrická kryptografi j založa a dvou od sb růzých klíčích. Jd z klíčů j používá výhradě k šifrováí a lz jj použít k dšifrováí. Druhý klíč j využívá výlučě pro dšifrováí a aopak jj lz použít k šifrováí. V praxi j pouz jd z dvojic klíčů vřjě dostupý, druhý j utaj. Aby byla asymtrická kryptografi skutčě robustí, musí být zaruča praktická možost výpočtu jdoho klíč z druhého. Asymtrické šifrovací algoritmy jsou aplikací tori složitosti, jdé z stěžjích disciplí iformatiky. Dvojic klíčů j vola tak, aby výpočt jdoho klíč z druhého byl sic algoritmicky řšitlý, al úosý z hldiska výpočtího výkou soudobých i budoucích počítačů. 3

Clý algoritmus j zhruba ásldující. Njprv jsou zvola dvě prvočísla p, q, jjich souči ozačm = pq. Jlikož j v tvaru součiu prvočísl platí ϕ() = (p 1)(q 1). Dál zvolím čísla, d aby platilo d] ϕ(). Dvojic čísl,, d, tvoří vřjý a soukromý klíč. Ozačm zdrojovou zprávu v a zakódovaou zprávu w. Pokud chc odsílatl zakódovat zdrojovou zprávu v, vychází z vztahu w] = v ]. Příjmc zprávy obdrží w a rozkóduj jj pomocí vztahu v] = w d]. Při použití algoritmu j uté vyřšit ěkolik zásadích problémů. Njprv j uté dokázat správost mtody uvdé v přdchozím odstavci. Navíc j potřba z vhodě zvolých a pomocí vztahu d] ϕ() vypočítat číslo d. Dál j potřba mít k disposici jdoduchý algoritmus grováí vlkých prvočísl s přijatlou časovou složitostí. Dalším problémm j fktiví implmtac mocěí modulo m, ktré s používá při šifrováí a dšifrováí. V posldí řadě hraj roli i volba kódováí zprávy. Slova v, w uvdá v přdchozím odstavci rprstují čísla 0 v, w 1. Přášé zprávy však mívají většiou charaktr skvc zaků. Na jdotlivé problémy s pokusím odpovědět v dalším txtu. Násldující tvrzí ukazuj správost algoritmu. Věta 2. (Správost algoritmu RSA) Nchť p, q jsou prvočísla, = pq. A chť, d jsou libovolá čísla splňující podmíku d] ϕ(). Dál ozačm v, w čísla 0 v 1 a chť platí w] = v ]. Potom platí v] = w d]. Důkaz. V důkazu správosti algoritmu vycházím z d] ϕ() a w] = v ]. Dokazujm platost v] = w d]. Z vztahu d] ϕ() ply, ž d, 1 θ ϕ(). Jiak řčo souči d dává po dělí ϕ() zbytk jda, to jst platí d = 1 + rϕ(). Pokud dál umocím vztah w] = v ] do tvaru w d] = v d], lz místo dokazovaého vztahu v] = w d] psát v] = v d]. Pro důkaz správosti algoritmu tdy stačí ověřit platost v] = v 1+rϕ()]. (6) Důkaz j dál vd rozborm případů. Kokrétě uvažujm číslo v buďto soudělé s, bo soudělé. V případě, ž v j soudělé s lz psát v 1+rϕ()] = v] v rϕ()], to jst stačí ověřit v rϕ()] = 1]. Dál z Frmatovy-Eulrovy věty ply v ϕ()] = 1]. Umocěím tohoto vztahu a z vlastostí kogruc dostávám v rϕ()] v = ϕ()] r = 1]r = 1r ] = 1]. (7) V případě, ž ž v j soudělé s = pq musí být v buďto v tvaru v = ap, bo v tvaru v = bq. Bz újmy lz přdpokládat, ž v = ap. V tomto případě j al v soudělé s q, jlikož q j prvočíslo. V okruhu (Z/θ q, +, ) můžm vyjádřit v rϕ()] v = ϕ()] r = v (p 1)(q 1)] r = v (q 1)] (p 1)r = 1] q. (8) q q q q Posldí rovost ply z faktu, ž q j prvočíslo a proto ϕ(q) = q 1. Navíc podl Frmatovy- Eulrovy věty j v (q 1)] q = v ϕ(q)] q = 1] q. Jlikož platí i v rϕ(q)] q = 1] q, lz tto fakt vyjádřit v tvaru v rϕ() = 1 r + tq, po vyásobí této rovosti v obdržím v 1+rϕ() = v + vtq, to jst v 1+rϕ() = v + atpq. Zárovň platí = pq, tdy v 1+rϕ() = v + (at), jiými slovy v] = v 1+rϕ()], což bylo dokázat. 4

Síla algoritmu RSA j patrá právě z tohoto důkazu. Odsílatl pošty můž z zalosti v, w, a jdoduš staovit hodotu d. K tomu by musl vyřšit kogruci d] ϕ(). Pro správé řší j jprv uté zát hodotu ϕ(). Pro vlké číslo lz hodotu ϕ() v dohldé době vypočítat. Rověž prvočíslý rozklad vlkého čísla trvá úosou dobu. Dosud í zám fktiví algoritmus rozkladu a prvočiitl. Příklad 1. Zvolm apříklad prvočísla p = 5437, q = 7331. Dál staovím, = pq = 39858647, ϕ() = (p 1)(q 1) = 39845880, = 25634761, d = 37458481. Dvojic,, d, tvoří vřjý a tajý klíč. Nyí můžm zakódovat apříklad v = 1234 pomocí vztahu w] = v ], dostávám w = 14807834. Naopak při rozkódováí vycházím z vztahu v] = w d], kd w = 14807834 a obdržím v = 1234. Pozámka. Na přdchozím příkladu jsou dobř vidět dvě úskalí. V prví řadě í jasé, jak byla čísla, d staova. Tato čísla vskutku splňují podmíku d] ϕ(). V případě malých čísl lz jjich volbu provést ad hoc. V případě vlkých čísl j uté vypočítat jd klíč pomocí druhého a čísla ϕ(). To jst a počátku j vhodě zvol apříklad pouz klíč a pomocí hodoty ϕ() j vypočt příslušý klíč d. Dalším, spíš tchickým problémm, j samotý výpočt w z v a obrácě. Na prví pohld s abízí umocit apříklad v a zjistit zbytk po dělí číslm. To by v přdchozím případě al zamalo vypočítat jprv číslo o log 10 (v ) = log 10 (v). = 79245126 cifrách, což j aprosto úosé. Navíc tto fakt j jště umocě vlmi prozřtlou volbou prvočísl p, q. Čísla byla z dmostračích důvodů zvola vlmi malá zlomí klíč by v jjich případě bylo příliš časově áročé. Věta 3. Nchť p, q jsou prvočísla, = pq. Dál zvolm prvočíslo 2 1 soudělé s číslm ϕ(). Přdpokládjm, ž pro čísla, d platí d] ϕ(). Potom d j v tvaru d = 1 + rϕ(), kd r] = ( 1)ϕ() 2]. (9) Důkaz. Pozamjm, ž d] ϕ() platí právě když platí d = 1 + rϕ(). To jst fakticky stačí ověřit, zdali j číslo r volo tak, aby platilo 1 + rϕ(). Pak lz staovit d a platost vztahů j tím dokázáa. Pro číslo platí 1 + rϕ() právě když 1 + rϕ(), 0 θ, to jst právě když zbytk po dělí výrazu 1 + rϕ() číslm j ula. Tuto podmíku lz kvivaltě vyjádřit v tvaru 1 + rϕ()] = 0], bo jiak 1] + r] ϕ()] = 0], dál jako r] ϕ()] = 1]. Opačý prvk k 1] má tvar 1]. Pomocí ivrs lz vyjádřit r] = 1] ϕ()] 1 Vztah (9) j tdy platý právě když j ϕ()] 1 rov ϕ() 2]. Platí, ϕ()] ϕ()] 1 = ϕ()] ϕ() 2] ϕ() = 1] = ϕ() ϕ()] = 1]. (10) Posldí vztah ply z přdpokladu soudělosti ϕ() s a užitím Frmatovy-Eulrovy věty. Samozřjmě platí ϕ() = 1, protož bylo volo jako prvočíslo. Tím j al důkaz hotov. Volba čísla r implikuj platost 1 + rϕ() a podmíka d = 1 + rϕ() j splěa.. 5

Příklad 2. Přdchozí tvrzí dává ávod, jak jdoduš staovit klíč. Uvažujm hodoty p, q z miulého příkladu. Dál přdpokládjm, ž jsm zvolili číslo. Číslo j v ašm případě prvočíslo a vidtě dělí ϕ(), to jst má požadovaé vlastosti. Z vztahů (9) vypočítám pomocé číslo r = 24098833, a potom i d = 37458481. Staovím klíčů s opět otvírá problém fktivího výpočtu zbytku po dělí umocěého čísla. Tímto problémm s budm zabývat yí. Ozačm pro přhldost Rs (a, m) zbytk po dělí čísla a číslm m, to jst pro a = bm + r j Rs (a, m) = r. Pro mocěí přirozých čísl a, j zám algoritmus s logaritmickou časovou složitostí. Platí totiž, a 2 a 2 pro sudé, > 1, a = a a 1 pro liché, > 1, (11) a pro = 1. Pokud bychom vyšli z tohoto algoritmu a počítali Rs (a, m), při mocěí vlkých čísl vlkými čísly bychom s záhy dostali do potíží. Například výsldkm umocěí dvou stocifrých čísl j víc jak (10 100 )-cifré číslo. Výpočt takové mociy j hluboko za hraicmi možostí jakéhokoliv byť i hypottického výpočtího systému. Díky vlastostm kogruc však můžm provádět opraci Rs (a, m) v každém kroku výpočtu. Ituitivě řčo, při výpočtu j využito vlastosti a ] m = a] m a v paměti počítač jsou udržováa čísla s stál stjým počtm cifr. Násldující kód v jazyku Schm dmostruj implmtaci fukc xpmod využívající tohoto pricipu. (dfi (xpmod x m) (dfi (v? ) (= (modulo 2) 0)) (dfi (sqr x) (* x x)) (cod ((= 0) 1) ((v? ) (modulo (sqr (xpmod x (/ 2) m)) m)) (ls (modulo (* x (xpmod x (- 1) m)) m)))) Výš uvdou procdurou lz fktivě kódovat, dkódovat i vypočítat klíč. Při výpočtu klíč j opět uté využít fukci xpmod při staoví pomocé hodoty r. Přdpokládjm, ž mám dfiováy hodoty pro p, q, a staovu hodoty ϕ() a rověž klíč. Klíč d lz fktivě vypočítat ásldujícím kódm. (dfi r (modulo (* (- 1) (xpmod phi- (- 2) )) )) (dfi d (/ (+ 1 (* r phi-)) )) (= (xpmod (xpmod 1234 ) d ) 1234) Symbol phi- rprstuj hodotu ϕ() = (p 1)(q 1). Výsldkm vyhodocí výrazu a třtím řádku j #t začící pravdu, to jst zkušbí zakódovaé slovo 1234 bylo správě dkódováo. Pozámka. Obrácou tchikou k šifrováí s vřjým klíčm j lktroický podpis. V podstatě s jdá o modifikaci problému. Pouz jd účastík můž zprávu zašifrovat, ostatí ji mohou pouz rozšifrovat tím s přsvědčí o pravosti zprávy. Vzhldm k tomu, ž dvojic klíčů,, d, j komplmtárí, lz ji vzájmě použít j k šifrováí v smyslu utají dat, al právě i k lktroickému podpisu šifrováí v smyslu ověří pravosti. Navíc j použit týž šifrovací a dšifrovací algoritmus, pouz s zaměěými klíči. 6

Probabilistické tstováí prvočíslosti Při implmtaci mtody j potřba vhodě volit počátčí prvočísla p, q. Složitost zlomí klíč j úměrá jjich vlikosti. Otázkou j, jak fktivě grovat vlká prvočísla s řádově stovkami cifr. Jlikož j xaktí tstováí prvočíslosti pro vlká čísla úosé, v aplikacích často stačí mít k disposici číslo, ktré j téměř jistě prvočíslm. Zcla dostačující pravděpodobost prvočíslosti j apříklad 1 10 20. Mzi základí probabilistické mtody tstováí prvočíslosti patří mtoda založá a platosti Frmatovy-Eulrovy 1 věty. J-li prvočíslo, pak pro každé a soudělé s platí a 1] = 1]. Čísla soudělá s mohou být pouz v tvaru t, pro t Z. Odtud dostávám, ž pro 1 a 1 j za přdpokladu prvočíslosti podmíka a 1] = 1] vždy splěa. Pokud í podmíka a 1 ] = 1] pro ějaké 1 a 1 splěa, číslo můž být prvočíslo. U vlkých čísl í možé tstovat všcha čísla splňující 1 a 1. Tst j provádě j kostatě moha pokusy při ichž j vola hodota a áhodě. Pokud j pokusů dostatčě moho a podmíka j při ich splěa, j vysoc pravděpodobé, ž j prvočíslo. Existují však čísla, pro ktré huristický tst založý a přdchozích úvahách částčě slhává. Dfiic 3. (Carmichalovo číslo) Nchť m j složé číslo a chť pro libovolé a Z soudělé s m platí a m 1] m = 1] m. Složé číslo m s azývá Carmichalovo číslo. To jst pokud j provdo k áhodých volb čísla a a ai v jdom případě dělí Carmichalovo číslo m, potom huristický tst prohlásí číslo m za prvočíslo, což í pravda. Njmším Carmichalovým číslm j 561, dál 1105, 1729,... Pouz šstáct Carmichalových čísl j mších ž 10 5 a pouz 2163 j mších ž 25 10 9. To j vzhldm k počtu 10 7 prvočísl mších ž 25 10 9 zadbatlé možství. Ačkoliv jsou Carmichalova čísla mzi ostatími přirozými čísly rozloža vlmi řídc, v roc 1994 bylo dokázáo, ž j jich kočě moho, viz 1]. Naštěstí při tstováí dostatčě vlkých kadidátů a prvočíslo lz zásah Carmichalova čísla prakticky vyloučit. Pozámka. Algoritmus grováí vlkých prvočísl j přímočarý. Njprv j vygrováo vlké číslo. V dalším kroku j číslo zpracováo huristickým tstm. Pokud tst slž, j vygrováo ové vlké číslo a tstovací procdura s opakuj. Grováí ových čísl probíhá dokud í alzo číslo, pro ktré j huristický tst splě. V většiě programovacích jazyků lz grovat vlká čísla přímo a j uté vytvářt j po jdotlivých cifrách. Násldující fukc gruj vlké číslo po cifrách. (dfi (slct-umbr digits) (dfi (itr i accum) (if (>= i (- digits 1)) accum (itr (+ i 1) (+ (* accum 10) (radom 10))))) (itr 0 (+ (radom 9) 1))) Fukc slct-umbr vrací áhodě vygrovaé číslo o zvolém počtu cifr. Při grováí j uté vhodě volit hodotu prví cifry. Prví cifra můž být ulová, jiak by byl zachová počt požadovaých platých cifr. Pro tstováí prvočíslosti a grováí vlkých prvočísl lz vytvořit další dvě fukc. 1 V litratuř j možé stkat s s ozačím Malá Frmatova věta. Pirr d Frmat ji vyslovil poprvé v roc 1640, avšak k tvrzí podal důkaz. Důkaz byl sstav až Lohardm Eulrm v roc 1736. 7

(dfi (fast-prim? tims digits) (dfi (frmat-tst ) (dfi a (+ 2 (slct-umbr (+ (radom digits) 1)))) (= (xpmod a (- 1) ) 1)) (cod ((= tims 0) #t) ((frmat-tst ) (fast-prim? (- tims 1) digits)) (ls #f))) (dfi (slct-prim digits) (dfi (itr cadidat) (if (fast-prim? cadidat 50 (- digits 2)) cadidat (itr (slct-umbr digits)))) (itr (slct-umbr digits))) Prdikát fast-prim? j pravdivý právě když vstupí číslo o digit cifrách splňuj podmíku huristického tstu. Počt opakováí tstu j dá argumtm tims. Fukc slct-prim postupě gruj vlká čísla a požadovaém počtu cifr dokud í alzo číslo splňující podmíku huristického tstu. Kódováí vstupí abcdy Až doposud byly kódovaé zprávy uvažováy jako čísla. V praxi s však kódují přdvším zprávy složé z zaků. Jdotlivé zaky jsou v počítači rprstováy rověž čísly zpravidla s osmibitovým rozsahm, to jst čísly 0,..., 255. Algoritmus RSA šifruj čísla s rozsahm 0 v 1. Obvykl bývá výrazě větším číslm ž 255, bylo by tdy úsporé kódovat vstupí zprávu po zacích. Z hldiska bzpčostího j to rověž vyhovující obsah zprávy by bylo možé dkódovat pomocí frkvčí aalýzy. Jdím z možých řší j kódovat vždy skupiu zaků. Zdrojová zpráva j jprv rozděla do bloků o kostatí délc l. Každý blok j samostatě zakódová. Uvažujm ji zaky kódovaé osmi bity, můžm jdotlivé zaky chápat jako cifry čísla zapsaého v číslé soustavě o základu 256. Problém kódováí bloku j tdy problémm přvdí l-cifrého čísla z soustavy o základu 256 do dkadické soustavy. Číslo v tomto tvaru již í problém zašifrovat pomocí algoritmu RSA. Po dšifrováí j potřba provést zpěté dkódováí, to jst přvod do soustavy o základu 256 a přvod a zaky. Otázkou zůstává, jak volit délku bloku l. Délka bloku musí rspktovat vlikost čísla 1. Pokud by ěktré l-cifré číslo zapsaé v soustavě o základu 256 mělo dkadické vyjádří větší jako 1, dkódováí zprávy po rozšifrováí by bylo jdozačé. Maximálí možá délka j cločíslá hodota l = log 256 ( 1). Například pro = 39858647 j log 256 ( 1) = 3.612, to jst bzpčá vlikost bloku j l = 3. Násldující fukc provádějí kódováí a dkódováí vstupí a výstupí zprávy. (dfi (cod-block block bas) (dfi (itr block aux) (if (ull? block) aux (itr (cdr block) (+ (* bas aux) (car block))))) (itr (map char->itgr (strig->list block)) 0)) 8

(dfi (dcod-block umbr bas) (dfi (dcod umbr) (if (< umbr bas) (list umbr) (appd (dcod (quotit umbr bas)) (list (modulo umbr bas))))) (list->strig (map itgr->char (dcod umbr)))) Argumty block, umbr rprstují vstupí řtězc zaků a vstupí číslo. Argumt bas j číslý základ. V drtivé většiě případů by měl být rov 256. Pokud by al uživatl chtěl kódovat apříklad pouz sdmibitové txty, můž použít hodotu 128. J-li ku příkladu zakódová řtězc Ahoj s základm 128, jho kódm j číslo a = 134836514, to jst kvivaltí zápis v dsítkové soustavě. Naopak přvdím čísla a zpět do soustavy o základu 256 a přvodm čísl a zaky obdržím řtězc Ahoj. Pozámka. Zvolé řší j spíš dmostrativí. Při fktiví implmtaci s používají odlišé mtody kódováí. Přdvším šifrovat lz přímo v dvojkové soustavě, a klíč mají zpravidla délku dělitlou osmi kódováí s tak výrazě zjdodušuj. Přd samotým šifrováím jsou obvykl data komprimováa ějakým slovíkovým komprsím algoritmm, apříklad algoritmm LZW. Rfrc 1] Alford, W. R. Gravill, A. Pomrac, C. Thr ar ifiitly may Carmichal umbrs. A. Math., 140 (1994) 703-722. 2] Gravill, A. Pomrac, C. Two cotradictory cojcturs cocrig Carmichal umbrs. Math. Comp., (2001) to appar i prit. 3] Pich, R. Th Carmichal umbrs up to 1015. Math. Comp., 61:203 (1993) 381-391. 4] Rivst, R. L. Shamir, A. Adlma, L. A mthod for obtaiig digital sigaturs ad public-ky cryptosystms. Commuicatios of th ACM, 21(2):120-126, Fbruary 1978. 9