Posso usare la curva ellittica DSA in un servizio di messaggistica sicura?

2

Sto cercando di progettare un sistema che consenta a un utente di una crittografia come Bitcoin di avere entrambi un portafoglio online e di essere in grado di inviare e ricevere e-mail crittografate nello stesso sistema.

La parte relativa a Bitcoin è che per l'indirizzo di un utente, come 31uEbMgunupShBVTewXjtqbBv5MndwfXhb , è un hash della chiave pubblica dell'utente. La coppia di chiavi è una coppia di chiavi pubblica-privata ECDSA.

Se sono un utente, posso utilizzare questa coppia di chiavi per entrambe le transazioni Bitcoin e per l'invio e la ricezione di e-mail crittografate? Oltre al fatto che l'utilizzo di una coppia di chiavi per entrambe le cose potrebbe essere imprudente, ci sono ulteriori insidie che dovrei essere a conoscenza di?

Modifica: sto cercando di utilizzare un sistema come OpenPGP, non S / MIME. Per essere più precisi, sto cercando di capire se è possibile utilizzare la coppia di chiavi generata da un derivato di Bitcoin o Litecoin, che è una coppia di chiavi ECDSA, in un sistema di posta elettronica così che gli utenti di questo sistema di posta elettronica possano utilizzare e scambiare coppie di chiavi con altri utenti non di sistema come quelli che usano GnuPG.

    
posta josh 24.03.2014 - 06:25
fonte

4 risposte

2

ECDSA è un algoritmo di firma. La chiave privata per ECDSA è un intero x tra 1 e n-1 , dove n è la dimensione di (il sottogruppo di) la curva ellittica utilizzata (normalmente un numero primo). La chiave pubblica è un punto di curva Q uguale a xG , dove G è un punto fisso convenzionale sulla curva.

Non è possibile utilizzare un algoritmo di firma per nient'altro che la firma, ovviamente, ma succede che ci sia un algoritmo di scambio di chiavi chiamato ECDH che utilizza coppie di chiavi pubbliche / private con esattamente lo stesso formato. In questo senso, è tecnicamente possibile utilizzare la stessa chiave per ECDSA e ECDH. Lo scambio di chiavi può essere utilizzato per la crittografia asimmetrica tramite crittografia ibrida (si utilizza il segreto scambiato come base per la crittografia simmetrica); nel caso di ECDH, questo processo è stato persino standardizzato sotto il nome ECIES .

Tuttavia, l'uso della stessa coppia di chiavi per la firma e la crittografia non è una buona idea . Questo è disapprovato da molti crittografi e standard; è un reato capitale nel mondo dell'analisi del rischio e delle certificazioni. Ci sono due ragioni principali per questo:

  • Le chiavi di firma e crittografia hanno cicli di vita distinti e richiedono metodi di gestione distinti e incompatibili. In particolare, di solito si desidera avere un backup o un impegno della propria chiave privata di crittografia e sicuramente non desidera un tale backup o impegno per la propria chiave privata della firma. Vedi questa risposta per una discussione.

  • Le interazioni tra diversi algoritmi crittografici non sono state analizzate a fondo. Non sappiamo davvero se utilizzare la stessa chiave privata sia per ECDH che per ECDSA possa mettere a rischio (per esempio consentire a un utente malintenzionato di falsificare una firma impegnandosi in qualche ECDH con te, con messaggi DH elaborati in modo veloce o qualcosa del genere) . Ricorda che ogni dato algoritmo crittografico può essere considerato sicuro solo perché ha sostenuto lo scrutinio di molti crittografi per diversi anni; le interazioni tra ECDH e ECDSA non possono vantare una tale quantità di revisione.

In caso di dubbio, astenersi. E, in questo caso, dovresti dubitare. Davvero.

    
risposta data 25.03.2014 - 19:08
fonte
2

ECDSA non può essere utilizzato per scopi di crittografia. ECDSA è l'implementazione della curva ellittica della algoritmo di firma digitale e, quindi, può essere utilizzata solo per scopi di firma digitale.

L'e-mail crittografata utilizza in genere S / MIME , che consente al mittente dell'e-mail di generare una chiave di crittografia simmetrica e lo usa per crittografare il messaggio di posta elettronica. Usando la chiave pubblica di ciascun destinatario, la chiave simmetrica è crittografata. La posta crittografata e la chiave crittografata per ciascun destinatario sono raggruppate insieme e inviate come e-mail. Ogni destinatario sarà in grado di decifrare la chiave simmetrica con la sua chiave privata e, quindi, leggere il messaggio di posta elettronica decrittografato.

Usando S / MIME puoi anche creare email firmate digitalmente. Il messaggio e-mail è sottoposto a hash e l'hash è crittografato. Il mittente raggruppa il messaggio, l'hash crittografato e il certificato digitale (se questi vengono utilizzati) in un messaggio S / MIME e li invia tramite e-mail. Il destinatario può leggere il messaggio e ricreare l'hash dal messaggio. Possono anche decodificare l'hash crittografato con la chiave pubblica (nel certificato) e confrontare i due hash.

Per implementare questo tipo di meccanismo è necessario utilizzare un algoritmo asimmetrico che supporta la crittografia. La scelta più ovvia è RSA .

Non c'è alcun motivo per cui non puoi usare RSA per una nuova implementazione crittografica di email e sicura. RSA può essere utilizzato per la firma digitale e la crittografia. La migliore pratica PKI sarebbe quella di utilizzare due coppie di chiavi diverse per i diversi scopi, ma non firmerai certificati .

Poiché bitcoin utilizza ECDSA come crittografia a chiave pubblica, l'accesso è limitato alla sola firma digitale. Attualmente la maggior parte delle cripto-valute si basa sul metodo bitcoin, quindi se volessi implementarne una nuova usando RSA, lo faresti da zero!

    
risposta data 24.03.2014 - 06:49
fonte
2

Se si desidera utilizzare la crittografia basata su ECC, si sta cercando ECIES, anche se non sono sicuro se si utilizza la stessa chiave per la crittografia e la firma è un'idea intelligente.

Informazioni su ECIES possono essere trovate qui , e ci sono esempi su come usarlo nel Castello gonfiabile codice sorgente.

Non puoi utilizzare "31uEbMgunupShBVTewXjtqbBv5MndwfXhb" con uno schema di crittografia, perché quello è solo l'hash di una chiave pubblica e l'uso dell'hash di una chiave non ti consente di crittografare i messaggi che lo utilizzano.

    
risposta data 25.03.2014 - 17:56
fonte
0

In Bitcoin la chiave privata è in realtà un numero casuale a 256 bit. Puoi utilizzare questa come chiave privata e creare un segreto condiviso utilizzando ECDH . Il condiviso può essere utilizzato per crittografare i dati del messaggio, ad esempio utilizzando AES.

Elliptic curve Diffie–Hellman (ECDH) is an anonymous key agreement protocol that allows two parties, each having an elliptic curve public–private key pair, to establish a shared secret over an insecure channel.

    
risposta data 25.03.2014 - 17:48
fonte

Leggi altre domande sui tag