• Aucun résultat trouvé

3.2 Codes BCH en Stéganographie

3.2.1 Look-up tables

Pour décoder un mot codé par BCH, après le calcul du syndrome et des coefficients du polynôme localisateur d’erreurs σ(x) (de degré égal au nombre d’erreurs), le système doit chercher les racines du polynôme localisateur d’erreurs et chaque racine nous donne la position de l’erreur. Une méthode pour calculer ces racines de degré 2 et degré 3 du polynôme localisateur d’erreurs a été décrite dans [87]. Le calcul de syndromes et le calcul des racines du polynôme localisateur d’erreurs sont des taches qui consomment une grande quantité de temps. Grâce aux look-up tables, on peut réduire le temps de calcul des racines du polynôme correcteur d’erreurs σ(x).

Une table de correspondance est une structure de données employée pour remplacer un calcul par une opération de consultation qui, souvent est plus simple. Le gain de vitesse peut être significatif, car rechercher une valeur en mémoire est souvent plus rapide qu’effectuer un calcul important.

Calcul des racines du polynôme de degré 2

Si on a un mot de code a deux erreurs, le polynôme localisateur d’erreurs est de la forme :

f (x) = x2+ σ

1x + σ2

Pour trouver les racines du polynôme f (x), on doit résoudre l’équation :

x2 + σ1x + σ2 = 0

Si y0 est une racine du polynôme

g(y) = y2+ y + σ2

σ1

alors σ1y0 et σ1y0+ σ1 sont racines de f (x). Soit c = σ2σ1 avec σ1 6= 0, la table de corres-

pondance doit stocker les racines de

y2+ y + c = 0 (3.7)

avec c ∈ [0, 2m− 1].

La méthode décrite par [87] propose une solution à l’équation précédente. Cette so- lution est une combinaison linéaire des 2m − 1 solutions de base. Une solution de base est une solution de l’équation 3.7 avec c comme un des éléments base c1, c2, ..., c2m−1 du

corps de Galois. Les éléments de base sont des éléments du corps de Galois qui peuvent être linéairement combinés pour produire tous les autres éléments du corps. La solution à l’équation 3.7 est une combinaison linéaire des solutions de base qui correspondent à des éléments de base dont

y2+ y + c = 0

L’algorithme suivant montre le pseudo-code de la technique décrite par [87]. Exemple 3.2.1 Pour un corps F4

2 qui a x4+ x + 1 comme polynôme générateur, on aura

3 (parce que 2m − 1 = 2 × 2 − 1 = 3) éléments de base qui sont α0, α1 et α2. Maintenant,

on cherche les solutions de base de la façon suivante : il faut trouver des valeurs de α qui satisfait l’équation

α2+ α = ei

où ei sont des éléments base du corps F42 et i = 1, 2, ...2m − 1. Les solutions de base pour

les éléments de base α0, α1 et α2 du corps F4

2 sont α5, α9, α3, en effet :

Algorithm 3: Calcul des racines de degré 2 Données :

b : nombre d’éléments de base et nombre de solutions de base ; vi : table d’éléments du corps F2m; i = {0, 1, ..., n − 1}

ei : éléments de base, i = {0, 1, ..., b} si : solutions de base, i = {0, 1, ..., b} yi : racines de degré 2, i = {0, 1} Début de l’algorithme : // calculer b b ← 2m − 1

// calculer les b éléments de base repeat s ← v2 j − vj If s = ei Then garder s i ← i + 1 endif j = j + 1

until avoir tous les éléments de base ei

// construire le look-up table

for all chaque élément vi du corps F2m do

y0 ← vi → si // représentation de vi par des solutions de base

y1 ← y0+ v0

9)2+ α9 = α3+ α3+ α1 = α1

3)2+ α3 = α3+ α2+ α3 = α2

On se donne un exemple quelconque, supposons que c = α8 alors on cherche sa repré-

sentation polynomiale :

α8 = α2+ 1 = α2+ α0 et on cherche les solutions de base pour α2 et α0 dans le système

précédente

y0 = α3+ α5

y0 = α3+ (α2+ α)

y0 = α11

y0 est la première racine de degré deux. La deuxième racine peut être trouvée en rempla-

çant la valeur de y0 dans :

y1 = y0+ α0 (3.8)

La preuve de l’équation 3.8 est dans [12].

y1 = y0+ α0

y1 = α11+ α0

y1 = (α3+ α2+ α) + α0

y1 = α12

Calcul des racines du polynôme de degré 3

Pour les polynômes de degré trois, l’utilisation d’une table de correspondance implique l’utilisation d’un polynôme général de degré trois de la forme :

f (x) = x3+ σ1x2 + σ2x + σ3 (3.9)

Le polynôme (3.9) peut aussi être représenté de la façon suivante :

a = σ2

1 + σ2; b = σ1× σ2+ σ3

Si on utilise une table de correspondance, la table doit contenir un ensemble de so- lutions pour chaque valeur possible de a et b. Pour résoudre cette équation, [87] propose l’astuce suivante :

y = x + a

x (3.11)

En remplaçant cette dernière équation dans (3.10) on aura :

(z3)2 + bz3+ a3 = 0 (3.12)

Qui est une équation quadratique avec z3 comme variable. Cette dernière équation peut

être résolue par la procédure, une fois trouvée une racine y0 = α3k, avec k ∈ N∗, une

racine quadratique de l’équation 4.16, il faut vérifier que y0 = α3k ≡ z0 = αk. [87] propose

une méthode simple pour faire cette vérification. Finalement, on aura z0 de la forme αk.

Les trois autres valeurs de z peuvent être calculées par :

z1 = z0× α

22m−1 3

z2 = z1 + z0

Ces 3 valeurs de Z = {z1, z2, z3}, sont remplacées dans (3.11) pour avoir les trois racines

y = {y0, y1, y2} qui sont des racines de l’équation (3.10). Cette dernière méthode qui est

difficile à implémenter peut être remplacé par l’algorithme de Chien. Algorithme de Chien

L’algorithme de Chien est un algorithme récursif qui est souvent utilisé pour déterminer les racines des polynômes définis sur un corps fini. Cet algorithme est du type brute force, c’est-à-dire, qu’il évalue toutes les possibilités. Par exemple pour un code BCH-[15, 7, 2], on évalue l’équation 3.13 pour tous les éléments du corps F4

2, sauf pour l’élément nul. La

sortie de cet algorithme est une séquence d’éléments du corps de Galois stokes dans une matrice de m colonnes par n files où m est le nombre de racines calcules et n et la taille du corps de Galois. Lorsque les symboles sont nuls, ceux-ci nous indiqueront qu’une racine

n’a pas été détectée. Cette méthode est recommandée pour des applications de théorie des codes dans les quelles la taille du code n est petit.

Exemple 3.2.2 On se place dans le corps F4

2, On va trouver les racines quadratiques

pour c = α8 en utilisant le méthode de Chien : Il faut évaluer l’équation 2.7 avec tous les

éléments du corps F4 2 0)2+ α0+ α8 α0+ α0+ α8 α8 6= 0 1)2+ α1+ α8 α2+ α1+ α8 α4 6= 0 ainsi de suit... 11)2+ α12+ α8 α7+ α11+ α8 0 = 0 12)2+ α11+ α8 α9+ α12+ α8 0 = 0

On peut noter que α11 et α12 sont les deux racines que on avait trouvé en utilisant la

3.2.2

Dissimulation des données en utilisant le codage par syn-

Documents relatifs