Algoritmi di crittografia moderni. Steganografia. Algoritmi di crittografia. Concetti base dell'algoritmo di crittografia simmetrica Algoritmi di crittografia dei computer

Di base metodi moderni crittografia

Tra i vari metodi di crittografia si possono distinguere i seguenti metodi principali:

  • - Algoritmi di sostituzione o sostituzione: i caratteri del testo sorgente vengono sostituiti con caratteri di un altro (o dello stesso) alfabeto secondo uno schema predeterminato, che sarà la chiave di questo codice. Separatamente, questo metodo in crittosistemi moderni praticamente non utilizzato a causa della forza crittografica estremamente bassa.
  • - Algoritmi di riarrangiamento: i caratteri del testo originale vengono scambiati secondo un determinato principio, che è la chiave segreta. L'algoritmo di permutazione stesso ha una bassa forza crittografica, ma è incluso come elemento in molti sistemi crittografici moderni.
  • - Algoritmi gamma: i caratteri del testo sorgente vengono aggiunti ai caratteri di una determinata sequenza casuale.
  • - Algoritmi basati su complesse trasformazioni matematiche del testo di partenza secondo una determinata formula. Molti di loro utilizzano problemi di matematica irrisolti. Ad esempio, l’algoritmo di crittografia RSA ampiamente utilizzato su Internet si basa sulle proprietà dei numeri primi.
  • - Metodi combinati. Crittografia sequenziale del testo sorgente utilizzando due o più metodi.

Diamo uno sguardo più da vicino agli algoritmi basati su complesse trasformazioni matematiche e metodi combinati, che sono i più comunemente utilizzati per proteggere i dati nei moderni sistemi informativi.

Algoritmi basati su trasformazioni matematiche complesse

Algoritmo RSA

L'algoritmo RSA (dopo le prime lettere dei cognomi dei suoi creatori Rivest - Shamir - Adleman) si basa sulle proprietà dei numeri primi (e quelli molto grandi). I numeri primi sono quei numeri che non hanno divisori diversi da se stessi e uno. E i numeri coprimi sono quei numeri che non hanno divisori comuni diversi da 1.

Innanzitutto, devi scegliere due numeri primi molto grandi (i numeri primi grandi sono necessari per costruire chiavi grandi e forti. Ad esempio, il programma Unix ssh-keygen genera chiavi a 1024 bit per impostazione predefinita). Come risultato della moltiplicazione di p e q, viene determinato il parametro n. Quindi seleziona numero casuale e, e deve essere primo relativamente al numero (n) = (p - 1)*(q - 1). Viene trovato un numero d per il quale la relazione è vera

(e*d) mod (n) = 1.

Mod è il resto della divisione, cioè se e moltiplicato per d viene diviso per (n), il resto dovrebbe essere 1. In altre parole, i numeri (e*d - 1) e (n) dovrebbero essere divisibili per un numero intero .

La chiave pubblica è una coppia di numeri e e n, mentre la chiave privata è d e n. Durante la crittografia fonteè considerata una serie numerica e viene eseguita un'operazione su ciascuno dei suoi numeri, che deve essere inferiore a n

C(i) = (M(i) e) mod n. (1)

Il risultato è la sequenza C(i), che costituisce il crittotesto. La decodifica delle informazioni avviene secondo la formula

M(i) = (C(i) d) mod n. (2)

Come puoi vedere, la decrittazione richiede la conoscenza della chiave segreta.

Consideriamo un esempio utilizzando numeri piccoli. Sia p = 3, q ​​​​= 7. Allora n = = p*q = 21. Scegliamo e = 5. Dalla formula (d*5) mod 12 = 1 calcoliamo d = 17. Pertanto il pubblico la chiave è 17, 21, la chiave segreta è 5, 21.

Crittifichiamo la sequenza "2345":

C1 = 2 17 mod 21 = 11;

C2 = 3 17 mod 21 = 12;

C3 = 4 17 mod 21 = 16;

C4 = 5 17 mod 21 = 17.

Crittotesto - 11 12 16 17. Controlliamo la decrittazione:

M1 = 115 mod 21 = 2;

M2 = 125 mod 21 = 3;

M3 = 16 5 mod 21 = 4;

M4 = 17 5 mod 21 = 5;

Come puoi vedere, il risultato coincide con il testo in chiaro originale.

Il sistema crittografico RSA è ampiamente utilizzato su Internet. Quando gli utenti si connettono a un server sicuro utilizzando il protocollo Secure Socket Layer (SSL), Secure Socket Layer è un protocollo che garantisce la trasmissione sicura dei dati su una rete; combina un sistema crittografico a chiave pubblica e blocca la crittografia dei dati., installa un certificato WebMoney sul tuo PC o si connette a un server remoto utilizzando Open SSH o SecureShell, la maggior parte non sospetta nemmeno che tutti questi programmi utilizzino la crittografia a chiave pubblica utilizzando le idee della RSA algoritmo.

Questo sistema è davvero così affidabile?

Sin dalla sua creazione, RSA è stata costantemente soggetta ad attacchi di forza bruta (attacco di forza bruta) - un attacco effettuato semplicemente provando tutte le chiavi possibili o più frequenti (password). Nel secondo caso, la forza bruta è abbastanza comune chiamata a "attacco al dizionario". Nel 1978 gli autori dell'algoritmo pubblicarono un articolo in cui presentavano una stringa crittografata utilizzando il metodo appena inventato. La prima persona che decifrava il messaggio riceveva una ricompensa di 100 dollari, ma ciò richiedeva la divisione di un numero di 129 cifre in due fattori. Questa è stata la prima competizione a crackare RSA. Il problema è stato risolto solo 17 anni dopo la pubblicazione dell'articolo.

La forza crittografica di RSA si basa sul presupposto che sia estremamente difficile, se non impossibile, determinare la chiave privata dalla chiave pubblica. Per fare ciò era necessario risolvere il problema dell'esistenza dei divisori di un numero intero enorme. Fino ad ora nessuno è riuscito a risolverlo utilizzando metodi analitici e l’algoritmo RSA può essere violato solo con la forza bruta. A rigor di termini, anche l’affermazione che il problema della fattorizzazione è difficile e che rompere il sistema RSA è difficile non è dimostrata.

