Puncte:1

Poate un cifr-bloc considerat sigur dacă o schimbare de biți a intrării duce la o schimbare de 50% șansă pentru fiecare bit de ieșire? -> număr rotund?

drapel at

Utilizarea cifrului bloc auto-invers ($f(f(x)) = x $) operațiuni care apoi vor fi aplicate textului simplu și, cel mai probabil, conțin unele constante care pot fi bazate pe o cheie. Pentru a obține securitate, astfel de operațiuni care interpretează intrarea în moduri diferite sunt aliniate unele cu altele. Acest proces se repetă în mai multe runde cu taste diferite. În cazul optim, o intrare aleatorie se află în interiorul unui ciclu închis (dacă cifrul bloc este aplicat din nou și din nou) cu o dimensiune ale ciclului aleatoriu (uniformă, dată cheie aleatoare).

Testând în jur, am observat că acest lucru se poate întâmpla doar cu câteva operațiuni foarte simple de XOR, Bit-Rotation și adăugare. (numit ARX)

De exemplu: pentru o rundă cu intrare $m$:

$$ m = XOR(m, R_i) \ m = RotateBit(m,5) \ m = m + K_i $$

$R_i, K_i$ sunt chei rotunde pentru rotunde $i$.

  • Numai XOR nu este sigur, deoarece această operațiune este doar la biți unici, fără impact unul asupra celuilalt.

  • Rotația biților este adăugată pentru a crește impactul unui singur bit asupra fiecărui alt bit. De asemenea, nu este sigur, deoarece are impact doar la un singur biți fiecare

  • Adăugarea este adăugată ca al doilea fel de interpretare de intrare (ca număr în loc de biți). Aici biții se pot impacta unul pe celălalt.

Cu aceasta am obținut o distribuție uniformă bună (dar nu perfectă) a diferitelor lungimi de ciclu (dată cheie și intrare aleatoare).


Întrebarea este câte runde trebuie aplicate pentru securitate? Trebuie să fie cel puțin dimensiunea totală a biților, astfel încât fiecare bit să poată atinge orice altă poziție datorită rotației biților.

Iată câteva legate fir pentru AES.

Dar ca măsură mai generală (pentru cifrul bloc personalizat) se poate schimba securitatea măsurată cu impactul unui bit în intrarea fiecărui bit al ieșirii?

În cazul optim, fiecare modificare posibilă de biți a fiecărei intrări posibile ar trebui să conducă la 50% biți diferiți la ieșire (fiecare bit fiind diferit la aceeași cantitate).

Numărul rotund poate fi mărit până când atinge un nivel adecvat de securitate.

user2357 avatar
drapel us
Din câte știu, sensibilitatea la textul simplu este o condiție necesară, nu o condiție suficientă.
kelalaka avatar
drapel in
Înrudit [Există cifrul bloc care este sigur pentru n rundă, dar nu este sigur când rundele au crescut](https://crypto.stackexchange.com/q/91929/18298)
Puncte:2
drapel si

Dar ca măsură mai generală (pentru cifrul bloc personalizat) se poate schimba securitatea măsurată cu impactul unui bit în intrarea fiecărui bit al ieșirii?

Trivial nu. Dacă funcția rotundă a cifrului bloc este liniară, atunci niciun număr de runde nu va face inversarea acesteia mai dificilă.

De asemenea, nu ai descris dacă vorbești despre Confuzie, Difuzie sau ambele.

Confuzia definește o relație între cheie și textul cifrat: fiecare bit al textului cifrat este dependent de mulți biți ai cheii, astfel încât, dacă orice bit al cheii este schimbat, aproximativ 50% din biții textului cifrat se vor schimba.

Difuzia definește o relație între text simplu și textul cifrat: fiecare bit din textul cifrat depinde de mulți biți ai textului simplu, astfel încât, dacă orice bit al textului simplu este modificat, aproximativ 50% din biții textului cifrat se vor schimba.

Ambele sunt necesare, dar nu suficiente, pentru securitate. Atunci când este combinat cu o funcție rotundă neliniară, s-ar putea să obțineți un cifr de bloc decent, dar chiar și atunci este posibil ca informațiile să se scurgă, ceea ce duce la insecuritate.

De asemenea, cifrurile bloc sunt în cel mai bun caz securizate IND-CPA (cea mai slabă formă de securitate) dacă exact un bloc este criptat cu orice cheie dată. Mai multe blocuri care sunt criptate înseamnă că oricare două blocuri de text simplu identice vor avea text cifrat identic, ceea ce reprezintă o întrerupere a imposibilității de distinge. Pentru a fi securizat IND-CPA, este necesar un mod de operare cum ar fi modul CTR (transformarea acestuia într-un cifru de flux) sau modul CBC (înlănțuirea blocurilor de text cifrat). Dar chiar și asta nu este „securizat”, deoarece un atacator poate modifica textul cifrat și poate determina o victimă să decripteze pentru a obține un text simplu incorect, așa că este necesar un mod de criptare autentificată pentru securitatea IND-CCA3 corespunzătoare. Ar fi ceva de genul GCM, SIV, GCM-SIV sau OCB. Și chiar și asta are câteva avertismente, deoarece astfel de moduri necesită un „nonce” (Număr utilizat O dată) care elimină (GCM, OCB) sau reduce (GCM-SIV, SIV) securitatea dacă este reutilizat.

user2357 avatar
drapel us
Cred că confuzia este legată de relația dintre cheia/textul simplu și textul cifrat care trebuie acoperit, în timp ce difuzia este legată de răspândirea modificărilor cheii/textul simplu în textul cifrat, am dreptate?
J. Doe avatar
drapel at
Mulțumesc pentru răspuns. Nu sunt încă 100% convins (dar suficient că acest lucru nu va funcționa în practică). Am făcut o greșeală să nu specific exact ce este dat și ce se dorește (având în vedere: min 1 neliniar+ min 1 altă operație care interpretează diferit intrarea, cel puțin atâtea runde pe care fiecare bit al textului clar/cheie poate avea un impact la fiecare bit al cifrului, a dorit: securitate IND-CPA suficientă pentru acest caz). Totuși m-ați convins că statisticile trebuie făcute mult mai detaliate decât se aștepta. De exemplu, un anumit bit ar putea fi întotdeauna 1 dacă un alt bit al textului simplu/cheie este, de asemenea, 1.
J. Doe avatar
drapel at
Statisticile pe biți nu vor putea urmări acest lucru.Pentru o anumită valoare de bit la o anumită poziție, șansa de modificare a textului cifrat trebuie urmărită pentru fiecare membru al setului de putere al tuturor celorlalte valori de biți (cu excepția setului complet), ceea ce este imposibil în aplicarea reală. De exemplu. șansa de schimbare a primului bit de la 1 la 0, având în vedere că al 3-lea și al 6-lea bit este 1 și 7 biți este 0. Presupunând că s-a făcut acest tip de statistică și se realizează aproximativ 50% pentru fiecare membru al setului de putere: mai vezi posibilitatea ca informațiile să fie scurse (dacă da, câteva exemple vă rog)?

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.