Crea una coppia di chiavi pubbliche, private RSA con numeri già generati

7

Voglio sapere come generare coppie di chiavi RSA funzionanti , con la sintassi corretta. Diciamo che ho già generato in qualche modo i miei numeri per una chiave 512 bit , che sono:

e = 00065537

d = 2a3ff2f501835d7d0f7ccad34265525b0c91f800fc252324e4bb5668392ba55a65d812d658b7065725c259a12115918dbdbbea6cead9225a91c3fcc6b43f1cb3

m = 4bb26cf2e1e1cdbbf78f89a60d5af5cf094a7216f9fe2d0e2288dc14e6005e0b6de46dc38f0e92b8b3281e9f1cf87257fb54bff579907e8a3c114133b74cb815

Come posso generare una coppia di chiavi adeguata da questo? C'è un generatore da qualche parte per automatizzarlo? La migliore soluzione per me sarebbe quella di generare quella coppia di chiavi in javascript che funzionerebbe qui collegamento con pidcrypt.

    
posta magnac 13.08.2013 - 20:42
fonte

1 risposta

9

Una coppia di chiavi RSA consiste nel seguente:

  • Il modulo n , un numero intero grande che è uguale al prodotto di due grandi numeri primi interi, p e q .
  • L'esponente pubblico e .
  • L'esponente privato d . d è tale che ed = 1 quando viene preso modulo p-1 , e anche quando viene preso modulo q-1 .
  • Il primo fattore p .
  • Il secondo fattore q .
  • Il valore d p = d mod p-1 .
  • Il valore d q = d mod q-1 .
  • Il valore q '= q -1 mod p .

La chiave pubblica contiene solo n e e .

La chiave privata contiene tutti i valori specificati sopra. Stricto sensu , solo n e d sono necessari per un'implementazione RSA superficiale, ma gli altri valori consentono operazioni più veloci e anche "mascheramento" (protezione contro le perdite del canale laterale), quindi lo standard RSA definisce che una chiave privata contiene tutti i valori (vedi appendice A.1 ).

Dal valore che hai, assumendo che la tua "m" sia in realtà il modulo RSA, gli altri valori possono essere ricalcolati, a un certo sforzo (meno di un secondo di CPU, ma più tempo umano di quanto mi interessi investire in esso). Da tutti questi valori, è quindi possibile codificare chiavi pubbliche e private RSA conformi allo standard; ma ciò richiede una certa conoscenza di ASN.1 . Infine, una chiave RSA a 512 bit è debole; utilizzare almeno 1024 bit, preferibilmente di più (2048 bit dovrebbero andare bene). Alcune implementazioni RSA si rifiuteranno di lavorare con chiavi RSA più corte di 1024 bit.

Bottom-line: non genera tu stesso la chiave; usa OpenSSL . Con lo strumento da riga di comando:

openssl genrsa -out rsakey.pem 2048

genererà una chiave privata RSA a 2048 bit con tutta la codifica appropriata; quindi questo:

openssl rsa -in rsakey.pem -pubout

stamperà la chiave pubblica , di nuovo con la codifica completata.

    
risposta data 13.08.2013 - 22:12
fonte

Leggi altre domande sui tag