Da, poți folosi asta. Prin definiție, un atacator nu ar trebui să poată veni cu o semnătură orice mesaj specific fără cheia privată. Deci, dacă acesta este cazul, atunci o semnătură poate fi într-adevăr folosită ca o cheie simetrică și știu de un caz în care a fost folosită așa (sau cel puțin ca o cheie secretă, mai degrabă decât o cheie secretă).
Cu toate acestea, ar trebui să fiți atenți când faceți acest lucru. Unii algoritmi de semnătură sunt indeterminiști și asta ar putea complica lucrurile. În cel mai rău caz, ar putea face algoritmul de semnătură complet nesigur. În cel mai bun caz, ar putea fi nevoit să modificați rutina de generare a semnăturii pentru a injecta o valoare de bază sau aleatorie. De asemenea, ar fi necesar să stocați acea valoare de bază sau aleatorie, iar acest lucru ar putea fi contrar cerințelor dvs. de utilizare. Rețineți că, dacă ceva despre generarea numerelor aleatoare este schimbat - algoritmul, mecanismul de extracție sau extracția întregului - atunci probabil că veți obține cheia greșită (și da, am văzut că se întâmplă acest lucru).
Cu toate acestea, dacă ați folosi o versiune deterministă a RSA (padding PKCS#1 v1.5) sau ECDSA deterministă, atunci ar trebui să fiți în regulă.
Cu toate acestea, aveți dreptate să utilizați un KDF după date. O cheie simetrică ar trebui să extragă toate aleatoriile din semnătură pentru a fi sigură (eventual urmată de extinderea cheii pentru a ajunge la dimensiunea potrivită, dar acest lucru nu este de obicei necesar).
cripta
cu toate acestea, este utilizat în general pentru parole. Este în regulă, dar probabil că nu aveți nevoie de sare sau de factorul de lucru pentru a întinde cheia (deoarece cantitatea de aleatorie din semnătură ar trebui să fie oricum suficient de mare). Deci este bine dacă cripta
este necesar, dar, în mod normal, preferați să utilizați un KBKDF, cum ar fi HKDF sau doar HKDF-Extract.
Dacă aveți acces la valoarea cheii private, ați putea la fel de bine să utilizați KDF pentru asta.
Cu siguranță aș recomanda să utilizați un algoritm de generare a semnăturii care are cel puțin aceeași putere ca și cheia simetrică. Același lucru este valabil și pentru funcția KDF, desigur; puteti gasi detalii la keylength.com.
Mai mult, poate doriți să rețineți că criptografia simetrică este greu de atacat cu un computer cuantic cu drepturi depline, în timp ce algoritmii asimetrici nu sunt (deși această schemă poate fi mai greu de atacat decât o schemă generică de generare a semnăturii, în funcție de modul în care este utilizată). ).
Încă o notă de implementare: funcțiile de generare a semnăturii nu se așteaptă să păstrați semnătura secretă. De exemplu, un modul hardware ar putea fi capabil să păstreze o cheie simetrică derivată în mod normal în interiorul HSM. Pe de altă parte, ar putea exporta o semnătură fără agitație, așa cum este valoarea semnăturii presupus a fi public.
Ar putea fi, de asemenea, posibile atacuri ale canalelor laterale asupra valorii semnăturii, este greu de spus în avans. Deci, deși această schemă ar trebui să fie teoretic solidă, este totuși foarte nerecomandabil să faceți acest lucru, cu excepția cazului în care nu există altă cale.