SAE 302 - Routage en oignon

Récapitulatif :

L'ESP32 peut être implémanté dans un système autonome, tel qu'un robot suiveur de ligne. Pour qu'il soit totalement autonome, il est nécessaire qu'il puisse s'avoir se situer dans l'espace. J'ai donc choisi de me pencher sur la géolocalisation des robots suiveur de ligne.

Sujet

Je me suis intéressé à différents algorithmes de cryptographie.

RSA :

Il nous a été demandé d'utiliser un chiffrement asymétrique. Dans un premier temps, j'ai choisi d'utiliser un chiffrement RSA ou Rivest Shamir Adleman.

Les clés sont définis comme : \( \quad {K_m = [p,q,d]} \quad \) et \( \quad K_p = [n,e] \quad \)

avec \( \quad n = p \times q \) \( \quad \phi (n) = (p-1)(q-1) \) \( \quad eu + \phi(n) v = 1 \) \( \quad d = u \: mod (\phi(n)) \)

Je me suis beaucoup aidé des vidéos de Hafnium - Sécurité informatique, que je vous recommande. Ci-dessous, une de ses vidéos consacrée au chiffrement RSA.

ECDSA :

1. Courbes Elliptiques

Si RSA travaillait sur des nombres réels, en cryptographie, pour encore en plus sécuriser les clés, il est possible d'utiliser les courbes elliptiques. Si vous n'êtes pas familiés avec les courbes elliptiques, je vous conseille de regarder la vidéo ci-dessous de El Jj, qui aborde ce sujet, ainsi qu'un des sept problèmes du millénaire.

2. Génération des clés

Les clés sont définis comme : \( \quad {K_{privée} \in [1;n[} \quad \) et \( \quad K_{publique} = {K_{privée}} G (x,y) \)

La clé privée est choisie aléatoirement. La clé publique équivaut à la clé privée que multiplie un point générateur G(x,y). La clé privée n'est rien d'autre qu'un très grand nombre, avec plusieurs dizaines de chiffres. Le problème est que l'appareil doit multiplier le point générateur beaucoup trop de fois, ce qui prendrait un temps très long. La solution est d'utiliser l'algorithme Double and Add.

3. SECP256R1

Les paramètres de SECP256R1 sont donnés par le Standards for Efficient Cryptography Group.

La courbe a une sécurité de \( \quad \sqrt {{ \pi n sec256r1 } \over 4 } \simeq 127,8 \quad \) et un ordre d'automorphisme de 2.

Echanges de Diffie-Hellman :

Pour échanger echanger des messages, j'ai choisi d'utiliser Diffie-Hellman.

Les clés sont définis comme : \( \quad {K_m \in [0, p-1]} \quad \) et \( \quad K_p = g^{Km} mod (p) \)

Temps alloué :

26,25 heures encadrées + 39,5 heures d'autonomie, soit 75,75 heures totales de projet.





Version en date du 02/12/2025 par Théo-Félix ADAM.