Vous êtes sur la page 1sur 40

République Algérienne Démocratique et Populaire

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique


Université Des Sciences Et De La Technologie Houari Boumediene

FACULTÉ DE MATHÉMATIQUES
Département d’Algèbre et Théorie des Nombres

Mémoire présenté pour l’obtention du diplôme de Master LMD


Spécialité : Arithmétique Codage et Combinatoire

Thème

Les codes tordus et application en


cryptographie d’ADN

Proposé par : BENNENNI Nabil

Présenté par :
ASMAA Chahira BOUCHACHI Nihel

Soutenu le 17/09/2020, devant le jury composé de :

Mr.GARICI Tarek Président


Mr.BENNENNI Nabil Encadreur
Mr. BEZIA Abdelhamid Examinateur

2019/2020
Remerciements
Nous remercions ALLAH le tout puissant d’avoir nous donner le courage, la
volonté et la patience pour accomplir ce modeste travail.

Nous tenons à remercier notre encadreur Mr.BENNENNI Nabil, qui fut le


premier à nous faire découvrir le sujet, pour sa disponibilité et ses précieux conseils
tout au long de ce travail.

Nous tenons à exprimer nos vifs remerciements à M.GARICI pour nous avoir
fait l’honneur d’accepter de présider le jury de soutenance, et à M.BEZIA pour
accepter d’examiner ce travail.

Nous adressons nos sincères remerciements à tous les professeurs, intervenants


et toutes les personnes qui par leurs paroles, leurs écrits, leurs conseils et leurs cri-
tiques ont guidé nos réflexions et ont accepté de répondre à nos questions durant
nos recherches.

Un merci tout particulier à nos familles qui nous ont soutenu et encouragée de-
puis toujours.

À tous ces intervenants, nous présentons nos remerciements, nos respects et nos
gratitudes.
Dédicaces
Je dédie ce mémoire à :

”Mon cher père”, à qui je dois énormément, qui a cru en moi, qui est la lumière
de ma vie et l’espoir de mon existence, et qui m’a donné les moyens d’aller aussi loin.

”Ma chère mère”, qui a œuvré pour ma réussite, de par son amour, son soutien,
tous les sacrifices et ses précieux conseils, pour toute son assistance et sa présence
dans ma vie.

À mes chéres sœurs Ryham et Nour El-houda qui m’avez toujours soutenu et
encouragé durant ces années d’études.

À Mon cher frère Heithem.

À Mes cousines et mes copines mes sœurs de cœurs.

À ma chère copine et collègue Sabrina pour sa présence, sa disponibilité et ses


encouragements.

À mon professeur M.Abdelmoumene ZEKIRI, à qui j’adresse ma reconnais-


sance et ma gratitude pour avoir eu la patience de répondre à mes innombrables
questions, pour sa disponibilité et surtout ses judicieux conseils.

À ma binôme Chahira.
Je pris Dieu de les bénir tous, j’espère que Allah me permettra d’atteindre le ni-
veau d’attente de chacun et de ne pas les décevoir.

À tous ceux qui sont dans mon cœur et m’ont donnée la force de continuer...

NIHEL.
Dédicaces
Je dédie ce modeste travail accompagné d’un profond amour :

À mes chers parents, pour leur sacrifices, leur amour, leur tendresse, leur soutient
moral et leur prières tout au long de mes études, Que dieu leur procure bonne santé
et longue vie.

À ma mère qui m’a encourager durant toute mes études, et qui sans elle, ma
réussite n’aura pas eu lieu.

À mon père, qui est toujours disponible pour nous, et prêt à nous aider, je lui
confirme mon attachement et mon profond respect.

À ma chère sœur NADIA et ses petits enfants que j’aime beaucoup YASSER et
ISRAA, et mes frères YACINE et MOUH et KHALED pour leur encouragement
permanents.

Et bien a celui que j’aime beaucoup et qui m’a soutenue tout au long de ce
mémoire, mon cher fiancé MOUHAMED.

Sans oublié toute ma famille et mes cousin(e)s

À la famille de mon fiancé et mes beaux-parents

À tout mes aimables amis

À ma binôme NIHEL.

CHAHIRA.
Table des matières

1 Généralités 11
1.1 Codes linéaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2 Codes cycliques et quasi-cycliques . . . . . . . . . . . . . . . . . . 13

2 Les codes tordus sur l’anneau F2 + vF2 où v 2 ≡ v[2] 16


2.1 Anneau de polynôme tordu R[x; θ] . . . . . . . . . . . . . . . . . 16
2.2 Codes θ− cycliques . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.1 générateurs pour les codes θ− cycliques . . . . . . . . . . . 18

3 Les codes ADN 21


3.1 Les codes ADN θ−cyclique . . . . . . . . . . . . . . . . . . . . . . 23
3.1.1 Les codes ADN θ-cyclique à complément inverse sur R . . 23
3.2 L’image binaire des codes ADN θ-cycliques . . . . . . . . . . . . . 26

4 Application en cryptographie d’ADN 27


4.1 La cryptographie ADN et la cryptographie traditionnelle . . . . . 28
4.2 L’algorithme cryptographique . . . . . . . . . . . . . . . . . . . . 29
4.3 Analyse de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Table des figures

3.1 Image correspond au structure d’ADN . . . . . . . . . . . . . . . 22


Liste des tableaux

4.1 Code ADN cyclique tordu de longueur 10 et distance minimal 2. 37


4.2 L’image binaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.3 La table du XOR . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.4 La table du XNOR . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.5 DNA code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.6 La comparison entre les méthodes de la cryptographie traditionnelle
et ADN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Résumé

La généralisation des codes cycliques nous a permet de définir une classe très
intéressante des codes c’est la classe des codes cycliques tordus.
Dans ce mémoire, on s’intéresse à l’étude de la structure algébrique, les bons pa-
ramètres et les propriétés de ces codes sur l’anneau R = F2 + vF2 = {0, 1, v, v + 1}
où v 2 = v, qui est le seul anneau commutatif d’ordre quatre qui n’est pas un corps,
et qui possède un automorphisme θ non trivial.
Ensuite, la correspondance entre les éléments de l’anneau précédent et les éléments
de base de code ADN nous a facilité de passer aux codes ADN cycliques tordus
à complément inverse puis introduire l’image binaire des codes ADN cycliques
tordus.

La structure d’ADN, son rôle et ses propriétés confirment que l’ADN est trés
adapté autant qu’un moyen pour le traitement ainsi que pour le stockage des
données. Actuellement, 1 gramme d’ADN peut être utilisé pour stocker environ
4.2 ∗ 1012 bits.
Et pour cela, à la fin nous avons proposé un algorithme symétrique dans le domaine
de la cryptographie d’ADN afin d’assurer la sécurité des données à l’aide de deux
clés secrètes générés par le processus d’hybridation et le protocole de DEFFIE-
HELLMAN.

8
INTRODUCTION

La théorie des codes correcteurs est une branche de la théorie de l’information,


initiée par Claude Shannon en 1948, et ses idées ont été ensuite développées par
Golay et Hamming.
Cette théorie s’intéresse à la construction de nouveaux codes correcteurs perfor-
mants, et à l’étude de leur propriétés algébriques et aussi leurs utilisation, comme
les codes linéaires et plus précisément les codes cycliques qui ont été étudiées par
plusieurs chercheurs, et c’est dû à leurs importance dans la théorie des codes.

Récemment, ils ont réussi à généralisé la notion des codes cycliques, car ils
ont pu révélé une nouvelle classe des codes c’est la classe des codes θ− cycliques,
et pour construire ce type de codes il ont utilisé des polynômes générateurs d’un
anneau de polynôme non commutatif c’est l’anneau des polynômes tordu.
Les codes θ− cycliques dépendent d’un automorphisme d’anneau commutatif non
trivial, et le seul anneau d’ordre 4 possédant un tel automorphisme c’est l’anneau
R = F2 + vF2 où v 2 = v qui est isomorphe à F2 × F2 .
Les études dans ce domaine n’ont pas arrêté là, car un lien direct a été établi
entre les éléments de l’anneau R et la base nucléotidique d’ADN {A, T, C, G}, qui
a permet de construire une nouvelle famille de codes ADN sur cet anneau c’est
les codes ADN θ− cycliques, et de définir aussi l’image binaire de ses codes qui
permettant le passage au domaine de calcul d’ADN.

Le calcul ADN combine l’analyse des données génétiques avec la science infor-
matique afin de s’attaquer à des problèmes informatiques difficiles. Il a été initié
par Leonard Adleman en 1994.
Le concept d’utilisation du calcul ADN dans le domaine de la cryptographie a
été identifié comme une technologie possible, qui pourrait faire émerger un nouvel
espoir d’algorithmes incassables en cryptographie.

La cryptographie d’ADN consiste à l’utilisation de la génétique et du calcul bio-


moléculaire et elle est l’une des nouvelles directions de la cryptographie. Cette idée
est inspirée du fait que l’ADN est un vecteur naturel des informations codées par
un alphabet à 4 lettres A,T,C et G. Cet alphabet peut être facilement transposable
en alphabet binaire {00, 01, 10, 11} tel que (A → 00, C → 01, G → 10, T → 11).
Par conséquent, l’ADN peut être utilisé comme support de stockage pour tout
type d’informations.
De nombreux chercheurs de partout dans le monde ont fait un grand nombre
d’études sur la cryptographie d’ADN, basé sur la possibilité d’utiliser l’ADN

9
comme un disque dur et stocker les données numériques dans l’ADN, afin de
garantir la sécurité de ces derniers. D’autre manière, ils cherchent d’assurer que
si l’ADN peut être l’avenir de stockage des données.

l’objectif de ce mémoire et de construire une nouvelle famille de codes ADN


sur un anneau commutatif isomorphe à F2 × F2 , c’est l’anneau R = F2 + vF2 =
{0, 1, v, v + 1} où v 2 = v, et l’application de ces codes en cryptographie.

Nous avons basé dans le chapitre 1 sur la généralisation des notions des codes
linéaires et les codes cycliques sur les corps finis. Et dans le chapitre 2 nous avons
définis la structure de l’anneau des polynômes tordu R[x; θ], puis la structure
algébrique des codes tordus sur l’anneau R,ainsi les propriétés des générateurs de
ces codes.
Dans le chapitre 3 on passe à la définition des codes ADN θ− cycliques et les codes
ADN θ− cycliques à complément inverse sur R, ainsi l’image binaire des codes
ADN tordus, obtenue on combinant les 2 applications GRAY (φ) et l’application
ψ.
A la fin pour introduire l’application des codes tordus en cryptographie d’ADN,
nous avons proposé dans le chapitre 4 un algorithme basé sur la cryptographie
d’ADN en utilisant 2 clés secrètes générés par le processus d’hybridation et le
protocole de Diffie-Helleman.

10
Chapitre 1

Généralités

L’objet de ce chapitre est de donner quelques rappels sur les codes linéaires et
quelques notions de bases sur les codes cycliques et quasi-cycliques .

1.1 Codes linéaires


On appelle alphabet de transmission un ensemble A de q éléments (q > 1),
qui peuvent être transmis à travers d’un canal de communication. Pour n > 1, on
note les éléments de An , par {v1 , v2 , ...vn } et on les appelle mots ou vecteurs, en
générale (An = Fnq ).

Définition 1.1.1. Soit Fq un corps fini de cardinal q, et de caractéristique p où


q = pm .
Un code C est dit de paramètres (n, M, d) s’il est de longueur n, de taille M et de
distance minimale d.
On appelle un code linéaire de longueur n et de dimension k sur Fq tout Fq -sous
espace vectoriel de Fnq , autrement dit tout Fp -sous espace vectoriel de Fnq .
Et on dit que C est un [n, k, d]q code sur Fq .
Pour tout vecteur x = (x1 , x2 , ..., xn ),y = (y1 , y2 , ..., yn ) de Fnq ,
la distance minimale est définit par :
d(C) = min{d(x, y) : x, y ∈ C et x 6= y}
où d (x, y) est la distance de Hamming (d(x, y) = |{i/xi 6= yi }|)
Et le poids minimal

w(C) = min{w(x) : x ∈ C et x 6= 0}.


où w(x) est le poids de Hamming qui est le nombre de composantes xi différentes
de zéro.
w(x) = |{i ∈ {0, ..., n}/xi 6= 0}|.
Proposition 1.1.1. [2] La distance minimale d’un code C est le poids minimal
de ce code.
d(C) = w(C)

11
Soit n ∈ N∗ , C une partie sur Fq est un sous ensemble non vide de Fnq ayant
M éléments.
On appelle n la longueur du code, M sa taille ou son cardinal, et les élements du
C sont appelés les mots du code.
On note par k la dimension du C sur Fq tel que M = q k .

Matrice génératrice et matrice de contrôle


Définition 1.1.2. La matrice génératrice d’un code linéaire C est toute matrice à
k lignes et n colonnes dont les lignes forment une base de C. La matrice G définit
complètement le code C du fait que :

C = {xG|x ∈ Fkq }

Définition 1.1.3. Une matrice génératrice G de C est dite sous sa forme systématique
si et seulement si elle s’écrit sous la forme :

G = [Ik |A]
où Ik est la matrice Identité d’ordre k.
Définition 1.1.4. la matrice de contrôle d’un code C est défini par :

H = [−t A|In−k ]

de plus on a C = {x ∈ Fnq |H.t x = 0}.


Théorème 1.1.1. [2] (Borne de Singleton)
Un code linéaire de paramètres [n, k, d] sur Fq vérifie l’inégalité suivante :

d≤n−k+1

Remarque. .
— Les codes tels que d = n − k + 1 sont des codes MDS (Maximum Dis-
tance Séparable), ce sont des codes optimaux, par exemple les codes de Reed-
solomon sont MDS.
— On dit que deux codes linéaires de même longueur sont équivalents si et
seulement si l’un s’obtient à partir de l’autre par une permutation des co-
ordonnées, c’est à dire qu’il est l’image de l’autre par une permutation de
Sn , autrement dit s’il existe σ ∈ Sn tel que (a1 , a2 ...an ) ∈ C équivalent à
(aσ(1) , aσ(2) , ...aσ(n) ) ∈ C.
On rappelle que deux codes équivalents ont les mêmes propriétés.
Définition 1.1.5. Soit C un code linéaire [n, k]q , le dual de C est :

C ⊥ = {x ∈ Fnq , ∀c ∈ C, < x, c >= 0}


n
où ∀x, y ∈ Fnq , < x, y >= xi yi (produit scalaire euclidien), et (C ⊥ )⊥ = C.
P
i=1
Une matrice de contrôle de C est une matrice génératrice de C ⊥ .

12
Remarque. .

C ⊥ = {x ∈ Fnq , ∀c ∈ C, c.t x = 0}
= {x ∈ Fnq , Gt x = 0}
Or Rg(G) = k car dimC = k donc d’après le théorème du rang dim(ker(G)) =
n − k.
Notons H une matrice de contrôle de C, H ∈ Mn−k,n (Fq ) et Rg(H) = n − k, on
a G.t H = 0 et H.t G = 0.

Définition 1.1.6. Un code linéaire C est dit self-Orthogonal ou auto- Orthogonal


si C ∈ C ⊥ .
C est dit auto-dual si C = C ⊥ .

Proprietés. Soit C un [n, k]q code linéaire et soit H une matrice de contrôle de
C.
C = {x ∈ Fnq |H.t x = 0}.
La quantité H.t x est appelée syndrome de C, et on note S(x) = H.t x.

1.2 Codes cycliques et quasi-cycliques


Définition 1.2.1. On dit qu’un code linéaire C sur Fq de longueur n est cyclique
si et seulement si on a : (c0 , c1 , ...., cn−1 ) ∈ C ⇔ (cn−1 , c0 , c1 , ....., cn−2 ) ∈ C .

Et on peut définir une application ϕ : Fnq → Fnq tel que :

ϕ((c0 , c1 , ...., cn−1 )) = (cn−1 , c0 , ...., cn−2 )

On note l’anneau quotient par :

Fq [x]
Rn = n
= {a0 + a1 x + a2 x2 + ... + an−1 xn−1 , ai ∈ Fq }
(x − 1)

où le produit est obtenu en posant xn = 1 dans le produit usuel de polynômes.


L’addition est l’addition des polynômes usuelle notée +.
Rn est aussi un Fq -espace vectoriel, il est isomorphe à l’espace vectoriel Fnq , en
identifiant tout polynôme a0 + a1 x + a2 x2 + ... + an−1 xn−1 de Rn avec le vecteur
(a0 , a1 , a2 , ..., an−1 ) de Fnq .

Soit C ⊂ Fnq un code linéaire. Un élément de C peut être vu comme un mot


a0 , a1 , ..., an−1 ou comme polynôme p(x) = a0 + a1 x + a2 x2 + ... + an−1 xn−1 .

x.p(x) = an−1 + a0 x + a1 x2 + ... + an−2 xn−1

qui donne le mot an−1 a0 a1 a2 ...an−2 ce qui veut dire qu’un code C linéaire est
cyclique si et seulement si x.p(x) ∈ C pour tout p(x) ∈ C.

Proposition 1.2.1. [9] Les codes cycliques de Fnq sont les idéaux de l’anneau Rn .

13
Théorème 1.2.1. [9] Une partie C ⊂ Rn est un code si et seulement si C est un
idéal de l’anneau Rn .
Définition 1.2.2. On appelle polynôme générateur du code cyclique C, l’unique
polynôme unitaire non nul de degré minimal représentant un élément de C.
Théorème 1.2.2. [9] Soit C un code cyclique de longueur n sur Fq et soit g(x)
son polynôme générateur, Alors :
1. Le code C est l’idéal engendré par le polynôme g(x) de l’anneau Rn .
2. Le polynôme g(x) divise xn − 1 dans Fq [x] .
3. dimC est égale à n − deg(g(x)) et une base de C en tant que sous espace
vectoriel de Fnq est (g(x), x.g(x), ...., xn−deg(g(x))−1 .g(x)).
Définition 1.2.3. Soit un code cyclique C généré par un polynôme g(x) alors
C = {p(x).g(x), p(x) ∈ Rn }, avec deg(p(x)) + deg(g(x)) = n.
Définition 1.2.4. Soit C un Pcode cyclique de dimension k, de P
longueur n et de
n−k i k i
polynôme générateur g(x) = i=0 gi x . Le polynôme h(x) = i=0 hi x tel que
n
x − 1 = h(x).g(x) est le polynôme de contrôle du code C.

La matrice génératrice k ∗ n de C avec k = n − deg(g(x)) est donnée par :


   
g(x) g0 g1 . . . . . . gn−k 0 ... ... 0
 x.g(x)   0 g0 g1 . . . gn−k−1 gn−k 0 ... 0 
G=  =  ..
   
.. .. .. .. .. .. .. .. .. 
 .  . . . . . . . . . 
xn−r−1 .g(x) 0 ... ... 0 g0 ... . . . . . . gn−k
Et la matrice de contrôle (n − k) ∗ n de C est donnée par :
 
hk hk−1 hk−2 . . . . . . h0 0 0 ... 0
 0 hk hk−1 . . . . . . h1 h0 0 . . . 0
H= . . . . . .

... ... ... ... ... ... 
0 0 0 hk hk−1 ... ... ... ... h0

Proposition 1.2.2. [2] Le code dual C ⊥ est un code cyclique.


Le polynôme générateur du code dual C ⊥ de C est alors le polynôme unitaire
réciproque de h(x) donné par :
1
g ⊥ (x) = h−1 h0 xk + h1 xk−1 + ... + hk−1 x + hk = h−1 k

0 0 x h( )
x
Définition 1.2.5. Soit n un entier positif non nul et l un diviseur de n différent
de n.
Soit C un [n, k, d]q code linéaire, on dit que C est quasi-cyclique d’index l ou
l − quasi − cyclique si et seulement si il est stable par la puissance l du ϕ.

C’est à dire pour tout :


v = (v0 , v1 , ..., vn−1 ) ∈ C on a v́ = (vn−l , vn−l+1 , .., vn−1 , v0 , v1 , ..., vn−l−1 ) ∈ C En
particulier, un l − quasi − cyclique code est un code cyclique.

14
Exemple 1. Prenons un code binaire de longueur n = 7 et distance minimal d.
Sachant que x7 − 1 se factorise sur F2 en 3 polynômes irréductibles, x7 − 1 =
(x + 1)(x3 + x2 + 1)(x3 + x + 1), ce qui veut dire qu’on a 23 = 8 codes cycliques y
compris 0 et F72
1. C0 = 1 engendre F72
2. C1 =< x + 1 >
3. C2 =< x3 + x + 1 >
4. C3 =< x3 + x2 + 1 >
5. C4 =< (x + 1)(x3 + x + 1) >=< x4 + x3 + x2 + 1 >
6. C5 =< (x + 1)(x3 + x2 + 1) >=< x4 + x2 + x + 1 >
7. C6 =< (x3 + x + 1)(x3 + x2 + 1) >=< x6 + x5 + x4 + x3 + x2 + x + 1 >
8. C7 = 0 =< (x + 1)(x3 + x2 + 1)(x3 + x + 1) >=< x7 + 1 >
Choisissons le code C2 son polynôme générateur g(x) = x3 +x+1 et le polynôme
de contrôle h(x) tel que x7 − 1 = g(x).h(x) = (x3 + x + 1)(x4 + x2 + x + 1) ce qui
nous permet de représenter les deux matrices comme suit :
La matrice génératrice 4 ∗ 7
 
1 1 0 1 0 0 0
0 1 1 0 1 0 0 
G= 0 0 1 1 0 1 0 

0 0 0 1 1 0 1

Et la matrice de contrôle 3 ∗ 7
 
1 0 1 1 1 0 0
0 1 0 1 1 1 0
0 0 1 0 1 1 1

15
Chapitre 2

Les codes tordus sur l’anneau


F2 + vF2 où v 2 ≡ v[2]

Une étude introduite par Boucher, Geiselmann et Ulmer dans [4] a révélé
une classe intéressante de codes avec de très bons paramètres spécialement sur le
corps F4 . C’est la classe des codes θ−cycliques, qui généralise le concept des codes
cycliques et utilise un anneau de polynôme non commutatif, appelé l’anneau de
polynôme tordu, pour construire ce type de code.
Après ces travaux, il fut naturel de penser à étudier ce type de codes sur
d’autres anneaux de cardinal quatre.
Un code θ−cyclique dépend d’un automorphisme d’anneau non trivial,or, les
anneaux Z4 et S = F2 + uF2 = {0, 1, u, u + 1} tel que u2 = 0 ne possèdent pas
un automorphisme non trivial. Donc, sur ces anneaux, il n’existe pas de codes
θ−cycliques différent des codes cycliques ordinaires.
Ainsi, le seul anneau commutatif possédant un automorphisme θ non trivial est
l’anneau R = F2 + vF2 = {0, 1, v, v + 1} où v 2 = v, qui est isomorphe à l’anneau
F2 × F2 par l’application Gray notée φ, tel qu’on associe chaque élément a + bv
de R à (a + b, a) dans F2 × F2 , de la façon suivante :

0 −→ (0, 0)

1 −→ (1, 1)
v −→ (1, 0)
v + 1 −→ (0, 1)

2.1 Anneau de polynôme tordu R[x; θ]


R[x; θ] est un anneau non commutatif, dont sa structure dépend des éléments
de l’anneau commutatif R = F2 + vF2 = {0, 1, v, v + 1} où v 2 = v, et l’automor-
phisme θ sur R.
Cet automorphisme d’anneau est définit par : θ(0) = 0, θ(1) = 1, θ(v) = v + 1 et
θ(v + 1) = v, et notons que θ2 (a) = θ(θ(a)) = a, ∀a ∈ R.
Ce qui implique que θ est un automorphisme d’anneau d’ordre 2.

16
Définition 2.1.1. L’anneau de polynôme tordu R[x; θ] est définit comme l’en-
semble des polynômes sur R où l’addition est l’addition usuelle des polynômes et
la multiplication noté par ∗ défini par la règle basique

(axi ) ∗ (bxj ) = aθi (b)xi+j

et les lois d’associativité et la distributivité.

Exemple 2.
x ∗ vx = θ(v)x2 = (v + 1)x2
et
vx ∗ x = vθ(1)x2 = vx2
Ce qui montre que la multiplication n’est pas commutative.
Par conséquent, quand on considère un idéal de l’anneau R[x; θ], on doit préciser
si c’est un idéal à gauche ou bien un idéal à droite.

Dans tout ce qui suit, quand on parle d’idéaux de R[x; θ], on veut toujours
dire idéaux à gauche ; et on utilise la notation (p(x)) pour noter l’idéal à gauche
généré par le polynôme p(x).

2.2 Codes θ− cycliques


Définition 2.2.1. On considère l’anneau R = F2 +vF2 = {0, 1, v, v +1} où v 2 = v
et l’automorphisme θ défini ci-dessus. Un sous-ensemble C de Rn est appelé un
code θ− cyclique de longueur n si :
1. C est un R-sous module de Rn .
2. si
C = (c0 , c1 , , ..., cn−1 )
alors
Tθ (c) = (θ(cn−1 ), θ(c0 ), ..., θ(cn−2 )) ∈ C

Soit Rn = R[x; θ]/(xn − 1) désigne l’anneau quotient de R[x; θ] par l’idéal


(gauche) (xn − 1), et soit f (x) ∈ Rn et r(x) ∈ R[x; θ]. Définissons la multiplication
à gauche comme suit :

r(x) ∗ (f (x) + (xn − 1)) = r(x) ∗ f (x) + (xn − 1) (2.1)

pour tout r(x) ∈ R[x; θ].

Il s’agit d’une multiplication bien définie des éléments de Rn par les éléments
de R[x; θ]. Avec cette définition, on a le théorème suivant :
Théorème 2.2.1. [1] Rn est un R|x; θ]− module à gauche où la multiplication
est définit comme dans l’équation (2.1).

17
Sous cette présentation de Rn , on peut identifié chaque élément (c0 , c1 , , ..., cn−1 )
de Rn , par le polynôme

f (x) = c0 + c1 x + c2 x2 + ... + cn−1 xn−1

dans l’anneau Rn .
Cette relation entre Rn et Rn , nous donne le théorème suivant :

Théorème 2.2.2. [1] Un code C dans Rn est un code θ−cyclique si et seulement


si C est un R[X, θ]− sous-module à gauche du R|x; θ]− module à gauche Rn .

Lemme 1. [1] Si n est pair, et (xn −1) = g(x)∗h(x) dans R[x, θ] , alors (xn −1) =
g(x) ∗ h(x) = h(x) ∗ g(x)

2.2.1 générateurs pour les codes θ− cycliques


Théorème 2.2.3. [1] Soit C un code θ− cyclique dans Rn = R[x; θ]/(xn − 1) et
C 6= {0}. Soit f (x) un polynôme non nul de degré minimal en C et supposons
que f (x) est unitaire. Alors C = (f (x)) = {r(x)f (x)|r(x) ∈ Rn }, où f (x) est un
diviseur à droite de xn − 1. De plus, C est un code libre de dimension
k = n − (deg(f (x)) dont une base {f (x), x ∗ f (x), x2 ∗ f (x), ..., xk−1 ∗ f (x)}.

preuve : Soit c(x) ∈ C, alors par l’algorithme de division à gauche, il existe


des polynômes p(x) et r(x) tels que c(x) = p(x) ∗ f (x) + r(x), où r(x) = 0 ou bien
deg(r(x)) < deg(f (x)).
Puisque C est linéaire, r(x) = c(x) − p(x) ∗ f (x) ∈ C. Et comme f (x) est de degré
minimal, on a r(x) = 0, donc c(x) = p(x) ∗ f (x) et C = (f (x)).
Montrons ensuite que f (x) est un diviseur à droite de xn − 1, par l’algorithme de
division à gauche, xn − 1 = p2 (x) ∗ f (x) + r2 (x), où r2 (x) = 0 ou deg(r2 (x)) <
deg(f (x)).
En réduisant la dernière équation mod xn −1, on obtient r2 (x) = −p2 (x)∗f (x) ∈ C,
par la minimalité du degré de f (x) on a r2 (x) = 0, c’est à dire, f (x) est un diviseur
à droit de xn − 1.
Ceci montre que l’ensemble B = {f (x), x ∗ f (x), x2 ∗ f (x), ..., xk−1 ∗ f (x)} est
un ensemble couvrant pour C. Il est facile de montrer que B est linéairement
indépendant, d’où une base pour C.

Lemme 2. [1] Soit f (x) un polynôme non unitaire en C de degré minimal, alors
f (x) = vf1 (x) ou f (x) = (v + 1)f1 (x), où f1 (x) est un polynôme binaire.

Preuve : Puisque f (x) n’est pas unitaire dans Rn , le coefficient de plus haut
degré de f (x) est soit v soit v + 1. Supposons d’abord que f (x) = vxt + at−1 xt−1 +
... + a1 x + a0 .
Alors (v + 1)f (x) = (v + 1)at−1 xt−1 + (v + 1)at−2 xt−2 + ... + (v + 1)a1 + (v + 1)a0 ,
puisque (v + 1)v = 0.
Mais la minimalité de f (x) implique que (v + 1)f (x) = 0. Par conséquent,
f (x) = vf1 (x) pour quelques polynômes binaires f1 (x). Si le coefficient de monôme
de plus haut degré de f (x) est v + 1, alors un argument similaire montre que

18
f (x) = (v + 1)f1 (x), où f1 (x) est un polynôme binaire de degré t.

Les algorithmes de division à gauche et à droite dans un anneau polynomial


ne sont applicables que si le polynôme diviseur est unitaire ou si son coefficient
de plus haut degré est une unité. À cause de la structure de l’anneau R, on a
le lemme suivant qui nous donne une simplification de la division si le coefficient
dominant n’est pas une unité.
Lemme 3. [1] Soient f (x) et g(x) deux polynômes non unitaires, et non nuls
dans R[x; θ] avec deg f (x) > deg g(x), il existe alors des polynômes p(x) et r(x)
tels que
f (x) = p(x) ∗ g(x) + r(x)
où r(x) = 0 ou deg r(x) < deg g(x) ou r(x) est un polynôme unitaire de degré au
plus le degré de f (x).
Lemme 4. [1] Soit C un code θ− cyclique dans Rn = R|x; θ]\(xn − 1). Supposons
qu’un polynôme de degré minimal en C ne soit pas unitaire, disons f (x) = vf1 (x)
est un polynôme de degré minimal en C, de plus, supposons que C ne contient
aucun polynôme unitaire. Alors C = (vf1 (x)) où f1 (x) est un polynôme unitaire
binaire de plus bas degré, et f1 (x) | (xn − 1).
Preuve : Supposons que C n’a que de polynômes non unitaires et soit
f (x) = vf1 (x) un polynôme de degré minimal dans C. Soit c(x) ∈ C ; donc par le
Lemme 3, il existe deux polynômes q(x) et r(x) tel que :

c(x) = q(x) ∗ f (x) + r(x)

où r(x) = 0 ou degr(x) < degf (x), ou bien r(x) est un polynôme unitaire de degré
égal au plus au degré de c(x). Puisque C n’a pas de polynômes unitaires et f (x)
est un polynôme de degré minimal dans Cdonc r(x) = 0.
Par conséquent, C = (f (x)).
F2 est un sous anneau de R la factorisation des polynômes binaires est toujours
valide dans l’anneau de polynôme tordus R[x; θ]. En utilisant l’algorithme de
division on aura deux polynômes binaires uniques Q(x) et R(x) tel que :

xn − 1 = Q(x) ∗ f1 (x) + R(x)

où R(x)est un polynôme binaire, avec R(x) = 0 ou degR(x) < degf1 (x) =
degf (x). On prend Q(x) = Q1 (x) + Q2 (x) où Q1 (x) se compose de tous les termes
de degré impair, et Q2 (x) de termes de degré pair. Par un petit raisonnement :

xn − 1 = (Q1 (x) + Q2 (x)) ∗ f1 (x) + R(x),


xn − 1 = Q1 (x) ∗ f1 (x) + Q2 (x) ∗ f1 (x) + R(x),
v ∗ xn − 1 = v ∗ (Q1 (x) ∗ f1 (x)) + v ∗ (Q2 (x) ∗ f1 (x)) + v ∗ R(x),
= Q1 (x) ∗ (v + 1)f1 (x) + Q2 (x) ∗ vf1 (x) + v ∗ R(x),
= (Q1 (x) ∗ vf1 (x)) + (Q2 (x) ∗ vf1 (x)) + Q1 (x) ∗ f1 (x) + v ∗ R(x),

19
Puisque degR(x) < degf1 (x),Q1 (x) ∗ f1 (x) + v ∗ R(x) est un polynôme unitaire
dans C, contradiction. Donc, Q1 (x) ∗ f1 (x) + v ∗ R(x) = 0. Puisque Q1 (x) ∗ f1 (x)
et R(x) sont des polynômes binaires, R(x) = 0 et f1 (x)|(xn − 1).
Exemple 3. Soit C un code θ− cyclique dans R7 = R[x; θ]/(x7 − 1) tel que
x7 − 1 = (x + 1)(x3 + x2 + 1)(x3 + x + 1) on a C = (f (x)) = {r(x).f (x)/r(x) ∈ R7 }
tel que f (x) = vx3 + vx + v = v(x3 + x + 1) = vf1 (x) et que (x3 + x + 1)/(x7 − 1)
Théorème 2.2.4. [1] soit C un code θ− cyclique dans Rn = R[x; θ]/(xn − 1)
qui contient quelques polynômes unitaires. Supposons qu’aucun polynôme f (x)
de degré minimal dans C soit unitaire. Alors C = (f (x), g(x)) où g(x) est un
polynôme de moindre degré parmi les polynômes unitaires en C.
Preuve : Supposons qu’un polynôme f (x) de degré minimal dans C ne soit pas
unitaire. Soit g(x) un polynôme unitaire dans C de degré minimal et soit c(x) ∈ C.
Donc, par l’algorithme de division à gauche, il existe des polynômes p1 (x) et r1 (x)
tel que c(x) = p1 (x)∗g(x)+r1 (x), où r1 (x) = 0 ou deg(r1 (x)) < deg(g(x)). Puisque
g(x) et c(x) sont dans C et puisque C est un code θ− cyclique,on a r1 (x) ∈ C.
Puisque deg(r1 (x)) < deg(g(x)), r1 (x) est un polynôme non-unitaire ou
r1 (x) = 0.

Si r1 (x) = 0, alors c(x) ∈ (g(x)) ⊆ (f (x), g(x)). Et si r1 (x) 6= 0, alors par le


lemme (3),on peut trouver des polynômes p2 (x), et r2 (x) tel que
r1 (x) = q2 (x) ∗ f (x) + r2 (x)
où r2 (x) = 0, ou deg(r2 (x)) < deg(f (x)), ou r2 (x) est un polynôme unitaire de
degré inférieur ou égal au deg(r1 (x)) < deg(g(x)). Puisque f (x) est un polynôme
non unitaire de degré minimal dans C et g(x) est un polynôme unitaire de degré
minimal dans C, on doit avoir r2 (x) = 0. Par conséquent, nous avons :

c(x) = q1 (x) ∗ g(x) + r1 (x)


= q1 (x) ∗ g(x) + q2 (x) ∗ f (x)

On a donc C = (f (x), g(x)) où g(x) est un polynôme unitaire de degré


minimal dans C.

Le corollaire suivant résume les résultats précédents de comme suit.


Corollaire 1. Soit C un code θ− cyclique dans Rn , alors :
1. Si un polynôme g(x) de degré minimal en C est unitaire, alors
C = (g(x)), où g(x) est un diviseur à droite tordu de xn − 1.
2. Si C contient des polynômes unitaires mais tel qu’aucun polynôme f (x)
dans C de plus degré, ne soit unitaire, alors C = (f (x), g(x)) où g(x) est un
polynôme unitaires de degré minimal dans C, et f (x) = vf1 (x) ou f (x) =
(v + 1)f1 (x) pour quelques polynômes binaires f1 (x).
3. Si C ne contient aucun polynôme unitaire, donc C = (f (x)) où
f (x) = vf1 (x) ou f (x) = (v + 1)f1 (x) et f1 (x) est un polynôme binaire qui
divise xn − 1.

20
Chapitre 3

Les codes ADN

L’organisation et la complexité de tous les êtres vivants est basé sur un système
de codage fonctionnant avec quatre éléments clés de la molécule d’ADN, c’est pour
cela qu’on dit qu’il est ”le support universel de l’information génétique” ou tout
simplement ”le code de la vie”. L’ADN est très adapté en tant qu’un moyen pour
le traitement des données. Ce qui a donné une naissance au Calcul d’ADN qui
est un champ qui combine entre la biologie moléculaire, la biochimie, l’informa-
tique et les mathématiques.
En 1994, ce champ a été initialement démontré par L.Adleman pour résoudre le
problème du voyageur de commerce, voir [7] p23, le but est d’être un alternative
pour les ordinateurs à base de silicium.

L’acide désoxyribonucléique est une macromolécule composée de deux brins


qui s’enroulent l’un autour de l’autre et qui forme une double hélice (découverte
en 1953 par James Dewey Watson, Francis Crick et Coll.).
Chaque brin est constitué d’une succession de quatre types de nucléotides. Un
nucléotide est un assemblage d’un acide phosphorique (groupement phosphate),
d’un désoxyribose (sucre) et d’une base azotée. Ces bases sont au nombre de
quatre, deux bases puriques ; Adénine (A), Guanine (G) et deux bases pyrimi-
diques ; Thymine (T) et Cytosine (C).
Les deux brins sont appariés avec la règle de complémentarité suivant the Watson-
Crick model ; chaque (A) est lié avec (T), et chaque (G) avec (C), et vise versa .
On note par x̂ le complément de x défini comme suite : Â = T , T̂ = A, Ĉ = G,
Ĝ = C.
Par exemple pour x = (AGCT AC) son complément x̂ = (T CGAT G).

21
Figure 3.1 – Image correspond au structure d’ADN

Un code en bloc est appelé un code d’ADN s’il vérifie les conditions suivantes :

1 La contrainte de Hamming sur une distance d.


2 La contrainte inverse complément.
3 La contrainte inverse.
4 Le contenu GC fixé.
Le but de ces trois premières contraintes est souhaitable d’éviter l’hybridation
entre les différents brins. Le contenu GC fixé garantit que tous les mots de code ont
des caractéristiques thermodynamiques semblables, se qui permet des opérations
parallèles sur des séquences d’ADN.
On définit l’inverse de x = (x0 , x1 , ..., xn−1 ) comme xr = (xn−1 , xn−2 , ..., x1 , x0 ) et
le complément xc = (x̂0 , x̂1 , ..., x̂n−1 ).
Le complément inverse (WCC) est xrc = (x̂n−1 , x̂n−2 , ..., x̂1 , x̂0 ).

Le code C est dit à satisfaire la contrainte inverse si dH (xr , y) ≥ d pour tout


x, y ∈ C (x = y).

Un code C est dit à satisfaire la contrainte de Hamming si pour deux mots


de code distincts x, y ∈ C, dH (x, y) ≥ d.

Un code C est dit pour satisfaire la contrainte de complément inverse si


pour toute paire de mots de code x, y ∈ C (x peut égal y), dH (xr , y) ≥ d.

Un code C est dit à satisfaire la contrainte GC-contenu fixé si ∀x ∈ C contient


le même nombre d’élément de G et C.

22
Définition 3.0.1. Un code C est dit inverse si xr ∈ C pour tout x ∈ C.
Un code C est dit complément si xc ∈ C pour tout x ∈ C.
Un code C est dit complément inverse si xrc ∈ C pour tout x ∈ C.
Un code cyclique complément inverse est un code cyclique qui est aussi complément
inverse.

3.1 Les codes ADN θ−cyclique


L’anneau considéré dans cette section est l’anneau non commutatif R[x; θ] où
θ est un automorphisme de R comme on a vu déjà dans le chapitre 2.
Il existe une application ψ entre les éléments de R et la base nucléotidique d’ADN
{A, T, C, G} définie par 0 7→ G, v 7→ C, v + 1 7→ T , et 1 7→ A.
Une simple vérification montre que pour tout x ∈ R, on a

θ(x) + θ(x̂) = v + 1 (3.1)

Définition 3.1.1. Soit 1 ≤ d ≤ n − 1 un nombre réel positif. Un code θ cyclique


C sur R est dit un code cyclique tordu [n, d] − ADN si les conditions suivantes
sont vérifiées :
1. C est un code cyclique tordu, c’est-à-dire que C est un R−sous module de
Rn ;

2. pour tout mot de code X ∈ C : (X)rc 6= X et (X)rc ∈ C ;

3. dH (X, Y ) ≤ d pour tout X, Y ∈ C.

3.1.1 Les codes ADN θ-cyclique à complément inverse sur


R
Dans cette sous-section, on donne des conditions sur l’existence des codes cy-
cliques à complément inverse de longueur paire n sur l’anneau R. Dans la table
4.1 on va présenter tous les mots du code ADN θ− cyclique de longueur 10 et de
distance de Hamming minimale 2.
Soit v = (a0 , a1 , ..., an−2 , an−1 ) un vecteur dans Rn , l’inverse du vecteur v est
v r = (an−1 , an−2 , ..., a1 , a0 ) . Soit f (x) le polynôme correspondant au vecteur v tel
que f (x) = a0 + a1 x + ... + an−1 xn−1 . Pour obtenir le polynôme correspondant au
vecteur v r dans R[x; θ], on multiplie la droite du polynôme f (x−1 ) par xn−1 on
obtient f (x−1 )xn−1 = a0 xn−1 + a1 θ(1)xn−2 + ... + an−2 θn−2 (1)x + an−1 θn−1 (1) =
an−1 + an−2 x + ... + a1 xn−2 + a0 xn−1 . Le polynôme correspondant au vecteur v r
noté f ∗ (x).

Définition 3.1.2. Soit f ∗ (x) = f (x−1 ) ∗ xdeg(f ) un polynôme réciproque d’un


polynôme f (x) dans R[x; θ]. Le polynôme f est dit auto-réciproque si f ∗ coı̈ncide
avec f . (i.e les coefficients du polynôme f ∗ satisfont ai = an−i ).

23
Exemple Soit f un polynôme dans R[x; θ] donné par f (x) = x4 + vx3 + x2 +
(v + 1)x + v. Le polynôme f représente la séquence d’ADN X(ACATC).
On obtient l’inverse de la séquence X par f ∗ (x)

f ∗ (x) = f (x−1 )x4


= vθ0 (1)x4 + (v + 1)θ(1)x3 + θ2 (1)x2 + θ3 (1)x + θ4 (1)
= vx4 + (v + 1)x3 + x2 + vx + 1.

La condition ai = an−i est satisfaite car on a : a0 = a4 = v, a1 = a3 = v + 1, a2 =


a2 = 1. Donc, f (x) est un polynôme auto-réciproque.
Et l’inverse de la séquence d’ADN de X est donné par (CTACA).

Remarque La définition du polynôme réciproque sur R[x, θ] est différente de


celle sur un anneau commutatif. En effet, dans l’anneau non commutatif R[x, θ],
on utilise la multiplication à droite sur l’automorphisme θ et la multiplication sur
R[x; θ] (définition (2.1.1)).

Théorème 3.1.1. [3] Soit C = (f (x)) un code cyclique tordu sur Rn , où f (x) est
un polynôme unitaire de degré minimal dans C, si C est un complément inverse
alors le polynôme f (x) est auto-réciproque et v(xn − 1)/(x − 1) ∈ C.

Preuve. Soit C = (f (x)) est un code cyclique tordu sur Rn , où f (x) est un
polynôme unitaire de degré minimal dans C, on sait que :

(0, 0, ..., 0) ∈ C (3.2)


puisque C est un complément inverse alors

(0, 0, ..., 0)rc ∈ C


i.e
(0̂, 0̂, ..., 0̂) = (v, v, ..., v) ∈ C,

ce vecteur correspond au polynôme

v + vx + ... + vxn−1 = v(xn − 1)/(x − 1) ∈ C.

On a f (x) un polynôme unitaire de degré minimal dans C, où f (x) = 1+a1 x+...+
xt , le vecteur correspond au polynôme f (x) est (1, a1 , ..., at−1 , 1, 0, 0, ...0), comme
C est un complément inverse et linéaire, alors

(1, a1 , ..., at−1 , 1, 0, 0, ..., 0)rc ∈ C

i.e

f rc (x) = v + vx + ... + vxn−t−2 + (v + 1)xn−t−1 + ât−1 xn−t + ... + â1 xn−2 + (v + 1)xn−1 ∈ C

24
Donc, f rc (x) + v(xn − 1)/(x − 1) ∈ C. Cela implique
xn−t−1 + (ât−1 + v)xn−t + ... + (â1 + v)xn−2 + xn−1 ∈ C
En multipliant à droite par xt+1−n , (tel que : (axi ) ∗ (bxj ) = aθi (b)xi+j ),
on obtient
(1 + (ât−1 + v)θn−t (1)x + ... + (â1 + v)θn−2 (1)xt−1 + θn−1 (1)xt )
Par conséquent
(1 + (ât−1 + v)x + ... + (â1 + v)xt−1 + xt ) ∈ C
Ce qui implique (grâce à l’équation (3.1)) que
f ∗ (x) = 1 + at−1 x + ... + a1 xt−1 + xt ∈ C
Puisque C = (f (x)), il existe q(x) ∈ R[x; θ] tel que f ∗ (x) = q(x).f (x), il est
nécessaire et suffisant que q(x) = 1, pour que f ∗ (x) = f (x).
Théorème 3.1.2. [3] Soit C = (vf1 (x)) un code cyclique tordu dans Rn , où f1 (x)
est un polynôme binaire unitaire de plus petit degré, avec f1 (x)/(xn − 1).
Si C est un code de complément inverse, alors f1 (x) est auto-réciproque.
Preuve Soit f1 (x) = 1 + a1 x + a2 x2 + ... + xr un polynôme binaire, le vecteur
correspond à f1 (x) est :
v = (1, a1 , ..., ar−1 , 1, 0, 0, 0, ..., 0, 0).
Par conséquent
v rc = (0̂, 0̂, 0̂, ..., 0̂, 1̂, âr−1 , ..., aˆ1 , 1̂) ∈ C.
Ce vecteur correspond au polynôme
f1rc = v + vx + ... + vxn−r−2 + (v + 1)xn−r−1 + ân−r xn−r + ... + â1 xn−2 + (v + 1)xn−1

Puisque C est un code linéaire, alors


