Secvență supracrescătoare

Versiunea actuală a paginii nu a fost încă revizuită de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 18 martie 2018; verificările necesită 16 modificări .

O secvență se numește supracreștere , fiecare termen fiind mai mare decât suma tuturor termenilor anteriori. Mai formal, o succesiune de numere întregi pozitive  este supracrescătoare dacă condiția [1] [2] este îndeplinită :

Această clasă de secvențe este utilizată pe scară largă în criptosistemul de rucsac Merkle-Hellman .

De exemplu, este în creștere, dar  nu.

Metode pentru construirea unei secvențe de supracreștere

Să presupunem că ne confruntăm cu sarcina de a construi o secvență supracrescătoare pentru un anumit număr de obiecte . Elementul este ales aleatoriu dintr-o distribuție uniformă a numerelor naturale pe următorul segment: . Următorul element este ales uniform din segment , membrul secvenței care îl urmează este ales din segment , elementul este selectat aleatoriu din segment . Evident, cu astfel de distribuții ale membrilor secvenței, condiția de supercreștere va fi satisfăcută, deoarece limita inferioară a fiecărui segment este exact egală cu suma tuturor limitelor drepte ale segmentelor anterioare crescută cu unu [3] . De exemplu, să construim mai multe secvențe supracrescătoare în acest fel pentru :

n Segment de linie Exemplul 1 Exemplul 2 Exemplul 3
unu 5 zece 32
2 56 49 64
3 98 113 97
patru 225 225 225
5 481 510 493

Construcție cu o etapă aleasă aleatoriu

Dacă  sunt numere alese aleatoriu, atunci elementele rămase ale șirului supracrescător pot fi găsite din inegalitatea [4] :

Să , . Apoi, de exemplu, secvența satisface condiția și este în creștere.

Construcție bazată pe succesiunea Fibonacci

Fiecare element al sirului Fibonacci satisface relatia: , ai carei zero si primii membri sunt: ​​. Din aceasta se poate observa că primii membri ai șirului Fibonacci: . Uneori puteți întâlni o secvență Fibonacci generalizată . Aceasta este o secvență ai cărei membri îndeplinesc condiția ecuației: . Adică șirul generalizat se obține din cel clasic prin modificarea primilor doi termeni ai șirului Fibonacci și reține principiul formării următorilor termeni. Pentru a construi o secvență supracrescătoare, se folosește forma secvenței generalizate de Fibonacci. Pentru a calcula orice membru al secvenței supracrescătoare este necesar să se aleagă patru elemente: doi factori inițiali ( și ) și doi factori pozitivi ( și ) [5] .

Primim următoarele cazuri:

  1. Secvența satisface condiția de supracreștere pentru .
  2. Secvența nu este supracrescătoare pentru .
  3. Căci , secvența începe să satisfacă condiția de supercreștere după mai multe iterații .
  4. Pentru , secvența rămâne supracrescătoare.

De exemplu, să luăm . Primele elemente ale secvenței supracrescătoare rezultate sunt: ​​.

Bazându-se pe secvența de supracreștere existentă

Condiția de supracreștere este îndeplinită de un număr de puteri de . Cunoscând secvența supracrescătoare , putem construi una nouă folosind mulțimea . Pentru implementare, este necesar să se aplice setului următoarelor operațiuni [6] :

Exemplu detaliat pentru o secvență de supracreștere selectată :

Avem o nouă secvență de supra-creștere .

Utilizarea secvenței supercrescente în criptografie

Rucsacuri super-creștere

Criptosistemul Merkle-Hellman se bazează pe „problema rucsacului” – un algoritm de criptare cu cheie publică – descrisă mai jos. Problema arată astfel: dată fiind o secvență de numere întregi pozitive nerepetabile. Fie numărul să aparțină și mulțimii numerelor naturale. Dacă acest lucru este posibil, este necesar să se găsească un set de secvențe binare pseudoaleatoare pentru a satisface condiția: [2] .

Să fie  o secvență supracrescătoare. În acest caz, ne confruntăm cu o problemă „ușoară” a unui rucsac, care nu este greu de rezolvat. Pentru a face acest lucru, se compară cu elementul . Dacă , atunci valoarea este decrementată cu și săriți la membrul secvenței . Acțiunea se repetă până la încheierea procesului. Dacă până la urmă , atunci soluția problemei se găsește sub forma unei secvențe , altfel nu există [2] .

