McEllisova šifra
James Ellis(1924-1997) Clifford Cocks, Malcolm Williamson šum Bob Alice zpráva Odstranění šumu
Klíč 3 matice Prověrková matice H Hammingova kódu řádu r, velikost n=2r-1 x r. Příslušná generující matice G má velikost n x k=2r-r-1 Regulární matice S, velikost k x k Permutační matice P, velikost n x n
Příklad 1 Hammingova prověrková matice řádu 3, velikost 7 x 3 1 Regulární matice S, velikost 4x4 1 1
Příklad Permutační matice P, velikost 7x7 Odpovídá permutaci 3257164 1
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 = PT , velikost n x n Součin K = S * G * P, velkost n x k
Příklad Generující matice G Inverzní matice S-1 1 1
Příklad Inverzní permutační matice P-1 Odpovídá permutaci 5217364 1
Příklad Součinová matice K 1
Š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 1 K= X = (1010) t = (0000100) X*K = (0010101) y = (0010001)
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 = (0010001) Spočítám m=y*P-1=(0001100) Spočítám syndrom m: synd(m)=m*H=(100) K „chybě“ došlo na 4. místě: x*S*G=(0000100) 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
Základní pojmy teorie složitosti algoritmů Časová složitost algoritmů Vyjadřujeme v počtu operací Složitost algoritmu je funkcí velikosti vstupních dat Zajímá nás složitost Minimální Průměrná Maximální Složitost limitní
Příklady výpočtů složitosti Vyhledání minimální hodnoty O(n) Součet matic O(n2) Součin matic O(n3) Seřazení souboru čísel O(n.log n) Úloha obchodního cestujícího n! Úloha o batohu 2n
Porovnání složitosti algoritmů Podstatný rozdíl je mezi složitostí vyjadřitelnou polynomem a složitostí jinou N N2 N8 2N N! 1 2 5 25 400000 32 120 10 100 108 1024 106 15 225 109 32000 1012 20 400 1010 1018 30 900 1011 1032 50 2500 1013 1015 1064 10000 1016 1030 10157
Při 1 000 000 000 operací za s. N N2 N8 2N N! 1 <1s 5 10 15 1 s 15 min 20 10 s 31 let 30 2 min 100 * Věk vesmíru 50 3 h 11 dní 100 3 měs Věk vesmíru
Třídění úloh podle složitosti P-úlohy Je znám algoritmus, který je řeší a má maximální složitost odhadnutelnou polynomickou funkcí NP-úlohy (nedeterministicky polynomiální) Není znám algoritmus, který je řeší a má maximální složitost odhadnutelnou polynomickou funkcí Je znám algortimus s minimální složitostí danou polynomickou funkcí (ověření výsledku)
NP – úplné problémy Patří do třídy NP Lze na sebe navzájem převádět. Pokud bude nalezet p-algoritmus pro jeden z nich, bude fungovat i pro všechny ostatní. Otevřená otázka P=NP? Vypsáno nadací Calyjako jeden ze 7 „problémů tisíciletí“ v roce 2000, odměna 1000000 $ Často řešeny přibližnými a heuristickými metodami
Příklady np-úplných problémů Travel Salesman Problem Knapsack problem Problém splnitelnosti formule Problém parketovatelnosti A dalších minimálně 100 problémů
Diagram složitosti úloh
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) = pt mod q = α Známe-li p,q a t, snadno určíme α Známe-li p, q a α, nelze jednoduše určit t