Solitaire (salakirjoitus)

Solitaire-salausalgoritmi on stream-salaus , jossa on lähtöpalaute, jonka Bruce Schneier on kehittänyt kirjailija Neil Stevensonin pyynnöstä .

Stevenson tarvitsi salausalgoritmin, jonka avulla Cryptonomicon - kirjansa agentit voisivat vaihtaa salaisia ​​tietoja herättämättä epäilyksiä. Solitaire oli ihanteellinen näihin vaatimuksiin, koska sen avulla agentit pystyivät salaamaan viestejä käyttämättä elektroniikkaa tai vaarallisia laitteita. Kirjassa algoritmia kutsuttiin nimellä "Pontifex" piilottaakseen sen tosiasian, että kortteja käytettiin salaukseen.

"Solitaire" peri luotettavuutensa korttien sijainnin luontaisesta satunnaisuudesta pakkaa sekoitettaessa. Käsittelemällä yksinkertaista korttipakkaa viestin salaava henkilö voi luoda satunnaisen merkkijonon, joka yhdistetään myöhemmin viestiin. Tämä algoritmi saattaa tuntua melko epäluotettavalta, mutta Schneierin itsensä mukaan Solitaire kestää jopa voimakkaimpien sotilaallisten vastustajien hyökkäyksen valtavalla rahoituksella, tehokkailla tietokoneilla ja erinomaisilla kryptausanalyytikoilla ja on maailman paras "lyijykynällä ja paperilla" toteutettu kryptografinen algoritmi. [yksi]

Salaus

Tämän algoritmin pääidea on, että se luo niin sanotun "gamman" numeroista 1 - 26. Salausta varten on tarpeen luoda "gamman" määrä, joka on yhtä suuri kuin tekstissä olevien kirjainten lukumäärä. Lisää sitten ne modulo 26 jokaiseen tekstin kirjaimeen. Harkitse esimerkiksi kirjan "Cryptonomicon" "ÄLÄ KÄYTÄ PC:tä" ensimmäisen viestin salausprosessia:

1) Jaamme viestit viiden merkin ryhmiin (tällä ei ole mitään tekemistä salauksen kanssa, se vain hyväksytään), täydentääksemme viimeistä ryhmää, käytä tarvittaessa X:ää. Meidän tapauksessamme saamme:

2) Käytä Solitairea kymmenen asteikon luomiseen (tiedot alla), oletetaan, että ne ovat:

3) Käännämme viestin kirjaimet numeroiksi: A=1, B=2 jne., saamme:

4) Samalla tavalla käännämme "asteikot":

5) Lisää viesti ja "gamma" modulo 26:

6) Käännämme saadun summan takaisin kirjaimille:

Jos sinulla on tarpeeksi harjoitusta, voit yrittää "lisää" kirjaimia välittömästi, mikä nopeuttaa salausprosessia merkittävästi.

Salauksen purku

Salauksen purkamisen pääidea on, että vastaanottaja luo saman "gamman" ja vähentää ne salatekstistä.

1) Jaamme salatekstin viiden merkin ryhmiin:

2) Käytämme korttipakkaa luomaan "gammat". Jos vastaanottaja käyttää samaa avainta kuin osoite, niin "gamma" on sama:

3) Käännämme salatekstin kirjaimista numeroiksi:

4) Teemme saman "vaakojen" kanssa:

5) Vähennä gamma salatekstin modulo 26:sta:

6) Käännämme saadun summan takaisin kirjaimille:

Kuten näet, salauksen purkuprosessi on täysin samanlainen kuin salausprosessi. Tämä esimerkki on melko yksinkertainen, mutta kun muunnat suurempia viestejä, sinun on ensin päästävä eroon välimerkeistä.

Gamma-sukupolvi

Siirrytään "gamman" sukupolveen. Tämä on algoritmin tärkein osa, kaikki yllä oleva pätee kaikkiin virtasalauksiin, joissa on lähtöpalaute . Sama osa koskee suoraan vain Solitairea.

Solitaire luo "gammoja" korttipakan avulla. Korttipakka koostuu 54 kortista, mikä antaa meille permutaatioiden lukumäärän 54!, mikä on suunnilleen yhtä suuri kuin 2,3·10 71 . Vielä parempi, jokereita lukuun ottamatta, pakassa on 52 korttia ja aakkosissa 26 kirjainta. Salaamiseen tarvitset 54 kortin pakan, ja jokerien täytyy jollain tapaa erota toisistaan. Nimetään ehdollisesti yksi jokereista A ja toinen B. Pakan "alustaamiseksi" sinun on järjestettävä kortit tiettyyn järjestykseen, tämä on avain. Sitten sinun on otettava kortit kuvapuoli alaspäin, nyt voit luoda "gamman".

1) Etsi jokeri A, siirrä sitä yksi kortti alas, eli vaihda paikkaa sen alla olevan kortin kanssa.

2) Etsi jokeri B, siirrä sitä kaksi korttia alaspäin. Jos siis kortit asetettiin tässä järjestyksessä ennen ensimmäistä vaihetta:

sitten toisen vaiheen jälkeen:

Jos meillä on ensin esim.

sitten loppujen lopuksi saamme

3) Suoritamme "triple cut" -leikkauksen, eli vaihdamme ensimmäisen jokerin yläpuolella olevat kortit toisen jokerin alapuolelle. Eli jos kansi näyttää tältä:

sitten tämän vaiheen jälkeen se menee osoitteeseen:

Kuten näette, tässä "ensimmäinen" ja "toinen" viittaavat järjestykseen, jossa jokerit ilmestyvät pakassa. Tärkeintä on muistaa, että jokerit itse ja heidän väliset kortit eivät liiku tai muutu millään tavalla tämän vaiheen aikana. Ja jos kansi näyttää tältä ennen tätä vaihetta:

A... B,

sitten kolmannen vaiheen jälkeen mikään ei muutu.

4) Katsomme pakan alempaa korttia, asetamme sen linjaan numeron 1-53 kanssa.

Teemme tämän seuraavasti: jos kortin maa on mailat, tämä arvo vastaa kortissa näkyvää arvoa; jos nämä ovat timantteja, arvo on plus 13; jos sydämet, niin arvo on plus 26; pata - arvo plus 39. Mikä tahansa jokeri - 53. Nyt laskemme saman määrän kortteja ensimmäisestä alkaen ja asetamme ne alimman kortin ja muun pakan väliin.

Jos dekki näytti alun perin tältä:

sitten tämän vaiheen jälkeen se menee osoitteeseen:

Syy, miksi viimeinen kortti pysyy paikallaan, on tehdä tästä vaiheesta peruutettava. Jos kannen pohja oli jokeri, se pysyy ennallaan tämän vaiheen jälkeen.

5) Löydämme kartan, jolla "gamma" luodaan. Tätä varten vertaamme ylintä korttia numeroon 1-53, kuten neljännessä vaiheessa. Laskemme tämän määrän kortteja. Kirjoitamme paperille kortin, joka on sen kortin alla, johon laskemme, jättäen sen pakkaan (jos osumme jokeriin, aloitamme uudelleen ensimmäisestä vaiheesta). Tämä on kartta, josta olemme kiinnostuneita. Huomaa, että tämä vaihe ei muuta korttien järjestystä pakassa.

6) Käännämme kortin viidennestä vaiheesta numeroksi. Tämä tehdään samalla tavalla kuin neljännessä vaiheessa yhtä poikkeusta lukuun ottamatta. Koska aakkosissa on 26 kirjainta, numeroimme mailat ja sydämet 1-13 ja patat ja timantit 14-26. Sitten siirrymme kirjaimiin.

Tällaiset vaiheet on tehtävä yhden merkin salaamiseksi. Toistamalla samat kuusi vaihetta jokaiselle salaamattomalle merkille salaamme koko tekstin.

Yleensä tässä annettuja korttien numerointisääntöjä ei tarvitse noudattaa, tärkeintä on, että molemmat ihmiset noudattavat samaa järjestelmää.

Kannen alustus

Ennen salauksen aloittamista sinun on valmisteltava kansi. Tämä on ehkä tärkein osa, koska helpoin tapa murtaa Solitaire on selvittää, mitä avainta käytetään. Jotta avain olisi todella luotettava, sinun tulee noudattaa seuraavia menetelmiä:

Kaiken tämän kanssa ei pidä unohtaa, että englannin kielessä on vain 1,4 bittiä satunnaisuutta per merkki, joten algoritmin kirjoittaja neuvoo salaamaan vähintään 80 merkin pituiset lauseet pakan valmistelemiseksi.

Cryptanalysis

Vaikka algoritmin alkuperäisessä kirjoittajapaperissa sanotaan, että se on käännettävissä, tilanne, jossa jokeri päätyy pakan alareunaan ja siirtyy sitten ylös, kun dekki käynnistetään, tekee prosessista peruuttamattoman. Tässä on syytä huomata, että ei-reversiibelit pseudosatunnaislukugeneraattorit ovat lyhyemmät jaksot ja niillä on taipumus toistaa. Todellakin, käytettäessä Solitaire-algoritmia, on mahdollista luoda luku väliltä 1 - 26, eli jokaisen pitäisi tulla ulos todennäköisyydellä 1/26, mutta todellisuudessa tämä todennäköisyys on suurempi - 1/22,5. [2]

Lokalisointi

Voit myös keksiä tämän salauksen venäläisen version, esimerkiksi pudottamalla kirjaimen "e" aakkosesta, saamme 32 merkkiä plus 2 korttia jokerien analogista, yhteensä - 34, eli tavallinen kansi ilman esimerkiksi kuutosparia. Valtava miinus tällaisesta käytöstä on avaimen vahvuuden heikkeneminen. Tämä vaihtoehto on luultavasti optimaalinen, koska jos jätetään 52 korttia ja suoritetaan samanlaisia ​​laskelmia kuin alkuperäisessä versiossa, mutta modulo 32, saadaan mahdollisuus taajuusanalyysiin. Toinen vaihtoehto on muuttaa alkuperäisen tekstin, joka on kirjoitettu käyttäen kaikkia 33 venäjän aakkosten kirjainta, tekstiksi, joka sisältää vain noin 26 kirjainta. [3]

Haitat

Yksi haittapuoli on, että salaus ja salauksen purku kestää kauan. Mutta verrattuna muihin vastaaviin salakirjoihin tämä aika on hyväksyttävä. Esimerkiksi neuvostovakoilijoiden käyttämä todellinen salakirjoitus, jota David Kannin kuvaa , kestää yhtä paljon aikaa salata riittävän suuri viesti kuin Pasianssi: noin yhden illan.

Muistiinpanot

Lisäksi sinun tulee noudattaa seuraavia sääntöjä:

Kirjallisuus

  1. Schneier, Bruce Solitaire (toukokuu 1999). Haettu 7. joulukuuta 2012. Arkistoitu alkuperäisestä 17. tammikuuta 2013.
  2. Crowley, Paul ongelmia Bruce Schneierin "Solitaire" kanssa . Haettu 7. joulukuuta 2012. Arkistoitu alkuperäisestä 17. tammikuuta 2013.
  3. Kryptosalaus "Solitaire" . Haettu 7. joulukuuta 2012. Arkistoitu alkuperäisestä 17. tammikuuta 2013.