Quali schemi di crittografia richiedono due o 3 chiavi private per leggere un messaggio?

4

Vorrei crittografare alcuni dati in modo che possano essere letti solo se due o tre persone utilizzano un segreto privato per decrittografare i dati.

What is the best / most modern way to accomplish multi-person decryption?

Alcuni pensieri a cui sto pensando

  • X persone ha N caratteri di una password lunga X * N caratteri

  • Ricalibrare il messaggio con PGP o alcuni PKI / RSA ecc.

  • Una combinazione di quanto sopra ...

La minaccia che voglio evitare è la decodifica forzata o la modifica di un messaggio crittografato senza che tutte le parti siano presenti.

    
posta random65537 22.03.2012 - 18:31
fonte

2 risposte

6

C'è Condivisione segreta di Shamir , ma non coinvolge PKI. Piuttosto, è più come assicurarsi che tutte le password debbano essere coinvolte per sbloccare il segreto. Il segreto, in questo caso, potrebbe essere una chiave singolare (privata o simmetrica).

Non conosco alcuna implementazione ampiamente accettata dello schema a parte i primi successi ottenuti da Google.

    
risposta data 22.03.2012 - 21:21
fonte
5

Risposta breve
Utilizzare lo XOR di più chiavi come chiave di crittografia effettiva. Dare ciascuna di quelle chiavi alle parti. Per decrittografarli ognuno deve rivelare la propria chiave, XOR tutti i valori insieme, decrittografare.

Risposta lunga

  • X persone ha N caratteri di una password lunga X * N caratteri

Il problema con questo schema è che se le persone X-1 si uniscono, hanno solo bisogno di caratteri di forza bruta N (l'ultima porzione della condivisione). A seconda dei parametri, ciò potrebbe essere possibile.

Quello che vuoi veramente è un metodo in cui, se meno di X persone cercano di decifrare, non hanno ulteriori informazioni sulla chiave di crittografia segreta. Un modo semplice per ottenere ciò sarebbe dare a ciascuna delle parti X una stringa di caratteri X * N che è completamente casuale. Quindi imposta la chiave di crittografia segreta sullo XOR di queste stringhe. Se le parti X-1 tentano di decifrare, dovranno forzare una stringa casuale di carattere X * N che non sarebbe fattibile se si impostano i parametri correttamente (ad esempio X * N è lungo 128 bit e utilizza AES-128 per la crittografia).

  • Ricodifica il messaggio con PGP o alcuni PKI / RSA ecc.

PKI non dovrebbe mai essere utilizzato per la crittografia di massa (crittografia di un messaggio lungo). In genere, PKI viene utilizzato (in questo scenario) per distribuire una chiave.

Ora, si supponga di modificare questo per utilizzare invece PKI per distribuire X chiavi segrete di lunghezza X * N (come sopra). Quindi invii C = E (K1, E (K2, E (... E (Kn, M)))). Funzionerebbe, ma l'overhead computazionale è piuttosto grande se n è grande. Per 2 o 3 parti questo probabilmente andrebbe bene.

Decrittografia della soglia

Quanto sopra è valido solo se richiedi che tutte le persone X siano presenti per decifrare. Che cosa succede se lo si desidera solo in modo che t di X siano richiesti. Questo è il momento in cui puoi usare Shamir Secret Sharing (vedi la risposta di logicalscope).

Nota che Shamir Secret Sharing funzionerà se t == X, ma non è semplice come il metodo che ho delineato.

    
risposta data 23.03.2012 - 01:37
fonte

Leggi altre domande sui tag