SlideShare une entreprise Scribd logo
1  sur  38
Codes Correcteurs d’Erreurs
Encadré par : Monsieur Brahim CHERGUI
Réalisé par : Hajar BOUCHRIHA
Salma RACHIDI
Mohamed RAZIKI
Le 15 Mai 2023
Plan :
Introduction
1
Code cyclique
2
Code linéaire
3
Code de Goppa entre la théorie et la pratique
4
Conclusion
5
Introduction
Les codes correcteurs d’erreurs sont une famille de codes utilisés en théorie de l’information pour
détecter et corriger les erreurs qui se produisent lors de la transmission de données numériques.
Lorsque les données sont transmises sur un canal de communication, des perturbations peuvent
causer des erreurs qui peuvent compromettre l’intégrité des données.
Les codes correcteurs d’erreurs permettent de détecter et de corriger ces erreurs, garantissant ainsi
la fiabilité de la transmission
Introduction
Lors de cette présentation, nous allons nous intéresser plus particulièrement
aux code cyclique, code linéaire et code géométrique de Goppa.
Nous allons examiner plus en détail leurs définition, utilité dans la vie réelle,
ses avantages et inconvénients, ainsi que leurs relations avec la cybersécurité et
la cryptographie. Nous allons également discuter des applications pour
encoder et décoder ces codes.
Enfin, nous allons mettre en œuvre ces codes en utilisant Python
(Implémentation).
Code Cyclique
Pourquoi ?
Le code cyclique est un type particulier de code correcteur d'erreur qui présente plusieurs
avantages. Tout d'abord, il est facile à encoder et à décoder, car il suffit d'effectuer des
opérations arithmétiques simples sur les bits du message.
De plus, il permet de détecter et de corriger toutes les erreurs de poids inférieur ou égal à t,
où t est le nombre d'erreurs que le code est capable de corriger. Enfin, il est efficace en termes
de taux de redondance, c'est-à-dire le rapport entre la taille du message informatif et la taille
totale du mot code.
Le code cyclique est donc souvent utilisé dans des applications où la correction d'erreur est
importante, comme la transmission de données sur des canaux bruyants ou la sauvegarde de
données sur des supports de stockage, tels que les disques durs ou les cartes mémoire.
Quand ?
On utilise le code cyclique dans les situations où la correction d'erreur est importante,
comme dans la transmission de données sur des canaux bruyants ou la sauvegarde de
données sur des supports de stockage.
Voici quelques exemples d'applications où le code cyclique est utilisé :
Transmission de données : Le code cyclique est utilisé pour la transmission de
données sur des canaux bruyants, tels que les réseaux sans fil, les canaux satellitaires,
les canaux de communication par fibre optique, etc. Dans ces situations, le code
cyclique permet de détecter et de corriger les erreurs qui peuvent survenir lors de la
transmission des données.
Contrôle de redondance cyclique (CRC) : Le CRC est un type de code cyclique
utilisé pour la détection d'erreurs dans les trames de données. Il est utilisé dans de
nombreuses applications, telles que les réseaux Ethernet, les protocoles de
communication sans fil, les cartes à puce, etc.
Comment ?
Pour utiliser le code cyclique, on suit les étapes suivantes :
Choix des paramètres : On choisit les paramètres du code cyclique, c'est-à-dire les
valeurs de n et k. n est la longueur du mot code, tandis que k est la longueur du message
informatif.
Génération du polynôme générateur : On génère le polynôme générateur du code
cyclique, qui est un polynôme binaire de degré n-k.
Encodage du message : On encode le message informatif en ajoutant des bits de
redondance au message à l'aide du polynôme générateur. Le résultat est le mot code, qui
est transmis sur le canal de communication ou stocké sur le support de stockage.
Détection et correction d'erreur : À la réception, le récepteur vérifie si le mot code
contient des erreurs à l'aide de l'algorithme de détection d'erreur. Si une erreur est
détectée, le récepteur utilise l'algorithme de correction d'erreur pour corriger l'erreur.
***L'algorithme de détection d'erreur utilise souvent la technique de syndrome, qui
consiste à calculer un vecteur de syndrome à partir du mot code reçu et du polynôme
générateur. Si le vecteur de syndrome est nul, cela signifie qu'il n'y a pas d'erreur dans le
mot code. Si le vecteur de syndrome n'est pas nul, cela indique la présence d'une erreur.
Code Cyclique
Définition :
Un code cyclique (n,k) est un code linéaire (n,k) tel que toute permutation circulaire d'un mot du code est encore un mot du code.
Ce type de code possède non seulement la capacité de détecter les erreurs, mais aussi de les corriger sous réserve d'altérations
modérées.
NB: Le couple (n, k) signifie que : le paramètre n représente la longueur de chaque mot de C.
Le paramètre k représente la puissance de 2 qui est la dimension de C : |C| = 𝟐k
Exemple:
• Si le vecteur x= (1,0,0,0,1,1,0) est un mot code dans C, alors toutes ses versions décalées sont aussi des mots codes du
code cyclique linéaire :
(1,0,0,0,1,1,0),(0,0,0,1,1,0,1),(0,0,1,1,0,1,0), . . . ,(0,1,0,0,0,1,1)∈ C
Soit C un code cyclique de polynôme générateur 1010.Le message binaire : 1100
1.Déterminer CRC.
2.Donner le message codé.
3.Le récepteur a reçoit le message m=1100101.
Application :
Implémentation en Python
Code cyclique et Cybersécurité
Le code cyclique peut être utilisé dans le domaine de la cybersécurité pour assurer la sécurité et l'intégrité des données dans
différentes applications.
Transfert de données sécurisé : Le code cyclique peut être utilisé pour assurer la sécurité et l'intégrité des données lors du
transfert de données entre des systèmes sécurisés.
Le code cyclique peut détecter et corriger les erreurs introduites par des attaques de type Man-in-the-middle (MITM), ou lors de la
transmission sur des canaux bruyants.
Cryptographie : Le code cyclique peut être utilisé pour la génération de clés cryptographiques pour les algorithmes de
chiffrement symétriques. Les clés peuvent être générées à partir de polynômes cycliques et utilisées pour chiffrer les données de
manière sécurisée.
Stockage de données : Le code cyclique peut être utilisé pour stocker les données de manière sécurisée en ajoutant de la
redondance aux données stockées. Si des erreurs sont détectées lors de la lecture des données, le code cyclique peut les corriger de
manière fiable.
Authentification : Le code cyclique peut être utilisé pour l'authentification des données, en ajoutant des codes d'authentification
aux données. Les codes d'authentification permettent de garantir l'intégrité des données et d'empêcher les attaques sur les données.
Code linéaire
Le code linéaire
Un code C de paramètres (n, k) est dit linéaire si pour tout m, mꞌ de C, m + mꞌ est
dans C.
* le paramètre n représente la longueur de chaque mot de C.
* le paramètre k représente la puissance de 2 qui est la dimension de C : |C|=𝟐k .
Les codes linéaires sont un type des codes correcteurs d’erreurs qui
peuvent détecter et corriger les erreurs qui se produisent lors de la
transmission de données. Ces codes sont basées sur des propriétés
algébriques et linéaires.
DEFINITION:
Application
C = {000000 , 111111 , 010101 , 101010 , 110011 , 001100 , 011001 , 100110}
Est-ce que le code C est un code linéaire ?
Quelle est la longueur n de C? Quelle est la dimension k de C?
Les mots de C sont de longueurs 6, alors n=6.
Et on a |C|=8 = 23 , alors k=3. ⇒ C est un (6, 3) code.
Montrons que C est linéaire : on prend deux mots distinct de C et on vérifie que la somme est dans C.
Soit m = 110011 et m’= 101010 deux mots de C.
On a m⨁m′
= 110011 ⨁ 101010 = 011001 ∈ 𝐶.
Donc C est un (6,3) code linéaire.
Codage d’un code linéaire
Pour coder un message m par un code linéaire, il suffit de le multiplier par la
matrice génératrice G . Le résultat est le mot codé mꞌ= m.G
La matrice génératrice d’un code linéaire est G = (𝐼k |P)
Avec : [𝐼k ]=k x k et P =k x r (r=n-k) (P est la matrice de parité)
Application
C = {000000 , 111111 , 010101 , 101010 , 110011 , 001100 , 011001 , 100110}
C est un (6,3) code linéaire.
Donner la matrice génératrice du code C.
Pour construire la matrice génératrice on commence par la matrice identité 𝐼 =
1 0 0
0 1 0
0 0 1
On cherche dans le code C les mots qui on le préfixe de cette matrice.
Donc 𝐺 =
1 0 0
0 1 0
0 0 1
1 1 0
1 0 1
1 0 0
Application
C = {000000 , 111111 , 010101 , 101010 , 110011 , 001100 , 011001 , 100110}
C est un (6,3) code linéaire.
Coder le message m = 101.
Remarque :
Le nombre de ligne de matrice G indique les mots qu’on peut coder a partir de G
Donc cette matrice permet de coder des mots de longueur 3.
𝑚′
= 𝑚 . 𝐺 = 1 0 0 ×
1 0 0
0 1 0
0 0 1
1 1 0
1 0 1
1 0 0
= (1 0 1 0 1 0 )
Donc le message codé est m’ = 1 0 1 0 1 0
Décodage d’un code linéaire
Soit C un code linéaire de matrice génératrice G =(Ik |P) de dimension (k x n).
On pose H = (PT| In-k ) La matrice H est dite matrice de contrôle du code linéaire C.
On appelle syndrome S du mot m le vecteur S = HT m.
●Si S = 0 alors on dit qu’il n’a pas d’erreur.
●Si S ≠0 alors on dit qu’il y a une erreur dans la position i (avec i =(S)10 ).
Application
Soit m’ = 1 0 1 0 1 0 le mot reçu
𝐻 =
1 1 1
1 0 0
0 1 0
1 0 0
0 1 0
0 0 1
1- Déterminons la matrice de contrôle H :
2- Calculons le syndrome S :
𝑆 = 𝐻𝑇
. 𝑚 =
1 1 0
1 0 1
1 0 0
1 0 0
0 1 0
0 0 1
. 1 0 1 0 1 0 = 0 0 0
𝐻𝑇
=
1 1 0
1 0 1
1 0 0
1 0 0
0 1 0
0 0 1
Puisque le syndrome est nul donc il n’y a pas d’erreur .
Si on a S = 010 ≠ 0 alors on dit qu’il ya une erreur dans la position i = (010)10 =2.
Exercice d ’application
𝐺 =
1 0 0
0 1 0
0 0 1
0 1 1
1 0 1
1 1 0
1- Quelle est la dimension du code?
2- Quels sont les mots du code?
3- Quelle est la distance minimale du code?
4- Quelles sont les paramètres du code?
5- Quel est le taux d'information du code?
6- Combien corrige t'il d'erreurs?
7- Déterminer la matrice de contrôle du code.
8- Soit x=010010, Calculer le syndrome du mot x.
9- Est ce que le message est modifié ? Si oui corrige le.
Code géométrique de Goppa
Les codes géométriques de Goppa ont été introduits en
1970 par le mathématicien russe Valery Denisovich
Goppa (né en 1939-), qui a découvert la relation entre la
géométrie algébrique et les codes.
L’application moderne du codes binaires de Goppa est
crypto-systèmes post-quantiques (crypto-système de
McEliece)
Histoire
Le code géométrique de GOPPA est linéaire et géométrique à la fois!
En termes simples, un code linéaire est un sous-espace vectoriel d'un espace vectoriel plus
grand. Les codes linéaires sont construits à partir d'une matrice de contrôle, qui permet de
détecter les erreurs dans les transmissions de données. Les codes linéaires sont également
caractérisés par leur distance minimale, qui détermine la capacité de correction d'erreur du
code.
D'un autre côté, les codes géométriques sont construits à partir de points sur une variété
algébrique, telle qu'une courbe elliptique ou un corps fini. Les codes géométriques sont
également caractérisés par leur distance minimale et leur dimension.
Le code de Goppa combine ces deux approches en utilisant des courbes algébriques pour
construire un sous-espace vectoriel particulier appelé code de Goppa. Ce code est linéaire car
il s'agit d'un sous-espace vectoriel, mais il est également géométrique car il est construit à partir
de courbes algébriques.
Principe du code Goppa
Le code géométrique de Goppa a
été développé en 1970 par
Valentyn Goppa.
Les erreurs dans le code sont
détectées et corrigées grâce à
des techniques de géométrie
algébrique
Cette méthode utilise la
géométrie algébrique pour
construire des codes
correcteurs d'erreurs à partir
de courbes de genre 2.
Les points de la courbe de
Goppa sont utilisés pour
définir les mots du code.
Le code géométrique de Goppa est
largement utilisé en théorie de
l'information et en cryptographie,
notamment dans le schéma de cryptage
de McEliece.
Le code géométrique de Goppa
Le code géométrique de Goppa est un type de code correcteur d'erreurs
qui utilise les propriétés géométriques d'une courbe algébrique pour
construire un ensemble de contrôle.
Le code géométrique de Goppa est défini à partir d'une fonction de
Goppa, qui est une fonction polynomiale irréductible f(x) de degré n sur
un corps fini Fq, où q est une puissance de nombre premier. Cette
fonction est choisie de telle sorte que le nombre de racines de f(x) dans
Fq est égal à n - k, où k est la dimension du code.
Le code géométrique de Goppa
Le contrôle est construit à partir des racines de f(x) dans une extension du corps de
Galois Fq. Pour chaque racine α de f(x), on choisit un vecteur de contrôle Cα de
longueur n, dont les éléments sont les évaluations du polynôme x-α à toutes les
racines de f(x) dans l'extension de Fq. Les vecteurs de contrôle sont alors
combinés pour former une matrice de contrôle C de taille (n-k) × n.
Pour encoder un message de longueur k, on multiplie le message par une
matrice génératrice de taille k × n, qui est obtenue en inversant la matrice
de contrôle C. Le message encodé est alors obtenu en multipliant le
message par la matrice génératrice.
Pour détecter et corriger les erreurs, on utilise une technique appelée syndrome
decoding. Le syndrome d'un mot de code est défini comme le produit de ce mot de
code par la transposée de la matrice de contrôle. Si un mot de code contient des
erreurs, son syndrome sera différent de zéro. On peut alors utiliser une table de
syndromes précalculée pour déterminer les erreurs potentielles et les corriger.
Les avantages
• Les codes géométriques de Goppa ont une capacité de correction d'erreurs élevée. Ils peuvent corriger un grand
nombre d'erreurs dans un flux de données donné, ce qui les rend utiles dans de nombreuses applications, telles que la
transmission de données à haute vitesse ou la sécurité des communications.
• Les codes géométriques de Goppa peuvent être construits à partir de polynômes irréductibles
choisis arbitrairement, ce qui permet une grande flexibilité dans leur conception et leur mise en
œuvre.
• Les codes géométriques de Goppa ont une structure mathématique élégante, qui
permet une analyse mathématique rigoureuse de leurs propriétés et de leur
performance.
2
Les inconvénients
La construction de codes géométriques de Goppa peut être coûteuse en termes
de temps de calcul et de ressources informatiques, car elle nécessite la
résolution de problèmes difficiles en théorie de la géométrie algébrique.
3
1
Les codes géométriques de Goppa peuvent être plus difficiles à
implémenter que d'autres types de codes correcteurs d'erreurs, car ils
nécessitent souvent des calculs complexes sur des corps finis.
Les performances des codes géométriques de Goppa peuvent être affectées par
la qualité des polynômes utilisés pour leur construction, ce qui peut nécessiter
des connaissances spécialisées en théorie des nombres et en géométrie
algébrique.
2
3
4
1
Utilité de code géométrique de Goppa
Les codes correcteurs d'erreurs, y
compris le code géométrique de Goppa,
sont utilisés dans les systèmes de
communications sans fil pour améliorer
la qualité de la transmission des
données. Par exemple, le standard Wi-
Fi utilise des codes correcteurs d'erreurs
pour réduire les erreurs de transmission.
Le code géométrique de Goppa est
utilisé dans le schéma de cryptage de
McEliece, qui est l'un des rares schémas
de cryptographie post-quantique connus
pour être résistant aux attaques
quantiques. Cela en fait une méthode de
cryptage sûre et fiable pour protéger les
informations confidentielles.
Les disques durs et les mémoires flash
utilisent également des codes correcteurs
d'erreurs, y compris le code géométrique de
Goppa, pour garantir l'intégrité des données
stockées. Cela permet de minimiser les
risques de perte de données en cas d'erreurs
lors de l'écriture ou de la lecture des données
Les codes correcteurs d'erreurs, y compris
le code géométrique de Goppa, peuvent
être utilisés pour améliorer la qualité de
transmission des images médicales et des
signaux électrocardiographiques (ECG).
Cela peut aider les médecins à
diagnostiquer les problèmes de santé plus
rapidement et plus précisément.
Communications sans fil
Cryptographie
Stockage de données
Médecine
La relation entre la cybersécurité et les codes géométriques de Goppa
Les codes de Goppa
peuvent être utilisés pour
l'authentification des
utilisateurs dans les
systèmes de sécurité. En
utilisant un code de Goppa
pour encoder les
identifiants de l'utilisateur,
on peut garantir que seule
la personne autorisée est
en mesure de déchiffrer
les informations.
Les codes de Goppa sont
également utilisés pour
renforcer la sécurité des
réseaux de
communication. Ils
peuvent être utilisés pour
encoder les données qui
sont transmises sur un
réseau, ce qui peut aider à
prévenir les attaques de
type man-in-the-middle et
d'autres types d'attaques
qui cherchent à intercepter
ou modifier les données.
Les codes de Goppa peuvent
être utilisés pour renforcer la
sécurité des systèmes
embarqués tels que les cartes à
puce. En utilisant des codes de
Goppa pour encoder les
informations stockées sur la
carte, on peut garantir que
seules les personnes autorisées
sont en mesure d'accéder aux
données sensibles.
Authentification
Sécurité des
réseaux
Sécurité des
systèmes embarqués
La relation entre la Cryptographie et les codes géométriques de Goppa
• Le code de Goppa est une technique de codage correcteur d'erreurs utilisée en cryptographie pour protéger les
transmissions de données contre les erreurs et les attaques malveillantes.
• Dans la cryptographie à clé publique, le code de Goppa est souvent utilisé comme un mécanisme de base pour
la construction de systèmes de chiffrement à clé publique basés sur le problème du codage.
• Par exemple, le système de chiffrement McEliece est basé sur le code de Goppa. Le système de chiffrement
McEliece est considéré comme résistant à l'attaque de Shor, qui est une attaque quantique utilisée pour casser
les systèmes de chiffrement à clé publique classiques tels que RSA et ECC. Bien qu'il ait des avantages en
termes de sécurité, le système de chiffrement McEliece est relativement inefficace en termes de taux de
transfert de données et de taille de la clé.
• En dehors de la cryptographie à clé publique, le code de Goppa est également utilisé dans les codes
correcteurs d'erreurs pour la correction des erreurs dans les transmissions de données, comme dans les
communications par satellite, les réseaux de télécommunications et les systèmes de stockage de données.
Implémentation en Python
Conclusion
En conclusion, les codes correcteurs d'erreurs sont un élément essentiel de la théorie de l'information et de la
cryptographie. Ils permettent de détecter et de corriger les erreurs qui peuvent survenir lors de la transmission de
données, ce qui est crucial pour garantir l'intégrité et la fiabilité des informations échangées. Les codes correcteurs
d'erreurs sont largement utilisés dans de nombreux domaines, tels que les télécommunications, la transmission de
données, la sécurité informatique, la cryptographie, etc. Ils peuvent prendre de nombreuses formes, depuis les
codes de Hamming et les codes cycliques jusqu'aux codes de Goppa et aux codes de Reed-Solomon. Chacun de
ces types de codes possède ses propres avantages et inconvénients, et leur choix dépend des besoins et des
contraintes spécifiques de chaque application.
Merci Pour Votre Attention !
Bibliographie et Webographie
Berlekamp, E. "Goppa Codes." IEEE Transactions on Information Theory
19.5(1973): 590-92. Web.
Goppa, V. D. Geometry and Codes. Dordrecht: Kluwer Academic, 1988. Print.
Trappe, Wade, and Lawrence C. Washington. Introduction to Cryptography:
With Coding Theory. Upper Saddle River, NJ: Pearson Prentice Hall, 2006. Print.
https://youtu.be/ek_O2WUF6U4

Contenu connexe

Tendances

Chapitre 4-Apprentissage non supervisé (1) (1).pdf
Chapitre 4-Apprentissage non supervisé (1) (1).pdfChapitre 4-Apprentissage non supervisé (1) (1).pdf
Chapitre 4-Apprentissage non supervisé (1) (1).pdfZizoAziz
 
Cours acp mehdi_aman
Cours acp mehdi_amanCours acp mehdi_aman
Cours acp mehdi_amanMehdi Aman
 
Regression lineaire Multiple (Autosaved) (Autosaved)
Regression lineaire Multiple (Autosaved) (Autosaved)Regression lineaire Multiple (Autosaved) (Autosaved)
Regression lineaire Multiple (Autosaved) (Autosaved)Pierre Robentz Cassion
 
Gestion des risques SSI : Approche globale ou individuelle ?
Gestion des risques SSI : Approche globale ou individuelle ?Gestion des risques SSI : Approche globale ou individuelle ?
Gestion des risques SSI : Approche globale ou individuelle ?BPMSinfo
 
Serie recurrents & arithmetiques
Serie recurrents & arithmetiquesSerie recurrents & arithmetiques
Serie recurrents & arithmetiquesmohamed_SAYARI
 
Traitement des données manquantes et aberrantes sous R
Traitement des données manquantes et aberrantes sous RTraitement des données manquantes et aberrantes sous R
Traitement des données manquantes et aberrantes sous RMohamed Ali KHOUAJA
 
récursivité algorithmique et complexité algorithmique et Les algorithmes de tri
récursivité algorithmique et complexité algorithmique et Les algorithmes de trirécursivité algorithmique et complexité algorithmique et Les algorithmes de tri
récursivité algorithmique et complexité algorithmique et Les algorithmes de triYassine Anddam
 
Introduction au Deep Learning
Introduction au Deep Learning Introduction au Deep Learning
Introduction au Deep Learning Niji
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1vangogue
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French CourseHaytam EL YOUSSFI
 
Data mining - Segmentation(k-means, cah)
Data mining - Segmentation(k-means, cah)Data mining - Segmentation(k-means, cah)
Data mining - Segmentation(k-means, cah)Mohamed Heny SELMI
 
POO Java Introduction
POO Java IntroductionPOO Java Introduction
POO Java IntroductionMouna Torjmen
 
Exposé segmentation
Exposé segmentationExposé segmentation
Exposé segmentationDonia Hammami
 
Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Ines Ouaz
 
Aql métriques logicielles
Aql métriques logiciellesAql métriques logicielles
Aql métriques logiciellesmarwa baich
 

Tendances (20)

Chapitre 4-Apprentissage non supervisé (1) (1).pdf
Chapitre 4-Apprentissage non supervisé (1) (1).pdfChapitre 4-Apprentissage non supervisé (1) (1).pdf
Chapitre 4-Apprentissage non supervisé (1) (1).pdf
 
Cours acp mehdi_aman
Cours acp mehdi_amanCours acp mehdi_aman
Cours acp mehdi_aman
 
Codes Convolutifs
Codes ConvolutifsCodes Convolutifs
Codes Convolutifs
 
Regression lineaire Multiple (Autosaved) (Autosaved)
Regression lineaire Multiple (Autosaved) (Autosaved)Regression lineaire Multiple (Autosaved) (Autosaved)
Regression lineaire Multiple (Autosaved) (Autosaved)
 
Gestion des risques SSI : Approche globale ou individuelle ?
Gestion des risques SSI : Approche globale ou individuelle ?Gestion des risques SSI : Approche globale ou individuelle ?
Gestion des risques SSI : Approche globale ou individuelle ?
 
Serie recurrents & arithmetiques
Serie recurrents & arithmetiquesSerie recurrents & arithmetiques
Serie recurrents & arithmetiques
 
Traitement des données manquantes et aberrantes sous R
Traitement des données manquantes et aberrantes sous RTraitement des données manquantes et aberrantes sous R
Traitement des données manquantes et aberrantes sous R
 
Gestion des risques
Gestion des risquesGestion des risques
Gestion des risques
 
récursivité algorithmique et complexité algorithmique et Les algorithmes de tri
récursivité algorithmique et complexité algorithmique et Les algorithmes de trirécursivité algorithmique et complexité algorithmique et Les algorithmes de tri
récursivité algorithmique et complexité algorithmique et Les algorithmes de tri
 
Introduction au Deep Learning
Introduction au Deep Learning Introduction au Deep Learning
Introduction au Deep Learning
 
METHODE OCTAVE
METHODE OCTAVE METHODE OCTAVE
METHODE OCTAVE
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1
 
Présentation Cryptographie
Présentation CryptographiePrésentation Cryptographie
Présentation Cryptographie
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French Course
 
Data mining - Segmentation(k-means, cah)
Data mining - Segmentation(k-means, cah)Data mining - Segmentation(k-means, cah)
Data mining - Segmentation(k-means, cah)
 
