Vantaggi e svantaggi di Stream rispetto a Block Ciphers

Gli algoritmi di crittografia come Blowfish, AES, RC4, DES e Seal sono implementati in una delle due categorie di cifrari. Quali sono i vantaggi / svantaggi del tipo di cifratura?

Risposta

Sebbene entrambe siano cifrature simmetriche, le cifrature a flusso si basano su generando un keystream crittografico “infinito” e utilizzandolo per crittografare un bit o byte alla volta (simile al one-time pad), mentre i cifrari a blocchi funzionano su blocchi di dati più grandi (cioè blocchi) alla volta, spesso combinando blocchi per una maggiore sicurezza (es. AES in modalità CBC).

  • I cifrari a flusso sono in genere più veloci del blocco, ma questo ha il suo prezzo.
  • I cifrari a blocchi in genere richiedono più memoria, poiché funzionano su blocchi di dati più grandi e spesso hanno “riporto” dai blocchi precedenti, mentre poiché i cifrari a flusso funzionano solo su pochi bit alla volta hanno requisiti di memoria relativamente bassi (e quindi più economici da implementare in scenari limitati come dispositivi embedded, firmware e specialmente hardware) .
  • I cifrari a flusso sono più difficili da implementare correttamente e soggetti a punti deboli in base allutilizzo: poiché i principi sono simili al one-time pad, il keystream ha requisiti molto rigidi. Daltra parte, quello ” di solito è la parte difficile e può essere scaricata ad es un box esterno.
  • Poiché i cifrari a blocchi crittografano un intero blocco alla volta (e inoltre hanno modalità di “feedback” che sono più consigliate), sono più suscettibili al rumore durante la trasmissione, cioè se sbagli una parte del dati, tutto il resto è probabilmente irrecuperabile. Mentre con i cifrari a flusso i byte vengono crittografati individualmente senza connessione ad altri blocchi di dati (nella maggior parte delle cifrature / modalità) e spesso hanno il supporto per le interruzioni sulla linea.
  • Inoltre, i cifrari a flusso non forniscono protezione dellintegrità o autenticazione, mentre alcuni cifrari a blocchi (a seconda della modalità) possono fornire protezione dellintegrità, oltre alla riservatezza.
  • Per tutto quanto sopra , le cifrature a flusso sono generalmente le migliori per i casi in cui la quantità di dati è sconosciuta o continua, come i flussi di rete. Cifrari a blocchi, daltra parte, o più utili quando la quantità di dati è pre-nota, come un file, campi dati o protocolli di richiesta / risposta, come HTTP, dove la lunghezza del messaggio totale è già nota al inizio.

Commenti

  • Il secondo punto non è preciso. La differenza di memoria dovuta al ” trasferito ” dai blocchi precedenti è trascurabile e molto inferiore alla differenza di memoria tra algoritmo e algoritmo ( ad esempio, confronta RC4, con i suoi 256 byte di stato interno, con AES, con 0 byte di stato interno in alcuni impianti). Lultimo punto fa false distinzioni ed è un cattivo consiglio.
  • @ D.W. Il secondo punto era ” in generale “, poiché di solito è così (ma accetto che non sia strettamente accurato).
  • @DW hai qualche base per il tuo commento sullultimo punto? Dovè la falsa distinzione e perché dici che questo è un cattivo consiglio?
  • sì, ho una base per il mio commento sullultimo punto. Sembra solo confuso su tutta la linea. I cifrari a blocchi vanno bene per lo streaming di dati; vedere, ad esempio, modalità CBC, modalità CTR, ecc., per varie modalità di funzionamento che funzionano bene con i dati in streaming. Le cifrature a blocchi non sono limitate ai casi in cui la quantità di dati è nota in anticipo. ‘ non sono a conoscenza di alcun motivo per considerare i cifrari a flusso migliori dei cifrari a blocchi per i dati in streaming (nonostante il nome).
  • D.W. è corretto: la parola ‘ Stream ‘ in Stream Cipher indica che è presente un keystream, un flusso di bit combinato con testo in chiaro produrre il testo cifrato. Non riflette la composizione del testo in chiaro. Ovviamente questo è un dettaglio che spesso confonde sviluppatori e ingegneri con i quali questultimo è solitamente implicito. I cifrari a blocchi possono essere utilizzati per manipolare correttamente lo streaming di testo in chiaro. Inoltre, spesso confonde il fatto che i cifrari a blocchi possono essere usati come cifrari in streaming con una modalità operativa appropriata e quando la dimensione del blocco è atomica (ad esempio 1 byte).

