McEllisova šifra
James Ellis( ) Clifford Cocks, Malcolm Williamson Alice Bob zpráva šum Odstranění šumu
Klíč 3 matice Prověrková matice H Hammingova kódu řádu r, velikost n=2 r -1 x r. Příslušná generující matice G má velikost n x k=2 r - r-1 Regulární matice S, velikost k x k Permutační matice P, velikost n x n
Příklad Hammingova prověrková matice řádu 3, velikost 7 x 3 Regulární matice S, velikost 4x
Příklad Permutační matice P, velikost 7x7 Odpovídá permutaci
Dále potřebuji spočítat Generující matici Hammingova kódu G, velikost n x k Inverzní matici k S: S -1, velikost k x k Inverzní matici k P: P -1 = P T, velikost n x n Součin K = S * G * P, velkost n x k
Příklad Generující matice G Inverzní matice S
Příklad Inverzní permutační matice P -1 Odpovídá permutaci
Příklad Součinová matice K
Šifrování Vstupní zpráva x Spočítám y = x*K + t t je náhodný „chybový“ vektor délky n s vahou 1 Šifrování je nedeterministické
Příklad K= X = (1010) t = ( ) X*K = ( ) y = ( )
Dešifrování Přijmu zprávu y = x*K+t = x*S*G*P+t Přenásobím zprava maticí P -1, dostanu m = (x*S*G*P+t)*P -1 = x*S*G*P*P -1 +t*P -1 = x*S*G+t*P -1 Vektor t*P -1 má váhu 1, „chybu“ odstraním metodou pro dekódování Hammingových kódů, získám x*S Přenásobím zprava maticí S -1, dostanu x
Příklad dešifrování Přijmu y = ( ) Spočítám m=y*P -1 =( ) Spočítám syndrom m: synd(m)=m*H=(100) K „chybě“ došlo na 4. místě: x*S*G=( ) Na základě generující matice G spočítám x*S = (0100) Přenásobím S -1 : x=x*S* S -1 =(1010)
Další úvahy Pro konstrukci šifry potřebuji určit matice H, S, P. Na jejich základě jednoduchými algoritmy spočítám matice G, S -1, P -1, K. Pro dešifrování potřebuji znát všechny tyto matice Pro šifrování mi stačí znát matici K Z matice K nelze matice H, S a P jednoduše odvodit.
Symetrická šifra Šifrovací zobrazení y = φ(x,k) Dešifrovací zobrazení x = ψ(y,k)
Asymetrická šifra Šifrovací zobrazení y = φ(x,v) Dešifrovací zobrazení x = ψ(y,t) v … veřejný, známý, šifrovací klíč t …soukromý, tajný, dešifrovací klíč Existuje jednoduchá funkce f: v=f(t) Funkce f -1 je obtížně vyčíslitelná F je jednocestná funkce
Další využití (autorizace, „elektronický podpis“) Pokud navíc platí φ ◦ ψ = ψ ◦ φ Zprávu x „podepíši“ transformací ψ(x,t) a odešlu. Příjemce použije transformaci φ: φ(ψ(x,t),v) = φ ◦ ψ (x) = ψ ◦ φ (x) = x Zpráva je autorizována McEllisův algoritmus nelze pro autorizaci použít
Teorie čísel Prvočíslo Generování prvočísel: Erathosenovo síto Kolik je prvočísel?
Eulerova funkce Eulerova funkce φ(n), počet přirozených čísel menších než n a nesoudělných s n. Dodefinujeme φ(1) = 1 První hodnoty funkce φ: 1,1,2,2,4,2,6,3,6,4 Pro a, b nesoudělná φ(ab)= φ(a). φ(b) Snadno spočítáme třeba φ(91)=φ(7.13)=72 p prvočíslo: φ(p)=p-1 a je součin dvou prvočísel a=p.q, pak φ(a)=φ(p).φ(q)=(p-1).(q-1)
Vlastnosti prvočísel Binomický koeficient (p nad i) mod p = 0, pro i=1..p-1 (a+b) p mod p=a p +b p Pro c menší než p je c p mod p = c,
Malá Fermatova věta Pro c menší než p platí c p-1 mod p = 1 Pierre de Fermat ( )
Velká Fermatova věta Neexistuje čtveřice přirozených a,b,c,n, n>2, pro která platí a n +b n =c n Údajně dokázal P.Fermat v 17. století V roce 1900 formulováno jako 7. Hilbertův problém Hilbertovy problémy (23), dnes vyřešeny všechny až na 2. Velká Fermatova věta dokázána v roce 1994 (sir Andrew John Wiles), důkaz má 109 (velmi hutných) stran
Čínská věta o zbytcích Sun Tse (snad století) N je součin dvou prvočísel p,q. φ(N)=(p-1)(q-1), c φ(N) mod N = 1
Další NP problémy Problém faktorizace součinu dvou prvočísel –A=p.q, známe A, třeba určit p a q –Pro přesnou formulaci je třeba si uvědomit, co je zde velikost vstupních dat. Problém modulárních rovnic –f(t) = p t mod q = α –Známe-li p,q a t, snadno určíme α –Známe-li p, q a α, nelze jednoduše určit t
Distribuce klíčů D-H *1976 Whitfield Diffie *1944 Martin Hellban *1945 Massachusetts Institute of Technology (Boston) Protokol SSL
Metoda Diffie Hellman Použiji jednosměrnou funkci f(x)=p x mod q p,q jsou velká prvočísla. Uživatel A zvolí tajný klíč t, uživatel B tajný klíč s. Uživatel A spočítá f(t) = p t mod q = α a pošle Uživatel B spočítá f(s) = p s mod q = β a pošle
Metoda Diffie Hellman A spočítá β t mod q = p st mod q = K. B spočítá α s mod q = p ts mod q = K. K se použije jako klíč pro jednorázovou šifru (např. DES)