Williams Cryptosystem on julkisen avaimen salausjärjestelmä, jonka Hugh Cowie Williams loi vuonna 1984.
Algoritmi kehitettiin vuonna 1984 vaihtoehdoksi tunnetummalle RSA:lle. Kehityksen tarkoituksena oli päästä eroon kryptojärjestelmän haavoittuvuuksista.
Minkä tahansa kryptojärjestelmän osalta on toivottavaa, että todistetaan, että sen rikkoutumisen laskennallinen monimutkaisuus on samanlainen kuin sellaisen ongelman laskennallinen monimutkaisuus, jota ei tällä hetkellä voida ratkaista ennakoitavissa olevassa ajassa. Williamsin salausjärjestelmä perustuu RSA:n tapaan oletukseen, että suuria lukuja on vaikea faktoroida, ja on todistettu, että minkä tahansa salatekstin murtamiseen alustavan kryptaanalyysin avulla (jossa on vain julkinen avain), on välttämätöntä tekijöitä [ 1] , eli ratkaise yhtälö ja . Tätä väitettä ei ole todistettu RSA - järjestelmälle . Tekijöintiongelman laskennallista monimutkaisuutta ei tunneta, mutta sen uskotaan olevan melko korkea. Mutta kuten RSA, Williamsin salausjärjestelmä on alttiina salakirjoitushyökkäyksille.
Vaikka Williamsin järjestelmäalgoritmi ei olekaan laskennallisesti monimutkaisempi kuin RSA, sitä on paljon hankalampi kuvata. Sille on olemassa lemma [2] , joka kuvataan matemaattista laitteistoa käsittelevässä osiossa - sillä on keskeinen rooli tässä kryptojärjestelmässä.
Aluksi on määriteltävä terminologia - se on lainattu neliökenttien teoriasta , mutta salausjärjestelmässä tarvitaan vain alkeellisia tietoja. Harkitse elementtiä
missä ovat kokonaislukuja, ja on ehdollinen elementti, jonka neliö on . Sitten seuraavat kaavat ovat voimassa:
Luvun konjugaattia kutsutaan
Määrittelemme myös funktioita, jotka auttavat meitä ilmaisemaan tämän luvun tehon. Päästää
niin u voidaan ilmaista seuraavasti:
Viimeinen lauseke on vain ymmärtämisen helpottamiseksi. Koska funktiot on määritelty pareille , ne eivät sisällä . Jos nyt oletetaan, että , voimme kirjoittaa seuraavat toistuvuussuhteet:
Nämä kaavat on suunniteltu nopeasti laskemaan ja . Koska ja , se ei myöskään riipu .
LemmaAntaa olla kahden parittoman alkuluvun tuote ja ; ovat kokonaislukuja, jotka täyttävät yhtälön . Anna Legendre-symbolien täyttää kongruenssit
.Olkoon lisäksi ja Jacobi-symboli yhtä suuri kuin 1. Merkitään
ja oletamme sen ja täytämme vertailun
.Näillä oletuksilla
Ensin valitaan kaksi alkulukua ja ja niiden tulo lasketaan . Luettelon avulla valitaan luku siten, että Legendre-symbolit täyttävät lemman asetetut ehdot. Sitten (myös valinnalla) määritetään numero siten, että Jacobi-symboli
ja Numero valitaan samalla tavalla kuin lemassa:
Sitten valitaan luvut , jotka täyttävät lemman asetetut ehdot. Valitsemme satunnaisen, esimerkiksi , ja laskemme kaavan mukaan
Sitten on julkinen avain ja yksityinen avain.
Kaikki laskelmat tässä ovat modulo . Tässä oleva merkintä tarkoittaa Esitetään pelkkä teksti numerona . Määrittele ja : jos Jacobi-symboli on yhtä suuri kuin , niin
jamuuten määrittelemme tuotteen kautta
jaSitten on helppo varmistaa, että Jacobi-symboli
joka varmistetaan suoralla laskennalla (toisessa tapauksessa ottaen huomioon Jacobi-symbolin valinta ja moninkertaisuus ). Seuraavaksi löydämme numeron
Esitetään se muodossa, joka täyttää lemman asetetut ehdot. Todellakin, ne täyttävät rakennusehdot, ja
Viimeisestä kaavasta seuraa, että
Kun se on saatu , se tulee salata eksponentioimalla - tulos voidaan esittää ja joka voidaan [3] nopeasti (operaatioiden lukumäärälle järjestyksessä ) löytää toistuvia kaavoja käyttäen. Otetaan käyttöön merkintä
Silloin kryptoteksti on kolminkertainen numeroista missä
Salauksen purku on helpompaa. Ensin laskettu
mitä hyökkääjä voi tehdä. Mutta lopullista salauksen purkamista varten on tarpeen laskea, kuten lemmassa esitetään - huolimatta siitä, mitä pidetään salassa.
Viestissä välitetty numero ilmaisee, mikä merkeistä on oikein - se, joka antaa parillisen vai joka antaa parittoman. Numero osoittaa, tuleeko tulos kertoa luvulla . Tämän seurauksena saamme numeron
Ja voimme helposti löytää lähdetekstin, joka viimeistelee salauksen purkuprosessin.
Kuten RSA, salausjärjestelmään voidaan hyökätä valitun salatekstin perusteella . Oletetaan, että kryptoanalyytikko on löytänyt algoritmin, joka mahdollistaa kryptotekstin purkamisen todennäköisyydellä. Sitten hän voi tehdä seuraavan:
1. Valitse numero siten, että Jacobi-symboli ; 2. Salaa , mutta siten, että mainittu Jacobi-symboli on yhtä suuri kuin ja , vastaanotettuaan kryptotekstin lähdössä ; 3. Pura vastaanotetun kryptotekstin salaus saadaksesi jonkin verran .Sitten todennäköisyydellä kryptanalyytikko voi saada
tai
Tämä mahdollistaa salausjärjestelmän jakamisen ja murtamisen.
Avaimen luomisen jälkeen päälaskelmat tapahtuvat nostettaessa luku potenssiin, ja tämä voidaan tehdä modulokertolaskuissa, joista jokainen tapahtuu yhteenlaskuoperaatioissa, jotka puolestaan suoritetaan vakionopeuden alkeissummausoperaatioissa - eli , in , samalla nopeudella, joka on RSA:n käyttämiseen vaaditun kokonaisluvun modulon eksponentio.
Valitaan esimerkiksi ja , jonka tuote on . Koska
ja
Voit valita . Lisäksi, jos valitsemme , saamme
Mikä täyttää lauseen ehdon. Seuraavaksi saamme
Ja lopuksi valitsemme salauksen ja salauksen purkamisen eksponentit: since
Voi valita
Olkoon alkuperäinen teksti . Koska
Meillä on , ja
Koska se on outoa, saamme . Laskettuamme ja saamme
Näin ollen salateksti on kolmiosainen .
Nyt sinun pitäisi laskea :
Koska , laskemme myös
Koska , sitten on pariton ja
Ottaen huomioon, että salatekstin toinen komponentti on , päättelemme, että . Tässä tapauksessa
.Siten saimme , joka oli alkuperäinen selväkieli.