SAE 302 - Routage en oignon

Récapitulatif :

L'objectif de ce projet était de concevoir une application communicante avec plusieurs machines, tout en chiffrant les données envoyées et ou le receveur n'a aucune idée de qui est le transmetteur.

Sujet

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

Rotator :

Pour mon application, j'ai choisi de l'appeler "Rotator".

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) \)

Fonctionnement Final :

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.