Nightingale-Strassen teszt

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2022. január 3-án felülvizsgált verziótól ; az ellenőrzések 4 szerkesztést igényelnek .

A Nightingale-Strassen teszt  egy valószínűségi primalitási teszt , amelyet az 1970-es években Robert Martin Nightingale és Volker Strassen fedezett fel. [1] A teszt mindig helyesen határozza meg, hogy egy prímszám prím, de összetett számokra bizonyos valószínűséggel helytelen választ adhat. A teszt fő előnye, hogy a Fermat-teszttel ellentétben a Carmichael-számokat összetettként ismeri fel .

Történelem

A 17. században Fermat bebizonyította a később Fermat kis tételének nevezett állítást, amely Fermat primalitástesztjének alapjául szolgál :

Ha n  prím, és a nem osztható n -nel , akkor .

Ez az ellenőrzés egy adott n -re nem igényel sok számítást, de fordítva nem igaz. Így vannak olyan Carmichael-számok, amelyek összetettek, amelyekre a Fermat-féle kis tételben adott állítás minden adott számmal rendelkező másodlagos egészre érvényes. 1994-ben kimutatták, hogy végtelenül sok ilyen szám létezik. [2] A Fermat-teszt feltárt hiányossága kapcsán aktuálissá vált a valószínűségi tesztek megbízhatóságának növelésének problémája. Lehmann volt az első, aki olyan tesztet javasolt, amely a Carmichael-számokat összetettként szűri ki. Ez a hiányosság a Solovey-Strassen- és Miller-Rabin-tesztekből sem hiányzik, mivel a kimaradási kritérium erősebb, mint Fermat kis tétele. Egymástól függetlenül D. Lemaire 1976-ban és R. Nightingale F. Strassennel 1977-ben bebizonyította, hogy nincs analógja az összetett és egyben Euler-féle álegyszerű Carmichael-számoknak. [3] Ennek alapján javasolták a Solovay-Strassen-féle elsődlegességi tesztet, amely 1977-ben jelent meg, kiegészítései 1978-ban.

Indoklás

A Solovay-Strassen teszt Fermat kis tételén és a Jacobi szimbólum tulajdonságain alapul [4] :

Az összehasonlítást kielégítő n összetett számokat a bázisban Euler-Jacobi pszeudoprímeknek nevezzük .

Bizonyíték [5] A szükségszerűség a Legendre szimbólumra vonatkozó Euler-kritériumból következik . Az elégséges bizonyításhoz az ellentmondásos módszert alkalmazzuk. Tételezzük fel, hogy n összetett, és ezzel egyidejűleg az összehasonlítást végezzük . Ebből azt kapjuk, hogy n egy Carmichael-szám, tehát ahol egy prím i = 1,2, ...k Tekintsük b -t olyannak, hogy Keressünk egy olyan a -t , hogy: Egy ilyen létezik a kínai maradéktétel szerint , és -hez tartozik , mivel n -hez koprím . Innen ered az ellentmondás azzal a ténnyel, hogy tehát hamis az a feltevésünk, hogy n összetett.

A Solovay-Strassen algoritmus

A Solovay-Strassen algoritmust [6] a k körök számával paraméterezzük . Minden körben véletlenszerűen kiválasztunk egy a < n számot . Ha gcd ( a , n ) > 1, akkor n összetett. Ellenkező esetben az összehasonlítás érvényességét ellenőrizzük . Ha nem teljesül, akkor az a döntés születik, hogy n  összetett. Ha ez az összehasonlítás igaz, akkor a tanúja az n prímnek . Ezután egy másik véletlen a -t választunk , és az eljárást megismételjük. Miután k körben találtunk k primalitástanút , arra a következtetésre jutunk, hogy n egy valószínűségű prímszám .

A pszeudokódban az algoritmus a következőképpen írható fel:

Bemenet : > 2, tesztelje a páratlan természetes számot; , a teszt pontosságát meghatározó paraméter. Kimenet : kompozit , pontosan kompozitot jelent; valószínűleg prím azt jelenti, hogy valószínűleg prím. ha i = 1, 2, ..., : = véletlenszerű egész szám 2-től ig , beleértve; ha gcd (a, n) > 1, akkor : print , ami összetett, és stop . if , akkor : összetett kimenet , és stop . _ ellenkező esetben származtassa , ami valószínűséggel prím , és állítsa le .

Példa az algoritmus alkalmazására

Ellenőrizzük az n = 19 számot az egyszerűség kedvéért. A k = 2 pontossági paramétert választjuk.

k = 1 Válasszunk egy véletlen számot a = 11; 2 < a < n - 1 Ellenőrizze a gcd(a,n)>1 feltételt gcd(11,19)=1; majd ellenőrizzük az összehasonlítást , ezt kaptuk, ezért továbblépünk a következő iterációra k = 2 Válasszunk egy véletlen számot a = 5; 2 < a < n - 1 Ellenőrizze a gcd(a,n)>1 feltételt gcd(5,19)=1; ezért ellenőrizzük az összehasonlítást , és ez volt az utolsó iteráció, ezért arra a következtetésre jutunk, hogy a 19 egy prímszám, amelynek valószínűsége

Számítási összetettség és pontosság

teszt neve valószínűség( hogy a szám összetett ) [7] jegyzetek
Tanya nem ismeri fel a Carmichael-számokat összetettnek
Lehmann
Nightingale - Strassen

Alkalmazás

Valószínűségi teszteket használnak a faktorizációs problémán alapuló rendszerekben , mint például az RSA vagy a Rabin-séma . A gyakorlatban azonban a Solovey-Strassen teszt megbízhatósági foka nem elegendő, helyette a Miller-Rabin tesztet használják . Sőt, kombinált algoritmusokkal, mint például a próbaosztás és a Miller-Rabin teszt, a paraméterek megfelelő megválasztásával jobb eredményeket érhet el, mint az egyes teszteket külön-külön. [7]

Javítás tesztelése

2005-ben a Bit+ "Információs Technológiák -2005" Nemzetközi Konferencián A. A. Balabanov, A. F. Agafonov, V. A. Ryku korszerűsített Solovay-Strassen tesztet javasolt. A Nightingale-Strassen teszt a Jacobi-szimbólum kiszámításán alapul, ami a -val egyenértékű időt vesz igénybe . A javítás ötlete az, hogy a Gauss-féle másodfokú reciprocitás tételének megfelelően menjen a Jacobi-szimbólum reciproka értékének kiszámításához, ami egy egyszerűbb eljárás. [8] .

Lásd még

Jegyzetek

  1. 1 2 Solovay, Robert M. és Volker Strassen. Gyors Monte-Carlo teszt az elsődlegességért  // SIAM  Journal on Computing : folyóirat. - 1977, benyújtva 1974-ben . 6 , sz. 1 . - 84-85 . o . - doi : 10.1137/0206006 .
  2. WR Alford, A. Granville, C. Pomerance. Végtelenül sok Carmichael-szám van  // Annals of Mathematics  : folyóirat  . - 1994. - 1. évf. 139 . - P. 703-722 . - doi : 10.2307/2118576 . Archiválva az eredetiből 2012. május 4-én.
  3. 1 2 Cserjomuskin, 2001 , p. 48.
  4. 1 2 Neszterenko, 2011 , p. 82.
  5. N.Yu. Arany . Előadások a számítógépes algebráról. 6. előadás Carmichael tétele Nightingale - Strassen teszt. Archiválva : 2014. november 4. a Wayback Machine -nél
  6. 1 2 Neszterenko, 2011 , p. 84.
  7. 1 2 B. Schneier Alkalmazott kriptográfia - M.: TRIUMPH, 2002. — 11. fejezet.
  8. Balabanov A. A., Agafonov A. F., Ryku V. A. Algoritmus gyors kulcsgeneráláshoz az RSA kriptográfiai rendszerben. 2014. november 5-én kelt archív másolat a Wayback Machine -nél  – Tudományos és Műszaki Fejlesztési Közlemény, 2009. 7. szám (23). - S. 11.

Irodalom

  1. Koblitz N. Számelméleti és kriptográfiai tanfolyam . - 2. - M . : TVP Tudományos Kiadó, 2001. - S. 149 - 160. - 254 p. — ISBN 5-94057-103-4 .
  2. Neszterenko A. Bevezetés a modern kriptográfiába Számelméleti algoritmusok . - 2011. - S. 79 - 90. - 190 p. - ISBN 978-5-94506-320-4 .
  3. Cheremushkin AV Előadások a kriptográfiai aritmetikai algoritmusokról . - M. : MTSNMO , 2001. - S. 42 - 59. - 104 p. — ISBN 5-94057-060-7 . Archiválva : 2013. május 31. a Wayback Machine -nél
  4. Salomaa A. Nyilvános kulcsú titkosítás / Per. angolról. I.A. Vihljantsev. - M. : Mir, 1995. - S. 176 - 184. - 318 p. — ISBN 5-03-001991-X . Archiválva : 2011. november 19. a Wayback Machine -nél