Adloun

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 R est . 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.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre