# Crittografia negabile

La crittografia negabile in crittografia e steganografia è una forma di crittografia che consente di negare in maniera convincente sia che i dati siano cifrati, sia di essere in grado di decifrarli. Il diniego, anche se non veritiero, non può essere verificato dall'attaccante senza la cooperazione dell'utilizzatore, che potrebbe veramente non essere in grado di decifrare i dati. Il dubbio che la negabilità induce nell'attaccante diventa così un'ulteriore forma di protezione dell'utilizzatore.

## Funzione

Un normale testo cifrato può essere decifrato ottenendo un unico testo in chiaro e l'utilizzatore non può sostenere di avere cifrato un messaggio differente. La crittografia negabile permette di cifrare il testo cifrato e di ottenere, se necessario, un testo in chiaro alternativo che ha il ruolo di esca. L'attaccante, anche se in grado di forzare l'utilizzatore a produrre un testo in chiaro, non può rilevare alcuna differenza fra il vero testo in chiaro e quello alternativo. L'utilizzatore può sempre difendersi, scegliendo volta per volta se produrre, a partire dallo stesso testo cifrato, il vero testo in chiaro o quello di copertura.
Il concetto di "crittografia negabile" è stato usato da Julian Assange e Ralf Weinmann nel Rubberhose filesystem ed esplorato in dettaglio in un articolo di Ran Canetti, Cynthia Dwork, Moni Naor, e Rafail Ostrovsky nel 1996.

### Scenari

La crittografia negabile consente, al mittente di un messaggio cifrato, di negare di aver spedito quel messaggio. Ciò richiede un terzo partecipante fidato. Ecco un possibile scenario:
* Alice è la moglie di Bob, che la sospetta di adulterio. Lei vuole comunicare con il suo amante segreto Carl e crea due chiavi. La prima (K1) può essere sacrificata, mentre l'altra (K2) deve rimanere segreta e condivisa solo con Carl.
* Alice costruisce un messaggio innocuo M1 per Carl (destinato ad essere rivelato a Bob in caso di emergenza) e un messaggio compromettente M2 per Carl. M1 viene cifrato con la chiave K1 e M2 con la chiave K2. Al momento della cifratura M1 e M2 vengono fusi in un unico messaggio cifrato che viene spedito a Carl.
* Carl usa la chiave segreta K2 per decifrare il messaggio e legge il testo segreto M2.
* Bob scopre il messaggio cifrato per Carl, si insospettisce e costringe Alice a decifrarlo.
* Alice sacrifica la chiave K1, la rivela a Bob che legge così il testo innocuo M1. Bob non conosce l'esistenza dell'altra chiave e non sospetta l'esistenza del testo segreto.
Un altro scenario possibile è quello in cui un soggetto deve creare un unico messaggio indirizzato a più destinatari, ma costruito in modo tale che ciascuno possa decodificare e leggere un testo diverso dagli altri. Ad esempio, Alice vuole creare un messaggio che veicoli istruzioni segrete a Bob e Carl, diverse tra l'uno e l'altro: Bob e Carl, cioè, devono ricevere istruzioni diverse e l'uno non venire a conoscenza delle istruzioni dell'altro. Carl può ricevere il messaggio solo attraverso Bob.
* Alice crea il messaggio cifrato (M1 con K1 e M2 con K2) e lo spedisce a Bob.
* Bob legge le sue istruzioni M1 usando la sua chiave K1. Non può decifrare M2.
* Bob inoltra il messaggio cifrato a Carl.
* Carl legge le sue istruzioni M2 usando la sua chiave K2. Non può leggere M1.

## Forme moderne di crittografia negabile

Le moderne tecniche di crittografia negabile sfruttano le proprietà di permutazione pseudorandom dei cifrari a blocchi, rendendo impossibile dimostrare che il testo cifrato non corrisponda a dati casuali generati da un generatore di numeri pseudocasuali crittograficamente sicuro. Vengono usati in combinazione anche dei dati esca, plausibilmente confidenziali, che l'utilizzatore può rivelare all'attaccante, sostenendo che non esistono altri dati. Questa forma di crittografia negabile viene accomunata con la steganografia.
Un altro esempio di crittografia negabile è il filesystem crittografico che utilizza il concetto di "livelli" astratti, dove ogni livello viene cifrato con una chiave differente, e livelli addizionali speciali, con funzione di "chaff", riempiti con dati random. L'utilizzatore memorizza dei file esca in uno o più livelli e nega l'esistenza di altri livelli con file segreti, sostenendo che il restante spazio è occupato solo da livelli chaff. Fisicamente questi filesystem sono tipicamente memorizzati in una singola directory e tutti i file contenuti hanno uguale lunghezza e timestamp casuale. I nomi sono generati casualmente - se appartengono a livelli chaff - o sono hash crittografici delle stringhe che identificano i blocchi. Rubberhose filesystem e PhoneBookFS utilizzano questo approccio.
Un altro approccio utilizzato da alcuni software di crittografia su disco è creare un secondo volume cifrato all'interno di un volume contenitore. Il volume contenitore viene prima formattato con dati casuali cifrati e poi inizializzato con un filesystem che l'utilizzatore riempie con dei dati plausibilmente sensibili. Viene successivamente allocato all'interno del volume contenitore un secondo volume nascosto e cifrato, in cui l'utilizzatore memorizza dei dati segreti. Come per gli altri esempi, la protezione del volume cifrato deriva dalle proprietà di permutazione pseudorandom dei cifrari a blocchi.
L'integrità del volume cifrato dipende dalla possibilità di non aumentare la dimensione dei dati contenuti nel volume contenitore fino a sovrascrivere lo spazio nascosto cifrato allocato all'interno. In alcuni casi può essere necessario "congelare" nel tempo il volume contenitore per preservare quello nascosto, correndo però il rischio di renderlo sospetto per via dei timestamp di ultimo accesso e modifica non più aggiornati. FreeOTFE e BestCrypt possono allocare più volumi cifrati all'interno di un volume contenitore; TrueCrypt è limitato ad unico volume nascosto.

### Critiche

L'esistenza di un volume nascosto può essere rilevata da implementazioni imperfette, con elementi crittografici predicibili o da alcuni strumenti di informatica forense che possono svelare la presenza di dati cifrati non casuali. È stata anche suggerita una vulnerabilità dei volumi cifrati al test di randomicità del Chi quadrato, per sfuggire al quale sarebbe richiesto, ad ogni modifica dei dati cifrati, l'inserimento di elementi correttivi per riportare il volume a uno stato plausibile di casualità.
La crittografia negabile è stata criticata anche per la sua impossibilità di difendere gli utilizzatori dal metodo del tubo di gomma (rubber-hose cryptanalysis). Alcuni utilizzatori e progettisti temono infatti che il solo fatto di aver usato o possedere strumenti di cifratura che consentono la crittografia negabile possa spingere gli attaccanti a non interrompere le indagini (ad esempio, continuando a torturare il soggetto) nemmeno quando l'utilizzatore sembra cooperare, avendo egli fornito la chiave di copertura.