Wat is Digital Signature Algorithm (DSA)?
Digital Signature Algorithm (DSA) is een standaardmethode om te bewijzen dat een bericht echt is en niet gewijzigd, met behulp van een paar cryptografische sleutels. Zie het als een waszegel die wiskunde in een oogwenk kan verifiëren, geen notaris nodig.
DSA versleutelt je gegevens. Nee. Het ondertekent gegevens zodat anderen kunnen verifiëren wie het stuurde en dat er niets is veranderd. Versleuteling is iets anders.
Hoe Digital Signature Algorithm (DSA) werkt
Kort overzicht vanuit het perspectief van een wallet. Je wilt aantonen dat een bericht van jou is zonder je geheim prijs te geven. Dit is het proces:
- Stap 1: Je wallet bewaart je privésleutel, die geheim blijft.
- Stap 2: Je vraagt aan de wallet om een van je cryptotransacties of een bericht te ondertekenen.
- Stap 3: De wallet maakt een hash van het bericht, kiest een verse willekeurige waarde k, en berekent daarna met je geheime sleutel een handtekeningpaar r en s.
- Stap 4: Iedereen kan jouw publieke sleutel gebruiken om te controleren of r en s overeenkomen met het bericht en jouw sleutel.
- Stap 5: Als de controle klopt, accepteert het netwerk de actie als authentiek. Er komt geen geheim naar buiten.
Dat is het uitgangspunt. Onderteken met de geheime sleutel, verifieer met de publieke sleutel.
Waarom Digital Signature Algorithm (DSA) belangrijk is
Waarom zou je er om geven? Omdat vertrouwen op het internet bewijs nodig heeft.
- Voordeel: Bewijst auteurschap en integriteit zonder je geheime sleutel te delen. Snel, automatisch en op een veilige manier.
- Perspectief: Het maakt markten voor digitale activa veiliger door vervalste goedkeuringen en stille wijzigingen te stoppen.
- Relevantie: Je komt het tegen wanneer je acties met je wallet ondertekent, bij software-updates of bij het goedkeuren van smart contracts, zelfs als de app de wiskunde verbergt.
Gebruik de willekeurige waarde k nooit opnieuw bij het ondertekenen, en geef de voorkeur aan deterministische ondertekening als die wordt ondersteund. Hergebruik van k kan je geheime sleutel in één foutmoment onthullen.
Belangrijke kenmerken van Digital Signature Algorithm (DSA)
De eigenschappen die het sterk maken:
- Willekeur: Elke handtekening heeft een nieuwe onvoorspelbare k nodig om veilig te blijven.
- Twee onderdelen: De handtekening bestaat uit twee getallen r en s, niet slechts één blok.
- Hashing: Er wordt een hash van het bericht ondertekend, wat zorgt voor consistentie en snelheid.
- Normen: Gedefinieerd door NIST in FIPS 186, zodat auditors en bibliotheken dezelfde specificatie volgen.
- Verificatie: Iedereen met de publieke sleutel kan het bewijs controleren zonder het geheim te leren.
Hoe wordt Digital Signature Algorithm (DSA) berekend?
Je hoeft dit niet met de hand uit te voeren, maar hier is een schets. Het systeem heeft openbare parameters p, q, g. Je geheime sleutel is x en je publieke sleutel is y, wat gelijk is aan g tot de macht x modulo p.
H = hash(message) choose k as a nonzero random in Z_q r = (g^k mod p) mod q s = inv(k, q) * (H + x*r) mod q signature = (r, s) Om te verifiëren, bereken w gelijk aan inv(s, q), vervolgens u1 gelijk aan H maal w, en u2 gelijk aan r maal w. Als v, gelijk aan (g^u1 * y^u2 mod p) mod q, gelijk is aan r, is de handtekening geldig.
Handtekeningen bewijzen herkomst en integriteit, niet vertrouwelijkheid. Als het bericht gevoelig is, heb je nog steeds versleuteling nodig.
Voorbeeld
Je wallet ondertekent een verzoek tot overboeking, zendt het bericht plus r en s uit, en validators bevestigen de handtekening voordat er munten worden verplaatst.
Leuk weetje
DSA werd begin jaren negentig gestandaardiseerd en was geïnspireerd door ideeën van Schnorr. Een bekende waarschuwing kwam later toen een team van een spelconsole de signing nonce hergebruikte in een verwante methode en de geheime sleutel aan het licht kwam.
Samenvatting
Digital Signature Algorithm (DSA) is je wiskundige zegel van goedkeuring op berichten en geldbewegingen. Eenvoudig idee, stevige bescherming.
