Vous êtes sur la page 1sur 8

CEA.U.

E [UNLOCKED]

Animateur : KRIKROU Farah


Secrétaire : LONGOU Racim
Scribe : RADI Selma
Gestionnaire : HADJSADOK Aya
Mots clés :
 Mécanisme d’authentification.
 Algorithme.
 Génération d’un couple de clés.
 L'implémentation sur l’Arduino.
Mots à définir :
 Chiffrement asymétrique : Le chiffrement asymétrique est une
technique de chiffrement qui utilise une paire de clés distinctes
pour chiffrer et déchiffrer des données. Une clé est publique et
peut être partagée librement, tandis que l'autre clé est privée
et doit être conservée secrète.
 Génération d’un couple de clés : processus de création d’une
paire de clés associées utilisées dans le chiffrement
asymétrique. Cette paire de clés comprend une clé publique qui
est généralement utilisée pour chiffrer des données, et une clé
privée qui est gardée secrète et est utilisée pour déchiffrer des
données.
Contexte :
L’agent R veut créer un mécanisme d’authentification avec un code qui change
au cours du temps à base de clés privés et publiques et aussi des algorithmes
afin d’éviter les risques d’interception.

Problématique :
Comment utiliser le chiffrement asymétrique pour authentifier des agents
secrets sur un coffre-fort numérique ?

Contraintes :
La structure de données ne peut visiblement pas contenir des caractères et des
entiers en même temps.

Plan d’actions :
1) Comprendre le fonctionnement :
 Génération d’un couple de clés :
Comme défini précédemment, La génération d'un couple de clés est
le processus de création d'une paire de clés utilisée dans le
chiffrement asymétrique. Il s'agit généralement d'une clé publique et
d'une clé privée. La clé publique est partagée avec d'autres, tandis
que la clé privée est gardée secrète. Ces clés sont générées de
manière à être mathématiquement liées de manière à ce que les
données chiffrées avec l'une ne puissent être déchiffrées qu'avec
l'autre.
Afin de générer deux clés “e” et “d” une publique et l’autre privée ;
on effectue les opérations suivantes :
 Choix de deux nombres premiers distincts p et q. (dans
l’énoncé du prosit, p = 43 er q = 67
 Calcul n = p*q = 43*67 = 2881.
 Calcul de phi(n) = (p-1) * (q-1).
 Choisir un exposant e tel que pgcd (e, phi(n)) = 1.
 Calcul d = e^-1 mod phi(n).
 La clé publique est constituée de deux chiffres (e,n).
 La clé privée est constituée d’un seul chiffre d.
Example : agent A : e= 601,2881 ; d=1273
 Chiffrement asymétrique :
Le chiffrement asymétrique est utilisé pour protéger des disques
entiers contre les accès non autorisés ainsi que pour échanger des
messages secrets, il repose sur l’utilisation d’une paire de clés : une
publique et une autre privée. Les données sont chiffrées avec la clé
publique, mais ne peuvent être déchiffrées qu’avec la clé privée
correspondante. Cela permet une communication sécurisée, car vous
pouvez partager votre clé publique sans révéler votre clé privée.
On veut envoyer un message chiffré C à un agent
On transforme un message en un entier M tel que 0 ≤ 𝑀 ≤𝑛
La carte Arduino récupère d’abord la clé publique de l’agent (n,e).
Elle calcule le message chiffré 𝑒
𝐶 ≡ 𝑀 ( 𝑚𝑜𝑑 𝑛 )
Puis il transmet C à l’agent.
L'agent reçoit le message C chiffré par la carte, puis le décrypte à
l’aide de sa clé privée d : 𝑀 ≡ 𝐶 𝑑 ( 𝑚𝑜𝑑𝑛 )

 Des logigrammes : les logigrammes présentés dans l’énoncé de


notre prosit sont un algorithme qui représente le chiffrement
asymétrique.
 Les fonctions et tableaux en C Arduino :
Les tableaux :
Un tableau est une liste ordonnée de valeurs de même type. La taille
d’un tableau correspond au nombre d’éléments de ce dernier. Pour
accéder à la valeur d’un élément d’un tableau, on utilise son index.
Le premier élément du tableau a pour index 0 pas 1.
D'une manière générale, quand on a besoin de rédiger des lignes de
codes répétitives, un tableau pourrait nous faciliter la tâche, on
déclare un tableau en écrivant : tableau [] = {…, …} ;
Les fonctions :
Une fonction est un “conteneur” mais différent des variables ; une
variable ne peut contenir qu’un nombre, tandis qu’une fonction peut
contenir un programme entier. C'est un bout de programme qui
permet de réaliser une tâche spécifique.
Lors de la préparation du programme d’une carte Arduino, on écrit
ce dernier dans des fonctions qui sont void setup () et void Loop (),
on y met des instructions (boucles, variables, conditions, …), qui vont
constituer le programme en lui-même.
Il existe des fonctions toutes prêtes dans le langage Arduino et
d’autres que l’on va devoir créer nous-même.
Pour créer une fonction il faudrait définir son nom, son type et ses
paramètres. Ces derniers servent à donner des informations au
traitement qu’elle doit effectuer.

2)Traduire les logigrammes en code C Arduino :


Tout ce programme utilise chiffrement asymétrique, le but est de
générer une clé publique e et une clé privée d, en utilisant la clé
publique e et un nombre généré aléatoirement M nous pouvons
créer un message codé, la seule façon de décoder ce message est
d'utiliser votre clé privée d rendant ainsi l'authentification correcte.
Nous pouvons traduire cela en un code C Arduino qui donne ceci :
En utilisant des tableaux et des fonctions en C Arduino, nous créons ce programme qui fonctionne
comme le logigramme

3)Montage et simulation :
Le code demande d'abord à l'agent de saisir son nom, puis vérifie si
son nom est dans le tableau. Après cela, le code indique à l'agent
d'insérer sa clé publique en vérifiant également cela. En utilisant la
logique de cryptage avec la clé privée et la clé publique ainsi que le
nombre généré aléatoirement M, nous obtenons un message codé,
pour décoder ce message, nous utilisons notre clé privée d pour
décrypter ce message codé aléatoire M.

Une fois que tout est correct, la LED verte s'allume, ce qui signifie
que l'authentification est correcte.
Lien tinkercad : https://www.tinkercad.com/things/2f4OeXWsGSp-
bodacious-hillar-migelo/editel?sharecode=GjZccflp-
ZVRNWIledWbKMqi5Uivvc1lxYketFx64n0

Vous aimerez peut-être aussi