• Aucun résultat trouvé

Traitement de l’information Codes correcteurs et détecteurs d’erreurs Codes utilisant des bits de parité

N/A
N/A
Protected

Academic year: 2022

Partager "Traitement de l’information Codes correcteurs et détecteurs d’erreurs Codes utilisant des bits de parité"

Copied!
21
0
0

Texte intégral

(1)

Traitement de l’information

Codes correcteurs et détecteurs d’erreurs Codes utilisant des bits de parité

Michel Salomon

IUT de Belfort-Montbéliard Département d’informatique

Michel Salomon Traitement de l’information 1 / 21

(2)

Plan du cours

1 Codes utilisant des bits de parité

Contrôle de parité ; Double parité ; Code de Hamming

2 Somme de contrôle

Utilisé dans les protocoles TCP, UDP et IP

3 Code de Redondance Cyclique Utilisé dans le protocole Ethernet

Michel Salomon Traitement de l’information 2 / 21

(3)

Qu’est-ce qu’un code ?

Un code définit une façon de représenter l’information On utilise des codes pour résoudre différents problèmes

1 Assurer l’intégrité de l’information

détection et correction d’erreurs

2 Minimiser la taille de l’information

compression

3 Garantir la sécurité de l’information

chiffrement (cryptage)

Remarques

Codes de détection et de correction d’erreurs sont des codes de base → utilisés dans de nombreux protocoles / normes Compression et chiffrement répondent à des besoins plus spécifiques →plutôt utilisation à la demande

Michel Salomon Traitement de l’information 3 / 21

(4)

Pourquoi a-t-on besoin de ces codes ?

Codes détecteurs / correcteurs⇒gérer de “petites” erreurs (quelques bits)

Les données numériques stockées peuvent être corrompues

→ erreurs dues à des rayures, des impuretés du support, etc.

Les données transmises sont susceptibles d’être altérées

→ canal de transmission pas entièrement fiable Compression⇒réduire la taille occupée par l’information

Réduire l’espace occupé pour la stocker Réduire le temps mis pour la transmettre

Chiffrement (cryptage)⇒ un des mécanismes de la sécurité informatique

La sécurité informatique a principalement pour objectifs

→ d’empêcher la divulgation non-autorisée de données ;

→ d’empêcher la modification non-autorisée de données ;

→ d’empêcher l’utilisation non-autorisée de ressources

Michel Salomon Traitement de l’information 4 / 21

(5)

Codes détecteurs / correcteurs

Schéma de la théorie de l’information

source n symboles codeur t symboles canal t symboles decodeur n symboles c

u y u

bruit

Classes de codes correcteurs d’erreurs Codes blocs

Traitent les blocs d’information indépendamment Les mots de code sont indépendants les uns des autres Codes convolutifs

Dépendance entre les informations

Sortie dépendant de l’info. précédente et de l’état du codeur

Remarques

Choix d’un code → dépend de l’application

Meilleurs codes → codes blocs(irréguliers à faible densité de parité)

Michel Salomon Traitement de l’information 5 / 21

(6)

Caractéristiques attendues d’un bon code

Bon rendement (taux)

→ un nombre élevé de bits d’info. par rapport aux bits codés

→ un rapport nt élevé

Bonne capacité de détection et correction

Procédés de codage et décodage simples et rapides

Objectif de la théorie des codes correcteurs d’erreurs Concevoir des codes qui :

détectent et corrigent le plus d’erreurs ; sans trop allonger les messages transmis ; en étant faciles et rapides à utiliser

Michel Salomon Traitement de l’information 6 / 21

(7)

Codes blocs détecteurs et correcteurs

Unmessage;bloc,mot ouvecteur d’information; un code sourceest une suite de symboles d’un alphabet Cas binaire (alphabet ={0,1}) : unmotest une suite de bits Pour traiter / prévenir des erreurs

→ des informations supplémentaires seront ajoutées un message est découpé en blocs denbits de données ; auxnbits de données, on ajoutek bits de contrôle ; ce seront lesn+k =t bits qui seront stockés ou transmis

on ajoute de la redondance à l’information

Terminologie

Code autovérificateur → détecte des erreurs

Code autocorrecteur→ détecte et corrige des erreurs

Michel Salomon Traitement de l’information 7 / 21

(8)

Codes autovérificateurs - Contrôle de parité

Le code autovérificateur classique est le contrôle de parité Aux n bits est ajouté 1 bit supplémentaire dit de parité Le bit de parité est tel que le nombre de bits à 1 parmi les n+ 1 bits est :

pair dans le cas d’une parité paire ; impair pour une parité impaire Exemple

Le caractère ’0’ a pour code ASCII 48, soit sur 1 octet 001100002

Si on ajoute 1 bit de parité impaire lors de la transmission, la séquence binaire transmise est alors

0011000012

Michel Salomon Traitement de l’information 8 / 21

(9)

Codes autovérificateurs - Contrôle de parité

Limites du contrôle de parité

Permet de détecter qu’un nombre impair d’erreurs

Ne permet pas de savoir quel(s) est / sont le(s) bit(s) erroné(s) Le contrôle de parité n’a d’intérêt que pour des systèmes de stockage ou de transmission présentant un faible taux d’erreur

Pas de correctionretransmission des données en cas d’erreur Exemple - Contrôle de parité paire

Séquence reçue Séquence

initiale

Séquence reçue Séquence

reçue

Recalcul du bit de parité

Séquence transmise 0 10111 0 0

1 1 1 1

0

0 1 1 1 1

0 1 1 1 0 1

0 0 1 1 0 1

0

1

1 0

0 0 0

bit de parité reçu bit de parité calculé

0 0 bit de parité reçu bit de parité calculé

0 1 bit de parité reçu bit de parité calculé 0

0 00

Michel Salomon Traitement de l’information 9 / 21

(10)

Codes autocorrecteurs - Double parité

Code consistant à faire un double contrôle de parité sur un bloc de données

Le bloc de données est un tableau à deux dimensions de bits sur lequel on effectue :

un contrôle de parité transversalsur chaque colonne

VerticalRedundancyCheck (VRC)

un contrôle de parité longitudinalsur chaque ligne

LongitudinalRedundancyCheck (LRC) Chaque caractère est protégé par un code VRC et l’ensemble des bits par un code LRC

Détection possible d’une erreur sur une ligne et une colonne La position d’une erreur peut être trouvée et corrigée Les codes VRC et LRC utilisent la même parité

De manière générale la double parité permet de corriger une erreur et dans certains cas un nombre impair d’erreurs

Michel Salomon Traitement de l’information 10 / 21

(11)

Codes autocorrecteurs - Double parité

Exemple - Double parité paire

Bit de parité

Bit de parité

7 6 5 4 3 2 1 0 Bit

1 0 1 1 0 0 1 0

0 1 0 0 1 0 1

0 0 0 0 0 1 1 1 0

0 1 1 1 1

0 0 0 0

0 0 1 1 1 1 1 1 0 0 0

0 0 0

0 1 1 1 1 1 0 1 0 Caractères

1 2 3 4

LRC LRC LRC LRC LRC LRC LRC LRC

VRC VRC

Recu 0

1

L’erreur sur le caractère 2 peut être détectée et corrigée

Michel Salomon Traitement de l’information 11 / 21

(12)

Codes autocorrecteurs - Code de Hamming

Basé sur des tests de parité

Aux n bits de données, on ajoutek bits de contrôle

au total on an+k =t bits

Les k bits de contrôle doivent permettre de contrôler t+ 1 possibilités d’erreurs

1 erreur sur chaque position ;

plus l’absence d’erreurs

On doit donc avoir 2kt+ 1

On privilégie les codes les plus courts, d’où le fait que k est la plus petite valeur entière vérifiant :

2kt+ 1⇔2kkn+ 1

Chaque code binaire défini par les k bits de contrôle permet ainsi de détecter et corriger une erreur sur une position

Michel Salomon Traitement de l’information 12 / 21

(13)

Codes autocorrecteurs - Code de Hamming

Principe

En notant les positions des bits de la séquence binaire à partir de 1, en commençant à droite, on a :

les bits de contrôle qui occupent des positions correspondant à des puissances de 21, 2, 4, 8, 16, etc.

les bits de données qui occupent les positions restantes Chaque bit de contrôle effectue un contrôle de parité sur un certain nombre de bits parmi les n+k =t bits Exemple - Transmission de 4 bits de données

Pour n= 4, k = 3 bits de contrôle sont suffisants, car : 2kkn+ 1⇔2kk ≥5

est vérifiée pour k ≥3, d’où un code de Hamming sur 7 bits

Position 7 6 5 4 3 2 1

n n n

4 3 2

k

3

n

1

k k

2 1

Michel Salomon Traitement de l’information 13 / 21

(14)

Codes autocorrecteurs - Code de Hamming

Exemple - Transmission de 4 bits de données On parle aussi de code de Hamming (7,4)

Par quel bit de contrôle un bit d’information est-il vérifié ?

1 On calcule pour chaque positionLdans la séquence son code binaire

2 Si un bit est à 1 en positionl dans le code binaire deL, alors le bit de contrôle occupant la position 2l−1 dans la séquence vérifie le bit en positionL

Positions contrôlées

L= 7 = 1112contrôlé park3,k2,k1

L= 6 = 1102contrôlé park3,k2

L= 5 = 1012contrôlé park3,k1

L= 4 = 1002contrôlé park3

L= 3 = 0112contrôlé park2,k1

L= 2 = 0102contrôlé park2

L= 1 = 0012contrôlé park1

Michel Salomon Traitement de l’information 14 / 21

(15)

Codes autocorrecteurs - Code de Hamming

Pour vérifier l’information on contrôle la parité

1 Chaque bit de contrôle ki reçu / lu est comparé à la valeur recalculée k0i →on fixe Ci tel que :

siki=k0i

Ci = 0 ; siki6=k0i

Ci = 1

2 La séquence binaire des Ci,1≤ik indique si il y a une erreur ou non, et sa position :

siCk. . .C1= 0

pas d’erreur ; siCk. . .C16= 0

l’équivalent décimal deCk. . .C1donne la position erronée

Michel Salomon Traitement de l’information 15 / 21

(16)

Codes autocorrecteurs - Code de Hamming

Exemple - Réception de 7 bits d’informations Message reçu = 10111002

Utilisation d’un contrôle de parité paire

1 Détermination du nombre de bits de contrôle

Message comportantt = 7 bitsk= 3 bits de contrôle car : 2k 1t(= 7)2k 8k = 3

2 Vérification de l’information

Position

7 6 5 4 3 2 1 n n n

4 3 2

n

1 Message

1 0 1 1 1 0 0

k

3

k

2

k

1

k1= 0contrôle des bits 1,3,5,7erronéC1= 1

k2= 0contrôle des bits 2,3,6,7justeC2= 0

k3= 1contrôle des bits 4,5,6,7erronéC3= 1

Si détection et correction d’une seule erreur

Simplification du calcul des bits de contrôle

Michel Salomon Traitement de l’information 16 / 21

(17)

Codes autocorrecteurs - Code de Hamming

Exemple - Réception de 7 bits d’informations Message reçu = 10111002

Utilisation d’un contrôle de parité paire

1 Détermination du nombre de bits de contrôle

Message comportantt = 7 bitsk= 3 bits de contrôle car : 2k 1t(= 7)2k 8k = 3

2 Vérification de l’information

Erreur au niveau de la position 5 qui devrait valoir 0 et non 1 Message corrigé = 10011002

3 Suppression des bits de contrôle →données initiales = 10012

Si détection et correction d’une seule erreur

Simplification du calcul des bits de contrôle

Michel Salomon Traitement de l’information 17 / 21

(18)

Codes autocorrecteurs - Code de Hamming

Calcul simplifié du code de Hamming - Transmission Message de 11 bits de données →110100110102

Utilisation d’un contrôle de parité paire

1 Détermination du nombre de bits de contrôle

