Puncte:0

Cum poate fi mai sigură o concatenare de $N$ block-cipher cu chei cunoscute?

drapel at

Problemă generală / Introducere: criptarea relației (calculabile) între două numere aleatorii care sunt membre ale unui set cât mai mic posibil, în timp ce orice, cu excepția ordinii de execuție, este cunoscut de adversar.
Această întrebare este despre rezolvarea acelei probleme cu o concatenare a cifrului bloc.


Simplificare:

  • luăm în considerare doar bloc-cifre care sunt similare cu AES
  • în loc de $N$ bloc-cifre diferite cu care folosim un cifr-bloc $N$ taste diferite (sau chiar mai multe)
  • cifrul bloc transferă doar o intrare la alta (deci rulează în modul ECB)

Ce se știe:
Dacă aplicăm un cifr-bloc $BC$ la o intrare dată $m$ iar și iar vom ajunge la intrare la un moment dat din nou. $$BC^l(m,k) = m$$

Pentru o intrare aleatorie dată $m$ și cheie $k$ lungimea ciclului $l$ poate avea orice lungime de la $1$ la dimensiunea domeniului de $m$ cu (în cazul optim) aceeași probabilitate fiecare.

(destul de sigur că este și cazul:)
Dacă folosim $N$ chei diferite și concatenează cifrul bloc cu acele chei una pe cealaltă (întotdeauna aceeași ordine și întotdeauna multiplu de $N$ pași) rezultă lungimi de ciclu $N$ ori $[1,...,D]$ cu $D$ dimensiunea domeniului lui m.

$$BC(....BC(...BC(..BC(BC(BC(m,k_0),k_1),k_2)...,k_{N-1})...,k_{i \mod{N}})....,k_{l \equiv N-1 \mod{N}}) = m$$

Putem vedea această concatenare ca aplicarea de runde în interiorul unui singur BC.


Aplicând-o la problema generală de mai sus:
Pentru aceasta ordinea de execuție (deci ordinea cheilor folosite) este necunoscută adversarului (dar cheile în sine sunt cunoscute).

De exemplu o valoare $V$ poate fi calculat din valoare $W$ cu: $$BC(BC(BC(BC(BC(W,k_5),k_2),k_3,k_5,k_1,k_1) =V$$

Adversarul chiar știe $V,W$ și, de asemenea, cheia de la sine, dar vrea să știe ordinea de execuție a cheii $5,2,3,5,1,1$ sau orice altă comandă care face și treaba.

Dacă nu mai folosim o comandă fixă ​​a cheilor, proprietățile mărimii ciclului nu mai sunt valabile.


Încercarea soluției 1 (eșuată):

Dacă adversarul vrea să găsească un ordin de executare care transferă $W \rightarrow V$ el poate calcula $N$ posibile următoarele valori ale $W$ si $N$ posibile valori anterioare ale $V$ cu inversul BC. El poate repeta asta până când un mach a fost găsit.

Cu aceasta ar trebui să găsească un ordin de execuție în medie prin aproximativ $\sqrt{D}$ pași care nu sunt suficient de siguri.

Încercarea soluției 2 (eșuată):

Pentru o securitate mai mare limităm rezultatul $V$ la valorile care au fost calculate folosind $i$-a cheie la ultimul lor calcul BC.

Adversarul poate folosi doar inversul BC la asta $V$ cu ținta $i$-a cheie și procedați la fel ca în încercarea soluției 1.

Încercarea soluției 3 (întrebare/editare: eșuată...):

Pentru a câștiga securitate, putem limita numărul de execuție la multiplu de $E$ trepte și cu aceasta alterând și cheile fiecărei adâncimi.

Pe lângă utilizarea $i$-a cheie BC pentru calculul $V$ acum trebuie să fie și un multiplu al $E$ pași înaintea $W$

în exemplul nostru de sus cu $E=3$ asta ar fi: $$BC(BC(BC(BC(BC(W,k_5^0),k_2^1),k_3^2,k_5^0,k_1^1,k_1^2)) =V$$

Deci pentru un dat $V$ cu $i$-ultima cheie la adâncime $d$ adversarul poate calcula relația cu un dat $W$ cu profunzime $d$:

Calculul inversului lui $V$: $$BC^{-1}(V,k_i^{d-1 \mod E}) = V'$$

Și calculați valorile pas cu pas, așa cum a făcut în încercarea 1 a soluției.

Acest lucru ar trebui să dureze aproximativ $N^{\lfloor{\frac{E-1}{2}}\rfloor}$ încercări dacă o face cu forță brută.
Dacă de exemplu $D=2^{128}, N=2^{16}, E=2^{5}$ asta ar fi $2^{16 \cdot 15} = 2^{240}$ încercări.

.... după ce am scris tot acest text, am observat că nu are nevoie să calculeze fiecare parte din fiecare adâncime și doar are nevoie $\sqrt{D}$ pași din nou...


=====> Întrebare: Are cineva vreo altă idee cum poate fi mai sigură o concatenare a cifrului bloc (aproape de $D$)?


Histroy

  • $D$ dimensiunea setului de intrare și ieșire
  • $V,W$ valori aleatorii care pot avea până la $D$ valori diferite
  • $E$ numărul total de execuții de cifrare bloc trebuie să fie multiplu de $E$
  • $N$ numărul de chei bloc-cifrare diferite pentru fiecare adâncime
  • $k_a^b$ variabilă cheie folosită pentru cifrul bloc cu indici $a,b$ cu $a\în\{0,N-1\}, b\în\{0,E-1\}$
Fractalice avatar
drapel in
Înțeleg că aplicăm același cifr de bloc $\ell$ de ori cu chei diferite, cheile sunt cunoscute, dar ordinea lor nu este cunoscută. Dar nu înțeleg restul enunțului problemei.Trebuie doar să evaluăm securitatea unui astfel de cifru bloc sau...? Care sunt atunci cele două numere aleatorii dintr-un set mic?
J. Doe avatar
drapel at
@Fractalice Acestea sunt doar câteva numere aleatorii din domeniu. Ar trebui să fie greu de găsit o ordine de execuție/cheie între ele sau orice altă combinație de alte valori aleatorii. Securitatea este adesea legată de dimensiunea domeniului. Pentru a valida ca fiind sigur, are nevoie de un anumit număr de pași înainte de a-l rupe, să spunem 2^100. Caut un domeniu cat mai mic, dar sigur. Cu alte cuvinte, securitatea poate doar cu o fracțiune din dimensiunea domeniului (cum ar fi pentru AES) și nu de ex. o rădăcină pătrată (ca pentru EC).
J. Doe avatar
drapel at
@Fractalice Am crezut că soluția mea 3 poate funcționa, dar când am scris-o, am observat că nu. Acestea sunt doar exemple despre cum nu funcționează. Acum caut o modalitate alternativă prin care concatenarea cifrului bloc poate fi la fel de sigură ca AES.

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.