- Comprendre l'importance du chiffrement ;
- Mettre en place des solutions de chiffrement ;
Les questions se répondent sur feuille (ou word).
La programmation (à la fin) se fait sur python.
TP2 - Vernam

Le chiffrement de Vernam est une méthode de chiffrement symétrique utilisant une clé de chiffrement utilisée qu'une seule fois, appelée masque jetable
.
En 1917, Gilbert Vernam, ingénieur chez AT&T Bell Labs (entreprise de télécommunication) chargé de la sécurité des téléscripteurs, met au point un dispositif permettant de sécuriser les télécommunications.
Son objectif était de créer un système permettant d'altérer le signal électrique d'une communication avant sa transmission sur la ligne, pour la rendre illisible pour les individus la captant.
Lors de la crise des missiles à Cuba, ce système a été adopté par les États-Unis et l'URSS pour communiquer, avec ce qui s'appelait le téléphone rouge
.
Le système utilise une bande avec des trous, correspondant à des lettres, et laisse passer le courant en fonction de la bande chiffrée, et du message.
Pour chiffrer, l'opérateur xor
(ou exclusif) est utilisé. Une fois le message transmis, la bande qui sert de clé est changée.
Portes logiques
Les portes logiques sont des opérateurs binaires prenant des bits en entrée, et dont la sortie diffère selon l'opération effectuée. On distingue 6 grandes portes logiques (NON : NOT, ET : AND, OU : OR, NON ET : NAND, NON OU : NOR, OU EXCLUSIF : XOR), dont les valeurs sont recensées dans des tables de vérité.
A | NOT A |
---|---|
0 | 1 |
1 | 0 |
Prend une entrée, et donne l'inverse de sa valeur.
A | B | A AND B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
La sortie est à 1 si et seulement si toutes les entrées sont à 1.
- Recopier et compléter la table OR selon la valeur des portes logiques :
A B A OR B 0 0 0 1 1 0 1 1 - Recopier et compléter la table NAND selon la valeur des portes logiques :
A B A NAND B 0 0 0 1 1 0 1 1 - Recopier et compléter la table XOR selon la valeur des portes logiques :
A B A XOR B 0 0 0 1 1 0 1 1 - Recopier et compléter la table suivante selon la valeur des portes logiques :
A B A NAND ( B XOR C) 0 0 0 1 1 0 1 1
Opérations logiques
Les portes logiques sont utilisées pour effectuer des opérations avec des nombres. Les opérations fonctionnent comme les opérateurs mathématiques, en appliquant l'opérateur de la droite vers la gauche, avec le même système de retenue.
- Effectuer l'opération 0011011101 OR 1001100110; quel est le résultat ?
- Effectuer l'opération 0011011101 NAND 1001100110; quel est le résultat ?
- Effectuer l'opération 0011011101 XOR 1001100110; quel est le résultat ?
Traduction binaire-hexadécimal
Pour chiffer avec Vernam, il est important d'avoir des nombres en binaire. Vernam se sert des valeurs binaires de lettres pour appliquer un masque (lui-même en binaire), d'après les valeurs de la table ASCII.
On donne la table ASCII réduite en hexadécimal :

Qui se lit de gauche à droite, et de haut en bas.
La lettre 'a'
possède la valeur hexadécimale 61,puisqu'elle apparaît dans la rangée 6, et dans la colonne 1.
La conversion binaire d'une valeur hexadécimale consiste à convertir chaque valeur hexadécimale séparément en binaire en faisant des groupes de 4 bits, et à regrouper l'ensemble de ces groupes.
Pour la lettre 'a'
, sa valeur hexadécimale est 61.
6 donne 0110 en binaire, et 1 donne 0001 en binaire.
En assemblant, on obtient : 01100001.
- Donner la valeur binaire des lettre 'N', 'S' et 'I'.
- Quelles lettres donnent les valeurs suivantes : 01001111 et 01101011 ?
Chiffrement de Vernam
Voici l'algorithme de chiffrage de Vernam :
- On convertit notre message en binaire ;
- On choisit une clé avec des lettres aléatoires,
de même longueur
que notre message ; - On convertit la clé en binaire ;
- On effectue l'opération
xor
entre les 2 ; - le résultat obtenu est le message chiffré, que l'on peut déchiffrer avec la même clé.
On souhaite chiffrer le mot TERM
avec la clé NSIN
.
- Transformer le mot à chiffrer en binaire, ainsi que la clé.
- Exécuter l'opération
XOR
entre la clé et le mot. - À partir du résultat, faire des groupes de 8 bits, et les convertir en hexadécimal. Si le code hexadécimal existe dans la table, donner sa lettre correspondante.
- Que donne comme mot la valeur hexadécimale suivant :
21 15 30 00 0A
avec comme clé "StDie" ?
Programmation
- Écrire une fonction
xor(a,b)
qui prend 2 entiers ayant comme valeur 0 ou 1, et qui retourne la valeur du xor entre a et b. - Écrire une fonction
chartobin(lettre)
qui prend une lettre en paramètre et retourne sa valeur binaire (en chaine de caractères). - Écrire une fonction
bintochar(codeBin)
qui prend un code binaire en paramètre et retourne sa lettre dans la table ascii. - Écrire une fonction
vernam(message, cle)
qui prend un message à chiffrer et une clé en paramètre, et retourne le résultat du chiffrement de Vernam.