0% ont trouvé ce document utile (0 vote)
44 vues2 pages

CFS Signature Codes Goppa

Transféré par

Camara Djiby
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
44 vues2 pages

CFS Signature Codes Goppa

Transféré par

Camara Djiby
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Signature CFS avec Codes de Goppa

Introduction
Le schéma de signature CFS (Courtois, Finiasz, Sendrier) repose sur les codes correcteurs
d'erreurs, en particulier les codes de Goppa, pour garantir la sécurité. Ce document décrit le
processus en détail, avec des formules et des exemples.

1. Choix du Code de Goppa


Un code de Goppa est défini sur un corps fini GF(2^m) par :
- Un polynôme de Goppa g(x),
- Une séquence L = {α₁, α₂, ..., αₙ} d'éléments distincts dans GF(2^m).
Le code est noté [n, k, d], où n est la longueur, k la dimension, et d la distance minimale.

2. Génération des Clés

a. Clé privée
La clé privée comprend :
1. Le polynôme de Goppa g(x),
2. La séquence L,
3. Une permutation aléatoire P,
4. Une matrice de transformation S (non singulière).

b. Clé publique
La clé publique est calculée en obfusquant la matrice génératrice G :
G_pub = S · G · P,
où :
- G est la matrice génératrice du code de Goppa,
- S et P masquent la structure de G.

3. Signature d’un Message


Pour signer un message M :
1. Encodage : M est transformé en un vecteur de poids faible e par un hachage.
2. Décodage : On utilise un algorithme efficace pour trouver un mot code proche de e.
3. Transformation inverse : La signature est obtenue par l'inverse des transformations :
e' = S⁻¹ · e · P⁻¹.

4. Vérification
Le vérificateur utilise la clé publique G_pub pour vérifier si le vecteur signé est un mot code
valide correspondant au message M.

Exemple Illustratif
Supposons un code de Goppa défini sur GF(2³) avec :
- Polynôme g(x) = x³ + x + 1,
- Séquence L = {α₁, α₂, ..., α₆} dans GF(2³),
- n = 6, k = 3, d = 3.
La matrice génératrice G est donnée par :
G = [1 0 1 1 0 0;
0 1 1 0 1 0;
0 0 1 1 1 1].
Après application de S et P, on obtient :
G_pub = S · G · P.

Vous aimerez peut-être aussi