f1rc + v(xn − 1)(x − 1) ∈ C
ainsi
xn−r−1 + (âr−1 + v)xn−r + ... + (â1 + v)xn−2 + xn−1 ∈ C,
Multipliant par xr+1−n , on obtient
(1 + (âr−1 + v)θn−r (1)x + ... + (â1 + v)θn−2 (1)xr−1 + θn−1 (1)xr )
alors
1 + (âr−1 + v)x + ... + (â1 + v)xr−1 + xr ∈ C
D’après l’équation (3.1) On obtient
f1∗ (x) = 1 + ar−1 x + ... + a1 xr−1 + xr ∈ C
Par conséquent
vf1∗ (x) = v(1 + ar−1 x1 + ... + a1 xr−1 + xr ) ∈ C.
Puisque C = (vf1∗ (x)), on a vf1∗ (x) = q(x)(vf1 (x)), il est nécessaire et suffisant
que q(x) = 1 pour que f1∗ (x) = f1 (x).

25
Théorème 3.1.3. [3] Soit C = (f (x), g(x)) un code cyclique tordu dans Rn ,
où f (x) est un polynôme de degré minimal dans C non unitaire, g(x) est un
polynôme de plus petit degré parmi les polynômes unitaires dans C. Si C est un
code à complément inverse, alors f (x) et g(x) sont auto-réciproques.

Preuve. La preuve est similaire à la preuve du Théorème 2.3.1 et du Théorème


2.3.2 .

3.2 L’image binaire des codes ADN θ-cycliques


Rappelons l’application Gray présenter au début de deuxième chapitre, φ de
F2 + vF2 dans F2 × F2 , où : φ(a + bv) = (a + b, a), tel que :
0 −→ (0, 0), 1 −→ (1, 1), v −→ (1, 0), v + 1 −→ (0, 1).
On peut obtenir l’image binaire de code ADN à partir des applications φ et ψ
ainsi que l’alphabet ADN sur un ensemble de mots binaires de longueur 2 donné
par :
G −→ (0, 0)
A −→ (1, 1)
C −→ (1, 0)
T −→ (0, 1)
On a la propriété suivante de l’image binaire du code ADN cyclique tordu.

Corollaire 2. L’application R −→ F2n 2 est une isométrie linéaire préservant la


distance, par conséquent, si C est un code ADN cyclique tordu sur R, alors φ(C)
est un code ADN quasi cyclique tordu de longueur 2n et d’indice 2.

26
Chapitre 4

Application en cryptographie
d’ADN

Les humains utilisent la technologie pour stocker une quantité incroyable de


données, et nous pourrions bientôt atteindre une limite si nous ne trouvons pas
de nouvelles technologies.
La grande majorité des données sont actuellement stockées sur des supports
magnétiques tels que des disques durs ou des bandes, et certaines d’entre elles
sont stockées sur des supports optiques tels que des CD et des DVD.
Cependant, nos techniques de stockage modernes ont quelques défauts : elles ne
sont pas robustes, elles ont une faible densité d’informations et chaque support
nécessite un périphérique spécial pour lire et écrire des données.

Heureusement, l’ADN pourrait bien contenir la réponse à nos besoins en données,


c’est une alternative à nos périphériques de stockage actuels, et nous pouvons tout
stocker, du texte, des images et des vidéos.

— L’ADN est le support de stockage le plus ancien et le plus robuste de la na-


ture. Il ne peut pas être stocké indéfiniment, mais il peut facilement durer
quelques siècles.

— Le deuxième problème est la faible densité d’informations, par exemple, le


centre de données de stockage frigorifique de FACEBOOK en Oregon, fait
plus de 5700 mètres carrés et nous pouvons stocker environ 1 exaoctet de
données, c’est mille pétaoctets ou 1 milliard de gigaoctets.
Théoriquement, nous pouvons stocker 1 zettaoctet de données dans un seul
gramme d’ADN, donc un milliard de téraoctets, et c’est l’équivalent de 71
millions de disques durs de la plus grande capacité disponible aujourd’hui.
Mais c’est la théorie ! !
Actuellement, nous ne pouvons stocker que 215 pétaoctets par gramme
d’ADN, ce qui signifie que nous pouvons remplacer tout le centre de données
par seulement 5 grammes d’ADN.

— Les lecteurs d’ADN ou  séquenceurs construits aujourd’hui peuvent lire

27
tout l’ADN, même l’ancien ADN.

Mais la question fréquente est : Comment pouvons-nous stocker des données


dans l’ADN ?
Traditionnellement, nous stockons les données sous forme binaire : des 1 et des
0. Dans un disque dur, les 0 sont représentés par des zones qui ne sont pas
magnétisées, et les 1 par des zones qui le sont.
Utiliser l’ADN pour stocker signifie que nous avons quatre valeurs distinctes au
lieu de deux. Ainsi, au lieu de stocker chaque 0 et 1 individuellement, nous les
stockons comme des paires de deux 00, 11, 01 et 10, tel que chaque paire réfère à
une base azotée : A, C, G et T, comme la table 4.2 les présente.

Fondamentalement, comme tout ce qui concerne la technologie de nos jours,


ils utilisent un algorithme.

Par exemple, si nous prenons une photo, l’appareil photo stocke les données
de la photo sous forme de fichier numérique sur la carte mémoire, et ce fichier
peut être converti en langage binaire utilisé par le périphérique de stockage, la
séquence binaire qui code la photo peut alors être convertie en une séquence de
bases d’ADN, cet ADN peut ensuite être synthétisé artificiellement en créant un
brin d’ADN qui contient toutes les informations nécessaires pour reproduire cette
photo.
Si vous inversez simplement le processus, en lisant l’ADN, vos données seront
récupérées.

4.1 La cryptographie ADN et la cryptographie


traditionnelle
La cryptographie est la science qui aborde tous les aspects de la communication
sécurisée sur un canal non sécurisé, et qui assure la confidentialité, l’intégrité,
l’authentification et la non-répudiation.
l’ADN fournit un excellent moyen de sécuriser les données, la technique a été
nommée cryptographie à ADN. Dans de telles techniques, les données de mes-
sage en clair sont codées dans des brins d’ADN par l’utilisation d’un alphabet de
séquences oligonucléotidiques.
Dans le tableau 4.6, une comparaison simple est présentée entre les techniques
cryptographiques traditionnelles et ADN en tenant compte des attributs tels que :
la sécurité fournie par la technique, le temps nécessaire pour traiter la technique, le
support de stockage utilisé pour stocker les données dans la technique, la capacité
de stockage du support de stockage utilisé et la stabilité des résultats pour la
technique particulière.
En considérant la sécurité fournie par les deux techniques, on peut voir que les
techniques cryptographiques d’ADN fournissent une double sécurité en impliquant
des difficultés de calcul ainsi que des difficultés biologiques.
Dans la cryptographie traditionnelle, la sécurité peut être considérée comme un

28
seul élément car elle ne repose que sur des difficultés de calcul. Le temps pris
par les algorithmes cryptographiques efficaces est de quelques secondes, tandis
que les techniques cryptographiques d’ADN qui impliquent la technique de PCR
(Polymerase Chain Reaction ou réaction de polymérisation en chaı̂ne, est une
technique d’amplification enzymatique permettant d’obtenir un grand nombre de
copies identiques d’un fragment d’ADN.) voir [11] et de puce à ADN peuvent
prendre des heures pour terminer l’ensemble du processus.
La cryptographie traditionnelle fonctionne généralement sur des ordinateurs sur
le réseau, de sorte que les supports de stockage sont des puces de silicium des
ordinateurs, tandis que la cryptographie à ADN traite des brins d’ADN qui sont
manipulés par des techniques biologiques.
Si nous considérons l’ADN comme le support de stockage, il a une capacité de
stockage énorme par rapport à la quantité équivalente de puces de silicium. Cette
propriété des données rend la cryptographie et le calcul de l’ADN très tentants et
bénéfiques pour la recherche.
La stabilité des résultats des techniques cryptographiques fait référence au fait que
le cryptage et le décryptage donnent toujours les mêmes résultats. Les conditions
d’implémentation incluent la plate-forme et les limitations de langage utilisées
pour encoder l’algorithme. Alors que la stabilité de la cryptographie de l’ADN
dépend beaucoup des conditions environnementales telles que la température, le
PH.
Cette instabilité de la cryptographie de l’ADN est discutée plus loin.

4.2 L’algorithme cryptographique


L’algorithme cryptographique presenté dans ce chapitre est une combinaison
de la cryptographie d’ADN, le protocole de Diffie-Helman (DH) et le processus
d’Hybridation.
Seule la clé généré par le processus d’hybridation qui est transmise via un canal
sécurisé, car le protocole de DH assure la sécurité de sa clé généré.
C’est un algorithme à clés symétriques, ce qui veut dire que les clés secrétes sont
utilisées pour le cryptage par l’éxpediteur, et pour le décryptage par le récépteur.

L’algorithme donné se décompose également de principaux processus :


l’échange de clé Diffie-Hellman, le XOR et le XNOR présenté respectivement par
les tableaux 4.3 et 4.4, l’insertion de l’automorphisme θ et l’hybridation.
(Le processus d’Hybridation est lorsqu’un ensemble de brins complémentaires sont
refroidis, puis chaque brin trouve son WCC pour former la structure en double
hélice de l’ADN).

Le Protocole de DH :

L’échange de clé Diffie-Hellman est un protocole de communication, permet-


tant de résoudre le problème d’établir un secret partagé entre deux participants,
en utilisant un canal de communication public (non sécurisé), il est basé sur le
problème de Logarithme Discret (DLP).

29
Le but est de calculer une valeur commune sans avoir peur qu’une personne
étrangère puisse la deviner.
Et pour cela Diffie et Hellman se planchent sur un type particuliers de fonctions
mathématiques : La fonction à sens unique qui est l’exponentiation modulaire.

