Esiste un algoritmo di crittografia che consente a un singolo payload di avere due output diversi in base alla password?

62

Supponiamo di avere alcune informazioni confidenziali che sono criptate e che sono obbligato / costretto a rivelare tale password.

Il mio obiettivo è fare in modo che il carico utile decrittografato appaia significativo / e la password sia valida.

Esiste un algoritmo di questo tipo che permetta di applicare una diversa password allo stesso carico utile, in modo che vengano resi noti i dati decrittografati alternativi?

    
posta random65537 23.01.2017 - 17:10
fonte

7 risposte

26

Con molti algoritmi comuni, cambiando la chiave, è abbastanza possibile ottenere dati arbitrari nel primo blocco. Dove ci si imbatte in guai è quando i dati sono più lunghi della dimensione del blocco chiave. Il resto dei dati (oltre il primo blocco) apparirebbe casuale dopo lo scambio delle chiavi, assumendo che si stia utilizzando un metodo di concatenamento sicuro. Potresti usare un metodo di concatenazione non sicuro, ma non lo consiglierei.

Potresti utilizzare la crittografia XOR OTP . Questo è diverso dalla maggior parte della crittografia in cui la chiave viene riutilizzata matematicamente. Con OTP (One Time Pad), la chiave ha la stessa lunghezza dei dati. Con XOR (uno degli OTP più comuni) hai la flessibilità di produrre arbitrariamente il messaggio desiderato.
(Il tuo avversario potrebbe essere a conoscenza di questa possibilità?)

Per iniziare, crea file di uguale lunghezza:

  • messaggio originale
  • dati casuali (la chiave reale)

XOR ti dà insieme

  • messaggio crittografato

quindi prendi

  • messaggio falso
  • messaggio crittografato

XOR ti dà insieme

  • chiave falsa

Per decodificare, prendi

  • messaggio crittografato
  • chiave reale o falsa

XOR per ottenere

  • messaggio reale o falso

Come @ Alpha3031 ha commentato , potresti effettivamente crittografare un messaggio (ad esempio quello falso) con AES tradizionale, (più comune e richiede un file chiave più piccolo) e quindi usare XOR (meno comune) per produrre l'altro. (ad esempio il messaggio reale?)

XOR può essere applicato a qualsiasi file che sia sufficientemente imprevedibile / casuale. (ad esempio dati crittografati)

    
risposta data 23.01.2017 - 17:27
fonte
35

La domanda teorica qui è una domanda di dimensione / entropia. La regola chiave è che l'entropia del messaggio crittografato è uguale all'entropia del messaggio iniziale. Se l'algoritmo non comporta alcuna compressione, la dimensione del messaggio crittografato corrisponde alla dimensione del messaggio originale.

Affinché il messaggio crittografato venga decodificato in due modi diversi a seconda della chiave, è necessario che contenga 2 messaggi diversi. Un modo sarebbe quello di crittografare un messaggio reale con una chiave e un messaggio falso con un'altra chiave, e combinare entrambi i messaggi codificati (dopo aver riempito il più corto) ad esempio con un byte da ciascuno. A condizione di aggiungere un ID noto all'inizio dei messaggi prima di criptarli, al momento della decodifica, l'algoritmo potrebbe restituire solo il messaggio che aveva l'ID iniziale corretto.

Il problema è che ci sono due messaggi diversi + alcune informazioni aggiuntive. E avere un messaggio crittografato più lungo di quello iniziale non è così plausibile ...

Questo è il motivo per cui non conosco algoritmi che implementino la negabilità plausibile, ma solo contenitori , ovvero un filesystem crittografato completo. Questo è stato implementato nell'eccellente TrueCrypt prima che il supporto venisse interrotto. Fortunatamente, un fork del progetto lo offre ancora, VeraCrypt .

VeraCrypt offre effettivamente volumi nascosti. Infatti una parte dello spazio vuoto di un volume normale viene utilizzata per memorizzare un volume distinto con una chiave distinta. Quando si presenta una chiave, viene fatto un tentativo di trovare un volume nascosto, se non di trovare un volume normale. Quando si apre il volume normale in modalità normale, nulla consente di indovinare che contiene anche un volume nascosto, semplicemente ha uno spazio inutilizzato che non è una sorpresa per un file system. Naturalmente, se si scrivono molti dati in quella modalità, si sovrascriveranno e si distruggeranno definitivamente i dati del volume nascosto. Ma esiste una modalità speciale per dare entrambe le chiavi e utilizzare il volume esterno senza il rischio di sovrascrivere quello interno.

Sopra c'era la parte tecnica. Ma la negabilità plausibile richiede anche che il contenuto del contenitore esterno ne valga la pena, poiché la capacità di contenitori nascosti è una caratteristica ben nota. IMHO, ci sono due modi accettabili:

  • Ordina le tue informazioni in 3 classi, semplici, sensibili e segrete e memorizzale di conseguenza: semplice all'esterno del contenitore, sensibile nella parte esterna (usa la doppia password di accesso ) e segreta in la parte nascosta. In questo modo, poiché il contenitore esterno contiene più di file innocenti, l'esistenza di un contenitore nascosto non è evidente. Ma devi effettivamente utilizzare il contenitore esterno, almeno tanto quanto quello interno ed essere pronto a rivelare il suo contenuto

  • Usa il contenitore esterno come archivio principale. Si tratta di un utilizzo comune sui laptop aziendali, perché garantisce che in caso di furto o perdita del laptop, nessuna informazione riservata sia immediatamente accessibile (si rivolge alla parte di riservatezza della sicurezza ...). Il backside è che dovresti montare il container come singolo al momento dell'avvio, e nel normale utilizzo smontarlo immediatamente per rimetterlo manualmente in modalità doppio .

E a seconda di chi l'avversario è VeraCrypt pagine su negabilità plausibile e requisiti di sicurezza per i volumi nascosti ha ulteriori consigli, come ad esempio l'uso del volume nascosto solo all'avvio da una sola lettura CD / DVD ...

Come al solito la sicurezza tecnica è solo una parte della sicurezza globale. Se l'informazione è sufficientemente sensibile da temere per la tua integrità fisica, dovresti usare misure di sicurezza fisica e non affidarti solo a una negazione plausibile: è uno strumento piacevole che può aiutare a nascondere informazioni sicure ma non un magico proiettile d'argento. Solo Snake Oil Company può fornire quelle ...

    
risposta data 23.01.2017 - 17:49
fonte
6

Camouflage crittografico

Le tecnologie CA hanno brevettato una tecnologia nota come Camouflage crittografico .

A sensitive point in public key cryptography is how to protect the private key. We outline a method of protecting private keys using cryptographic camouflage. Specifically, we do not encrypt the private key with a password that is too long for exhaustive attack. Instead, we encrypt it so that only one password will decrypt it correctly, but many passwords will decrypt it to produce a key that looks valid enough to fool an attacker. For certain applications, this method protects a private key against dictionary attack, as a smart card does, but entirely in software.

Quindi sì, puoi prendere un messaggio (in questo caso, una chiave) e crittografarlo in modo tale che ci sia una chiave corretta e molte chiavi "false" che producono testo in chiaro falso.

    
risposta data 25.01.2017 - 00:50
fonte
5

Quello che stai chiedendo è come implementare la negabilità plausibile oltre alla crittografia basata su segreto. Sebbene non esistano algoritmi specifici, è possibile implementarlo facilmente a livello di applicazione: basta unire due contenitori simmetrici in uno e provare ciascuna password su ciascun contenitore.

Ricordo che TrueCrypt aveva una funzione simile in passato, anche se non ero sicuro che la loro implementazione avesse qualcosa di simile a suggerire o implementarla diversamente.

    
risposta data 23.01.2017 - 17:24
fonte
2

Sì, con avvertenze.

Requisiti:

1) Fornisci il programma di crittografia, non sarà in grado di resistere a un'attenta analisi.

2) Il messaggio falso deve essere di testo o simile - bassa entropia.

3) La dimensione è una restrizione sul messaggio falso - probabilmente deve essere almeno vicino alla dimensione di quello reale, se quello reale è binario il falso deve essere sostanzialmente più grande. Qualsiasi coppia di falsi & i veri messaggi possono essere provati, se le dimensioni sono sbagliate saranno rifiutate.

Algoritmo:

Il file crittografato in uscita avrà sempre esattamente la dimensione del file di input falso. Sembra che lo stia semplicemente crittografando, ma in realtà sia i file falsi che quelli reali vengono compressi prima della crittografia, il file crittografato viene riempito con parole senza senso alla dimensione del file falso. Se i due file si sommano a più delle dimensioni false non compresso, vengono respinti.

Per estrarre il file, prendi la password fornita e decrittografare il file reale ed eseguirlo attraverso il decompressore. Se il decompressore ha un problema, prova di nuovo sul file falso. Se il decompressore presenta ancora un problema, è sufficiente che venga restituito un messaggio senza parole nella dimensione del file di input.

    
risposta data 24.01.2017 - 03:45
fonte
1

Come già notato da @Serge Ballesta, il contenuto informativo del messaggio crittografato non può essere inferiore al contenuto informativo del messaggio vero più il contenuto informativo del messaggio falso. Pertanto, qualsiasi messaggio crittografato che sia significativamente più grande del messaggio falso sarebbe automaticamente sospetto.

D'altra parte, per favore ricorda che il contenuto leggibile dall'uomo ha molta ridondanza, che è fondamentalmente "spazio di archiviazione gratuito delle informazioni". Per citarne alcuni esempi: nascondere i messaggi in immagini e suoni o alterare il testo attraverso sinonimi, frasi, ecc. In questa luce, la "password speciale" sarebbe quella di passare il file decrittografato ordinariamente attraverso qualche decodificatore aggiuntivo (di solito anche crittografato, in modo che sembra rumore).

Per dare un esempio concreto semplice (per assicurarsi che sia chiaro: è solo un esempio per illustrare l'idea, per favore non usarlo ovunque), immagina un codice di sostituzione semplice in cui ogni lettera ha rappresentazioni multiple per evitare l'analisi della frequenza. Tuttavia, invece di scegliere la sostituzione casuale, scegli quella dettata dal testo cifrato del messaggio nascosto (che dovrebbe apparire abbastanza casuale).

Spero che questo aiuti; -)

    
risposta data 24.01.2017 - 15:46
fonte
1

Se permetti alcuni "imbrogli".

Codifica:

  • Prendi 2 diversi payload
  • Li encript
  • Escape dei loro byte come testo esadecimale (caratteri da 0 a 9 e da A a F)
  • Prendi un personaggio da 1 carico utile e 1 personaggio da un altro carico utile. Ogni terzo byte viene emesso in modo casuale.
  • poiché i payload possono avere una lunghezza diversa quando un testo esadecimale termina avrà il carattere "G" e quindi tanti caratteri casuali, se necessario.

La password è composta come segue:

  • 127 bit per decrittografare lo stream
  • 1 bit per selezionare il payload
  • 128 bit per decrittografare il carico utile.

Fondamentalmente si ottiene 1 pacchetto con la dimensione di 3 payload, deve essere decifrato, quindi è necessario selezionare un gruppo di byte e decodificarlo anche.

Decodifica:

  • Decifra lo stream utilizzando la prima parte della password
  • Seleziona il carico utile (ogni primo o secondo carattere ogni 3 caratteri)
  • Caratteri di Unescape
  • decripta anche il pacchetto.

È ovvio che questo formato di file ha 2 payload all'interno, ciò che non è ovvio è che puoi mettere dentro di esso spazzatura e solo 1 carico utile reale invece di 2.

    
risposta data 24.01.2017 - 18:01
fonte

Leggi altre domande sui tag