Puncte:1

Even-Mansour Cipher: algoritmi eficienți pentru eșantionarea unei permutări aleatorii

drapel cn

Înțelegerea mea despre cifrul Even-Mansour este următoarea:

  • Desenăm o permutare aleatorie $P$ din ansamblul tuturor permutărilor $P: \{0,1\}^n \rightarrow \{0,1\}^n$. Această permutare este publică.
  • Generam două chei aleatorii $k_1, k_2 \in \{0,1\}^n$.
  • Pentru a cripta un mesaj $m \in \{0,1\}^n$, calculăm $E_{k_1, k_2} = P(m \oplus k_1) \oplus k_2$.

Ce fel de algoritmi există care ne permit să eșantionăm (și să reprezentăm) eficient o permutare $P$ din setul tuturor permutărilor din $n$ biți șiruri la $n$ șiruri de biți?

Puncte:1
drapel sa

Even-Mansour este un model teoretic pentru a demonstra rezultatele securității. Ar trebui să eșantioneze permutări ale $n$ biți, să zicem pentru $n=128,$ întrucât spaţiul rezultat al $N=2^n$ obiectele ar fi prea mari pentru a fi stocate sau manipulate. Acest lucru este similar cu faptul că nimeni nu folosește un echidistribuit pur aleatoriu și i.i.d. secvență de biți ca flux de cheie în modul OTP în criptografia modernă. Este prea lent.

Cu toate acestea, următorul algoritm oferă o permutare aleatorie activată $\{1,2,\ldots, N\}.$ Aici nu se pretinde o eficiență optimă.

COD PENTRU PERMUTAREA ALEATORII A LISTEI MICI

Intrare: Lista $A=[1,2,\ldots, N]$ de $N=2^n$ articole.

Sarcină: permută valorile în $A$ la intamplare.

Lăsa $S:=\{u: u \in A\}.$ Lăsa $B:=A$

pentru fiecare $i=1,\ldots,N$ do

$\quad$ Alegeți un număr întreg aleatoriu $j \în S$

$\quad$ Schimbați matricea $B$ prin intermediul $B[j]:=A[i]$

$\quad$ Elimina $j$ din set $S$

sfârşitul pentru Acest algoritm alege $N,$ atunci $N-1$, atunci $N-2$ etc. obiecte uniform și poate genera fiecare permutare cu probabilitate egală, deoarece face $N\!$ alegeri. Ieșire: Lista $A$ acum este aleatoriu.

Există modalități mai eficiente de a eșantiona permutările aleatoare, vezi, de exemplu, Jens Gustedt, „Eșantionarea eficientă a permutărilor aleatoare”, Jurnalul de algoritmi discreti, Vol. 6, numărul 1, 2006. Aruncă o privire, de asemenea, la Fisher-Yates shuffle și Knuth Shuffle, Google este prietenul tău.

Algoritmul de mai jos nu ajunge acolo, mulțumesc lui @kelalaka pentru corecție

Intrare: Lista $A=\{1,2,\ldots, N\}$ de $N=2^n$ articole.

Sarcină: permută valorile în $A$ la intamplare.

pentru fiecare $i=0,\ldots,N-1$ do

$\quad$ Alegeți un număr întreg aleatoriu $j$ cu $i<j<N.$

$\quad$ Schimbați intrările $A[i]$ și $A[j].$

sfârşitul pentru

Ieșire: Lista $A$ acum este aleatoriu.

kelalaka avatar
drapel in
După cum știm din limita de sortare a comparației, este nevoie de aproximativ $n \log n$ schimburi pentru a transforma matricea nesortată într-una sortată. $N$-swap nu este suficient pentru a proba toate permutările, nu?
drapel pe
Fisher-Yates are ca rezultat o permutare uniform aleatorie. Luați în considerare numărul de posibilități pentru $A[0]$, apoi $A[1]$ etc: $N\cdot N-1 \cdot \dots \cdot 1$ ​​= $N!$.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.