Superkasvava sekvenssi

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 18. maaliskuuta 2018 tarkistetusta versiosta . tarkastukset vaativat 16 muokkausta .

Jaksoa kutsutaan superkasvavaksi , jonka jokainen termi on suurempi kuin kaikkien aikaisempien termien summa . Muodollisesti positiivisten kokonaislukujen sarja  on superkasvava, jos ehto [1] [2] täyttyy :

Tätä sekvenssiluokkaa käytetään laajalti Merkle-Hellmanin selkäreppujen salausjärjestelmässä .

Esimerkiksi se on supernouseva, mutta  ei.

Menetelmät superkasvavan sekvenssin rakentamiseen

Oletetaan, että edessämme on tehtävä superkasvava sekvenssi tietylle määrälle kohteita . Elementti valitaan satunnaisesti tasaisesta luonnollisten lukujen jakaumasta seuraavalle segmentille: . Seuraava elementti valitaan tasaisesti segmentistä , sitä seuraavan sekvenssin jäsen valitaan segmentistä , elementti valitaan satunnaisesti segmentistä . Ilmeisesti tällaisilla sekvenssin jäsenten jakaumilla superkasvun ehto täyttyy, koska kunkin segmentin alaraja on täsmälleen yhtä suuri kuin edellisten segmenttien kaikkien oikeiden rajojen summa lisättynä yhdellä [3] . Muodostetaan esimerkiksi useita superkasvavia sekvenssejä tällä tavalla :

n Jana Esimerkki 1 Esimerkki 2 Esimerkki 3
yksi 5 kymmenen 32
2 56 49 64
3 98 113 97
neljä 225 225 225
5 481 510 493

Rakentaminen satunnaisesti valitulla askeleella

Jos  ovat satunnaisesti valittuja lukuja, niin superkasvavan sekvenssin loput alkiot löytyvät epäyhtälöstä [4] :

Anna , . Silloin esimerkiksi sekvenssi täyttää ehdon ja on superkasvava.

Rakentaminen perustuu Fibonacci-sekvenssiin

Jokainen Fibonacci-sekvenssin elementti täyttää suhteen: , jonka nolla ja ensimmäinen jäsen ovat: . Tästä voidaan nähdä, että Fibonacci-sekvenssin ensimmäiset jäsenet: . Joskus saatat kohdata yleistyneen Fibonacci-sekvenssin . Tämä on sekvenssi, jonka jäsenet täyttävät yhtälön ehdon: . Toisin sanoen yleistetty sekvenssi saadaan klassisesta sekvenssistä muuttamalla Fibonacci-sekvenssin kahta ensimmäistä termiä ja se säilyttää seuraavien termien muodostusperiaatteen. Superkasvavan sekvenssin rakentamiseen käytetään yleistetyn Fibonacci-sekvenssin muotoa. Jotta voidaan laskea mikä tahansa superkasvavan sekvenssin jäsen , on valittava neljä elementtiä: kaksi alkutekijää ( ja ) ja kaksi positiivista tekijää ( ja ) [5] .

Saamme seuraavat tapaukset:

  1. Sarja täyttää superlisäysehdon kohteelle .
  2. Sarja ei ole superkasvava kohteelle .
  3. Sekvenssi alkaa täyttää superkasvun ehtoa useiden iteraatioiden jälkeen .
  4. Kohteessa , sarja pysyy superkasvavana.

Otetaan esimerkiksi . Tuloksena olevan superkasvavan sekvenssin ensimmäiset elementit ovat: .

Olemassa olevan superkasvavan sarjan pohjalta

Ylikasvun edellytys täyttyy useilla tehoilla . Kun tiedämme superkasvavan sekvenssin , voimme muodostaa uuden joukon avulla . Toteutusta varten on sovellettava seuraavien toimintojen joukkoa [6] :

Yksityiskohtainen esimerkki valitusta superkasvavasta sarjasta :

Saimme uuden supernousevan sarjan .

Superkasvavan sekvenssin käyttö kryptografiassa

Super-Increasing Reput

Merkle-Hellmanin salausjärjestelmä perustuu "reppuongelmaan" - julkisen avaimen salausalgoritmiin - joka kuvataan alla. Ongelma näyttää tältä: annetaan sarja ei- toistuvia positiivisia kokonaislukuja. Kuulkoon luku myös luonnollisten lukujen joukkoon. Jos tämä on mahdollista, on tarpeen löytää joukko näennäissatunnaisia ​​binäärisekvenssejä ehdon täyttämiseksi: [2] .

Antaa olla  superincreasing sekvenssi. Tässä tapauksessa kohtaamme "kevyen" repun ongelman, jota ei ole vaikea ratkaista. Tätä varten sitä verrataan elementtiin . Jos , niin arvoa pienennetään ja siirrytään sekvenssin jäseneen . Toimia toistetaan, kunnes prosessi päättyy. Jos lopulta , niin ongelman ratkaisu löytyy sekvenssin muodossa , muuten sitä ei ole olemassa [2] .

Jos järjestys ei ole supernouseva (tai normaali), reput ovat "kova" ongelma, joka voidaan ratkaista vain luettelemalla kaikki mahdolliset vaihtoehdot.

Merkle-Hellman-algoritmin yksityinen avain on superkasvavan reppuongelman painosarja, kun taas julkinen avain on normaalin reppuongelman painosarja samalla ratkaisulla. On olemassa tapa muuntaa superkasvava repputehtävä normaaliksi repputehtäväksi modulaarista aritmetiikkaa käyttämällä. Normaalin reppusarjan saamiseksi käytämme superkasvavaa reppusarjaa. Otetaan esimerkiksi numerosarja: , ja modulo kerrotaan tämän sekvenssin jokainen elementti numerolla . Edellytyksenä on : moduulin arvon on oltava suurempi kuin sekvenssin kaikkien elementtien summa, esimerkiksi . Ja kertoimen on oltava suhteellisen alkuluku , jossa on modulo, esimerkiksi . Tässä tapauksessa normaali selkäreppujärjestys olisi [2] :

Saamme normaalin numerosarjan: . Superkasvava reppusarja on yksityinen avain, kun taas normaali reppusarja on julkinen avain.

Monenvälisen salaisuuden jakamisen järjestelmä

Vuonna 2017 ehdotettiin monen osapuolen salaisen jakamisen järjestelmää, jossa käytetään supernousevaa sekvenssiä. Järjestelmän ainutlaatuisuus piilee siinä, että se ei ole vain monenvälinen, vaan se toteuttaa myös peräkkäisen pääsyn rakenteen tasoittain. Algoritmi käyttää Shamir-mallia tai pikemminkin salaisten osuuksien generointia, jota seuraa salainen palautusvaihe [7] .

Esitetään algoritmi monenvälisen salaisen jakamisjärjestelmän toteuttamiseksi.

Salaisten osuuksien luominen [8]

Vaihe 1.1. Valitaan salaisuus , jossa  on jokin kaikkien osapuolten tiedossa oleva alkuluku, joka määrittää lopullisen kokokentän . Olkoon , missä  on niiden osallistujien määrä, joiden kesken sinun on jaettava salaisuus .

Vaihe 1.2. Muunnetaan salaisuus -bittiseksi näennäissatunnaiseksi binäärilukujärjestelmäksi ja muodostetaan sekvenssi .

Vaihe 1.3. Tehdään satunnaisesti valituista elementeistä pituinen binäärisekvenssi : .

Vaihe 1.4. Käytämme XOR - operaatiota vaiheiden 1.2 ja 1.3 sekvenssien elementtien välillä. Tuloksena saamme uuden sekvenssin: .

Vaihe 1.5. Rakennetaan superkasvava sarja satunnaislukuja, joiden pituus on : .

Vaihe 1.6. Laskemme summan , joka on kaikkien osallistujien tiedossa. Toiminnan pseudokoodi:

funktio bugsum(a, b); Syöte: ja . lähtö: summa. summa ; for i r do summa summa ; loppu palautussumma;

Vaihe 1.7. Valitse alkuluku , joka ilmoitetaan kaikille osallistujille ja sellainen, että: ja for , jossa tasojen lukumäärä ja tason osallistujien kokonaismäärä .

Vaihe 1.8. Jaamme kaikkien tason osallistujien kesken käyttämällä , jossa määrittää Shamir-kaavion polynomin asteen tasolla . Seuraavaksi sinun on muutettava vaiheen 1.3 sekvenssin elementit desimaalijärjestelmään ja jaettava ne myös tasoittain käyttämällä .

Salainen palautusvaihe [8]

Vaihe 2.1. Osallistujat saavat vähintään salaisuuden takaisin tasolle ja saavat osuuden .

Vaihe 2.2. Ensimmäinen taso tarkistaa, onko se todella totta vaiheessa 1.6 saadulle summalle. Jos epäyhtälö on tosi, ensimmäinen taso tulostaa ja lähettää toiselle tasolle uuden summa-arvon: . Muussa tapauksessa se tulostaa ja lähettää seuraavalle kerrokselle ja lisää tulosbittinsä tyhjään sekvenssiin . On tarpeen käydä läpi kaikki tasot täyttämällä sekvenssi vähitellen .

Vaihe 2.3. Taso suorittaa salaisen palautuksen ja sekvenssikylvön . Toistamme vaiheessa 1.4 suoritetut laskelmat XOR-operaatiolla: .

Vaihe 2.4 . Lopuksi saimme salaisen binäärisekvenssin, joka voidaan muuntaa desimaaliluvuksi salaisuuden saamiseksi .

Muistiinpanot

  1. Richard A. Mollin, Johdatus kryptografiaan (diskreetti matematiikka ja sovellukset) , Chapman & Hall/CRC; 1 painos (10. elokuuta 2000), ISBN 1-58488-127-5
  2. 1 2 3 4 Schneier, 1993 .
  3. Merkle, Hellman, 1978 .
  4. Salomaa, 1995 .
  5. Merzouga, Ali-Pachab, Hadj-Saidb, Ali-Pachab, 2019 .
  6. Murin, 2011 .
  7. Basit, Chanakya, Venkaiah, Abdul Moiz, 2020 .
  8. 1 2 Harsha, Chanakya, Vadlamudi Kiina Venkaiah, 2017 .

Kirjallisuus

Linkit