Crypter Donnees
Crypter Donnees
Crypter Donnees
Éléments de cryptographie
Ces documents peuvent être utilisés et modifiés librement dans le cadre des activités
d'enseignement scolaire, hors exploitation commerciale.
Toute reproduction totale ou partielle à d’autres fins est soumise à une autorisation
préalable du Directeur général de l’enseignement scolaire.
La violation de ces dispositions est passible des sanctions édictées à l’article L.335-2
du Code la propriété intellectuelle.
Juin 2012
© MEN/DGESCO-IGEN ►eduscol.education.fr/
1 Présentation / Éléments de cryptographie
1 / Thème abordé
1.1 Problématique, situations d’accroche
Comment assurer la confidentialité d’un message dans un monde où la notion de
réseau est devenue incontournable ? Quelles situations nécessitent de crypter les
données ? Quelles implications sociétales engendre ce type de démarche ?
De nombreuses situations d’accroche sont susceptibles de motiver les élèves pour
conduire ce travail ; elles sont proposées sous forme de situations-problèmes que
les élèves vont tenter de résoudre avec un peu de bon sens, puis avec l’aide des concepts apportés dans cette
ressource.
1.2 Frontières de l’étude et prolongements possibles
Le niveau mathématique peut rapidement devenir conséquent ; il ne s’agit pas ici d’introduire un cours
d’arithmétique mais de sensibiliser les élèves aux démarches de sécurité et de chiffrement.
On peut cependant évoquer le cryptage moderne (à clé publique par exemple) et donner les moyens de le mettre
en œuvre, comme PGP ou GPG pour les courriels ou encore le protocole de sécurisation SSL des navigateurs
web.
Ce scénario, orienté TP, peut se prolonger au cours de l’année par un mini-projet : l’élève devra être capable de
démontrer son autonomie face à une situation de cryptage de données.
2 / Objectifs pédagogiques
2.1 Disciplines impliquées
Essentiellement les Mathématiques (arithmétique élémentaire), et éventuellement les STI (protocoles sur les ré-
seaux) voire les Sciences Physiques (génération de nombres aléatoires).
2.2 Prérequis
Un peu d’algorithmique et de programmation.
2.3 Éléments du programme
Contenus
– Représentation numérique de l’information.
– Algorithmique : algorithmes simples.
– Langage et programmation : types de données, fonctions, correction d’un programme (partie projet).
– Architectures matérielles : réseaux, transmission de l’information.
Compétences et capacités
Décrire et expliquer une situation, un système ou un programme :
– Coder un nombre, un caractère au travers d’un code standard, un texte sous forme d’une liste de valeurs
numériques.
– Comprendre et expliquer un algorithme.
Concevoir et réaliser une solution informatique en réponse à un problème :
– Concevoir un algorithme comme réponse à un problème.
– Programmer un algorithme.
Collaborer efficacement au sein d’une équipe dans le cadre d’un projet :
– Réaliser un système de chiffrement en travail d’équipe.
Communiquer à l’écrit et à l’oral :
– Présenter à la classe le mini-projet ou l’étude historique sur les codes secrets.
Faire un usage responsable des sciences du numérique :
– Mettre en place un dispositif permettant d’échanger des courriels chiffrés à partir d’une procédure géné-
© Ministère de l’éducation nationale (DGESCO – IGEN)
ISN – Terminale série scientifique Éléments de cryptographie Page 1
rique, sécuriser un réseau wifi en respectant la loi.
4 / Outils
Langages de programmation (Python ou Java par exemple), navigateurs Web, routeur wifi, logiciel de courrier
électronique prenant en charge le chiffrement GPG.
5 / Auteur
Philippe Jonin, professeur de Mathématiques, académie de Nantes
La construction de la feuille de tableur va poser des problèmes techniques : elle nécessite de connaître
quelques fonctions (CODE, MOD, CAR). Une petite fiche les détaillant pourra en conséquence être pro-
posée. Il faudra aussi prévoir, avant le début de la séance, le nombre d’élèves susceptibles de travailler
cette alternative de façon à les regrouper. Les limites du tableur vont aussi rapidement apparaître : diffi-
cultés pour traiter de gros volumes et gérer les entrées-sorties. C’est là une opportunité de basculer au
langage de programmation comme le Python.
2.2 Le cryptosystème de Che Guevara.
Le cryptosystème de Che Guevara utilise une substitution alphabétique (au travers d’une table de transcodage) et
lui associe une clé secrète générée aléatoirement dont la taille est égale à celle du message. Ce système de cryp -
tage, de type Vernam, est relativement sûr et insensible aux attaques fréquentielles. Il n’est pourtant pas exempt
de défauts (ce qui explique qu’il soit peu utilisé) : il faut générer une nouvelle clé pour chaque message et sur-
tout transmettre cette clé sans risquer la moindre fuite.
On peut ici associer les sciences physiques lors de la génération de la clé (en lien avec des phénomènes phy-
siques ayant un caractère aléatoire comme la désintégration radioactive ou l’agitation thermique). Il faudra alors
prévoir une séance supplémentaire pour générer cette clé.
Activité de l’élève :
On construit la séquence comme une énigme à résoudre. On a retrouvé un brouillon de message qu’une personne
projetait d’envoyer. Ce brouillon fait apparaître un certain nombre d’étapes du cryptage et est accompagné d’une
table de transcodage. On se propose d’étudier la façon dont le cryptogramme est construit, de détailler ses étapes
de façon à construire un algorithme de cryptage correspondant.
Un travail en petits groupes peut à nouveau être proposé. Tout comme dans l’activité précédente le niveau
mathématique est susceptible de poser problème si l’on souhaite comprendre toutes les implications d’un
codage de type Vernam : pourquoi la clé doit-elle être choisie aléatoirement et sa taille égale à celle du
message ?
On peut y répondre en proposant de travailler de façon expérimentale et inciter à construire des contre-
exemples (une clé de très petite taille que l’on répète). On pourra alors montrer que le cryptogramme de -
vient sensible aux attaques fréquentielles.
5 / Références
Sites de Cryptologie:
– http://www.securite-
informatique.gouv.fr/autoformations/cryptologie/co/Cryptologie.html
– http://www.cryptage.org (ce site comporte quelques publicités mais offre une bonne introduction à la
cryptologie, au niveau des élèves).
– http://www.apprendre-en-ligne.net/crypto/menu/index.html
Livres:
– «Histoire des codes secrets» par Simon Singh. ISBN Poche: 978-2253150978
– «Les Codes secrets Décryptés». Didier Müller. Edition City. ISBN: 978-2-35288-544-3
– «Cryptographie : Théorie et pratique». Douglas Stinson; Edition Vuibert. ISBN: 978-2711748006
Textes de lois :
– La loi LCEN
http://www.assemblee-nationale.fr/12/dossiers/economie_numerique.asp
(articles 30, 31 et 36)
– Voir aussi :
http://www.legifrance.gouv.fr/affichTexte.do?
cidTexte=LEGITEXT000005789847&dateTexte=#LEGIARTI000006421577
– L’ANSSI :
http://www.ssi.gouv.fr/archive/fr/reglementation/regl_crypto.html
– La loi Hadopi 2 :
http://www.legifrance.gouv.fr/affichTexte.do?
idTexte=JORFTEXT000021208046&categorieLien=id
(en particulier l’article 8 sur la sécurisation des accès wifi).
Courriels chiffrés:
– GNUPG: http://www.gnupg.org/ (installable sur Windows, MacOs, déjà présent sous Linux)
– Mozilla Thunderbird (http://www.mozillamessaging.com/fr/thunderbird/ ) et son extension Enig-
mail (http://enigmail.mozdev.org/home/index.php.html )
Aller plus loin; des ouvertures:
– Le hasard en sciences physiques; générer des nombres vraiment aléatoires:
http://www2.cndp.fr/themadoc/radioactivite/caract_alea_ficheprof.htm
– La technologie OTP (One -Time Password): http://en.wikipedia.org/wiki/One-time_password
– La cryptographie quantique:
http://www.geneve.ch/chancellerie/communiques/2007/20071011.asp ou bien
http://www.unige.ch/communication/archives/2007/swissQuantum.html
Ses caractéristiques :
– Ce système est mono-alphabétique.
– Les lettres gardent la même position au sein du cryptogramme.
– Il y a un nombre réduit de clés (le décalage) ce qui permet de toutes les tester et rend ce système peu sûr.
– Le message est par ailleurs sensible aux analyses fréquentielles 2 et donc facile à casser … si on sait dans
quelle langue il est composé ! En revanche, si le message est composé dans une langue non-européenne
et non connue à l’avance, le travail devient considérablement plus difficile. 3
1.2 Approche avec un tableur
On scinde bien chacune des étapes : le message clair, le message clair numérisé en ASCII (décalé de façon à ce
que A = 0) le message crypté en ASCII et enfin le cryptogramme.
Voici les formules utilisées :
Clef 6
Message en clair I
Cryptogramme =CAR(B5+65)
2 L’analyse fréquentielle est une méthode particulière de cryptanalyse (tentative de déchiffrement sans avoir la clé).
3 L’usage de transformations (comme le « javanais » qui « pollue » la statistique d’emploi des lettres) peut aussi compli-
quer notablement la cryptanalyse du code.
© Ministère de l’éducation nationale (DGESCO – IGEN)
ISN – Terminale série scientifique Éléments de cryptographie Page 7
1.3 Algorithme et programme en Python ou Java (pour un mini-projet).
Principe de l’algorithme :
Pour simplifier le travail et ne pas induire une faille de sécurité trop importante, on se limite dans un premier
temps à un message tout en majuscules, sans accent, avec peu de séparateurs : on pourra ainsi utiliser le caractère
@ pour coder un espace.
La clé correspond alors au décalage ; elle est comprise entre 1 et 25.
Chaque caractère est codé par son code ASCII auquel on a enlevé le code ASCII de "A" (65) de façon à ce que A
soit codé par 0, B par 1…(ceci permet de clarifier la notion de modulo 26).
Principe du chiffrement : caractère crypté = caractère initial + k (modulo 26).
Principe du déchiffrement : caractère décrypté = caractère – k +26 (modulo 26).
Principe de l’algorithme de cryptage :
– Saisir le texte en clair.
– Saisir la clé de cryptage.
– Numériser le texte en retranchant le code ASCII de "A", ainsi A sera codé par 0, B par 1, ...
– Pour chaque caractère du texte en clair, appliquer le chiffrement et construire le cryptogramme
(prévoir aussi le cas de l’espacement).
– Affichage du cryptogramme.
En Python 3.2.2 cela peut donner :
# Le chiffre de César simple en Python 3.2.2
import os
def Chiffrement(caractere,clef):
if caractere==-33: # Cas du caractère d’espacement
return -1 # -1 + 65 = 64 : cela donnera le caractère @
else:
if caractere>=0 and caractere<=25:
return (caractere+clef)%26 # Réalise le décalage dans la cas d’une majuscule non
accentuée, retourne un entier
else:
return caractere # Pas de chiffrage en dehors des majuscules non accentuées
et de l’espace
MessageClair = input(’Texte à crypter ?’) # On demande le message à coder, c’est une chaîne de
caractères.
clef = int(input(’Clef de cryptage ?’)) # On demande la clef de cryptage, c’est un entier
MessageInter =[] # Cette variable list contiendra le message en ascii décalé de
65 (code ASCII de A).
MessageInter = [ord(i)-65 for i in MessageClair]
MessageCode=’’ # chaîne de caractères qui contiendra le cryptogramme.
print ("Message initial en ascii décalé", MessageInter)
for i in MessageInter:
MessageCode=MessageCode+chr(Chiffrement(i,clef)+65)
print ("Voici le message codé", MessageCode)
os.system("pause")
Variante : on pourra, pour des élèves rapides et performants, proposer un traitement plus complexe : coder les
espaces et les signes typographiques avec le caractère @, remplacer les minuscules par les majuscules corres-
pondantes, les accents par les lettres sans accent associées (on utilisera par exemple une table de transcodage).
Remarque : que se passe-t-il pour une clé égale à 13 ? (système nommé Rot 13, destiné à dissimuler les textes
aux regards indiscrets)
1.4 Une alternative : le codage affine ; l’arithmétique en plus !
Le principe du chiffrement :
On ne décale plus les lettres d’un nombre fixe. On utilise maintenant une fonction affine pour réaliser ce déca -
lage.
Appelons x le code ASCII (modifié de façon à ce que A = 0 ; B = 1) d’une des lettres du message en clair.
On chiffre cette lettre en calculant le reste de la division euclidienne par 26 de l’expression affine ax + b (soit ax
+ b mod 26).
Exemple : prenons comme exemple la fonction de cryptage f(x) = 17 x + 3 et pour lettre, la lettre G : son code
ASCII est de 71 qui donne après modification 6.
f(6) = 105 = 4* 26 + 1. Le reste de la division est 1. Cette lettre G sera donc chiffrée par le nombre y = 1.
Le passage au tableur n’est pas plus compliqué, la clé est un couple (a;b).
© Ministère de l’éducation nationale (DGESCO – IGEN)
ISN – Terminale série scientifique Éléments de cryptographie Page 9
La formule de la ligne 3 devient simplement : =MOD(B4*$B$1+$C$1;26)
(la clé est entrée dans les cases B1 et C1)
Un déchiffrement plus délicat : l’arithmétique en secours, l’expérimentation en sou-
tien !
Pour déchiffrer le message, il faut trouver l’antécédent x de y par l’application qui, à un entier x compris entre 0
et 25, associe le reste de 17 x+3 dans la division par 26.
On a donc: 17 x+3≡ y[ 26]
Pour isoler x, nous sommes confronté à deux obstacles : le 3 et le 17.
Le problème du 3 est simple: 17 x≡ y−3[26] (On peut procéder autrement, en ajoutant 23 par exemple...).
Pour le 17, le problème est plus complexe (on cherche l’inverse de 17 modulo 26, c’est à dire un nombre c tel
que: 17c admette 1 pour reste dans la division par 26).
De façon théorique, le théorème de Bachet-Bézout indique qu’il est possible de trouver c puisque 17 est premier
avec 26. L’algorithme d’Euclide étendu permet alors de trouver une solution.
Mais on peut sans problème tenter expérimentalement de chercher un tel entier c ; deux lignes d’un tableur vont
donner une solution :
Cette évolution du code de César est-elle beaucoup plus sûre ? Combien existe-t-il de clés possibles ? (312...)
Autant d’interrogations permettant de moduler le niveau de cette partie…
Comment à partir de ces deux documents, reconstituer les étapes et construire un algorithme ?
Adresse à consulter : http://www.cryptage.org/chiffre-che-guevara.html
http://mauro-israel.over-blog.com/article-principes-simples-de-cryptographie-expliques-
72433552.html
4 / Le principe de Kerckhoffs
Le concept de clé : c’est un paramètre de l’algorithme de chiffrement. Il peut donc être changé sans modifier
l’algorithme. Un même algorithme peut alors être employé par plusieurs personnes qui utilisent des clés diffé -
rentes.
Par exemple, pour le chiffre de César, on modifie le nombre de positions par lequel on décale chaque lettre dans
l’alphabet. En ce sens, ce nombre peut être considéré comme une clé.
Le principe de Kerckhoffs s’énonce ainsi : « La sécurité d’un cryptosystème à clé secrète doit résider dans le
secret de la clé. Les algorithmes utilisés doivent pouvoir être rendus publics »
Voir ici pour plus de détails :
http://www.securite-
informatique.gouv.fr/autoformations/cryptologie/co/cryptologie_CH01_SCH01_U02.html