Inserto imitazione
Inserimento dell'imitazione (MAC, codice di autenticazione del messaggio inglese - codice di autenticazione del messaggio) - un mezzo per fornire protezione dall'imitazione nei protocolli di autenticazione del messaggio con partecipanti che si fidano l'uno dell'altro - un insieme speciale di caratteri che viene aggiunto al messaggio ed è progettato per garantirne l'integrità e l'autenticazione dell'origine dati.
L'imitazione viene solitamente utilizzata per garantire l'integrità e la protezione contro la falsificazione delle informazioni trasmesse.
Per verificare l'integrità (ma non l'autenticità) del messaggio sul lato mittente, al messaggio viene aggiunto il valore della funzione hash di questo messaggio e anche sul lato ricevente viene generato l'hash del messaggio ricevuto. L'hash generato e l'hash ricevuto vengono confrontati. In caso di parità si considera che il messaggio ricevuto sia pervenuto senza modifiche [1] .
Per proteggersi dalla falsificazione (imitazione) di un messaggio, viene utilizzato un inserimento imitazione, sviluppato utilizzando un elemento segreto (chiave) noto solo al mittente e al destinatario.
Panoramica
Un modo semplice per convertire una funzione hash unidirezionale in imitazione di inserimento (MAC) consiste nel crittografare il valore hash con un algoritmo simmetrico. Un tale MAC può essere convertito in una funzione hash unidirezionale utilizzando il rilevamento della chiave.
Un altro modo è generare l'inserimento dell'imitazione (MAC) utilizzando un algoritmo di protezione dall'imitazione specializzato basato su un algoritmo di crittografia simmetrica.
CBC-MAC: il modo più semplice per creare una rappresentazione dipendente dalla chiave consiste nel crittografare il messaggio con un algoritmo a blocchi in modalità CBC o CFB . Il sosia di inserimento è l'ultimo blocco crittografato crittografato in queste modalità. Un potenziale problema di sicurezza con questo metodo è che il destinatario deve conoscere la chiave e questa chiave gli consente di generare messaggi con lo stesso valore di imitazione del messaggio ricevuto, quindi un'imitazione simmetrica basata su crittografia non fornisce la conoscenza di Chi (mittente o destinatario) ha generato questo inserimento imitazione. Ne consegue che una rappresentazione basata su una cifra simmetrica non può sostituire una firma elettronica.
Inserto imitazione secondo GOST 28147-89
GOST 28147-89 prevede la produzione di un inserto imitazione nella modalità appropriata. La lunghezza dell'inserimento simulato va da 1 a 32 bit. Il suo sviluppo avviene secondo il seguente schema.
Il testo in chiaro è diviso in blocchi di 64 bit. L'ultimo blocco, se necessario, viene riempito con zeri.
Il primo blocco viene crittografato in modalità ECB con la stessa chiave del messaggio, ma utilizzando 16 cicli anziché 32. Il risultato viene aggiunto bit a bit modulo 2 al secondo blocco e crittografato allo stesso modo. Il risultato viene aggiunto al terzo blocco e così via.
I primi 32 bit del blocco risultante costituiscono l'inserto di imitazione. La specifica del cifrario prevede l'uso di un minor numero di bit, ma non di più, come inserimento di imitazione, se lo si desidera.
L'emulazione viene solitamente inviata alla fine del messaggio e può essere calcolata separatamente dalla crittografia/decodifica o durante questa.
MAA
MAA (Message Authenticator Algorithm) è un algoritmo di autenticazione dei messaggi.
Questo algoritmo è uno standard ISO. Produce un valore hash a 32 bit ed è stato progettato per mainframe con istruzioni di moltiplicazione rapida.
v=v<<<1
e=v xor w
x=(((e+y) mod 2^32)۷A۸C)*(x xor Mi))mod 2^32-1
y=((((e+x) mod 2^32)۷B۸D)*(y xor Mi))mod 2^32-1
Questi passaggi vengono ripetuti per ogni blocco di messaggi, Mi, e il valore hash risultante viene ottenuto XORing x e y. Le variabili ve e dipendono dalla chiave. A, B, C e D sono costanti. Forse questo algoritmo è ampiamente utilizzato, ma non è abbastanza sicuro. È stato sviluppato per molto tempo e non è troppo complicato.
Metodi Juneman [2]
Innanzitutto, il messaggio è suddiviso in blocchi di m-bit. Quindi:
, dove è la chiave segreta , dove è un numero primo minore di .
Juneman ha suggerito valori per e . Ha anche suggerito che dovrebbe essere usato come chiave aggiuntiva e che il messaggio vero e proprio iniziasse con .
A causa dei numerosi attacchi di compleanno, è stato proposto di calcolare QCMDC 4 volte, utilizzando il risultato di un'iterazione come 4 per l'iterazione successiva [ chiarire ] e quindi concatenare i risultati in un valore hash a 128 bit. In futuro, questa idea è stata rafforzata dall'esecuzione parallela di 4 iterazioni con collegamenti incrociati tra di loro.
Questo[ cosa? ] lo schema è stato violato da Don Coppersmith .
Altri metodi
CBC-MAC
L'ultimo blocco del messaggio crittografato con l'algoritmo di blocco in modalità CBC o CFB viene preso come MAC.
Lo svantaggio è il fatto che il destinatario deve conoscere la chiave, che gli permetterà di generare un messaggio con lo stesso MAC.
RIPE-MAC
È stato inventato da Bart Prenel nell'ambito del progetto RIPE. Utilizza DES come funzione di cifratura a blocchi. Ci sono due modifiche di questo algoritmo:
- RIPE-MAC 1 - utilizza una crittografia DES per ogni blocco di messaggi a 64 bit;
- RIPE-MAC 3 - Utilizza la tripla crittografia DES per blocco di messaggi a 64 bit.
Proprietà:
- La lunghezza del messaggio viene aumentata in modo che sia un multiplo di 64.
- Il messaggio è suddiviso in blocchi da 64 bit.
- Al messaggio viene applicata una funzione hash dipendente dalla chiave (DES o triple DES).
- Il valore hash ottenuto nel 3° passaggio viene nuovamente crittografato con l'algoritmo DES, con la chiave ottenuta dalla chiave utilizzata nel 3° passaggio.
IBC-MAC
Utilizzato anche come parte del progetto RIPE. La probabilità di aprire un IBC-MAC può essere quantificata. Il nucleo della funzione è
Ciao = ((Mi mod p) + v) mod 2n
La chiave segreta è una coppia di numeri p e v:
- p - numero primo di n bit
- v è un numero casuale minore di 2n
Mi - si ottiene utilizzando la procedura di addizione.
Ogni messaggio deve essere sottoposto a hash [3] con una nuova chiave.
È possibile quantificare la probabilità di apertura, l'unidirezionalità e la resistenza agli urti, modificandole si può impostare il livello di sicurezza desiderato.
Lo svantaggio è che il livello di sicurezza selezionato limita la dimensione del messaggio hash.
MAC bidirezionale
Questo MAC produce un valore hash che è il doppio della lunghezza del blocco dell'algoritmo.
Innanzitutto, viene calcolato il CBC-MAC per il messaggio. Il CBC-MAC del messaggio viene quindi calcolato con ordine di blocco inverso. Il MAC bidirezionale è semplicemente la concatenazione di questi due valori.
Questo schema non è sicuro. .
Funzione hash unidirezionale MAC
Una funzione hash unidirezionale può essere utilizzata anche come MAC.
Ad esempio, supponiamo che gli utenti A e B condividano una chiave K e che A desideri inviare il messaggio M al MAC A combina K e M e calcola una funzione di unione hash unidirezionale: H(K, M). Questo valore hash è il codice MAC. Poiché B conosce K, può riprodurre il risultato di A, ma un terzo utente, C, che non conosce la chiave, non può farlo.
Con metodi di amplificazione MD[ chiarire ] questo metodo funziona, ma ci sono seri problemi. L'utente C può sempre aggiungere nuovi blocchi alla fine del messaggio e calcolare il MAC corretto. Questo attacco può essere prevenuto anteponendo la lunghezza del messaggio, ma anche questo non è sicuro. È meglio aggiungere la chiave alla fine del messaggio, N(M,K), ma anche questo causa problemi. Se H è una funzione unidirezionale che non è a prova di collisione[ chiarire ] C può falsificare i messaggi. Ancora meglio è H(K,M,K) o H(K1,M,K2), dove K1 e K2 sono diversi. Sembrano al sicuro[ a chi? ] le seguenti costruzioni:
N(K1, N(K2, M))
N(K, N(K, M))
H(K, p, M, K)), dove p completa K per completare il blocco del messaggio.
L'approccio migliore [ clearclear ] consiste nel concatenare almeno 64 bit della chiave con ciascun blocco di messaggi. Ciò rende la funzione unidirezionale meno efficiente poiché i blocchi di messaggi sono più piccoli, ma è molto più sicura.
Oppure puoi usare una funzione hash unidirezionale e un algoritmo simmetrico. Il file viene prima sottoposto a hash, quindi il valore hash viene crittografato. Questo è più sicuro della prima crittografia del file e quindi dell'hashing del file crittografato, ma questo schema è suscettibile allo stesso attacco del costrutto H(M,K).
MAC utilizzando un codice di flusso
Questo schema MAC utilizza cifrari a flusso. Un generatore di bit pseudocasuale crittograficamente sicuro esegue il demultiplex [4] del flusso di messaggi in due flussi secondari. Se l'uscita del generatore di bit ki è uno, il bit corrente del messaggio mi viene inviato al primo flusso secondario, se zero, mi viene inviato al secondo flusso secondario. Ogni flusso secondario viene inviato al proprio LFSR. L'uscita del MAC è semplicemente lo stato finale di entrambi i registri.
Questo metodo non è sicuro per piccole modifiche al messaggio. Ad esempio, se si modifica l'ultimo bit del messaggio, è necessario modificare solo 2 bit del MAC corrispondente per creare un MAC falso; questo può essere fatto abbastanza facilmente.
Note
- ^ Bruce Schneier. Crittografia applicata. Protocolli, algoritmi, testi di partenza in linguaggio C. - M .: Triumph, 2002. - ISBN 5-89392-055-4 .
- ^ Metodi Juneman . Studiopedia.org . Estratto: 1 gennaio 2021.
- ↑ hash - Wikizionario . it.wiktionary.org . Estratto: 1 gennaio 2021.
- ↑ demultiplazione - Wikizionario . it.wiktionary.org . Estratto 1 gennaio 2021 . Archiviato dall'originale il 20 giugno 2017.
Letteratura
- Dizionario di termini crittografici / Ed. B. A. Pogorelov e V. N. Sachkov . - M. : MTSNMO, 2006. - S. 94 . — ISBN 5-94057-257-X .