I. Utiliser des portes XOR, base de la cryptographie moderne :
>> Activité pédagogique introductive fournie en classe.
>> Vidéo 1a : La cryptographie dans le domaine de la sécurité informatique : le métier d’expert en cyber-sécurité.
>> Vidéo1b : Panorama des métiers de la cybersécurité
>> Vidéo 2 : fonctionnement chronologique de la cryptographie AES
II. Histoire de la cryptographie DES / AES
>> Bande dessinée : Approche histoire de la création des standards de cryptographie moderne. Accès
>> Vidéo 3 : un standard de cryptographie pour les gouverner tous !
Travail 1 : Historique
(1 pt) Réaliser un diaporama, à l’aide des documents précédents et d’une recherche sur Internet, retraçant l’histoire de création des standards de cryptographie DES et AES.
III. Entretien d’embauche pour devenir expert en cybersécurité dans une banque
Fiche de poste : Expert/e en sécurité informatique
Étudier la fiabilité du système d’information d’une entreprise et en assurer la sûreté, telle est la mission de l’expert en sécurité informatique. Un défi pour ce spécialiste, à l’heure où les échanges de données se multiplient.
Source : http://www.onisep.fr/Ressources/Univers-Metier/Metiers/expert-experte-en-securite-informatique
Vous postulez en tant qu’ingénieur en cybersécurité dans un établissement bancaire. Afin de tester si vous êtes assez qualifié pour ce travail, votre futur employeur vous propose une rencontre.
- Employeur : « Bonjour, très heureux de vous rencontrer ! Suite à de nombreuses attaques sur nos systèmes informatiques, nous cherchons un expert en cybersécurité pour nous protéger. Je vais vous poser quelques questions pour tester vos connaissances et savoir si vous êtes qualifié pour ce poste. »
- Vous : « Trop facile, j’ai eu M. Chardine en NSI ! »
- Employeur : « hum…. oui …. Je vais vous …»
- Vous : « Une fois, j’ai même trouvé le code secret de la tirelire de ma petite sœur, alors aucune faille ne peut me résister ! »
- Employeur : « heu… nous aurions besoin de sécuriser des transferts d’informations en utilisant le protocole AES, pouvez-vous faire cela en Python ? Voici les documents vous indiquant les étapes à suivre… bon courage ! »
Travail 2 : Les portes XOR (1 pt)
Créer un algorithme avec Python qui permet d’effectuer un XOR sur un chaîne de caractère (comme dans l’activité papier). Documenter avec un diaporama. Voici le début du programme.
Texte = "NSIFOREVER"
Cle = 0b01010010
TexteValeurAscii = []
Cipher = []
L’algorithme doit afficher
Lettre : N | XOR : 0b11100
Lettre : S | XOR : 0b1 Etc…
Vous utiliserez la table ASCII pour transformer chaque lettre en nombre décimaux. Vous afficherez le texte crypté sous forme de nombres binaires avec la fonction bin().
On utilise l’opérateur ^ pour exécuter un XOR en python. L’opérateur XOR ^ fonctionne avec des nombres de n’importe quelle base, inutile de convertir en binaire au préalable.
A l’aide des documents suivants, mettez en œuvre les différentes étapes de la cryptographie AES. Documenter chaque étape dans un diaporama. Vous utiliserez les vidéos 2 et 4 et les indices suivant pour réaliser en python les différentes étapes du standard AES.
Vidéo 4 : Explication du fonctionnement de la cryptographie AES
Compléter les scripts suivants : Chaque début de script reprend l’état de la matrice 4×4 de l’étape précédente, ce qui permet de valider la justesse de votre algorithme. Les travaux suivants peuvent donc être effectués dans le désordre (même si je vous conseille de terminer par MixColumns)
Hypothèse simplificatrice : Nous utiliserons, non pas la base hexadécimale, mais la base décimale afin de vous permettre de vérifier plus facilement à la main les étapes de vos algorithmes.
Travail 3.a : (1 pt) Etape initiale addRoundKey
>> Script de départ : addRoundKey
Indice : Reprendre le travail précédent et effectuer un XOR entre deux cases du texte et de la clé, positionnées aux mêmes coordonnées. Il faut utiliser une double boucle for imbriquée avec les variables i et j pour parcourir le tableau à deux dimensions. Pour accéder à une valeur d’un tableau à 2 dimensions, on utilise la notation Texte[i][j]
Travail 3.b : (1 pt) Etape SubBytes
>> Script de départ : SubBytes
Indice : Il existe différentes manières de procéder pour isoler les deux chiffres composant les nombres de chaque case.
- Une méthode consiste à couper le nombre en deux parties composées d’un seul chiffre. Nous l’avons déjà fait pour sélectionner un caractère d’une chaîne de caractère.
- Une autre méthode consiste à utiliser une division euclidienne et prendre la partie entière d’un côté et le reste de l’autre côté. Utilisez alors la fonction int() pour transformer les chaînes de caractères en entier pour réaliser la division euclidienne avec les opérateurs // et % pour trouver la partie entière et le reste).
Travail 3.c : (1 pt) Etape ShiftRows
>> Script de départ : ShiftRows
Il faut que votre algorithme puissent fonctionner pour une matrice de n’importe quelle taille, pas uniquement pour une matrice 4×4.
Indices : Il existe de nombreuses méthodes. On peut par exemple utiliser les méthodes .append() et .remove() sur une liste pour réaliser les décalages.
Travail 3.d : (2 pts) Etape MixColumns
L’opération correspond à une multiplication de matrice. C’est une opération relativement simple dont vous trouverez la méthode ci-dessous et une calculatrice en ligne pour vérifier vos résultats ici.
Etape 1 : D’abord à la main : Réaliser la multiplication à la main de la matrice Text et de la matrice de Gallois (que vous trouverez dans la vidéo 2) et vérifier le résultat avec la calculatrice en ligne. Voici la méthode avec les matrices Text et la matrice de Gallois:

Etape 2 : Réaliser l’implémentation en Python. Si vous obtenez les mêmes résultats que précédemment, remplacez vos + par des ^ et c’est terminé 🙂
Conclusion : Dans ce projet, nous avons choisi une clé fixe pour simplifier, il faut savoir que la clé évolue elle aussi à chaque tour selon une démarche similaire. Pour en savoir plus, consulter cette animation.
Travail 4 : algorithme sur la clé. (pour les élèves rapides)
En parallèle de chaque round, la clé évolue également selon les étapes suivantes :
>> Script de départ : algo-cle (clic droit > enregistrer sous. Puis ouvrir dans Pyzo
Ecrit par Picassciences
Poster un commentaire