Cum se criptează simetric valorile pe 64 de biți?

Sunt „curios de un algoritm care ar fi bun pentru următorul scenariu:

  1. ” text clar „pe 32 de biți intrare, preluată dintr-un contor
  2. ieșire „text cifrat” pe 32 sau 64 de biți
  3. Ar trebui să fie posibil să decriptați ieșirea cu cheia (și, eventual, cu câțiva alți parametri ascunși, cum ar fi un contor offset și curent) și returnează valoarea contorului original pe 32 de biți
  4. Un utilizator nu observă niciodată intrarea, dar poate primi orice număr de ieșiri, posibil secvențiale. Chiar și așa, nu ar trebui să poată știți ce indici au.
  5. Ar trebui să fie dificil să ghiciți alte rezultate care corespund valorilor contorului valide.

Intuiția mea neantrenată este că, din moment ce cheia și ieșirile sunt mai mare decât spațiul de intrare, ar trebui să fie destul de ușor să ai rezultate „bune”, cel puțin pentru primele rezultate. Totuși, pare, de asemenea, logic că, cu suficiente eșantioane, cheia și indicii ar putea fi calculați cu ușurință, dar mă aștept la majoritatea cazurilor a folosi l au peste 100 de valori.

Întrebările mele sunt:

  1. Există algoritmi existenți care funcționează pentru acest scenariu?
  2. Cât de greu ar fi să sparge? Adică, calculați valori care decriptează la indici valabili.
  3. Cât de mult afectează deținerea mai multor eșantioane eficiența de a-l sparge?
  4. Ce este greșit cu o abordare naivă cum ar fi:

    u64 output = input repeat 64x output = ((output ^ key) + key) rotate-left 37 

    Presupunând că adăugarea se încadrează în jurul limitelor întregi de 64 de biți. Se pare că ar amesteca bine cheia aleatorie cu o singură intrare, dar care posedă mai multe rezultatul ar putea crește rapid informațiile pe care le are un atacator, deși nu aș ști cum. Evident că va fi rupt, încerc doar să învăț.

  5. Aș folosi o valoare dependentă de cheie pentru rotirea la stânga, cum ar fi (((key & 0xFFFE)+1) * 37) să fii mai bun? Cât de mult ajută și de ce?
  6. Ce abordări, resurse etc. ați folosi atât pentru a analiza algoritmul, cât și pentru a proiecta unul mai bun?

Comentarii

  • Aceasta este foarte mult o problemă XY în felul în care o descrieți. Un CSPRNG (rețineți S) nu pare să fie deloc o soluție bună pentru acest lucru '. Solicitarea dimensiunii cheii este puțin ciudată, de ce nu este posibil să se utilizeze dimensiuni mai mari ale cheilor?
  • Presupun că dimensiunea cheii nu este esențială. Speram că cheia pe 64 de biți va fi suficientă pentru a cripta o valoare pe 32 de biți.

Răspuns

  1. Există algoritmi existenți care funcționează pentru acest scenariu?

Da, de fapt , există un număr de cifrări de blocuri pe 64 de biți. Înțelepciunea standard este că acestea nu sunt încurajate pentru uz general, deoarece modurile standard de cifrare a blocurilor tind să înceapă să scurgă informații atunci când ajungeți la limita de ziua de naștere (în acest caz, aproximativ 30 Gbytes); totuși pentru cazul dvs. de utilizare, acest lucru nu ar fi fii o preocupare.

Iată câteva opțiuni:

  • 3DES (alias TDES); acesta este DES aplicat de trei ori cu trei taste diferite; acesta are avantajul de a fi foarte bine studiat.

  • Speck care are seturi de parametri cu cifre de blocuri pe 64 de biți. Aceasta are avantajul de a fi cea mai rapidă alternativă și a fost conceput de oameni care știu că o fac și o realizează printr-o cantitate surprinzătoare de criptanaliză.

  • Un cifru FPE (cum ar fi FF1, care poate gestiona orice dimensiune de bloc arbitrară (inclusiv 64 de biți). Acest lucru are avantajul că permit opțiunea pentru o modificare (care este un loc convenabil pentru a plasa „ceilalți parametri ascunși”, dacă decideți că este un avantaj ). Este mai lent decât alternativele; cu FF1, securitatea provine din securitatea subiacentă a AES, plus securitatea dovedită a structurii Feistel.

Acum, acestea iau chei mai lungi de 64 de biți; înțelepciunea comună este că o cheie pe 64 de biți nu este suficient de lungă.

  1. Cât de greu ar fi să spargem? Adică, calculați valori care decriptează la indici valabili.

Pentru oricare dintre cele de mai sus, singura opțiune practică pe care ar avea-o un adversar ar fi să ghiciți în mod aleatoriu textele cifrate și sperați să vă împiedicați de unul care decriptează într-un index valid.

  1. Cât costă posesia mai multe eșantioane afectează eficiența spargerii acestuia?

Pentru oricare dintre cele de mai sus, având cantități mari de eșantioane va face în continuare imposibilul atacul.

  1. Ce e în neregulă cu o abordare naivă de genul …

Cifrele ARX (de fapt, orice cifrare, dar mai ales ARX) sunt dificile pentru a obține corect. proiectarea ar trebui într-adevăr să fie bine studiată pentru a vă asigura că o face).

  1. Ce abordări, resurse etc. ați folosi atât pentru a analiza algoritmul, cât și pentru a proiecta unul mai bun?

Vă sugerez să mergeți cu un design care a fost deja analizat; enumerăm trei mai sus.

Comentarii

  • Prefer ' prefer, de exemplu, Blowfish peste 3DES dacă există o modificare a introducerii cheii relativ mici. Securitatea 3DES ar fi fi îndoielnic, chiar dacă tasta a fost extinsă la 128 biți (sau mai bine zis 112 biți, desigur).
  • @MaartenBodewes: aveți o citare a cineva care să arate că 3DES cu un cheia necunoscută fiind diferențiată de o permutare uniformă?
  • Nu, desigur că nu. Cu toate acestea, mai degrabă nu trebuie să motivez dacă criptarea mea are ~ Puterea de 80 biți sau ~ 112 biți atunci când este alimentată o cheie de 128 biți sau 192 biți (nu am ' nu am nicio îndoială că veți putea face acest lucru, dar hei, noi re nu este tot poncho). Și dimensiunea cheii pare să fie o problemă în întrebare. Doar aruncarea biților de paritate în acest caz este risipitoare.
  • Ați putea să detaliați declarația " Acum, acestea iau chei mai lungi de 64 de biți; înțelepciunea comună este că o cheie pe 64 de biți nu este suficient de lungă. "? Care algoritmi necesită chei cu lungimi și cheile pe 64 de biți nu sunt suficient de lungi pentru ce anume?
  • @shader: cheile de doar 64 de biți sunt vulnerabile din căutările cu forță brută de la adversari mari (bine finanțate). Deoarece, în general, este suficient de ușor să utilizați taste ceva mai mari (de ex. 128 biți) care nu sunt ' t vulnerabile pentru oricine, în general, optăm pentru opțiunea mai sigură (chiar dacă nu ne îngrijorează imediat faptul că NSA va fi interesată să ne atace sau dacă Amazon va decide să ne dedice întregul nor …

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *