教育部:重点高校招农村和贫困地区学生严防违规
Zavazadlovy algoritmus je jeden z nejstar?ích zp?sob? ?ifrování s ve?ejnym klí?em. Byl vyvinut Ralphem Merklem a Martinem Hellmanem v roce 1978.[1] Je jednodu??í ne? RSA a bylo ji? prokázáno, ?e jej lze v polynomiálním ?ase prolomit.[2]
Popis
[editovat | editovat zdroj]Zavazadlovy algoritmus je zp?sob asymetrického ?ifrování, co? znamená, ?e jsou pro komunikaci pot?eba dva klí?e: ve?ejny a soukromy. Kromě toho, na rozdíl od RSA, je pouze jednosměrny: ve?ejny klí? je pou?íván pouze pro ?ifrování a soukromy klí? pouze pro de?ifrování. Proto se nedá vyu?ívat pro autentizaci elektronickym podpisem.
Zavazadlovy algoritmus je zalo?en na problému sou?tu podmno?iny (speciální p?ípad problému batohu). Problém je následující: je dána mno?ina ?ísel a ?íslo a je pot?eba najít takovou podmno?inu , její? sou?et je roven . Obecně je tento problém pova?ován za NP-úplny. Pokud je v?ak tato posloupnost superrostoucí, tedy ka?dy prvek mno?iny je vět?í ne? sou?et v?ech men?ích prvk? mno?iny, je tento problém ?snadny“ a ?e?itelny v polynomiálním ?ase jednoduchym hladovym algoritmem.
Generování klí??
[editovat | editovat zdroj]V zavazadlovém algoritmu jsou klí?i dvě ?zavazadla“. Ve?ejnym klí?em je ?slo?ité“ zavazadlo a soukromym klí?em je ?snadné“ zavazadlo , spolu s dal?ími dvěma ?ísly, násobitelem a modulem. Násobitel a modul mohou byt pou?ity k p?evedení superrostoucí posloupnosti do slo?itého zavazadla. Stejná ?ísla jsou pou?ita k p?evedení sou?tu podmno?iny slo?itého zavazadla na sou?et podmno?iny snadného zavazadla, co? je problém ?e?itelny v polynomiálním ?ase.
?ifrování
[editovat | editovat zdroj]K za?ifrování zprávy je vybrána podmno?ina slo?itého zavazadla , a to porovnáním mno?iny bit? (plaintextu) s touto mno?inou. Ka?dy prvek ve?ejného klí?e, ktery odpovídá ?íslu 1 plaintextu, je prvkem podmno?iny , zatímco prvky odpovídající ?íslu 0 v plaintextu jsou p?i tvorbě ignorovány – nejsou prvky klí?e. Prvky této podmno?iny jsou se?teny a vysledny sou?et je ?ifrovym textem.
De?ifrování
[editovat | editovat zdroj]De?ifrování je mo?né, proto?e násobitel a modul po?ité k p?evedení snadného zavazadla na ve?ejny klí? mohou byt rovně? pou?ity k transformaci ?ísla p?edstavujícího ?ifrového textu na sou?et p?íslu?nych prvk? superrostoucí posloupnosti. Poté, pou?itím jednoduchého hladového algoritmu, m??e byt snadné zavazadlo p?evedeno pomocí O(n) aritmetickych operací na plaintext.
Matematická metoda
[editovat | editovat zdroj]Generování klí??
[editovat | editovat zdroj]K za?ifrování -bitové zprávy je vybrána superrostoucí posloupnost
nenulovych p?irozenych ?ísel. Je vybráno náhodné celé ?íslo pro které platí, ?e
a náhodné celé ?íslo , pro které platí, ?e gcd() (tzn. a jsou nesoudělná).
je voleno tímto zp?sobem proto, aby byla zaji?těna unikátnost ?ifrového textu. Pokud by bylo men?í, bylo by mo?né více ne? jeden plaintext za?ifrovat tím samym ?ifrovym textem. Vzhledem k tomu, ?e je vět?í ne? sou?et jakékoliv podmno?iny , ?ádny sou?et není kongruentní modulo a tudí? ?ádny ze soukromych klí?? nebude stejny. musí byt nesoudělné s , v opa?ném p?ípadě nebude mít inverzní modulo . Bez něj by nebylo mo?né de?ifrování.
Nyní je spo?ítána posloupnost
kde
Ve?ejnym klí?em je , zatímco soukromym klí?em je .
?ifrování
[editovat | editovat zdroj]K za?ifrování -bitové zprávy
kde je -ty bit zprávy a , je ur?eno
?ifrovym textem je potom .
De?ifrování
[editovat | editovat zdroj]Aby byl p?íjemce schopen de?ifrovat ?ifrovy text , musí najít zprávu s bity takovymi, aby platilo, ?e
V p?ípadě náhodnych hodnot by se jednalo o slo?ity problém, proto?e by p?íjemce musel vy?e?it problém sou?tu podmno?iny, jen? je pova?ován za NP-obtí?ny. Nicméně hodnoty byly zvoleny tak, aby bylo de?ifrování p?i znalosti soukromého klí?e snadné.
Je pot?eba najít celé ?íslo , jen? je modulární inverzí modulo . To znamená, ?e splňuje rovnici nebo ekvivalentně existuje celé ?íslo takové, ?e . Proto?e bylo zvoleno tak, ?e gcd(), je mo?né nalézt a pomocí roz?í?eného Euklidova algoritmu. Dále p?íjemce ?ifrového textu spo?ítá
A proto
Proto?e a , platí dále, ?e
A proto
Sou?et v?ech hodnot je men?í ne? a proto je také v intervalu . Z toho d?vodu musí p?íjemce vy?e?it problém sou?tu podmno?iny
Ten je v?ak jednoduchy, proto?e je superrostoucí posloupnost. P?íjemce vezme největ?í prvek , dále ozna?eny jako . Pokud je , potom . Pokud je , potom . Poté ode?te od a postup opakuje, dokud nezjistí .
Reference
[editovat | editovat zdroj]V tomto ?lánku byl pou?it p?eklad textu z ?lánku Merkle–Hellman knapsack cryptosystem na anglické Wikipedii.
- ↑ MERKLE, Ralph; HELLMAN, Martin. Hiding information and signatures in trapdoor knapsacks. IEEE Transactions on Information Theory. Ro?. 24, ?ís. 5, s. 525–530. doi:10.1109/TIT.1978.1055927. (anglicky)
- ↑ SHAMIR, Adi. A polynomial-time algorithm for breaking the basic Merkle - Hellman cryptosystem. IEEE Transactions on Information Theory. Ro?. 30, ?ís. 5, s. 699–704. doi:10.1109/TIT.1984.1056964. (anglicky)