EPOC (šifrovací schéma)
EPOC ( Efficient Probabilistic Public Key Encryption ; efektivní pravděpodobnostní šifrování veřejným klíčem) je pravděpodobnostní
schéma šifrování veřejného klíče .
EPOC vyvinuli v listopadu 1998 T. Okamoto, S. Uchiyama a E. Fujisaki z NTT Laboratories v Japonsku . Je založen na modelu náhodného orákula , ve kterém je funkce šifrování veřejného klíče převedena na bezpečné šifrovací schéma pomocí (skutečně) náhodné hašovací funkce; výsledné schéma je navrženo tak, aby bylo sémanticky bezpečné proti útokům na základě zvoleného šifrového textu [1] .
Typy schémat
Funkce šifrování EPOC je funkce OU (Okamoto-Uchiyama), kterou lze invertovat stejně obtížně jako faktor složeného celočíselného veřejného klíče. Existují tři verze EPOC [2] :
- EPOC-1, využívající jednosměrnou funkci (anglicky trapdoor function) a náhodnou funkci (hash function) [3] .;
- EPOC-2 používající jednosměrnou funkci , dvě náhodné funkce (hashovací funkce) a šifrování symetrickým klíčem (jako jsou jednorázové vycpávky a blokové šifry) [4] ;
- EPOC-3 používá jednosměrnou funkci OU (Okamoto-Uchiyama) a dvě náhodné funkce (hashovací funkce), stejně jako jakékoli symetrické šifrovací schéma, jako jsou jednorázové bloky (anglicky one-time pad) nebo bloková šifra .
EPOC má následující vlastnosti:
- EPOC-1 je sémanticky bezpečný , odolný vůči vybraným útokům šifrovaného textu ( IND-CCA2 nebo NM-CCA2 ) v modelu náhodného orákula [6] za předpokladu p-podskupiny , který je výpočetně srovnatelný s předpoklady kvadratického zbytku a vyššího stupně.
- EPOC-2 s jednorázovou podložkou je sémanticky bezpečný , odolný vůči vybraným útokům šifrovaným textem ( IND-CCA2 nebo NM-CCA2 ) v modelu náhodného orákula za předpokladu faktorizace.
- EPOC-2 se symetrickým šifrováním je sémanticky bezpečný , odolný vůči útokům na základě zvoleného šifrovaného textu ( IND-CCA2 nebo NM-CCA2 ) v modelu náhodného orákula za předpokladu faktorizace, pokud je základní symetrické šifrování zabezpečené proti pasivním útokům (zobrazte útoky, kde kryptoanalytik má možnost vidět pouze přenášené šifrové texty a generovat vlastní pomocí veřejného klíče .).
Pozadí
Diffie a Hellman navrhli koncept kryptosystému s veřejným klíčem (nebo jednosměrné funkce ) v roce 1976. Ačkoli mnoho kryptografů a matematiků provedlo rozsáhlý výzkum implementace konceptu kryptosystémů s veřejným klíčem již více než 20 let, bylo nalezeno jen velmi málo konkrétních metod, které jsou bezpečné [7] .
Typickou třídou metod je RSA-Rabin , což je kombinace polynomiálního algoritmu pro nalezení kořene polynomu v kruhu zbytků modulo složené číslo (v konečném poli ) a neřešitelný problém faktorizace (z hlediska výpočetního složitost ). Další typickou třídou metod je Diffie-Hellmanova, ElGamalova metoda , která je kombinací komutativní vlastnosti logaritmu v konečné abelovské grupě a neřešitelného problému diskrétního logaritmu [8] .
Mezi metodami RSA-Rabin a Diffie-Hellman-ElGamal pro implementaci jednosměrné funkce se žádná jiná funkce než Rabinova funkce a její varianty, jako je její eliptická křivka a Williamsovy verze, neprokázala jako tak robustní jako primitivní funkce. problémy [9] (např., faktorizace a problémy s diskrétním logaritmem ).
Okamoto a Uchiyama navrhli jednosměrnou funkci nazvanou OU (Okamoto-Uchiyama), která je praktická, prokazatelně bezpečná a má některé další zajímavé vlastnosti [10] .
- Pravděpodobnostní funkce: Toto je jednosměrná pravděpodobnostní funkce . Dovolit být šifrovaný text v otevřeném textus náhodným.