Risposta

Un block cipher è un algoritmo versatile che implementa una chiave- permutazione dipendente di valori che sono sequenze di un numero fisso di bit (chiamati “blocchi”). Può essere utilizzato per vari ruoli in molti tipi di protocolli crittografici. Uno di questi ruoli è la crittografia di massa di lunghi flussi di dati; per ottenere questo risultato, il codice a blocchi deve essere utilizzato con una modalità di funzionamento appropriata (nota anche come “modalità di concatenamento”), quella tradizionale è CBC, e la modalità più recente alla moda essendo CTR.

Un stream cipher è un algoritmo specializzato per la crittografia di massa di lunghi flussi di dati. Lidea è che, rinunciando alla versatilità del cifrario a blocchi, sarebbe possibile creare un algoritmo più efficiente (cioè qualcosa che cripta i dati più velocemente ).

Entrambi i cifrari a blocchi con una modalità di crittografia orientata al flusso e cifrari di flusso, possono incorrere in problemi di sicurezza se la stessa chiave viene utilizzata due volte, per due flussi distinti, senza avere un vettore di inizializzazione appropriato, unico / abbastanza casuale. Per la crittografia CBC, lIV deve essere una nuova sequenza di bit uniformemente casuale, della stessa dimensione di un blocco, per ogni nuovo messaggio. I buoni cifrari a flusso accettano anche un IV. Un cifrario a flusso tradizionale chiamato RC4 è privo di IV (le sue specifiche non indicano dove o come potrebbe essere inserito un IV), il che ha portato a molto caos e ha dato un cattiva reputazione per il concetto di cifrari a flusso.

Per cifrari a flusso più recenti, più sicuri (e più veloci), vedere il eSTREAM portfolio . Questi algoritmi sono stati sottoposti a unanalisi piuttosto approfondita da molti crittografi e sono considerati “abbastanza sicuri”.

Un cifrario a flusso può essere convertito in un Generatore di numeri pseudorandom crittografando una lunga sequenza di byte di valore zero. In realtà, molti (ma non tutti) i cifrari di flusso funzionano internamente essendo un PRNG, generando una lunga sequenza di byte pseudo-casuali dipendenti dalla chiave, che viene successivamente combinata (da XOR bit per bit) con i dati da crittografare (o decrittografare), quindi crittografare zero byte equivale quindi a omettere del tutto lo XOR. Pertanto, i cifrari di flusso sono spesso usati come PRNG personalizzato.

Commenti

  • Hai dimenticato di menzionare quale è generalmente più sicuro (flusso vs blocco).
  • Non ho dimenticato, perché laffermazione non ha senso generale. Sia i cifrari a blocchi che i cifrari a flusso possono fornire una protezione adeguata, se applicati correttamente e se ‘ non presentano punti deboli strutturali.
  • ” la versatilità del cifrario a blocchi ” Ho problemi con questa parte. Cosa rende un codice a blocchi intrinsecamente più versatile? I cifrari a blocchi possono essere utilizzati per crittografare e autenticare entrambi i flussi (ad es.TLS) o dati pacchettizzati (ad es.ESP) e lo stesso per i cifrari a flusso (ad es.TLS o DTLS). Ci sono casi in cui una cifratura a flusso sembra più ” naturale ” (ad es. Crittografia dellaudio) o una cifratura a blocchi sembra più ” natural ” (ad es. Crittografia dei dischi) ma semplicemente ‘ non vedo molte lacune nelle applicazioni ragionevoli per entrambi.

Risposta

Un vantaggio dei cifrari a flusso che non sono stati menzionati in precedenza è che non “Non è necessario il riempimento (i cifrari a blocchi operano su blocchi completi, quindi se non hai abbastanza dati devi generarne altri in qualche modo). E sorpresa (non proprio, la crittografia è il campo in cui Murphy è ovunque), il riempimento può essere fatto sbagliato, come esemplificato ad esempio in Practical Padding Oracle Attacks .

Anche la sicurezza dei cifrari a blocchi dipende in gran parte dalla loro modalità di funzionamento, tu vedo ancora ECB usato qua e là a volte e non è molto meglio di nessuna crittografia a t tutto.

