2012-09-11 9 views
9

Esiste un'implementazione javascript di crittografia inclusa la negabilità plausibile?implementazione javascript di crittografia compresa la negabilità plausibile

voglio qualcosa di esporre le caratteristiche descritte qui: http://en.wikipedia.org/wiki/Deniable_encryption

crittografia negabile consente al mittente di un messaggio cifrato a negare l'invio di quel messaggio. Ciò richiede una terza parte affidabile. Un possibile scenario funziona così:

  1. Alice è la moglie di Bob, che sospetta la moglie è impegnata in adulterio. Vuole comunicare con il suo amante segreto Carl. Crea due chiavi, una destinata a essere tenuta segreta, l'altra destinata a essere sacrificata. Passa la chiave segreta (o entrambi) a Carl.
  2. Alice costruisce un innocuo messaggio M1 per Carl (destinato a essere rivelato a Bob in caso di scoperta) e una lettera d'amore compromettente M2 a Carl. Costruisce un testo cifrato C di entrambi i messaggi M1, M2 e lo invia a Carl.
  3. Carl utilizza la sua chiave per decrittografare M2 (e possibilmente M1, anche per leggere il messaggio falso).
  4. Bob scopre l'e-mail a Carl, diventa sospettoso e costringe Alice a decifrare il messaggio.
  5. Alice usa la chiave sacrificale e rivela il messaggio innocuo M1 a Bob. Poiché Bob non conosce l'altra chiave, deve presumere che non ci sia nessun altro messaggio M2.
+0

Questo probabilmente appartiene a: http://programmers.stackexchange.com/ –

+0

@Diodeus, [o forse non] (http://meta.programmers.stackexchange.com/questions/1624/are-im-looking- per-x-domande-on-topic). –

+0

Che cos'è esattamente il tuo caso d'uso? – Philipp

risposta

-1

Interessante domanda. Ci sono le librerie di crittografia Javascript là fuori here e here ma il tuo caso d'uso non richiede di implementarlo in Javascript, e probabilmente staresti meglio usando una lingua diversa.

Perché? La crittografia affidabile è una forma di sicurezza che richiede la sicurezza per oscurità, per definizione, quindi implementarla utilizzando un linguaggio di scripting probabilmente non è il modo migliore per farlo (chiunque e tutti possono vedere i dettagli dell'implementazione). Scrivilo in un linguaggio potente e computazionalmente potente e bloccalo da qualche parte su un server.

+3

La crittografia affidabile non richiede un algoritmo oscuro, con sia i dati che l'algoritmo, l'hacker non dovrebbe essere ancora in grado di sapere se c'è un secondo/terzo/quarto messaggio super segreto nascosto lì. –

+0

Non intendo algoritmo oscuro, intendo architettura oscura. –

0

Ci sono un sacco di librerie Javascript che forniscono primitive crittografiche, ma non ho mai sentito di nessuno che includa la negabilità plausibile.

È possibile implementare uno schema di crittografia simile a quello utilizzato da TrueCrypt. È limitato a solo 2 set di dati crittografati: i dati sull'esca e i dati veramente segreti. Ma il design è piuttosto semplice, quindi se non hai bisogno di più di 2 set di dati, fallo. È possibile modificarlo per consentire più di 2 set, ma non può essere 'dinamico'.

Viene spiegato in dettaglio su TrueCrypt documentation page, ma il principio di base è che i dati crittografati contengono intestazioni a larghezza fissa per ciascun set di dati. Intestazione include informazioni sul suo set di dati. Nella maggior parte degli scenari di base, sarebbe solo l'offset dell'inizio del set di dati nell'intero blocco crittografato, la lunghezza di quel set di dati e un certo valore del canary usato per verificare se l'intestazione è decrittografata con successo. Quando l'utente fornisce una password, il sistema prova a decrittografare la prima intestazione, se fallisce tenta con l'intestazione successiva, finché non ha esito positivo o non ci sono intestazioni rimanenti. Se riesce, decripta i byte specificati nell'intestazione.

Questo schema è stato progettato per la crittografia del file system, quindi avrebbe un grande difetto quando usato nel tuo sistema - quando l'avversario ti obbliga a rivelare la chiave per i dati dell'esca, chiederà perché le sue dimensioni sono inferiori alle dimensioni di intero blocco crittografato.

Problemi correlati