Quale algoritmo di crittografia consente meno dati di output rispetto ai dati di origine? [duplicare]

-5

Sto cercando di capire come ottenere le informazioni sulla mia origine per compilare più piccoli usando il testo crittografato. Questo potrebbe potenzialmente cambiare il gioco nel trasferire dati di grandi dimensioni e offrire allo stesso tempo sicurezza.

Esistono tipi di crittografia che cambiano fonte in un numero inferiore di lettere e numeri?

(per mancanza di una parola migliore sto usando la parola: crittografia) (questa domanda non riguarda la crittografia e la compressione, la sua domanda su quale tipo di crittografia può cambiare sorgente con meno lettere / numeri stringa)

    
posta DeerSpotter 25.10.2018 - 18:04
fonte

3 risposte

-2

Codici può farlo: usano tabelle di ricerca (" Codebooks ") che mappano qualcosa (parole, frasi o sequenze arbitrarie di byte) ad altri simboli, e quest'ultimo può occupare meno dimensioni del primo, ottenendo così (possibilmente solo con alcuni messaggi sorgente) una compressione.

Le parti comunicanti devono già condividere il codebook per poter comunicare, però.

La dimensione di un singolo messaggio "crittografato" + quello del codebook sarà sempre più grande di quello del testo in chiaro, ma con un numero sufficiente di messaggi potresti compensarlo.

In ogni caso, il libro dei codici deve essere comunicato in modo sicuro (ad esempio a mano), quindi le loro dimensioni sono importanti solo perché possono occupare molto spazio nei sistemi di archiviazione delle parti.

Gli storici probabilmente sono tutti facilmente infrangibili, ma con la tecnologia attuale potrebbe essere in grado di creare uno schema sicuro, probabilmente usando una lunghezza minima sufficiente per la sequenza di sorgenti.

Se vuoi uno schema che supporti qualsiasi possibile messaggio sorgente, probabilmente dovrai usare un "codebook" molto grande (possibilmente ingombrante).
Dovrai utilizzare uno diverso per ogni gruppo di parti che non dovrebbe essere in grado di decodificare i messaggi degli altri gruppi e molto probabilmente dovrai cambiarli regolarmente.

A questo punto, dovresti probabilmente andare a crypto.stackexchange.com con la tua domanda, le persone saranno molto più competenti a dicendoti se uno schema simile potrebbe essere sicuro e quali caveat si applicano ad esso.

Meglio sottolineare qui non tentare di elaborare il tuo schema di crittografia, o almeno non usarlo / fare affidamento su di esso per nulla finché non sia stato analizzato estesamente, per lungo tempo, da (molti) veri crittografi .
Se non sei al corrente del campo, rimarrai sorpreso di quanto sia facile sparare ai piedi e creare un sistema di crittografia insignificante, per quanto incredibilmente complesso possa sembrarti.

    
risposta data 26.10.2018 - 22:37
fonte
15

I dati crittografati dovrebbero essere indistinguibili dal rumore casuale. I dati casuali non possono essere compressi. Pertanto, comprimi prima i dati e poi crittografalo.

    
risposta data 25.10.2018 - 18:09
fonte
11

No, quello che stai cercando di realizzare è impossibile.

La crittografia tenta di mantenere riservate le informazioni. A tale scopo, è necessario un messaggio di input tra tutti i possibili messaggi di input e viene crittografato in modo tale che l'output non perda alcuna informazione sul messaggio di input. Ovviamente non vuoi che i messaggi vengano crittografati sullo stesso output perché in tal caso non potresti recuperare un messaggio o non potresti scegliere quale messaggio è stato crittografato.

Ora, se l'output fosse inferiore all'input, per definizione ci sarebbero meno valori di output rispetto ai messaggi di input. In questo caso deve essere mappato a un valore di output che è già stato assegnato a un altro messaggio di input. Questo è chiamato il principio Pigeonhole ed è spiegato nella maggior parte dei primer di crittografia.

Quindi il meglio che puoi fare è di pareggiare il pareggio.

Anche rompersi in pari ti metterebbe nei guai se provassi a riutilizzare la chiave. Il problema è che un messaggio ripetuto sarebbe criptato sullo stesso output, facendo filtrare a un utente malintenzionato che i messaggi sono identici. Per questo la maggior parte delle cifre richiede una IV come input. A volte questo IV può essere generato durante la crittografia e la decrittografia (numeri di settore per la crittografia del disco rigido), ma spesso l'IV deve essere memorizzato accanto al testo cifrato.

E quindi avresti ancora un messaggio che è confidenziale, ma non è protetto o autenticato. In generale, è necessario aggiungere anche un tag di autenticazione. Un modo comune per farlo è calcolare un valore MAC usando HMAC.

Per questi motivi, la crittografia spesso espande la dimensione del messaggio anziché ridurlo.

Quindi l'unica cosa che puoi fare è ridurre lo spazio dei messaggi di input. Questo può essere fatto eseguendo la compressione. Ma potresti anche provare a trovare un modo migliore di codificare le informazioni nel messaggio di input. Ad esempio, XML ha un sacco di overhead, che potrebbe essere rimosso usando una codifica binaria come ASN.1 con DER o anche le strane ma estremamente efficienti regole di codifica PER.

Attenzione però che anche le dimensioni del testo cifrato possono far trapelare informazioni a un utente malintenzionato. Ad esempio il bit rate di un flusso MP3 a velocità variabile potrebbe dire molto sul contenuto del flusso, che sarebbe nascosto se un flusso costante di frequenza / formato di onda grezza venisse trasmesso in streaming.

Infine vorrei che tu indicassi Format Preserving Encryption o FPE. FPE può essere utilizzato per fornire la crittografia dei messaggi in cui lo spazio dei messaggi di output è esattamente grande quanto lo spazio dei messaggi di input, anche se lo spazio dei messaggi di input non è una potenza di due (cioè può essere codificato semplicemente come una sequenza di bit). Questo metodo viene spesso utilizzato per crittografare informazioni come i numeri delle carte di credito, in cui il messaggio di input è sicuro di non ripetere mai.

Quindi FPE è un modo sicuro e sicuro di rompere persino, dove i codici moderni spesso operano su bit, byte o blocchi completi (più byte) di testo in chiaro alla volta.

    
risposta data 25.10.2018 - 18:44
fonte

Leggi altre domande sui tag