Fondamentalmente non si può dire che uno sia migliore dellaltro, bisogna guardare a un sistema crittografico completo per dare un giudizio sulla sicurezza.

Commenti

  • nel primo paragrafo: ci sono modalità di funzionamento per cifrari a blocchi che non ‘ necessitano di riempimento: ad esempio, modalità CTR. Quindi questo non è un vantaggio esclusivo dei cifrari a flusso. Ma +1 al tuo ultimo paragrafo – ben detto!
  • Bene, ‘ dico che CTR e OFB sono costruzioni per creare un cifrario a flusso da un cifrario a blocchi. Questa ‘ è unaltra grande cosa con i cifrari a blocchi, possono essere facilmente usati come blocchi di costruzione per altre cose, che si tratti di cifrari a flusso o hash unidirezionali. I cifrari di flusso non sono così versatili.
  • Hai dimenticato di menzionare quale è generalmente più sicuro (flusso o blocco).
  • Nessuno è più sicuro per natura, ‘ è davvero come li usi.

Answer

Stream Ciphers cripta i dati di testo in chiaro con un flusso casuale di bit (di solito con uno XOR perché può essere invertito facilmente). Se disponi di dati a 128 bit, utilizzerai uno strem psedurandom a 128 bit (la tua chiave) per crittografare.

Block Ciphers crittografa i dati di testo normale un blocco alla volta con la stessa trasformazione (basata sulla chiave ).Quindi hai i tuoi dati a 128 bit, il cifrario li spezza in blocchi (come 4 blocchi da 32 bit) e applica la stessa trasformazione a ogni blocco ottenendo 4 blocchi crittografati, che combinati formeranno il crittogramma finale.

Ovviamente a causa di questo i Block Cyphers sono più sicuri ma costosi da usare in termini di complessità hardware. I cifrari di flusso sono più veloci ed “economici” ma possono essere soggetti a problemi di sicurezza se implementati in modo errato.

Commenti

  • Lultimo paragrafo contiene una serie di errori fattuali. I cifrari a blocchi non sono più sicuri in generale, né sono necessariamente peggiori nellhardware. I cifrari a flusso non sono necessariamente più veloci o meno costosi.
  • @DW: nonostante, i cifrari a flusso sono solitamente più veloci o meno costosi dei cifrari a blocchi, perché ‘ è laffare: un algoritmo meno versatile scambiato per prestazioni migliori. Un cifrario a flusso che risulta essere più lento e più costoso di AES / CTR non viene utilizzato affatto.
  • Hai dimenticato di menzionare quale è generalmente più sicuro (flusso vs blocco).

Risposta

I dati (il materiale da crittografare) di solito arrivano in stream. Per crittografarlo, dobbiamo impiegare un cifrario a flusso, cioè un algoritmo di crittografia adatto per luso su un flusso di dati. Uno stream è una sequenza di bit (o byte) di lunghezza arbitraria, variabile o non specificata.

I migliori cifrari che abbiamo inventato finora sono generalmente cifrari a blocchi. Un codice a blocchi è in grado di crittografare un singolo blocco di dati di dimensioni fisse; e, dalle prove che ci circondano, a quanto pare è più facile costruire buoni cifrari a blocchi che cifrari a flusso.

Buone notizie, però. Utilizzando un dato cifrario a blocchi in alcuni schemi particolari (una “modalità di funzionamento”), e con laiuto di particolari strategie di riempimento, possiamo trasformare qualsiasi cifrario a blocchi in un cifrario a flusso! Ciò significa che possiamo utilizzare le crittografie migliori, che sono crittografie a blocchi, per crittografare qualsiasi dato, la maggior parte dei quali arriva in stream.

Commenti

  • la seconda frase sembra fuorviante. È possibile crittografare i dati di streaming utilizzando un codice a blocchi, utilizzando una qualsiasi delle numerose modalità operative standard: ad esempio, modalità CBC, modalità CTR, ecc. AES-CBC è ancora un codice a blocchi. In effetti, quasi tutte le modalità operative standard per i cifrari a blocchi supportano già i dati in streaming. Inoltre, un codice a blocchi non è sicuro senza una modalità di funzionamento, quindi ‘ non è come una modalità di funzionamento è una cosa opzionale di cui hai bisogno solo quando vuoi crittografare i dati in streaming .

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *