Muistan, että salaat viestin julkisella avaimella ja purat sen yksityisellä avaimella. Kysymykseni on, onko mahdollista saada julkinen avain RSA: n yksityisestä avaimesta. Esimerkiksi, jos minulla on tällainen avain:
-----BEGIN RSA PRIVATE KEY----- MIICXgIBAAKBgQCtrKVnwse4anfX+JzM7imShXZUC+QBXQ11A5bOWwHFkXc4nTfE Or3fJjnRSU5A3IROFU/pVVNiXJNkl7qQZK5mYb8j3NgqX8zZJG7IwLJ/Pm2sRW5Q j32C/uJum64Q/iEIsCg/mJjDLh1lylEMEuzKgTdWtoeLfxDBL2AJ20qXzQIDAQAB AoGBAKNXi0GpmjnCOPDxLFg5bvQVfhLSFCGMKQny1DVEtsfgZmbixv5R2R41T4+d CHJMdEsUFFJ6I7CRLTcg1SDU8IhcAWCBRSNeVuomCHlQG16ti8HxwhiwIcjvDz/z NC2sL5ZJ2eJnhbtXLdf6pxxO1pA5vLp1AX06IaETO977XvupAkEA+ZgtGZybyUkf tEA3ekXc5eLoW+zgU0C1fATWcIZ8Iq5YV1BW+3oAzf8HgIbkQh4LM2qa6An3l+vW NXR4wICHkwJBALIhrcdJqKw36qiyenq+m78klp5SnurQifVt0Sy1GMWyOUqYz5jK t9sGo9Qn6GDuYe/XGXKWQW25PkEYXxxPPx8CQQCpICyvRidp5VrOURVGjUB5pZ+9 am02/In9V2nXJcnH1kuWHqJSFQGmlEEJHl5dTu5YEMyWnupezzd/UUThbDZxAkAz TNO5QxNalbf04YG4e9Bq2eSur+iog2pXzkqhb3404UDypNOUkz0jzOO9o8ieschu xCnGAFPTf7fYE2bAxmnNAkEA0/3bdsvJclquypqP9CQeQnxGwQtWz6+yn07gj3U1 V19mdeKCUZWklRarrcr67u9DdEx+JowyEY/ppzgeQtW01g== -----END RSA PRIVATE KEY-----
saanko julkisen avaimen?
Kommentit
- Tämä avain on nyt vuotanut Internetiin eikä ole enää turvallinen käytettäväksi esimerkkien ulkopuolella, joten vain ymmärrät sen.
- ” Tässä on taloni avain. Kuka haluaa tehdä kopion? ”
- Toivon, että OP loi esimerkkiavain vain käytettäväksi tässä kysymyksessä ja hävitti sen heti.
- @ basic6 ” Tässä on taloni avain. Kuinka teen siitä lukituksen? ”
- Sinun on selvitettävä, kysytkö ’ uudelleen vain yksityinen avain (tällöin vastaus on ei) tai yksityisen avaimen tiedosto , joka sopimuksen mukaan (kuten tässä) sisältää molemmat avaimet.
Vastaa
saanko julkisen avaimen?
Sitä on helppo käyttää openssl rsa
:
$ openssl rsa -in the-private-key-from-your-question.pem -pubout writing RSA key -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCtrKVnwse4anfX+JzM7imShXZU C+QBXQ11A5bOWwHFkXc4nTfEOr3fJjnRSU5A3IROFU/pVVNiXJNkl7qQZK5mYb8j 3NgqX8zZJG7IwLJ/Pm2sRW5Qj32C/uJum64Q/iEIsCg/mJjDLh1lylEMEuzKgTdW toeLfxDBL2AJ20qXzQIDAQAB -----END PUBLIC KEY---
Jos haluat saada käsityksen avaintiedoston sisällöstä, voit siirtää -text
-vaihtoehdon nähdäksesi ihmisen luettavissa olevan (tavallisen) virheenkorjauksen. katso, että avaintiedosto sisältää sekä yksityisiä että julkisia tietoja. Erityisesti se sisältää moduulin ja publicExponentin, jotka kuvaavat julkista avainta täysin:
$ openssl rsa -text -in the-private-key-from-your-question.pem Private-Key: (1024 bit) modulus: 00:ad:ac:a5:67:c2:c7:b8:6a:77:d7:f8:9c:cc:ee: 29:92:85:76:54:0b:e4:01:5d:0d:75:03:96:ce:5b: 01:c5:91:77:38:9d:37:c4:3a:bd:df:26:39:d1:49: 4e:40:dc:84:4e:15:4f:e9:55:53:62:5c:93:64:97: ba:90:64:ae:66:61:bf:23:dc:d8:2a:5f:cc:d9:24: 6e:c8:c0:b2:7f:3e:6d:ac:45:6e:50:8f:7d:82:fe: e2:6e:9b:ae:10:fe:21:08:b0:28:3f:98:98:c3:2e: 1d:65:ca:51:0c:12:ec:ca:81:37:56:b6:87:8b:7f: 10:c1:2f:60:09:db:4a:97:cd publicExponent: 65537 (0x10001) privateExponent: (…)
Kommentit
- @Pysis: tämä vastaus ei koske ” löytää ” yleisö julkisesta avaimesta. On yksinkertaista, että kaikki sekä yksityiseen että julkiseen osaan tarvittavat tiedot tallennetaan yksityisen avaimen tiedostoon. Sen sijaan julkisen avaimen tiedostosta puuttuu kaikki yksityistä osaa koskevat tiedot.
- @Pysis Tämä on epäsymmetrinen salaus.
- @Pysis Kyllä, epäsymmetrinen salaus on ” hieman epäsymmetrinen ”.
- @SteffenUllrich Tämän lauseen pitäisi olla osa vastaustasi
- @Mehrdad: tosielämän tietoturvan yhteydessä kaikkea, mikä on käytännössä mahdotonta, pidetään mahdottomana. Tietoteoreettisella turvallisuudella ei ole merkitystä tässä, koska se olettaa rajoittamattoman laskentatehon, jota yksinkertaisesti ei ole. Siksi kaikki yksityistä osaa koskevat tiedot puuttuvat tulisi lukea kaikki tiedot, jotka mahdollistavat käytännössä yksityisen avaimen johtamisen puuttuvat .
vastaus
Käytännössä kyllä, voit hanki julkinen avain yksityisestä avaimesta. Periaatteessa olisi mahdollista luoda yksityinen RSA-avain, josta vastaavaa julkista avainta ei voida helposti saatu, mutta tämä edellyttää sekä epätyypillisen avaimen luontimenetelmän että epätyypillisen yksityisen avaimen tallennusmuodon käyttöä.
Tarkastellaan nopeasti perusteet. RSA: n julkinen avain koostuu kahdesta arvot:
- moduuli n (kahden salaa valitun suuren alkulaskun p ja q tulo), ja
- julkinen eksponentti e (joka voi olla sama monille näppäimille ja valitaan tyypillisesti pieneksi parittomaksi alkupääksi, yleisimmin joko 3 tai 2 16 +1 = 6 5537).
RSA-yksityinen avain puolestaan vaatii vähintään seuraavat kaksi arvoa:
- moduuli n (sama kuin julkisessa avaimessa) ja
- yksityinen eksponentti d (laskettu julkisesta eksponentista e ja tekijät p ja q moduulista).
Useimmat RSA-yksityisten avainten tallennusmuodot, mukaan lukien PKCS1 RSAPrivateKey-muoto, joka näkyy kysymyksessäsi, tallenna myös joukko lisäarvoja, mukaan lukien:
- julkinen eksponentti e ,
- moduulin tekijät p ja q ,
- pienennetyt yksityiset eksponentit d p = d mod ( p − 1) ja dq = d mod ( q − 1) ja
- ” CRT-kerroin ” q inv = q − 1 mod p .
Erityisesti julkisen eksponentin e
Kaikki sanottu, jos käytämme epätyypillistä RSA-avaimen luontialgoritmia, joka valitsi e ( tai d ) satunnaisesti sallitulta arvojen alueelta (eli kokonaisluvut, jotka ovat suurempia kuin 1 ja pienemmät, ja sopivat yhteen λ ( n ) = lcm ( p − 1, q − 1)), ja jos käytimme epätyypillistä RSA-yksityisen avaimen muotoa, joka säilytti salauksen purkamiseen vain vähimmäistiedot (eli n ja d ), tällöin ei olisi mahdollista laskea julkista avainta yksityisestä avaimesta ilman, että avain murtuu tehokkaasti (eli kerroin moduuliin).
Jos sitä käytetään tällaisessa epätyypillisessä miehessä RSA-algoritmista tulee ”symmetrinen” siinä mielessä, että kumpikaan näppäimistä ( n , e ) ja ( n , d ) voidaan tehokkaasti laskea toisesta ja jompikumpi niistä voidaan mielivaltaisesti nimittää yksityiseksi avaimeksi. Periaatteessa, jos et antanut yksityisen avaimen haltijalle tietää vastaavaa ”julkista” avainta (mikä tietysti tarkoittaa, että se ei todellakaan ole enää julkista), he voisivat vain purkaa viestejä, mutta eivät salata niitä. Valitettavasti tällaisen järjestelmän käytännön hyötyjä rajoittaa melko yksinkertainen tosiasia, että kuka avainparin generoi, väistämättä pääsee tuntemaan sen molemmat puoliskot joka tapauksessa. / p>
Kommentit
- Ajattelen kulmia viimeisen lauseen suhteen. Koska e: tä pidetään joka tapauksessa julkisena, e: n (ja p ja q) unohtamatta jättämistä ei tuskin voida pitää takaovena, joka on yksityisen avaimen omistajan käytettävissä. (Ja jos vastustaja saa yksityisen avaimen d, hänellä on myös julkinen avain e ja hän voitti)
- @HagenvonEitzen: Viimeinen kappale puhuu (ei-standardista) käyttötapauksesta, jossa e ei ole julkinen eikä pieni .
- @HagenvonEitzen: Itse mainitsin kyseisen ongelman linkitetyssä crypto.SE-viestissä. Kaikki mallit, jotka perustuvat ” public ” -avaimeen, eivät ole johdettavissa ” yksityisestä ” -avaimen on välttämättä pidettävä ” -avaimen salassa ainakin joiltakin osapuolilta ( ja siten rikkoa yhtä julkisen avaimen salauksen tavanomaisista oletuksista), että kyseisestä ominaisuudesta voi olla mitään hyötyä. Mutta näen, kuinka kyseinen kohta on saattanut olla harhaanjohtava; toivottavasti uudelleenkirjoitettu versio on ainakin hieman selkeämpi.
- RSA: lla on mielenkiintoinen matemaattinen ominaisuus, että salauksen purkaminen käyttää samaa kaavaa kuin salaus, vain
d
kanssae
. Tämän ansiosta voit vaihtaae
jad
(eli käyttää salaukseen yksityistä avainta ja salauksen purkamiseen julkista avainta). Sitten saat sähköisen allekirjoituksen.
Vastaa
Kyllä. Se on myös melko helppoa. Jos tarkastelet RSA-määrityksiä, julkinen avain tarvitsee n
ja e
. Yksityisellä avaimella voi olla p
q
d
. Käytä näitä laskeaksesi.
n=p*q e=mod_inverse(d,euler_totient(n))
Jos haluat pakata ne takaisin PEM-muotoon, katso https://github.com/ius/rsatool
Kommentit
- Tämä on väärä matemaattisena vastauksena kehitettynä. Yksityisessä avaimessa voi olla vain n ja d, ja siitä on mahdotonta. e: n laskeminen yleensä. Se ’ on yleensä mahdollista käytännössä vain siksi, että e valitaan melkein aina kourallisen arvojen joukosta. Tämä on väärin kehystetty käytännön vastauksena: e on, käytännössä aina muiden parametrien mukana (vähintään n ja d, yleensä myös CRT-pohjaisiin laskelmiin tarvittavat parametrit).
- Hyväksytty, mutta käytännössä CRT, jossa on CRT-yksityiset avaimet, tallennetaan yleensä kuten (n, e, d, p, q, dP, dQ, qInv), joka on tässä tapauksessa. Yritin asettaa komponentteja matemaattisesti.
- Kyllä: käytännössä yksityiset avaimet tallennetaan yleensä dupleksina , joka sisältää e . E: tä ei tarvitse laskea.
- @Gilles Viestistä: ” julkinen avain tarvitsee
n
jae
.” ja sudhackarin kommentista: ’ s kommentti: ”, mutta käytännössä RSA, jossa on yksityisillä CRT-avaimilla yleensä tallennettu (n, e, d, p, q, dP, dQ, qlnv) sarjoina ”, mikä johtaa siihen johtopäätökseen, että käytännössä yksityiset avaimet tallennetaan yleensä sarakkeena , joka sisältää yksityisen avaimen . Yksityistä avainta ei tarvitse laskea, joten koko tämä kysymys ja kaikki sen vastaukset ovat merkityksettömiä. En ymmärrä ’ viimeisintä kommenttiasi. sudhackar ’ vastauksessa näytetään, kuinka löytää joukko julkisia avaimia mahdollisimman hyödyllisistä tiedoista. - @ wizzwizz4 Jos sinulla on p, q ja d , sinulla on enemmän kuin vähiten hyödyllisiä tietoja yksityisestä avaimesta. En ’ ole koskaan nähnyt yksityisiä avaimia, joissa on p, q ja d, mutta en n ja e. Tarvitset n, jotta voit tehdä mitään hyödyllistä avaimella ja tallentaa p- ja q-arvot n: n sijasta ’ ei saa mitään tallennustilaa.