Käänteinen modulo an kokonaisluku a on kokonaisluku x siten, että tulo ax on kongruentti 1 modulo m :n kanssa [1] . Tavallisessa modulaarisessa aritmeettisessa merkinnässä tämä vastaavuus kirjoitetaan seuraavasti:
joka on lyhennetty tapa sanoa, että m jakaa (ilman jäännösjäännöstä) arvon ax − 1 , tai toisin sanoen, jäännös, kun ax jaetaan kokonaisluvulla m , on 1. Jos a :lla on käänteismoduuli m , sitten tälle ekvivalenssille on ääretön määrä ratkaisuja, jotka muodostavat tämän moduulin jäännösluokan . Lisäksi millä tahansa kokonaisluvulla, joka on ekvivalentti a :lla (eli ekvivalenssiluokasta a ), on mikä tahansa ekvivalenssiluokan x elementti käänteisenä. Muistimerkin käyttö ekvivalenssiluokalle, joka sisältää , yllä oleva lauseke voidaan kirjoittaa seuraavasti: käänteiselementti modulo ekvivalenssiluokka on ekvivalenssiluokka siten, että
missä symboli tarkoittaa ekvivalenssiluokkien kertolaskua modulo m [2] . Tällainen merkintätapa edustaa analogia tavanomaiselle käänteisluvun käsitteelle rationaalisten tai reaalilukujen joukossa , jos korvaamme luvut ekvivalenssiluokilla ja määrittelemme oikein binäärioperaatiot .
Tämän operaation peruskäyttö on ratkaista muodon lineaarinen vastaavuus:
Modulaarisen käänteisen löytämisellä on käytännön sovelluksia kryptografian alalla , kuten julkisen avaimen salausjärjestelmä ja RSA-algoritmi [3] [4] [5] . Näiden sovellusten toteutuksen etuna on, että on olemassa erittäin nopea algoritmi ( Extended Euclid's algoritm ), jolla voidaan laskea modulaarisia käänteisarvoja.
Tietylle positiiviselle luvulle m kahden kokonaisluvun a ja b sanotaan olevan kongruentteja modulo m , jos m jakaa niiden eron. Tämä binäärisuhde on merkitty nimellä
Tämä on kokonaislukujoukon ekvivalenssirelaatio , ja ekvivalenssiluokkia kutsutaan jäännösluokiksi modulo m . Merkitään ekvivalenssiluokkaa, joka sisältää kokonaisluvun a [6] , niin
Lineaarinen vertailu on muodon modulovertailu
Toisin kuin lineaariset yhtälöt kokonaislukuina , lineaarisella vertailulla voi olla nolla, yksi tai useampi ratkaisu. Jos x on ratkaisu lineaariseen vertailuun, niin mikä tahansa elementti on myös ratkaisu, joten kun puhumme lineaarisen vertailun ratkaisujen määrästä, tarkoitamme näiden ratkaisujen sisältämien eri ekvivalenssiluokkien määrää.
Jos d on a:n ja m :n suurin yhteinen jakaja , niin lineaarisella vertailulla on ratkaisut silloin ja vain, jos d jakaa b :n . Jos d jakaa b , niin ratkaisuja on täsmälleen d [7] .
Kokonaisluvun a modulo m on ratkaisu lineaariseen vertailuun
Aikaisemmin sanottiin, että ratkaisu on olemassa, jos ja vain jos a:n ja m:n suurin yhteinen jakaja on 1 , eli a :n ja m :n on oltava suhteellisen alkulukuja . Lisäksi, jos tämä ehto täyttyy, on olemassa täsmälleen yksi ratkaisu, eli jos ratkaisu on olemassa, modulaarinen käänteisarvo on ainutlaatuinen [8] .
Jos sillä on ratkaisu, se merkitään usein seuraavasti
tätä voidaan kuitenkin pitää -arvon väärinkäytönä , koska se voidaan tulkita väärin normaaliksi käänteisluvuksi (joka, toisin kuin moduuliresiprokaali, ei ole kokonaisluku paitsi silloin, kun a on 1 tai -1). Merkintä olisi hyväksyttävä, jos a tulkittaisiin jäännösluokan merkinnäksi , koska jäännösluokan käänteisalkio on jälleen jäännösluokka, jonka kertolasku on määritelty seuraavassa osiossa.
Ekvivalenssirelaatio modulo m jakaa kokonaislukujoukon m ekvivalenssiluokkaan. Näille objekteille voidaan määrittää yhteen- ja kertolaskuoperaatiot seuraavasti: ekvivalenssiluokkien yhteen- tai kertolaskua varten valitaan ensin näiden luokkien edustajat millä tahansa tavalla, sitten suoritetaan tavallinen toimenpide valituille kokonaisluvuille ja lopuksi tulos. operaatiosta on jäännösluokassa, joka on luokkien operaation tulos. Symbolisessa muodossa, jäännösluokkien operaatioiden kanssa ja edustaa niitä, nämä määritelmät voidaan kirjoittaa muodossa
ja
Nämä toiminnot ovat hyvin määriteltyjä (mikä tarkoittaa, että lopputulos ei riipu edustajien valinnasta).
Näillä kahdella operaatiolla jäännösluokat modulo m muodostavat renkaan , jota kutsutaan kokonaislukujen renkaaksi modulo m . Näille algebrallisille kokonaisuuksille käytetään useita merkintöjä, joista yleisimmin käytetty on tai , kuitenkin joissakin perusoppikirjoissa ja sovelluksissa käytetään yksinkertaistettua merkintää , ellei se ole ristiriidassa muiden algebrallisten entiteettien kanssa.
Kokonaislukujen modulo m jäännösluokat tunnettiin perinteisesti jäännösluokina mod m , mikä kuvastaa sitä tosiasiaa, että kaikilla ekvivalenssiluokan elementeillä on sama jäännös, kun ne jaetaan m :llä . Mitä tahansa m kokonaislukujen joukkoa, joka on valittu eri jäännösluokista modulo m , kutsutaan täydelliseksi jäännösten järjestelmäksi modulo m [9] . Jakaminen sarakkeella osoittaa, että kokonaislukujen joukko {0, 1, 2, ..., m − 1} muodostaa täydellisen jäännösjärjestelmän modulo m , joka tunnetaan pienimpänä jäännösjärjestelmänä modulo m . Aritmeettisten tehtävien kanssa työskennellessä on toisinaan kätevämpää työskennellä koko jäännösjärjestelmän kanssa ja käyttää ekvivalenssikieltä, kun taas toisissa tapauksissa on kätevämpää tarkastella rengasekvivalenssiluokkia [10] .
Kaikilla kokonaisen jäännösjärjestelmän modulo m elementillä ei ole käänteisalkiota, esimerkiksi nollalla ei ole käänteistä. Sen jälkeen kun on poistettu kokonaisen jäännösjärjestelmän elementit, jotka eivät ole suhteellisen prime-arvoja m :lle, jäljellä olevilla elementeillä, joita kutsutaan pelkistetyksi jäännösjärjestelmäksi, on kaikilla käänteisarvot. Alkioiden lukumäärä pelkistetyssä jäännösjärjestelmässä on , jossa on Euler-funktio , eli m:n suhteellisesti alkulukujen lukumäärä pienempiä kuin m positiivisia kokonaislukuja .
Renkaassa , jossa on yleinen yksikkö, jokaisella elementillä ei ole käänteisarvoa , ja niitä, joilla on, kutsutaan käänteisiksi . Koska käännettävien alkuaineiden tulo on käännettävä, renkaan käännettävät elementit muodostavat ryhmän , renkaan käännettävien elementtien ryhmän , ja tätä ryhmää merkitään usein ikään kuin R olisi renkaan nimi. Kokonaislukurenkaan modulo m käännettävien elementtien ryhmää kutsutaan kokonaislukujen multiplikatiiviseksi ryhmäksi modulo m , ja se on isomorfinen pelkistetyn jäännösjärjestelmän kanssa. Erityisesti sen järjestys (koko) on .
Kun m on alkuluku , sanotaan p , niin kaikilla nollasta poikkeavilla elementeillä on käänteisarvot ja ne ovat silloin äärellinen kenttä . Tässä tapauksessa kokonaislukujen kertova ryhmä modulo p muodostaa syklisen ryhmän kertalukua p − 1 .
Havainnollistaaksesi yllä olevia määritelmiä, harkitse esimerkkiä numeroista modulo 10.
Kaksi lukua vastaavat lukua 10, jos ja vain jos niiden ero on jaollinen esimerkiksi 10:llä
koska 10 jakaa 32 − 12 = 20, koska 10 jakaa 111 − 1 = 110.Jotkut tämän moduulin jäännösluokista ovat:
Lineaarisella vertailulla ei ole ratkaisua, koska luvun 5 kanssa kongruentit kokonaisluvut (eli luvussa ) ovat kaikki parittomat, kun taas 4x ovat kaikki parillisia. Lineaarisessa vertailussa on kuitenkin kaksi ratkaisua, nimittäin ja . gcd(4, 10) = 2 ja 2 ei jaa 5:tä, mutta jakaa 6:n.
Koska gcd(3, 10) = 1, lineaarisella vertailulla on ratkaisuja, eli 3:n modulo käänteisluku on olemassa. 7 täyttää tämän yhtälön (21 − 1 = 20). Kuitenkin myös muut kokonaisluvut täyttävät tämän yhtälön, kuten 17 ja −3 (koska 3(17) − 1 = 50 ja 3(−3) − 1 = −10). Erityisesti mikä tahansa kokonaisluku arvosta täyttää yhtälön, koska nämä luvut ovat muotoa 7 + 10 r jollekin r :lle ja on selvää, että
on jaollinen 10:llä. Tässä yhtälössä on vain yksi jäännösluokka ratkaisuina. Ratkaisu voidaan tässä tapauksessa saada yksinkertaisesti luettelemalla mahdollisia luokkia, mutta suurille moduuleille ratkaisun saamiseksi tarvitaan systemaattisia algoritmeja, jotka esitellään seuraavissa osioissa.
Jäännösluokkien tulo ja voidaan saada valitsemalla alkio esimerkiksi arvosta 25 ja alkio esimerkiksi arvosta −2, ja niiden tulo (25)(−2) = −50 on ekvivalenssiluokassa . Siten ,. Lisäys määritellään samalla tavalla. Kymmenen jäännösluokkaa yhdessä näiden jäännösluokkien yhteen- ja kertolaskuoperaatioiden kanssa muodostavat kokonaislukujen renkaan modulo 10, eli .
Täydellinen jäännösjärjestelmän modulo 10 voi olla joukko {10, −9, 2, 13, 24, −15, 26, 37, 8, 9}, jossa jokainen kokonaisluku kuuluu omaan jäännösluokkaansa modulo 10. Minimijäännösjärjestelmä modulo 10 toimii 0, 1, 2, ..., 9}. Jäännösten pelkistetty järjestelmä modulo 10 voi olla {1, 3, 7, 9}. Minkä tahansa näiden lukujen edustaman kahden jäännösluokan tulo on jälleen yksi näistä neljästä luokasta. Tästä seuraa, että nämä neljä jäännösluokkaa muodostavat ryhmän, tässä tapauksessa syklisen luokan 4, jonka generaattorina on 3 tai 7. Esitetyt jäännösluokat muodostavat renkaan käännettävien elementtien ryhmän . Nämä jäännösluokat ovat juuri niitä, joilla on modulo-käänteisluvut.
Modulo m : n käänteismoduuli voidaan löytää käyttämällä laajennettua euklidista algoritmia.
Euklidesin algoritmi määrittää kahden kokonaisluvun, esimerkiksi a ja m , suurimman yhteisen jakajan (gcd) . Jos a :lla on käänteismoduuli m , tämän gcd:n on oltava yhtä suuri kuin 1. Muutama viimeinen algoritmin toiminnan aikana saatu yhtälö voidaan ratkaista gcd:n löytämiseksi. Sitten "käänteisen substituution" menetelmää käyttämällä voidaan saada lauseke, joka yhdistää alkuperäiset parametrit ja GCD:n. Toisin sanoen voidaan löytää kokonaisluvut x ja y , jotka täyttävät Bézoutin yhtälön ,
Kirjoitetaan se uudelleen seuraavasti
tuo on,
ja a :n modulokäänteisluku lasketaan. Tehokkaampi versio on laajennettu Euclid-algoritmi, joka vähentää kaksi algoritmin läpikulkua (takaisinkorvaus voidaan ajatella kulkevan algoritmin läpi käänteisessä järjestyksessä) yhdeksi käyttämällä lisäyhtälöitä.
Isolla O-merkinnällä tämä algoritmi toimii ajassa olettaen, että , ja sitä pidetään erittäin nopeana. Se on yleensä tehokkaampi kuin vaihtoehtoinen eksponentiaalinen algoritmi.
Vaihtoehtona laajennetulle euklidiselle algoritmille modulaarisen käänteiselementin laskentaan voidaan harkita Eulerin lauseen [11] käyttöä .
Eulerin lauseen mukaan , jos a on suhteellisen alkuluku m : lle , eli gcd( a , m ) = 1, niin
missä on Euler-funktio . Tämä johtuu siitä tosiasiasta, että a kuuluu kertovaan ryhmään silloin ja vain, jos a on suhteellisen alkuluku m :lle . Joten modulaarinen käänteinen löytyy suoraan:
Erikoistapauksessa, jossa m on alkuluku ja modulaarinen käänteisarvo on annettu
Tämä menetelmä on yleensä hitaampi kuin laajennettu Euclid-algoritmi, mutta sitä käytetään joskus, jos modulaarisen eksponentioinnin toteutus on jo saatavilla. Tämän menetelmän haitat:
Tämän tekniikan merkittävä etu on, että siinä ei ole ehdollisia haaroja, jotka riippuvat a:n arvosta , ja siksi a : n arvo , joka voi olla tärkeä salaisuus julkisen avaimen salausjärjestelmissä , voidaan suojata sivukanavahyökkäyksiltä . Tästä syystä Curve25519 :n standarditoteutus käyttää käänteiselementtilaskentatekniikkaa.
On mahdollista laskea useiden lukujen käänteiset modulo m käyttämällä yhtä Euklid-algoritmin läpimenoa ja kolmea kertolaskua jokaiselle lisätuloluvulle [12] . Perusajatuksena on muodostaa kaikki , kääntää se ja sitten kertoa kaikille :lla, jolloin jää vain .
Algoritmi (kaikki aritmetiikka tehdään modulo m ):
Kertominen on mahdollista toteuttaa puurakenteen muodossa lineaarisen sijaan, jotta voidaan varmistaa laskelmien yhdensuuntaisuus .
Modulaarisen käänteisen etsimisellä on monia sovelluksia modulaarisen aritmeettisen teoriaan perustuvissa algoritmeissa. Esimerkiksi kryptografiassa modulaarisen aritmeettisen tekniikan käyttö mahdollistaa joidenkin toimintojen suorittamisen nopeammin ja pienemmillä muistivaatimuksilla, kun taas toisten operaatioiden suorittaminen on vaikeampaa [13] . Molempia ominaisuuksia voidaan käyttää hyväksi. Erityisesti RSA -algoritmissa salaus ja käänteinen kommunikaatio tapahtuu käyttämällä toistensa suhteen käänteistä numeroparia jossain huolellisesti valitussa modulossa. Toinen näistä numeroista julkistetaan ja sitä voidaan käyttää nopeassa salausmenettelyssä, kun taas toista numeroa käytetään salauksenpurkumenettelyssä, eikä sitä julkisteta. Julkisen piilotetun avaimen määrittämistä pidetään mahdottomana tehtävänä, koska sen ratkaisu vaatii enemmän laskentatehoa kuin maapallolla on, mikä suojaa luvattomalta käytöltä [14] .
Toisena käyttötarkoituksena toisessa kontekstissa harkitse tarkkaa jakoongelmaa tietokoneissa, jossa sinulle annetaan luettelo tietokoneen sanan kokoisista parittomista luvuista, joista jokainen on jaollinen k :llä ja sinun on jaettava ne k :llä . Yksi ratkaisu on seuraava:
Monissa koneissa, erityisesti niillä, joissa ei ole laitteistotukea jakoa varten, jako on hitaampi toimenpide kuin kertolasku, joten tämä lähestymistapa voi johtaa huomattavaan nopeuden kasvuun. Ensimmäinen vaihe on suhteellisen hidas, mutta se tarvitsee tehdä vain kerran.
Modulaarisia käänteisiä käytetään ratkaisun saamiseksi lineaarisen vertailun järjestelmään, jonka takaa kiinalainen jäännöslause .
Esimerkiksi järjestelmä
on yleinen ratkaisu, koska 5, 7 ja 11 ovat pareittain koprime . Ratkaisu annetaan kaavalla
missä
modulaarinen peruutus , modulaarinen peruutus , modulaarinen käänteinen .Sitten,
ja annetussa muodossa
koska 385 on lukujen 5, 7 ja 11 pienin yhteinen kerrannainen .
Modulaarinen käänteiskappale on näkyvästi Kloostermanin summien määritelmässä .