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.