Ha emlékszem, titkosította az üzenetet nyilvános kulccsal, és visszafejtette privát kulccsal. A kérdésem az, hogy lehet-e nyilvános kulcsot szerezni egy RSA magánkulcsból. Például, ha van ilyen kulcsom:

-----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----- 

kaphatok nyilvános kulcsot?

Megjegyzések

  • Ez a kulcs most kiszivárgott az internetre, és a példákon kívül már nem biztonságos a használata, csak azért, hogy rájöjjön.
  • ” Itt van a házam kulcsa. Ki akar másolatot készíteni? ”
  • Remélem, hogy az OP létrehozott egy példakulcsot, amelyet csak ebben a kérdésben használtak, majd azonnal megsemmisítette.
  • @ basic6 ” Itt van a házam kulcsa. Hogyan tehetek belőle zárat? ”
  • Tisztáznia kell, hogy ‘ kérdez-e csak a magánkulcs (ebben az esetben a válasz nem) vagy a magánkulcsfájl , amely megállapodás szerint (mint itt) mindkét kulcsot tartalmazza.

Válasz

kaphatok nyilvános kulcsot?

Könnyű a openssl rsa használatával:

$ 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--- 

Ha képet szeretne kapni arról, hogy mi található egy kulcsfájlban, akkor átadhatja a -text beállítást, hogy megtekinthesse az ember által olvasható (egyfajta) hibakereső kiírást. nézze meg, hogy egy kulcsfájl magán-, de nyilvános információkat is tartalmaz. Különösen a modul és a publicExponent tartalmazza a nyilvános kulcs teljes leírását:

$ 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: (…) 

Megjegyzések

  • @Pysis: ez a válasz nem erről szól: ” a nyilvánosság megtalálása a nyilvános kulcsból “. Egyszerű, hogy a privát és a nyilvános részhez szükséges összes információt a privát kulcs fájlban tároljuk. A nyilvános kulcsfájlban ehelyett a privát részre vonatkozó összes információ hiányzik.
  • @Pysis Ez aszimmetrikus titkosítás.
  • @Pysis Igen, aszimmetrikus titkosítás ” kissé aszimmetrikus “.
  • @SteffenUllrich Ez a mondat része kell legyen a válaszodnak
  • @Mehrdad: a valós világ információbiztonsága szempontjából bármi, ami gyakorlatilag megvalósíthatatlan, megvalósíthatatlannak számít. Az információelméleti biztonság itt lényegtelen, mivel korlátlan számítási teljesítményt feltételez, amely egyszerűen nem létezik. Így hiányzik minden információ a privát részről úgy kell értelmezni, hogy minden olyan információ hiányzik, amely lehetővé teszi a gyakorlatban a privát kulcs levezetését .

Válasz

A gyakorlatban igen, nyerje meg a nyilvános kulcsot a privát kulcsból. Elvileg lehetne létrehozni egy RSA magánkulcsot, amelyből a megfelelő nyilvános kulcsot nem lehet egyszerűen kapott, de ehhez mind a nem szabványos kulcsgenerálási módszer, mind a nem szabványos magánkulcs-tárolási formátum használata szükséges.


Gyorsan nézzük át az alapokat. Az RSA nyilvános kulcs két részből áll. értékek:

  • a modulus n (két titokban választott nagy prím szorzata p és q szorzata), és
  • a nyilvános kitevő e (amely sok kulcsnál megegyezhet, és általában kis páratlan prímnek választják, leggyakrabban 3 vagy 2 16 +1 = 6 5537).

Közben egy RSA magánkulcshoz minimum szükséges a következő két érték:

  • a modulus n (ugyanaz, mint a nyilvános kulcsban), és
  • a magán kitevő d (a nyilvános kitevőből e és a tényezők p és q a modulus).

Azonban a legtöbb formátum az RSA magánkulcsok tárolására, beleértve a PKCS1 RSAPrivateKey formátum, amelyet a kérdésed mutat, valójában egy csomó további értéket is tárol, beleértve:

  • a nyilvános kitevőt e ,
  • a modulus p és q tényezői,
  • a redukált privát kitevők d p = d mod ( p − 1) és dq = d mod ( q − 1), és
  • a ” CRT együttható “ q inv = q − 1 mod p .

Különösen a nyilvános kitevő e a privát kulcs formátumban azt jelenti, hogy a nyilvános kulcs triviálisan kinyerhető egy PKCS1-kompatibilis magánkulcs fájlból.Továbbá, még akkor is, ha a nyilvános kitevőt e nem vették fel a privát kulcsfájlba, a modul p és q tényezőinek ismerete lehetővé teszi bármelyik kitevőt hogy könnyen kiszámítható legyen a másikból. És végül, még akkor is, ha nem ismernénk a modulus tényezőit, a szokásos módon generált RSA kulcsok esetében egyszerűen tesztelhetjük az e leggyakrabban használt értékeit, és megnézhetjük, melyik generálja őket titkosított szövegek, amelyeket az adott magánkulcs segítségével helyesen lehet visszafejteni.


Mindez azt mondta, ha nem szabványos RSA kulcsgeneráló algoritmust használnánk, amely az e t választotta ( vagy d ) véletlenszerűen az értékek megengedett tartományából (azaz az 1-nél nagyobb és ennél kisebb egész számok, valamint a λ ( n ) = lcm ( p − 1, q − 1)), és ha nem szabványos RSA magánkulcs formátumot használtunk, amely csak a minimális információt tárolta a visszafejtéshez (pl. n és d ), akkor nem lehetne kiszámolni a nyilvános kulcsot a magánkulcsból anélkül, hogy hatékonyan feltörnénk a kulcsot (azaz a modulust tényeznénk).

Valóban, ha ilyen nem szabványos embernél használják Az RSA algoritmus “szimmetrikus” lesz abban az értelemben, hogy egyik kulcs ( n , e ) és ( n , sem d ) hatékonyan kiszámítható a másikból, és bármelyiket önkényesen kijelölhetjük magánkulcsnak. Elvileg, ha nem adta meg a magánkulcs birtokosának a megfelelő “nyilvános” kulcsot (ami természetesen azt jelenti, hogy ez valójában nem lesz többé nyilvános), akkor csak az üzeneteket tudták visszafejteni, de nem titkosították. Sajnos, az ilyen sémák gyakorlati hasznosságát meglehetősen korlátozza az az egyszerű tény, hogy aki generálja a kulcspárt, az mindenképpen elkerülhetetlenül megismeri mindkét felét.

Megjegyzések

  • Összeráncolom az utolsó mondatot. Mivel az e egyébként is nyilvános, e (és p és q) elfelejtése aligha tekinthető a magánkulcs tulajdonosának rendelkezésére álló hátsó ajtónak. (Ha pedig egy ellenfél megszerzi a d magánkulcsot, akkor az e nyilvános kulccsal is rendelkezik és nyert)
  • @HagenvonEitzen: Az utolsó bekezdés a (nem szabványos) használati esetről szól, ahol az e nem nyilvános és nem is kicsi .
  • @HagenvonEitzen: Valóban említettem ezt a kérdést a linkelt crypto.SE bejegyzésben. Minden olyan séma, amely a ” public ” kulcsra támaszkodik, nem vezethető le a ” privát A ” kulcsnak szükségszerűen titokban kell tartania a ” nyilvános ” kulcsot legalább néhány fél elől ( és ezzel megsérti a nyilvános kulcsú kriptográfia egyik standard feltételezését), hogy ez a funkció bármilyen hasznát vehesse. De látom, hogy az a bekezdés hogyan lehetett félrevezető; remélhetőleg az átírt verzió legalább egy kicsit tisztább.
  • Az RSA érdekes matematikai tulajdonsággal rendelkezik, hogy a visszafejtés ugyanazt a képletet használja, mint a titkosítás, csak d helyett e. Ennek köszönhetően felcserélheti a e és a d elemeket (azaz a titkos kulcsot használja a titkosításhoz, a nyilvánosat pedig a visszafejtéshez). Ezután megkapja az elektronikus aláírási sémát.

Válasz

Igen. Ez is nagyon egyszerű. Ha megnézzük az RSA specifikációt, egy nyilvános kulcshoz n és e szükséges. Lehetséges, hogy egy magánkulcs p q d. Ezekkel számoljon.

n=p*q e=mod_inverse(d,euler_totient(n)) 

Ha vissza akarja őket csomagolni egy PEM formátumba, lásd: https://github.com/ius/rsatool

Megjegyzések

  • Ez matematikai válaszként bekeretezve helytelen. Egy magánkulcsban csak n és d lehet, és ebből lehetetlen általában az e kiszámításához. Ez ‘ a gyakorlatban általában csak azért lehetséges, mert az e-t szinte mindig egy kevés érték közül választják ki. Gyakorlati válaszként bekeretezve ez téves: a gyakorlatban mindig tartalmazza a többi paramétert (legalább n és d, általában a CRT-alapú számításhoz szükséges paramétereket is).
  • Megállapodott, de gyakorlatilag a CRT magánkulcsokkal rendelkező RSA-t tárolják mint (n, e, d, p, q, dP, dQ, qInv) duplája, amely itt van. Megpróbáltam matematikailag beállítani az összetevőket.
  • Igen: gyakorlatilag a magánkulcsokat általában duplaként tárolják , amely e t tartalmaz. Nincs szükség az e kiszámítására.
  • @Gilles A bejegyzésből: ” egy nyilvános kulcshoz n és e.” és a sudhackar ‘ kommentárból: “, de gyakorlatilag a CRT titkos kulcsokkal rendelkező RSA általában az (n, e, d, p, q, dP, dQ, qlnv) kettőként tárolják. ” mint duplát , amely tartalmazza a privát kulcsot . Nincs szükség a magánkulcs kiszámítására, így ez az egész kérdés és minden válasza lényegtelenné válik. Nem értem ‘ a legutóbbi megjegyzésedet. sudhackar ‘ válasza megmutatja, hogyan lehet megtalálni a lehetséges nyilvános kulcsok készletét a lehető legkevésbé hasznos információkból.
  • @ wizzwizz4 Ha van p, q és d , a magánkulcshoz a lehető legkevesebb hasznos információval rendelkezik. Én ‘ még soha nem láttam privát kulcsokat p, q és d betűkkel, de nem n és e. Az n használatához bármi hasznosat meg kell tennie a kulccsal, és a p és a q tárolásával n helyett ‘ nem nyer semmilyen tárhelyet.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük