Jaká prvočísla jsou bezpečná?

Whox

Jaká prvočísla jsou bezpečná?
« kdy: 20. 10. 2015, 21:01:37 »
Zdravím, nedávno tady byla ve článku zmíněna bezpečnostní chyba, která zneužívala využívání malého množství prvočísel. Program na generování prvočísel si dokáže napsat asi každý na tomhle serveru, ale chtěl bych vědět, jak velké musí být prvočísla, aby byly dostatečně bezpečné, případně kolik jich musí být k dispozici. Napadá někoho, kde bych to zjistit?
Díky za odpovědi..
« Poslední změna: 20. 10. 2015, 22:20:03 od Petr Krčmář »


Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Re:Jaké prvočísla jsou bezpečné?
« Odpověď #1 kdy: 20. 10. 2015, 21:12:03 »
Třeba 2^57885161-1 je celkem bezpečný :D Ale ono nejde tak o to, který jsou bezpečný, ale který jsou nebezpečný. Problémem je především používání relativně malé množiny předpočítaných prvočísel.

aaaaaa

Re:Jaké prvočísla jsou bezpečné?
« Odpověď #2 kdy: 20. 10. 2015, 21:15:48 »

Jenda

Re:Jaká prvočísla jsou bezpečná?
« Odpověď #3 kdy: 21. 10. 2015, 01:21:17 »
Podíval bych se do zdrojáku openssl (nebo nějakého čitelnějšího forku). Generuje se to pomocí

openssl dhparam -out dhparams-4096.pem 4096

karel2

Re:Jaká prvočísla jsou bezpečná?
« Odpověď #4 kdy: 21. 10. 2015, 07:13:53 »
Tak prvočísel je dost, problém je náročnost jejich nalezení. Proto se používá jen pár, navíc některé ty knihovny jsou poněkud staré a ty prvočísla tam jsou predpočtená z dob kdy jejich hledání by byl na nemalou chvíly. A nevím jak vám, ale čekat i dnes pár dní na vygenerování klíčů se asi nikomu nechce. Navíc se spoléhalo, že ikdyž se použijí ty samá prvočísla tak v algoritmu jsou používána náhodná čísla.
Problém bezpečnosti šifrování na pc bych viděl v tom, že matematicky to vše hezky sedí, ale implementačně prostě té náhody mnoho není. Zvláště u všech možných embeded zařízení, zvláště routry kdy se často k inicializaci generátoru náhodných čísel používal čas od startu, kupodivu ty samá zařízení startují obdobně rychle asi každý tuší k čemu to vede.


JardaA

Re:Jaká prvočísla jsou bezpečná?
« Odpověď #5 kdy: 21. 10. 2015, 07:27:27 »
Tak prvočísel je dost, problém je náročnost jejich nalezení.

Prvočísel je nekonečně mnoho, ale to hledání je opravdu oříšek.

Ivan

Re:Jaká prvočísla jsou bezpečná?
« Odpověď #6 kdy: 21. 10. 2015, 10:06:51 »
Tak prvočísel je dost, problém je náročnost jejich nalezení.

Prvočísel je nekonečně mnoho, ale to hledání je opravdu oříšek.

Je dokazano, ze mezi po sobe jdoucimi mocninami dvojky je alespon jedno. Z toho vyplyva, ze je jich nekonecne mnoho.
Jaka je jejich skutecna hustota to je vec druha. Overit, ze je neco prvocislo je vlastne stejne narocne jako faktorizace sama.
Proto se pouzivaji randomizovane algorigmy (napr. zalozene na fermatove vete). Ty ale mohou vracet i spatne vysledky, pravdepodobnost uspechu zavisi na mnozsvi invetovaneho procesoroveho casu.

Milan Straka

Re:Jaká prvočísla jsou bezpečná?
« Odpověď #7 kdy: 21. 10. 2015, 10:48:36 »
Je dokazano, ze mezi po sobe jdoucimi mocninami dvojky je alespon jedno. Z toho vyplyva, ze je jich nekonecne mnoho.

Dokonce je dokázáno, že pro každé n > 1 existuje prvočíslo větší než n a menší než 2n, viz Bertrandův postulát.

Jaka je jejich skutecna hustota to je vec druha. Overit, ze je neco prvocislo je vlastne stejne narocne jako faktorizace sama.

Tak to opravdu není stejné. Celý princip RSA je založený na tom, že zatímco test prvočíselnosti je vcelku triviální (jde provést v čase polynomiálním s délkou zápisu čísla), tak faktorizace je těžká. Skutečná obtížnost faktorizace není známá, takže se teoreticky může ukázat, že faktorizace je tak lehká jako test prvočíselnosti, ale pokud by to tak bylo, okamžitě dojde k prolomení RSA.