Le protocole de DH se présente comme ceci :

• Alice et Bob se mettent d’accord publiquement sur un très grand nombre


premier p et sur une racine primitive modulo p que l’on nommera α.
• Alice choisit un nombre a tel que 0 < a < p mais qu’elle garde secret et elle
transmet à Bob A = αa mod p.
• Bob choisit un nombre 0 < b < p qu’il garde secret aussi et transmet à Alice
B = αb mod p.
• Leur secret commun sera donc αab mod p qu’on note K, Alice va donc
calculer K en élevant B à la puissance a comme ceci (αb )a , et Bob en élevant
A à la puissance b comme cela (αa )b .

Fabrication de la clé secrète

Étape 1 : Alice et Bob choisissent ensemble un nombre premier p = 23 et un entier


α = 7.
Cet échange n’a pas besoin d’être sécurisé.

Étape 2 : Alice choisit secrètement a = 5 et Bob choisit secrètement b = 3.

Étape 3 : Alice calcule A = αa mod p = 75 mod 23 = 17 et Bob calcule B = αb mod


p = 73 mod 23 = 21.

Étape 4 : Alice et Bob s’échangent les valeurs de A et B. Cet échange n’a pas besoin
d’être sécurisé.

Étape 5 : Alice calcule B a = (αb )a = αab mod p = 215 mod 23 = 14.


Et Bob calcule Ab = (αa )b = αab mod p = 173 mod 23 = 14.

Étape 6 : Donc, la clé secrète commune est K = 14.

30
L’algorithme de l’expéditeur
1. En première étape on prend un message en clair et en utilisant le tableau
4.5, on écrit au dessous de chaque lettre le codon correspondant, ce qui nous
donne une séquence d’ADN, notée ssDNA (single strand DNA).
2. À l’aide de l’image binaire présentée par le tableau 4.2 de code ADN on
peut passer de la séquence d’ADN à une représentation binaire notée MB.
3. On insére l’automorphisme θ dans le résultat de la première étape ssDNA,
la séquence résultante est notée ssDNAm (single strand DNA modified) .
4. À l’aide du protocole de Diffie-Hellman, on fabrique une clé secrète K, cette
dernière va être présenté en décimal donc en utilisant le tableau 4.5, on peut
la convertir en codon, le résultat est appelé : séquence d’ADN de la clé
secrète, après on convertit ce résultat en binaire à l’aide du tableau 4.2, et
on l’appelle séquence binaire de la clé secrète .
5. On écrit le message binaire MB et au dessous on met la séquence binaire
de la clé secrète, en remarquant que cette dernière est plus courte que le
message, on la répéte jusqu’à avoir une séquence binaire de même longueur
que le message binaire MB, maintenant, on applique le XNOR présenté
dans le tableau 4.4 .
6. Aprés prendre la séquence résultante en étape 3 ssDNAm, on met au des-
sous la séquence d’ADN de la clé secrète, et comme cette dernière est
courte, il suffit de la repéter jusqu’à avoir la même longueur, et on hybride
ces deux séquences.
Lorsque les paires Watson-Crick trouvées dans des groupes de l’échelle 1, on
note 1, si l’hybridation échoue, on note 0 .
7. Cette fois ci on applique le XOR, (comme le tableau 4.3 l’indique), entre le
résultat de l’étape 5 et celui de l’étape 6 en repètant ce dernier pour avoir
la méme longueur que le résultat de l’étape 5 .
8. Finalement, on convertit la dernière séquence binaire en codon, (en utilisant
le tableau 4.2), puis on passe au message chiffré (en utilisant le tableau 4.5).

L’algorithme de récepteur
La clé secréte K fabriquée par le protocole DH est connue de la part du
récepteur, mais le déchiffrement ne peut commencer qu’après avoir reçu : le mes-
sage chiffré et la clé secrète C1 (séquence binaire résultante de l’étape 6 dans l’al-
gorithme de l’expéditeur, généré par le processus d’hybridation) que le récepteur
reçoit par un canal sécurisé.

1. En utilisant le tableau 4.5 on passe du message chiffré au séquence d’ADN.


2. On convertit la séquence d’ADN en séquence binaire en utilisant le tableau
4.2.
3. On met la séquence binaire résultante de l’étape précédente, et au dessous,
la clé secrète C1 , puisque sa longueur est courte, il suffit de la répéter jus-
qu’à avoir la même longueur de la séquence binaire résultante de l’étape

31
précedente.
Puis on effectue le XOR (Table 4.3) entre les deux séquences, on note le
résultat MB”.
4. Maintenant on prend la séquence précédente MB” et la séquence binaire de
la clé secrète K fabriquée par le protocole DH, qu’on la répète aussi pour
avoir une logueur égale à celle de MB”, et cette fois ci on effectue le XNOR
entre eux (Table 4.4), qu’on peut noté MB’
5. On passe de la séquence binaire résultante MB’ au séquence d’ADN puis
au message clair. En utilisant respectivement les tableaux 4.2 et 4.5.

Exemple :

Le chiffrement :

On prend le message clair : Pray for Lebanon.


On prend la clé secrète généré par le protocole de DIFFIE-HELLMAN en haut ,
c’est K = 14.

Les deux premières étapes nous donne : ssDNA présentée dans la deuxième ligne,
et MB dans la troisiéme ligne :

P r a y f o r L
GGC CAC AAA CGA TTG ACC ATG CAC TTG GCC
000010 101110 111111 100011 010100 111010 110100 101110 010100 001010

e b a n o n .
ACA AAC AAA ATC ATG ATC TTT
111011 111110 111111 110110 110100 110110 010101

L’étape 3 : L’insertion de l’automorphisme θ nous résulte la séquence


ssDNAm suivante :

GGT TAT AAA TGA CCG ATT ACG TAT CCG GTT ATA

AAT AAA ACT ACG ACT CCC

L’étape 4 : la clé secrète est K = 14, dans ce cas ”la séquence d’ADN de la clé
secrète ” et ”la séquence binaire de la clé secrète ”sont données par :

1 4
TCA TCT
011011 011001
L’étape 5 : on effectue le XNOR entre MB et ”la séquence binaire de la clé
secrète”.

32
000010 101110 111111 100011 010100 111010 110100 101110 010100 001010

011011 011001 011011 011001 011011 011001 011011 011001 011011 011001
=
100110 001000 011011 000101 110000 011100 010000 001000 110000 101100

111011 111110 111111 110110 110100 110110 010101



011011 011001 011011 011001 011011 011001 011011
=
011111 011000 011011 010000 010000 010000 110001

L’étape 6 : on vérifie l’hybridation entre ssDNAm et ”la séquence d’ADN de


la clé secrète”.

GGT TAT AAA TGA CCG ATT ACG TAT CCG GTT ATA
TCA TCT TCA TCT TCA TCT TCA TCT TCA TCT TCA

011 000 100 011 000 100 100 000 000 000 100

AAT AAA ACT ACG ACT CCC


TCA TCT TCA TCT TCA TCT

101 101 101 100 101 000


L’étape 7 et avant dernière : on effectue le XOR entre le résultat de l’étape 5
et celui de l’étape 6.

100110 001000 011011 000101 110000 011100 010000 001000 110000 101100

011000 100011 000100 100000 000000 100101 101101 100101 000011 000100
=
111110 101011 011111 100101 110000 111001 111101 101101 110011 101000

011111 011000 011011 010000 010000 010000 110001



011000 100011 000100 100000 000000 100101 101101
=
000111 111011 011111 110000 010000 110101 011100

La dernière étape : on passe au message chiffré.

33
111110 101011 011111 100101 110000 111001 111101 101101 110011 101000
AAC CCA TAA CTT AGG ACT AAT CAT AGA CCG

b u W F k h d t i w

000111 111011 011111 110000 010000 110101 011100


GTA ACA TAA AGG TGG ATT TAG

S e W k 7 p Y

Le message chiffré est : buWFkhdtiwSeWk7pY

Le déchiffrement :
La séquence binaire C1 ainsi que le message chiffré sont reçus
011000100011000100100000000000100101101101100101000

Les deux premières étapes donnent les résultats suivants :

b u W F k h d t i w
AAC CCA TAA CTT AGG ACT AAT CAT AGA CCG

111110 101011 011111 100101 110000 111001 111101 101101 110011 101000

S e W k 7 p Y
GTA ACA TAA AGG TGG ATT TAG

000111 111011 011111 110000 010000 110101 011100

L’étape 3 : on effectue le XOR entre la séquence binaire résultante de l’étape


précédente et la clé secrète C1 , le résultat noté MB”.

111110 101011 011111 100101 110000 111001 111101 101101 110011



011000 100011 000100 100000 000000 100101 101101 100101 000011
=
100110 001000 011011 000101 110000 011100 010000 001000 110000

101000 000111 111011 011111 110000 010000 110101 011100



000100 011000 100011 000100 100000 000000 100101 101101
=
101100 011111 011000 011011 010000 010000 010000 110001

34
L’étape 4 : la clé secrète est K = 14 on la converti en binaire.
On effectue le XNOR entre MB” et la séquence binaire de la clé secrète, ce qui
résulte MB’ :

1 4
TCA TCT
011011 011001

100110 001000 011011 000101 110000 011100 010000 001000 110000 101100

011011 011001 011011 011001 011011 011001 011011 011001 011011 011001
=
000010 101110 111111 100011 010100 111010 110100 101110 010100 001010

011111 011000 011011 010000 010000 010000 110001



011011 011001 011011 011001 011011 011001 011011
=
111011 111110 111111 110110 110100 110110 010101

