Puncte:2

Rezistență naturală la atacurile canalelor laterale ale XMSS/LMS/SPHINCS+

drapel cn

Toate aceste scheme de semnătură post cuantică sunt susținute de autori ca fiind rezistente în mod natural la atacurile pe canale laterale. Întrebarea mea este, de ce sau cum?

Puncte:3
drapel my

Toate aceste scheme de semnătură post cuantică sunt susținute de autori ca fiind rezistente în mod natural la atacurile pe canale laterale. Întrebarea mea este, de ce sau cum?

Ei bine, hai sa despartim asta:

  • În ceea ce privește sincronizarea și canalele laterale bazate pe cache, implementarea evidentă este destul de bună (excepție: seturile de parametri bazate pe Haraka ale Sphincs+)

Iată de ce: implementarea naturală a funcțiilor SHA-256 și SHAKE se bazează pe instrucțiuni care sunt în timp constant pe procesoarele moderne (operații logice, adăugare modulară, deplasări/rotiri în cantități constante) și nu fac acces la memorie sau date dependente de date. -ramuri dependente (cu excepția celor bazate pe lungimea mesajului - singurul mesaj de lungime variabilă implicat este hash-ul inițial al mesajului și nu considerăm că mesajul care este semnat este secret). În plus, implementarea naturală a infrastructurii HBS (de ex.înlănțuirea Winternitz sau calculele arborelui Merkle) nu au, de asemenea, accese sau ramuri de memorie bazate pe secrete (implica ramuri condiționate, totuși acele condiții sunt întotdeauna funcții fie ale mesajului, fie ale valorilor pe care le plasăm în semnătură; adică valori că adversarul ar ști oricum).

Prin urmare, canalele laterale bazate pe sincronizare și cache nu oferă nicio valoare pe care atacatorul nu o cunoștea deja (presupunând, desigur, că implementarea nu încearcă în mod deliberat să se scurgă).

  • În ceea ce privește puterea sau atacurile pe canale laterale în stil EMF, povestea nu este chiar la fel de clară.

Majoritatea valorilor interne (de exemplu, nodurile interne ale arborelui Merkle) nu sunt de fapt secrete. În plus, un atac de putere/EMF (presupunând că semnătura nu este atât de puternică încât să fie suficientă o singură urmă - cu operațiunile simetrice despre care vorbim, în general nu sunt) necesită utilizarea aceleiași valori secrete într-un număr de diferite contexte; prin urmare, valorile anterioare dintr-un lanț Winternitz sunt, de asemenea, greu de atacat (deoarece acele valori sunt folosite o singură dată).

Ceea ce ar putea fi atacat este funcția folosită pentru a genera valorile inițiale pentru lanțurile Winternitz (și pentru Sfincs+ frunzele FORS). Ceea ce se face în mod obișnuit în toate trei (și este mandatat în mod oficial de Sphincs+) este să folosești aceeași sămânță statică (cu parametri suplimentari diferiți) pentru a genera direct aceste valori - exact de asta ar avea nevoie un atac DPA (și, desigur, odată ce atacatorul recuperează asta, ei bine, jocul sa terminat). Documentul din runda 3 Sphincs+ sugerează că ați putea folosi o implementare a funcției hash rezistentă la DPA în acest caz.

Acum, este posibil să reluați logica de generare a valorii inițiale, astfel încât să nu poată fi atacată în acest fel (de exemplu, prin generarea acestor valori ca frunze dintr-un arbore binar mare, astfel încât orice valoare de nod intern să fie utilizată în doar două contexte) . Cu toate acestea, nicio astfel de metodă nu a fost sugerată în mod oficial pentru niciuna dintre cele trei.

drapel cn
deci, în general, funcția hash trebuie să producă rezultate de putere constantă. Ce zici de atacul CPA sau injecțiile de greșeală care ar putea manipula indexul semnăturii (să-l semneze cu aceeași cheie de două ori)?
poncho avatar
drapel my
@hooujki: Nu, funcțiile hash nu dau, în general, rezultate constante de putere - de fapt, traducerea consumului de putere înregistrat în secrete necesită de obicei mai multe urme în contexte diferite. În ceea ce privește CPA ("Chosen Plaintext Attacks"), nu există nimic util acolo (cu toate acestea, acestea nu sunt în general considerate atacuri de canal secundar).
poncho avatar
drapel my
@hooujki: În ceea ce privește atacurile de eroare, pentru LMS și XMSS, acestea depind de logica mersului în arbore Merkle (nu chiar atât de dificil, dar nu banal și, de asemenea, nu este specificat în documente); cu Sphincs+, atacurile de greșeală sunt destul de puternice și singura măsură pe care o cunosc este „calculați de două ori, sper că atacatorul nu poate injecta aceeași greșeală de două ori.
drapel cn
prin CPA mă refer la „Analiza puterii corelației”. Ei bine, injectarea aceleiași erori (modificări în MSB/LSB) poate să nu fie atât de dificilă. Prin logica mersului te referi la algoritmii de optimizare folosiți pentru a genera valoarea rădăcină ca semnatar?
poncho avatar
drapel my
@hooujki: „Analiza puterii corelației” ar avea aceleași constrângeri (trebuie să fie rulată de mai multe ori pe operațiuni legate de nu identice) pe care le are DPA? Dacă da, are același răspuns. În ceea ce privește „logica mersului”, ei bine, de fapt, un răspuns complet ar ocupa mai mult spațiu decât ceea ce este permis într-un comentariu - răspunsul scurt este că puteți face o funcție unidirecțională pentru a genera frunzele Winternitz (deci, odată ce semnați, puteți nu mai resemnezi cu acea frunză - ai uitat cum să faci asta), și tu (într-un model ierarhic) memorezi în cache semnăturile intermediare. Din nou, netrivial, dar realizabil.
drapel cn
dar cum se creează o funcție unidirecțională pentru aceste frunze dacă trebuie recreate de două ori? Puteți crea valorile inițiale cu un PRNG ca în ipoteza clasică Winternitz, dar nu puteți face asta, deoarece după ce cheia publică este generată prima dată, semnatarul trebuie să folosească aceleași valori (un PRNG nu poate produce aceeași valoare) pentru a recrea cheia publică a schemei corespunzătoare în timpul semnării
poncho avatar
drapel my
@hooujki: da, semnatarul trebuie să facă mai multe treceri prin arborele Merkle (cu excepția cazului în care memorează în cache toate valorile Winternitz, ceea ce nimeni nu o face). Pentru trecerile inițiale, am păstra starea PRNG de pornire în jur. Ne pasă doar de ultima trecere (care este cea care semnează mesajul); odată ce semnăm mesajul, atunci putem actualiza starea PRNG *și uită starea anterioară*. Apoi, nu putem fi păcăliți să semnăm din nou cu acel OTS (pentru că am uitat starea necesară). Greșelile din trecerile anterioare ar duce la semnături nevalide, dar nu ar scurge nimic. Realizabil, nu este evident

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.