Crittografia a curve ellittiche e condivisione chiavi

1

Voglio sapere se è possibile nella crittografia a curva ellittica avere 2 parti in possesso di una parte della chiave privata. L'idea è di crittografare (per DSA) i dati con le 2 chiavi sub senza che nessuno dei partecipanti prenda in mano la chiave privata originale.

Ad esempio:

  • Emetti una chiave privata
  • Dividi in qualche modo la chiave privata in 2 chiavi secondarie
  • Cripta i dati con il primo tasto
  • Cifra con il secondo tasto
  • Il risultato finale dovrebbe essere come se i dati fossero crittografati con la chiave privata originale

Questa cosa è possibile? Idealmente le 2 chiavi secondarie dovrebbero essere le dimensioni della chiave privata originale e non dovrebbero perdere alcuna informazione.

Grazie

modifica: ci scusiamo per non essere chiari, quando si parla di crittografia era pensato per DSA

    
posta John L. Jegutanis 10.06.2014 - 01:05
fonte

4 risposte

3

Con la crittografia asimmetrica, normalmente si cripta con la chiave pubblica, non con la chiave privata; con la chiave privata, decifri. Inoltre, la crittografia asimmetrica è solitamente randomizzata, quindi può essere difficile dire che ottieni "lo stesso risultato" di quello che avresti con una singola chiave privata, dal momento che puoi effettivamente ottenere un intero intervallo di valori (che decifr stesso messaggio, però). Forse vuoi parlare di firme ?

In ogni caso, ci sono molti protocolli possibili per calcoli multipartito (questo è il termine per quel tipo di cose). Vedi questo sito per molti link. Nel tuo caso, suppongo tu abbia due parti che hanno bisogno di usare una chiave privata in modo che le loro azioni combinate siano in qualche modo equivalenti a quello che si potrebbe ottenere con un singolo valore segreto, che nessuno dei due sa. I protocolli che lo fanno dipendono dall'esatta misura della conoscenza e dell'azione di entrambe le parti:

  • I due portachiavi sono considerati potenziali potenziali attivi attaccanti, o solo passivi ? Cioè vogliamo proteggere la segretezza dello schema se una delle parti inizia a inviare messaggi errati e accuratamente predisposti all'altro?
  • Qual è il livello di controllo che i titolari di chiavi hanno sui dati di input? Possono modificarlo in qualche modo per rivelare informazioni sull'altra metà del tasto?
  • Le parti dovrebbero essere in grado di accertarsi che l'altra parte abbia riprodotto fedelmente il protocollo?
  • Tale prova può essere rivelata a una terza parte senza rivelare nulla sui dati elaborati o sulle chiavi? (Questo è il tipo di prova che è molto importante, ad esempio, nei protocolli di voto elettronico.)
  • Che cosa possono fare i portachiavi? Ad esempio, se possono crittografare , è OK se possono anche decrittografare (presumendo che collaborino all'attività)?

Come esempio illustrativo, supponiamo di avere una curva ellittica E con ordine primo n . Le parti A e B conoscono le chiavi segrete a e b rispettivamente; entrambi i tasti vengono scelti in modo uniforme nell'intervallo 1..n-1 . Supponiamo di poter mappare qualche messaggio di input m in un punto curva M . Quindi A potrebbe "cifrare" il messaggio moltiplicando M con a ; allo stesso modo, B moltiplica i punti per b . Se entrambi A e B elaborano il messaggio in ordine dovuto:

  • A riceve M e emette aM .
  • B riceve aM e emette (ba) M .

Il risultato finale è quindi uguale a (ab) M , il risultato della "crittografia" di M dal tasto ab ( il prodotto è modulo n ), che né A B conosce. Si può dimostrare che A non può imparare ab indipendentemente da ciò che invia a B ; e lo stesso vale per B se B è il cattivo. Ovviamente, se A e B rivelano le loro chiavi private l'un l'altro, allora possono calcolare ab .

(Questa è una variante di curva ellittica del codice Pohlig-Hellman - da non confondere con altro Algoritmo di Pohlig-Hellman . È anche noto come SRA ).

    
risposta data 10.06.2014 - 04:30
fonte
1

C'è una ragione per cui la crittografia con due chiavi pubbliche non risolve il tuo problema? Ciò richiede quindi a entrambe le parti di decodificare il contenuto per poter accedere. Un approccio alternativo sarebbe quello di crittografare simmetricamente il carico utile, dividere la chiave a metà, cifrare ogni metà con la chiave pubblica di un utente. Ogni utente dovrebbe quindi decrittografare la metà della chiave per quel messaggio e condividerla con l'altra per decodificare il messaggio.

    
risposta data 10.06.2014 - 16:39
fonte
0

Generalmente una crittografia asimmetrica utilizzerà la chiave pubblica per crittografare e privata per decrittografare i dati. Non so quale scopo vuoi qui per criptare i dati con privati. Anche se si richiede, si generano le coppie di chiavi ECC e si può usare l'algoritmo segreto di Shamir per suddividere le chiavi come parti M e N.quando si crittografa il daa con la chiave privata si può combinare la chiave e farlo.

    
risposta data 10.06.2014 - 08:06
fonte
0

Non riesco a vedere come la tua domanda si riferisca a ecc. o alla crittografia asimmetrica, ma una soluzione semplice per il compito di "dividere" una chiave è usare due chiavi separate in primo luogo.

Più specificamente, per la crittografia simmetrica: produrre 2 chiavi e considerare la coppia come la "chiave privata" e le singole chiavi come "chiavi secondarie". (Si noti che queste parole hanno un significato diverso quando si parla in realtà di crittografia asimmetrica .)

Per la versione asimmetrica come per quella simmetrica, basta creare due coppie di chiavi, cifrare con entrambe le chiavi pubbliche in modo sequenziale e occorrono entrambe le chiavi private per decrittografare.

Informazioni sulle singole dimensioni: dipende dallo specifico tempo dell'algoritmo di crittografia e a quale cifra la crittografia due volte con una chiave della metà della lunghezza sarà meno sicura della crittografia una volta con la chiave lunga. (Vedi ad esempio 3DES )

    
risposta data 11.06.2014 - 09:50
fonte

Leggi altre domande sui tag