Kryptosystém batoh Merkle – Hellman - Merkle–Hellman knapsack cryptosystem

The Kryptosystém batoh Merkle – Hellman byl jedním z prvních veřejný klíč kryptosystémy. To bylo publikováno Ralph Merkle a Martin Hellman v roce 1978. Polynomiální časový útok publikoval Adi Shamir v roce 1984. Výsledkem je, že kryptosystém je nyní považován za nejistý.[1]:465 [2]:190

Dějiny

Koncept kryptografie veřejného klíče byl představen Whitfield Diffie a Martin Hellman v roce 1976[3]. V té době navrhli pouze obecný koncept „funkce padacích dveří“, což je funkce, kterou je výpočetně nemožné vypočítat bez nějakých tajných „informací o padacích dveřích“, ale dosud nenalezli praktický příklad takové funkce. Několik konkrétních kryptosystémů s veřejným klíčem poté v průběhu příštích několika let navrhli jiní vědci, například RSA v roce 1977 a Merkle-Hellman v roce 1978.[4]

Popis

Merkle – Hellman je kryptosystém veřejného klíče, což znamená, že jsou použity dva klíče, veřejný klíč pro šifrování a soukromý klíč pro dešifrování. Je založen na problém s podmnožinou (zvláštní případ batoh problém ).[5] Problém je následující: daný soubor celých čísel a celé číslo , najít podmnožinu které součty . Obecně je o tomto problému známo, že je NP-kompletní. Pokud však je superzvýšení, což znamená, že každý prvek množiny je větší než součet všech čísel v množině menší, je problém „snadný“ a řešitelný v polynomiálním čase s jednoduchým chamtivý algoritmus.

V Merkle – Hellman dešifrování zprávy vyžaduje vyřešení zjevně „tvrdého“ problému s batohem. Soukromý klíč obsahuje mimořádně rostoucí seznam čísel a veřejný klíč obsahuje nepřesahující seznam čísel , což je ve skutečnosti "maskovaná" verze . Soukromý klíč také obsahuje některé informace o „poklopu“, které lze použít k transformaci problému s pevným batohem pomocí do snadného použití batohu .

Na rozdíl od některých jiných kryptosystémů veřejného klíče, jako je RSA, dva klíče v Merkle-Hellman nejsou zaměnitelné; soukromý klíč nelze použít k šifrování. Merkle-Hellman tedy není přímo použitelný pro autentizaci pomocí kryptografické podepisování, ačkoli Shamir zveřejnil variantu, kterou lze použít k podpisu.[6]

Generování klíčů

1. Vyberte velikost bloku . Celá čísla až tímto klíčem lze zašifrovat bity na délku.

2. Vyberte náhodnou superrychlou sekvenci kladná celá čísla

To znamená velmi vysoký požadavek , pro .

3. Vyberte náhodné celé číslo takhle

4. Vyberte náhodné celé číslo takhle (to znamená, a jsou coprime ).

5. Vypočítejte posloupnost

kde .

Veřejný klíč je a soukromý klíč je .

Šifrování

Nechat být -bitová zpráva skládající se z bitů , s bit nejvyššího řádu. Vyberte každý pro který je nenulová a sečtěte je dohromady. Ekvivalentně vypočítat

.

Šifrovací text je .

Dešifrování

K dešifrování šifrovacího textu , musíme najít podmnožinu které součty . Děláme to transformací problému na jeden z hledání podmnožiny . Tento problém lze od té doby vyřešit v polynomiálním čase je superincreasing.

1. Vypočítejte modulární inverzní z modulo za použití Rozšířený euklidovský algoritmus. Inverzní bude existovat od je coprime .

Výpočet je nezávislá na zprávě a lze ji provést pouze jednou, když je vygenerován soukromý klíč.

2. Vypočítat

3. Vyřešte problém se součtem podmnožiny pro pomocí superincreasing sekvence jednoduchým chamtivým algoritmem popsaným níže. Nechat být výsledným seznamem indexů prvků který součet . (To znamená, .)

4. Vytvořte zprávu s 1 v každém bitová pozice a 0 ve všech ostatních bitových pozicích:

Řešení problému součtu podmnožiny

Tento jednoduchý chamtivý algoritmus najde podmnožinu superrychlé sekvence které součty , v polynomiálním čase:

1. Inicializujte do prázdného seznamu.
2. Najděte největší prvek v což je menší nebo rovno , řekněme .
3. Odečíst: .
4. Připojit do seznamu .
5. Pokud je větší než nula, vraťte se ke kroku 2.

Příklad

Generování klíčů

Vytvořte klíč k šifrování 8bitových čísel vytvořením náhodné superzvýšené sekvence 8 hodnot:

Součet z nich je 706, proto vyberte větší hodnotu pro :

.

Vybrat být coprime :

.

Vytvořte veřejný klíč vynásobením každého prvku v podle modulo :

Proto .

Šifrování

Nechť je 8bitová zpráva . Násobíme každý bit odpovídajícím číslem v a přidejte výsledky:

  0 * 295+ 1 * 592+ 1 * 301+ 0 * 14+ 0 * 28+ 0 * 353+ 0 * 120+ 1 * 236    = 1129

Šifrový text je 1129.

Dešifrování

K dešifrování 1129 nejprve použijte Extended Euclidean Algorithm k nalezení modulární inverze mod :

.

Vypočítat .

Pomocí chamtivého algoritmu rozložte 372 na součet hodnoty:

Tím pádem a seznam indexů je . Zprávu lze nyní vypočítat jako

.

Kryptoanalýza

V roce 1984 Adi Shamir zveřejnil útok na kryptosystém Merkle-Hellman, který dokáže dešifrovat šifrované zprávy v polynomiálním čase bez použití soukromého klíče. [7] Útok analyzuje veřejný klíč a hledá dvojici čísel a takhle je superrychle rostoucí sekvence. The pár nalezený útokem se nemusí rovnat v soukromém klíči, ale stejně jako tento pár může být použit k transformaci problému s pevným batohem pomocí do snadného problému s použitím superincidující sekvence. Útok funguje pouze na veřejném klíči; není nutný přístup k šifrovaným zprávám.

Reference

  1. ^ Schneier, Bruce (1996). Aplikovaná kryptografie. New York: John Wiley & Sons. ISBN  0-471-12845-7.
  2. ^ Stinson, Douglas R. (1995). Kryptografie: teorie a praxe. Boca Raton: CRC Press. ISBN  0-8493-8521-0.
  3. ^ Whitfield Diffie; Martin Hellman (1976). "Nové směry v kryptografii". Transakce IEEE na teorii informací. 22 (6): 644. CiteSeerX  10.1.1.37.9720. doi:10.1109 / TIT.1976.1055638.
  4. ^ Merkle, Ralph; Hellman, Martin (1978). "Skrytí informací a podpisů v batohu padacích dveří". Transakce IEEE na teorii informací. 24 (5): 525–530. doi:10.1109 / TIT.1978.1055927.
  5. ^ Cherowitzo, William (02.03.2002). „Kryptosystém Merkle-Hellman Knapsack Cryptosystem“. Math 5410 - Modern Cryptology. Citováno 2019-08-18.
  6. ^ Shamir, Adi (červenec 1978). "Schéma rychlého podpisu". Technické memorandum o laboratoři MIT pro informatiku. 79 (MIT / LCS / TM – 107): 15240. Bibcode:1978STIN ... 7915240S.
  7. ^ Shamir, Adi (1984). "Algoritmus polynomiálního času pro rozbití základního kryptosystému Merkle - Hellman". Transakce IEEE na teorii informací. 30 (5): 699–704. doi:10.1109 / SFCS.1982.5.