Puncte:1

Algoritm de derivare a cheii de memorie în care toată memoria solicitată este necesară în fiecare moment

drapel in

Fundal. Toți algoritmii MKDF (KDF cu memorie cu memorie) pe care îi cunosc (Scrypt, Argon2, Balloon) nu necesită cu adevărat toată memoria în fiecare moment în timpul de rulare a implementării algoritmului, ci necesită o penalizare de calcul considerabilă atunci când este utilizată mai puțină memorie. .

Aproximativ, utilizarea memoriei în raport cu graficul de timp arată astfel (desigur, MKDF-urile mai bune vor avea mai multe vârfuri adiacente): introduceți descrierea imaginii aici (Imagine de la Acolo)

Cred că această limitare (nu are nevoie de memorie în fiecare moment) se datorează modului în care funcționează computerele de uz general (de exemplu, CPU, RAM).

Întrebare. Dacă lasăm ipoteza despre hardware (de exemplu, permitem hardware specializat), putem defini un algoritm MKDF care necesită toată memoria sa în fiecare moment? De exemplu. putem face astfel încât graficul să arate o linie dreaptă?

Gândurile mele până acum. Imaginați-vă dacă avem un plan de memorie mecanic, în care starea fiecărui bit de memorie este conectată la starea oricărui alt bit, astfel încât, dacă inversăm valoarea unui bit, acesta va determina inversarea fiecărui bit din întreaga memorie.

Cu acest plan de memorie mecanică, executăm o singură instrucțiune care inversează 1 bit și acea singură operație va inversa mecanic starea tuturor celorlalți biți.

Dacă relația dintre biți nu este previzibilă (de exemplu, asemănătoare cu modul în care o mică modificare într-un bloc de text clar are ca rezultat modificarea completă a textului cifrat), atunci cred că această memorie mecanică a devenit un MKDF care poate funcționa astfel:

  1. Utilizatorul inițializează memoria umplând-o cu biți aleatori care sunt generați din unele semințe. Acest lucru se face o singură dată.
  2. Utilizatorul își codifică parola în cei mai semnificativi biți din planul memoriei mecanice. Acest lucru se face evident de fiecare dată când utilizatorul dorește să obțină o cheie mai sigură din parola sa.
  3. Pe măsură ce utilizatorul își codifică parola în primii biți ai acelei foi de memorie mecanică, stările tuturor biților din foaia de memorie mecanică se vor răsturna într-un mod imprevizibil.
  4. În cele din urmă, când utilizatorul a terminat de codificarea parolei, el alege pur și simplu cei mai puțin semnificativi biți din acel plan de memorie mecanică ca cheie derivată.

Dacă un adversar încearcă să facă acest lucru cu un plan de memorie mecanic mai mic (cu mai puțini biți de memorie), atunci cheia lui derivată va fi total aleatorie.

Dacă presupunerile mele sunt corecte și că implementarea unui astfel de hardware este fezabilă, atunci:

  • Aceasta este o platformă pentru algoritmi bazați pe hardware MKDF care mereu necesită aceeași cantitate de memorie, la fiecare moment de timp în timpul de rulare a funcției de derivare a cheii.
  • Utilizatorul cumpără un singur plan de memorie mecanică pentru propriile autentificări, astfel încât utilizatorul își poate permite deoarece este o singură achiziție. Dar adversarul va trebui să cumpere multe dintre aceste foi pentru a le face în paralel. Deci, cred că este scalabil pentru utilizator, dar nu pentru adversar.

eu ghici putem implementa acest plan de memorie mecanic folosind:

  • Cuantele încurcate este probabil un mod mai natural de a gândi despre asta.
  • O placă mecanică mare, cu multă grăsime, pentru a nu se bloca roțile.
  • Electronică pentru o alternativă mai mică și mai puțin grasă.
caveman avatar
drapel in
@kelalaka - Adevărat, dar suma este irelevantă pentru întrebare. Pentru orice cantitate de memorie pe care o setați în ele, implementarea nu are nevoie de toată memoria în fiecare moment.
caveman avatar
drapel in
@kelalaka - știu deja asta. Am adăugat un grafic pentru a arăta mai bine ce vreau să spun.
caveman avatar
drapel in
Da. Același grafic; arată conceptul, care se aplică tuturor MKDF-urilor pe care le cunosc până acum (care este aproximativ 5?).
kelalaka avatar
drapel in
Nu, tocmai am testat, cu siguranță, utilizarea memoriei Argon2 nu este de două vârfuri, există foarte puțin timp de pierdere a memoriei care nu poate fi folosit pentru a amortiza...
caveman avatar
drapel in
@kelalaka - Nu înțelegeți cum funcționează acel grafic. Mă opresc aici.
kelalaka avatar
drapel in
M-am uitat la creșterea memoriei pe secundă. Și mai sunt multe pentru amortizare. Instalați Argon2 și încercați.. (vezi imaginea pe [chat](https://chat.stackexchange.com/transcript/message/59379296#59379296) )
ckamath avatar
drapel ag
Buna intrebare. Cred că noțiunea care vă interesează se numește *complexitate spațială susținută* și a fost explorată [aici](https://eprint.iacr.org/2018/147). Ele oferă, de asemenea, construcția de MHF-uri cu o complexitate spațială susținută ridicată în modelul de oracol aleatoriu.

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.