
Lycée Charles Peguy −Année scolaire 2020-2021 Terminale NSI
# Python peut effectuer l'opération XOR directement avec les entiers, il n'est
# donc pas nescessaire de convertir en binaire le message
# L'opérateur XOR s'effectue avec ^ en python
def c(message,cle):
# Conversion des textes en codes UTF-8
message_clair =texte_2_UTF(message)
tab_cle_initial =texte_2_UTF(cle)
tab_cle =[]
n,m =len(message_clair),len(tab_cle_initial)
# Répète la clé autant de fois que nescessaire
for iin range(n):
tab_cle.append(tab_cle_initial[i%m])
message_chiffre =[]
# Effectue le XOR entre le message et la clé.
for iin range(n):
message_chiffre.append(message_clair[i] ^tab_cle[i])
return message_chiffre
assert c("MESSAGE","CLE")== [14,9,22,16,13,2,6]
Fichier : TermNSI/Protocoles_securises/codage_XOR.py
1. Modifier la fonction cpour qu’elle renvoie le message chiffré (avec les caractères) . On pourra utiliser la
fonction chr.
2. Écrire une fonction dqui prend en paramètres le message chiffré (sous la forme d’une chaine de caractères)
et la clé et qui renvoie le message déchiffré sous forme de caractères.
3. Testez vos fontions avec vos camarades en échangeant des messages chiffrés.
III CHIFFREMENT ASYMÉTRIQUE
Le chiffrement symétrique fonctionne bien, mais dans la pratique un problème peut se poser. En effet pour com-
muniquer, Alice et Bob doivent se communiquer la clé de chiffrement. Or, si ces 2 personnes communiquent de façon
chiffrée, c’est que leurs moyens de communications ne sont pas sûrs. Il faut donc trouver un moyen de communi-
quer la clé de chiffrement sans quelle soit interceptée.
Des solutions, plus ou moins sécurisées ou pratiques, existents :
— échanger la clé par mail
— échanger la clé par téléphone
— échanger la clé par un support physique ...
Mais dans tous les cas, un risque d’interception de la clé existe, car il y a un échange d’information. Une solution
a été développée dès les années 1970, d’abord de manière privée par des services secrets, puis dans la recherche
académique. C’est le principe du chiffrement asymétrique.
La cryptographie asymétrique est un domaine de la cryptographie où il existe une distinction entre des données
publiques et privées, en opposition à la cryptographie symétrique où la fonctionnalité est atteinte par la possession
d’une donnée secrète commune entre les différents participants.
Voyons deux exemples de chiffrements asymétriques : les puzzles de Merkle et le système RSA.
III.A. LES PUZZLES DE MERKLE
Supposons qu’Alice et Bob veulent communiquer en utilisant une clé secrète commune. Pour établir cette clé, Bob
envoie à Alice un message qui consiste en un grand nombre de puzzles, chacun assez petit pour qu’Alice puisse
le résoudre par attaque par force brute. Les puzzles sont de la forme d’un message chiffré avec une clé inconnue,
donc la clé est assez courte.
Bob envoie tous les messages à Alice. Elle en sélectionne un au hasard et le résout par force brute. C’est à dire quelle
teste toutes les clés posible de façon à déchiffrer le message. Le message chiffré contient un identificateur (du choix
d’Alice) et une clé secrète, dite clé de session. Alice renvoie l’identificateur à Bob, qui sait alors également quelle
est la clé de session.
Cours : Protocoles sécurisés Page 4 sur 9