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 né 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 ).