Tilauksen laskenta-algoritmi

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 6. kesäkuuta 2019 tarkistetusta versiosta . tarkastukset vaativat 2 muokkausta .

Järjestyslaskenta -algoritmi ( indeksi-laskenta-algoritmi ) on todennäköisyyspohjainen algoritmi diskreetin logaritmin laskemiseksi jäännösrenkaassa alkuluvun moduloimiseksi . Diskreetin logaritmin löytämisen monimutkaisuus on monien kryptografiaan liittyvien algoritmien perusta . Koska tämän ongelman ratkaiseminen suurilla määrillä vaatii paljon resursseja, joita mikään nykyaikainen tietokone ei pysty tarjoamaan . Esimerkki tällaisesta algoritmista on GOST R 34.10-2012 .

Historia

Maurice Krajczyk ehdotti ensimmäisen kerran tämän algoritmin perusideaa kirjassaan "Théorie des Nombres" vuonna 1922. Vuoden 1976 jälkeen diskreetin logaritmin ongelma tulee tärkeäksi matematiikassa ja kryptausanalyysissä. Tämä johtuu Diffie-Hellmanin salausjärjestelmän luomisesta . Tältä osin vuonna 1977 R. Merkle jatkoi keskusteluja tästä algoritmista. Kaksi vuotta myöhemmin Merkelin kollegat julkaisivat sen ensimmäisen kerran. Lopulta vuonna 1979 Adlerman optimoi sen, tutki sen monimutkaisuutta ja esitteli sen nykyisessä muodossa. Tällä hetkellä järjestyslaskenta-algoritmi ja sen parannetut versiot tarjoavat nopeimman tavan laskea diskreettejä logaritmeja joissakin äärellisissä ryhmissä.

Diskreetin logaritmiongelman lause

Tietylle alkuluvulle ja kahdelle kokonaisluvulle on löydettävä kokonaisluku , joka tyydyttää vertailun:

jossa on elementin muodostaman syklisen ryhmän elementti .

Algoritmi

Syöttö : g - kertaluvun n  syklisen ryhmän generaattori , a  - syklisestä aliryhmästä, p  - alkuluku, c  - luotettavuusparametri, joka yleensä on 10 tai luku, joka on lähellä tätä arvoa (käytetään algoritmin toteuttamiseen tietokone, jos henkilö päättää, sitä ei ole asetettu).

Tehtävä : etsi x sellainen, että .

  1. Valitse tekijäkanta S = { p 1 , p 2 , p 3 , …, p t } (Jos G = Z * p , niin kanta koostuu ensimmäisestä t alkuluvusta).
  2. Nostetaan g satunnaiseen potenssiin k , jossa k on sellainen, että . Me saamme .
  3. Edustamme g k :tä seuraavasti: missä (eli yritämme jakaa sen tekijöihin). Jos se ei toimi, palaa vaiheeseen 2.
  4. Kohdasta 3 seuraa ilmaus saadaan ottamalla logaritmi (vertailu otetaan modulo ryhmän järjestyksessä, koska työskentelemme eksponentin kanssa, mutta ryhmässä G ). Logaritmit ovat tuntemattomia tässä lausekkeessa. Niitä on t . On tarpeen saada sellaiset yhtälöt t  +  c kappaletta, jos tämä ei ole mahdollista, palataan vaiheeseen 2 (kun se toteutetaan tietokoneella) tai hankitaan tarvittava määrä yhtälöitä kaikkien tuntemattomien logaritmien löytämiseksi (kun ne on ratkaistu).
  5. Ratkaisemme tuloksena olevan yhtälöjärjestelmän t tuntemattomilla ja t  +  c -vertailuilla.
  6. Valitsemme satunnaisluvun k siten, että . Me laskemme .
  7. Toistamme kohdan 3 vain numerolle . Jos se ei toimi, palataan kuudenteen kappaleeseen.
  8. Samoin kuin kohdassa 4, saamme: , missä ( ), missä . Tässä vaiheessa ratkaisimme diskreetin logaritmin ongelman etsimällä .

Lähtö : .

Esimerkki

Ratkaise yhtälö:

Valitse tekijäkanta Olkoon k = 7 Laske

Otamme logaritmin ja merkitsemme Ja saamme yhtälöjärjestelmän

Me ratkaisemme sen

Todellakin , siis ,

Löydämme k sellaista

Näin ollen

Otetaan tämän lausekkeen logaritmi ja saadaan

Vastaus :

Vaikeus

Tässä algoritmissa iteraatioiden määrä riippuu sekä p :n koosta että tekijäkannan koosta. Mutta valitsemme tekijäkannan etukäteen, ja sen koko on kiinteä. Siksi lopullinen monimutkaisuus määräytyy vain alkuluvun koon mukaan ja on yhtä suuri kuin: , missä ,  ovat joitain vakioita, jotka riippuvat välilaskutoimituksista, erityisesti tekijäkannan valinnasta.

Parannukset

Nopeutettu tilauslaskentaalgoritmi , jonka ydin on indeksitaulukon käyttö.

Vaikeus

Laskennallinen monimutkaisuus on vähennetty alkuperäiseen algoritmiin verrattuna.

Katso myös

Linkit