Activité : découvrir le codage affine 1 Principes

Transcription

Activité : découvrir le codage affine 1 Principes
TS Spé - Activité : découvrir le codage affine
1 Principes généraux du codage (ou cryptage)
Le principe général du codage est le suivant :
•
L'émetteur et le récepteur se mettent d'accord sur une méthode
•
L'émetteur code son texte puis le diffuse ensuite par un moyen qui n'est pas
nécessairement sécurisé (internet, papier, radio, etc.).
•
Le récepteur reçoit le message et doit pouvoir le décoder.
Il y a différentes manière de faire, mais toutes doivent respecter des principes évidents :
•
Deux nombres x1 et x2 distincts ne doivent pas donner un même nombre codé y.
On garantit ainsi l'existence d'une transformation réciproque, qui permet de
décoder.
•
Le décodage doit être simple pour qui a la clé de codage, et très compliqué pour qui
ne l'a pas. La complexité réside essentiellement dans le nombre de possibilités de
codage.
A savoir : lorsque l'adresse d'un site commence par https, cela indique que le transfert
d'information entre vous et le site est codé (on dit aussi crypté).
On fait correspondre chaque lettre à un entier entre 0 et 25 :
Sur excel :
=code(lettre)-65
transforme la lettre en ce nombre correspondant.
=car(x+65)
transforme x en la lettre correspondante.
On notera x l'entier qui correspond au message à coder, et y l'entier diffusé.
Le schéma global est donc :
Lettre →
x
→
codage
y
→
x → Lettre
décodage
2 Codage par décalage.
On code x en y tel que y≡x+b (mod26 ) et 0⩽ y<26 .
y est donc le reste dans la division euclidienne de x+b par 26.
1) Avec b=10 , coder E.
2) Avec b=5 , décoder L.
3) Vous avez intercepté un message codé par décalage, mais vous ne connaissez pas le
b. Cassez le code pour décrypter le message «KRI» pour connaitre l'intérêt de ce
système.
v.dujardin
1
3 Codage affine
Dans ce codage, on code x en y tel que y≡ax +b ( mod26 ) et 0⩽ y<26
a et b sont appellés les clés de codage, qui ne sont connues que des utilisateurs du code.
3.1 Activités : découvrir en pratiquant
1) Codage : avec les clés de codage a=9 et b=7 , coder le mot « SUPER »
2) Concevoir sur Excel un onglet
permettant :
•
de saisir un a et un b dans les lignes 1 et 2,
•
de saisir un mot de 10 lettres dans la ligne
3 du tableur,
•
d'obtenir dans la ligne 4 le mot codé.
3a) Décodage : vous avez reçu la lettre P.
Décodez la, sachant que les clés de codage sont toujours a=9 et b=7
b) Avec a=5 et b=22 , vous avez reçu la lettre E. Décodez la.
c) Proposer une méthode pour décoder à partir de clés a et b connues.
4) Concevoir sur Excel un nouvel onglet excel permettant :
•
de saisir les clés de décodage dans les lignes 1 et 2,
•
de saisir un mot de 10 lettres dans la ligne 3 du tableur,
•
d'obtenir dans la ligne 4 le mot décodé.
3.2 Quelques observations et conjectures
Avec l'outil de codage excel, choisir un mot (n'importe lequel)
1) Essayez plusieurs valeurs de b, et émettre une conjecture sur le nombre de valeurs
de b donnant des codages différents.
2) Coder le mot avec a=5 et b=11 , puis a=31 sans changer b.
Que se passe-t-il ?
3) Coder n'importe quel mot avec a=13 et b à votre choix. Que se passe-t-il ?
4) Essayez plusieurs valeurs de a pour émettre une conjecture sur les choix possibles
pour a.
5) Au final, comment choisir a et b, et combien de codages affines valables et différents
peut-on envisager ?
v.dujardin
2
3.3 Etude et validation théorique du codage
On choisit a tel que a est premier avec 26, et b entre 0 et 25.
3.3.1 Validité du codage
Montrer en raisonnant par l'absurde que deux entiers distincts x 1 et x 2 ne peuvent pas
se coder en un même y.
Indice : étudier la congruence de a ( x 1 −x 2 ) et encadrer x 1−x 2 pour conclure.
3.3.2 Validité du décodage
Justifier que pour n'importe quelle valeur de v, il existe k tel que k×a−v×26=1 .
En déduire qu'il existe bien k tel que ka≡1 (mod26 ) et donner une relation qui permet de
déterminer x connaissant a, b, k et y.
3.3.3 Fiabilité du codage
Avec a tel que a est premier avec 26, et b entre 0 et 25, combien de codages différents
peut-on envisager avec certitude ?
v.dujardin
3
Eléments de réflexion
2. Codage par décalage
1) Codage E→ x=4 → y=14 →O
2) Décodage : L → y=11→ x=6 →G
3) Il faut essayer les 26 possibilités pour b et regarder celles qui donnent un sens au
mot. On trouve b=3 qui donne « NUL »...
Codage affine
3.1 Activité de découverte
1) On trouve NFMRE.
2) Voir fichier.
3a) Pas facile car il n'y a pas de division avec les congruences...
Indice : trouver un k tel que ka≡1 (mod26 ) puis multiplier y par k.
Avec l'indice, on trouve k=3 car 3×9=27=1×26+1
On sait que y≡9 x+7 ( mod26 ) donc 3 y≡27 x+21≡x +21 ( mod26 ) .
Cela permet d'écrire que x≡3 y−21≡3 y+5 ( mod26 )
Pour P: y=15 et 3×15+5=50≡24 (mod26 ) donc x=24 et P se décode en Y.
b) Avec a=5 , on trouve que 21×5=105=4×26+1≡1 ( mod26 )
Pour E : y≡5 x +22 ( mod26 ) donc 5 x≡ y−22 ( mod26 ) et
1×x≡21 ( y−22 )≡21 y−20 ( mod26 )
Pour E : y=4 donc x≡21×4−20≡12 ( mod26 ) donc E se décode en M.
c) Méthode pour décoder :
•
Préparation : on cherche k tel que ka≡1 (mod26 ) puis on « inverse »
y≡ax +b ( mod26 ) en multipliant par ce k.
Cela donne un couple de nombres (ici k=3 et c=5 , que l'on peut appeler clé
de décodage.
•
Pour chaque lettre : x est le reste dans la division euclidienne de ky+c par 26
(ici 3 y+5 ).
3.2. Observations et conjectures
1) Conjecture : ajouter kb à un b donné ne change pas le codage.
2) Conjecture : ajouter ka à un a donné ne change pas le codage.
3) Le codage n'en est plus un : des lettres différentes se codent en un même y.
4) Il semble que a premier avec 26 garantisse un codage qui fonctionne.
5) On choisirait a premier avec 26 et a et b compris entre 0 et 25.
v.dujardin
4
3.3. Etude et validation théorique
Validité du codage
Supposons que x 1 et x 2 (compris entre 0 et 25) se codent en un même y avec x 1≠x 2
On a alors a x 1 +b≡a x 2 +b ( mod26 ) , et donc a ( x 1 −x 2 )≡0 (mod26 ) , ce qui signifie
exactement que 26 divise x 1−x 2 .
Puisque a est premier avec 26, le théorème de Gauss permet d'affirmer que 26 divise
( x 1−x 2 )
Or
0⩽x 1 <26
donc −26<x 1−x 2 <26 .
0⩽x 2 <26
{
Le seul multiple de 26 dans cet intervalle étant 0, on a nécessairement
x 1−x 2 =0⇔ x 1=x 2 , ce qui contredit notre supposition.
Conclusion : avec a premier avec 26, deux lettres différentes ne se codent jamais en une
seule. Le codage est valide.
Validité du décodage
a étant premier avec -26, le théorème de Bezout assure l'existence d'une solution à cette
équation, que l'on peut noter ( k ;v ) .
k existe bien tel que ka−26 v=1 , et donc en congruence modulo 26 : ka≡1 (mod26 ) .
On a alors y≡ax +b ( mod26 ) donc ky≡kax+kb≡x+kb (mod26 ) ,
et donc x≡ky−kb (mod26 ) .
On a assuré l'existence de k et trouvé une relation permettant de retrouver le x
connaissant k, y et b. On peut donc toujours décoder.
Remarque : trouver le v ne sert à rien... v est ici un « artifice » qui permet d'assurer
l'existence de k.
Fiabilité
Notre étude a validé :
•
Pour a : 12 entiers entre 0 et 25 non premiers avec 26.
•
Pour b : 26 valeurs possibles.
On a montré qu'il existait donc au moins 12×26 = 312 codages affines valides.
C'est peu, car il est facile de programmer le décodage affine.
Conclusion : ce que nous avons validé est donc fiable pour des personnes n'ayant pas fait
la spé math en TS, mais guère plus...
Bien comprendre la limite logique de l'étude : la condition a premier avec 26 est
suffisante pour garantir la validité du codage et celle du décodage. Dans notre étude ne
permet de dire qu'elle est nécessaire : nous n'avons pas montré que pour a non premier
avec 26, le codage et le décodage n'étaient pas possibles.
v.dujardin
5