Come configurare smartphone e PC. Portale informativo
  • casa
  • In contatto con
  • Quale tipo di elaborazione può essere classificato come crittografia. I metodi più semplici per crittografare il testo

Quale tipo di elaborazione può essere classificato come crittografia. I metodi più semplici per crittografare il testo

La crittografia dei dati è estremamente importante per proteggere la privacy. In questo articolo parlerò di vari tipi e metodi di crittografia utilizzati oggi per proteggere i dati.

Lo sapevate?
In epoca romana, Giulio Cesare usava la crittografia per rendere le lettere e i messaggi illeggibili al nemico. Ha giocato ruolo importante come tattica militare, specialmente durante le guerre.

Poiché le possibilità di Internet continuano a crescere, sempre più aziende vengono reclutate online. Tra questi, i più importanti sono Internet banking, pagamento online, e-mail, scambio di messaggi privati ​​e ufficiali, ecc., che prevedono lo scambio di dati e informazioni riservate. Se questi dati cadono nelle mani sbagliate, possono danneggiare non solo il singolo utente, ma l'intero sistema in linea Attività commerciale.

Per evitare che ciò accada, sono state messe in atto alcune misure di sicurezza online per proteggere la trasmissione dei dati personali. I principali tra questi sono i processi di crittografia e decrittografia dei dati, noti come crittografia. Esistono tre metodi di crittografia principali utilizzati nella maggior parte dei sistemi oggi: crittografia hashing, simmetrica e asimmetrica. IN righe seguenti, tratterò ciascuno di questi tipi di crittografia in modo più dettagliato.

Tipi di crittografia

Crittografia simmetrica

Con crittografia simmetrica, dati leggibili normali, noti come testo normale, è codificato (crittografato) in modo che diventi illeggibile. Questa codifica dei dati viene eseguita utilizzando una chiave. Una volta che i dati sono stati crittografati, possono essere trasferiti in modo sicuro al ricevitore. Al destinatario, i dati crittografati vengono decodificati utilizzando la stessa chiave utilizzata per la codifica.

Quindi è chiaro che la chiave è la parte più importante crittografia simmetrica. Dovrebbe essere nascosto agli estranei, poiché chiunque abbia accesso ad esso sarà in grado di decrittografare i dati privati. Questo è il motivo per cui questo tipo di crittografia è noto anche come "chiave segreta".

IN sistemi moderni ah, la chiave è solitamente una stringa di dati che proviene da una password complessa o da un'origine completamente casuale. Viene inserito nella crittografia simmetrica Software, che lo usa per proteggere l'input. La codifica dei dati si ottiene utilizzando algoritmo simmetrico crittografia come Data Encryption Standard (DES), Advanced Encryption Standard (AES) o International Data Encryption Algorithm (IDEA).

Restrizioni

L'anello più debole in questo tipo di crittografia è la sicurezza della chiave, sia in termini di archiviazione che di trasmissione dell'utente autenticato. Se un hacker è in grado di mettere le mani su questa chiave, può facilmente decrittografare i dati crittografati, distruggendo l'intero punto della crittografia.

Un altro inconveniente è dovuto al fatto che il software che elabora i dati non può funzionare con dati crittografati. Pertanto, per poter utilizzare questo software, i dati devono essere prima decodificati. Se il software stesso è compromesso, un utente malintenzionato può facilmente ottenere i dati.

Crittografia asimmetrica

Una chiave di crittografia asimmetrica funziona in modo simile chiave simmetrica, in quanto utilizza una chiave per la codifica messaggi trasmessi. Tuttavia, invece di utilizzare la stessa chiave, ne utilizza una completamente diversa per decrittografare questo messaggio.

La chiave utilizzata per la crittografia è disponibile per tutti gli utenti della rete. In quanto tale è nota come chiave "pubblica". D'altra parte, la chiave utilizzata per la decrittazione è tenuta segreta ed è pensata per essere utilizzata privatamente dall'utente stesso. Quindi, è conosciuta come la chiave "privata". La crittografia asimmetrica è anche nota come crittografia a chiave pubblica.

Poiché, con questo metodo, la chiave segreta necessaria per decifrare il messaggio non deve essere trasmessa ogni volta, e di solito è nota solo all'utente (destinatario), la probabilità che un hacker riesca a decifrare il messaggio è molto inferiore.

Diffie-Hellman e RSA sono esempi di algoritmi che utilizzano la crittografia a chiave pubblica.

Restrizioni

Molti hacker usano "man in the middle" come forma di attacco per aggirare questo tipo di crittografia. Nella crittografia asimmetrica, ti viene fornita una chiave pubblica a cui è abituato scambio sicuro dati con un'altra persona o servizio. Tuttavia, gli hacker utilizzano reti di inganno per indurti a comunicare con loro mentre ti fanno credere di essere su una linea sicura.

Per comprendere meglio questo tipo di hacking, si considerino le due parti interagenti Sasha e Natasha, e l'hacker Sergei con l'intenzione di intercettare la loro conversazione. Innanzitutto, Sasha invia un messaggio tramite la rete destinato a Natasha, chiedendo la sua chiave pubblica. Sergei intercetta questo messaggio e ottiene la chiave pubblica associata a lei e la usa per crittografare e inviare un messaggio falso a Natasha contenente la sua chiave pubblica invece di quella di Sasha.

Natasha, pensando che questo messaggio provenga da Sasha, ora lo crittografa con la chiave pubblica di Sergey e lo rimanda indietro. Questo messaggio è stato nuovamente intercettato da Sergey, decrittografato, modificato (se lo si desidera), crittografato di nuovo utilizzando la chiave pubblica che Sasha aveva originariamente inviato e rispedito a Sasha.

Pertanto, quando Sasha riceve questo messaggio, è stato portato a credere che provenisse da Natasha e continua a non essere a conoscenza del gioco scorretto.

Hashing

La tecnica di hashing utilizza un algoritmo noto come funzione hash per generare linea speciale dai dati forniti, noto come hash. Questo hash ha le seguenti proprietà:

  • gli stessi dati producono sempre lo stesso hash.
  • non è possibile generare dati grezzi da un solo hash.
  • Non è pratico provare diverse combinazioni di input per provare a generare lo stesso hash.

Pertanto, la principale differenza tra l'hashing e le altre due forme di crittografia dei dati è che una volta che i dati sono crittografati (hash), non possono essere recuperati nella loro forma originale (decrittografati). Questo fatto assicura che anche se un hacker mette le mani sull'hash, gli sarà inutile, poiché non sarà in grado di decifrare il contenuto del messaggio.

Message Digest 5 (MD5) e Secure Hashing Algorithm (SHA) sono due algoritmi di hashing ampiamente utilizzati.

Restrizioni

Come accennato in precedenza, è quasi impossibile decrittografare i dati da un determinato hash. Tuttavia, questo è vero solo se viene implementato un hashing forte. Nel caso di un'implementazione debole della tecnica di hashing, utilizzando risorse sufficienti e attacchi di forza bruta, un hacker persistente può trovare dati che corrispondono all'hash.

Combinazione di metodi di crittografia

Come discusso in precedenza, ciascuno di questi tre metodi di crittografia presenta alcuni svantaggi. Tuttavia, quando viene utilizzata una combinazione di questi metodi, formano un affidabile e altamente sistema efficace crittografia.

Molto spesso, le tecniche di chiave privata e pubblica vengono combinate e utilizzate insieme. Il metodo della chiave segreta consente una decrittazione rapida, mentre il metodo della chiave pubblica offre una maggiore sicurezza e altro ancora strada conveniente per trasferire la chiave segreta. Questa combinazione di metodi è nota come "busta digitale". Programma di crittografia E-mail PGP si basa sulla tecnica della "busta digitale".

L'hashing trova impiego come mezzo per controllare la forza di una password. Se il sistema memorizza l'hash della password invece della password stessa, sarà più sicuro, perché anche se l'hash cade nelle mani di un hacker, non sarà in grado di capirlo (leggerlo). Durante la verifica, il sistema controllerà l'hash password in entrata e vedrà se il risultato corrisponde a quanto memorizzato. Quindi la password effettiva sarà visibile solo in brevi momenti quando deve essere cambiato o controllato, il che ridurrà notevolmente la probabilità che cada nelle mani sbagliate.

L'hashing viene utilizzato anche per autenticare i dati con una chiave segreta. L'hash viene generato utilizzando i dati e questa chiave. Pertanto, sono visibili solo i dati e l'hash e la chiave stessa non viene trasmessa. In questo modo, se vengono apportate modifiche ai dati o all'hash, verranno facilmente rilevate.

In conclusione, queste tecniche possono essere utilizzate per codificare in modo efficiente i dati in un formato illeggibile che può garantire che rimangano sicuri. La maggior parte dei sistemi moderni utilizza in genere una combinazione di questi metodi di crittografia insieme a una forte implementazione di algoritmi per migliorare la sicurezza. Oltre alla sicurezza, questi sistemi ne forniscono anche molti benefici addizionali quali la verifica dell'identità dell'utente e la garanzia che i dati ricevuti non possano essere manomessi.

Sergey Panasenko,
Capo del dipartimento di sviluppo software dell'azienda Ankad,
[email protetta]

Concetti basilari

Il processo di conversione dei dati aperti in dati crittografati e viceversa è solitamente chiamato crittografia e le due componenti di questo processo sono chiamate rispettivamente crittografia e decrittografia. Matematicamente, questa trasformazione è rappresentata dalle seguenti dipendenze che descrivono le azioni con le informazioni iniziali:

С = Ek1(M)

M" = Dk2(C),

dove M (messaggio) - informazioni aperte(spesso indicato nella letteratura sulla sicurezza delle informazioni come " testo di partenza");
C (testo cifrato) - il testo cifrato (o crittogramma) ottenuto come risultato della crittografia;
E (crittografia) - funzione di crittografia che esegue trasformazioni crittografiche sul testo sorgente;
k1 (chiave) - parametro di funzione E, chiamato chiave di crittografia;
M" - informazioni ottenute a seguito della decrittazione;
D (decrittografia) - funzione di decrittazione che esegue trasformazioni crittografiche inverse alla crittografia sul testo cifrato;
k2 è la chiave utilizzata per decrittografare le informazioni.

Il concetto di "chiave" nello standard GOST 28147-89 (algoritmo di crittografia simmetrica) è definito come segue: "uno stato segreto specifico di alcuni parametri dell'algoritmo di trasformazione crittografica, che assicura la scelta di una trasformazione dalla totalità di tutte le possibili per questo algoritmo trasformazioni". In altre parole, la chiave è un elemento unico con il quale è possibile modificare i risultati dell'algoritmo di crittografia: lo stesso testo sorgente verrà crittografato in modo diverso quando si utilizzano chiavi diverse.

Affinché il risultato della decrittazione corrisponda al messaggio originale (cioè, per M "= M), è necessario esecuzione simultanea due condizioni. In primo luogo, la funzione di decrittazione D deve corrispondere alla funzione di crittografia E. In secondo luogo, la chiave di decrittazione k2 deve corrispondere alla chiave di crittografia k1.

Se per la crittografia è stato utilizzato un algoritmo di crittografia crittograficamente forte, in assenza della chiave corretta k2, è impossibile ottenere M" = M. La forza crittografica è la caratteristica principale degli algoritmi di crittografia e indica, prima di tutto, il grado di difficoltà nell'ottenere il testo originale da quello cifrato senza la chiave k2.

Gli algoritmi di crittografia possono essere suddivisi in due categorie: crittografia simmetrica e asimmetrica. Per i primi, il rapporto tra chiavi di crittografia e decrittografia è definito come k1 = k2 = k (cioè, le funzioni E e D utilizzano la stessa chiave di crittografia). Con la crittografia asimmetrica, la chiave di crittografia k1 viene calcolata dalla chiave k2 in modo tale che trasformazione inversa impossibile, ad esempio, dalla formula k1 = ak2 mod p (a e p sono i parametri dell'algoritmo utilizzato).

Crittografia simmetrica

Gli algoritmi di crittografia simmetrica risalgono all'antichità: era questo metodo per nascondere le informazioni che veniva utilizzato dall'imperatore romano Gaio Giulio Cesare nel I secolo a.C. e., e l'algoritmo da lui inventato è noto come il "crittosistema Cesare".

Attualmente, l'algoritmo di crittografia simmetrica più noto è DES (Data Encryption Standard), sviluppato nel 1977. Fino a poco tempo fa era lo "standard USA", poiché il governo di questo paese raccomandava di utilizzarlo per vari sistemi crittografia dei dati. Nonostante il fatto che DES fosse originariamente previsto per essere utilizzato per non più di 10-15 anni, i tentativi di sostituirlo sono iniziati solo nel 1997.

Non discuteremo in dettaglio di DES (in quasi tutti i libri dell'elenco materiali aggiuntivi mangialo descrizione dettagliata), ma passiamo ad algoritmi di crittografia più moderni. Vale solo la pena notare che il motivo principale per la modifica dello standard di crittografia è la sua forza crittografica relativamente debole, il motivo è che la lunghezza della chiave DES è solo 56 bit significativi. È noto che qualsiasi algoritmo resistente alle criptovalute può essere violato ordinando tutte le possibili opzioni per le chiavi di crittografia (il cosiddetto metodo della forza bruta - attacco della forza bruta). È facile calcolare che un cluster di 1 milione di processori, ciascuno dei quali calcola 1 milione di chiavi al secondo, controllerà 256 varianti di chiavi DES in quasi 20 ore E poiché tale potenza di calcolo è abbastanza reale per gli standard odierni, è chiaro che un La chiave a 56 bit è troppo corta E Algoritmo DES deve essere sostituito con uno più potente.

Oggi vengono sempre più utilizzati due moderni algoritmi di crittografia resistenti alle criptovalute: lo standard domestico GOST 28147-89 e il nuovo standard crittografico statunitense - AES (Advanced Encryption Standard).

Standard GOST 28147-89

L'algoritmo definito da GOST 28147-89 (Fig. 1) ha una lunghezza della chiave di crittografia di 256 bit. Crittografa le informazioni in blocchi di 64 bit (tali algoritmi sono chiamati algoritmi di blocco), che vengono poi divisi in due sottoblocchi di 32 bit (N1 e N2). Il sottoblocco N1 viene elaborato in un certo modo, dopodiché il suo valore viene sommato al valore del sottoblocco N2 (l'addizione viene eseguita modulo 2, cioè viene applicata operazione logica XOR - "esclusivo o"), quindi i sottoblocchi vengono scambiati. Questa trasformazione viene eseguito un certo numero di volte ("round"): 16 o 32 a seconda della modalità di funzionamento dell'algoritmo. In ogni round vengono eseguite due operazioni.

Il primo è la digitazione. Il contenuto del sottoblocco N1 viene aggiunto modulo 2 alla parte a 32 bit della chiave Kx. Chiave completa la crittografia è rappresentata come una concatenazione di sottochiavi a 32 bit: K0, K1, K2, K3, K4, K5, K6, K7. Una di queste sottochiavi viene utilizzata nel processo di crittografia, a seconda del numero tondo e della modalità operativa dell'algoritmo.

La seconda operazione è una sostituzione della tabella. Dopo la digitazione, il sottoblocco N1 viene suddiviso in 8 parti di 4 bit, il cui valore viene sostituito secondo la tabella di sostituzione per questa parte del sottoblocco. Il sottoblocco viene quindi ruotato a sinistra bit a bit di 11 bit.

Sostituzioni tabelle(Box di sostituzione - S-box) sono spesso utilizzati nei moderni algoritmi di crittografia, quindi vale la pena spiegare come è organizzata tale operazione. I valori di uscita dei blocchi vengono scritti nella tabella. Un blocco dati di una certa dimensione (nel nostro caso, 4 bit) ha una propria rappresentazione numerica, che determina il numero del valore di uscita. Ad esempio, se la S-box ha la forma 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 e un blocco a 4 bit "0100 " è arrivato all'ingresso (valore 4), quindi, secondo la tabella, il valore di uscita sarà 15, ovvero "1111" (0 a 4, 1 a 11, 2 a 2 ...).

L'algoritmo definito da GOST 28147-89 prevede quattro modalità di funzionamento: sostituzione semplice, ridimensionamento, ridimensionamento con risposta e generazione di prefissi di imitazione. Usano la stessa trasformazione di crittografia sopra descritta, ma poiché lo scopo delle modalità è diverso, questa trasformazione viene eseguita in ciascuna di esse in modo diverso.

In modalità semplice sostituzione per crittografare ogni blocco di informazioni a 64 bit, vengono eseguiti i 32 round descritti sopra. In questo caso, le sottochiavi a 32 bit vengono utilizzate nella sequenza seguente:

K0, K1, K2, K3, K4, K5, K6, K7, K0, K1, ecc. - nei round da 1 a 24;

K7, K6, K5, K4, K3, K2, K1, K0 - nei round da 25 a 32.

Decrittografia in questa modalità eseguita esattamente allo stesso modo, ma con una sequenza di sottochiavi leggermente diversa:

K0, K1, K2, K3, K4, K5, K6, K7 - nei round da 1 a 8;

K7, K6, K5, K4, K3, K2, K1, K0, K7, K6, ecc. - nei round da 9 a 32.

Tutti i blocchi sono crittografati indipendentemente l'uno dall'altro, ovvero il risultato della crittografia di ciascun blocco dipende solo dal suo contenuto (il blocco di origine corrispondente). Se sono presenti più blocchi identici del testo originale (normale), anche i blocchi di testo cifrato corrispondenti saranno gli stessi, il che fornisce un'ulteriore informazioni utili per un crittoanalista che cerca di infrangere la cifra. Pertanto, questa modalità viene utilizzata principalmente per crittografare le chiavi di crittografia stesse (spesso vengono implementati schemi a più chiavi, in cui, per una serie di motivi, le chiavi vengono crittografate l'una sull'altra). Per crittografare le informazioni stesse, sono previste altre due modalità operative: gamma e gamma con feedback.

IN modalità gamma ogni blocco testo in chiaro viene aggiunto bit per bit modulo 2 al blocco gamma di cifratura di 64 bit. Il cifrario gamma è una sequenza speciale, che si ottiene a seguito di alcune operazioni con i registri N1 e N2 (vedi Fig. 1).

1. Nei registri N1 e N2 viene scritto il loro riempimento iniziale: un valore a 64 bit chiamato messaggio di sincronizzazione.

2. Il contenuto dei registri N1 e N2 è crittografato (in questo caso- sincronizzazione messaggi) nella modalità di sostituzione semplice.

3. Il contenuto del registro N1 viene aggiunto modulo (232 - 1) con la costante C1 = 224 + 216 + 28 + 24 e il risultato dell'addizione viene scritto nel registro N1.

4. Si somma il contenuto del registro N2 modulo 232 con la costante C2 = 224 + 216 + 28 + 1, e si scrive il risultato dell'addizione nel registro N2.

5. Il contenuto dei registri N1 e N2 viene emesso come un blocco gamma di cifratura a 64 bit (in questo caso, N1 e N2 formano il primo blocco gamma).

Se è necessario il blocco gamma successivo (ovvero, è necessario che la crittografia o la decrittografia continuino), tornare al passaggio 2.

Per decifrare si produce gamma allo stesso modo, e quindi il testo cifrato e i bit gamma vengono nuovamente XOR. Essendo questa operazione reversibile, nel caso di gamma correttamente sviluppata si ottiene il testo originale (tabella).

Crittografia e decrittografia in modalità gamma

Per sviluppare l'intervallo di cifratura richiesto per la decrittografia, l'utente che decrittografa il crittogramma deve avere la stessa chiave e lo stesso valore del messaggio di sincronizzazione che sono stati utilizzati per crittografare le informazioni. In caso contrario, non sarai in grado di ottenere il testo originale da quello crittografato.

Nella maggior parte delle implementazioni dell'algoritmo GOST 28147-89, il messaggio di sincronizzazione non è segreto, ma esistono sistemi in cui il messaggio di sincronizzazione è lo stesso elemento segreto della chiave di crittografia. Per tali sistemi, la lunghezza effettiva della chiave dell'algoritmo (256 bit) viene aumentata di altri 64 bit del messaggio di sincronizzazione segreto, che può anche essere considerato un elemento chiave.

Nella modalità feedback gamma, per riempire i registri N1 e N2, a partire dal 2° blocco, non viene utilizzato il precedente blocco gamma, ma il risultato della crittografia del precedente blocco di testo in chiaro (Fig. 2). Il primo blocco in questa modalità viene generato esattamente allo stesso modo del precedente.

Riso. 2. Sviluppo del cifrario gamma in modalità gamma con feedback.

Considerando la modalità generazione di prefissi di imitazione, è necessario definire il concetto di soggetto di generazione. Il prefisso di imitazione è crittografico somma di controllo, calcolata utilizzando la chiave di crittografia e progettata per verificare l'integrità dei messaggi. Quando si genera un prefisso, vengono eseguite le seguenti operazioni: il primo blocco a 64 bit dell'array di informazioni, per il quale viene calcolato il prefisso, viene scritto nei registri N1 e N2 e crittografato nella modalità di sostituzione semplice ridotta (i primi 16 vengono eseguiti turni su 32). Il risultato ottenuto viene sommato modulo 2 con il successivo blocco di informazioni, salvando il risultato in N1 e N2.

Il ciclo si ripete fino a ultimo blocco informazione. Il contenuto a 64 bit dei registri N1 e N2, o parte di esso, risultante da queste trasformazioni, è chiamato prefisso di imitazione. La dimensione del prefisso viene scelta in base all'affidabilità richiesta dei messaggi: con una lunghezza del prefisso r bit, la probabilità che un cambiamento nel messaggio passi inosservato è 2-r Molto spesso, un prefisso a 32 bit è usato, cioè metà del contenuto dei registri Questo è sufficiente, poiché, come ogni checksum, il prefisso di imitazione ha principalmente lo scopo di proteggere dalla distorsione accidentale delle informazioni. Per proteggere dalla modifica intenzionale dei dati, altro metodi crittografici- Innanzitutto una firma digitale elettronica.

Quando si scambiano informazioni, il prefisso di imitazione funge da sorta di mezzi aggiuntivi controllo. Viene calcolato per il testo in chiaro quando alcune informazioni vengono crittografate e vengono inviate insieme al testo cifrato. Dopo la decrittazione, viene calcolato un nuovo valore del prefisso di imitazione, che viene confrontato con quello inviato. Se i valori non corrispondono, significa che il testo cifrato è stato distorto durante la trasmissione o sono state utilizzate chiavi errate durante la decrittazione. Il prefisso di imitazione è particolarmente utile per verificare la corretta decrittazione delle informazioni chiave quando si utilizzano schemi multi-chiave.

L'algoritmo GOST 28147-89 è considerato un algoritmo molto potente: al momento non ne sono stati proposti altri per la sua divulgazione. metodi efficaci rispetto al metodo della "forza bruta" di cui sopra. La sua elevata sicurezza è ottenuta principalmente grazie alla grande lunghezza della chiave - 256 bit. Quando si utilizza un messaggio di sincronizzazione segreto, la lunghezza effettiva della chiave viene aumentata a 320 bit e il segreto della tabella di sostituzione aggiunge bit aggiuntivi. Inoltre, la forza crittografica dipende dal numero di cicli di trasformazioni, che, secondo GOST 28147-89, dovrebbe essere 32 ( pieno effetto la dispersione dei dati di input si ottiene dopo 8 round).

Norma AES

A differenza dell'algoritmo GOST 28147-89, che a lungo rimasto segreto, standard americano Crittografia AES, progettato per sostituire DES, è stato selezionato in un concorso pubblico, in cui tutte le organizzazioni e gli individui interessati potevano studiare e commentare gli algoritmi dei candidati.

Un concorso per sostituire DES è stato bandito nel 1997 dal National Institute of Standards and Technology degli Stati Uniti (NIST - National Institute of Standards and Technology). Al concorso sono stati presentati 15 algoritmi candidati, sviluppati sia da note organizzazioni nel campo della crittografia (RSA Security, Counterpane, ecc.) sia da privati. I risultati del concorso sono stati annunciati nell'ottobre 2000: il vincitore è stato l'algoritmo Rijndael, sviluppato da due crittografi belgi, Vincent Rijmen e Joan Daemen.

L'algoritmo Rijndael è diverso dalla maggior parte dei noti algoritmi di crittografia simmetrica, la cui struttura è chiamata "rete Feistel" ed è simile al GOST 28147-89 russo. Una caratteristica della rete Feistel è che il valore di input è diviso in due o più sottoblocchi, alcuni dei quali vengono elaborati secondo una certa legge ad ogni giro, e quindi sovrapposti a sottoblocchi non elaborati (vedi Fig. 1).

A differenza dello standard di crittografia domestico, l'algoritmo Rijndael rappresenta un blocco di dati sotto forma di un array di byte bidimensionale di dimensioni 4X4, 4X6 o 4X8 (diversi dimensioni fisse blocco di informazioni crittografato). Tutte le operazioni vengono eseguite su singoli byte dell'array, nonché su colonne e righe indipendenti.

L'algoritmo di Rijndael esegue quattro trasformazioni: BS (ByteSub) - sostituzione della tabella di ogni byte dell'array (Fig. 3); SR (ShiftRow) - spostamento della riga dell'array (Fig. 4). Con questa operazione, la prima riga rimane invariata e il resto viene spostato ciclicamente byte per byte a sinistra di un numero fisso di byte, a seconda della dimensione dell'array. Ad esempio, per un array 4X4, le righe 2, 3 e 4 vengono spostate rispettivamente di 1, 2 e 3 byte. Poi arriva MC (MixColumn) - un'operazione su colonne di array indipendenti (Fig. 5), quando ogni colonna certa regolaè moltiplicato per una matrice fissa c(x). E infine, AK (AddRoundKey) - l'aggiunta di una chiave. Ciascun bit dell'array viene sommato modulo 2 al bit corrispondente della chiave tonda, che, a sua volta, viene calcolato in un certo modo dalla chiave di cifratura (Fig. 6).


Riso. 3. Operazione BS.

Riso. 4. Operazione SR.

Riso. 5. Operazione MC.

Il numero di cicli di crittografia (R) nell'algoritmo Rijndael è variabile (10, 12 o 14 round) e dipende dalla dimensione del blocco e dalla chiave di crittografia (ci sono anche diverse dimensioni fisse per la chiave).

La decrittografia viene eseguita utilizzando le seguenti operazioni inverse. La tabella viene invertita e viene eseguita una sostituzione della tabella sulla tabella inversa (relativa a quella utilizzata nella crittografia). L'operazione inversa a SR è uno spostamento circolare di righe a destra, non a sinistra. L'operazione inversa per MC è la moltiplicazione secondo le stesse regole per un'altra matrice d(x) che soddisfa la condizione: c(x) * d(x) = 1. L'addizione della chiave AK è l'inversa di se stessa, poiché essa utilizza solo l'operazione XOR. Questi operazioni inverse vengono utilizzati per la decrittazione nell'ordine inverso a quello utilizzato per la crittografia.

Rijndael è diventato il nuovo standard di crittografia dei dati grazie a una serie di vantaggi rispetto ad altri algoritmi. Innanzitutto fornisce ad alta velocità crittografia su tutte le piattaforme: sia nell'implementazione software che hardware. È incomparabilmente distinto migliori opportunità parallelizzazione dei calcoli rispetto ad altri algoritmi presentati per il concorso. Inoltre, i requisiti di risorse per il suo funzionamento sono minimi, il che è importante quando viene utilizzato in dispositivi con capacità di elaborazione limitate.

Lo svantaggio dell'algoritmo può essere considerato solo il suo schema intrinseco non tradizionale. Il fatto è che le proprietà degli algoritmi basati sulla rete Feistel sono ben studiate e Rijndael, al contrario, può contenere vulnerabilità nascoste che possono essere scoperte solo dopo che è trascorso del tempo dall'inizio della sua ampia distribuzione.

Crittografia asimmetrica

Gli algoritmi di crittografia asimmetrica, come già notato, utilizzano due chiavi: k1 è la chiave di crittografia, o pubblica, e k2 è la chiave di decrittazione, o segreto. chiave pubblica calcolato dal segreto: k1 = f(k2).

Gli algoritmi di crittografia asimmetrica si basano sull'uso di funzioni unidirezionali. Secondo la definizione, una funzione y = f(x) è unidirezionale se: è facile da calcolare per tutti opzioni x e per la maggior parte valori possibili y è abbastanza difficile calcolare un tale valore di x per cui y = f(x).

Un esempio di funzione unidirezionale è la moltiplicazione di due numeri grandi: N = P*Q. Di per sé, una tale moltiplicazione - semplice operazione. Tuttavia, la funzione inversa (scomposizione di N in due grandi fattori), chiamata fattorizzazione, secondo le moderne stime temporali, è piuttosto complicata. problema di matematica. Ad esempio, la fattorizzazione di N con dimensione 664 bit a P ? Q richiederà circa 1023 operazioni e per calcolare x indietro per l'esponente modulo y = ax mod p con noti a, p e y (con le stesse dimensioni di a e p) deve eseguire circa 1026 operazioni. L'ultimo di questi esempi è chiamato Discrete Logarithm Problem (DLP) e tali funzioni sono spesso utilizzate negli algoritmi di crittografia asimmetrica, nonché negli algoritmi utilizzati per creare una firma digitale elettronica.

Un'altra importante classe di funzioni utilizzate nella crittografia asimmetrica sono le funzioni backdoor unidirezionali. La loro definizione afferma che una funzione è unidirezionale con una backdoor se è unidirezionale ed è possibile calcolare in modo efficiente funzione inversa x = f-1(y), cioè se è noto il "passaggio segreto" (un certo numero segreto, in applicazione di algoritmi di crittografia asimmetrica - il valore della chiave segreta).

Le funzioni backdoor unidirezionali sono utilizzate nell'algoritmo di crittografia asimmetrica RSA ampiamente utilizzato.

Algoritmo RSA

Sviluppato nel 1978 da tre autori (Rivest, Shamir, Adleman), ha preso il nome dalle prime lettere dei nomi degli sviluppatori. L'affidabilità dell'algoritmo si basa sulla difficoltà di fattorizzare grandi numeri e calcolare logaritmi discreti. Parametro principale Algoritmo RSA- modulo del sistema N, che viene utilizzato per tutti i calcoli nel sistema, e N = P*Q (P e Q sono segreti casuali semplici grandi numeri, solitamente della stessa dimensione).

Viene scelta la chiave segreta k2 a caso e deve soddisfare le seguenti condizioni:

1

dove gcd è il massimo comun divisore, cioè k1 deve essere coprima con il valore della funzione di Eulero F(N), quest'ultima uguale al numero di interi positivi compresi tra 1 e N che sono coprimi con N, ed è calcolato come F(N) = (P - 1)*(Q - 1).

La chiave pubblica k1 è calcolata dalla relazione (k2*k1) = 1 mod F(N), e per questo viene utilizzato l'algoritmo Euclide generalizzato (un algoritmo per il calcolo del massimo comun divisore). Il blocco dati M viene crittografato utilizzando l'algoritmo RSA come segue: C=M [alla potenza k1] mod n. Si noti che poiché in un vero crittosistema che utilizza RSA il numero k1 è molto grande (attualmente la sua dimensione può arrivare fino a 2048 bit), il calcolo diretto di M [alla potenza k1] irreale. Per ottenerlo si usa una combinazione di quadrature multiple di M con moltiplicazione dei risultati.

L'inversione di questa funzione a grandi dimensioni non è fattibile; in altre parole, è impossibile trovare M da C, N e k1 noti. Avendo però una chiave segreta k2, con l'ausilio di semplici trasformazioni, si può calcolare M = Ck2 mod N. Ovviamente, oltre alla chiave segreta stessa, è necessario garantire la segretezza dei parametri P e Q. Se un l'attaccante ottiene i loro valori, quindi può anche calcolare la chiave segreta k2.

Qual è la migliore crittografia?

Il principale svantaggio della crittografia simmetrica è la necessità di trasferire le chiavi "di mano in mano". Questa lacuna è molto grave, poiché rende impossibile l'utilizzo della crittografia simmetrica in sistemi con un numero illimitato di partecipanti. Tuttavia, sotto altri aspetti, la crittografia simmetrica presenta alcuni vantaggi che sono chiaramente visibili sullo sfondo dei gravi svantaggi della crittografia asimmetrica.

Il primo di questi è la bassa velocità di esecuzione delle operazioni di crittografia e decrittografia, a causa della presenza di operazioni ad alta intensità di risorse. Un altro inconveniente è "teorico": matematicamente, la forza crittografica degli algoritmi di crittografia asimmetrica non è stata dimostrata. Ciò è dovuto principalmente al problema del logaritmo discreto - finora non è stato possibile dimostrare che la sua soluzione in un tempo accettabile sia impossibile. Difficoltà inutili sono create anche dalla necessità di proteggere le chiavi pubbliche dalla sostituzione: sostituendo la chiave pubblica di un utente legale, un utente malintenzionato potrà crittografare un messaggio importante utilizzando la sua chiave pubblica e successivamente decrittografarlo facilmente con la sua chiave segreta.

Tuttavia, queste carenze non impediscono l'uso diffuso di algoritmi di crittografia asimmetrici. Oggi esistono crittosistemi che supportano la certificazione a chiave pubblica, oltre a combinare algoritmi di crittografia simmetrica e asimmetrica. Ma questo è un argomento per un articolo separato.

Ulteriori fonti di informazione

Per quei lettori che non sono pigramente interessati alla crittografia, l'autore consiglia di espandere i propri orizzonti con l'aiuto dei seguenti libri.

  1. Brassard J. "Crittologia moderna".
  2. Petrov A. A. "Sicurezza informatica: metodi crittografici di protezione".
  3. Romanets Yu. V., Timofeev PA, Shangin VF "Sicurezza delle informazioni nei moderni sistemi informatici".
  4. Sokolov AV, Shangin VF "Protezione delle informazioni nelle reti e nei sistemi aziendali distribuiti".

Una descrizione completa degli algoritmi di crittografia può essere trovata nei seguenti documenti:

  1. GOST 28147-89. Sistema di elaborazione delle informazioni. Protezione crittografica. Algoritmo di trasformazione crittografica. - M.: Gosstandart dell'URSS, 1989.
  2. Algoritmo AES: http://www.nist.gov/ae.
  3. Algoritmo RSA: http://www.rsasecurity.com/rsalabs/pkcs/pkcs-1.

MINISTERO DELL'ISTRUZIONE E DELLE SCIENZE DELLA FEDERAZIONE RUSSA ISTITUTO EDUCATIVO STATALE FEDERALE DI ISTRUZIONE SUPERIORE PROFESSIONALE

"UNIVERSITÀ FEDERALE DEL SUD"

ISTITUTO TECNOLOGICO DELL'UNIVERSITÀ FEDERALE DEL SUD DI TAGANROG Facoltà di Sicurezza dell'Informazione Dipartimento di BIT Saggio sull'argomento

"Crittografia e tipi di crittografia"

Arte. gr. I-21

Completato da: V. I. Mishchenko Verificato da: E. A. Maro Taganrog - 2012

introduzione

1. Storia della crittografia

1.1 L'emergere dei cifrari

1.2 Evoluzione della crittografia

2. Crittoanalisi

2.1 Caratteristiche messaggi

2.2 Proprietà del testo naturale

2.3 Criteri per la determinazione della naturalezza

3. Crittografia simmetrica

4. Crittografia asimmetrica

Conclusione

Introduzione Nell'ambito della pratica formativa, ho scelto l'argomento "Crittografia e tipi di crittografia". Nel corso del lavoro sono state considerate questioni come la storia dell'emergere della crittografia, la sua evoluzione e i tipi di crittografia. Ho condotto una revisione degli algoritmi di crittografia esistenti, a seguito della quale si può notare che l'umanità non si ferma e trova costantemente vari modi per archiviare e proteggere le informazioni.

La questione della protezione di informazioni preziose modificandole, escludendo la lettura da parte di una persona sconosciuta, ha preoccupato le migliori menti umane fin dall'antichità. La storia della crittografia ha quasi la stessa età della storia del linguaggio umano. Inoltre, la scrittura stessa era originariamente un sistema crittografico, poiché nelle società antiche solo pochi eletti possedevano tale conoscenza. I manoscritti sacri di vari stati antichi ne sono un esempio.

Da quando la scrittura si è diffusa, la crittografia è diventata una scienza completamente indipendente. I primi sistemi crittografici si trovano già all'inizio della nostra era. Ad esempio, Giulio Cesare nella sua corrispondenza personale usò un codice sistematico, che in seguito prese il suo nome.
Grave sviluppo dei sistemi di crittografia ricevuti nell'era della prima e della seconda guerra mondiale. Dal primo dopoguerra ad oggi, l'avvento dei computer moderni ha accelerato la creazione e il miglioramento dei metodi di crittografia.
Perché la questione dell'utilizzo dei metodi di crittografia nei sistemi informatici (CS) è diventata particolarmente rilevante nel nostro tempo?
In primo luogo, si è ampliata la portata delle reti informatiche, come il World Wide Web, con l'aiuto delle quali vengono trasmesse enormi quantità di informazioni di natura statale, militare, commerciale e personale, rendendo impossibile l'accesso a terzi.
In secondo luogo, l'emergere di moderni computer super potenti, tecnologie avanzate di calcolo di rete e neurale consente di screditare i sistemi di crittografia che ieri erano considerati completamente sicuri.

1. La storia della crittografia Con l'avvento stesso della civiltà umana, c'era la necessità di trasferire le informazioni alle persone giuste in modo che non fossero rese note agli estranei. All'inizio, le persone usavano solo voce e gesti per trasmettere messaggi.

Con l'avvento della scrittura, la questione della garanzia della segretezza e dell'autenticità dei messaggi trasmessi è diventata particolarmente importante. Di conseguenza, è stato dopo l'invenzione della scrittura che è nata l'arte della crittografia, un metodo di "scrittura segreta" - un insieme di tecniche progettate per trasmettere segretamente messaggi registrati da un insider all'altro.

L'umanità ha escogitato un numero considerevole di tecnologie di scrittura segrete, in particolare l'inchiostro simpatico che scompare subito dopo aver scritto il testo o è invisibile dall'inizio, "dissolvendo" informazioni preziose in un testo di grandi dimensioni con un significato completamente "estraneo", preparare messaggi usando strani simboli incomprensibili.

La crittografia è nata proprio come materia pratica che studia e sviluppa metodi per crittografare le informazioni, ovvero durante il trasferimento dei messaggi non nasconde il fatto stesso della trasmissione, ma rende il testo del messaggio illeggibile da parte di persone non iniziate. A tal fine, il testo del messaggio deve essere scritto in modo tale che nessuno, tranne i destinatari stessi, possa conoscerne il contenuto.

L'emergere dei primi computer a metà del 20 ° secolo ha cambiato notevolmente la situazione: la crittografia pratica ha fatto un enorme balzo in avanti nel suo sviluppo e un termine come "crittografia" si è notevolmente discostato dal suo significato originale: "crittografia", "segreto scrivere". Oggi questa materia combina metodi di protezione delle informazioni di natura completamente eterogenea, basati sulla trasformazione dei dati secondo algoritmi segreti, inclusi algoritmi che utilizzano vari parametri segreti.

1.1 L'emergere dei cifrari Alcuni dei sistemi crittografici ci sono pervenuti fin dall'antichità. Molto probabilmente sono nati contemporaneamente alla scrittura nel 4° millennio a.C. I metodi di corrispondenza segreta furono inventati indipendentemente in molti stati antichi, come Egitto, Grecia e Giappone, ma la composizione dettagliata della crittografia in essi è ora sconosciuta. I crittogrammi si trovano anche nell'antichità, anche se a causa della scrittura ideografica usata nel mondo antico sotto forma di pittogrammi stilizzati, erano piuttosto primitivi. I Sumeri, a quanto pare, usarono l'arte della crittografia.

Gli archeologi hanno trovato un certo numero di tavolette cuneiformi di argilla, in cui il primo ingresso era spesso imbrattato da uno spesso strato di argilla, su cui era realizzato il secondo ingresso. L'aspetto di tali strane tavolette potrebbe essere giustificato sia dalla crittografia che dallo smaltimento. Poiché il numero di caratteri della scrittura ideografica ammontava a più di mille, memorizzarli era un compito piuttosto difficile: non c'era tempo per la crittografia. Tuttavia, i codici che apparivano contemporaneamente ai dizionari erano molto conosciuti a Babilonia e nello stato assiro e gli antichi egizi usavano almeno tre sistemi di crittografia. Con l'origine della scrittura fonetica, la scrittura è diventata subito più semplice. Nell'antico alfabeto semitico del II millennio aC c'erano solo circa 30 caratteri. Indicavano consonanti, così come alcuni suoni vocalici e sillabe. La semplificazione della scrittura ha causato lo sviluppo della crittografia e della crittografia.

Anche nei libri della Bibbia possiamo trovare esempi di cifrari, anche se quasi nessuno li nota. Nel libro del profeta Geremia (22,23) leggiamo: "... e il re di Sessach berrà dopo di loro". Questo re e un tale regno non esistevano: è davvero un errore dell'autore? No, solo a volte i sacri manoscritti ebraici venivano crittografati con la solita sostituzione. Invece della prima lettera dell'alfabeto, hanno scritto l'ultima, invece della seconda, la penultima e così via. Questo vecchio metodo di crittografia è chiamato atbash. Leggendo la parola SESSAH con essa, abbiamo la parola BABILONIA nella lingua originale, e l'intero significato del manoscritto biblico può essere compreso anche da coloro che non credono ciecamente nella verità della Scrittura.

1.2 L'evoluzione della crittografia Lo sviluppo della crittografia nel ventesimo secolo è stato molto rapido, ma piuttosto irregolare. Osservando la storia del suo sviluppo come un'area specifica della vita umana, si possono distinguere tre periodi fondamentali.

Elementare. Gestito solo con cifrari manuali. Cominciò in tempi antichi e terminò solo alla fine degli anni Trenta del XX secolo. La crittografia in questo periodo ha superato un lungo percorso dall'arte magica dei sacerdoti preistorici alla professione applicata quotidiana dei dipendenti delle agenzie segrete.

Il periodo successivo può essere notato dalla creazione e introduzione diffusa nella pratica di dispositivi meccanici, poi elettromeccanici e, alla fine, elettronici della crittografia, la creazione di intere reti di comunicazione crittografata.

La nascita del terzo periodo nello sviluppo della crittografia è generalmente considerata il 1976, in cui i matematici americani Diffie e Hellman hanno inventato un modo fondamentalmente nuovo di organizzare la comunicazione crittografata che non richiede la preventiva fornitura di chiavi segrete agli abbonati - il così chiamata crittografia a chiave pubblica. Di conseguenza, iniziarono ad apparire sistemi di crittografia basati sul metodo inventato negli anni '40 da Shannon. Suggerì di progettare un cifrario in modo tale che decifrarlo equivalesse a risolvere un complesso problema matematico che richiedeva calcoli che avrebbero superato le capacità dei moderni sistemi informatici. Questo periodo di sviluppo della crittografia è caratterizzato dall'emergere di sistemi di comunicazione crittografati assolutamente automatizzati, in cui ogni utente possiede la propria password personale per la verifica, la memorizza, ad esempio, su una carta magnetica o altrove e la presenta quando autorizza nel sistema e tutto il resto avviene automaticamente.

2. Crittoanalisi C'è un enorme divario tra i metodi di crittografia manuale e del computer. I codici a mano sono molto vari e possono essere i più sorprendenti. inoltre, i messaggi che crittografano sono piuttosto concisi e brevi. Pertanto, il loro hacking è molto più efficiente da parte degli esseri umani che delle macchine. I cifrari informatici sono più stereotipati, matematicamente molto complessi e hanno lo scopo di crittografare messaggi di lunghezza abbastanza considerevole. Naturalmente, non vale nemmeno la pena di districarli manualmente. Tuttavia, anche in questo ambito, i crittoanalisti svolgono un ruolo di primo piano, essendo i generali dell'attacco crittografico, nonostante la battaglia stessa sia combattuta solo da hardware e software. La sottovalutazione di questo fenomeno portò al fiasco dei cifrari cifrari Enigma durante la seconda guerra mondiale.

Quasi sempre si conosce il tipo di crittografia e la lingua del messaggio. Potrebbero essere suggeriti dall'alfabeto e dalle caratteristiche statistiche della crittografia. Tuttavia, spesso le informazioni sulla lingua e sul tipo di cifratura vengono apprese da fonti sotto copertura. Questa situazione è un po' come irrompere in una cassaforte: se lo “scassinatore” non conosce in anticipo il design della cassaforte incrinata, cosa che sembra piuttosto improbabile, lo determina comunque rapidamente dal suo aspetto, il logo dell'azienda. A questo proposito, è sconosciuta solo la chiave che deve essere svelata. La difficoltà sta nel fatto che, così come non tutte le malattie si curano con la stessa medicina, e per ognuna di esse esistono rimedi specifici, così determinati tipi di cifrature possono essere decifrati solo con i propri metodi.

2.1 Caratteristiche dei messaggi I messaggi, non importa quanto complessi, possono essere considerati come qualsiasi ordine di caratteri. Questi caratteri devono essere presi da un set prefissato, ad esempio dall'alfabeto russo o da una tavolozza di colori (rosso, giallo, verde). Nei messaggi possono apparire caratteri diversi a intervalli diversi. A questo proposito, la quantità di informazioni trasmesse da simboli diversi può essere diversa. Nel senso proposto da Shannon, la quantità di informazioni è determinata dal valore medio del numero di possibili domande con risposte SI e NO per prevedere il carattere successivo nel messaggio. Se i caratteri nel testo sono disposti in una sequenza indipendente l'uno dall'altro, la quantità media di informazioni in tale messaggio per carattere è uguale a:

dove Pi è la frequenza di manifestazione del segno di i e Ld è il logaritmo binario. Vanno notati tre fenomeni di questa distribuzione di informazioni.

È completamente indipendente dalla semantica, dal significato del messaggio, e può essere utilizzato anche in una situazione in cui il significato esatto non è del tutto chiaro. Implica che la probabilità di manifestazione dei simboli non dipende dalla loro storia precedente.

Il sistema simbolico in cui viene trasmesso il messaggio è noto in anticipo, ovvero la lingua, il metodo di crittografia.

In quali unità viene misurato il valore del volume di informazioni secondo Shannon? La risposta più probabile a questa domanda può essere data dal teorema di crittografia, che afferma che qualsiasi messaggio può essere crittografato con i simboli 0 e 1 in modo tale che la quantità di informazioni ricevute sia arbitrariamente vicina a H dall'alto. il teorema ci permette di indicare l'unità di informazione - questo è un po'.

2.2 Proprietà del testo naturale Ora visualizziamo un modo per applicare la conoscenza delle caratteristiche del testo naturale alle esigenze di crittografia. È necessario determinare da un pezzo di testo di cosa si tratta: un messaggio che trasporta un carico semantico o solo una sequenza di caratteri casuali. Un certo numero di metodi di crittografia devono essere violati su un computer mediante l'enumerazione banale delle chiavi e provare manualmente più di mille parti di testo al giorno è semplicemente impossibile e la velocità di enumerazione è molto bassa. a questo proposito, è necessario implementare tale compito con l'aiuto di un computer.

Supponiamo di dover ordinare circa un miliardo di chiavi su un computer alla velocità di mille chiavi al secondo. Ci vorranno circa dieci giorni. In questo caso, corriamo il rischio di cadere in due estremi. Se stiamo troppo attenti nelle nostre valutazioni, alcuni dei frammenti privi di significato del testo verranno identificati come messaggi e restituiti alla persona. Tale errore è più comunemente indicato come "falso allarme" o errore di tipo I.

Con un volume di tali errori di oltre mille al giorno, una persona seduta al computer si stancherà e potrebbe in seguito controllare distrattamente frammenti di testo. Ciò significa che non è possibile commettere più di un errore di questo tipo ogni 100.000 controlli. All'altro estremo, se ci si avvicina al controllo con disattenzione, è del tutto possibile perdere un testo significativo e alla fine di un'enumerazione completa dovrà essere ripetuto di nuovo. Per non rischiare di dover ripetere l'intero corpus di lavori, errori del secondo tipo, detti anche "frammenti saltati", possono essere commessi solo in un caso su 100 o 1000.

2.3 Criteri per determinare la naturalezza Il criterio più semplice che può venire in mente a prima vista è l'uso dell'alfabeto del frammento di messaggio. Dato che in teoria si possono trovare solo segni di punteggiatura, numeri, lettere russe maiuscole e minuscole, non più della metà dell'insieme della tabella dei codici ASCII può essere trovata nel testo di un frammento di messaggio.

Ciò significa che se un computer incontra un carattere non valido in un frammento di testo, può sicuramente dichiarare che non è significativo: errori del secondo tipo sono praticamente esclusi con un canale di comunicazione ben funzionante.

Per ridurre la possibilità teorica di "falsi allarmi" al valore indicato nell'articolo precedente, è necessario che un frammento di messaggio sia composto da almeno ventitré caratteri. La questione diventa più complicata se il codice carattere utilizzato non è ridondante, come la rappresentazione ASCII del testo russo, ma contiene esattamente tanti caratteri quanti sono nell'alfabeto.

In questo caso, dovremo introdurre una stima delle possibilità teoriche di colpire i caratteri nel testo. Per garantire le possibilità di errori del primo e del secondo tipo che abbiamo accettato, quando si stima la massima verosimiglianza possibile, è necessario analizzare già circa 100 caratteri e l'analisi della possibilità di incontrare bigram riduce solo leggermente questo valore .

Pertanto, è praticamente impossibile decodificare in modo inequivocabile brevi frammenti di messaggi con un valore chiave elevato, poiché la comparsa di frammenti di testo casuali potrebbe coincidere con frasi significative. Lo stesso problema deve essere risolto nel controllo di qualità della crittografia. In questo caso, però, la possibilità di un falso allarme può essere parecchio aumentata, portandolo a non più di un millesimo, con la stessa possibilità di ignorare un frammento di messaggio. Questo ci permetterà di limitarci a controllare testi con solo venti o trenta caratteri.

3. Crittografia simmetrica I crittosistemi simmetrici (anche crittografia simmetrica, cifrari simmetrici) sono un metodo di crittografia in cui la stessa chiave crittografica viene utilizzata per la crittografia e la decrittografia. Prima dell'invenzione dello schema di crittografia asimmetrica, l'unico metodo esistente era la crittografia simmetrica. La chiave dell'algoritmo deve essere tenuta segreta da entrambe le parti. L'algoritmo di crittografia viene scelto dalle parti prima dello scambio dei messaggi.

Attualmente, le cifre simmetriche sono:

Cifre a blocchi. Elaborano le informazioni in blocchi di una certa lunghezza (di solito 64, 128 bit), applicando una chiave al blocco nell'ordine prescritto, di norma, diversi cicli di miscelazione e sostituzione, chiamati round. Il risultato della ripetizione dei round è un effetto valanga: una progressiva perdita di corrispondenza dei bit tra blocchi di dati chiari e crittografati.

Cifre a flusso in cui la crittografia viene eseguita su ogni bit o byte del testo di origine (normale) utilizzando gamma. Un cifrario a flusso può essere facilmente creato sulla base di un cifrario a blocchi (ad esempio, GOST 28 147-89 in modalità gamma) lanciato in una modalità speciale.

La maggior parte dei cifrari simmetrici utilizza una combinazione complessa di un gran numero di sostituzioni e permutazioni. Molte di queste crittografie vengono eseguite in diversi (a volte fino a 80) passaggi, utilizzando una "pass key" su ciascun passaggio. L'insieme delle "chiavi pass" per tutti i pass è chiamato "scheda chiave". Di norma, viene creato dalla chiave eseguendo determinate operazioni su di essa, comprese permutazioni e sostituzioni.

Un modo tipico per costruire algoritmi di crittografia simmetrica è la rete Feistel. L'algoritmo costruisce uno schema di crittografia basato sulla funzione F (D, K), dove D è una porzione di dati grande la metà del blocco di crittografia e K è la "chiave di accesso" per questo passaggio. Non è necessario che una funzione sia invertibile: la sua funzione inversa potrebbe non essere nota. I vantaggi della rete Feistel sono la quasi totale coincidenza della decrittazione con la crittografia (l'unica differenza è l'ordine inverso delle “pass keys” nella schedula), che facilita enormemente l'implementazione dell'hardware.

L'operazione di permutazione mescola i bit del messaggio secondo una certa legge. Nelle implementazioni hardware, è banalmente implementato come entanglement di conduttori. Sono le operazioni di permutazione che consentono di ottenere l'“effetto valanga”. L'operazione di permutazione è lineare -- f (a) xor f (b) == f (a xor b)

Le operazioni di sostituzione vengono eseguite sostituendo il valore di una parte del messaggio (spesso 4, 6 o 8 bit) con un altro numero standard, codificato nell'algoritmo facendo riferimento a un array costante. L'operazione di sostituzione introduce la non linearità nell'algoritmo.

Spesso, la forza di un algoritmo, soprattutto contro la crittoanalisi differenziale, dipende dalla scelta dei valori nelle tabelle di sostituzione (S-box). Come minimo, è considerato indesiderabile avere elementi fissi S (x) = x, così come l'assenza dell'influenza di alcuni bit del byte di input su alcuni bit del risultato, ovvero casi in cui il bit del risultato è lo stesso per tutte le coppie di parole di ingresso che differiscono solo per questo bit.

Figura 1. Tipi di chiavi

4. Cifratura asimmetrica Un sistema crittografico a chiave pubblica (o cifratura asimmetrica, cifratura asimmetrica) è un sistema di cifratura e/o firma digitale elettronica in cui la chiave pubblica viene trasmessa su un sistema aperto (cioè non protetto, accessibile per l'osservazione) canale e viene utilizzato per verificare la firma digitale e per crittografare il messaggio. Una chiave segreta viene utilizzata per generare un EDS e per decrittografare un messaggio. I sistemi crittografici a chiave pubblica sono attualmente ampiamente utilizzati in vari protocolli di rete, in particolare nei protocolli TLS e nel suo predecessore SSL (sottostante HTTPS), in SSH.

L'idea di crittografia a chiave pubblica è strettamente correlata all'idea di funzioni unidirezionali, cioè funzioni tali che è abbastanza facile trovare un valore da un valore noto, mentre è impossibile determinarlo in un tempo ragionevole.

Ma la stessa funzione unidirezionale è inutile nell'applicazione: può crittografare un messaggio, ma non può decrittografarlo. Pertanto, la crittografia a chiave pubblica utilizza funzioni unidirezionali con una scappatoia. Una scappatoia è un segreto che aiuta a decifrare. Cioè, ne esiste uno che, conoscendo e, può essere calcolato. Ad esempio, se si smonta un orologio in più parti, è molto difficile rimontare un orologio che funzioni di nuovo.

L'esempio seguente aiuta a comprendere le idee ei metodi della crittografia a chiave pubblica, ovvero la memorizzazione delle password in un computer. Ogni utente sulla rete ha una password diversa. All'ingresso indica il nome e inserisce una password segreta. Ma se memorizzi la password su un disco del computer, qualcuno può leggerla (è particolarmente facile per l'amministratore di questo computer farlo) e ottenere l'accesso alle informazioni segrete. Per risolvere il problema, viene utilizzata una funzione unidirezionale. Quando si crea una password segreta, il computer non memorizza la password stessa, ma il risultato del calcolo della funzione da questa password e nome utente. Ad esempio, l'utente Alice ha inventato la password "Gladiolus". Quando si salvano questi dati, viene calcolato il risultato della funzione (GLADIOLUS), lasciare che il risultato sia la stringa CAMOMILLA, che verrà salvata nel sistema. Di conseguenza, il file della password assumerà la seguente forma:

Accedi ora ha questo aspetto:

Quando Alice inserisce la password "segreta", il computer verifica se la funzione applicata a GLADIOLUS fornisce o meno il risultato corretto CAMOMILLE memorizzato sul disco del computer. Vale la pena cambiare almeno una lettera nel nome o nella password e il risultato della funzione sarà completamente diverso. La password “segreta” non è memorizzata sul computer in nessuna forma. Il file della password ora può essere visualizzato da altri utenti senza perdita di privacy, poiché la funzione è quasi irreversibile.

L'esempio precedente utilizza una funzione unidirezionale senza scappatoie, poiché non è necessario ottenere il messaggio originale dal messaggio crittografato. Nell'esempio seguente viene considerato uno schema con la possibilità di ripristinare il messaggio originale utilizzando una "backdoor", ovvero informazioni difficili da trovare. Per crittografare il testo, puoi prendere una grande directory di abbonati, composta da diversi volumi spessi (è molto facile trovare il numero di qualsiasi residente della città che lo utilizza, ma è quasi impossibile trovare un abbonato utilizzando un numero noto). Per ogni lettera del messaggio crittografato viene selezionato un nome che inizia con la stessa lettera. Pertanto, la lettera viene assegnata al numero di telefono dell'abbonato. Il messaggio inviato, ad esempio "BOX", verrà crittografato come segue:

Messaggio

Nome scelto

Crittotesto

Kirsanova

Arseniev

Il testo crittografico sarà una catena di numeri scritti nell'ordine in cui sono stati scelti nella directory. Per rendere difficile la decifrazione, dovresti scegliere nomi casuali che iniziano con la lettera desiderata. Pertanto, il messaggio originale può essere crittografato con molti elenchi di numeri diversi (crittotesti).

Esempi di tali criptotesti:

Crittotesto 1

Crittotesto 2

Crittotesto 3

Per decifrare il testo, è necessario disporre di un libro di riferimento compilato secondo i numeri ascendenti. Questa guida è una scappatoia (un segreto che aiuta a ottenere il testo iniziale) nota solo agli utenti legali. Senza una copia del libro di riferimento a portata di mano, il crittoanalista trascorrerà molto tempo a decifrare.

Schema di crittografia della chiave pubblica Sia lo spazio chiave e le chiavi di crittografia e decrittografia, rispettivamente. -- una funzione di crittografia per una chiave arbitraria, tale che:

Qui, dov'è lo spazio del testo cifrato e dov'è lo spazio dei messaggi.

La funzione di decrittazione, con la quale puoi trovare il messaggio originale, conoscendo il testo cifrato:

(: ) è il set di crittografia e (: ) è il set di decrittografia corrispondente. Ogni coppia ha una proprietà: sapendo, è impossibile risolvere l'equazione, cioè per un dato testo cifrato arbitrario, è impossibile trovare un messaggio. Ciò significa che è impossibile determinare la chiave di decrittazione corrispondente da quella data. è una funzione unidirezionale, ma è una scappatoia.

Di seguito è riportato un diagramma del trasferimento di informazioni dalla persona A alla persona B. Possono essere sia individui che organizzazioni e così via. Ma per una più facile percezione, è consuetudine identificare i partecipanti al programma con le persone, il più delle volte indicate come Alice e Bob. Il partecipante che cerca di intercettare e decifrare i messaggi di Alice e Bob è più comunemente indicato come Eve.

Figura 2. Crittografia asimmetrica Bob sceglie una coppia e invia la chiave di crittografia (chiave pubblica) ad Alice sul canale pubblico e la chiave di decrittografia (chiave privata) è sicura e segreta (non deve essere trasmessa sul canale pubblico).

Per inviare un messaggio a Bob, Alice utilizza la funzione di crittografia definita dalla chiave pubblica: -- testo cifrato ricevuto.

Bob decifra il testo cifrato applicando la trasformazione inversa identificata in modo univoco dal valore.

Background scientifico I cifrari asimmetrici sono iniziati in New Directions in Modern Cryptography di Whitfield Diffie e Martin Hellman, pubblicato nel 1976. Influenzati dal lavoro di Ralph Merkle sulla distribuzione delle chiavi pubbliche, hanno proposto un metodo per ottenere chiavi private utilizzando un canale pubblico. Questo scambio di chiavi esponenziale, che divenne noto come scambio di chiavi Diffie-Hellman, fu il primo metodo pratico pubblicato per stabilire la condivisione di chiavi segrete tra utenti del canale autenticati. Nel 2002, Hellman ha proposto di chiamare questo algoritmo "Diffie-Hellman-Merkle", riconoscendo il contributo di Merkle all'invenzione della crittografia a chiave pubblica. Questo stesso schema è stato sviluppato da Malcolm Williamson negli anni '70, ma è stato tenuto segreto fino al 1997. Il metodo di distribuzione della chiave pubblica Merkle è stato inventato nel 1974 e pubblicato nel 1978, chiamato anche Merkle Riddle.

Nel 1977, gli scienziati del MIT Ronald Rivest, Adi Shamir e Leonard Adleman hanno sviluppato un algoritmo di crittografia basato sul problema della fattorizzazione. Il sistema prende il nome dalle prime lettere dei loro cognomi (RSA -- Rivest, Shamir, Adleman). Lo stesso sistema è stato inventato nel 1973 da Clifford Cox, che lavorava presso il Government Communications Center (GCHQ), ma quest'opera era conservata solo nei documenti interni del centro, quindi la sua esistenza non era nota fino al 1977. RSA è stato il primo algoritmo adatto sia per la crittografia che per la firma digitale.

In generale, i noti crittosistemi asimmetrici si basano su uno dei complessi problemi matematici, che consente di costruire funzioni unidirezionali e funzioni backdoor. Ad esempio, i crittosistemi Merkle-Hellman e Hoare-Rivest si basano sul cosiddetto problema dello zaino in spalla.

Principi di base della creazione di crittosistemi a chiave pubblica Iniziamo con un compito difficile. Dovrebbe essere difficile da risolvere nel senso della teoria: non dovrebbe esserci un algoritmo che potrebbe essere utilizzato per ordinare tutte le opzioni per risolvere il problema in tempo polinomiale rispetto alla dimensione del problema. È più corretto dire: non dovrebbe esistere un algoritmo polinomiale noto che risolva questo problema, poiché non è stato ancora dimostrato per nessun problema che in linea di principio non esista un algoritmo adatto.

È possibile selezionare un'attività secondaria facile da. Deve essere risolto in tempo polinomiale e meglio se in tempo lineare.

"Mischia e scuoti" per ottenere un'attività completamente diversa dall'originale. Il problema dovrebbe almeno assomigliare al problema intrattabile originale.

si apre con una descrizione di come può essere utilizzata come chiave di crittografia. Come ottenerlo è tenuto segreto come una scappatoia segreta.

Il sistema crittografico è organizzato in modo tale che gli algoritmi di decrittazione per un utente legale e un crittoanalista siano significativamente diversi. Mentre il secondo risolve il problema -, il primo usa una scappatoia segreta e risolve il problema -.

Crittografia a chiave pubblica multipla L'esempio seguente mostra uno schema in cui Alice crittografa un messaggio in modo che solo Bob possa leggerlo e viceversa, Bob crittografa il messaggio in modo che solo Alice possa decrittografarlo.

Lascia che ci siano 3 chiavi distribuite come mostrato nella tabella.

crittografia chiave di crittografia simmetrica

Quindi Alice può crittografare il messaggio con la chiave, ed Ellen può decifrare con le chiavi, Carol può crittografare con la chiave e Dave può decifrare con le chiavi. Se Dave crittografa il messaggio con la chiave, Ellen può leggere il messaggio, se con la chiave, Frank può leggerlo, se con entrambe le chiavi e, quindi, il messaggio verrà letto da Carol. Gli altri partecipanti agiscono in modo simile. Pertanto, se un sottoinsieme di chiavi viene utilizzato per la crittografia, le chiavi rimanenti del set sono necessarie per la decrittografia. Tale schema può essere utilizzato per n chiavi.

Ora puoi inviare messaggi a gruppi di agenti senza conoscere in anticipo la composizione del gruppo.

Considera prima un set composto da tre agenti: Alice, Bob e Carol. Ad Alice vengono date le chiavi e, Bob - e, Carol - e. Ora, se il messaggio inviato è crittografato con una chiave, solo Alice può leggerlo applicando in sequenza le chiavi e. Se vuoi inviare un messaggio a Bob, il messaggio viene crittografato con la chiave, Carol con la chiave. Se vuoi inviare un messaggio sia ad Alice che a Carol, le chiavi e vengono utilizzate per la crittografia.

Il vantaggio di questo schema è che sono necessari solo un messaggio e n chiavi per implementarlo (in uno schema con n agenti). Se vengono inviati messaggi singoli, ovvero vengono utilizzate chiavi separate per ciascun agente (un totale di n chiavi) e ciascun messaggio, le chiavi sono necessarie per inviare messaggi a tutti i diversi sottoinsiemi.

Lo svantaggio di questo schema è che è necessario trasmettere anche un sottoinsieme di agenti (l'elenco dei nomi può essere lungo) a cui si desidera trasmettere il messaggio. Altrimenti, ognuno di loro dovrà passare attraverso tutte le combinazioni di tasti alla ricerca di quella adatta. Inoltre, gli agenti dovranno memorizzare una notevole quantità di informazioni sulle chiavi.

Crittoanalisi degli algoritmi a chiave pubblica Sembrerebbe che un crittosistema a chiave pubblica sia un sistema ideale che non richiede un canale sicuro per la trasmissione della chiave di crittografia. Ciò implicherebbe che due utenti legittimi potrebbero comunicare su un canale aperto senza doversi incontrare per scambiarsi le chiavi. Sfortunatamente, non è così. La figura illustra come Eve, agendo da intercettore attivo, possa impossessarsi del sistema (decodificare il messaggio destinato a Bob) senza violare il sistema di crittografia.

Figura 3. Crittosistema a chiave pubblica con intercettore attivo In questo modello, Eve intercetta la chiave pubblica inviata da Bob ad Alice. Quindi crea una coppia di chiavi e si "maschera" come Bob inviando ad Alice la chiave pubblica, che Alice pensa sia la chiave pubblica inviatale da Bob. Eve intercetta i messaggi crittografati da Alice a Bob, li decrittografa con la chiave privata, li crittografa nuovamente con la chiave pubblica di Bob e invia il messaggio a Bob. Pertanto, nessuno dei partecipanti si rende conto che esiste una terza parte che può semplicemente intercettare il messaggio o sostituirlo con un messaggio falso. Ciò evidenzia la necessità dell'autenticazione a chiave pubblica. Per questo, di solito vengono utilizzati i certificati. La gestione delle chiavi distribuite in PGP risolve questo problema con l'aiuto dei garanti.

Un'altra forma di attacco è il calcolo della chiave privata dalla chiave pubblica (figura sotto). Il crittoanalista conosce l'algoritmo di crittografia, lo analizza, cerca di trovarlo. Questo processo è semplificato se il crittoanalista ha intercettato diversi crittotesti inviati dalla persona A alla persona B.

Figura 4. Crittosistema asimmetrico con un intercettore passivo.

La maggior parte dei crittosistemi a chiave pubblica si basa sul problema della fattorizzazione dei grandi numeri. Ad esempio, RSA utilizza il prodotto di due grandi numeri come chiave pubblica n. La complessità di decifrare un tale algoritmo risiede nella difficoltà di fattorizzare il numero n. Ma questo problema può essere risolto realisticamente. E ogni anno il processo di decomposizione diventa sempre più veloce. Di seguito sono riportati i dati di fattorizzazione utilizzando l'algoritmo "Setaccio quadratico".

Inoltre, il problema della decomposizione può essere potenzialmente risolto utilizzando l'algoritmo Shor utilizzando un computer quantistico sufficientemente potente.

Per molti metodi di crittografia asimmetrica, la forza crittografica ottenuta a seguito della crittoanalisi differisce in modo significativo dai valori dichiarati dagli sviluppatori di algoritmi basati su stime teoriche. Pertanto, in molti paesi, la questione dell'utilizzo di algoritmi di crittografia dei dati è nel campo della regolamentazione legislativa. In particolare, in Russia, solo gli strumenti software di crittografia dei dati che hanno superato la certificazione statale negli organi amministrativi, in particolare nell'FSB, possono essere utilizzati nelle organizzazioni statali e commerciali.

Conclusione Nel corso del lavoro sull'argomento prescelto nell'ambito della pratica educativa, ho svolto: una rassegna della storia dello sviluppo della crittografia e della crittoanalisi; una revisione analitica dei tipi esistenti di algoritmi crittografici (si considerano i cifrari simmetrici e asimmetrici) e dei metodi per valutarne la forza. Spero che lo sviluppo della crittografia gioverà solo all'umanità.

Riferimenti Gatchin Yu. A., Korobeinikov A. G. Fondamenti di algoritmi crittografici. Esercitazione. - San Pietroburgo: SPbGITMO (TU), 2002.

Kon P. Algebra universale. — M.: il sig. — 1968

Korobeinikov A. G. Fondamenti matematici della crittografia. Esercitazione. San Pietroburgo: San Pietroburgo GITMO (TU), 2002.

Schneier B. Crittografia applicata. Protocolli, algoritmi, codice sorgente in linguaggio C = Crittografia applicata. Protocolli, algoritmi e codice sorgente in C. - M.: Triumf, 2002.

Algoritmi di crittografia di base

Concetti e definizioni di base

Con la formazione della società dell'informazione, i mezzi tecnici per la sorveglianza totale di milioni di persone diventano disponibili per i grandi stati. Pertanto, la crittografia sta diventando uno degli strumenti principali che forniscono privacy, fiducia, autorizzazione, pagamenti elettronici, sicurezza aziendale e altre cose importanti.

Viene affrontato il problema della protezione delle informazioni trasformandole crittografia , che si articola in due direzioni: crittografia e crittoanalisi . Gli obiettivi di queste direzioni sono direttamente opposti.

Crittografia impegnata nella ricerca e nello studio di metodi matematici di trasformazione dell'informazione. Area di interesse crittoanalisi– studio della possibilità di decifrare le informazioni senza conoscere le chiavi.

La crittografia moderna comprende 4 sezioni principali:

1. Crittosistemi simmetrici.

2. Criptosistemi a chiave pubblica.

3. Sistemi di firma elettronica.

4. Gestione delle chiavi.

Le direzioni principali dell'utilizzo dei metodi crittografici sono il trasferimento di informazioni riservate sui canali di comunicazione, l'autenticazione dei messaggi trasmessi e la memorizzazione di informazioni su supporti in forma crittografata.

La crittografia permette di trasformare le informazioni in modo tale che la loro lettura (restauro) sia possibile solo se la chiave è nota. Come informazioni da crittografare e decifrare, verranno presi in considerazione i testi costruiti su un determinato alfabeto.

Alfabetoè un insieme finito di segni utilizzati per codificare le informazioni. Esempi:

ü alfabeto Z33 - contiene 32 lettere dell'alfabeto russo e uno spazio;

ü alfabeto Z256 - caratteri inclusi nei codici standard ASCII e KOI-8;

ü alfabeto binario Z2 – due simboli (0 e 1);

ü alfabeti ottali o esadecimali.

Testoè un insieme ordinato di elementi dell'alfabeto.

Crittografia– processo trasformativo di sostituzione del testo originale (normale) con testo cifrato.

Decrittazione(crittografia inversa) è il processo trasformativo di sostituzione, in base alla chiave, del testo cifrato con il testo in chiaro.

Chiave– informazioni necessarie per la cifratura e la decrittazione fluida dei testi.

Sistema crittograficoè una famiglia di trasformazioni di testo in chiaro T [T 1 , T 2 , ..., da T a ]. I membri di questa famiglia sono indicizzati o indicati dal simbolo a; parametro aè la chiave. Lo spazio chiave K è l'insieme dei possibili valori chiave. Di solito la chiave è una sequenza di caratteri alfabetici.

I crittosistemi sono divisi in simmetrico e asimmetrico . IN crittosistemi simmetrici La stessa chiave viene utilizzata sia per la crittografia che per la decrittografia. IN sistemi asimmetrici (chiave pubblica) vengono utilizzate due chiavi: pubblica e privata, che sono matematicamente correlate tra loro. Le informazioni vengono crittografate utilizzando una chiave pubblica, disponibile a tutti, e decrittografate utilizzando una chiave privata, nota solo al destinatario del messaggio.

Termini distribuzione delle chiavi e gestione delle chiavi fare riferimento ai processi di elaborazione delle informazioni, il cui contenuto è la compilazione delle chiavi e la loro distribuzione tra gli utenti.

Firma elettronica (digitale). la sua trasformazione crittografica è detta apposta al testo, che consente, al ricevimento del testo da parte di un altro utente, di verificare la paternità e l'autenticità del messaggio.

Resistenza alle criptovaluteè chiamata caratteristica cifrata che determina la sua resistenza alla decrittazione senza conoscere la chiave (cioè la resistenza alla crittoanalisi). Esistono diversi indicatori di forza crittografica:

il numero di tutte le chiavi possibili;

tempo medio necessario per la crittoanalisi.

Requisiti per i crittosistemi

Il processo di chiusura crittografica dei dati può essere effettuato sia in software che in hardware. L'implementazione hardware è significativamente più costosa, ma offre prestazioni, semplicità e sicurezza elevate. L'implementazione del software è più pratica e consente una certa flessibilità nell'utilizzo.

Requisiti comuni per i sistemi crittografici:

Il messaggio crittografato deve essere leggibile solo se la chiave è presente.

· il numero di operazioni necessarie per determinare la chiave utilizzata dal frammento del messaggio crittografato e il relativo testo in chiaro non deve essere inferiore al numero totale di chiavi possibili;

Il numero di operazioni richieste per decrittare le informazioni tramite la ricerca di possibili chiavi deve avere un limite inferiore rigoroso e andare oltre le capacità dei computer moderni (tenendo conto delle capacità del network computing);

la conoscenza dell'algoritmo di crittografia non dovrebbe pregiudicare l'affidabilità della protezione;

una leggera modifica della chiave dovrebbe comportare una modifica significativa del tipo di messaggio crittografato;

Gli elementi strutturali dell'algoritmo di crittografia devono essere invariati;

i bit aggiuntivi introdotti nel messaggio durante il processo di crittografia devono essere completamente e in modo sicuro nascosti nel testo cifrato;

La lunghezza del testo cifrato deve essere uguale alla lunghezza del testo originale;

· non dovrebbero esserci dipendenze semplici e facilmente stabilite tra le chiavi utilizzate in sequenza nel processo di crittografia;

qualsiasi chiave dall'insieme di possibili dovrebbe fornire una protezione affidabile delle informazioni;

L'algoritmo dovrebbe consentire l'implementazione sia del software che dell'hardware, mentre la modifica della lunghezza della chiave non dovrebbe comportare un deterioramento qualitativo dell'algoritmo di crittografia.

Algoritmi di crittografia di base

Viene chiamato il metodo di crittografia-decrittografia cifra . La chiave utilizzata per la decrittazione potrebbe non essere la stessa della chiave utilizzata per la crittografia, ma nella maggior parte degli algoritmi le chiavi sono le stesse.

Gli algoritmi che utilizzano una chiave sono divisi in due classi: simmetrico (con chiave segreta) e asimmetrico (con chiave pubblica). Gli algoritmi simmetrici utilizzano la stessa chiave per la crittografia e la decrittografia, oppure la chiave di decrittografia viene semplicemente calcolata dalla chiave di crittografia. Gli algoritmi asimmetrici utilizzano chiavi diverse e la chiave di decrittazione non può essere calcolata dalla chiave di crittografia.

Algoritmi simmetrici sono divisi in cifrari a flusso e cifrari a blocchi. Lo streaming consente di crittografare le informazioni bit per bit, mentre quelli a blocchi funzionano con un determinato insieme di bit di dati ( di solito la dimensione del blocco è di 64 bit) e crittografare questo set nel suo insieme.

In genere, la chiave di crittografia è un file o un array di dati ed è archiviata su un supporto chiave personale (ad esempio, un'unità flash o una smart card); è obbligatorio adottare misure per garantire che il portachiavi personale non sia a disposizione di nessuno diverso dal suo proprietario.



L'autenticità è garantita dal fatto che senza una decrittazione preliminare è praticamente impossibile apportare modifiche semantiche e falsificazioni di un messaggio crittograficamente chiuso. Un messaggio falso non può essere crittografato correttamente senza conoscere la chiave segreta.

L'integrità dei dati è assicurata allegando un codice speciale ai dati trasmessi ( inserti di imitazione ) generato dalla chiave segreta. L'inserimento dell'imitazione è una sorta di checksum, ad es. qualche riferimento caratteristico del messaggio, secondo il quale viene verificata l'integrità di quest'ultimo. L'algoritmo per la generazione di un inserto imitazione deve garantire la sua dipendenza, secondo una complessa legge crittografica, da ogni bit del messaggio. Il controllo dell'integrità del messaggio viene effettuato dal destinatario del messaggio generando, dalla chiave segreta, un'imitazione dell'inlay corrispondente al messaggio ricevuto e confrontandola con il valore dell'imitazione dell'inlay ricevuto. Se c'è una corrispondenza, si conclude che l'informazione non è stata modificata nel tragitto dal mittente al destinatario.

La crittografia simmetrica è l'ideale per crittografare le informazioni "per te stesso", ad esempio per impedirne l'accesso non autorizzato in assenza del proprietario. Ho un'elevata velocità di crittografia, i crittosistemi a chiave singola consentono di risolvere molti importanti problemi di protezione delle informazioni. Tuttavia, l'uso autonomo di crittosistemi simmetrici nelle reti di computer solleva il problema della distribuzione delle chiavi di crittografia tra gli utenti.

Prima di iniziare lo scambio di dati crittografati, è necessario scambiare chiavi segrete con tutti i destinatari. Il trasferimento della chiave segreta di un crittosistema simmetrico non può essere effettuato tramite canali di comunicazione pubblica, la chiave segreta deve essere trasferita al mittente e destinatario tramite un canale sicuro (o con l'ausilio di un corriere). Per garantire un'efficace protezione dei messaggi che circolano in rete, è necessario un numero enorme di chiavi che cambiano frequentemente (una chiave per ogni coppia di utenti). Il problema della distribuzione delle chiavi segrete con un gran numero di utenti è un'attività molto complessa e dispendiosa in termini di tempo. In una rete per N utenti, è necessario distribuire N (N-1) / 2 chiavi segrete.

Cifre asimmetriche consentire che la chiave pubblica sia disponibile per tutti (ad esempio, pubblicata su un giornale). Ciò consente a chiunque di crittografare un messaggio. Tuttavia, solo l'utente che possiede la chiave di decrittografia può decrittografare questo messaggio. Viene chiamata la chiave di crittografia chiave pubblica e la chiave di decrittazione è chiave privata o chiave segreta .

Le chiavi private e pubbliche vengono generate a coppie. La chiave segreta deve rimanere con il suo proprietario ed essere protetta in modo sicuro da accessi non autorizzati (simile alla chiave di crittografia negli algoritmi simmetrici). Una copia della chiave pubblica deve essere conservata da ciascun abbonato della rete crittografica con cui il proprietario della chiave segreta scambia informazioni.

I sistemi crittografici a chiave pubblica utilizzano le cosiddette funzioni irreversibili o unidirezionali che hanno la seguente proprietà: per un dato valore X relativamente facile da calcolare f(x), invece, se yM = j(x), non esiste un modo semplice per calcolare il valore X. L'insieme delle classi di funzioni irreversibili genera tutta la varietà dei sistemi a chiave pubblica.

Il processo di trasferimento delle informazioni crittografate in un crittosistema asimmetrico viene eseguito come segue.

Fase preparatoria:

· l'abbonato B genera una coppia di chiavi: chiave segreta k in e chiave pubblica K in;

la chiave pubblica Kb viene inviata all'abbonato A e ad altri abbonati (o resa disponibile, ad esempio, su una risorsa condivisa).

Utilizzo ( scambio di informazioni tra A e B ):

l'abbonato A crittografa il messaggio utilizzando la chiave pubblica K all'abbonato B e invia il testo cifrato all'abbonato B;

· l'abbonato B decifra il messaggio utilizzando la sua chiave segreta k in; nessun altro può decifrare questo messaggio, perché non ha la chiave segreta dell'abbonato B.

La protezione delle informazioni in un crittosistema asimmetrico si basa sulla segretezza della chiave k nel destinatario del messaggio.

Vantaggi sistemi crittografici asimmetrici prima dei crittosistemi simmetrici:

ü nei crittosistemi asimmetrici, il complesso problema della distribuzione delle chiavi tra utenti è risolto, poiché ogni utente può generare la propria coppia di chiavi e le chiavi pubbliche degli utenti possono essere pubblicate e distribuite liberamente tramite comunicazioni di rete;

ü scompare la dipendenza quadratica del numero di chiavi dal numero di utenti; in un crittosistema asimmetrico il numero di chiavi utilizzate è correlato al numero di abbonati da una relazione lineare (in un sistema di N utenti si usano 2N chiavi), e non quadratica, come nei sistemi simmetrici;

ü I crittosistemi asimmetrici consentono di implementare protocolli di interazione tra parti che non si fidano reciprocamente, poiché quando si utilizzano crittosistemi asimmetrici, la chiave privata dovrebbe essere nota solo al suo proprietario.

svantaggi crittosistemi asimmetrici:

ü al momento non esiste una prova matematica dell'irreversibilità delle funzioni utilizzate negli algoritmi asimmetrici;

ü la crittografia asimmetrica è significativamente più lenta della crittografia simmetrica, poiché durante la crittografia e la decrittazione vengono utilizzate operazioni ad alta intensità di risorse; per lo stesso motivo, è molto più difficile implementare un encoder hardware con un algoritmo asimmetrico che implementare un algoritmo hardware-simmetrico;

ü la necessità di proteggere le chiavi pubbliche dalla sostituzione.

I moderni algoritmi di crittografia-decrittografia sono piuttosto complessi e non possono essere eseguiti manualmente. I veri algoritmi crittografici sono progettati per essere utilizzati da computer o dispositivi hardware speciali. Nella maggior parte delle applicazioni, la crittografia è prodotta dal software e sono disponibili molti pacchetti crittografici.

Gli algoritmi simmetrici sono più veloci di quelli asimmetrici. In pratica, entrambi i tipi di algoritmi vengono spesso utilizzati insieme: un algoritmo a chiave pubblica viene utilizzato per trasmettere una chiave segreta generata casualmente, che viene poi utilizzata per decrittare un messaggio.

Molti algoritmi crittografici di alta qualità sono ampiamente disponibili. Gli algoritmi simmetrici più conosciuti sono DES e IDEA; il miglior algoritmo asimmetrico è RSA. In Russia, GOST 28147-89 è adottato come standard di crittografia.

La tabella 1 mostra la classificazione della chiusura crittografica delle informazioni.

Tabella 1

Tipi di conversione Metodi di trasformazione Varietà del metodo Modalità di attuazione
Crittografia Sostituzione (sostituzione) Semplice (singola alfabetica) Programma
Ordinario polialfabetico a circuito singolo Programma
Monofonico multialfabetico ad anello singolo Programma
Programma
permutazione Semplice Programma
Complicato secondo la tabella Programma
Complicato sui percorsi Programma
Trasformazione analitica Secondo le regole dell'algebra delle matrici Programma
Per dipendenze speciali Programma
Gioco d'azzardo Con scala corta finita App.-prog.
Con gamma lunga finita App.-prog.
Con una gamma infinita App.-prog.
Combinato Sostituzione + permutazione App.-prog.
Sostituzione + gioco App.-prog.
Permutazione+gioco App.-prog.
Gioco d'azzardo + gioco App.-prog.
Codifica semantico Secondo tabelle speciali (dizionari) Programma
Simbolico Per codice alfabeto Programma
Altri tipi taglia-esplodi semantico App.-prog.
meccanico Programma
Compressione-espansione

IO. Sotto crittografia si intende questo tipo di chiusura crittografica, in cui ogni carattere del messaggio protetto è soggetto a trasformazione.

Tutti i metodi di crittografia conosciuti possono essere suddivisi in cinque gruppi: sostituzione (sostituzione), permutazione, trasformazione analitica, gamma e crittografia combinata. Ciascuno di questi metodi può avere diverse varietà.

Varietà del metodo sostituzione (sostituzione ):

1) Semplice (alfabetico singolo) - i caratteri del testo crittografato vengono sostituiti da altri caratteri dello stesso alfabeto. Se la quantità di testo cifrato è grande, la frequenza di occorrenza delle lettere nel testo cifrato sarà più vicina alla frequenza di occorrenza delle lettere nell'alfabeto (della lingua in cui è scritto il testo) e la decrittazione sarà molto semplice. Questo metodo è attualmente usato raramente e nei casi in cui il testo cifrato è breve.

2) Polialfabetico sostituzione - il tipo più semplice di trasformazione, che consiste nel sostituire i caratteri del testo di partenza con caratteri di altri alfabeti secondo una regola più o meno complessa. Per garantire un'elevata forza crittografica, è necessario l'uso di chiavi di grandi dimensioni.

In ordinario multialfabetico a circuito singolo sostituzione, vengono utilizzati diversi alfabeti per sostituire i caratteri del testo di partenza e l'alfabeto viene modificato in modo sequenziale e ciclico, ad es. il primo carattere è sostituito dal carattere corrispondente del primo alfabeto, il secondo dal carattere del secondo alfabeto e così via. finché non sono stati utilizzati tutti gli alfabeti selezionati. Successivamente, l'uso degli alfabeti viene ripetuto.

caratteristica monofonico multialfabetico ad anello singolo la sostituzione è che il numero e la composizione degli alfabeti sono scelti in modo tale che le frequenze di occorrenza di tutti i caratteri nel testo cifrato siano le stesse. In questa situazione, la crittoanalisi del testo cifrato con l'aiuto della sua elaborazione statistica diventa più difficile. L'allineamento della frequenza di occorrenza dei caratteri si ottiene grazie al fatto che per i caratteri che ricorrono frequentemente nel testo di partenza viene fornito un numero maggiore di elementi sostitutivi rispetto a quelli che si verificano raramente.

Multiloop polialfabetico la sostituzione consiste nel fatto che per la crittografia vengono utilizzati diversi insiemi (circuiti) di alfabeti, che vengono utilizzati ciclicamente, e ogni circuito nel caso generale ha il proprio periodo di applicazione individuale. Questo periodo è calcolato, di regola, dal numero di caratteri, dopo la crittografia di cui cambia il contorno degli alfabeti.

Strada permutazioni - un modo semplice di trasformazione crittografica. Di solito è usato in combinazione con altri metodi. Questo metodo consiste nel fatto che i caratteri del testo crittografato vengono riorganizzati secondo determinate regole all'interno del blocco di caratteri crittografato. Tutte le procedure di cifratura e decrittazione con il metodo della permutazione sono sufficientemente formalizzate e possono essere implementate algoritmicamente.

La crittografia per semplice permutazione viene eseguita come segue:

viene selezionata una parola chiave con caratteri non ripetuti;

· il testo crittografato viene scritto in righe successive sotto i simboli della parola chiave;

· il testo cifrato viene scritto in colonne nella sequenza in cui le lettere della chiave sono disposte in alfabeto (o nell'ordine dei numeri nella riga naturale, se è digitale).

Esempio:

testo in chiaro: ATTENZIONE

chiave: 5 8 1 3 7 4 6 2

schema di crittografia:

STAY q O (dove q è uno spazio)

ATTENZIONE

Raggruppiamo per 2 caratteri e otteniamo il testo cifrato:

DOOYREZHBSqNTOUT

Lo svantaggio della crittografia a permutazione semplice è che se la lunghezza del testo cifrato è grande, il testo cifrato può mostrare schemi nei simboli chiave. Per eliminare questa mancanza, puoi cambiare la chiave dopo aver crittografato un certo numero di caratteri. Con un cambio sufficientemente frequente della chiave, la forza della crittografia può essere notevolmente aumentata. Ciò, tuttavia, complica l'organizzazione del processo di crittografia e decrittografia.

Permutazione complicata delle tabelle sta nel fatto che viene utilizzata un'apposita tabella per registrare i caratteri del testo crittografato, in cui vengono introdotti alcuni elementi di complicazione. La tabella è una matrice, la cui dimensione può essere scelta arbitrariamente. In esso, come nel caso di una semplice permutazione, vengono scritti i caratteri del testo crittografato. La complicazione sta nel fatto che un certo numero di celle di tabella non viene utilizzato. Il numero e la posizione degli elementi inutilizzati è una chiave di crittografia aggiuntiva. Testo crittografato in blocchi di ( m X nS) gli elementi vengono scritti nella tabella ( m X n- dimensioni del tavolo, S- numero di elementi non utilizzati). Inoltre, la procedura di crittografia è simile a una semplice permutazione.

Variando la dimensione della tabella, la sequenza dei simboli chiave, il numero e la disposizione degli elementi non utilizzati, è possibile ottenere la forza richiesta del testo cifrato.

Permutazione complicata dei percorsi ha un'elevata forza di crittografia, utilizza un complicato metodo di permutazioni lungo percorsi di tipo hamiltoniano. In questo caso, i vertici di un ipercubo vengono utilizzati per scrivere i caratteri del testo cifrato, i caratteri del testo cifrato vengono calcolati lungo percorsi hamiltoniani e vengono utilizzati diversi percorsi.

Metodo di crittografia utilizzando trasformazioni analitiche fornisce una chiusura sufficientemente affidabile delle informazioni. Per fare ciò, puoi applicare i metodi dell'algebra delle matrici, ad esempio la moltiplicazione di una matrice per un vettore. Se la matrice viene utilizzata come chiave e al posto del componente vettore vengono sostituiti i caratteri del testo sorgente, i componenti del vettore risultante saranno i caratteri del testo cifrato. La decrittazione viene eseguita utilizzando la stessa regola per moltiplicare una matrice per un vettore, viene presa solo la matrice come base, l'inverso di quella con cui viene eseguita la chiusura e il numero corrispondente di caratteri del testo chiuso è preso come vettore moltiplicatore. I valori del vettore di risultato saranno gli equivalenti digitali dei caratteri in chiaro.

Gioco d'azzardo- questo metodo consiste nell'imporre al testo sorgente una sequenza pseudo-casuale generata in base alla chiave. La procedura per applicare gamma al testo sorgente può essere eseguita in due modi. IN primo modo il testo originale e i caratteri gamma vengono sostituiti dai loro equivalenti digitali, che vengono quindi aggiunti modulo A, dove K è il numero di caratteri dell'alfabeto, ad es.

t c = (t p + t g) mod K, dove tc, tp,t g - testo cifrato, testo in chiaro e caratteri gamma, rispettivamente.

Nel secondo metodo, i caratteri del testo sorgente e gamma sono rappresentati come un codice binario, quindi vengono aggiunte le cifre corrispondenti modulo 2. Invece dell'aggiunta modulo 2, è possibile utilizzare altre operazioni logiche per gamma, ad esempio la trasformazione secondo alla regola dell'equivalenza logica o della non equivalenza logica. Tale sostituzione equivale all'introduzione di un'altra chiave, che è la scelta di una regola per formare i caratteri del messaggio crittografato dai caratteri del testo sorgente e della gamma.

La forza della crittografia con il metodo gamma è determinata principalmente dalle proprietà della gamma: la lunghezza del periodo e l'uniformità delle caratteristiche statistiche. L'ultima proprietà garantisce che non vi siano regolarità nell'aspetto dei vari simboli all'interno di un punto.

Con buone proprietà statistiche della gamma, la forza della crittografia è determinata solo dalla lunghezza del suo periodo. Inoltre, se la lunghezza del periodo gamma supera la lunghezza del testo crittografato, tale cifra è teoricamente assolutamente sicura. Qualsiasi sequenza di simboli casuali può essere utilizzata come una gamma infinita, ad esempio una sequenza di cifre del numero PI. Quando si crittografa con un computer, la sequenza gamma viene formata utilizzando un generatore di numeri pseudo-casuali.

Metodi di crittografia combinati vengono utilizzati diversi metodi contemporaneamente, ad es. crittografia sequenziale del testo in chiaro utilizzando due o più metodi. Questo è un mezzo abbastanza efficace per aumentare la forza della crittografia.

Un tipico esempio di cifratura combinata è il National Cryptographic Data Enclosure Standard (DES) degli Stati Uniti.

II. Sotto codifica questo tipo di chiusura crittografica si intende quando alcuni elementi dei dati protetti (non necessariamente si tratta di caratteri singoli) sono sostituiti da codici preselezionati (combinazioni numeriche, alfabetiche, alfanumeriche, ecc.).

Questo metodo ha due varietà: semantica e codifica dei caratteri. In codifica semantica gli elementi codificati hanno un significato ben definito (parole, frasi, gruppi di frasi). In codifica dei caratteri ogni carattere del messaggio protetto è codificato. La codifica simbolica è essenzialmente la stessa della crittografia di sostituzione.

Se usati correttamente, i codici sono molto più difficili da decifrare rispetto ad altri sistemi classici. Ciò è dovuto a tre motivi. In primo luogo, la grande lunghezza del codice utilizzato (per la crittografia - diverse centinaia di bit; codebook - centinaia di migliaia - un milione di bit). In secondo luogo, i codici rimuovono la ridondanza: il lavoro di un crittoanalista è complicato. In terzo luogo, i codici operano su blocchi di testo in chiaro relativamente grandi (parole e frasi) e quindi nascondono informazioni locali che potrebbero altrimenti fornire preziosi indizi a un crittoanalista.

A carenze la codifica dovrebbe essere attribuita al fatto che la chiave non viene utilizzata abbastanza bene durante la codifica, tk. quando si codifica una singola parola e frase, viene utilizzata solo una piccola parte del libro di codici. Di conseguenza, il codice, se utilizzato in modo intensivo, si presta ad analisi parziali e risulta particolarmente sensibile agli attacchi in presenza di testo in chiaro noto. Per questi motivi, i codici devono essere modificati più frequentemente per garantire una maggiore affidabilità.

III. altri metodi le chiusure crittografiche includono lo slicing/spreading e la compressione dei dati. Tagliare/Espandere i dati consiste nel fatto che l'array di dati protetti è suddiviso in tali elementi, ciascuno dei quali non consente di rivelare il contenuto dell'informazione protetta, e gli elementi così allocati sono collocati in zone di memoria diverse. La procedura inversa è chiamata raccolta dati. È abbastanza ovvio che la dispersione dei dati e l'algoritmo di riassemblaggio devono essere tenuti segreti.

Compressione dati rappresenta la sostituzione di stringhe di dati identiche frequenti o sequenze di caratteri identici con alcuni caratteri preselezionati.

Funzioni hash

funzione hashè una funzione unidirezionale progettata per ottenere un riassunto o "impronta digitale" di un file, messaggio o blocco di dati.

Inizialmente, le funzioni di hashing sono state utilizzate come funzioni per creare un'immagine unica di sequenze di informazioni di lunghezza arbitraria al fine di identificarne e determinarne l'autenticità. L'immagine stessa deve essere un piccolo blocco di lunghezza fissa, in genere 30, 60, 64, 128, 256 o 512 bit. Pertanto, le operazioni di ordinamento di ricerca e altre con array o database di grandi dimensioni sono notevolmente semplificate, ad es. impiegare molto meno tempo. Per garantire la probabilità di errore richiesta, è necessario fornire una serie di requisiti per la funzione hash:

· la funzione hash deve essere sensibile a tutti i tipi di modifiche nel testo M, come inserimenti, emissioni, permutazioni;

la funzione hash deve avere la proprietà di irreversibilità, ovvero il problema di selezionare un documento M", che avrebbe il valore della funzione hash richiesto, deve essere computazionalmente irrisolvibile;

· la probabilità che i valori delle funzioni hash di due documenti diversi (indipendentemente dalla loro lunghezza) corrispondano deve essere trascurabile.

Un gran numero di funzioni matematiche esistenti può fornire questi requisiti. Se queste funzioni vengono utilizzate per l'ordinamento, la ricerca, ecc. Tuttavia, in seguito, sulla base del lavoro di Simonson sulla teoria dell'autenticazione, è diventata chiara l'opportunità di utilizzare metodi di hashing negli schemi di autenticazione dei messaggi nei canali di comunicazione e nei sistemi di telecomunicazione. A questo proposito, sono state aperte numerose direzioni nella ricerca nel campo della crittografia, che sono associate allo sviluppo di nuove funzioni hash e al miglioramento delle esistenti. L'idea principale dell'utilizzo delle funzioni di hashing è quella di ottenere funzioni unidirezionali basate su di esse, che sono il prodotto principale per lo sviluppo di moderni meccanismi crittografici e metodi di autenticazione.
Diamo un'occhiata ai concetti di base relativi alle funzioni hash unidirezionali.

La maggior parte delle funzioni hash sono costruite attorno a una funzione unidirezionale F( ), che produce un valore di output di lunghezza n quando vengono forniti due valori di input di lunghezza n. Questi ingressi sono il blocco sorgente Mi e valore hash Ciao–1 il blocco di testo precedente (Fig. 1):

Hi = f (Mi, Hi–1).

Il valore hash calcolato quando viene inserito l'ultimo blocco di testo diventa il valore hash dell'intero messaggio M.

Fig. 1. Diagramma di una funzione hash unidirezionale

Di conseguenza, una funzione hash unidirezionale produce sempre un output di lunghezza fissa n (indipendentemente dalla lunghezza del testo di input). L'algoritmo di hash è iterativo, quindi le funzioni hash sono anche chiamate algoritmi iterativi. L'essenza dell'algoritmo di hashing risiede nella sua unilateralità, ad es. la funzione dovrebbe funzionare in una direzione: comprimere, mescolare e disperdere, ma non ripristinare mai. Tali schemi consentono di tenere traccia delle modifiche nei testi di origine, che è quello di garantire l'integrità dei dati, e negli algoritmi di firma digitale per garantire l'autenticità dei dati. Tuttavia, in forma pura, queste funzioni non consentono la conferma dell'autenticità.

In alcune fonti, steganografia, codifica e compressione delle informazioni si riferiscono a branche della conoscenza relative alla crittografia, ma non incluse in essa.

I metodi di crittografia tradizionali (classici) includono codici di permutazione, codici di sostituzione semplici e complessi, nonché alcune delle loro modifiche e combinazioni. Combinazioni di cifrari di permutazione e cifrari di sostituzione formano l'intera varietà di cifrari simmetrici usati nella pratica.

Cifre di permutazione. Quando si crittografa per permutazione, i caratteri del testo crittografato vengono riorganizzati secondo una determinata regola all'interno del blocco di questo testo. I cifrari di permutazione sono i cifrari più semplici e probabilmente i più antichi.

tabelle di crittografia. Nelle tabelle di crittografia vengono utilizzate le seguenti chiavi: la dimensione della tabella, la parola o la frase che specifica la permutazione e le caratteristiche della struttura della tabella.

Uno dei cifrari di tabella di permutazione più primitivi è la permutazione semplice, per la quale la dimensione della tabella è la chiave. Naturalmente mittente e destinatario del messaggio devono concordare preventivamente una chiave comune sotto forma di dimensione tabellare. Va notato che la combinazione di lettere di testo cifrato in gruppi di 8 lettere non è inclusa nella chiave di cifratura e viene eseguita per comodità di scrivere testo senza senso. Durante la decrittografia, i passaggi vengono eseguiti nell'ordine inverso.


Un po' più resistente alla divulgazione ha un metodo di crittografia chiamato permutazione a chiave singola. Questo metodo differisce dal precedente in quanto le colonne della tabella vengono riorganizzate in base a una parola chiave, una frase o un insieme di numeri della lunghezza di una riga della tabella.

Per una maggiore privacy, puoi crittografare nuovamente un messaggio che è già stato crittografato. Questo metodo di crittografia è chiamato doppia permutazione. In caso di doppia permutazione di colonne e righe, le tabelle di permutazione sono definite separatamente per le colonne e per le righe. Innanzitutto, il testo del messaggio viene scritto nella tabella in colonne, quindi le colonne vengono riorganizzate a turno e quindi le righe.

Il numero di opzioni di doppia permutazione aumenta rapidamente all'aumentare delle dimensioni della tabella: per una tabella 3x3 - 36 opzioni, per una tabella 4x4 - 576 opzioni, per una tabella 5x5 - 14400 opzioni. Tuttavia, la doppia permutazione non è molto forte ed è relativamente facile da "craccare" a qualsiasi dimensione della tabella di crittografia.

Cifre a sostituzione semplice. Nella crittografia di sostituzione (sostituzione), i caratteri del testo crittografato vengono sostituiti da caratteri dello stesso o di un altro alfabeto con una regola di sostituzione predeterminata. In un semplice cifrario di sostituzione, ogni carattere del testo di partenza viene sostituito da caratteri dello stesso alfabeto, seguendo la stessa regola in tutto il testo. I cifrari a sostituzione semplice sono spesso indicati come cifrari a sostituzione monoalfabetica.

Sistema di crittografia Caesar . Il cifrario di Cesare è un caso speciale del cifrario a sostituzione semplice (sostituzione alfabetica). Questa cifra prende il nome dall'imperatore romano Gaio Giulio Cesare, che usava questa cifra in corrispondenza.

Durante la crittografia del testo sorgente, ogni lettera è stata sostituita da un'altra lettera dello stesso alfabeto secondo la regola seguente. La lettera sostitutiva è stata determinata spostandosi in ordine alfabetico m dalla lettera originale K lettere. Quando è stata raggiunta la fine dell'alfabeto, è stata eseguita una transizione ciclica al suo inizio. Cesare usava l'alfabeto latino m= 26 e cifra di sostituzione all'offset K= 3. Tale cifrario di sostituzione può essere specificato da una tabella di sostituzione contenente le coppie corrispondenti di lettere di testo in chiaro e di testo cifrato. L'insieme delle possibili sostituzioni per K= 3 è mostrato nella Tabella 6.1.

Tabella 6.1 - Sostituzioni monoalfabetiche (k = 3, m = 26)

Il sistema di crittografia Caesar forma essenzialmente una famiglia di sostituzioni monoalfabetiche per i valori chiave scelti K e 0 £ K < m. Il vantaggio del sistema di crittografia Caesar è la facilità di crittografia e decrittazione.

Gli svantaggi del sistema Caesar includono quanto segue:

Le sostituzioni eseguite secondo il sistema Caesar non mascherano le frequenze di occorrenza di lettere diverse nel testo in chiaro originale;

L'ordine alfabetico è mantenuto nella sequenza delle lettere sostitutive; quando si cambia il valore di k, cambiano solo le posizioni iniziali di tale sequenza;

Il numero di chiavi possibili k è piccolo;

Il cifrario di Cesare si rompe facilmente analizzando le frequenze delle lettere nel testo cifrato.

L'attacco crittoanalitico al sistema di sostituzione monoalfabetica inizia con il conteggio delle frequenze di occorrenza dei caratteri: si determina il numero di occorrenze di ciascuna lettera nel testo cifrato. Quindi la distribuzione di frequenza risultante delle lettere nel testo cifrato viene confrontata con la distribuzione di frequenza delle lettere nell'alfabeto dei messaggi originali. La lettera con la più alta frequenza di occorrenza nel testo cifrato viene sostituita dalla lettera con la più alta frequenza di occorrenza nell'alfabeto e così via La probabilità di rompere con successo il sistema di crittografia aumenta con la lunghezza del testo cifrato. Allo stesso tempo, le idee incorporate nel sistema di crittografia di Cesare si sono rivelate molto fruttuose, come dimostrano le loro numerose modifiche.

Sistema di sostituzione di Cesare affine. In questa trasformazione, la lettera corrispondente al numero T, è sostituito dalla lettera corrispondente al valore numerico ( a + B) modulo m. Tale trasformazione è una mappatura uno-a-uno sull'alfabeto se e solo se gcd ( un, m) - il massimo comun divisore dei numeri a e m è uguale a uno, cioè e. se a e m sono numeri primi relativamente.

Il vantaggio del sistema affine è la comoda gestione delle chiavi: le chiavi di crittografia e decrittazione sono rappresentate in forma compatta come una coppia di numeri ( un, B). Gli svantaggi del sistema affine sono simili agli svantaggi del sistema di crittografia di Caesar. In pratica, il sistema affine veniva utilizzato diversi secoli fa.

Cifre a sostituzione complessa . I codici di sostituzione complessi sono chiamati polialfabetici, poiché ogni carattere del messaggio originale è crittografato utilizzando il proprio codice di sostituzione semplice. La sostituzione multi-alfabetica cambia sequenzialmente e ciclicamente gli alfabeti utilizzati. In R-carattere di sostituzione alfabetico X Lo 0 del messaggio originale viene sostituito dal carattere y 0 dall'alfabeto B 0 , simbolo X 1 - simbolo y 1 dall'alfabeto B 1, ecc.; simbolo xr-1 è sostituito da un carattere si r-1 dall'alfabeto Br-1 , simbolo xrè sostituito dal simbolo si r ancora dall'alfabeto B 0, ecc.

L'effetto dell'uso della sostituzione polialfabetica è che le statistiche naturali della lingua di partenza sono mascherate, poiché un particolare carattere dell'alfabeto di origine UN può essere convertito in diversi caratteri di alfabeti cifrati Bj. Il grado di protezione previsto è teoricamente proporzionale alla durata del periodo R nella sequenza degli alfabeti utilizzati Bj.

Sistema crittografia vigenere . Il sistema Vigenere è simile al sistema di crittografia Caesar, in cui la chiave di sostituzione cambia da lettera a lettera. Questo codice di sostituzione polialfabetico può essere descritto da una tabella di crittografia chiamata tabella di Vigenere (quadrata). La tabella Vigenere viene utilizzata sia per la crittografia che per la decrittazione.

Ha due ingressi:

La riga superiore di caratteri sottolineati utilizzata per leggere la lettera successiva del testo in chiaro originale;

La colonna più a sinistra della chiave.

La sequenza dei tasti si ottiene solitamente dai valori numerici delle lettere della parola chiave. Quando si crittografa il messaggio originale, viene scritto in una riga e sotto di essa viene scritta una parola chiave (o frase).

Se la chiave è più corta del messaggio, viene ripetuta ciclicamente. Nel processo di crittografia, la lettera successiva del testo di origine si trova nella riga superiore della tabella e il valore della chiave successivo nella colonna di sinistra. La lettera successiva del testo cifrato si trova all'intersezione della colonna, determinata dalla lettera cifrata, e la riga, determinata dal valore numerico della chiave.

Cifre una tantum. Quasi tutti i cifrari utilizzati nella pratica sono caratterizzati come condizionalmente sicuri, poiché possono, in linea di principio, essere violati in presenza di una potenza di calcolo illimitata. I codici assolutamente forti non possono essere violati nemmeno con l'uso di una potenza di calcolo illimitata. C'è un solo codice di questo tipo utilizzato nella pratica: un sistema di crittografia una tantum. Una caratteristica del sistema di crittografia monouso è l'utilizzo una tantum della sequenza di chiavi.

Questo codice è assolutamente sicuro se il set di chiavi K io davvero casuale e imprevedibile. Se un crittoanalista tenta di utilizzare tutti i possibili insiemi di chiavi per un dato testo cifrato e di recuperare tutte le possibili versioni del testo originale, si rivelano tutte ugualmente probabili. Non è possibile selezionare il testo originale che è stato effettivamente inviato. È stato teoricamente dimostrato che i sistemi monouso sono sistemi indecifrabili perché il loro testo cifrato non contiene informazioni sufficienti per recuperare il testo in chiaro.

Le possibilità di utilizzare un sistema monouso sono limitate da aspetti puramente pratici. Un punto essenziale è il requisito di un uso una tantum di una sequenza di chiavi casuale. Una sequenza di tasti di lunghezza non inferiore a quella del messaggio deve essere trasmessa al destinatario del messaggio in anticipo o separatamente su un canale segreto. Tale requisito è praticamente difficile da implementare per i moderni sistemi di elaborazione delle informazioni, in cui è necessario crittografare molti milioni di caratteri, tuttavia, in casi giustificati, la creazione di sistemi con cifrature monouso è la più appropriata.

Storicamente, si distinguono gli scrambler con scale esterne e interne. Nei cifrari con una gamma esterna, una sequenza casuale monouso viene utilizzata come chiave, la cui lunghezza è uguale alla lunghezza del messaggio crittografato. Nei cifrari con gamma interna, viene utilizzata come chiave una sequenza casuale riutilizzabile con una lunghezza molto inferiore alla lunghezza del testo crittografato, sulla base della quale si forma la gamma cifrata. Encoder con portata interna, cioè aventi la proprietà di stabilità pratica, sono attualmente predominanti nella costruzione di sistemi di comunicazione criptati. Il loro principale vantaggio è la facilità di gestione delle chiavi, ovvero la loro preparazione, distribuzione, consegna e distruzione. Questo vantaggio consente di creare sistemi di comunicazione crittografati di quasi tutte le dimensioni basati su encoder con portata interna, senza limitarne la geografia e il numero di abbonati.

Lo sviluppo moderno delle tecnologie dell'informazione consente di concentrare una quantità significativa di informazioni su piccoli supporti fisici, il che determina anche l'applicabilità pratica di questo approccio.

Il compito di costruire un sistema di comunicazione crittografato basato su encoder con una gamma esterna può avere diversi approcci alla sua soluzione. Ad esempio, in base al valore limite impostato del volume del documento chiave, vengono determinati il ​​numero ottimale di utenti del sistema e il carico consentito. D'altra parte, è possibile, in base al numero richiesto di abbonati e al carico su di essi, calcolare il volume richiesto del documento chiave.

Metodo di crittografia ridimensionamento . Il gioco è inteso come il processo di imposizione di un cifrario gamma su dati aperti secondo una certa legge. Il cifrario gamma è una sequenza pseudo-casuale generata secondo un determinato algoritmo per crittografare i dati aperti e decrittografare i dati ricevuti.

Il processo di crittografia consiste nel generare una gamma cifrata e applicare la gamma risultante al testo in chiaro originale in modo reversibile, ad esempio utilizzando l'operazione di addizione modulo 2.

Prima della crittografia, i dati aperti sono divisi in blocchi della stessa lunghezza, in genere 64 bit ciascuno. La cifra gamma viene generata come una sequenza della stessa lunghezza. Il processo di decrittazione si riduce alla rigenerazione della gamma di cifratura e alla sovrapposizione di questa gamma sui dati ricevuti.

Il testo cifrato ottenuto con questo metodo è piuttosto difficile da decifrare, poiché la chiave ora è variabile. In sostanza, la gamma del codice deve cambiare in modo casuale per ogni blocco da crittografare. Se il periodo gamma supera la lunghezza dell'intero testo crittografato e l'attaccante non conosce alcuna parte del testo originale, tale cifra può essere risolta solo enumerando direttamente tutte le opzioni chiave. In questo caso, la forza della cifra è determinata dalla lunghezza della chiave.

Articoli correlati in alto