- Jednostrannost funkce: Ukázalo se, že invertování funkce je stejně těžké jako faktorizace.

- Sémantické zabezpečení: Funkce je sémanticky bezpečná , pokud platí následující předpoklad ( předpoklad p-podskupiny ):avýpočetně nerozlišitelné, kdeajsou jednotně a nezávisle vybrány z. Tento předpoklad nerozlišitelnosti šifrovaného textu pro útoky se shodným prostým textem je výpočetně srovnatelný s nalezením kvadratického zbytku a zbytku vyššího stupně.





- Efektivita: V prostředí kryptosystému s veřejným klíčem , kde se kryptosystém s veřejným klíčem používá pouze k šíření tajného klíče (například 112 a 128 bitů dlouhý) kryptosystému s tajným klíčem (například Triple DES a IDEA ), je šifrování a dešifrování rychlost funkce OU je srovnatelná (několikrát pomalejší) s rychlostí kryptosystémů s eliptickou křivkou .
- Vlastnost homomorfního šifrování: Funkce má vlastnost homomorfního šifrování: (Tato vlastnost se používá pro elektronické hlasování a další šifrovací protokoly ).

- Nerozlišitelnost šifrovaného textu : I ten, kdo nezná tajný klíč, může změnit šifrový text,, na jiný šifrový text,, a přitom zachovat otevřený text m (tj.), a spojení meziamůže být skryté (tj.anerozlišitelné). Tato vlastnost je užitečná pro protokoly ochrany osobních údajů.)







Důkaz o zabezpečení šifrovacího schématu
Jednou z nejdůležitějších vlastností šifrování veřejným klíčem je prokazatelné zabezpečení . Nejsilnějším konceptem zabezpečení v šifrování veřejným klíčem je sémantická ochrana proti útokům na základě zvoleného šifrovaného textu .
Ochrana proti sémantickému útoku založená na adaptivně zvoleném šifrovém textu ( IND -CCA2 ) se ukázala jako ekvivalentní (nebo dostatečná) s nejsilnějším bezpečnostním konceptem ( NM-CCA2 ) [12] [13] .
Fujisaki a Okamoto implementovali dvě běžná a účinná opatření k transformaci pravděpodobnostní jednosměrné funkce na bezpečný obvod IND-CCA2 v modelu náhodného orákula [6] . Jedním z nich je převod sémanticky bezpečné ( IND-CPA ) jednosměrné funkce na bezpečné schéma IND-CCA2 . Ostatní, od jednosměrné funkce (OW-CPA) a šifrování symetrickým klíčem (včetně jednorázové podložky) až po zabezpečené schéma IND-CCA2 . Posledně jmenovaná transformace může zaručit úplnou bezpečnost systému šifrování veřejného klíče v kombinaci se schématem šifrování symetrickým klíčem [14] .
Schéma šifrování EPOC
Přehled
Schéma šifrování veřejného klíče EPOC , které je specifikováno trojicí , kde je operace generování klíče, je operace šifrování a je operace dešifrování.




Schémata EPOC: EPOC-1 a EPOC-2.
EPOC-1 je pro distribuci klíčů, zatímco EPOC-2 je pro distribuci klíčů a šifrovaný přenos dat a delší distribuci klíčů s omezenou velikostí veřejného klíče.
Typy klíčů
Existují dva typy klíčů: veřejný klíč OU a soukromý klíč OU, oba se používají v kryptografických šifrovacích schématech EPOC-1, EPOC-2 [15] .
Veřejný klíč OU [15]
Veřejný klíč organizační jednotky je sada, jejíž komponenty mají následující hodnoty:

je nezáporné celé číslo
je nezáporné celé číslo
je nezáporné celé číslo
— tajný parametr, nezáporné celé číslo
V praxi má modul v organizační jednotce veřejného klíče tvar , kde a jsou dvě různá lichá prvočísla a bitová délka a je rovna . -prvek v tak, že pořadí v je , kde . -prvek v .















Soukromý klíč organizační jednotky [15]
Soukromý klíč organizační jednotky je sada, jejíž součásti mají následující hodnoty:

— první faktor, nezáporné celé číslo
— druhý faktor, nezáporné celé číslo
— tajný parametr, nezáporné celé číslo
— hodnota , kde , nezáporné celé číslo

Vytvoření klíče: G
Vstup a výstup jsou následující:

[Vstup]: Tajný parametr ( ) je kladné celé číslo.


[Výstup]: Pár veřejného klíče a soukromého klíče .


Operace přihlášení vypadá takto:


- Zvolme dvě prvočísla , ( ) a vypočítejme . Tady a takové, že a jsou prvočísla, a a takové, že .











- Vybíráme náhodně tak, aby se pořadí rovnalo (Všimněte si, že gcd( , ) a gcd( , ) ).









- Vybíráme z náhodně a nezávisle na . Pojďme počítat .




- Nainstalujte . Instalovat a tak, že .




Poznámka: je další parametr, který zvyšuje účinnost dešifrování a lze jej vypočítat z a . když ( -konstanta ). mohou být opraveny systémem a sdíleny mnoha uživateli.








Šifrování: E
Vstup a výstup jsou následující:

[Vstup]: Prostý text spolu s veřejným klíčem .


[Výstup]: Šifrovaný text C.
Vstupní operace vypadá takto:



- Pojďme si vybrat a spočítat . Zde znamená zřetězení a .





- Spočítat :

Dešifrování: D
Vstup a výstup jsou následující:

[Vstup]: Šifrovaný text spolu s veřejným klíčem a soukromým klíčem .



[Výstup]: Prostý text nebo prázdný řetězec.

Operace se vstupy a vypadá takto:




- Pojďme vypočítat , a , kde .



- Zkontrolujme, zda platí následující rovnice: .

