Neurocrittografia
# Neurocrittografia

La neurocrittografia (o crittografia neurale) è la branca della crittografia che si occupa di analizzare l'applicazione di algoritmi stocastici, e soprattutto le reti neurali, sia per la cifratura sia per la crittoanalisi.

## Definizione

Le reti neurali sono ben note per la loro capacità di esplorare lo spazio delle soluzioni di un dato problema in modo selettivo: una loro possibile applicazione è, quindi, nel campo della crittoanalisi. Allo stesso tempo, le reti neurali offrono un nuovo approccio per attaccare algoritmi di cifratura, dal momento che ogni funzione, anche non lineare, può essere riprodotta da una rete neurale; l'idea è, quindi, usare questo strumento computazionale molto potente per trovare le funzioni inverse di qualunque algoritmo crittografico.

Le idee di mutuo apprendimento e di autoapprendimento e il comportamento stocastico delle reti neurali e di simili algoritmi possono essere usati per aspetti molto diversi della crittografia, come la crittografia asimmetrica, per risolvere il problema della distribuzione delle chiavi usando la mutua sincronizzazione delle reti neurali, per funzioni crittografiche di hashing e per la generazione di numeri pseudocasuali.

## Applicazioni

Non ci sono attualmente applicazioni pratiche della neurocrittografia, principalmente perché questo campo è ancora nelle fasi iniziali del suo sviluppo; tuttavia, sono stati ottenuti alcuni importanti risultati teorici. Nel 1995, Sebastien Dourlens ha applicato le reti neurali per fare crittoanalisi del noto algoritmo DES, forzando la rete ad apprendere una funzione per invertire le tabelle di sostituzione (S-box o S-tables), che costituiscono il cuore della sicurezza dell'algoritmo DES.

Inoltre, un esempio di protocollo a chiave pubblica basato sul metodo di backpropagation è stato fornito da Khalil Shihab: pur risultando teoricamente valido, lo svantaggio principale di questo protocollo è l'enorme mole di dati richiesta per la fase di addestramento della rete neurale.

