Come configurare smartphone e PC. Portale informativo

Crittografia utilizzando lo standard des. Schema di crittografia DES

Che ANSI chiama DEA (Data Encryption Algorithm) e ISO - DEA-1, è diventato uno standard mondiale in 20 anni. Nel corso degli anni della sua esistenza, ha resistito all'assalto di vari attacchi e, con alcune restrizioni, è ancora considerato crittograficamente sicuro.

DES è un cifrario a blocchi che crittografa i dati in blocchi a 64 bit. A un'estremità dell'algoritmo viene immesso un blocco di testo in chiaro a 64 bit e all'altra estremità viene emesso un blocco di testo cifrato a 64 bit. DES è algoritmo simmetrico: Lo stesso algoritmo e la stessa chiave vengono utilizzati per la crittografia e la decrittografia (ad eccezione di lievi differenze nell'utilizzo della chiave). La lunghezza della chiave è di 56 bit. (La chiave è solitamente rappresentata come un numero a 64 bit, ma ogni ottavo bit viene utilizzato per la parità e ignorato. I bit di parità sono i più piccoli bit significativi byte chiave.) La chiave, che può essere un qualsiasi numero a 56 bit, può essere modificata in qualsiasi momento.

La resistenza alla crittografia è completamente determinata dalla chiave. L'elemento costitutivo fondamentale di DES è la combinazione di permutazioni e permutazioni. DES è composto da 16 cicli.

Vista generale del ciclo di conversione:

Se L i e R i sono le metà sinistra e destra ottenute come risultato dell'i-esima iterazione, K i è una chiave a 48 bit per il ciclo i e f è una funzione che esegue tutte le sostituzioni, permutazioni e XOR con un chiave, allora un ciclo di conversione può essere pensato come:

Tenendo conto della sostituzione F i (*) e della permutazione T (*), il ciclo di trasformazione può essere rappresentato come in Fig.

Si può vedere che ogni ciclo DES è un cifrario compositivo con due successive trasformazioni - la sostituzione F i (*) e la permutazione T (*) (tranne l'ultimo, sedicesimo ciclo, dove la permutazione è omessa).

Sostituzione:

(L io, R io) = (R io −1, L io −1) ⊕ f (R io −1, K)

è un'involuzione poiché

F io (F io (L io −1, R io −1)) = F io (R io −1, L io −1) ⊕ (f (R io −1, K io))) = (R io - 1, L i −1 ⊕ (f (R i −1, K i)) ⊕ (f (R i −1, K i))) = (L i −1, R i −1)

E la sostituzione

T (L io ′, R io ′) = (R io ′, L io ′),

è anche un'involuzione, poiché

T (T (L i ′, R i ′)) = T (R i ′, L i ′) = L i ′, R i ′

Se denotiamo le permutazioni iniziale e finale come (IP) e (IP) - 1, la trasformazione DES diretta (crittografia) implementa la funzione:

DES = (IP) F 1 TF 2 T… F 15 TF 16 (IP) - 1,

e la trasformazione DES inversa (decrittografia) implementa la funzione:

DES - 1 = (IP) −1 F 16 TF 15 T… F 2 TF 1 (IP).

Pertanto, DES è un cifrario di Feistel ed è progettato per eseguire proprietà utile: Lo stesso algoritmo viene utilizzato per la crittografia e la decrittografia. L'unica differenza è che le chiavi devono essere utilizzate in ordine inverso.


Cioè, se le chiavi K 1, K 2, K 3, ..., K 16 sono state utilizzate per la crittografia, le chiavi di decrittazione saranno K 16, K 15, K 14, ..., K 1. L'algoritmo utilizza solo numeri aritmetici standard a 64 bit e operazioni logiche, quindi è facile da implementare nell'hardware.

DES opera su un blocco di testo in chiaro a 64 bit. Dopo la permutazione iniziale, il blocco viene suddiviso in metà destra e sinistra di 32 bit ciascuna. Quindi vengono eseguite 16 trasformazioni (funzione f), in cui i dati vengono combinati con la chiave. Dopo il sedicesimo ciclo, le metà destra e sinistra vengono combinate e l'algoritmo termina con la permutazione finale (inversa all'originale). Ad ogni ciclo (vedi Fig.), i bit chiave vengono spostati, quindi vengono selezionati 48 bit dai 56 bit chiave. La metà destra dei dati viene espansa a 48 bit dalla permutazione di diffusione, XORed con 48 bit della chiave spostata e permutata, attraversata attraverso 8 S-box per formare 32 nuovi bit e riorganizzata di nuovo. Queste quattro operazioni sono eseguite dalla funzione f.

Quindi il risultato della funzione f viene concatenato con la metà sinistra utilizzando un altro XOR. Come risultato di queste azioni, appare una nuova metà destra e la vecchia metà destra diventa una nuova metà sinistra. Questi passaggi vengono ripetuti 16 volte, formando 16 round DES.

Standard russo - GOST 28147-89

GOST 28147-89 è un cifrario a blocchi con una chiave a 256 bit e 32 cicli di conversione, che opera in blocchi a 64 bit. Il criptoalgoritmo utilizza anche chiave aggiuntiva che è discusso di seguito. Per la crittografia testo in chiaro prima è diviso nelle metà sinistra e destra di L e R. Nell'i-esimo ciclo, viene utilizzata la sottochiave K i:

L io = R io −1,
R i = L i −1 ⊕ (f (R i −1, K i)).

La funzione f è implementata come segue. Innanzitutto, la metà destra e la i-esima sottochiave vengono aggiunte modulo 2 32. Il risultato è suddiviso in otto sottosequenze a 4 bit, ognuna delle quali va all'ingresso della propria S-box. GOST utilizza otto diverse S-box, i primi 4 bit vanno nella prima S-box, i secondi 4 bit vanno nella seconda S-box e così via. Ogni S-box è una permutazione di numeri da 0 a 15. Ad esempio, una S-box può essere simile a: 7,10,2,4,15,9,0,3,6,12,5,13,1,8,11. In questo caso, se l'input della S-box è 0, l'output è 7. Se l'input è 1, l'output è 10, ecc. Tutte e otto le S-box sono diverse, in realtà sono materiale chiave aggiuntivo. Le uscite di tutte e otto le S-box sono concatenate in una parola a 32 bit, quindi l'intera parola viene spostata ciclicamente a sinistra di 11 bit. Infine, il risultato viene sottoposto a XOR con la metà sinistra per creare una nuova metà destra e la metà destra diventa la nuova metà sinistra. Per generare le sottochiavi, la chiave originale a 256 bit viene suddivisa in otto blocchi a 32 bit: k 1, k 2, ..., k 8. Ogni ciclo utilizza la propria sottochiave. La decrittazione viene eseguita allo stesso modo della crittografia, ma l'ordine delle sottochiavi k i è invertito. Lo standard non definisce come vengono generate le S-box.

Differenze chiave tra DES e GOST

Le principali differenze tra DES e GOST sono le seguenti:

  • DES utilizza una procedura complessa per generare sottochiavi dalle chiavi. In GOST, questa procedura è molto semplice;
  • in DES è una chiave a 56 bit e in GOST è una chiave a 256 bit. Se aggiungiamo le permutazioni segrete delle S-box, la quantità totale di informazioni segrete GOST sarà di circa 610 bit;
  • Gli S-box DES hanno ingressi a 6 bit e uscite a 4 bit e gli S-box GOST hanno ingressi e uscite a 4 bit. In entrambi gli algoritmi vengono utilizzate otto S-box, ma la S-box GOST è uguale a un quarto della S-box DES;
  • DES utilizza una permutazione irregolare chiamata P-box e GOST utilizza uno spostamento a sinistra circolare di 11 bit;
  • DES ha 16 cicli e GOST - 32.

Un attacco di potere a GOST è assolutamente senza speranza. GOST utilizza una chiave a 256 bit e, se vengono prese in considerazione le S-box segrete, la lunghezza della chiave sarà ancora maggiore. GOST sembra essere più robusto per la crittoanalisi differenziale e lineare rispetto a DES. Sebbene le S-box casuali GOST, con qualche scelta, non garantiscano un'elevata forza crittografica rispetto alle S-box DES fisse, la loro segretezza aumenta la resistenza di GOST alla crittoanalisi differenziale e lineare. Inoltre, l'efficacia di questi metodi crittoanalitici dipende dal numero di cicli di trasformazione: più cicli ci sono, più difficile è la crittanalisi. GOST utilizza il doppio dei cicli rispetto a DES, il che, probabilmente, porta all'incoerenza della crittoanalisi differenziale e lineare.

GOST non usa la permutazione dell'estensione che esiste in DES. La rimozione di questa permutazione dal DES lo indebolisce a causa della riduzione degli effetti delle valanghe; è ragionevole presumere che l'assenza di tale operazione in GOST influisca negativamente sulla sua forza crittografica. Dal punto di vista della forza crittografica, l'operazione di addizione aritmetica utilizzata in GOST non è peggiore dell'operazione XOR in DES.

La differenza principale sembra essere l'uso dello spostamento ciclico invece della permutazione in GOST. La permutazione DES aumenta l'effetto valanga. In GOST, una modifica in un bit di ingresso influisce su un blocco S di un ciclo di conversione, che quindi influenza due blocchi S del ciclo successivo, quindi tre blocchi del ciclo successivo, ecc. Occorrono otto cicli prima che la modifica di un bit di input influisca su ogni bit del risultato; in DES ci vogliono solo cinque cicli. Tuttavia, GOST è composto da 32 cicli e DES solo da 16.

Gli sviluppatori di GOST hanno cercato di raggiungere un equilibrio tra forza crittografica ed efficienza. Prendendo come base la costruzione di Feistel, hanno sviluppato un algoritmo crittografico più adatto per l'implementazione del software rispetto a DES. Per aumentare la forza crittografica, è stata introdotta una chiave extra lunga e il numero di cicli è stato raddoppiato. Tuttavia, rimane aperta la questione se gli sforzi degli sviluppatori siano stati coronati dalla creazione di un algoritmo più crittografico rispetto a DES.

Vorobieva E., Lukyanova A.

Sono trascorsi più di 30 anni da quando DES è stato adottato come standard di crittografia negli Stati Uniti. DES è l'algoritmo di crittografia con la storia più ricca e interessante.

La storia della creazione dell'algoritmo

Uno dei crittografi più famosi al mondo, Bruce Schneier, nel suo famoso libro "Applied Cryptography" ha descritto i problemi degli utenti degli strumenti di sicurezza delle informazioni nei primi anni '70. XX secolo (naturalmente viene sugli utenti dall'altra parte della "cortina di ferro"):

P non esisteva uno standard generalmente accettato per la crittografia dei dati, o solo algoritmi ampiamente utilizzati per la protezione delle informazioni, quindi non si trattava di compatibilità tra i vari strumenti di crittografia software o hardware;

Quasi tutti gli strumenti di crittografia erano una "scatola nera" con contenuti piuttosto oscuri: quale algoritmo di crittografia viene utilizzato, quanto è crittograficamente forte, se è implementato correttamente, se è correttamente creato, archiviato, utilizzato chiavi di crittografia, se lo strumento è stato inserito dagli sviluppatori opportunità non documentate e così via, - tutto questo molto Informazioni importanti per la stragrande maggioranza degli acquirenti mezzi crittografici non era disponibile.

Questo problema è seguito dal National Bureau of Standards (NBS) degli Stati Uniti. Di conseguenza, nel 1973, fu annunciato il primo concorso aperto per uno standard di crittografia. NBS era disposta a indagare sugli algoritmi candidati che soddisfano i seguenti criteri per selezionare uno standard:

L'algoritmo deve essere crittograficamente forte;

L'algoritmo deve essere veloce;

La struttura dell'algoritmo dovrebbe essere chiara e chiara;

La forza della crittografia dovrebbe dipendere solo dalla chiave, l'algoritmo stesso non dovrebbe essere segreto;

L'algoritmo dovrebbe essere facilmente applicabile per una varietà di scopi;

L'algoritmo dovrebbe essere facilmente implementato nell'hardware sulla base dell'elemento esistente.

Si presumeva che le organizzazioni o gli specialisti interessati avrebbero inviato alla NBS specifiche dettagliate degli algoritmi sufficienti per la loro implementazione, ovvero senza "punti bianchi". Si presumeva inoltre che l'algoritmo sarebbe stato certificato da NBS per l'uso generale, tutte le restrizioni sui brevetti e sull'esportazione sarebbero state rimosse da esso, per cui tale standard avrebbe dovuto risolvere tutti i problemi di compatibilità degli strumenti di crittografia. Inoltre, NBS ha assunto le funzioni di certificazione degli strumenti di crittografia, ovvero le "scatole nere" sarebbero dovute diventare un ricordo del passato.

In effetti, c'era un solo algoritmo candidato: era l'algoritmo di crittografia Lucifer sviluppato da CMM. (vedi Sezione 3.31). Per due anni, l'algoritmo è stato perfezionato:

In primo luogo, la NBS, insieme alla National Security Agency (NSA, NSA), ha condotto un'analisi approfondita dell'algoritmo, che ha portato a una sua rielaborazione piuttosto significativa;

In secondo luogo, sono stati presi in considerazione i commenti e le critiche di tutte le organizzazioni e gli individui interessati.

Come risultato di uno sforzo collaborativo tra IBM, NBS e NSA, DES è stato pubblicato nel gennaio 1977 come standard statunitense ( ultima versione di questo standard - nel documento) per l'algoritmo di crittografia dei dati (ad eccezione delle informazioni con un alto grado di segretezza). L'algoritmo DES è stato brevettato da YM, ma NBS ha ricevuto, infatti, una licenza d'uso gratuita e illimitata questo algoritmo... Un nome alternativo, ma meno utilizzato per l'algoritmo è DEA (Data Encryption Algorithm).

Principali caratteristiche e struttura dell'algoritmo

DES crittografa le informazioni in blocchi di 64 bit utilizzando una chiave di crittografia a 64 bit che utilizza solo 56 bit (la procedura di espansione della chiave è descritta in dettaglio di seguito).

La crittografia delle informazioni viene eseguita come segue (Fig. 3.56):

1. Sopra un blocco di dati a 64 bit, viene eseguita una permutazione iniziale secondo la tabella. 3.16.

Tabella 3.16

La tabella è interpretata come segue: il valore del bit di ingresso 58 (di seguito, tutti i bit sono numerati da sinistra a destra, a partire da 1) è posto nel bit di uscita 1, il valore del 50° bit - nel bit 2, ecc. .



2. Il risultato dell'operazione precedente è suddiviso in 2 sottoblocchi da 32 bit (da

Riso. 3.56 etichettato un 0 e B 0), su cui vengono eseguiti 16 giri

le seguenti trasformazioni:

Come accennato in precedenza, DES utilizza solo 56 bit di una chiave di crittografia a 64 bit. Ogni ottavo bit viene scartato e non viene in alcun modo utilizzato nell'algoritmo, e l'utilizzo dei bit rimanenti della chiave di cifratura nelle implementazioni dell'algoritmo DES non è in alcun modo limitato dallo standard. La procedura per estrarre 56 bit significativi di una chiave a 64 bit in Fig. 3.59 è designato come E. Oltre all'estrazione, questa procedura esegue anche una permutazione dei bit chiave secondo tabella. 3.19 e 3.20.


Tabella 3.19

Tabella 3.20


Come risultato della permutazione, vengono formati due valori a 28 bit C e D. La tabella 3.19 definisce il campione di bit chiave per C, tabella. 3.20 - per D.

Quindi vengono eseguiti 16 giri di trasformazioni, ognuno dei quali fornisce una delle chiavi dei giri K t. In ogni round della procedura di espansione chiave, vengono eseguite le seguenti azioni:

1. Valori attuali di C e D sposta ciclicamente a sinistra di numero variabile bit P. Per i turni 1, 2, 9 e 16 P= 1, nei restanti round viene eseguito uno shift ciclico a 2 bit.

2.C e D sono concatenati in un valore a 56 bit, a cui viene applicata la permutazione di restringimento CP, risultando in una chiave rotonda K a 48 bit (. La permutazione di restringimento viene eseguita secondo la Tabella 3.21.

Tabella 3.21

Quando si decifrano i dati, è possibile utilizzare la stessa procedura di espansione della chiave, ma applicare le chiavi rotonde in ordine inverso. C'è un'altra opzione: in ogni round della procedura di espansione della chiave, invece di uno spostamento ciclico a sinistra, eseguire uno spostamento ciclico a destra di n bit, dove rc '= 0 per il primo round e' = 1 per i round 2, 9, 16 e n = 2 per i restanti giri... Tale procedura di espansione della chiave fornirà immediatamente le chiavi rotonde necessarie per la decrittazione.

Va detto che la possibilità di eseguire l'espansione della chiave "al volo" (soprattutto se questa possibilità esiste sia durante la crittografia che durante la decrittografia) è considerata un vantaggio degli algoritmi di crittografia, poiché in questo caso l'espansione della chiave può essere eseguita in parallelo con la crittografia e non sprecare memoria nel memorizzare le chiavi di altri giri diversi da quello corrente.

  • Tutorial

Ciao% username%!
Molte persone sanno che lo standard predefinito nel campo crittografia simmetrica per molto tempoè stato considerato l'algoritmo DES. Il primo attacco riuscito a questo algoritmo indistruttibile è stato pubblicato nel 1993, 16 anni dopo che era stato adottato come standard. Il metodo, che l'autore ha chiamato crittoanalisi lineare, in presenza di 247 coppie di testi aperti/cifratori, permette di violare la chiave segreta del cifrario DES in 243 operazioni.
Sotto il taglio, cercherò di riassumere i punti principali di questo attacco.

Crittoanalisi lineare

La crittoanalisi lineare è un tipo speciale di attacco contro cifrari simmetrici, finalizzato al recupero di una chiave di crittografia sconosciuta da un noto messaggi aperti e i relativi testi cifrati.

V caso generale un attacco basato sulla crittoanalisi lineare si riduce alle seguenti condizioni. L'attaccante possiede grande quantità coppie clear/ciphertext ottenute utilizzando la stessa chiave di crittografia K. L'obiettivo dell'attaccante è recuperare parzialmente o completamente la chiave K.

Prima di tutto, l'attaccante esamina il codice e trova il cosiddetto. analogico statistico, cioè. equazione della forma seguente, che soddisfa con probabilità P ≠ 1/2 per una coppia di testo aperta/chiusa arbitraria e una chiave fissa:
P I1 ⊕ P I2 … ⊕ P Ia ⊕ C I1 ⊕ C I2 ⊕… ⊕ C Ib = K I1 ⊕ K I2 ⊕… ⊕ K Ic (1) ,
dove P n, C n, K n sono gli n-esimi bit del testo, del testo cifrato e della chiave.
Dopo aver trovato un'equazione simile, l'attaccante può recuperare 1 bit di informazioni sulla chiave utilizzando il seguente algoritmo

Algoritmo 1
Sia T il numero di testi per cui il membro sinistro dell'equazione (1) è uguale a 0, quindi
Se T> N / 2, dove N è il numero di testi in chiaro noti.
Assumiamo che K I1 ⊕ K I2 ⊕… ⊕ K Ic = 0 (quando P> 1/2) o 1 (quando P<1/2).
Altrimenti
Assumiamo che K I1 ⊕ K I2 ⊕… ⊕ K Ic = 1 (quando P> 1/2) o 0 (quando P<1/2).
Ovviamente, il successo dell'algoritmo dipende direttamente dal valore di | P-1/2 | e sul numero di coppie di testi aperti/chiusi disponibili N. Più la probabilità P di uguaglianza (1) differisce da 1/2, minore è il numero di testi aperti N necessari per l'attacco.

Ci sono due problemi che devono essere affrontati per un attacco di successo:

  • Come trovare un'equazione efficace della forma (1).
  • Come ottenere più di un bit di informazioni su una chiave utilizzando tale equazione.
Consideriamo la soluzione di queste domande con l'esempio del cifrario DES.

DES descrizione

Ma prima, descriviamo brevemente come funziona l'algoritmo. Si è detto abbastanza su DES. Una descrizione completa del cifrario può essere trovata su Wikipedia. Tuttavia, per spiegare ulteriormente l'attacco, abbiamo bisogno di una serie di definizioni che è meglio introdurre in anticipo.

Quindi DES è un cifrario a blocchi basato sulla rete Feistel. Il codice ha una dimensione del blocco di 64 bit e una dimensione della chiave di 56 bit. Consideriamo lo schema di crittografia DES.

Come si vede dalla figura, durante la cifratura, sul testo vengono eseguite le seguenti operazioni:

  1. Permutazione iniziale del bit. In questa fase, i bit del blocco di input vengono mischiati in un ordine specifico.
  2. Successivamente, i bit misti vengono divisi in due metà, che vengono alimentate all'ingresso della funzione Feistel. Per il DES standard, la rete Feistel include 16 round, ma esistono altre varianti dell'algoritmo.
  3. I due blocchi ottenuti nell'ultimo giro di trasformazione vengono combinati e viene eseguita un'altra permutazione sul blocco risultante.

Ad ogni giro della rete Feistel, i 32 bit meno significativi del messaggio passano attraverso la funzione f:

Considera le operazioni eseguite in questa fase:

  1. Il blocco di input passa attraverso la funzione di espansione E, che converte un blocco a 32 bit in un blocco a 48 bit.
  2. Il blocco risultante viene aggiunto con il tasto rotondo K i.
  3. Il risultato del passaggio precedente è suddiviso in 8 blocchi di 6 bit ciascuno.
  4. Ciascuno dei blocchi ricevuti B i passa attraverso la funzione di sostituzione S-Box i, che sostituisce la sequenza di 6 bit con un blocco di 4 bit.
  5. Il blocco a 32 bit risultante passa attraverso la permutazione P e viene restituito come risultato di f.

Di grande interesse, dal punto di vista della crittoanalisi cifrata, per noi sono i blocchi S progettati per nascondere la connessione tra i dati di input e output della funzione f. Per attaccare con successo DES, prima costruiamo controparti statistiche per ciascuna delle S-box e poi le estendiamo all'intero cifrario.

Analisi del blocco S

Ogni S-box accetta una sequenza di 6 bit come input e per ciascuna di tali sequenze viene restituito un valore fisso di 4 bit. Quelli. ci sono solo 64 opzioni per i dati di input e output. Il nostro compito è mostrare la relazione tra i dati di ingresso e di uscita dei blocchi S. Ad esempio, per il terzo blocco S del cifrario DES, il 3° bit della sequenza di input è uguale al 3° bit della sequenza di output in 38 casi su 64. Pertanto, abbiamo trovato il seguente analogo statistico per il terzo S -bloccare:
S 3 (x) = x, che viene eseguito con probabilità P = 38/64.
Entrambi i lati dell'equazione rappresentano 1 bit di informazione. Pertanto, se i lati sinistro e destro fossero indipendenti l'uno dall'altro, l'equazione dovrebbe essere soddisfatta con una probabilità pari a 1/2. Pertanto, abbiamo appena dimostrato la relazione tra gli ingressi e le uscite della 3a S-box dell'algoritmo DES.

Consideriamo come trovare un analogo statistico della S-box nel caso generale.

Per S-box S a, 1 ≤ α ≤ 63 e 1 ≤ β ≤ 15, il valore NS a (α, β) descrive quante volte su 64 possibili bit di ingresso XOR S a sovrapposti ad α bit sono uguali all'uscita XOR bit sovrapposti ai bit β, ovvero .:
dove il simbolo è un AND logico.
I valori α e β, per i quali NS a (α, β) è molto diverso da 32, descrivono l'analogo statistico più efficiente della S-box S a.

L'analogo più efficace è stato trovato nel quinto blocco S del cifrario DES per α = 16 e β = 15 NS 5 (16, 15) = 12. Ciò significa che la seguente equazione è vera: Z = Y ⊕ Y ⊕ Y ⊕ Y, dove Z è la sequenza di input della S-box e Y è la sequenza di output.
Oppure, tenendo conto del fatto che nell'algoritmo DES, prima di entrare nel blocco S, i dati vengono aggiunti modulo 2 con una chiave rotonda, ad es. Z = X ⊕ K si ottiene
X ⊕ Y ⊕ Y ⊕ Y ⊕ Y = K, dove X e Y sono i dati di input e output della funzione f, a prescindere dalle permutazioni.
L'equazione risultante è soddisfatta in tutti i round dell'algoritmo DES con la stessa probabilità P = 12/64.
La tabella seguente fornisce un elenco di efficaci, ad es. aventi la massima deviazione da P = 1/2, analoghi statistici per ciascun blocco s dell'algoritmo DES.

Costruire analoghi statistici per più round DES

Mostriamo ora come combinare analoghi statistici di diversi cicli DES e, di conseguenza, ottenere un analogo statistico per l'intero cifrario.
Per fare ciò, considera una versione a tre round dell'algoritmo:

Applichiamo un efficiente analogo statistico della quinta s-box per calcolare alcuni bit del valore di X (2).
Sappiamo che con probabilità 12/64 la funzione f soddisfa l'uguaglianza X ⊕ Y ⊕ Y ⊕ Y ⊕ Y = K, dove X è il secondo bit di ingresso della quinta S-box, è essenzialmente il 26° bit della sequenza ottenuta dopo l'espansione dei bit di ingresso. Analizzando la funzione di estensione, possiamo stabilire che al posto del 26° bit c'è il 17° bit della sequenza X (1).
Allo stesso modo, Y, ..., Y sono essenzialmente i bit 17, 18, 19 e 20 della sequenza ottenuta prima della permutazione P. Dopo aver esaminato la permutazione P, si ottiene che i bit Y, ..., Y sono in realtà bit S (1), S (1), S (1), S (1).
Il bit della chiave K coinvolto nelle equazioni è il 26° bit della sottochiave del primo giro di K1 e quindi l'analogo statistico assume la seguente forma:
X (1) ⊕ Y (1) ⊕ Y (1) ⊕ Y1 ⊕ Y (1) = K1.
Quindi, X (1) ⊕ K1 = Y (1) ⊕ Y (1) ⊕ Y (1) ⊕ Y (1)(2) con probabilità P = 12/64.
Conoscendo 3, 8, 14, 25 bit della sequenza Y (1), puoi trovare 3, 8, 14, 25 bit della sequenza X (2):
X (2) ⊕ X (2) ⊕ X (2) ⊕ X (2) = PL ⊕ PL ⊕ PL ⊕ PL ⊕ Y (1) ⊕ Y (1) ⊕ Y (1) ⊕ Y (1) o tenendo conto dell'equazione (2)
X (2) ⊕ X (2) ⊕ X (2) ⊕ X (2) = PL ⊕ PL ⊕ PL ⊕ PL ⊕ X (1) ⊕ K1 (3) con una probabilità di 12/64.

Troviamo un'espressione simile usando l'ultimo round. Questa volta abbiamo l'equazione
X (3) ⊕ K3 = Y (3) ⊕ Y (3) ⊕ Y (3) ⊕ Y (3).
Perché
X (2) ⊕ X (2) ⊕ X (2) ⊕ X (2) = CL ⊕ CL ⊕ CL ⊕ CL ⊕ Y (3) ⊕ Y (3) ⊕ Y (3) ⊕ Y (3)
lo capiamo
X (2) ⊕ X (2) ⊕ X (2) ⊕ X (2) = CL ⊕ CL ⊕ CL ⊕ CL ⊕ X (3) ⊕ K3(4) con una probabilità di 12/64.

Uguagliando i membri di destra delle equazioni (3) e (4), otteniamo
CL ⊕ CL ⊕ CL ⊕ CL ⊕ X (3) ⊕ K3 = PL ⊕ PL ⊕ PL ⊕ PL ⊕ X (1) ⊕ K1 con probabilità (12/64) 2 + (1-12 / 64) 2.
Tenendo conto che X (1) = PR e X (3) = CR, otteniamo un analogo statistico
CL ⊕ CR ⊕ PL ⊕ PR = K1 ⊕ K3 (5) ,
che funziona con probabilità (12/64) 2 + (1-12 / 64) 2 = 0,7.
L'analogo statistico sopra descritto può essere rappresentato graficamente come segue (i bit in figura sono numerati da destra a sinistra e partendo da zero):

Tutti i bit sul lato sinistro dell'equazione sono noti all'attaccante, quindi può applicare l'Algoritmo 1 e scoprire il valore di K1 ⊕ K3. Mostriamo come questo analogo statistico può essere utilizzato per violare non 1, ma 12 bit della chiave di crittografia K.

Attacco DES con testo in chiaro noto

Ecco un metodo con cui puoi espandere l'attacco e ottenere 6 bit della sottochiave del primo round in una volta.
Durante la composizione dell'equazione (5), abbiamo tenuto conto del fatto che non conosciamo il valore di F1 (PR, K1). Pertanto, abbiamo usato il suo analogo statistico K1 ⊕ PR.
Restituiamo il valore di F1 (PR, K1) invece dell'espressione K1 ⊕ PR e otteniamo la seguente equazione:
CL ⊕ CR ⊕ PL ⊕ F1 (PR, K1) = K3 (6) che verrà eseguito con una probabilità di 12/64. La probabilità è cambiata da quando abbiamo lasciato solo l'analogo statistico del terzo round, tutti gli altri valori sono fissi.

In precedenza abbiamo già determinato che il valore di F1 (PR, K1) è influenzato dai bit di ingresso della quinta S-box, ovvero i bit della chiave K1 e i bit del blocco PR. Mostriamo come, avendo solo un insieme di testi aperti/chiusi, si possa ripristinare il valore di K1. Per fare ciò, utilizzeremo l'algoritmo 2.

Algoritmo 2
Sia N il numero di coppie di testo aperte/chiuse note prima dell'attacco. Quindi, per aprire la chiave, è necessario eseguire i seguenti passaggi.
Per (i = 0; i<64; i++) do
{
Per (j = 0; j {
se (CL j ⊕ CR j ⊕ PL j ⊕ F1 (PR j, i) = 0) allora
T io = T io +1
}
}
Come probabile successione K1, si assume un tale valore di i per il quale l'espressione |T i -N / 2 | ha un valore massimo.

Dato un numero sufficiente di testi in chiaro conosciuti, molto probabilmente l'algoritmo restituirà i sei bit corretti della prima sottochiave K1 rotonda. Ciò è spiegato dal fatto che se la variabile i non è uguale a K1, allora il valore della funzione F1 (PR j, K) sarà casuale e il numero di equazioni per tale valore di i in cui il lato sinistro è uguale a zero tenderà a N/2. Se la sottochiave viene indovinata correttamente, il lato sinistro sarà uguale al bit fisso K3 con una probabilità di 12/64. Quelli. ci sarà una deviazione significativa da N / 2.

Dopo aver ricevuto 6 bit della sottochiave K1, è possibile aprire allo stesso modo i 6 bit della sottochiave K3. Tutto ciò che serve per questo è sostituire nell'equazione (6) C con P e K1 con K3:
PL ⊕ PR ⊕ CL ⊕ F3 (CR, K3) = K1.
L'algoritmo 2 restituirà il valore corretto K3 perché il processo di decrittazione dell'algoritmo DES è identico al processo di crittografia, solo la sequenza delle chiavi è invertita. Quindi, nel primo round di decrittazione, viene utilizzata la chiave K3 e nell'ultimo round la chiave è K1.

Dopo aver ricevuto 6 bit delle sottochiavi K1 e K3 ciascuna, l'attaccante recupera 12 bit della chiave generale del cifrario K, poiché le chiavi rotonde sono la normale permutazione della chiave K. Il numero di testi in chiaro richiesti per un attacco di successo dipende dalla probabilità di una controparte statistica. Per rompere i 12 bit di una chiave DES a 3 round, sono sufficienti 100 coppie di testo in chiaro/testo in chiaro. Per rompere i 12 bit di una chiave DES a 16 round, sono necessarie circa 244 coppie di testo. I restanti 44 bit della chiave vengono aperti con un normale attacco a forza bruta.

DES è progettato per proteggere dall'accesso non autorizzato a importanti, ma non informazione riservata nel governo degli Stati Uniti e nelle organizzazioni commerciali. L'algoritmo alla base dello standard si diffuse piuttosto rapidamente e già nel 1980 fu approvato dal National Institute of Standards and Technology degli Stati Uniti. Da allora, DES è diventato uno standard non solo di nome ma di fatto. Esistono software e microcomputer specializzati progettati per la crittografia e la decrittografia delle informazioni nelle reti di trasmissione dati.

Il DES è di gran lunga l'algoritmo più diffuso utilizzato nei sistemi di protezione delle informazioni commerciali. Inoltre, l'implementazione dell'algoritmo DES in tali sistemi diventa un segno di buona forma.

I principali vantaggi dell'algoritmo DES:

· Viene utilizzata una sola chiave lunga 56 bit;

· Avendo crittografato un messaggio con un pacchetto, puoi utilizzarne un altro per decifrarlo;

· La relativa semplicità dell'algoritmo garantisce un'elevata velocità di elaborazione delle informazioni;

· Robustezza sufficientemente elevata dell'algoritmo.

DES crittografa blocchi di dati a 64 bit utilizzando una chiave a 56 bit. La decrittazione DES è l'operazione inversa della crittografia e viene eseguita ripetendo le operazioni di crittografia in ordine inverso (nonostante l'apparente ovvietà, ciò non viene sempre eseguito. In seguito considereremo le cifre in cui crittografia e decrittografia vengono eseguite utilizzando algoritmi diversi).

Il processo di crittografia consiste in uno scambio iniziale di bit di un blocco a 64 bit, sedici cicli di crittografia e infine uno scambio di bit inverso (Fig. 1).

Va notato subito che TUTTE le tabelle fornite in questo articolo sono STANDARD e quindi dovrebbero essere incluse nell'implementazione dell'algoritmo invariate. Tutte le permutazioni e i codici nelle tabelle sono stati selezionati dagli sviluppatori in modo tale da rendere il processo di decrittazione il più difficile possibile indovinando la chiave. La struttura dell'algoritmo DES è mostrata in Fig. 2.

Riso. 2.

Si legga dal file il successivo blocco T di 8 byte, che viene trasformato utilizzando la matrice di permutazione iniziale IP (Tabella 1) come segue: il bit 58 del blocco T diventa bit 1, bit 50 - bit 2, ecc., che risulterà in: T (0) = IP (T).

La sequenza di bit T (0) risultante è divisa in due sequenze di 32 bit ciascuna: L (0) - bit di sinistra o più significativi, R (0) - bit di destra o meno significativi.

Tabella 1: matrice di permutazione iniziale IP

58 50 42 34 26 18 10 02

60 52 44 36 28 20 12 04

62 54 46 38 30 22 14 06

64 56 48 40 32 24 16 08

57 49 41 33 25 17 09 01

59 51 43 35 27 19 11 03

61 53 45 37 29 21 13 05

63 55 47 39 31 23 15 07

Quindi viene eseguita la crittografia, composta da 16 iterazioni. Il risultato dell'i-esima iterazione è descritto dalle seguenti formule:

R (i) = L (i-1) xor f (R (i-1), K (i)),

dove xor è l'operazione OR ESCLUSIVO.

La funzione f è chiamata funzione di crittografia. I suoi argomenti sono la sequenza a 32 bit R (i-1), ottenuta alla (i-1) esima iterazione, e la chiave a 48 bit K (i), che è il risultato della trasformazione della chiave a 64 bit K. Di seguito sono descritti in dettaglio la funzione di cifratura e l'algoritmo per ottenere le chiavi K(i).

Alla 16a iterazione si ottengono le sequenze R (16) e L (16) (senza permutazione) che vengono concatenate in una sequenza di 64 bit R (16) L (16).

Quindi le posizioni dei bit di questa sequenza vengono permutate secondo la matrice IP -1 (Tabella 2).

Tabella 2: matrice di permutazione inversa IP-1

40 08 48 16 56 24 64 32

39 07 47 15 55 23 63 31

38 06 46 14 54 22 62 30

37 05 45 13 53 21 61 29

36 04 44 12 52 20 60 28

35 03 43 11 51 19 59 27

34 02 42 10 50 18 58 26

33 01 41 09 49 17 57 25

Le matrici IP -1 e IP sono correlate come segue: il valore del 1° elemento della matrice IP -1 è 40 e il valore del 40° elemento della matrice IP è 1, il valore del 2° l'elemento della matrice IP -1 è 8 e il valore dell'ottavo elemento della matrice IP è uguale a 2 e così via.

Il processo di decrittografia dei dati è inverso al processo di crittografia. Tutti i passaggi devono essere eseguiti in ordine inverso. Ciò significa che i dati decifrati vengono prima riorganizzati secondo la matrice IP-1, quindi vengono eseguite le stesse azioni sulla sequenza di bit R (16) L (16) come nel processo di crittografia, ma in ordine inverso.

Il processo di decrittazione iterativo può essere descritto dalle seguenti formule:

R (i-1) = L (i), i = 1, 2, ..., 16;

L (i-1) = R (i) x o f (L (i), K (i)), i = 1, 2, ..., 16.

Alla 16a iterazione si ottengono le sequenze L (0) e R (0), che vengono concatenate in una sequenza di 64 bit L (0) R (0).

Le posizioni dei bit di questa sequenza vengono quindi riorganizzate secondo la matrice IP. Il risultato di tale permutazione è la sequenza originale a 64 bit.

Consideriamo ora la funzione di crittografia f (R (i-1), K (i)). È mostrato schematicamente in Fig. 3.


Riso. 3.

Per calcolare il valore della funzione f, vengono utilizzate le seguenti funzioni di matrice:

E - espansione di una sequenza da 32 bit a 48 bit,

S1, S2, ..., S8 - convertire un blocco a 6 bit in uno a 4 bit,

P - permutazione di bit in una sequenza di 32 bit.

La funzione di espansione E è definita nella tabella. 3. Secondo questa tabella, i primi 3 bit di E (R (i-1)) sono i bit 32, 1 e 2 e gli ultimi sono 31, 32 e 1.

Tabella 3: Funzione di espansione E

32 01 02 03 04 05

04 05 06 07 08 09

08 09 10 11 12 13

12 13 14 15 16 17

16 17 18 19 20 21

20 21 22 23 24 25

24 25 26 27 28 29

28 29 30 31 32 01

Il risultato della funzione E (R (i-1)) è una sequenza di 48 bit, che viene aggiunta modulo 2 (operazione xor) con una chiave K (i) di 48 bit. La sequenza di 48 bit risultante è suddivisa in otto blocchi di 6 bit B (1) B (2) B (3) B (4) B (5) B (6) B (7) B (8). Questo è:

E (R (i-1)) xo ​​K (i) = B (1) B (2)… B (8).

Le funzioni S1, S2, ..., S8 sono determinate dalla tabella. 4.

Tabella 4

A tavola. 4. Richiede ulteriori chiarimenti. Lascia che il blocco a 6 bit B (j) = b1b2b3b4b5b6 entri nell'ingresso della funzione di matrice Sj, quindi il numero a due bit b1b6 indica il numero di riga della matrice e b2b3b4b5 è il numero di colonna. Il risultato di Sj (B (j)) è un elemento a 4 bit situato all'intersezione della riga e della colonna specificate.

Ad esempio, B (1) = 011011. Quindi S1 ​​(B (1)) si trova all'intersezione della riga 1 e della colonna 13. La colonna 13 della riga 1 è impostata su 5. Quindi S1 ​​(011011) = 0101.

Applicando l'operazione di selezione a ciascuno dei blocchi di 6 bit B (1), B (2), ..., B (8), si ottiene una sequenza di 32 bit S1 (B (1)) S2 (B (2 )) S3 (B ( 3))… S8 (B (8)).

Infine, per ottenere il risultato della funzione di crittografia, i bit di questa sequenza devono essere scambiati. Per questo, viene utilizzata la funzione di permutazione P (Tabella 5). Nella sequenza di input, i bit vengono scambiati in modo che il bit 16 diventi il ​​bit 1, il bit 7 diventi il ​​bit 2 e così via.

Tabella 5: Funzione di trasferimento P

In questo modo,

f (R (i-1), K (i)) = P (S1 (B (1)),… S8 (B (8)))

Per completare la descrizione dell'algoritmo di crittografia dei dati, resta da fornire un algoritmo per ottenere chiavi a 48 bit K (i), i = 1 ... 16. Ad ogni iterazione, viene utilizzato un nuovo valore di chiave K (i), che viene calcolato dalla chiave iniziale K. K è un blocco di 64 bit con otto bit di parità situati nelle posizioni 8,16,24,32,40,48, 56, 64.

Per rimuovere i bit di controllo e permutare il resto, viene utilizzata la funzione G della preparazione della chiave iniziale (Tabella 6).

Tabella 6

Matrice di preparazione della chiave iniziale G

57 49 41 33 25 17 09

01 58 50 42 34 26 18

10 02 59 51 43 35 27

19 11 03 60 52 44 36

63 55 47 39 31 23 15

07 62 54 46 38 30 22

14 06 61 53 45 37 29

21 13 05 28 20 12 04

Il risultato della trasformazione G (K) è diviso in due blocchi di 28 bit C (0) e D (0) e C (0) sarà composto dai bit 57, 49, ..., 44, 36 della chiave K e D (0) saranno costituiti dai bit 63, 55, ..., 12, 4 della chiave K. Dopo aver definito C (0) e D (0), C (i) e D (i), i = 1 ... 16, sono determinati in modo ricorsivo. Per fare ciò, applicare uno spostamento ciclico a sinistra di uno o due bit, a seconda del numero di iterazione, come mostrato nella tabella. 7.

Tabella 7. Tabella dei turni per il calcolo della chiave

Numero di iterazione

Maiusc (bit)

Il valore risultante viene nuovamente "miscelato" secondo la matrice H (Tabella 8).

Tabella 8: Matrice chiave di post-elaborazione H

14 17 11 24 01 05

03 28 15 06 21 10

23 19 12 04 26 08

16 07 27 20 13 02

41 52 31 37 47 55

30 40 51 45 33 48

44 49 39 56 34 53

46 42 50 36 29 32

La chiave K (i) sarà costituita dai bit 14, 17, ..., 29, 32 della sequenza C (i) D (i). In questo modo:

K (i) = H (C (i) D (i))

Lo schema a blocchi dell'algoritmo di calcolo chiave è mostrato in Fig. 4.

Riso. 4.

Il ripristino del testo originale viene eseguito utilizzando questo algoritmo, ma prima si utilizza la chiave K (15), quindi K (14) e così via. Ora dovrebbe esserti chiaro perché l'autore consiglia vivamente di utilizzare le matrici fornite. Se inizi a essere ipocrita, devi aver ricevuto un codice molto segreto, ma tu stesso non puoi rivelarlo!

Annotazione: Uno dei più famosi sistemi crittografici a chiave privata è DES - Data Encryption Standard. Questo sistema è stato il primo a ricevere lo stato di uno standard statale nel campo della crittografia dei dati. E sebbene il vecchio standard americano DES abbia perso il suo status ufficiale, questo algoritmo merita ancora attenzione quando si studia la crittografia. Inoltre, questa lezione spiega cos'è il doppio DES, un attacco meet-in-the-middle e come risolverlo. La stessa lezione discute brevemente il nuovo standard statunitense per i cifrari a blocchi: l'algoritmo Rijndael.

Lo scopo della lezione: Introdurre lo studente alle basi dell'algoritmo di crittografia DES.

Informazioni di base

Uno dei sistemi crittografici a chiave privata più conosciuti è DES - Standard di crittografia dei dati... Questo sistema è stato il primo a ricevere lo stato di uno standard statale nel campo della crittografia dei dati. È stato sviluppato da specialisti dell'azienda IBM ed è entrato in vigore negli Stati Uniti nel 1977. Algoritmo DES ampiamente utilizzato per l'archiviazione e il trasferimento di dati tra vari sistemi informatici; nei sistemi postali, nei sistemi di disegno elettronico e nello scambio elettronico informazioni commerciali... Standard DES implementato sia software che hardware. Imprese di diversi paesi hanno lanciato una produzione di massa di dispositivi digitali utilizzando DES per crittografare i dati. Tutti i dispositivi hanno superato la certificazione obbligatoria per la conformità allo standard.

Nonostante il fatto che per qualche tempo questo sistema non abbia avuto lo status di standard statale, è ancora ampiamente utilizzato e merita attenzione quando si studiano i cifrari a blocchi di chiavi private.

Lunghezza chiave nell'algoritmo DESè di 56 bit. È con questo fatto che la principale controversia riguardante la capacità DES resistere a vari attacchi. Come sai, qualsiasi cifrario a blocchi con una chiave privata può essere violato provando tutte le possibili combinazioni di tasti. Con una lunghezza della chiave di 56 bit, sono possibili 2 56 chiavi diverse. Se un computer enumera 1.000.000 di chiavi in ​​un secondo (che è approssimativamente uguale a 2 20), allora ci vorranno 2 36 secondi per scorrere tutte le 2 56 chiavi, o poco più di duemila anni, il che, ovviamente, è inaccettabile per intrusi.

Tuttavia, sono possibili sistemi di elaborazione più costosi e più veloci di Personal computer... Ad esempio, se è possibile combinare un milione di processori per il calcolo parallelo, il tempo massimo di selezione della chiave si riduce a circa 18 ore. Questo tempo non è troppo lungo e un crittoanalista dotato di una tecnica così costosa potrebbe eseguire un attacco crittografato con DES in un ragionevole lasso di tempo.

Allo stesso tempo, si può notare che il sistema DES può essere utilizzato in applicazioni di piccole e medie dimensioni per crittografare dati di scarso valore. Per la crittografia di dati di importanza nazionale o sistema di valore commerciale significativo DES attualmente, ovviamente, non dovrebbe essere utilizzato. Nel 2001, dopo un concorso appositamente annunciato negli Stati Uniti, è stato adottato un nuovo standard per un cifrario a blocchi, chiamato AES (Standard di crittografia avanzata), che si basava sulla cifra Rijndael sviluppato da specialisti belgi. Questo cifrario è discusso alla fine della lezione.

Impostazioni principali DES: dimensione blocco 64 bit, lunghezza chiave 56 bit, numero di round - 16. DESè una classica rete Feistel a due rami. L'algoritmo converte un blocco di dati di input a 64 bit in un blocco di output a 64 bit in diversi round. Standard DESè costruito sull'uso combinato di permutazione, sostituzione e gioco d'azzardo. I dati crittografati devono essere in formato binario.

Crittografia

Struttura generale DESè mostrato in Fig. 4.1. Il processo di crittografia per ogni blocco di dati originali a 64 bit può essere suddiviso in tre fasi:

  1. preparazione iniziale del blocco dati;
  2. 16 giri del "ciclo principale";
  3. elaborazione finale del blocco dati.

Nella prima fase, permutazione iniziale Un blocco di testo sorgente a 64 bit, durante il quale i bit vengono riordinati in un certo modo.

Nella fase successiva (principale), il blocco è diviso in due parti (rami), 32 bit ciascuna. Il ramo di destra viene trasformato usando una funzione F e la corrispondente chiave parziale ottenuto dalla chiave di crittografia principale utilizzando uno speciale algoritmo di conversione della chiave. Quindi i dati vengono scambiati tra i rami sinistro e destro del blocco. Questo viene ripetuto 16 volte in un ciclo.

Infine, nella terza fase, viene riorganizzato il risultato ottenuto dopo sedici passaggi del ciclo principale. Questa permutazione è l'opposto della permutazione iniziale.


Riso. 4.1.

Consideriamo più in dettaglio tutte le fasi della trasformazione crittografica secondo lo standard DES.

Nella prima fase, il blocco di dati originali a 64 bit viene sottoposto a una permutazione iniziale. In letteratura, questa operazione è talvolta chiamata "sbiancamento". Durante la permutazione iniziale, i bit del blocco dati vengono riordinati in un certo modo. Questa operazione conferisce una certa "casualità" al messaggio originale, riducendo la possibilità di utilizzare la crittoanalisi con metodi statistici.

Contemporaneamente alla permutazione iniziale del blocco dati, viene eseguita una permutazione iniziale di 56 bit della chiave. Dalla fig. 4.1. si vede che in ciascuno dei turni viene utilizzata la corrispondente chiave parziale K i a 48 bit. Le chiavi K i si ottengono secondo un certo algoritmo, utilizzando più volte ciascuno dei bit della chiave iniziale. In ogni round, la chiave a 56 bit viene divisa in due metà a 28 bit. Quindi le metà vengono spostate a sinistra di uno o due bit, a seconda del numero tondo. Dopo lo spostamento, 48 bit su 56 vengono selezionati in un certo modo. Poiché questo non solo seleziona un sottoinsieme dei bit, ma ne cambia anche l'ordine, questa operazione è chiamata "permutazione con compressione". Il suo risultato è un insieme di 48 bit. In media, ogni bit della chiave originale a 56 bit viene utilizzato in 14 sottochiavi su 16, sebbene non tutti i bit vengano utilizzati lo stesso numero di volte.

Successivamente, viene eseguito il ciclo di trasformazione principale, organizzato secondo la rete Feistel e composto da 16 cicli identici. In questo caso in ogni round (Fig. 4.2) si ottiene un valore intermedio a 64 bit, che viene poi elaborato nel round successivo.


Riso. 4.2.

I rami sinistro e destro di ciascun valore intermedio vengono trattati come valori separati a 32 bit, indicati con L e R.

Innanzitutto, il lato destro del blocco R i viene espanso a 48 bit utilizzando una tabella che definisce la permutazione più l'estensione a 16 bit. Questa operazione ridimensiona la metà destra in modo che corrisponda alla dimensione della chiave per l'operazione XOR. Inoltre, a causa di questa operazione, la dipendenza di tutti i bit del risultato dai bit dei dati originali e della chiave aumenta più velocemente (questo è chiamato "effetto valanga"). Più l'effetto valanga si manifesta quando si utilizza l'uno o l'altro algoritmo di crittografia, meglio è.

Dopo aver eseguito la permutazione dell'espansione, il valore a 48 bit risultante viene sottoposto a XOR con la sottochiave a 48 bit K i. Quindi il valore a 48 bit risultante viene inviato all'ingresso del blocco di sostituzione S (dall'inglese. Sostituzione - sostituzione), il risultato che è un valore a 32 bit. La sostituzione viene eseguita in otto box di sostituzione o otto S-box. Quando fare questo DES su carta sembra piuttosto complicato, per non parlare della sua implementazione software! Sviluppare un programma che funzioni correttamente e in modo ottimale completamente in conformità con DES, probabilmente, solo i programmatori esperti possono farlo. Alcune difficoltà sorgono quando implementazione del software, per esempio, una permutazione iniziale o una permutazione con espansione. Queste difficoltà sono dovute al fatto che originariamente era prevista l'attuazione DES solo hardware. Tutte le operazioni utilizzate nello standard sono facilmente eseguite dalle unità hardware e non ci sono difficoltà con l'implementazione. Tuttavia, qualche tempo dopo la pubblicazione dello standard, gli sviluppatori di software hanno deciso di non farsi da parte e iniziare anche a creare sistemi di crittografia. Ulteriore DES implementato sia in hardware che software.

Principali articoli correlati