Proto se pouzivaji randomizovane algorigmy (napr. zalozene na fermatove vete). Ty ale mohou vracet i spatne vysledky, pravdepodobnost uspechu zavisi na mnozsvi invetovaneho procesoroveho casu.

Ve skutečnosti existují deterministické algoritmy testující prvočíselnost fungující v asymptoticky polynomiálním čase (viz např. Lenstra and Pomerance, http://www.math.dartmouth.edu/~carlp/PDF/complexity12.pdf), byť jejich konstanty jsou vysoké a jsou pomalejší než algoritmy randomizované. Skutečně bezpečná implementace generátorů prvočísel by tedy měla opakovaně použít randomizovaný algoritmus k nalezení čísla, které je s vysokou pravděpodobností prvočíslo (třeba 1 ku milionu) a na něm pak spustit deterministický algoritmus, který sice trvá déle, ale skoro určitě uspěje a nebude ho třeba opakovat.

frk

Re:Jaká prvočísla jsou bezpečná?
« Odpověď #8 kdy: 21. 10. 2015, 11:33:22 »
Dokonce je dokázáno, že pro každé n > 1 existuje prvočíslo větší než n a menší než 2n, viz Bertrandův postulát.

Dokonce je dokázáno třeba i to, že existuje nekonečně mnoho dvojic prvočísel p, p+2.

... Celý princip RSA je založený na tom, že zatímco test prvočíselnosti je vcelku triviální (jde provést v čase polynomiálním s délkou zápisu čísla), tak faktorizace je těžká....

Tak bezpečnost RSA nestojí zdaleka jen na obtížnosti faktorizace, ale ještě třeba na obtížnosti "diskrétního odlogaritmování"...

Pavel Vojáček

Re:Jaká prvočísla jsou bezpečná?
« Odpověď #9 kdy: 21. 10. 2015, 14:33:13 »

Dokonce je dokázáno třeba i to, že existuje nekonečně mnoho dvojic prvočísel p, p+2.


Není dokázáno.

ox


fedorac

Re:Jaká prvočísla jsou bezpečná?
« Odpověď #11 kdy: 21. 10. 2015, 18:14:48 »
p,p+k kde k je 2 asi opravdu ne,ale jsou dukazy, kteryma to k pomalu snizujou ... nejmin jsem videl tusim k okolo 300 - bylo to neco v souvislosti s kryptomenou Riecoin

cmyk

Re:Jaká prvočísla jsou bezpečná?
« Odpověď #12 kdy: 22. 10. 2015, 12:42:04 »
Podíval bych se do zdrojáku openssl (nebo nějakého čitelnějšího forku). Generuje se to pomocí

openssl dhparam -out dhparams-4096.pem 4096

Jestli tomu dobře rozumím, tak to není problém s entropií (/dev/random je vcelku uspokojivé), ale že možná openssl při generování toho dhparams-4096.pem používá nedostatečný počet předgenerovaných prvočísel? Najít ve zdrojáku jak to je by bylo uklidňující...

Whox

Re:Jaká prvočísla jsou bezpečná?
« Odpověď #13 kdy: 22. 10. 2015, 19:24:22 »
Podíval bych se do zdrojáku openssl (nebo nějakého čitelnějšího forku). Generuje se to pomocí

openssl dhparam -out dhparams-4096.pem 4096

Jestli tomu dobře rozumím, tak to není problém s entropií (/dev/random je vcelku uspokojivé), ale že možná openssl při generování toho dhparams-4096.pem používá nedostatečný počet předgenerovaných prvočísel? Najít ve zdrojáku jak to je by bylo uklidňující...
Právě proto jsem si říkal, že by bylo dobré vědět, jak nejen tam nějaké čísla přidat. Vygenerovat nějaké prvočísla není až tak velký problém, pokud člověk má dost času, navíc existují stránky, kde si jich člověk může spoustu stáhnout, pokud takovým stránkám bude věřit. Ale než se do něčeho takového člověk pustí, musí tomu rozumět...

JS

Re:Jaká prvočísla jsou bezpečná?
« Odpověď #14 kdy: 22. 10. 2015, 21:00:12 »
Jaka je jejich skutecna hustota to je vec druha.

Pridam se k tem ostatnim vyvracecum omylu a dodam, ze hustota prvocisel je asymptoticky n/ln(n). Takze jich je celkem dost.