ASCON128 est un algorithme qui permet de chiffrer le contenu d’un message garantissant que seul le destinataire puisse le lire (confidentialité), et de vérifier que le message n’a pas été altéré en cours de route grâce à un ”tag” d’authenticité. Ainsi, cet algorithme sécurise les données sensibles tout en assurant que l’identité des communicateurs est vérifiée.
Le projet présenté ici consiste à modéliser cet algorithme à travers un système numérique, en utilisant le langage SystemVerilog. L’objectif est de développer une version simplifiée de l'algorithme ASCON128 pour mieux comprendre son fonctionnement.
L’algorithme agit sur un état courant (state S), qui a une taille de 320 bits. Un state S peut être vu comme un tableau de cinq registres de 64 bits chacun ou 64 colonnes de 5 bits chacune.
Il utilise une clé secrète (K), un nombre arbitraire (Nonce N), un texte clair (P), un texte chiffré (C), des données associées (A), et un vecteur d'initialisation (IV).
Les principales étapes du chiffrement avec ASCON128 sont :
Dans ce projet, nous avons utilisé SystemVerilog, un langage de description matériel (HDL - Hardware Description Language) qui permet de modéliser des circuits numériques. Ce langage est principalement utilisé pour concevoir des systèmes embarqués et des circuits logiques complexes. L’objectif principal de cette étape était de créer une version simplifiée de l'algorithme de chiffrement ASCON128, tout en reproduisant ses différentes étapes de manière fidèle.
Une machine à états finis est un modèle très utilisé en conception numérique pour décrire des systèmes qui passent par différents états selon les données qu'ils reçoivent. Elle est composée de plusieurs "états" et de règles qui dictent comment le système passe d’un état à un autre. Cela permet de structurer le fonctionnement global du système, en s’assurant qu’il respecte les bonnes étapes dans le bon ordre.
Dans notre projet, nous avons utilisé une machine à états de type Mealy. Ce type de machine se distingue par le fait que les sorties du système dépendent non seulement de l'état courant du système, mais aussi des entrées qu'il reçoit. Cela permet une plus grande flexibilité dans la gestion des changements d'états et des signaux de contrôle. Concrètement, cette machine pilote l'ensemble du processus de chiffrement, assurant que les données soient traitées dans le bon ordre (initialisation, chiffrement, authentification).
L'un des composants centraux de l’algorithme ASCON128 est la permutation. En cryptographie, une permutation est une transformation qui mélange les bits d’un message ou d'un état courant pour rendre les données plus difficiles à analyser ou à attaquer. Cela améliore la sécurité du chiffrement en rendant le résultat imprévisible.
Dans notre modèle, la permutation est décomposée en plusieurs sous-opérations :
Chaque sous-opération a été modélisée dans un module SystemVerilog distinct pour plus de clarté et de modularité. Ces modules ont ensuite été assemblés pour former la permutation complète.
Une fois que chaque module du système (comme la permutation et les opérations XOR) a été implémenté, il est essentiel de vérifier leur fonctionnement. C'est là qu'intervient la phase de simulation.
Dans ce projet, chaque module a été testé individuellement à l'aide de bancs de test (ou testbenches). Un banc de test est un ensemble de scénarios qui simulent l'entrée de données dans le module pour voir comment il réagit et s'assurer qu'il produit les résultats attendus.
La simulation permet d’identifier des erreurs dans la conception avant de passer à la prochaine étape, ce qui garantit la fiabilité du système.
En plus de tester les modules individuellement, une simulation finale a été effectuée sur la permutation finale et le système global pour vérifier que l'ensemble des composants fonctionne correctement ensemble.