Kun luot SSH-todennusavaimia Unix / Linux-järjestelmässä, jossa on ssh-keygen
, sinulla on mahdollisuus luoda RSA- tai DSA-avainpari (käyttäen -tyyppi koodi>).
Mitä eroa RSA- ja DSA-avaimilla on? Mikä saisi jonkun valitsemaan toisen?
Kun luot SSH-todennusavaimia Unix / Linux-järjestelmässä, jossa on ssh-keygen
, sinulla on mahdollisuus luoda RSA- tai DSA-avainpari (käyttäen -tyyppi koodi>).
Mitä eroa RSA- ja DSA-avaimilla on? Mikä saisi jonkun valitsemaan toisen?
Mene RSA: n kanssa.
DSA: ta on nopeampi allekirjoituksen luomisessa, mutta hitaampaa validoinnissa, hitaampaa salauksessa, mutta nopeampi salauksen purkamisessa ja suojausta voidaan pitää samanarvoisena kuin yhtä avainpituinen RSA-avain. Se on rei'ityslinja, nyt jonkin verran perusteluja.
RSA-algoritmin turvallisuus perustuu siihen, että suurten kokonaislukujen jakaminen tiedetään olevan "vaikeaa", kun taas DSA-suojaus perustuu diskreetin logaritmin ongelmaan. Nykyään nopein tunnettu algoritmi suurten kokonaislukujen jakamiseksi on General Number Field Sieve, joka on myös nopein algoritmi, jolla ratkaistaan erillisten logaritmien ongelma rajallisissa kentissä moduloimalla suuri alkuluku p DSA: n määritelmän mukaisesti.
Jos nyt tietoturvan voidaan katsoa olevan yhtä suuri, suosisimme tietysti nopeamman algoritmin. Mutta jälleen kerran, selkeää voittajaa ei ole.
Voit tarkastella tätä tutkimusta tai, jos koneellesi on asennettu OpenSSL, suorita openssl speed koodi>. Näet, että DSA toimii nopeammin allekirjoituksen luomisessa, mutta paljon hitaammin, kun vahvistetaan saman avaimen pituinen allekirjoitus. Vahvistus on yleensä mitä haluat olla nopeampi, jos käsittelet allekirjoitetun asiakirjan kanssa. Allekirjoitus luodaan kerran - joten se on hieno, jos tämä vie vähän kauemmin - mutta loppukäyttäjät voivat tarkistaa asiakirjan allekirjoituksen paljon useammin.
Molemmat tukevat jonkinlaista salaustapaa, RSA ei ole ruutu ja DSA käyttämällä El Gamalia. DSA: n salauksen purku on yleensä nopeampaa, mutta salausta hitaampaa, RSA: n kanssa päinvastoin. Jälleen haluat, että salauksen purku on täällä nopeampaa, koska yksi salattu asiakirja voidaan purkaa monta kertaa.
Kaupallisessa mielessä RSA on selvästi voittaja, kaupallisia RSA-varmenteita käytetään paljon laajemmin kuin DSA-varmenteita.
Mutta tallensin lopun tappaja-argumentin: man ssh-keygen
sanoo, että DSA-avaimen on oltava tarkalleen 1024 bittiä, jotta se voi olla yhteensopiva NIST: n FIPS 186-2. Joten vaikka teoriassa pidemmät DSA-avaimet ovat mahdollisia (FIPS 186-3 myös sallii niiden nimenomaisesti), rajoitat silti 1024 bittiin. Ja jos otat huomioon tämän [artikkelin] näkökohdat, emme ole enää turvallisia 1024 bitillä joko RSA: lle tai DSA: lle.
Joten tänään sinun on parempi käyttää RSA 2048 tai 4096 bittiä avain.
Tällä hetkellä kysymys on hieman laajempi: RSA vs. DSA vs. ECDSA vs. Ed25519 . Joten:
BlackHat 2013 -esityksessä ehdotetaan, että ongelmien ratkaisemisessa on saavutettu merkittäviä edistysaskeleita, joiden DSA : n vahvuus ja jotkut muut algoritmit on perustettu, joten ne voidaan matemaattisesti rikkoa hyvin pian. Lisäksi hyökkäys voi olla mahdollista (mutta vaikeampi) ulottua myös RSA: han.
Esityksessä ehdotetaan sen sijaan elliptisen käyrän salauksen käyttämistä. OpenSSH: n tukemat ECC-algoritmit ovat ECDSA ja OpenSSH 6.5: n jälkeen Ed25519.
OpenSSH tukee vain NIST-käyriä ECDSA: lle ja tämä tutkimus nämä käyrät näyttävät todella epäilyttäviltä NSA: n takaoville. Ja jos NSA voi jo murtaa sen, ei ole yhtä vaikeaa murtaa jonkun muun kuin oikea käyrä. Ed25519 on sama asia, mutta paremmalla käyrällä, joten se on turvallisin veto taustalla olevan algoritmin matemaattisesti rikkoutumista vastaan.
Lisäksi DSA: lla ja ECDSA: lla on ikävä ominaisuus: ne vaativat parametrin, jota yleensä kutsutaan k : ksi, olevan täysin satunnainen, salainen ja ainutlaatuinen. Käytännössä se tarkoittaa, että jos muodostat yhteyden palvelimeesi koneesta, jolla on huono satunnaislukugeneraattori ja samaa k ta käytetään satunnaisesti kahdesti, liikenteen tarkkailija voi selvittää yksityisen avaimesi. (lähde: Wikipedia DSA: ssa ja ECDSA, myös tämä).
Tärkeintä on:
SSH: ssä asiakaspuolella valinnalla RSA ja DSA ei ole väliä paljoa, koska molemmat tarjoavat samanlaisen suojauksen samalle avainkoolle (käytä 2048 bittiä ja olet onnellinen).
Historiallisesti SSH-protokollan versio 1 tuki vain RSA-avaimia. Kun versio 2 määriteltiin, RSA oli vielä patentoitu, joten DSA: n tuki lisättiin, jotta avoimen lähdekoodin patenttitön toteutus voitaisiin tehdä. RSA-patentin voimassaolo päättyi yli 10 vuotta sitten, joten nyt ei ole huolta.
Teoriassa joissakin hyvin erityisissä tilanteissa sinulla voi olla suorituskykyongelma jommankumman kanssa: jos palvelin on hyvin pieni koneella (esimerkiksi i486), se pitää parempana asiakkaita, joilla on RSA-avaimet, koska RSA-allekirjoituksen todentaminen on vähemmän laskennallista kuin DSA-allekirjoituksen tarkistaminen. Päinvastoin, DSA-allekirjoitus on lyhyempi (tyypillisesti 64 tavua vs 256), joten jos kaistanleveys on hyvin lyhyt, suosisit DSA: ta. Joka tapauksessa sinulla on vaikea havaita näitä vaikutuksia, puhumattakaan siitä, että ne ovat tärkeitä.
Palvelimessa DSA-avain on suositeltava, koska silloin avaimenvaihto käyttää ohimenevä Diffie-Hellman-avain, joka avaa tien "Perfect Forward Secrecy" -toiminnolle (eli jos paha kaveri varastaa palvelimen yksityisen avaimen, hän ei silti pysty purkamaan aikaisempia yhteyksiä, jotka hän olisi tallentanut).
Toinen tärkeä etu RSA: sta sekä DSA: han että ECDSA: han on, että sinun ei koskaan tarvita turvallista satunnaislukugeneraattoria allekirjoitusten luomiseen.
Allekirjoituksen luomiseen (EC) DSA tarvitsee arvon, joka sen on oltava satunnainen, salainen / arvaamaton eikä sitä voi koskaan käyttää uudelleen. Jos jotakin näistä ominaisuuksista rikotaan, on mahdollista palauttaa yksityinen avain triviaalisesti yhdestä tai kahdesta allekirjoituksesta .
Tätä on tapahtunut aiemmin (kerran OpenSSL PRNG: n rikkoutuneen korjaustiedoston kanssa) Debianissa ja kerran virheenä Androidin SecureRandom-toteutuksessa), ja sitä on melko vaikea estää kokonaan.
RSA: n kanssa näissä tilanteissa vain lyhytaikainen istuntoavain olisi vaarantunut, jos todellinen todennusavain paria on luotu aiemmin asianmukaisesti kylvetyllä PRNG: llä.
Teoreettisesti on tapa saada (EC) DSA-allekirjoitukset riippumaan viestistä ja yksityisestä avaimesta, mikä voi välttää täydellisen epäonnistuminen RNG: n rikkoutuessa, mutta ennen kuin se integroituu SSH-asiakkaaseen (tällä hetkellä ei ole OpenSSL-julkaisuversiota, joka sisältää korjaustiedoston), käytän ehdottomasti RSA-avaimia.
Koska en tiedä paljoakaan salauksesta, pidän OpenSSH-käyttäjänä yksinkertaista tosiasiaa: http://www.openssh.com/legacy.html, jossa todetaan, että SHA1 on nyt poistettu käytöstä oletusarvoisesti, koska sitä pidetään heikkona:
OpenSSH 7.0 tai uudempi poistaa samalla tavoin julkisen avaimen ssh-dss (DSA) -algoritmin käytöstä . Se on myös heikko ja suosittelemme sen käyttöä.
Matematiikalla ei ehkä ole väliä. Tämä säie tuntuu ennen Snowdenia. Tässä on Reutersin 20. joulukuuta 2013 päivätty artikkeli:
(Reuters) - Keskeisenä osana kampanjaa, jolla upotetaan salausohjelmisto, joka voi murtautua laajasti käytettyihin atk-tuotteet, Yhdysvaltain kansallinen turvallisuusvirasto järjesti salaisen 10 miljoonan dollarin sopimuksen RSA: n kanssa, joka on yksi tietoturvateollisuuden vaikutusvaltaisimmista yrityksistä, Reuters on oppinut.
NSA: n entisen urakoitsijan Edward Snowdenin vuotamat asiakirjat osoittavat, että NSA loi ja julisti virheellisen kaavan satunnaislukujen muodostamiseksi "takaoven" luomiseksi salaustuotteille, New York Times kertoi syyskuussa. Reuters ilmoitti myöhemmin, että RSA: sta tuli kaavan tärkein jakelija siirtämällä se Bsafe-nimiseksi ohjelmistotyökaluksi, jota käytetään henkilökohtaisten tietokoneiden ja monien muiden tuotteiden turvallisuuden parantamiseen.
Tähän asti ei paljastettu, että RSA sai 10 miljoonaa dollaria sopimuksessa, jossa NSA-kaava asetettiin BSafe-ohjelmiston ensisijaiseksi tai oletusmenetelmäksi numeroiden muodostamiseksi kahden sopimusta tuntevan lähteen mukaan. Vaikka tämä summa saattaa tuntua vähäiseltä, se muodosti yli kolmanneksen tuloista, jotka RSA: n asianomainen divisioona oli kerännyt koko edellisen vuoden aikana, arvopaperihakemukset osoittavat.
Tämän Science Fridayn aikana podcast Ira kysyy Matt Greeniltä, Martin Hellmanilta (julkisen avaimen salauksen keksijä) ja Phil Zimmermanilta (PGP: n luoja), mitä heidän mielestään NSA on murtanut:
(noin 17: 26)
Ira : Mihin asioihin tiedämme, että NSA on hajonnut?
Matt vahva>: Joten olemme kuulleet useita asioita, jotka voimme todennäköisesti hyvittää todellisina. … Satunnaislukugeneraattorit ... tiedämme, että NSA NIST: n kautta ... on todennäköisesti asettanut takaovet joihinkin tavanomaisiin algoritmeihin, joiden avulla ne voivat rikkoa olennaisesti nämä järjestelmät kokonaan.
Ira : Tarkoitatko, että NSA loi nämä takaovet?
Matt : Aivan oikein. Joten NIST toimii NSA: n kanssa --- ja laki edellyttää niitä. Luulimme NSA: n auttavan NIST: ää kehittämällä turvallisempia standardeja amerikkalaisten käyttöön. Epäilemme nyt - ja meillä on vahvoja todisteita - siitä, että tilanne oli aivan päinvastainen; että NIST: ää käytettiin asettamaan standardeja, jotka NSA voisi rikkoa.
Näiden viimeaikaisten paljastusten perusteella algoritmien vahvuudella ei näytä olevan lainkaan merkitystä. RSA näyttää olevan yksityinen yritys, jonka NSA on jotenkin ostanut, ja NIST on itse luonut DSA: n, joka näiden asiantuntijoiden mukaan on suurelta osin NSA: n salaustutkimuksen etupuoli.
Toisin sanoen, se todella ei ole väliä, käytätkö satunnaislukugeneraattoreita, jotka tulevat melkein minkä tahansa modernin tietokoneen mukana, kuten OpenSSH ja muutkin tekevät.
Valitse haluamasi nopein. Minun tapauksessani käytän samaa avainta uudelleen monille tavaroille, joten DSA: n nopeampi sukupolvenopeus on vähemmän toivottavaa. Ehkä on myös villi mahdollisuus, että RSA oli itse asiassa NIST: stä ja NSA: sta riippumaton yksikkö, kun taas tiedämme, että DSA: n on luonut NIST.
Käytän henkilökohtaisesti vain 1028-bittisiä avaimia, koska kuten olemme nähneet , sillä ei todellakaan ole väliä, ellei joku aseta sinulle jotain vaatimusta, joka uskoo silti, että isommat avaimet suojaavat sinua. Koko asia on suurimmaksi osaksi vain ärsytystä kaikille, jotka haluavat murtautua.
RSA ja DSA ovat kaksi täysin erilaista algoritmia. RSA-avaimissa voi olla jopa 4096 bittiä, missä DSA: n on oltava täsmälleen 1024 bittiä (vaikka OpenSSL sallii enemmän.) Bruce Schneierin mukaan "sekä DSA: n että RSA: n, joiden avaimilla on sama pituus, on melkein identtisiä murtua."
ECDSA: n ongelma ei ole niinkään takaovet. Bernstein / Lange mainitsee erityisesti, että käyrän kryptanalyysi ei hyökkää tietyille käyrille, vaan käyräluokille (katso dia 6).
ECDSA: n ongelmana on, että NIST-käyriä on vaikea toteuttaa oikein (ts. vakioaika ja kaikki oikeat tarkistukset) verrattuna Curve25519: een OpenSSL: llä on vakioaikainen P256-toteutus, joten OpenSSH on tältä osin turvallinen.
Jos olet edelleen huolissasi NIST-käyristä, OpenSSH lisäsi äskettäin tuen Ed25519-mallille