La società RSA (http://www.rsa.ru) organizza regolarmente gare per decifrare i propri codici (e non solo i propri). I precedenti concorsi sono stati vinti dall'organizzazione Distributed.net (http://www.distributed.net), una comunità Internet di volontari.

I membri di Distributed.net scaricano un piccolo programma client sul proprio PC, che si collega al server centrale e riceve i dati per i calcoli. Quindi tutti i dati vengono caricati sul server centrale e il client riceve il blocco successivo di informazioni iniziali. E questo accade finché tutte le combinazioni non sono state risolte. Gli utenti, partecipanti al sistema, sono uniti in squadre e il sito mantiene le valutazioni sia delle squadre che dei paesi. Ad esempio, Distributed.net, un partecipante alla competizione di cracking RC5-64 (cifratura a blocchi RSA che utilizza una chiave a 64 bit), è riuscito a decifrarlo dopo cinque anni (1.757 giorni). Durante questo periodo, hanno partecipato al progetto 327.856 utenti e sono state risolte più di 15.268 * 10 18 opzioni chiave. Si è scoperto che la frase "alcune cose è meglio non leggerle" era crittografata (non senza umorismo). Le raccomandazioni generali per la cifratura RC5-64 sono le seguenti: l’algoritmo è abbastanza potente per le esigenze quotidiane, ma non è consigliabile crittografare con esso dati che rimangono segreti per più di cinque anni”.

Crittografia probabilistica

Un tipo di crittosistema a chiave pubblica è la crittografia probabilistica, sviluppata da Shafi Golwasser e Silvio Minnelli. La sua essenza è subordinare l'algoritmo di crittografia E a modelli probabilistici. Quali sono i vantaggi di questo approccio? Ad esempio, nel sistema RSA, 0 e 1 non sono "mascherati". Questo problema viene risolto con successo da algoritmi probabilistici, poiché corrispondono al testo in chiaro M non solo con il crittotesto C, ma con qualche elemento dell'insieme di crittotesti CM. Inoltre, ogni elemento di questo insieme viene selezionato con una certa probabilità. In altre parole, per ogni testo in chiaro M, il risultato dell'algoritmo E sarà una variabile casuale. Potrebbe sembrare che in questo caso sarà impossibile decrittografare le informazioni, ma questo non è affatto vero. Affinché la decrittazione sia possibile, è necessario che per diversi testi in chiaro M 1 e M 2 gli insiemi CM 1 e CM 2 non si intersechino. Vorrei anche dire che gli algoritmi di crittografia probabilistici sono più affidabili di quelli deterministici. In questo ambito le più comuni sono la crittografia probabilistica basata su funzioni RSA e il sistema crittografico El-Gamala.

Metodi di crittografia combinati

Uno dei requisiti più importanti per un sistema di crittografia è la sua elevata forza crittografica. Tuttavia, aumentarlo per qualsiasi metodo di crittografia porta, di norma, a una significativa complicazione del processo di crittografia stesso e ad un aumento dei costi delle risorse (tempo, hardware, riduzione larghezza di banda ecc.) e di conseguenza - il tempo di funzionamento dei sistemi crittografici.

Un mezzo abbastanza efficace per aumentare la forza della crittografia è l'uso combinato di diversi in vari modi crittografia, ad es. crittografia sequenziale del testo originale utilizzando due o più metodi.

Come hanno dimostrato gli studi, la forza della crittografia combinata non è inferiore al prodotto della forza dei metodi utilizzati.

A rigor di termini, è possibile combinare qualsiasi metodo di crittografia e in qualsiasi quantità, ma in pratica le combinazioni più diffuse sono le seguenti:

sostituzione + gamma;

riarrangiamento + gamma;

gioco d'azzardo + gioco d'azzardo;

sostituzione + permutazione;

Un tipico esempio di cifrario combinato è il National Data Encryption Standard (DES) statunitense.

Standard crittografico DES

Nel 1973, il National Bureau of Standards degli Stati Uniti iniziò a sviluppare un programma per creare uno standard per la crittografia dei dati informatici. Fu indetto un concorso tra società di sviluppo, vinto dall'IBM, che nel 1974 presentò un algoritmo di crittografia noto come DES (Data Encryption Standard).

In questo algoritmo, i vettori di input a 64 bit, chiamati blocchi di testo in chiaro, vengono convertiti in vettori di output a 64 bit, chiamati blocchi di testo cifrato, utilizzando una chiave binaria K a 56 bit. Il numero di chiavi distinte dell'algoritmo DES è 2 56 .

L'algoritmo è implementato su 16 cicli di crittografia simili, dove l'i-esimo ciclo utilizza la chiave ciclica Ki, che è un campione generato algoritmicamente di 48 dei 56 bit della chiave Ki, i = 1,2,...,16 .

L'algoritmo fornisce un'elevata robustezza, ma risultati recenti lo hanno dimostrato tecnologia moderna consente di creare un dispositivo informatico del valore di circa 1 milione di dollari USA, in grado di aprire una chiave segreta utilizzando la forza bruta in una media di 3,5 ore.

A causa delle dimensioni ridotte della chiave, si è deciso di utilizzare l'algoritmo DES per chiudere le informazioni commerciali. L'implementazione pratica dell'enumerazione di tutte le chiavi in ​​queste condizioni non è economicamente fattibile, poiché i costi di implementazione dell'enumerazione non corrispondono al valore dell'informazione nascosta dalla cifra.

L'algoritmo DES è stato il primo esempio di produzione diffusa e implementazione di mezzi tecnici nel campo della sicurezza informatica. Il National Bureau of Standards degli Stati Uniti testa le implementazioni hardware dell'algoritmo DES proposte dalle società di sviluppo su uno speciale banco di prova. Solo dopo i risultati positivi dei test, il produttore riceve un certificato dal National Bureau of Standards per il diritto di vendere il proprio prodotto. Ad oggi sono state certificate diverse decine di prodotti realizzati con basi di elementi diversi.

È stata raggiunta un'elevata velocità di crittografia. Nei migliori prodotti è di 45 Mbit/s. Alcuni prodotti hardware costano meno di $ 100.

I principali ambiti di applicazione dell’algoritmo DES:

archiviazione di dati su computer (crittografia di file, password);

autenticazione del messaggio (avendo un messaggio e un gruppo di controllo, è facile verificare l'autenticità del messaggio;

sistema di pagamento elettronico (per transazioni con un'ampia clientela e tra banche);

Scambio elettronico di informazioni commerciali (lo scambio di dati tra acquirenti, venditori e banchiere è protetto da modifiche e intercettazioni.

Successivamente è apparsa una modifica del DES: Triple DES (“triplo DES” - poiché crittografa le informazioni tre volte con l'algoritmo DES “normale”), esente dallo svantaggio principale della versione precedente: una chiave breve; qui è il doppio del tempo. Ma, come si è scoperto, Triple DES ha ereditato altri punti deboli del suo predecessore: la mancanza di capacità di elaborazione parallela per la crittografia e la bassa velocità.

GOST 28147-89

Nel 1989, l’URSS sviluppò un codice a blocchi da utilizzare come standard governativo di crittografia dei dati. Lo sviluppo è stato accettato e registrato come GOST 28147-89. L'algoritmo è stato introdotto nel 1990. E sebbene il campo di applicazione di questo algoritmo di crittografia sia ancora in fase di chiarimento, l’inizio della sua implementazione, in particolare nel sistema bancario, è già stato fatto. L'algoritmo è un po' lento, ma ha una forza crittografica molto elevata.

In termini generali, GOST 28147-89 è simile a DES. Lo schema a blocchi dell'algoritmo GOST differisce dallo schema a blocchi dell'algoritmo DES solo per l'assenza di una permutazione iniziale e per il numero di cicli di crittografia (32 in GOST contro 16 nell'algoritmo DES).

La chiave dell'algoritmo GOST è un array costituito da vettori a 32 dimensioni X 1, X 2,…X 8. La chiave ciclica del ciclo i-esimo K i è pari a Xs, dove la serie di valori i da 1 a 32 corrisponde alla seguente serie di valori s:

1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,8,7,6,5,4,3,2,1.

La cifratura GOST utilizza una chiave a 256 bit e il volume dello spazio della chiave è 2.256. Nessuno dei sistemi informatici generici attualmente esistenti o che si prevede verranno implementati nel prossimo futuro può essere utilizzato per selezionare una chiave in meno di molte centinaia di anni. Lo standard russo è stato progettato con un ampio margine; in termini di durabilità, è di molti ordini di grandezza superiore allo standard DES americano con la sua dimensione effettiva della chiave di 56 bit e un volume di spazio chiave di soli 2 56, che chiaramente non è sufficiente. . La chiave dell'algoritmo crittografico GOST è lunga 32 byte (256 bit) e quattro volte più grande della chiave DES. Il tempo necessario per scorrere tutte le chiavi non aumenta di quattro volte, ma di 256 32-8 = 256 24, che si traduce in cifre astronomiche). A questo proposito, i DES possono essere di ricerca o di interesse scientifico piuttosto che di interesse pratico.

Conclusioni sull'uso dei moderni algoritmi di crittografia

Attualmente, i tre principali standard di crittografia più comunemente utilizzati sono:

  • -DES;
  • - GOST 28147-89 - un metodo domestico, caratterizzato da un'elevata forza crittografica;
  • - RSA è un sistema in cui la crittografia e la decrittografia vengono eseguite utilizzando chiavi diverse.

Lo svantaggio di RSA è la velocità di crittografia piuttosto bassa, ma fornisce una firma elettronica personale basata su una chiave segreta unica per ciascun utente. Le caratteristiche dei metodi di crittografia più diffusi sono mostrate nella Tabella 1.

Tabella 1 Caratteristiche dei metodi di crittografia più comuni


La crittografia è il metodo crittografico più utilizzato per mantenere la riservatezza delle informazioni e protegge i dati dall'accesso non autorizzato. Innanzitutto, diamo un'occhiata ai metodi di base. protezione crittografica informazioni. In una parola, crittografia- la scienza della sicurezza informatica utilizzando metodi matematici. Esiste anche una scienza opposta alla crittografia e dedicata ai metodi di apertura delle informazioni protette: crittoanalisi. La combinazione di crittografia e crittoanalisi viene comunemente chiamata crittologia. I metodi crittografici possono essere classificati in vari modi, ma molto spesso sono divisi in base al numero di chiavi utilizzate nei corrispondenti algoritmi crittografici (vedi Fig. 1):

  1. Keyless, che non utilizza alcuna chiave.
  2. Chiave singola: utilizzano alcuni parametri chiave aggiuntivi, solitamente una chiave segreta.
  3. A due chiavi, utilizzando due chiavi nei calcoli: segreta e pubblica.

Riso. 1. Crittoalgoritmi

Panoramica dei metodi crittografici

La crittografia è il principale metodo di protezione; Vediamolo in dettaglio di seguito.

Vale la pena spendere qualche parola sugli altri metodi crittografici:

  1. Una firma elettronica viene utilizzata per confermare l'integrità e la paternità dei dati. L'integrità dei dati significa che i dati non sono stati alterati accidentalmente o intenzionalmente durante l'archiviazione o la trasmissione.
    Gli algoritmi di firma elettronica utilizzano due tipi di chiavi:
    • la chiave segreta viene utilizzata per calcolare la firma elettronica;
    • la chiave pubblica viene utilizzata per verificarlo.
    Quando si utilizza un algoritmo di firma elettronica crittograficamente potente e con la corretta memorizzazione e utilizzo della chiave segreta (ovvero quando è impossibile per chiunque altro oltre al proprietario utilizzare la chiave), nessun altro è in grado di calcolare la firma elettronica corretta di qualsiasi documento elettronico.
  2. L'autenticazione consente di verificare che l'utente (o computer remoto) è davvero chi dice di essere. Lo schema più semplice l'autenticazione è basata su password: utilizza una password come elemento segreto, che viene presentato dall'utente durante il controllo. Un tale schema si è rivelato debole se non vengono applicate speciali misure amministrative e tecniche per rafforzarlo. E in base alla crittografia o all'hashing (vedi sotto), puoi creare schemi di autenticazione utente davvero potenti.
  3. Esistono vari metodi di checksum crittografico:
    • hashing con chiave e senza chiave;
    • calcolo dei prefissi d'imitazione;
    • utilizzo dei codici di autenticazione dei messaggi.
    Tutti questi metodi, infatti, in vari modi, calcolano un certo valore a partire da dati di dimensione arbitraria, con o senza chiave segreta. somma di controllo dimensione fissa, corrispondente univocamente ai dati originali.
    Questo checksum crittografico è ampiamente utilizzato in vari metodi protezione delle informazioni, ad esempio:
    • confermare l'integrità dei dati nei casi in cui l'uso della firma elettronica è impossibile (ad esempio, a causa dell'elevato consumo di risorse) o è ridondante;
    • negli stessi schemi di firma elettronica, di solito è l’hash dei dati ad essere “firmato”, e non l’intero dato;
    • in vari schemi di autenticazione dell'utente.
  4. I generatori di numeri casuali e pseudo-casuali consentono di creare sequenze di numeri casuali molto utilizzate in crittografia, in particolare:
    • sono necessari numeri casuali per generare chiavi segrete, che, idealmente, dovrebbero essere completamente casuali;
    • i numeri casuali sono utilizzati in molti algoritmi di firma elettronica;
    • i numeri casuali vengono utilizzati in molti schemi di autenticazione.
    Non è sempre possibile ottenere numeri assolutamente casuali: ciò richiede generatori hardware di alta qualità. Tuttavia, sulla base di algoritmi di crittografia simmetrica, è possibile costruire generatori di numeri pseudo-casuali di alta qualità.
Crittografia

Crittografia l'informazione è una trasformazione informazioni aperte in uno crittografato (che molto spesso viene chiamato testo cifrato O crittogramma) e viceversa. La prima parte di questo processo si chiama crittografia, secondo - decrittazione.

Puoi pensare alla crittografia come alla seguente formula:

C = E k1 (M),

Dove:
M(messaggio) - informazioni aperte,
CON(testo cifrato) - il testo cifrato ottenuto come risultato della crittografia,
E(crittografia) - una funzione di crittografia che esegue trasformazioni crittografiche M,
k1(tasto) - parametro della funzione E, chiamato chiave crittografia.

Nello standard GOST 28147-89 (lo standard definisce l'algoritmo di crittografia simmetrica domestica) il concetto chiaveè definito come segue: "Uno stato segreto specifico di alcuni parametri di un algoritmo di trasformazione crittografica, che garantisce la selezione di una trasformazione da un insieme di tutte le possibili trasformazioni per un dato algoritmo."

La chiave può appartenere a uno specifico utente o gruppo di utenti ed essere univoca per loro. Le informazioni crittografate utilizzando una chiave specifica possono essere decrittografate solo utilizzando solo la stessa chiave o una chiave ad essa correlata da una determinata relazione.

La decrittazione può essere rappresentata in modo simile:

M" = D k2 (C),

Dove:
M"- messaggio ricevuto a seguito della decrittazione,
D(decifratura) - funzione di decrittazione; proprio come la funzione di crittografia, esegue trasformazioni crittografiche sul testo cifrato,
k2- chiave di decrittazione.

Per ottenere dopo la decrittazione il testo in chiaro corretto (cioè lo stesso precedentemente crittografato: M" = M), devono essere soddisfatte contemporaneamente le seguenti condizioni:

  1. La funzione di decrittografia deve corrispondere alla funzione di crittografia.
  2. La chiave di decrittografia deve corrispondere alla chiave di crittografia.

Se manca la chiave corretta k2 ricevi il messaggio originale M" = M utilizzando la funzione corretta D impossibile. La parola “impossibile” in questo caso di solito significa l’impossibilità di calcolare tempo reale con le risorse informatiche esistenti.

Gli algoritmi di crittografia possono essere suddivisi in due categorie (vedere Fig. 1):

  1. Algoritmi di crittografia simmetrica.
  2. Algoritmi di crittografia asimmetrica.

Negli algoritmi crittografia simmetrica per la decrittazione viene solitamente utilizzata la stessa chiave utilizzata per la crittografia, oppure una chiave ad essa correlata da qualche semplice relazione. Quest'ultimo è molto meno comune, soprattutto nei moderni algoritmi di crittografia. Tale chiave (comune per la crittografia e la decrittografia) viene solitamente chiamata semplicemente chiave di crittografia.

IN crittografia asimmetrica chiave di crittografia k1 facilmente calcolato dalla chiave k2 in modo tale da rendere impossibile il calcolo inverso. Ad esempio, la relazione chiave potrebbe essere questa:

k1 = a k2 mod p,

dove a e p sono i parametri dell'algoritmo di crittografia, che hanno una dimensione sufficientemente grande.

Questa relazione chiave viene utilizzata anche negli algoritmi di firma elettronica.

La caratteristica principale dell'algoritmo di crittografia è forza crittografica, che ne determina la resistenza alla divulgazione mediante metodi di crittoanalisi. Tipicamente questa caratteristica è determinata dall'intervallo di tempo richiesto per decifrare il codice.

La crittografia simmetrica è meno conveniente perché quando si trasmettono informazioni crittografate a qualcuno, è necessario che il destinatario riceva in anticipo una chiave per decrittografare le informazioni. La crittografia asimmetrica non presenta questo problema (poiché la chiave pubblica può essere trasmessa liberamente sulla rete), tuttavia presenta i suoi problemi, in particolare il problema dello spoofing della chiave pubblica e della bassa velocità di crittografia. Molto spesso, la crittografia asimmetrica viene utilizzata insieme alla crittografia simmetrica, per trasmettere la chiave di crittografia simmetrica, che crittografa la maggior parte dei dati. Tuttavia, gli schemi di archiviazione e trasferimento delle chiavi sono un argomento per un articolo separato. Qui mi permetterò di affermare che la crittografia simmetrica viene utilizzata molto più spesso della crittografia asimmetrica, quindi il resto dell'articolo sarà dedicato solo alla crittografia simmetrica.

Esistono due tipi di crittografia simmetrica:

  • Blocca la crittografia- le informazioni vengono suddivise in blocchi di lunghezza fissa (ad esempio 64 o 128 bit), dopodiché questi blocchi vengono crittografati uno per uno. Inoltre, in diversi algoritmi di crittografia o anche in diverse modalità operative dello stesso algoritmo, i blocchi possono essere crittografati indipendentemente l'uno dall'altro o "con concatenamento" - quando il risultato della crittografia del blocco di dati corrente dipende dal valore del blocco precedente o sul risultato della crittografia del blocco precedente.
  • Crittografia del flusso- necessario, prima di tutto, nei casi in cui le informazioni non possono essere suddivise in blocchi, ad esempio un certo flusso di dati, ciascun carattere dei quali deve essere crittografato e inviato da qualche parte, senza attendere che i dati rimanenti siano sufficienti a formare il blocco. Pertanto, gli algoritmi di crittografia del flusso crittografano i dati bit per bit o carattere per carattere. Anche se vale la pena dire che alcune classificazioni non distinguono tra crittografia a blocchi e crittografia a flusso, considerando che la crittografia a flusso è la crittografia di blocchi di lunghezza unitaria.

Diamo un'occhiata all'aspetto degli algoritmi di crittografia simmetrica a blocchi dall'interno. Struttura degli algoritmi di crittografia

La stragrande maggioranza dei moderni algoritmi di crittografia funziona in modo molto simile: viene eseguita una certa trasformazione sul testo cifrato utilizzando la chiave di crittografia, che viene ripetuta un certo numero di volte (cicli). Allo stesso tempo, a seconda del tipo di trasformazione ripetuta, gli algoritmi di crittografia sono solitamente suddivisi in diverse categorie. Anche qui ci sono varie classificazioni, ne darò una. Quindi, in base alla loro struttura, gli algoritmi di crittografia sono classificati come segue:

  1. Algoritmi basati sulla rete Feistel.

    La rete Feistel prevede la divisione del blocco dati elaborato in diversi sottoblocchi (il più delle volte in due), uno dei quali viene elaborato da una determinata funzione F() e si sovrappone a uno o più altri sottoblocchi. Nella fig. La Figura 2 mostra la struttura più comune degli algoritmi basati sulla rete Feistel.

    Riso. 2. Struttura di algoritmi basati sulla rete di Feistel.

    Argomento della funzione aggiuntiva F(), indicato in Fig. 2 come Ki, chiamato chiave rotonda. La chiave rotonda è il risultato dell'elaborazione della chiave di crittografia mediante la procedura di espansione della chiave, il cui compito è ottenere il numero di chiavi richiesto Ki da una chiave di crittografia iniziale di dimensione relativamente piccola (attualmente, una dimensione di 128 bit è considerata sufficiente per una chiave di crittografia simmetrica). Nei casi più semplici, la procedura di espansione della chiave si limita a suddividere la chiave in più frammenti, che vengono utilizzati alternativamente nei cicli di cifratura; Molto più spesso, la procedura di espansione delle chiavi è piuttosto complessa, e le chiavi Ki dipendono dai valori della maggior parte dei bit della chiave di crittografia originale.

    La sovrapposizione di un sottoblocco elaborato su uno non elaborato viene spesso eseguita utilizzando l'operazione logica XOR (come mostrato in Fig. 2). Molto spesso, invece di XOR, qui viene utilizzata l'addizione del modulo 2 n, Dove N- dimensione del sottoblocco in bit. Dopo la sovrapposizione, i sottoblocchi vengono scambiati, ovvero nel ciclo successivo dell'algoritmo viene elaborato un altro sottoblocco di dati.

    Questa struttura di algoritmi di crittografia prende il nome da Horst Feistel, uno degli sviluppatori dell'algoritmo di crittografia Lucifer e dell'algoritmo DES (Data Encryption Standard) sviluppato sulla sua base, un precedente (ma ancora ampiamente utilizzato) standard di crittografia statunitense. Entrambi questi algoritmi hanno una struttura simile a quella mostrata in Fig. 2. Tra gli altri algoritmi basati sulla rete Feistel, possiamo citare l'esempio dello standard di crittografia domestico GOST 28147-89, così come altri algoritmi molto noti: RC5, Blowfish, TEA, CAST-128, ecc.

    La maggior parte degli algoritmi di crittografia moderni si basano sulla rete Feistel, a causa dei numerosi vantaggi di tale struttura, tra cui vale la pena notare:

    • Gli algoritmi basati sulla rete Feistel possono essere progettati in modo tale che lo stesso codice algoritmo possa essere utilizzato per la crittografia e la decrittografia: la differenza tra queste operazioni può essere solo nell'ordine di applicazione delle chiavi Ki; Questa proprietà dell'algoritmo è particolarmente utile se implementata in hardware o su piattaforme con risorse limitate; Un esempio di tale algoritmo è GOST 28147-89.
  2. Gli algoritmi basati sulla rete Feistel sono i più studiati: a tali algoritmi è stata dedicata un'enorme quantità di ricerche crittoanalitiche, il che rappresenta un indubbio vantaggio sia nello sviluppo dell'algoritmo che nella sua analisi.

    Esiste anche una struttura più complessa della rete Feistel, un esempio della quale è mostrato in Fig. 3.

    Riso. 3. Struttura della rete Feistel.

    Questa struttura si chiama generalizzato O ampliato rete Feistel ed è utilizzata molto meno frequentemente rispetto alla tradizionale rete Feistel. Un esempio di tale rete Feistel è l'algoritmo RC6.

  3. Basato su algoritmi reti di permutazione (Rete SP- Rete di sostituzione-permutazione).

    A differenza della rete Feistel, le reti SP elaborano l’intero blocco crittografato in un unico round. L'elaborazione dei dati si riduce principalmente alle sostituzioni (quando, ad esempio, un frammento di un valore di input viene sostituito da un altro frammento secondo una tabella di sostituzione, che può dipendere dal valore della chiave Ki) e permutazioni a seconda della chiave Ki(uno schema semplificato è mostrato in Fig. 4).

    Riso. 4. Rete di sostituzione-permutazione.

    Tuttavia, tali operazioni sono tipiche anche per altri tipi di algoritmi di crittografia, quindi, a mio avviso, il nome “rete di sostituzione-permutazione” è abbastanza arbitrario.

    Le reti SP sono molto meno comuni delle reti Feistel; Esempi di reti SP includono gli algoritmi Serpent o SAFER+.

  4. Algoritmi con struttura "piazza"(Piazza).

    La struttura “quadrata” è caratterizzata dalla rappresentazione del blocco dati crittografato sotto forma di un array di byte bidimensionale. Le trasformazioni crittografiche possono essere eseguite su singoli byte di un array, nonché sulle sue righe o colonne.

    La struttura dell'algoritmo prende il nome dall'algoritmo Square, sviluppato nel 1996 da Vincent Rijmen e Joan Daemen, i futuri autori dell'algoritmo Rijndael, che divenne il nuovo standard di crittografia AES statunitense dopo aver vinto un concorso aperto. Anche l'algoritmo Rijndael ha una struttura simile a quella quadrata; anche esempi includono l'algoritmo Shark (uno sviluppo precedente di Ridgeman e Damen) e Crypton. Lo svantaggio degli algoritmi con struttura “quadrata” è la loro mancanza di conoscenza, che non ha impedito all’algoritmo Rijndael di diventare il nuovo standard statunitense.

    Riso. 5. Algoritmo di Rijndael.

    Nella fig. La Figura 5 mostra un esempio di un'operazione su un blocco dati eseguita dall'algoritmo Rijndael.

  5. Algoritmi con struttura non standard, cioè quegli algoritmi che non possono essere classificati in nessuna delle tipologie elencate. È chiaro che l'ingegno può essere illimitato, quindi classifica tutto possibili opzioni gli algoritmi di crittografia sembrano complessi. Un esempio di algoritmo con struttura non standard è l'algoritmo FROG, unico nella sua struttura, in ogni ciclo del quale due byte di dati crittografati vengono modificati secondo regole abbastanza complesse (vedi Fig. 6).

    Riso. 6. Modifica di due byte di dati crittografati.

    I confini rigidi tra le strutture sopra descritte non sono definiti, quindi molto spesso esistono algoritmi classificati da vari esperti come diversi tipi strutture. Ad esempio, l'algoritmo CAST-256 viene definito dal suo autore una rete SP e molti esperti la chiamano rete Feistel estesa. Un altro esempio è l’algoritmo HPC, chiamato dal suo autore rete Feistel, ma considerato dagli esperti un algoritmo con una struttura non standard.

Inviare il tuo buon lavoro alla knowledge base è facile. Utilizza il modulo sottostante

Studenti, dottorandi, giovani scienziati che utilizzano la base di conoscenze nei loro studi e nel loro lavoro ti saranno molto grati.

Corsi

Sull'argomento:

Algoritmi di crittografia dei dati

Introduzione

1. Scopo e struttura degli algoritmi di crittografia

1.1 Panoramica dei metodi crittografici

2. Algoritmo di crittografia simmetrica

2.1 Struttura degli algoritmi di crittografia

3. Applicazione di un algoritmo di crittografia simmetrica

Conclusione

Riferimenti

Introduzione

Il problema di proteggere le informazioni trasformandole in modo che non possano essere lette da un estraneo preoccupa la mente umana fin dall'antichità.

Perché il problema dell'utilizzo di metodi crittografici nei sistemi informativi è diventato particolarmente rilevante in questo momento?

Ad oggi, ogni forma di commercio conosciuta è potenzialmente suscettibile di frode, dai contrassegni di mercato alle fatture false e alla valuta contraffatta. Schemi commercio elettronico nessuna eccezione. Solo la crittografia avanzata può prevenire queste forme di attacco.

La moneta elettronica senza crittografia non sopravviverà. Internet si sta gradualmente trasformando in un'autostrada dell'informazione. Ciò è dovuto al fatto che il numero di utenti Internet è in costante crescita, come una valanga. Oltre al consueto scambio di informazioni, nella Rete penetrano rapporti commerciali che comportano sempre pagamenti in denaro. Esistono molti esempi di commercio online di vari beni e servizi. Questo è il commercio tradizionale, supportato dalle capacità della Rete, quando l'acquirente può scegliere un prodotto da enormi cataloghi e persino esaminare questo prodotto (tale servizio, basato sul trasferimento di immagini tridimensionali, sta diventando sempre più diffuso). Questo è l'accesso ai servizi turistici, quando puoi informarti in anticipo sul luogo del tuo viaggio e sul livello dei servizi, guardare le fotografie (natura, ristoranti, piscine, arredamento delle camere...), prenotare un viaggio e prenotare biglietti aerei. Esistono numerosi esempi di questo tipo e molti di essi implicano pagamenti in denaro.

Per quanto riguarda i pagamenti con carta di credito, i suoi svantaggi sono evidenti: è necessario procurarsi una carta (e in Russia non tutti sanno cosa sia), si teme anche che tutti su Internet conoscano i codici della tua carta di credito e che le persone malvagie lo sappiano. cancella il tuo account. In effetti, la probabilità di tale frode non è maggiore di quella che ti verrà dato denaro contraffatto quando cambi valuta. E in generale, a moneta elettronica niente più problemi di quelli ordinari. Sono stati sviluppati diversi sistemi di pagamento per effettuare pagamenti su Internet. Che utilizzano abilmente le carte di credito esistenti o si affidano alla pura moneta elettronica, ovvero a un file system sicuro che memorizza i record dello stato del tuo account. Esistono più di una dozzina di sistemi di questo tipo nel mondo, e ce ne sono diversi anche in Russia, il più comune dei quali è CyberPlat.

1. I pagamenti su Internet comportano il trasferimento di informazioni speciali che non possono essere divulgate a persone non autorizzate.

2. Quando si effettuano i pagamenti, è necessario garantire che tutti gli attori (acquirente, venditore, banca o sistema di pagamento) sono esattamente chi dicono di essere.

Bastano questi due fattori per capire che senza crittografia i pagamenti su Internet sono impossibili, e l’idea stessa di moneta elettronica implica protezione affidabile informazioni e la garanzia che nessuno potrà sostituirsi al partecipante alla transazione e quindi rubare moneta elettronica.

L'emergere del nuovo computer potenti, tecnologie di rete e di neutron computing, ha permesso di screditare sistemi crittografici fino a poco tempo fa considerati indistruttibili.

Tutto ciò spinge costantemente i ricercatori a creare nuovi crittosistemi e ad analizzare attentamente quelli esistenti.

Rilevanza e importanza del problema dell'assicurazione sicurezza delle informazioni a causa dei seguenti fattori:

* Gli attuali livelli e tassi di sviluppo degli strumenti di sicurezza dell'informazione sono molto indietro rispetto ai livelli e ai tassi di sviluppo delle tecnologie dell'informazione.

* Elevati tassi di crescita della flotta personal computer, utilizzato in vari ambiti dell'attività umana.

1. Scopo e struttura degli algoritmi di crittografia

La crittografia è il metodo crittografico più utilizzato per mantenere la riservatezza delle informazioni e protegge i dati dall'accesso non autorizzato. Per prima cosa, diamo un'occhiata ai metodi di base per la protezione delle informazioni crittografiche. In una parola, crittografia- la scienza della sicurezza informatica utilizzando metodi matematici. Esiste anche una scienza opposta alla crittografia e dedicata ai metodi di apertura delle informazioni protette: crittoanalisi. La combinazione di crittografia e crittoanalisi viene comunemente chiamata crittologia. I metodi crittografici possono essere classificati in vari modi, ma molto spesso sono divisi in base al numero di chiavi utilizzate nei corrispondenti algoritmi crittografici (vedi Fig. 1):

1. Keyless, che non utilizza alcuna chiave.

2. Chiave singola: utilizzano alcuni parametri chiave aggiuntivi, solitamente una chiave segreta.

3. A due chiavi, utilizzando due chiavi nei calcoli: segreta e pubblica.

Riso. 1. Crittoalgoritmi

1.1 Panoramica dei metodi crittografici

La crittografia è il principale metodo di protezione; Vediamolo in dettaglio di seguito.

Vale la pena spendere qualche parola sugli altri metodi crittografici:

1. Una firma elettronica viene utilizzata per confermare l'integrità e la paternità dei dati. L'integrità dei dati significa che i dati non sono stati alterati accidentalmente o intenzionalmente durante l'archiviazione o la trasmissione.

Gli algoritmi di firma elettronica utilizzano due tipi di chiavi:

o la chiave segreta viene utilizzata per calcolare la firma elettronica;

o La chiave pubblica viene utilizzata per verificarlo.

Quando si utilizza un algoritmo di firma elettronica crittograficamente potente e con la corretta memorizzazione e utilizzo della chiave segreta (ovvero quando è impossibile per chiunque altro oltre al proprietario utilizzare la chiave), nessun altro è in grado di calcolare la firma elettronica corretta di qualsiasi documento elettronico.

2. L'autenticazione consente di verificare che l'utente (o il computer remoto) sia realmente chi afferma di essere. Lo schema di autenticazione più semplice è quello tramite password: la password viene utilizzata come elemento segreto, che viene presentato dall'utente durante il controllo. Un tale schema si è rivelato debole se non vengono applicate speciali misure amministrative e tecniche per rafforzarlo. E in base alla crittografia o all'hashing (vedi sotto), puoi creare schemi di autenticazione utente davvero potenti.

3. Esistono vari metodi di checksum crittografico:

o hashing con chiave e senza chiave;

o calcolo dei prefissi d'imitazione;

o utilizzo di codici di autenticazione dei messaggi.

Tutti questi metodi, infatti, in vari modi, calcolano da dati di dimensione arbitraria, con o senza chiave segreta, un checksum di dimensione fissa che corrisponde in modo univoco ai dati originali.

Tale checksum crittografico è ampiamente utilizzato in vari metodi di sicurezza delle informazioni, ad esempio:

o confermare l'integrità di eventuali dati nei casi in cui l'uso della firma elettronica è impossibile (ad esempio, a causa dell'elevato consumo di risorse) o è ridondante;

o negli stessi schemi di firma elettronica, solitamente è l’hash dei dati ad essere “firmato”, e non l’intero dato;

o in vari schemi di autenticazione dell'utente.

4. I generatori di numeri casuali e pseudo-casuali consentono di creare sequenze di numeri casuali ampiamente utilizzate in crittografia, in particolare:

o I numeri casuali sono necessari per generare chiavi segrete, che, idealmente, dovrebbero essere completamente casuali;

o i numeri casuali sono utilizzati in molti algoritmi di firma elettronica;

o I numeri casuali vengono utilizzati in molti schemi di autenticazione.

Non è sempre possibile ottenere numeri assolutamente casuali: ciò richiede generatori hardware di alta qualità. Tuttavia, sulla base di algoritmi di crittografia simmetrica, è possibile costruire generatori di numeri pseudo-casuali di alta qualità.

2 Algoritmo di crittografia simmetrica

Crittografia informazioni è la trasformazione di informazioni aperte in informazioni crittografate (che molto spesso vengono chiamate testo cifrato O crittogramma) e viceversa. La prima parte di questo processo si chiama crittografia, secondo - decrittazione.

Puoi pensare alla crittografia come alla seguente formula:

C = E k1(M), Dove:

M(messaggio) - informazioni aperte,

CON(testo cifrato) - il testo cifrato ottenuto come risultato della crittografia,

E(crittografia) - una funzione di crittografia che esegue trasformazioni crittografiche M,

k1(tasto) - parametro della funzione E, chiamato chiave crittografia.

Nello standard GOST 28147-89 (lo standard definisce l'algoritmo di crittografia simmetrica domestica) il concetto chiaveè definito come segue: "Uno stato segreto specifico di alcuni parametri di un algoritmo di trasformazione crittografica, che garantisce la selezione di una trasformazione da un insieme di tutte le possibili trasformazioni per un dato algoritmo."

La chiave può appartenere a uno specifico utente o gruppo di utenti ed essere univoca per loro. Le informazioni crittografate utilizzando una chiave specifica possono essere decrittografate solo utilizzando solo la stessa chiave o una chiave ad essa correlata da una determinata relazione.

La decrittazione può essere rappresentata in modo simile:

M" = D k2(C), Dove:

M"- messaggio ricevuto a seguito della decrittazione,

D(decifratura) - funzione di decrittazione; proprio come la funzione di crittografia, esegue trasformazioni crittografiche sul testo cifrato,

k2- chiave di decrittazione.

Per ottenere dopo la decrittazione il testo in chiaro corretto (cioè lo stesso precedentemente crittografato: M" = M), devono essere soddisfatte contemporaneamente le seguenti condizioni:

1. La funzione di decrittografia deve corrispondere alla funzione di crittografia.

2. La chiave di decrittografia deve corrispondere alla chiave di crittografia.

Se manca la chiave corretta k2 ricevi il messaggio originale M" = M utilizzando la funzione corretta D impossibile. La parola "impossibile" in questo caso di solito significa l'impossibilità di effettuare calcoli in tempo reale con le risorse informatiche esistenti.

Gli algoritmi di crittografia possono essere suddivisi in due categorie (vedere Fig. 1):

1. Algoritmi di crittografia simmetrica.

2. Algoritmi di crittografia asimmetrica.

Negli algoritmi crittografia simmetrica per la decrittazione viene solitamente utilizzata la stessa chiave utilizzata per la crittografia, oppure una chiave ad essa correlata da qualche semplice relazione. Quest'ultimo è molto meno comune, soprattutto nei moderni algoritmi di crittografia. Tale chiave (comune per la crittografia e la decrittografia) viene solitamente chiamata semplicemente chiave di crittografia.

IN crittografia asimmetrica chiave di crittografia k1 facilmente calcolato dalla chiave k2 in modo tale da rendere impossibile il calcolo inverso. Ad esempio, la relazione chiave potrebbe essere questa:

k1 = ak2 mod p,

dove a e p sono i parametri dell'algoritmo di crittografia, che hanno una dimensione sufficientemente grande.

Questa relazione chiave viene utilizzata anche negli algoritmi di firma elettronica.

La caratteristica principale dell'algoritmo di crittografia è forza crittografica, che ne determina la resistenza alla divulgazione mediante metodi di crittoanalisi. Tipicamente questa caratteristica è determinata dall'intervallo di tempo richiesto per decifrare il codice.

La crittografia simmetrica è meno conveniente perché quando si trasmettono informazioni crittografate a qualcuno, è necessario che il destinatario riceva in anticipo una chiave per decrittografare le informazioni. La crittografia asimmetrica non presenta questo problema (poiché la chiave pubblica può essere trasmessa liberamente sulla rete), tuttavia presenta i suoi problemi, in particolare il problema dello spoofing della chiave pubblica e della bassa velocità di crittografia. Molto spesso, la crittografia asimmetrica viene utilizzata insieme alla crittografia simmetrica, per trasmettere la chiave di crittografia simmetrica, che crittografa la maggior parte dei dati. Tuttavia, gli schemi di archiviazione e trasferimento delle chiavi sono un argomento per un articolo separato. Qui mi permetterò di affermare che la crittografia simmetrica viene utilizzata molto più spesso della crittografia asimmetrica, quindi il resto dell'articolo sarà dedicato solo alla crittografia simmetrica.

Esistono due tipi di crittografia simmetrica:

· Blocca la crittografia- le informazioni vengono suddivise in blocchi di lunghezza fissa (ad esempio 64 o 128 bit), dopodiché questi blocchi vengono crittografati uno per uno. Inoltre, in diversi algoritmi di crittografia o anche in diverse modalità operative dello stesso algoritmo, i blocchi possono essere crittografati indipendentemente l'uno dall'altro o "con concatenamento" - quando il risultato della crittografia del blocco di dati corrente dipende dal valore del blocco precedente o sul risultato della crittografia del blocco precedente.

· Crittografia del flusso- necessario, prima di tutto, nei casi in cui le informazioni non possono essere suddivise in blocchi, ad esempio un certo flusso di dati, ciascun carattere dei quali deve essere crittografato e inviato da qualche parte, senza attendere che i dati rimanenti siano sufficienti a formare il blocco. Pertanto, gli algoritmi di crittografia del flusso crittografano i dati bit per bit o carattere per carattere. Anche se vale la pena dire che alcune classificazioni non distinguono tra crittografia a blocchi e crittografia a flusso, considerando che la crittografia a flusso è la crittografia di blocchi di lunghezza unitaria.

Diamo un'occhiata a come appaiono gli algoritmi di crittografia simmetrica a blocchi dall'interno.

2.1 Struttura degli algoritmi di crittografia

La stragrande maggioranza dei moderni algoritmi di crittografia funziona in modo molto simile: viene eseguita una certa trasformazione sul testo cifrato utilizzando la chiave di crittografia, che viene ripetuta un certo numero di volte (cicli). Allo stesso tempo, a seconda del tipo di trasformazione ripetuta, gli algoritmi di crittografia sono solitamente suddivisi in diverse categorie. Anche qui ci sono varie classificazioni, ne darò una. Quindi, in base alla loro struttura, gli algoritmi di crittografia sono classificati come segue:

1. Algoritmi basati sulla rete Feistel.

La rete Feistel prevede la divisione del blocco dati elaborato in diversi sottoblocchi (il più delle volte in due), uno dei quali viene elaborato da una determinata funzione F() e si sovrappone a uno o più altri sottoblocchi. Nella fig. La Figura 2 mostra la struttura più comune degli algoritmi basati sulla rete Feistel.

Riso. 2. Struttura di algoritmi basati sulla rete di Feistel.

Argomento della funzione aggiuntiva F(), indicato in Fig. 2 come Ki, chiamato chiave rotonda. La chiave rotonda è il risultato dell'elaborazione della chiave di crittografia mediante la procedura di espansione della chiave, il cui compito è ottenere il numero di chiavi richiesto Ki da una chiave di crittografia iniziale di dimensione relativamente piccola (attualmente, una dimensione di 128 bit è considerata sufficiente per una chiave di crittografia simmetrica). Nei casi più semplici, la procedura di espansione della chiave si limita a suddividere la chiave in più frammenti, che vengono utilizzati alternativamente nei cicli di cifratura; Molto più spesso, la procedura di espansione delle chiavi è piuttosto complessa, e le chiavi Ki dipendono dai valori della maggior parte dei bit della chiave di crittografia originale.

La sovrapposizione di un sottoblocco elaborato su uno non elaborato viene spesso eseguita utilizzando l'operazione logica XOR (come mostrato in Fig. 2). Molto spesso, invece di XOR, qui viene utilizzata l'addizione del modulo 2 N, Dove N- dimensione del sottoblocco in bit. Dopo la sovrapposizione, i sottoblocchi vengono scambiati, ovvero nel ciclo successivo dell'algoritmo viene elaborato un altro sottoblocco di dati.

Questa struttura di algoritmi di crittografia prende il nome da Horst Feistel, uno degli sviluppatori dell'algoritmo di crittografia Lucifer e dell'algoritmo DES (Data Encryption Standard) sviluppato sulla sua base, un precedente (ma ancora ampiamente utilizzato) standard di crittografia statunitense. Entrambi questi algoritmi hanno una struttura simile a quella mostrata in Fig. 2. Tra gli altri algoritmi basati sulla rete Feistel, possiamo citare l'esempio dello standard di crittografia domestico GOST 28147-89, così come altri algoritmi molto noti: RC5, Blowfish, TEA, CAST-128, ecc.

La maggior parte degli algoritmi di crittografia moderni si basano sulla rete Feistel, a causa dei numerosi vantaggi di tale struttura, tra cui vale la pena notare:

o Gli algoritmi basati sulla rete Feistel possono essere progettati in modo tale che lo stesso codice algoritmo possa essere utilizzato per la crittografia e la decrittografia - la differenza tra queste operazioni può essere solo nell'ordine di applicazione delle chiavi Ki; Questa proprietà dell'algoritmo è particolarmente utile se implementata in hardware o su piattaforme con risorse limitate; Un esempio di tale algoritmo è GOST 28147-89.

o Gli algoritmi basati sulla rete Feistel sono i più studiati: a tali algoritmi è stata dedicata un'enorme quantità di ricerche crittoanalitiche, il che rappresenta un indubbio vantaggio sia nello sviluppo dell'algoritmo che nella sua analisi.

Esiste anche una struttura più complessa della rete Feistel, un esempio della quale è mostrato in Fig. 3.

Riso. 3. Struttura della rete Feistel.

Questa struttura si chiama generalizzato O ampliato rete Feistel ed è utilizzata molto meno frequentemente rispetto alla tradizionale rete Feistel. Un esempio di tale rete Feistel è l'algoritmo RC6.

2. Basato su algoritmi reti di permutazione (Rete SP- Rete di sostituzione-permutazione).

A differenza della rete Feistel, le reti SP elaborano l’intero blocco crittografato in un unico round. L'elaborazione dei dati si riduce principalmente alle sostituzioni (quando, ad esempio, un frammento di un valore di input viene sostituito da un altro frammento secondo una tabella di sostituzione, che può dipendere dal valore della chiave Ki) e permutazioni a seconda della chiave Ki(uno schema semplificato è mostrato in Fig. 4).

Riso. 4. Rete di sostituzione-permutazione.

Tuttavia, tali operazioni sono tipiche anche per altri tipi di algoritmi di crittografia, quindi, a mio avviso, il nome “rete di sostituzione-permutazione” è abbastanza arbitrario.

Le reti SP sono molto meno comuni delle reti Feistel; Esempi di reti SP includono gli algoritmi Serpent o SAFER+.

3. Algoritmi con struttura "piazza"(Piazza).

La struttura “quadrata” è caratterizzata dalla rappresentazione del blocco dati crittografato sotto forma di un array di byte bidimensionale. Le trasformazioni crittografiche possono essere eseguite su singoli byte di un array, nonché sulle sue righe o colonne.

La struttura dell'algoritmo prende il nome dall'algoritmo Square, sviluppato nel 1996 da Vincent Rijmen e Joan Daemen, i futuri autori dell'algoritmo Rijndael, che divenne il nuovo standard di crittografia AES statunitense dopo aver vinto un concorso aperto. Anche l'algoritmo Rijndael ha una struttura simile a quella quadrata; anche esempi includono l'algoritmo Shark (uno sviluppo precedente di Ridgeman e Damen) e Crypton. Lo svantaggio degli algoritmi con struttura “quadrata” è la loro mancanza di conoscenza, che non ha impedito all’algoritmo Rijndael di diventare il nuovo standard statunitense.

Riso. 5. Algoritmo di Rijndael.

Nella fig. La Figura 5 mostra un esempio di un'operazione su un blocco dati eseguita dall'algoritmo Rijndael.

4. Algoritmi con struttura non standard, ovvero quegli algoritmi che non possono essere classificati in nessuna delle tipologie elencate. È chiaro che l’ingegno può essere illimitato, quindi è difficile classificare tutte le possibili opzioni per gli algoritmi di crittografia. Un esempio di algoritmo con struttura non standard è l'algoritmo FROG, unico nella sua struttura, in ogni ciclo del quale due byte di dati crittografati vengono modificati secondo regole abbastanza complesse (vedi Fig. 6).

Riso. 6. Modifica di due byte di dati crittografati.

I confini rigidi tra le strutture sopra descritte non sono definiti, quindi molto spesso esistono algoritmi classificati da vari esperti come diversi tipi di strutture. Ad esempio, l'algoritmo CAST-256 viene definito dal suo autore una rete SP e molti esperti la chiamano rete Feistel estesa. Un altro esempio è l’algoritmo HPC, chiamato dal suo autore rete Feistel, ma considerato dagli esperti un algoritmo con una struttura non standard.

3. Applicazione della SIMalgoritmo di crittografia metrica

algoritmo di crittografia crittografia simmetrica

I metodi di crittografia simmetrica sono convenienti perché forniscono alto livello la sicurezza della trasmissione dei dati non richiede la creazione di chiavi lunghe. Ciò consente di crittografare e decrittografare rapidamente grandi quantità di informazioni. Allo stesso tempo, sia il mittente che il destinatario delle informazioni possiedono la stessa chiave, il che rende impossibile l'autenticazione del mittente. Inoltre, per iniziare a lavorare con l'utilizzo di un algoritmo simmetrico, le parti devono scambiarsi in modo sicuro una chiave segreta, cosa facile da fare di persona, ma molto difficile se è necessario trasferire la chiave attraverso qualsiasi mezzo di comunicazione.

Lo schema operativo che utilizza un algoritmo di crittografia simmetrica è costituito dalle seguenti fasi:

le parti installano sui propri computer software, fornendo crittografia e decrittografia dei dati e generazione primaria di chiavi segrete;

una chiave segreta viene generata e distribuita tra i partecipanti allo scambio di informazioni. A volte viene generato un elenco di chiavi monouso. In questo caso, viene utilizzata una chiave univoca per ciascuna sessione di trasferimento delle informazioni. In questo caso, all'inizio di ogni sessione, il mittente notifica al destinatario il numero di serie della chiave che ha utilizzato in questo messaggio;

il mittente crittografa le informazioni utilizzando un software installato che implementa un algoritmo di crittografia simmetrica;

le informazioni crittografate vengono trasmesse al destinatario tramite canali di comunicazione;

il destinatario decodifica le informazioni utilizzando la stessa chiave del mittente.

Di seguito è riportata una panoramica di alcuni algoritmi di crittografia simmetrica:

DES (standard di crittografia dei dati). Sviluppato da IBM e ampiamente utilizzato dal 1977. Attualmente un po' obsoleto, poiché la lunghezza della chiave utilizzata non è sufficiente a garantire la resistenza agli attacchi mediante una ricerca esaustiva di tutti i possibili valori della chiave. La scoperta di questo algoritmo è stata resa possibile grazie al rapido sviluppo della tecnologia informatica, che a partire dal 1977 ha fatto un enorme balzo in avanti;

Triplo DES. Questa è una versione migliorata di DES che utilizza tre volte l'algoritmo DES per la crittografia chiavi diverse. È significativamente più resistente all'hacking rispetto al DES;

Rijndael. L'algoritmo è stato sviluppato in Belgio. Funziona con chiavi di lunghezza 128, 192 e 256 bit. SU al momento gli specialisti di crittografia non hanno lamentele al riguardo;

Tonnetto striato. L'algoritmo è stato creato e utilizzato dalla National Security Agency degli Stati Uniti. La lunghezza della chiave è di 80 bit. La crittografia e la decrittografia delle informazioni vengono eseguite ciclicamente (32 cicli);

IDEA. L'algoritmo è brevettato negli Stati Uniti e in numerosi paesi europei. Il titolare del brevetto è Ascom-Tech. L'algoritmo utilizza l'elaborazione ciclica delle informazioni (8 cicli) applicandovi una serie di operazioni matematiche;

RC4. L'algoritmo è appositamente progettato per crittografare rapidamente grandi volumi di informazioni. Utilizza una chiave di lunghezza variabile (a seconda del livello richiesto di sicurezza delle informazioni) e funziona molto più velocemente di altri algoritmi. RC4 si riferisce ai cosiddetti codici a flusso.

Secondo la legge statunitense (International Traffic in Arms Peguiation Agreement), i dispositivi crittografici, compreso il software, sono classificati come sistemi d’arma.

Pertanto, quando si esportano prodotti software che utilizzano la crittografia, è necessaria l'autorizzazione del Dipartimento di Stato. Infatti, l’esportazione di prodotti crittografici è controllata dalla NSA (National Security Agency). Il governo degli Stati Uniti è molto riluttante a rilasciare tali licenze, poiché potrebbero danneggiare la sicurezza nazionale degli Stati Uniti. Tuttavia, Hewlett-Packard ha recentemente ottenuto il permesso di esportare la sua suite crittografica Ver Secure nel Regno Unito, Germania, Francia, Danimarca e Australia. Ora HP può gestire in questi paesi sistemi che utilizzano lo standard crittografico Triple DES a 128 bit, considerato assolutamente affidabile.

CONCLUSIONE

La scelta di una specifica proprietà intellettuale dovrebbe basarsi su un'analisi approfondita dei punti di forza e di debolezza di determinati metodi di protezione. Una scelta giustificata di un particolare sistema di protezione, in generale, dovrebbe basarsi su alcuni criteri di efficacia. Sfortunatamente non sono ancora stati sviluppati metodi adeguati per valutare l’efficacia dei sistemi crittografici.

Il criterio più semplice per tale efficienza è la probabilità di rivelare una chiave o la potenza di un insieme di chiavi. In sostanza, questo equivale alla forza crittografica. Per stimarlo numericamente, puoi anche sfruttare la complessità di risolvere il codice provando tutte le chiavi.

Tuttavia, questo criterio non tiene conto di altri requisiti importanti per i crittosistemi:

* impossibilità di divulgazione o modifica significativa delle informazioni sulla base dell'analisi della loro struttura,

*perfezione utilizzata protocolli di sicurezza,

* quantità minima di informazioni chiave utilizzate,

* complessità minima di implementazione (nel numero di operazioni della macchina), il suo costo,

*alta efficienza.

È ovviamente auspicabile utilizzare alcuni indicatori integrali che tengano conto di questi fattori.

Per tenere conto del costo, dell'intensità della manodopera e del volume delle informazioni chiave, è possibile utilizzare indicatori specifici: il rapporto tra i parametri specificati e la potenza dell'insieme di chiavi di cifratura.

Spesso è più efficace utilizzare il giudizio di esperti e la simulazione quando si seleziona e si valuta un sistema crittografico.

In ogni caso, l'insieme selezionato di metodi crittografici deve coniugare praticità, flessibilità ed efficienza d'uso, nonché protezione affidabile dalle informazioni che circolano nel sistema informativo dagli aggressori.

Anche le funzioni ellittiche sono un metodo di crittografia simmetrico.

Le curve ellittiche sono oggetti matematici che i matematici studiano intensamente sin dal XVII secolo. N. Koblitz e V. Miller hanno proposto indipendentemente sistemi di sicurezza crittografici a chiave pubblica che utilizzano le proprietà di un gruppo additivo di punti su una curva ellittica per la crittografia. Questi lavori hanno costituito la base della crittografia basata sull'algoritmo della curva ellittica.

Molti ricercatori e sviluppatori hanno testato la robustezza dell'algoritmo ECC. Oggi ECC offre una chiave pubblica più corta e veloce, fornendo una tecnologia pratica e sicura applicabile in vari campi. L'utilizzo della crittografia basata sull'algoritmo ECC non richiede supporto hardware aggiuntivo sotto forma di coprocessore crittografico. Tutto ciò ci consente ora di utilizzare sistemi crittografici a chiave pubblica per creare smart card poco costose.

Riferimenti

1) Chmora A.L. Crittografia applicata moderna. 2a ed., cancellata. - M.: Helios ARV, 2004. - 256 pp.: ill.

2) A.G. Rostovtsev, N.V. Mikhailova Metodi di crittoanalisi dei cifrari classici.

3) A. Salomaa Crittografia a chiave pubblica.

4) Gerasimenko V.A. Libro La protezione delle informazioni nei sistemi automatizzati di trattamento dei dati. 1.-M.: Energoatomizdat. -2004.-400.

5) Gregory S. Smith. Programmi di crittografia dei dati // PC World -2007. -No 3.

6) Rostovtsev A. G., Mikhailova N. V. Metodi di crittoanalisi dei cifrari classici. -M.: Nauka, 2005. -208 p.

Pubblicato su http://www.allbest.ru/

Documenti simili

    La storia dell'emergere di algoritmi di crittografia simmetrica. Il ruolo di una chiave simmetrica nel garantire il grado di segretezza di un messaggio. Diffusione e confusione come metodi di conversione dei bit di dati. Algoritmi di crittografia DES e IDEA, principali vantaggi e svantaggi.

    lavoro di laboratorio, aggiunto il 18/03/2013

    Caratteristiche della crittografia dei dati, scopo della crittografia. Il concetto di crittografia come scienza, i compiti principali. Analisi del metodo gamma, metodo della sostituzione e della permutazione. Metodi di crittografia a chiave privata simmetrica: vantaggi e svantaggi.

    lavoro del corso, aggiunto il 05/09/2012

    Il principio di implementazione software dei metodi crittografici classici. Metodo di crittografia utilizzando la tabella Vigenère. Creazione editor di testo Blocco note contenente metodi di crittografia. Algoritmo verbale e programma per metodi di crittografia.

    lavoro del corso, aggiunto il 20/01/2010

    Storia della crittografia. Confronto degli algoritmi di crittografia, applicazione nel sistema operativo. Analisi dei prodotti nel campo della crittografia personalizzata. Abilita o disabilita la crittografia della curva ellittica. Utilizzando una funzione hash. Firma elettronica.

    lavoro del corso, aggiunto il 18/09/2016

    L'emergere dei cifrari, la storia dell'evoluzione della crittografia. Un metodo per applicare la conoscenza delle caratteristiche del testo naturale alle esigenze di crittografia. Criteri per determinare la naturalezza. Un metodo per costruire algoritmi di crittografia simmetrici. Crittosistema a chiave pubblica.

    abstract, aggiunto il 31/05/2013

    Crittografia e crittografia. Crittosistemi simmetrici e asimmetrici. Metodi di crittografia moderni di base. Algoritmi di crittografia: sostituzione (sostituzione), permutazione, gamma. Metodi di crittografia combinati. Crittografi software.

    abstract, aggiunto il 24/05/2005

    Automazione del processo di crittografia basato sulle moderne tecnologie informatiche. Misure di sicurezza crittografiche. Gestione delle chiavi crittografiche. Confronto tra algoritmi di crittografia simmetrici e asimmetrici. Programmi di crittografia delle informazioni.

    lavoro del corso, aggiunto il 02/12/2014

    Storia degli algoritmi di crittografia simmetrica (crittografia a chiave privata). Standard per algoritmi crittografici. Sensori di numeri casuali, generazione di chiavi. Area di interesse: crittoanalisi. Sistemi di firma elettronica. Trasformazione inversa delle informazioni.

    riepilogo, aggiunto il 06/12/2013

    Metodi di base per la protezione crittografica dell'informazione. Sistema di crittografia Caesar con chiave numerica. Algoritmi di doppia permutazione e quadrati magici. Schema di crittografia di El Gamal. Metodo della permutazione singola per chiave. Sistema crittografico di crittografia dei dati RSA.

    lavoro di laboratorio, aggiunto il 20/02/2014

    Una breve storia dello sviluppo di metodi crittografici per la sicurezza delle informazioni. L'essenza della crittografia e della crittografia a chiavi simmetriche. Descrizione dei metodi di crittografia analitica e additiva. Metodi di crittografia a chiave pubblica e certificati digitali.

09.07.2003

Cos'è la crittografia?

La crittografia è stata utilizzata dall'umanità sin dal primo momento informazioni classificate, vale a dire uno a cui l'accesso dovrebbe essere limitato. Questo è successo molto tempo fa: ad esempio, uno dei metodi di crittografia più famosi prende il nome da Cesare, il quale, se non lo ha inventato lui stesso, lo ha utilizzato attivamente (vedi barra laterale).

La crittografia garantisce che il significato di un messaggio sia nascosto e venga rivelato mediante decrittografia utilizzando algoritmi e chiavi speciali. Per chiave intendiamo uno specifico stato segreto dei parametri degli algoritmi di crittografia e decrittografia. Conoscere la chiave rende possibile leggere il messaggio segreto. Tuttavia, come vedrai in seguito, l'ignoranza della chiave non sempre garantisce che il messaggio non possa essere letto da un estraneo.

Il processo di decifrazione di un codice senza conoscere la chiave è chiamato crittoanalisi. Il tempo necessario per violare un codice è determinato dalla sua forza crittografica. Più è grande, più “forte” è l’algoritmo di crittografia. È ancora meglio se inizialmente fosse impossibile scoprire se il risultato dell'hacking è realizzabile.

Metodi di crittografia moderni di base

Tra i vari metodi di crittografia si possono distinguere i seguenti metodi principali:

  • Algoritmi di sostituzione o sostituzione: i caratteri del testo sorgente vengono sostituiti con caratteri di un altro (o dello stesso) alfabeto secondo uno schema predeterminato, che sarà la chiave di questo codice. Separatamente, questo metodo non è praticamente utilizzato nei moderni sistemi crittografici a causa della sua forza crittografica estremamente bassa.
  • Algoritmi di riarrangiamento: i caratteri del testo originale vengono scambiati secondo un determinato principio, che è la chiave segreta. L'algoritmo di permutazione stesso ha una bassa forza crittografica, ma è incluso come elemento in molti sistemi crittografici moderni.
  • Algoritmi gamma: i caratteri del testo sorgente vengono aggiunti ai caratteri di una determinata sequenza casuale. L'esempio più comune è la crittografia dei file "username.pwl", in cui sistema operativo Microsoft Windows 95 memorizza le password per le risorse di rete di un determinato utente (password per l'accesso ai server NT, password per l'accesso a Internet DialUp, ecc.).

Quando un utente inserisce la propria password quando accede a Windows 95, da essa viene generata una gamma (sempre la stessa) utilizzando l'algoritmo di crittografia RC4, che viene utilizzato per crittografare le password di rete. La semplicità della selezione della password in questo caso è dovuta al fatto che Windows preferisce sempre la stessa combinazione di colori.

  • Algoritmi basati su complesse trasformazioni matematiche del testo di partenza secondo una determinata formula. Molti di loro utilizzano problemi di matematica irrisolti. Ad esempio, l’algoritmo di crittografia RSA ampiamente utilizzato su Internet si basa sulle proprietà dei numeri primi.

Crittosistemi simmetrici e asimmetrici

Prima di passare ai singoli algoritmi, consideriamo brevemente il concetto di crittosistemi simmetrici e asimmetrici. Generare una chiave segreta e crittografare un messaggio con essa è solo metà dell'opera. Ma come è possibile inviare una chiave del genere a qualcuno che la deve utilizzare per decrittografare il messaggio originale? La trasmissione della chiave di crittografia è considerata uno dei principali problemi della crittografia.

Pur rimanendo nell'ambito di un sistema simmetrico (così chiamato perché la stessa chiave viene utilizzata per la crittografia e la decrittografia), è necessario disporre di un canale di comunicazione affidabile per la trasmissione della chiave segreta. Ma un tale canale non è sempre disponibile, e quindi i matematici americani Diffie, Hellman e Merkle svilupparono il concetto di chiave pubblica e crittografia asimmetrica nel 1976. In tali sistemi crittografici solo la chiave per il processo di crittografia è disponibile al pubblico e la procedura di decrittografia è nota solo al proprietario della chiave segreta.

Ad esempio, quando voglio che mi venga inviato un messaggio, genero chiavi pubbliche e private. Io te lo mando, tu cripti il ​​messaggio e me lo invii. Solo io posso decifrare il messaggio, dato che non ho dato a nessuno la chiave segreta. Naturalmente, entrambe le chiavi sono collegate in modo speciale (in modi diversi in ciascun crittosistema) e la distribuzione della chiave pubblica non distrugge la forza crittografica del sistema.

Nei sistemi asimmetrici deve essere soddisfatto il seguente requisito: non esiste un algoritmo (o non è ancora noto) che derivi il testo originale dal crittotesto e dalla chiave pubblica. Un esempio di tale sistema è il noto crittosistema RSA.

Algoritmo RSA

L'algoritmo RSA (dopo le prime lettere dei cognomi dei suoi creatori Rivest-Shamir-Adleman) si basa sulle proprietà dei numeri primi (e quelli molto grandi). I numeri primi sono quei numeri che non hanno divisori diversi da se stessi e uno. E i numeri coprimi sono quei numeri che non hanno divisori comuni diversi da 1.

Per prima cosa, scegliamo due numeri primi molto grandi (i numeri primi grandi sono necessari per costruire chiavi grandi e forti. Ad esempio, il programma Unix ssh-keygen genera chiavi lunghe 1024 bit per impostazione predefinita).

Definiamo il parametro N come risultato della moltiplicazione P E Q. Scegliamo un numero casuale grande e chiamiamolo D, e deve essere coprimo con il risultato della moltiplicazione (p -1)*(q -1).

Troviamo un numero e per il quale la relazione è vera

(e*d) mod ((p -1)*(q -1)) = 1

(mod- resto della divisione, cioè se e moltiplicato per d viene diviso per ((p -1)*(q -1)), allora il resto è 1).

La chiave pubblica è una coppia di numeri ee n, e chiuso - d e n.

Durante la crittografia, il testo di origine viene trattato come una serie numerica ed eseguiamo un'operazione su ciascun numero

C(i)= (M(i) e) mod n.

Il risultato è la sequenza C(i), che costituirà il crittotesto. La decodifica delle informazioni avviene secondo la formula

M(i) = (C(i) d) mod n.

Come puoi vedere, la decrittazione richiede la conoscenza della chiave segreta.

Proviamolo su piccoli numeri.

Installiamo p=3, q=7. Poi n=p*q=21. Scegliere D come 5. Dalla formula (e*5) mod 12=1 calcolare e=17. Chiave pubblica 17, 21 , segreto - 5, 21 .

Crittifichiamo la sequenza "12345":

C(1)= 1 17 mod 21= 1

C(2)= 2 17 mod 21 =11

C(3)= 3 17 mod 21= 12

C(4)= 4 17 mod 21= 16

C(5)= 5 17 mod 21= 17

Crittotesto - 1 11 12 16 17.

Controlliamo la decrittazione:

M(1)= 1 5 mod 21= 1

M(2)= 11 5 mod 21= 2

M(3)= 12 5 mod 21= 3

M(4)= 16 5 mod 21= 4

M(5)= 17 5 mod 21= 5

Come puoi vedere, il risultato è coinciso.

Il sistema crittografico RSA è ampiamente utilizzato su Internet. Quando ti connetti a un server sicuro tramite SSL, installi un certificato WebMoney sul tuo PC o ti connetti a un server remoto utilizzando Open SSH o SecureShell, tutti questi programmi utilizzano la crittografia a chiave pubblica utilizzando le idee dell'algoritmo RSA. Questo sistema è davvero così affidabile?

Competizioni di hacking RSA

Sin dalla sua creazione, RSA è stata costantemente soggetta ad attacchi di forza bruta. Nel 1978 gli autori dell'algoritmo pubblicarono un articolo in cui presentavano una stringa crittografata utilizzando il metodo appena inventato. La prima persona che decifrava il messaggio riceveva una ricompensa di 100 dollari, ma ciò richiedeva la divisione di un numero di 129 cifre in due fattori. Questa è stata la prima competizione a crackare RSA. Il problema è stato risolto solo 17 anni dopo la pubblicazione dell'articolo.

La forza crittografica di RSA si basa sul presupposto che sia estremamente difficile, se non impossibile, determinare la chiave privata dalla chiave pubblica. Per fare ciò era necessario risolvere il problema dell'esistenza dei divisori di un numero intero enorme. Fino ad ora nessuno è riuscito a risolverlo utilizzando metodi analitici e l’algoritmo RSA può essere violato solo con la forza bruta. A rigor di termini, anche l’affermazione che il problema della fattorizzazione è difficile e che rompere il sistema RSA è difficile non è dimostrata.

Il numero ottenuto come risultato dell'elaborazione del testo del messaggio da parte della funzione hash viene crittografato utilizzando l'algoritmo RSA per chiave privata utente e viene inviato al destinatario insieme alla lettera e a una copia della chiave pubblica. Il destinatario, utilizzando la chiave pubblica del mittente, esegue la stessa funzione hash sul messaggio in arrivo. Se entrambi i numeri sono uguali significa che il messaggio è autentico, ma se almeno un carattere è stato modificato i numeri non corrisponderanno.

Uno dei più comuni in Russia client di posta, il programma Bat!, ha funzionalità integrate per aggiungere firme digitali alle lettere (prestare attenzione alla voce del menu Privacy quando si modifica una lettera). Maggiori informazioni su questa tecnica nell'articolo (vedi "PC World", n. 3/02).

Riso. 3

Crittografia

La crittografia è la scienza dei principi, dei mezzi e dei metodi di trasformazione delle informazioni per proteggerle da accessi non autorizzati e distorsioni. IN ultimamente si sta sviluppando molto, molto rapidamente. È una corsa infinita ed entusiasmante che richiede molto tempo e impegno: i crittoanalisti decifrano algoritmi che fino a poco tempo fa erano standard e ampiamente utilizzati. A proposito, recentemente i matematici Dan Goldston (USA) e Kem Ildirim (Turchia) hanno dimostrato la prima regolarità nella distribuzione dei numeri primi (tali regolarità non erano state notate fino ad ora). I numeri primi si trovano sull'asse dei numeri in alcuni gruppi, il che li rende un po' più facili da trovare.

La ricerca matematica condotta in tutto il mondo porta costantemente a nuove scoperte. Chissà, forse siamo sul punto di violare l'algoritmo RSA o altri crittosistemi basati su problemi matematici irrisolti.

Oleg Bunin- specialista nello sviluppo di software per grandi progetti Internet, dipendente della società Rambler, [e-mail protetta] .

Letteratura
  1. Crittografia di Lukashov I.V. Ferro! // Mondo PC. 2003. N. 3 (
  2. Nosov V. A. Breve profilo storico dello sviluppo della crittografia // Atti della conferenza "L'Università di Mosca e lo sviluppo della crittografia in Russia", MSU, 17-18 ottobre 2002.
  3. Salomaa A. Crittografia a chiave pubblica. M., 1996.
  4. Zimmerman F. PGP: crittografia a chiave pubblica per tutti.

Sistema di cifratura di Cesare

Un esempio di algoritmo sostitutivo è il sistema di crittografia Caesar. Questo metodo si basa sulla sostituzione di ciascuna lettera del messaggio con un'altra spostandosi dall'originale di un numero fisso di caratteri. Prova a decifrare la quartina di Omar Khayyam (tempo di completamento: 10 minuti).

RLZ YOMEYZ AVBZHU IYZAVLU, BZHSCHLU ZHSCHEZZHZ ZHUOSCHZ, EYSH YSHCHAZhFO IYSHCHYVESH BSHCHIZHV EESH ZHSCHRSCHG: LF EMRSYU ЪZEZESCHG, RYU RLZ IZISHCHEZ YUKLU, IN EMRSYU BMEU ZEVZH, RYO OYYUKLU K DUYO I ZISHCHEZ.

Ce l'hai fatta? Ecco la risposta:

Per vivere la tua vita con saggezza, devi sapere molto,

Ricorda due regole importanti per iniziare:

Preferiresti morire di fame piuttosto che mangiare qualsiasi cosa

Ed è meglio essere soli che con chiunque.

Chiave di decrittazione: sposta di sette caratteri (prendi il settimo) a sinistra in ordine alfabetico. L'alfabeto è in loop. Il caso dei caratteri non è sensibile.

Windows e password

In che modo Windows crittografa le password?

Il sistema prende la password, la converte in maiuscolo, la taglia a 14 caratteri, quindi li divide in due metà di 7, li crittografa separatamente e li salva in questo modo, il che rende l'hacking un po' più semplice. A proposito, quando trovi una password, tieni presente che una combinazione più lunga di 14 caratteri ha poco significato.

Concorso AES (Advanced Encryption Standard).

Negli anni '80 negli Stati Uniti hanno adottato uno standard di crittografia simmetrica per uso interno - DES ((Data Encryption Standard, esiste uno standard simile in Russia). Ma nel 1997, quando divenne chiaro che la chiave DES a 56 bit non era sufficiente per un sistema affidabile cryptosystem, l'American Standards Institute ha annunciato un concorso per un nuovo algoritmo standard Tra 15 opzioni, è stato scelto il migliore: l'algoritmo belga Rijndael (il suo nome è composto dai nomi degli autori - Rijmen e Daemen, letti come "Rijndael". Questo algoritmo è già integrato in vari strumenti crittografici forniti al mercato da altri finalisti). I vincitori del concorso sono stati MARS, RC6, Serpent, TwoFish. Tutti questi algoritmi si sono rivelati abbastanza robusti e resistono con successo a tutti i metodi di crittoanalisi conosciuti .

Funzioni hash crittografiche

Le funzioni hash crittografiche convertono i dati di input di qualsiasi dimensione in una stringa di dimensione fissa. È estremamente difficile trovare per loro:

  • due diversi set di dati con lo stesso risultato di trasformazione (resistenza alle collisioni); ad esempio, il numero di operazioni aritmetiche necessarie per trovare un blocco dati che contiene anche un messaggio breve per la funzione hash MD5 è circa 2 64;
  • valore di input basato su un risultato di hashing noto (irreversibilità); per MD5, il numero stimato di operazioni necessarie per calcolare il messaggio originale è 2.128.

Crittografia divertente

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, la crittografia veniva utilizzata da Giulio Cesare per rendere lettere e messaggi illeggibili al nemico. Ha svolto un ruolo importante come tattica militare, soprattutto durante le guerre.

Poiché le funzionalità di Internet continuano a crescere, sempre più attività vengono condotte online. Tra questi i più importanti sono l'internet banking, i pagamenti online, e-mail, scambio di messaggi privati ​​e ufficiali, ecc., che comportano lo scambio di dati e informazioni riservate. Se questi dati finissero nelle mani sbagliate, potrebbero danneggiare non solo il singolo utente, ma l’intero sistema sistema in linea Attività commerciale.

Per evitare che ciò accada, sono state adottate diverse misure di sicurezza della rete 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 oggi nella maggior parte dei sistemi: crittografia hashing, simmetrica e asimmetrica. Nelle righe seguenti parlerò di ciascuno di questi tipi di crittografia in modo più dettagliato.

Tipi di crittografia

Crittografia simmetrica

Nella crittografia simmetrica, i normali dati leggibili, noti come testo normale, vengono crittografati in modo da diventare illeggibili. Questa codifica dei dati viene eseguita utilizzando una chiave. Una volta crittografati, i dati possono essere inviati in modo sicuro al destinatario. Al destinatario, i dati crittografati vengono decodificati utilizzando la stessa chiave utilizzata per la codifica.

Pertanto, è chiaro che la chiave è la parte più importante della crittografia simmetrica. Deve 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 una fonte completamente casuale. Viene inserito in un software di crittografia simmetrica, che lo utilizza per mantenere segreti i dati di input. La codifica dei dati viene ottenuta utilizzando un algoritmo di crittografia simmetrico, 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 all'utente autenticato. Se un hacker riesce a ottenere questa chiave, può facilmente decrittografare i dati crittografati, vanificando l'intero scopo della crittografia.

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

Crittografia asimmetrica

La crittografia a chiave asimmetrica funziona in modo simile alla chiave simmetrica in quanto utilizza una chiave per crittografare i messaggi trasmessi. Tuttavia, invece di utilizzare la stessa chiave, ne utilizza una completamente diversa per decrittografare il messaggio.

La chiave utilizzata per la codifica è disponibile per tutti gli utenti della rete. In quanto tale è nota come chiave "pubblica". La chiave utilizzata per la decrittazione, invece, viene mantenuta segreta ed è destinata all'uso privato da parte dell'utente stesso. Pertanto, è nota come chiave "privata". La crittografia asimmetrica è anche nota come crittografia a chiave pubblica.

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

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

Restrizioni

Molti hacker utilizzano il man-in-the-middle come forma di attacco per aggirare questo tipo di crittografia. Nella crittografia asimmetrica, ti viene fornita una chiave pubblica che viene utilizzata per scambiare dati in modo sicuro con un'altra persona o servizio. Tuttavia, gli hacker utilizzano l'inganno della rete per indurti a comunicare con loro mentre sei indotto a credere di essere su una linea sicura.

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

Natasha, pensando che questo messaggio provenisse da Sasha, ora lo crittografa con la chiave pubblica di Sergei e lo rispedisce. Questo messaggio è stato nuovamente intercettato da Sergei, decrittografato, modificato (se lo si desidera), nuovamente crittografato utilizzando la chiave pubblica originariamente inviata da Sasha e rispedito a Sasha.

Pertanto, quando Sasha riceve questo messaggio, è stato portato a credere che provenisse da Natasha e rimane ignaro del gioco scorretto.

Hashing

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

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

Pertanto, la differenza principale tra l'hashing e le altre due forme di crittografia dei dati è che una volta crittografati (hashing) i dati non possono essere recuperati nella loro forma originale (decrittografati). Questo fatto garantisce che anche se un hacker mettesse le mani sull'hash, non gli sarebbe di alcuna utilità, poiché non sarebbe in grado di decrittografare 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 sistema di crittografia sicuro ed altamente efficace.

Molto spesso, le tecniche a chiave privata e pubblica vengono combinate e utilizzate insieme. Il metodo a chiave privata consente una decrittazione più rapida, mentre il metodo a chiave pubblica offre un metodo più sicuro e molto altro modo conveniente per trasferire la chiave segreta. Questa combinazione di metodi è nota come "busta digitale". Il software di crittografia della posta elettronica PGP si basa sulla tecnica della "busta digitale".

L'hashing viene utilizzato come mezzo per verificare la forza di una password. Se il sistema memorizza un hash della password invece della password stessa, sarà più sicuro, poiché anche se un hacker mettesse le mani su questo hash, non sarebbe in grado di capirlo (leggerlo). Durante la verifica, il sistema controllerà l'hash della password in entrata e vedrà se il risultato corrisponde a quanto memorizzato. In questo modo, la password effettiva sarà visibile solo nei brevi momenti in cui dovrà essere modificata o verificata, riducendo notevolmente la probabilità che cada nelle mani sbagliate.

L'hashing viene utilizzato anche per autenticare i dati utilizzando una chiave segreta. Viene generato un hash 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, queste verranno facilmente rilevate.

In conclusione, queste tecniche possono essere utilizzate per codificare in modo efficiente i dati in un formato illeggibile che possa garantirne la sicurezza. La maggior parte dei sistemi moderni utilizza in genere una combinazione di questi metodi di crittografia insieme a potenti implementazioni di algoritmi per migliorare la sicurezza. Oltre alla sicurezza, questi sistemi offrono anche numerosi vantaggi aggiuntivi, come la verifica dell'identità dell'utente e la garanzia che i dati ricevuti non possano essere manomessi.