DSA (engl. Digital Signature Algorithm) on sähköiseen allekirjoitukseen tarkoitettu algoritmi. NIST ehdotti DSA:ta sähköisen allekirjoituksen standardiksi (engl. Digital Signature Standard, DSS) vuonna 1991.[1] DSA määritellään standardissa, jonka NIST esitti vuonna 1994 dokumentissa FIPS 186.[2] Standardia on päivitetty vuonna 1998 (FIPS 186-1)[3], vuonna 2000 (FIPS 186-2)[4], vuonna 2009 (FIPS 186-3)[5], vuonna 2013 (FIPS 186-4)[6] ja 2023 (FIPS 186-5).[7] Vuonna 1993 Dave Banisar ilmoitti Freedom of Information Act (FOIA) -kanteen myötä, että NIST ei ollut kehittänyt sähköisen allekirjoituksen standardia vaan sen oli tehnyt NSA.[8]
Sähköisen allekirjoituksen tarkoitus on, että vastaanottaja voi julkisen avaimen perusteella varmistaa lähettäjän henkilöllisyyden ja tiedon muuttumattomuuden. Myös kolmas osapuoli voi tarkistaa allekirjoituksen ja siihen liittyvän tiedon autenttisuuden.[1]
NIST on kieltänyt digitaalisien allekirjoituksien luomisen DSA:lla vuonna 2019 ja sen sijaan on käytettävä ECDSA- ja EdDSA-menetelmiä.[9] ECDSA on määritelty standardissa FIPS 186-5. EdDSA on määritelty standardissa RFC 8032 ja hyväksytty standardissa FIPS 186-5. DSA ei ole enää mukana standardin versiossa FIPS 186-5.[10]
Tähän artikkeliin tai osioon ei ole merkitty lähteitä, joten tiedot kannattaa tarkistaa muista tietolähteistä. Voit auttaa Wikipediaa lisäämällä artikkeliin tarkistettavissa olevia lähteitä ja merkitsemällä ne ohjeen mukaan. |
Jokaisella käyttäjällä on julkinen avain ja yksityinen avain. Julkinen avain vastaa tiettyä yksityistä avainta, mutta nämä kaksi avainta eivät ole koskaan samat. Julkinen avain oletetaan yleisesti tunnetuksi, ja yksityistä avainta ei koskaan paljasteta ulkopuolisille. Avaimen luonnissa valitaan hash-funktio H. Alkuperäisen DSS standardin mukaan H oli aina SHA-1, mutta nykyisin käytetään muita, vahvempia hash-funktioita SHA-perheestä. Tämän jälkeen päätetään avaimen pituus L. Tämä on avaimen kryptografisen vahvuuden ensisijainen määrittäjä. Alkuperäinen DSS rajoitti pituuden L 64 monikertoihin välille 512 ja 1024. Myöhemmin FIPS 186-2 määritteli pituuden L tarkalleen 1024:än.
DSA:n heikkous on, että jokainen allekirjoitus tarvitsee uuden satunnaisesti valitun arvon k. Jos arvoa ei muuteta tai satunnaisluvun valinnassa on heikkous sen perusteella voidaan löytää allekirjoittamiseen käytetty yksityinen avain x.[1] Puutteellisesti toimiva satunnaislukugeneraattori on eräs mahdollinen heikkous.[11] Kuten DSA myös ECDSA on haavoittuva vuotamaan yksityistä tietoa mikäli satunnaisluvun valinta on heikko tai vihamielisesti toteutettu.[12]
SSH-protollan toisessa versiossa (SSH2) otettiin mukaan tuki DSA-algoritmille[13], mutta se on eräissä toteutuksissa oletuksena ollut pois käytöstä vuodesta 2015 lähtien aikomuksena poistaa se kokonaan.[14]