notă: nu sunt criptograf
Vreau să verific dacă implementarea mea RSA Blind Signatures este sigură pentru a fi utilizată într-o aplicație în faza de producție și am, de asemenea, câteva întrebări la care aș fi atât de recunoscător să primesc un răspuns.
Îmi pare rău, dar când aud întrebări de genul acesta, sună astfel:
Nu sunt chirurg, dar vreau să fac o intervenție chirurgicală pe inimă. Am făcut multe cercetări timp de câteva zile și vreau să mă asigur că înțeleg elementele de bază înainte de a începe...
Bine, nu aș face-o acea rău, dar sună oarecum asemănător (și dacă este într-adevăr pentru o „aplicație în faza de producție”, s-ar putea să nu fie chiar atât de departe. Cel puțin, dacă greșești operația pe inimă, vei ști imediat nu a mers...
Cu asta de pe piept, iată câteva răspunsuri:
Întrebarea 1: Cum se înmulțește $h(m)$ și $r^e \bmod n$ ? Rezultatul nu va fi mai mare decât $n$ ?
De fapt, le înmulți modulo $n$.
Întrebarea 2: Pot folosi orice algoritm hash pe m, cum ar fi SHA-256?
Întrebarea 4: Cum se implementează o schemă de umplutură pentru a preveni falsificarea semnăturilor din cauza proprietății homomorfe a RSA?
Iau aceste două întrebări împreună pentru că au același răspuns. Ce $h$ trebuie să fie nu SHA-256 direct, ci unul în care efectuați un hash (cum ar fi SHA-256) și apoi completați rezultatul, folosind probabil PKCS 1.5 SSA sau PSS (în funcție de ceea ce se aștepta verificatorul).
Întrebarea 3: Serverul nu va hash sau nu va bloca mesajul orb înainte de a-l semna. Este corect și sigur?
În acest caz, este corect și sigur - dacă serverul ar fi hash sau a completat mesajul, ar încurca lucrurile. Amintiți-vă, ați făcut hashing/padding la pasul 4.
Pe de altă parte (pentru a reveni la comentariile mele inițiale), dacă ai nevoie să pui aceste întrebări, s-ar putea să nu fii pregătit să implementezi asta singur...