Pourn= 11,k = 4 bits de contrôle sont suffisants car : 2k k n+ 12k k12

est vérifiée pourk4, d’où un code de Hamming sur 15 bits

2 Calcul des bits de contrôle

Les bits en positions 15,14,12,9,7 et 5 sont à 1 On converti en binaire ces positions, puis on les additionne modulo 2 :

on obtient 1 pour un nombre impair de 1 ;

on obtient 0 pour un nombre pair de 1

Le résultat obtenu donne la valeur des bits de contrôle Remarque : si parité impaire, addition modulo 2 inversée

Michel Salomon Traitement de l’information 18 / 21

(19)

Codes autocorrecteurs - Code de Hamming

Détermination du message à transmettre avec le calcul simplifié

k3 k2 k1 Message 1 1 0 1 0 0 1 ? 1 0 1 ? 0 ? ?

Message 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0 k4k3k2k1

k4

Position 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 n n n4 3 2 n1 n

n n n n n

n 10 9 8 7 6 5

15 14 12 9 7 5

1 1 1 1 1 1 1 0 1 1 0 0 1 0 0 1 0 1 1 1 0 1 0 1

=

=

=

=

=

=

0 1 1 0

11

Michel Salomon Traitement de l’information 19 / 21

(20)

Codes autocorrecteurs - Code de Hamming

Calcul simplifié du code de Hamming - Transmission

Message de 15 bits d’informations →1010001010011002 Utilisation d’un contrôle de parité impaire

1 Détermination du nombre de bits de contrôle Pourt = 15 bits, on ak= 4 bits de contrôle car :

2k1t(= 15)2k 16k = 4

2 Vérification des bits de contrôle

Les bits en positions 15,13,9,7,4 et 3 sont à 1 On converti en binaire ces positions, puis on les additionne modulo 2 en inversant :

on obtient 1 pour un nombre pair de 1 ;

on obtient 0 pour un nombre impair de 1

Le résultat obtenu correspond à la séquence desCi,1ik

égal à 0 pas d’erreur

différent de 0 l’équivalent décimal de la séquence donne la position erronée

Michel Salomon Traitement de l’information 20 / 21

(21)

Codes autocorrecteurs - Code de Hamming

Détermination des données reçues avec le calcul simplifié

k4 k

3

Message 1 1 0 0 0 1 0 1 0 1 0 0

Message 1 0 1 0 0 0 1 0 1 0 0 1 1 0 0

0 0 0

Données reçues

k1

k2

Position 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

n n n n

2 3

4 1

n n n n n n

n11 10 9 8 6 5

15 = 1 1 1 1

=

=

=

=

=

1 1 0 1 13

9 7 4 3

1 0 0 1 0 1 1 1 0 1 0 0 0 0 1 1 0 1 0 0

C C C C4 1 2 3 7

Michel Salomon Traitement de l’information 21 / 21

Références

Documents relatifs

Pour ce faire le bloc de bits correspondant est obtenu en mettant sur chaque colonne le code ASCII d’un caractère à transmettre, en commençant par le premier caractère sur la

Code de Hamming avec parité

Dans cette technique, on introduit une information complémentaire, un bit ou un caractère, dépendant du contenu binaire du message à protéger, tel que le nombre de bits, à 1 ou à

R : Étant donnés deux entiers, si l'un d'eux est impair, alors leur somme est impaire.. Dans ce cas, leur somme est paire et

Ne pas regarder ces éléments de réponses avant de réviser la séance 7 de cours et de résoudre l’exercice.. Donner le schéma bloc et décrire le fonctionnement de

• Effort nécessaire à réaliser les attaques: 2 57 opérations pour établir les deux listes + 2 56 blocs de 64 bits de stockage pour mémoriser les résultats

Parité paire : le bit de parité est positionné pour que l’ensemble des bits de donnée et le bit de parité représente un nombre de bits à 1 pair.. Parité impaire : le bit de

Parité paire : le bit de parité est positionné pour que l’ensemble des bits de donnée et le bit de parité représente un nombre de bits à 1 pair.. Parité impaire : le bit de