POO Java Introduction
POO Java IntroductionPOO Java Introduction
POO Java Introduction
 
Exposé segmentation
Exposé segmentationExposé segmentation
Exposé segmentation
 
Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)
 
Ebios
EbiosEbios
Ebios
 
Aql métriques logicielles
Aql métriques logiciellesAql métriques logicielles
Aql métriques logicielles
 

Similaire à Codes Correcteurs d’Erreurs.pptx

Tp 1 transmission de donné inisiallisation à simulink matlab
Tp 1 transmission de donné inisiallisation à simulink matlabTp 1 transmission de donné inisiallisation à simulink matlab
Tp 1 transmission de donné inisiallisation à simulink matlabhamdinho
 
Cours sur les circuits logiques câblés www.cours-online.com
Cours sur les circuits logiques câblés www.cours-online.comCours sur les circuits logiques câblés www.cours-online.com
Cours sur les circuits logiques câblés www.cours-online.commorin moli
 
Cours programmation en langage C.pdf
Cours  programmation  en  langage  C.pdfCours  programmation  en  langage  C.pdf
Cours programmation en langage C.pdfkhalidmoussaid4
 
TRANSMISSION NUMERIQUE Année 2022-2023 CEFIB
TRANSMISSION NUMERIQUE Année 2022-2023 CEFIBTRANSMISSION NUMERIQUE Année 2022-2023 CEFIB
TRANSMISSION NUMERIQUE Année 2022-2023 CEFIBYounoussKEITA
 
examen en DSP 2023.pdf
examen en DSP 2023.pdfexamen en DSP 2023.pdf
examen en DSP 2023.pdfkamouf
 
Inf_theory_lect3.pdf
Inf_theory_lect3.pdfInf_theory_lect3.pdf
Inf_theory_lect3.pdfkohay75604
 
Chapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdf
Chapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdfChapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdf
Chapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdfRazaneLAMARA
 
td_devoirs_2013.pdf
td_devoirs_2013.pdftd_devoirs_2013.pdf
td_devoirs_2013.pdfMeryemH2
 
[STLS] tests de performance coherenSE
[STLS] tests de performance coherenSE[STLS] tests de performance coherenSE
[STLS] tests de performance coherenSEMarc Hage Chahine
 
Inf_theory_lect4.pdf
Inf_theory_lect4.pdfInf_theory_lect4.pdf
Inf_theory_lect4.pdfkohay75604
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Aziz Darouichi
 
cours1 (1).pdf
cours1 (1).pdfcours1 (1).pdf
cours1 (1).pdfAlynaEla
 
CM1 - Signal et Information
CM1 - Signal et InformationCM1 - Signal et Information
CM1 - Signal et InformationPierre Maréchal
 

Similaire à Codes Correcteurs d’Erreurs.pptx (20)

Réseaux partie 2.ppt
Réseaux partie 2.pptRéseaux partie 2.ppt
Réseaux partie 2.ppt
 
Tp 1 transmission de donné inisiallisation à simulink matlab
Tp 1 transmission de donné inisiallisation à simulink matlabTp 1 transmission de donné inisiallisation à simulink matlab
Tp 1 transmission de donné inisiallisation à simulink matlab
 
T ps dsp
T ps dspT ps dsp
T ps dsp
 
Cours sur les circuits logiques câblés www.cours-online.com
Cours sur les circuits logiques câblés www.cours-online.comCours sur les circuits logiques câblés www.cours-online.com
Cours sur les circuits logiques câblés www.cours-online.com
 
Tp rsa1
Tp rsa1Tp rsa1
Tp rsa1
 
Cours programmation en langage C.pdf
Cours  programmation  en  langage  C.pdfCours  programmation  en  langage  C.pdf
Cours programmation en langage C.pdf
 
TRANSMISSION NUMERIQUE Année 2022-2023 CEFIB
TRANSMISSION NUMERIQUE Année 2022-2023 CEFIBTRANSMISSION NUMERIQUE Année 2022-2023 CEFIB
TRANSMISSION NUMERIQUE Année 2022-2023 CEFIB
 
examen en DSP 2023.pdf
examen en DSP 2023.pdfexamen en DSP 2023.pdf
examen en DSP 2023.pdf
 
Inf_theory_lect3.pdf
Inf_theory_lect3.pdfInf_theory_lect3.pdf
Inf_theory_lect3.pdf
 
3-Codage_Canal.ppt
3-Codage_Canal.ppt3-Codage_Canal.ppt
3-Codage_Canal.ppt
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
Metrique
MetriqueMetrique
Metrique
 
Chapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdf
Chapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdfChapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdf
Chapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdf
 
td_devoirs_2013.pdf
td_devoirs_2013.pdftd_devoirs_2013.pdf
td_devoirs_2013.pdf
 
Presentation finale
Presentation finalePresentation finale
Presentation finale
 
[STLS] tests de performance coherenSE
[STLS] tests de performance coherenSE[STLS] tests de performance coherenSE
[STLS] tests de performance coherenSE
 
Inf_theory_lect4.pdf
Inf_theory_lect4.pdfInf_theory_lect4.pdf
Inf_theory_lect4.pdf
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++
 
cours1 (1).pdf
cours1 (1).pdfcours1 (1).pdf
cours1 (1).pdf
 
CM1 - Signal et Information
CM1 - Signal et InformationCM1 - Signal et Information
CM1 - Signal et Information
 

Codes Correcteurs d’Erreurs.pptx

  • 1. Codes Correcteurs d’Erreurs Encadré par : Monsieur Brahim CHERGUI Réalisé par : Hajar BOUCHRIHA Salma RACHIDI Mohamed RAZIKI Le 15 Mai 2023
  • 2. Plan : Introduction 1 Code cyclique 2 Code linéaire 3 Code de Goppa entre la théorie et la pratique 4 Conclusion 5
  • 3. Introduction Les codes correcteurs d’erreurs sont une famille de codes utilisés en théorie de l’information pour détecter et corriger les erreurs qui se produisent lors de la transmission de données numériques. Lorsque les données sont transmises sur un canal de communication, des perturbations peuvent causer des erreurs qui peuvent compromettre l’intégrité des données. Les codes correcteurs d’erreurs permettent de détecter et de corriger ces erreurs, garantissant ainsi la fiabilité de la transmission
  • 4. Introduction Lors de cette présentation, nous allons nous intéresser plus particulièrement aux code cyclique, code linéaire et code géométrique de Goppa. Nous allons examiner plus en détail leurs définition, utilité dans la vie réelle, ses avantages et inconvénients, ainsi que leurs relations avec la cybersécurité et la cryptographie. Nous allons également discuter des applications pour encoder et décoder ces codes. Enfin, nous allons mettre en œuvre ces codes en utilisant Python (Implémentation).
  • 6. Pourquoi ? Le code cyclique est un type particulier de code correcteur d'erreur qui présente plusieurs avantages. Tout d'abord, il est facile à encoder et à décoder, car il suffit d'effectuer des opérations arithmétiques simples sur les bits du message. De plus, il permet de détecter et de corriger toutes les erreurs de poids inférieur ou égal à t, où t est le nombre d'erreurs que le code est capable de corriger. Enfin, il est efficace en termes de taux de redondance, c'est-à-dire le rapport entre la taille du message informatif et la taille totale du mot code. Le code cyclique est donc souvent utilisé dans des applications où la correction d'erreur est importante, comme la transmission de données sur des canaux bruyants ou la sauvegarde de données sur des supports de stockage, tels que les disques durs ou les cartes mémoire.
  • 7. Quand ? On utilise le code cyclique dans les situations où la correction d'erreur est importante, comme dans la transmission de données sur des canaux bruyants ou la sauvegarde de données sur des supports de stockage. Voici quelques exemples d'applications où le code cyclique est utilisé : Transmission de données : Le code cyclique est utilisé pour la transmission de données sur des canaux bruyants, tels que les réseaux sans fil, les canaux satellitaires, les canaux de communication par fibre optique, etc. Dans ces situations, le code cyclique permet de détecter et de corriger les erreurs qui peuvent survenir lors de la transmission des données. Contrôle de redondance cyclique (CRC) : Le CRC est un type de code cyclique utilisé pour la détection d'erreurs dans les trames de données. Il est utilisé dans de nombreuses applications, telles que les réseaux Ethernet, les protocoles de communication sans fil, les cartes à puce, etc.
  • 8. Comment ? Pour utiliser le code cyclique, on suit les étapes suivantes : Choix des paramètres : On choisit les paramètres du code cyclique, c'est-à-dire les valeurs de n et k. n est la longueur du mot code, tandis que k est la longueur du message informatif. Génération du polynôme générateur : On génère le polynôme générateur du code cyclique, qui est un polynôme binaire de degré n-k. Encodage du message : On encode le message informatif en ajoutant des bits de redondance au message à l'aide du polynôme générateur. Le résultat est le mot code, qui est transmis sur le canal de communication ou stocké sur le support de stockage. Détection et correction d'erreur : À la réception, le récepteur vérifie si le mot code contient des erreurs à l'aide de l'algorithme de détection d'erreur. Si une erreur est détectée, le récepteur utilise l'algorithme de correction d'erreur pour corriger l'erreur. ***L'algorithme de détection d'erreur utilise souvent la technique de syndrome, qui consiste à calculer un vecteur de syndrome à partir du mot code reçu et du polynôme générateur. Si le vecteur de syndrome est nul, cela signifie qu'il n'y a pas d'erreur dans le mot code. Si le vecteur de syndrome n'est pas nul, cela indique la présence d'une erreur.
  • 9. Code Cyclique Définition : Un code cyclique (n,k) est un code linéaire (n,k) tel que toute permutation circulaire d'un mot du code est encore un mot du code. Ce type de code possède non seulement la capacité de détecter les erreurs, mais aussi de les corriger sous réserve d'altérations modérées. NB: Le couple (n, k) signifie que : le paramètre n représente la longueur de chaque mot de C. Le paramètre k représente la puissance de 2 qui est la dimension de C : |C| = 𝟐k Exemple: • Si le vecteur x= (1,0,0,0,1,1,0) est un mot code dans C, alors toutes ses versions décalées sont aussi des mots codes du code cyclique linéaire : (1,0,0,0,1,1,0),(0,0,0,1,1,0,1),(0,0,1,1,0,1,0), . . . ,(0,1,0,0,0,1,1)∈ C
  • 10. Soit C un code cyclique de polynôme générateur 1010.Le message binaire : 1100 1.Déterminer CRC. 2.Donner le message codé. 3.Le récepteur a reçoit le message m=1100101. Application :
  • 12.
  • 13. Code cyclique et Cybersécurité Le code cyclique peut être utilisé dans le domaine de la cybersécurité pour assurer la sécurité et l'intégrité des données dans différentes applications. Transfert de données sécurisé : Le code cyclique peut être utilisé pour assurer la sécurité et l'intégrité des données lors du transfert de données entre des systèmes sécurisés. Le code cyclique peut détecter et corriger les erreurs introduites par des attaques de type Man-in-the-middle (MITM), ou lors de la transmission sur des canaux bruyants. Cryptographie : Le code cyclique peut être utilisé pour la génération de clés cryptographiques pour les algorithmes de chiffrement symétriques. Les clés peuvent être générées à partir de polynômes cycliques et utilisées pour chiffrer les données de manière sécurisée. Stockage de données : Le code cyclique peut être utilisé pour stocker les données de manière sécurisée en ajoutant de la redondance aux données stockées. Si des erreurs sont détectées lors de la lecture des données, le code cyclique peut les corriger de manière fiable. Authentification : Le code cyclique peut être utilisé pour l'authentification des données, en ajoutant des codes d'authentification aux données. Les codes d'authentification permettent de garantir l'intégrité des données et d'empêcher les attaques sur les données.
  • 15. Le code linéaire Un code C de paramètres (n, k) est dit linéaire si pour tout m, mꞌ de C, m + mꞌ est dans C. * le paramètre n représente la longueur de chaque mot de C. * le paramètre k représente la puissance de 2 qui est la dimension de C : |C|=𝟐k . Les codes linéaires sont un type des codes correcteurs d’erreurs qui peuvent détecter et corriger les erreurs qui se produisent lors de la transmission de données. Ces codes sont basées sur des propriétés algébriques et linéaires. DEFINITION:
  • 16. Application C = {000000 , 111111 , 010101 , 101010 , 110011 , 001100 , 011001 , 100110} Est-ce que le code C est un code linéaire ? Quelle est la longueur n de C? Quelle est la dimension k de C? Les mots de C sont de longueurs 6, alors n=6. Et on a |C|=8 = 23 , alors k=3. ⇒ C est un (6, 3) code. Montrons que C est linéaire : on prend deux mots distinct de C et on vérifie que la somme est dans C. Soit m = 110011 et m’= 101010 deux mots de C. On a m⨁m′ = 110011 ⨁ 101010 = 011001 ∈ 𝐶. Donc C est un (6,3) code linéaire.
  • 17. Codage d’un code linéaire Pour coder un message m par un code linéaire, il suffit de le multiplier par la matrice génératrice G . Le résultat est le mot codé mꞌ= m.G La matrice génératrice d’un code linéaire est G = (𝐼k |P) Avec : [𝐼k ]=k x k et P =k x r (r=n-k) (P est la matrice de parité)
  • 18. Application C = {000000 , 111111 , 010101 , 101010 , 110011 , 001100 , 011001 , 100110} C est un (6,3) code linéaire. Donner la matrice génératrice du code C. Pour construire la matrice génératrice on commence par la matrice identité 𝐼 = 1 0 0 0 1 0 0 0 1 On cherche dans le code C les mots qui on le préfixe de cette matrice. Donc 𝐺 = 1 0 0 0 1 0 0 0 1 1 1 0 1 0 1 1 0 0
  • 19. Application C = {000000 , 111111 , 010101 , 101010 , 110011 , 001100 , 011001 , 100110} C est un (6,3) code linéaire. Coder le message m = 101. Remarque : Le nombre de ligne de matrice G indique les mots qu’on peut coder a partir de G Donc cette matrice permet de coder des mots de longueur 3. 𝑚′ = 𝑚 . 𝐺 = 1 0 0 × 1 0 0 0 1 0 0 0 1 1 1 0 1 0 1 1 0 0 = (1 0 1 0 1 0 ) Donc le message codé est m’ = 1 0 1 0 1 0
  • 20. Décodage d’un code linéaire Soit C un code linéaire de matrice génératrice G =(Ik |P) de dimension (k x n). On pose H = (PT| In-k ) La matrice H est dite matrice de contrôle du code linéaire C. On appelle syndrome S du mot m le vecteur S = HT m. ●Si S = 0 alors on dit qu’il n’a pas d’erreur. ●Si S ≠0 alors on dit qu’il y a une erreur dans la position i (avec i =(S)10 ).
  • 21. Application Soit m’ = 1 0 1 0 1 0 le mot reçu 𝐻 = 1 1 1 1 0 0 0 1 0 1 0 0 0 1 0 0 0 1 1- Déterminons la matrice de contrôle H : 2- Calculons le syndrome S : 𝑆 = 𝐻𝑇 . 𝑚 = 1 1 0 1 0 1 1 0 0 1 0 0 0 1 0 0 0 1 . 1 0 1 0 1 0 = 0 0 0 𝐻𝑇 = 1 1 0 1 0 1 1 0 0 1 0 0 0 1 0 0 0 1 Puisque le syndrome est nul donc il n’y a pas d’erreur . Si on a S = 010 ≠ 0 alors on dit qu’il ya une erreur dans la position i = (010)10 =2.
  • 22. Exercice d ’application 𝐺 = 1 0 0 0 1 0 0 0 1 0 1 1 1 0 1 1 1 0 1- Quelle est la dimension du code? 2- Quels sont les mots du code? 3- Quelle est la distance minimale du code? 4- Quelles sont les paramètres du code? 5- Quel est le taux d'information du code? 6- Combien corrige t'il d'erreurs? 7- Déterminer la matrice de contrôle du code. 8- Soit x=010010, Calculer le syndrome du mot x. 9- Est ce que le message est modifié ? Si oui corrige le.
  • 24. Les codes géométriques de Goppa ont été introduits en 1970 par le mathématicien russe Valery Denisovich Goppa (né en 1939-), qui a découvert la relation entre la géométrie algébrique et les codes. L’application moderne du codes binaires de Goppa est crypto-systèmes post-quantiques (crypto-système de McEliece) Histoire
  • 25. Le code géométrique de GOPPA est linéaire et géométrique à la fois! En termes simples, un code linéaire est un sous-espace vectoriel d'un espace vectoriel plus grand. Les codes linéaires sont construits à partir d'une matrice de contrôle, qui permet de détecter les erreurs dans les transmissions de données. Les codes linéaires sont également caractérisés par leur distance minimale, qui détermine la capacité de correction d'erreur du code. D'un autre côté, les codes géométriques sont construits à partir de points sur une variété algébrique, telle qu'une courbe elliptique ou un corps fini. Les codes géométriques sont également caractérisés par leur distance minimale et leur dimension. Le code de Goppa combine ces deux approches en utilisant des courbes algébriques pour construire un sous-espace vectoriel particulier appelé code de Goppa. Ce code est linéaire car il s'agit d'un sous-espace vectoriel, mais il est également géométrique car il est construit à partir de courbes algébriques.
  • 26. Principe du code Goppa Le code géométrique de Goppa a été développé en 1970 par Valentyn Goppa. Les erreurs dans le code sont détectées et corrigées grâce à des techniques de géométrie algébrique Cette méthode utilise la géométrie algébrique pour construire des codes correcteurs d'erreurs à partir de courbes de genre 2. Les points de la courbe de Goppa sont utilisés pour définir les mots du code. Le code géométrique de Goppa est largement utilisé en théorie de l'information et en cryptographie, notamment dans le schéma de cryptage de McEliece.
  • 27. Le code géométrique de Goppa Le code géométrique de Goppa est un type de code correcteur d'erreurs qui utilise les propriétés géométriques d'une courbe algébrique pour construire un ensemble de contrôle. Le code géométrique de Goppa est défini à partir d'une fonction de Goppa, qui est une fonction polynomiale irréductible f(x) de degré n sur un corps fini Fq, où q est une puissance de nombre premier. Cette fonction est choisie de telle sorte que le nombre de racines de f(x) dans Fq est égal à n - k, où k est la dimension du code.
  • 28. Le code géométrique de Goppa Le contrôle est construit à partir des racines de f(x) dans une extension du corps de Galois Fq. Pour chaque racine α de f(x), on choisit un vecteur de contrôle Cα de longueur n, dont les éléments sont les évaluations du polynôme x-α à toutes les racines de f(x) dans l'extension de Fq. Les vecteurs de contrôle sont alors combinés pour former une matrice de contrôle C de taille (n-k) × n. Pour encoder un message de longueur k, on multiplie le message par une matrice génératrice de taille k × n, qui est obtenue en inversant la matrice de contrôle C. Le message encodé est alors obtenu en multipliant le message par la matrice génératrice. Pour détecter et corriger les erreurs, on utilise une technique appelée syndrome decoding. Le syndrome d'un mot de code est défini comme le produit de ce mot de code par la transposée de la matrice de contrôle. Si un mot de code contient des erreurs, son syndrome sera différent de zéro. On peut alors utiliser une table de syndromes précalculée pour déterminer les erreurs potentielles et les corriger.
  • 29. Les avantages • Les codes géométriques de Goppa ont une capacité de correction d'erreurs élevée. Ils peuvent corriger un grand nombre d'erreurs dans un flux de données donné, ce qui les rend utiles dans de nombreuses applications, telles que la transmission de données à haute vitesse ou la sécurité des communications. • Les codes géométriques de Goppa peuvent être construits à partir de polynômes irréductibles choisis arbitrairement, ce qui permet une grande flexibilité dans leur conception et leur mise en œuvre. • Les codes géométriques de Goppa ont une structure mathématique élégante, qui permet une analyse mathématique rigoureuse de leurs propriétés et de leur performance.
  • 30. 2 Les inconvénients La construction de codes géométriques de Goppa peut être coûteuse en termes de temps de calcul et de ressources informatiques, car elle nécessite la résolution de problèmes difficiles en théorie de la géométrie algébrique. 3 1 Les codes géométriques de Goppa peuvent être plus difficiles à implémenter que d'autres types de codes correcteurs d'erreurs, car ils nécessitent souvent des calculs complexes sur des corps finis. Les performances des codes géométriques de Goppa peuvent être affectées par la qualité des polynômes utilisés pour leur construction, ce qui peut nécessiter des connaissances spécialisées en théorie des nombres et en géométrie algébrique.
  • 31. 2 3 4 1 Utilité de code géométrique de Goppa Les codes correcteurs d'erreurs, y compris le code géométrique de Goppa, sont utilisés dans les systèmes de communications sans fil pour améliorer la qualité de la transmission des données. Par exemple, le standard Wi- Fi utilise des codes correcteurs d'erreurs pour réduire les erreurs de transmission. Le code géométrique de Goppa est utilisé dans le schéma de cryptage de McEliece, qui est l'un des rares schémas de cryptographie post-quantique connus pour être résistant aux attaques quantiques. Cela en fait une méthode de cryptage sûre et fiable pour protéger les informations confidentielles. Les disques durs et les mémoires flash utilisent également des codes correcteurs d'erreurs, y compris le code géométrique de Goppa, pour garantir l'intégrité des données stockées. Cela permet de minimiser les risques de perte de données en cas d'erreurs lors de l'écriture ou de la lecture des données Les codes correcteurs d'erreurs, y compris le code géométrique de Goppa, peuvent être utilisés pour améliorer la qualité de transmission des images médicales et des signaux électrocardiographiques (ECG). Cela peut aider les médecins à diagnostiquer les problèmes de santé plus rapidement et plus précisément. Communications sans fil Cryptographie Stockage de données Médecine
  • 32. La relation entre la cybersécurité et les codes géométriques de Goppa Les codes de Goppa peuvent être utilisés pour l'authentification des utilisateurs dans les systèmes de sécurité. En utilisant un code de Goppa pour encoder les identifiants de l'utilisateur, on peut garantir que seule la personne autorisée est en mesure de déchiffrer les informations. Les codes de Goppa sont également utilisés pour renforcer la sécurité des réseaux de communication. Ils peuvent être utilisés pour encoder les données qui sont transmises sur un réseau, ce qui peut aider à prévenir les attaques de type man-in-the-middle et d'autres types d'attaques qui cherchent à intercepter ou modifier les données. Les codes de Goppa peuvent être utilisés pour renforcer la sécurité des systèmes embarqués tels que les cartes à puce. En utilisant des codes de Goppa pour encoder les informations stockées sur la carte, on peut garantir que seules les personnes autorisées sont en mesure d'accéder aux données sensibles. Authentification Sécurité des réseaux Sécurité des systèmes embarqués
  • 33. La relation entre la Cryptographie et les codes géométriques de Goppa • Le code de Goppa est une technique de codage correcteur d'erreurs utilisée en cryptographie pour protéger les transmissions de données contre les erreurs et les attaques malveillantes. • Dans la cryptographie à clé publique, le code de Goppa est souvent utilisé comme un mécanisme de base pour la construction de systèmes de chiffrement à clé publique basés sur le problème du codage. • Par exemple, le système de chiffrement McEliece est basé sur le code de Goppa. Le système de chiffrement McEliece est considéré comme résistant à l'attaque de Shor, qui est une attaque quantique utilisée pour casser les systèmes de chiffrement à clé publique classiques tels que RSA et ECC. Bien qu'il ait des avantages en termes de sécurité, le système de chiffrement McEliece est relativement inefficace en termes de taux de transfert de données et de taille de la clé. • En dehors de la cryptographie à clé publique, le code de Goppa est également utilisé dans les codes correcteurs d'erreurs pour la correction des erreurs dans les transmissions de données, comme dans les communications par satellite, les réseaux de télécommunications et les systèmes de stockage de données.
  • 35.
  • 36. Conclusion En conclusion, les codes correcteurs d'erreurs sont un élément essentiel de la théorie de l'information et de la cryptographie. Ils permettent de détecter et de corriger les erreurs qui peuvent survenir lors de la transmission de données, ce qui est crucial pour garantir l'intégrité et la fiabilité des informations échangées. Les codes correcteurs d'erreurs sont largement utilisés dans de nombreux domaines, tels que les télécommunications, la transmission de données, la sécurité informatique, la cryptographie, etc. Ils peuvent prendre de nombreuses formes, depuis les codes de Hamming et les codes cycliques jusqu'aux codes de Goppa et aux codes de Reed-Solomon. Chacun de ces types de codes possède ses propres avantages et inconvénients, et leur choix dépend des besoins et des contraintes spécifiques de chaque application.
  • 37. Merci Pour Votre Attention !
  • 38. Bibliographie et Webographie Berlekamp, E. "Goppa Codes." IEEE Transactions on Information Theory 19.5(1973): 590-92. Web. Goppa, V. D. Geometry and Codes. Dordrecht: Kluwer Academic, 1988. Print. Trappe, Wade, and Lawrence C. Washington. Introduction to Cryptography: With Coding Theory. Upper Saddle River, NJ: Pearson Prentice Hall, 2006. Print. https://youtu.be/ek_O2WUF6U4