La dernière étape : la conversion de binaire vers le message clair :

000010 101110 111111 100011 010100 111010 110100 101110 010100 001010
GGC CAC AAA CGA TTG ACC ATG CAC TTG GCC
P r a y f o r L

111011 111110 111111 110110 110100 110110 010101


ACA AAC AAA ATC ATG ATC TTT
e b a n o n .
et on arrive au message clair : Pray for Lebanon.

35
4.3 Analyse de sécurité
Un bon algorithme de sécurité devrait être vénérable contre la plupart des
types d’attaques. Le but de ces algorithmes est de réduire la probabilité d’une
attaque réussie et de protéger les données précieuses. Une attaque par force brute
tente systématiquement toutes les clés possibles utilisées dans une attaque connue
en clair / texte chiffré.
Dans l’ADN, les quatre gènes de base manquent de propriétés linguistiques ou
de redondance comme dans le langage humain. Si l’attaquant tente d’attaquer
la communication en utilisant cette attaque, ce serait un problème de calcul très
coûteux.
Pour plus de sécurité, une grande taille de clé est très importante, pour lui rendre
les primitives plus vénérables.

Les attaques par canal secondaire dépendent des informations supplémentaires


tirées de l’implémentation physique d’un algorithme de sécurité, comme : le matériel
utilisé pour crypter / décrypter les données, les cycles CPU utilisés (i.e le temps
d’exécution minimal d’une instruction, recherche + exécution), et le calcul des
performances et la tension.

La cryptographie de l’ADN profite des propriétés combinatoires du calcul de


l’ADN, pour être plus vénérable à ce type d’attaques. Un autre type d’attaque
est celui des attaques par rencontre du milieu, ce type d’attaque utilisé avec des
algorithmes à plusieurs clés. Il s’agit d’une attaque connue en texte clair ; l’atta-
quant doit avoir accès au texte en clair et au texte chiffré. Cette attaque tente
de trouver une valeur intermédiaire, qui sera utilisée à la fois par le texte brut et
le texte chiffré. Ainsi, nous pouvons dire que dans la cryptographie ADN, il est
difficile de trouver ces valeurs, car il n’y a pas de relation entre le texte brut (texte
normal) et le texte chiffré (codage ADN).

36
GGGGGGGGGG CCCCCCCCCC CCCCCGGGGG GGGGGCCCCC
GGGGCCCCCG CCCCGGGGGC CCCCGCCCCG GGGGCGGGGC
GGGTTTTTGG CCCAAAAACC CCCATAAACG GGGTATTTGC
GGGTAAAACG CCCATTTTGC CCGGGCCGGG GGCCCGGCCC
GGCCCCCGGG CCGGGGGCCC CCGGCGGCCG GGCCGCCGGC
GGCCGGGCCG CCGGCCCGGC CCGTATTACG GGCATAATGC
GGCAAAATCG CCGTTTTAGC CCGTTAATTG GGCAATTAAC
GGCAAAATGG CCGTTTTACC CATTAACGGG GTAATTGCCC
GTAAAACGGG CATTTTGCCC CAGTATGCCG GTCATACGGC
GTAACCATTG CATTGGTAAC CAAGCGTACG GTTCGCATGC
GTACGGTACG CATGCCATGC CAATTACCGG GTTAATGGCC
GTACCCATGG CTAGGGTACC CAAAATGGGG GTTTTACCCC
GATTTTGGGG CTAAAACCCC CAAATACCCG GTTTATGGGC
GTTTAACCCG CAAATTGGGC CAACGCAACG GTTGCGTTGC
GTTGCCAACG CAACGGTTGC CAACCGTTGG GTTGGCAACC
GTTGGGTTGG CAACCCAACC CCACGCAACG GGTGCGTTGC

Table 4.1 – Code ADN cyclique tordu de longueur 10 et distance minimal 2.

00 G
11 A
01 T
10 C

Table 4.2 – L’image binaire

A B A⊕B
0 1 1
0 0 0
1 1 0
1 0 1

Table 4.3 – La table du XOR .

A B A B
0 1 0
0 0 1
1 1 1
1 0 0

Table 4.4 – La table du XNOR .

37
AAA a CGG A TCA 1
AAC b CGT B TCC 2
AAG c CTA C TCG 3
AAT d CTC D TCT 4
ACA e CTG E TGA 5
ACC f CTT F TGC 6
ACG g GAA G TGG 7
ACT h GAC H TGT 8
AGA i GAG I TTA 9
AGC j GAT J TTC 0
AGG k GCA K TTG space
AGT l GCC L TTT (period)
ATA m GCG M
ATC n GCT N
ATG o GGA O
ATT p GGC P
CAA q GGG Q
CAC r GGT R
CAG s GTA S
CAT t GTC T
CCA u GTG U
CCC v GTT V
CCG w TAA W
CCT x TAC X
CGA y TAG Y
CGC z TAT Z

Table 4.5 – DNA code.

Table 4.6 – La comparison entre les méthodes de la cryptographie traditionnelle


et ADN
Sécurité Complexité Support de Capacité de stabilité
Stockage Stockage
Cryptographie Faible ≥ quelques Puces de sillicium 1g de sillicium Selon les
Traditionelle secondes d’ordinateur stocker 16M B environnements
d’éxcution
Cryptographie Forte ≥ quelques brins d’ADN 1g d’ADN Selon les
d’ADN heures stocker 108 T B conditions envi-
ronnementales

38
CONCLUSION

Nous venons de présenter dans ce mémoire le fruit de notre travail portant sur
 Les codes tordus et application en cryptographie d’ADN .

La structure algébrique des codes θ−cycliques sur l’anneau R est très intéressante,
et les codes obtenus sont des codes à complément inverse.
L’avantage d’étudier les codes ADN sur l’anneau de polynôme tordu R est l’exis-
tence d’une correspondance entre les bases azotées d’ADN et les éléments de l’an-
neau, ainsi de présenter plusieurs factorisations et donc l’obtention de plusieurs
codes ADN à complément inverse sur l’anneau R. Ce qui n’est pas le cas sur un
anneau commutatif.

Dans le dernier chapitre, on a confirmé que l’ADN est un alternative à nos


périphériques de stockage de données actuels, en stockant des textes, des images
ou bien des vidéos, ainsi qu’on peut lire, écrire et copier les données. On a proposé
un algorithme bien détaillé pour chiffrer et déchiffrer des message avec deux clés
secrètes, en utilisant le processus d’hybridation, le protocole de Diffie-Hellman et
l’insertion de l’automorphisme θ de l’anneau R, pour donner une idée comment
coder et crypter les données en assuranr leur sécurité.

Un domaine qui bénéficiera énormément du calcul d’ADN et la cryptographie


d’ADN est bien la sécurité des données. Car la technologie change mais l’ADN
sera toujours là, il est durable et peut durer des milliers d’années dans un endroit
froid et sec. L’utilisation de l’ADN comme un support de stockage semble être
une évidence, mais il y a aussi quelques inconvénients : en copiant de l’ADN, on
introduit du bruit et la qualité est réduite, mais on peut surmonter cela avec nos
codes de correction d’erreur (codes correcteurs d’erreurs).
Et principalement, c’est un processus coûteux, le coût actuel de stockage et d’en-
codage d’un mégaoctet de données est de 1 million de dollars, un peu trop sachant
qu’un disque dur peut faire la même chose pour moins d’un centime.
Cependant, nous devons commencer quelque part.

39
Bibliographie

[1] T.Abualrub, N.Aydin, P.Seneviratne,”On θ-cyclic codes over F2 + vF2 ”, Aus-


tralas. J. Combin, 2012.
[2] A.Batoul Manuscrite :”Cours et exercices sur les codes linéaires et les codes
cycliques”,USTHB.
[3] N.Bennenni, K.Guenda and S.Mesnager,”DNA cyclic codes over rings ”,
Advances in Mathematics of Communications, 2017, 11 (1) : 83-98. doi :
10.3934/AMC.2017004
[4] D. Boucher, W. Geiselmann and F. Ulmer, ” Skew-Cyclic Codes”, Applicable
Algebra in Engineering, Communication and Computing 18, Issue 4 (2007),
379–389.
[5] M.Chibani, M.Berriah, ”Cryptographie à base d’ADN : Application sur les
images”, mémoire de master en Informatique specialisé en sécurité informa-
tique et cryptographie, sous la dirction de k.Benyahia,UNIVERSITE SAIDA
- Dr.MOULAY Tahar, 66p.
[6] K.Mazhar, H.Waleej, ”Cryptography using DNA Nucleotides”, International
Journal of Computer Applications (0975 – 8887), Volume 168 – No.7, June
2017.
[7] I.Medjahri, ”Cryptographie à base d’ADN : Un cryptosystème à clé
symétrique basé sur les séquences ADN ”,mémoire de master en Informatique,
sous la dirction de k.Benyahia,UNIVERSITE SAIDA -Dr. MOULAY Tahar,
66p.
[8] C.Popovici, ”Aspects of DNA cryptography”, Annals of the university of
Craiova, Mathematics and computer sciences series, 2010.
[9] Olfa Yemen, ”Application des codes cycliques tordus”. Autre [cs.OH]. Uni-
versité Nice Sophia Antipolis, 2013. Français. NNT : 2013NICE4070. tel-
00866858.
[10] Url :www.geekwire.com/2019/microsoft-university-washington-demonstrate-
automated-dna-data-storage.
[11] Url :www.futura-sciences.com/sante/definitions/genetique-pcr-91.

Vous aimerez peut-être aussi