NSI (terminale) · Chapitre 14 · Exercice d'entraînement
Un chiffrement symétrique par OU exclusif
Réseaux : protocoles, routage et sécurité · Sécurisation des communications · niveau 2
Énoncé
Un chiffrement symétrique par OU exclusif. Le OU exclusif (XOR) de deux bits vaut si les bits sont différents et sinon ; on le note . En Python, l'opérateur accent circonflexe l'applique bit à bit à deux entiers (voir le code ci-dessous). On chiffre un texte en remplaçant chaque caractère, de code ord(c), par le code , où est un nombre de la clé (la clé est une liste de nombres, réutilisée en boucle).
def chiffrer(texte, cle):
return [ord(texte[i]) ^ cle[i % len(cle)] for i in range(len(texte))]
def dechiffrer(codes, cle):
return "".join([chr(codes[i] ^ cle[i % len(cle)]) for i in range(len(codes))])
- Le code de
Rest . Calculer à la main , en écrivant les deux nombres en binaire sur huit bits. - Justifier que, pour tous entiers et , . Pourquoi ce chiffrement est-il dit symétrique ?
- On chiffre
"RDV 14h"avec la clé[23, 5, 42]. Qu'obtient-on en déchiffrant avec la bonne clé ? avec la clé[23, 5, 43]? - Une classe de élèves veut que chaque paire d'élèves puisse échanger des messages secrets. Combien faut-il de clés secrètes différentes avec un chiffrement symétrique ? Combien de paires de clés avec un chiffrement asymétrique ? Avec quelle clé Alice chiffre-t-elle alors un message pour Bob ?
Un exercice à chercher : son corrigé n'est pas publié. Sur Adloun, le tuteur guide par questions, sans donner la réponse.