AES è vulnerabile se i testi in chiaro condividono un formato noto?

2

La crittografia AES, se eseguita correttamente (modalità protetta, IV casuali per ogni testo, ...) è considerata sicura. Questo cambia se i testi in chiaro hanno formati conosciuti?

Ad esempio, affermiamo che crittografiamo le stringhe JSON conformi a uno schema pubblico. Ovvero, le stringhe di input iniziano tutte allo stesso modo, ad esempio

{
    resourceId: <number>,
    ...
}

Questo è un problema di per sé? Diventa un problema se il prefisso condiviso è lungo, in particolare più lungo di un blocco AES?

Sarebbe 16 byte nel caso di Common Crypto, che non è molto; sopra l'esempio ha (almeno) 15 byte prefisso condiviso anche assumendo la codifica ASCII!

    
posta Raphael 26.06.2017 - 11:15
fonte

1 risposta

3

Qualsiasi metodo di crittografia moderno è protetto contro attacchi con testo in chiaro e persino attacchi con testo in chiaro scelti. L'unica cosa che viene esposta da un testo cifrato è la sua lunghezza (approssimativa). La nozione matematica alla base di questo è indistinguibilità sotto gli attacchi con testo normale scelti (IND-CPA in breve); ciò che significa in poche parole è che se un avversario sceglie due testi in chiaro di uguale lunghezza e riceve la crittografia di uno di essi, l'avversario non è in grado di dire quale è stato crittografato. I due testi in chiaro possono avere un prefisso comune, possono differire di un solo bit. Gli algoritmi crittografici dell'era computer sono generalmente progettati per essere robusti in termini di quali dati possono elaborare: gli input possono essere qualsiasi serie di stringhe di byte (fino a un limite di lunghezza molto grande).

Ciò presuppone che la crittografia sia eseguita correttamente, in particolare con una modalità valida (come CTR o CBC, mai EBC) e una corretta selezione IV (casuale ogni volta che un messaggio è crittografato è sempre valido).

Nota che IND-CPA non è la storia completa. Alcuni attacchi possono essere possibili laddove l'avversario sottomette codici cifrati scelti (che possono o non possono essere validi) alla parte con la chiave segreta. Un avversario può essere in grado di ottenere informazioni inviando variazioni di un testo cifrato (anche se non sanno a cosa decifrare), facendole decifrare e osservandone le conseguenze (anche se non hanno accesso all'output decrittografato, possono essere in grado di osservare quanto tempo impiega, se fa scattare determinati errori, ecc.). Molti sistemi basati sulla crittografia richiedono in realtà indistinguibilità in attacchi adattati al testo cifrato scelto (IND-CCA2). La protezione dagli attacchi cifratici scelti richiede l'autenticazione.

Il modo migliore per autenticare i dati, che protegge dagli attacchi crittografati scelti, è utilizzare una modalità di crittografia autenticata . Vedi Perché dovrei usare Authenticated Crittografia invece di solo crittografia? per una spiegazione più dettagliata. Quelli popolari includono GCM , CCM , OCB e EAX , CWC . Ognuno di questi cinque è sicuro come ottiene; vedi Scelta della modalità di crittografia autenticata per interi messaggi per altre considerazioni come le prestazioni. Se devi utilizzare una libreria che non fornisce le modalità AEAD, puoi combinare un MAC con CBC o CTR, ma farlo correttamente è difficile ; nel 2017, penso che se la tua libreria non fornisce le modalità AEAD, dovresti ottenere una libreria più aggiornata.

    
risposta data 26.06.2017 - 14:18
fonte

Leggi altre domande sui tag