Dacă secvența nu este în creștere (sau normală), atunci rucsacii sunt o problemă „grea” care poate fi rezolvată doar prin enumerarea tuturor opțiunilor posibile.

Cheia privată din algoritmul Merkle-Hellman este secvența de greutăți a problemei rucsacului cu supracreștere, în timp ce cheia publică este secvența de greutăți a problemei normale a rucsacului cu aceeași soluție. Există o modalitate de a converti problema rucsacului cu supra-creștere într-o problemă normală de rucsac folosind aritmetica modulară. Pentru a obține o secvență normală de rucsac, vom folosi o secvență de rucsac cu supra-creștere. De exemplu, să luăm o succesiune de numere: , și modulo înmulțim fiecare element al acestei secvențe cu numărul . Se impune o condiție: valoarea modulului trebuie să fie mai mare decât suma tuturor elementelor secvenței, de exemplu, . Și multiplicatorul trebuie să fie un număr relativ prim cu un modulo, de exemplu, . Într-un astfel de caz, secvența normală de rucsac ar fi [2] :

Obținem o succesiune normală de numere: . Secvența de rucsac în creștere este cheia privată, în timp ce secvența normală de rucsac este cheia publică.

Schema de partajare a secretelor multilaterale

În 2017, a fost propusă o schemă de partajare a secretelor cu mai multe părți, folosind o secvență de supra-creștere. Unicitatea schemei constă în faptul că nu este doar multilaterală, ci implementează și o structură de acces secvenţial pe niveluri. Algoritmul folosește schema Shamir , sau mai degrabă generarea de acțiuni secrete, urmată de faza de recuperare secretă [7] .

Să prezentăm un algoritm pentru implementarea unei scheme multilaterale de partajare a secretelor.

Generarea de acțiuni secrete [8]

Pasul 1.1. Se alege un secret , unde  este un număr prim care este cunoscut de toate părțile și stabilește dimensiunea finală a câmpului . Să , unde  este numărul de participanți între care trebuie să împărtășiți secretul .

Pasul 1.2. Să transformăm secretul în sistem de numere binar pseudo-aleatoriu de biți și să formăm secvența .

Pasul 1.3. Să compunem o secvență binară de lungime din elemente selectate aleatoriu: .

Pasul 1.4. Folosim operația XOR între elementele secvențelor de la Pasul 1.2 și Pasul 1.3. Ca rezultat, obținem o nouă secvență: .

Pasul 1.5. Să construim o succesiune supracrescătoare de numere aleatoare de lungime : .

Pasul 1.6. Calculăm suma , care va fi cunoscută de toți participanții. Pseudocod funcție:

funcția bugsum(a, b); Intrare: și . ieșire: suma. suma ; pentru i r do sum sum ; Sfârşit suma returnată;

Pasul 1.7. Alegeți un număr prim , care va fi anunțat tuturor participanților și astfel încât: și pentru , unde numărul de niveluri și numărul total de participanți la nivel .

Pasul 1.8. Distribuim între toți participanții la nivel folosind , unde determină gradul polinomului schemei Shamir la nivel . Apoi, trebuie să convertiți elementele secvenței pasului 1.3 în sistemul zecimal și, de asemenea, să le distribuiți pe nivel folosind .

Faza de recuperare secretă [8]

Pasul 2.1. Cel puțin, participanții recuperează secretul la nivel și primesc o cotă pentru .

Pasul 2.2. Primul nivel verifică dacă este într-adevăr adevărat pentru suma obținută în Pasul 1.6. Dacă inegalitatea este adevărată, primul nivel emite și trimite la al doilea nivel o nouă valoare de sumă: . În caz contrar, emite și trimite la stratul următor și adaugă bitul său de ieșire la secvența goală . Este necesar să treceți prin toate nivelurile, umplând treptat secvența .

Pasul 2.3. Nivelul efectuează recuperarea secretă și însămânțarea secvenței . Repetăm ​​calculele care au fost efectuate în Pasul 1.4 cu operația XOR: .

Pasul 2.4 . În cele din urmă, avem o secvență binară secretă care poate fi convertită în zecimal pentru a obține secretul .

Note

  1. Richard A. Mollin, An Introduction to Cryptography (Discrete Mathematical & Applications) , Chapman & Hall/CRC; 1 ediție (10 august 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 China Venkaiah, 2017 .

Literatură

Link -uri