Le web sécurisé - 2

Cette situation pose les problèmes suivants :

  • Comment empêcher une personne qui intercepte le courrier de récupérer le code confidentiel ?
  • Comment Alice peut-elle être sûre que c’est bien Bob qui lui demande le code ?

Nous allons commencer par répondre à la première question :

II. Comment empêcher une personne qui a accès au courrier de lire le code ?

Alice et Bob décident de chiffrer (ou crypter) leur message.

Visionnez la vidéo suivante :

Lien Youtube : https://youtu.be/A6zzI16leSs

Exercice 1 : Méthode de César

Alice choisit le décalage 4. C’est à dire que A est remplacé par E, B par F, … , Z est remplacé par D. Pour les chiffres 0 est remplacé par 4, 1 par 5, … , 9 est remplacé par 3. Les espaces sont supprimés.

  1. Crypter le message suivant : “ton code est 1234”
  2. Décrypter le message suivant : “wepyxfsf”

Exercice 2 : Un exemple de chiffrement symétrique

Nous allons utiliser la bibiothèque pycrypto : https://pycryptodome.readthedocs.io/en/latest/index.html

La methode de chiffrage utilisée ici est AES256. Elle est trop complexe d’un point de vue mathématique pour qu’on en explique tous les détails. Ce qui nous intéresse c’est qu’après une phase d’initialisation qui précise les normes utilisées, ainsi que la clé de chiffrage, on dispose de deux fonctions :

  • l’une qui permet de chiffref
  • l’autre qui permet de déchiffrer
  1. Exécutez le code contenu dans le fichier cryptoAES.py.
  • Quelle(s) remarque(s) pouvez-vous faire sur le message chiffré ?
  • Quel est le type des variables message_chiffre et message_dechiffre ?
  1. Vous allez travailler en binôme avec votre voisin. Modifiez le code précédent pour qu’il écrive le contenu de la variable message_chiffre dans un fichier nommé message.txt.
  2. Échangez vos fichiers avec votre binôme à l’aide du réseau ou d’une clé USB.
  3. Modifiez votre code pour pouvoir lire le fichier message.txt et vérifiez que vous pouvez décoder le message à l’aide des fonctions précédentes.

Aide : vous pourrez utiliser les fonctions suivantes (contenues dans le fichier cryptoAESaide.py) :

def ecrire_fichier(variable):
    with open('message.txt', 'wb') as fichier:
        fichier.write(variable)
    return
    
def lire_fichier():
    with open('message.txt', 'rb') as fichier:
        msg = fichier.read()
    return msg

Remarquez le paramètre b transmis à open et write qui permet d’écrire du contenu numérique et non du texte dans le fichier.