- Pokud je výraz pravdivý, vypíše se jako dešifrovaný prostý text, kde označuje nejvýznamnější bity v . V opačném případě vypíšeme nulový řetězec.
![{\displaystyle [X]^{mLen}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c814d889c080a0430274406170a25cad6f728b2b)
![{\displaystyle [X]^{mLen}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c814d889c080a0430274406170a25cad6f728b2b)


Vytvoření klíče: G
Vstup a výstup jsou následující:

[Vstup]: Tajný parametr ( ).


[Výstup]: Pár veřejného klíče a soukromého klíče .


Operace přihlášení vypadá takto:


- Zvolme dvě prvočísla , ( ) a vypočítejme . Tady a takové, že a jsou prvočísla, a a takové, že .











- Vybíráme náhodně tak, aby se pořadí rovnalo .



- Vybíráme z náhodně a nezávisle na . Pojďme počítat .




- Nainstalujte . Instalovat a tak, že .




Poznámka: je další parametr, který zvyšuje účinnost dešifrování a lze jej vypočítat z a . když ( -konstanta ). a může být opraven systémem a sdílen mnoha uživateli.









Šifrování: E
Dovolit je dvojice šifrovacích a dešifrovacích algoritmů se symetrickým klíčem , kde délka je . Šifrovací algoritmus vezme klíč a prostý text a vrátí šifrovaný text . Dešifrovací algoritmus vezme klíč a šifrovaný text a vrátí prostý text .












Vstup a výstup jsou následující:

[Vstup]: Prostý text spolu s veřejným klíčem a .



[Výstup]: Šifrovaný text .

Operace se vstupy a vypadá takto:




- Pojďme si vybrat a spočítat .


;
Poznámka: Typickou implementací je jednorázová podložka. To znamená, , a , kde označuje bitovou operaci XOR .




Dešifrování: D
Vstup a výstup jsou následující:

[Vstup]: Šifrovaný text spolu s veřejným klíčem , tajným klíčem a .




[Výstup]: Prostý text nebo prázdný řetězec.

Operace se vstupy , a je následující:





- Pojďme vypočítat , a , kde .



- Vypočítat

- Zkontrolujme, zda platí následující rovnice: .

- Je-li výraz pravdivý, vypíše se jako dešifrovaný prostý text. V opačném případě vypíšeme nulový řetězec.

Poznámky
- ↑ 1 2 T. Okamoto; S. Uchiyama, 1998 , str. jeden.
- ↑ Katja Schmidt-Samoa, 2006 .
- ↑ T. Okamoto; S. Uchiyama, 1998 , str. 2-3.
- ↑ Prof. Jean-Jacques Quisquater, Math RiZK, 2002 , str. 3-4.
- ↑ Prof. Jean-Jacques Quisquater, Math RiZK, 2002 , str. 8-11.
- ↑ 1 2 E. Brickell, D. Pointcheval, S. Vaudenay, M. Yung, 2000 .
- ↑ W. DIFFIE AND ME HELLMAN, 1976 .
- ↑ T. Elgamal, 1985 .
- ↑ T. Okamoto; S. Uchiyama, 1998 , str. 5.
- ↑ T. Okamoto; S. Uchiyama, 1998 , str. čtyři.
- ↑ T. Okamoto; S. Uchiyama, 1998 , str. 3-4.
- ↑ Maxwell Krohn, 1999 , s. 53.
- ↑ Bellare, M., Desai, A., Pointcheval, D. a Rogaway, P., 1998 .
- ↑ 1 2 3 T. Okamoto; S. Uchiyama, 1998 , str. 5.
- ↑ 1 2 3 NTT Corporation, 2001 , str. 7.
- ↑ NTT Corporation, 2001 , str. 9-10.
Literatura
- Tatsuaki Okamoto Shigenori Uchiyama Eiichiro Fujisaki. Bezpečná integrace asymetrických a symetrických šifrovacích schémat . — 1999.
- W. DIFFIE A JÁ HELLMAN. Nové směry v kryptografii . — 1976.
- Maxwell Krohn. K definicím kryptografické bezpečnosti : Přehodnocený útok na vybraný šifrový text . — 1999.
- T. Elgamal. Šifrovací systém s veřejným klíčem a schéma podpisu založené na diskrétních logaritmech . — 1985.
- Laboratoře platformy pro sdílení informací NTT, NTT Corporation. Specifikace EPOC-2 . - 2001. - S. 7-10 .
- Tatsuaki Okamoto Shigenori Uchiyama Eiichiro Fujisaki. EPOC: Efektivní pravděpodobnostní šifrování veřejného klíče . - 1998. - S. 1-12 .
- Hodnotitel: Prof. Jean-Jacques Quisquater, Math RiZK, poradenství; Vědecká podpora: Dr. François Koeune, K2Crypt. Hodnocení bezpečnosti šifrovacího schématu . — 2002.
- E.Brickell, D.Pointcheval, S.Vaudenay, M.Yung. Ověření návrhu pro schémata podpisu založená na diskrétním logaritmu . - 2000. - S. 276-292 .
- Bellare, M., Desai, A., Pointcheval, D. a Rogaway, P. Relations Among Notions of Security for Public-Key Encryption Schemes, Proc. of Crypto'98, LNCS 1462, Springer-Verlag, (anglicky) . - 1998. - S. 26–45 .
- Katja Schmidt Samoa. Nová permutace poklopových dveří typu Rabin ekvivalentní faktoringu . - 2006. - S. 86–88 .