Newer
Older
# <center><p style="color: Dodgerblue;"> Les chiffrements symétriques mono-alphabétiques </p></center>
!!! info "Chiffrements mono-alphabétiques"
- Dans méthode de cryptographie basée sur un chiffrement par **substitution mono-alphabétique**, la lettre d'origine n'est remplacée que par une unique autre lettre.
- Ce sont des chiffrements faciles à casser.
## <u>I. Le chiffrement de César </u>
{ width=40%; : .center }
*« Il y employait, pour les choses tout à fait secrètes, une espèce de chiffre qui en rendait le sens inintelligible (les lettres étant disposées de manière à ne pouvoir jamais former un mot), et qui consistait, je le dis pour ceux qui voudront les déchiffrer, à changer le rang des lettres dans l'alphabet, en écrivant la quatrième pour la première, c'est-à-dire le d pour le a, et ainsi de suite. »*
— Suétone, Vie des douze Césars, (environ an 110)
!!! info "Principe du chiffrement de César:"
**La méthode de Jules César** pour ses correpondances secrétes consistait à choisir un entier `n` constituant la clé et à décaler chaque lettre du message initial de `n` lettres dans l'alphabet (en recommençant à "A" si le décalage fait dépasser "Z").
Nous pouvons appeler "clé" le décalage `decalage` de cet exercice.
La connaissance de cette clé permet-elle de déchiffrer un message chiffré ?
Pour déchiffrer, il suffit d'utiliser le même procédé avec la clé opposée, par exemple -4 si on a chiffré avec 4.
### <u>1.1. Les fonctions ord() et chr().</u>
La fonction `ord(n)` prend un caractère en argument et renvoie le code Unicode caractère lui correspondand sous forme d'un entier.
La fonction `chr(n)` prend un code Unicode caractère sous forme d'un entier en argument et renvoie le caractère correspondant.
!!! question "Executer le script ci-dessous:"
### <u>1.2. Le dictionnaire de chiffrement</u>
!!! question "Exécuter le script ci-dessous:"
{{IDE('scripts/c_2')}}
### <u>1.3. La fonction de chiffrement</u>
!!! question "Compléter le script ci-dessous:"
### <u>1.4. La fonction de déchiffrement</u>
!!! question "Compléter le script ci-dessous:"
{{IDE('scripts/c_4')}}
!!! warning "Validité du chiffrement de César"
- Si on utilise 26 lettres majuscules, il n’existe que 25 clés possibles! On peut le casser très facilement par la [force brute](https://www.cnil.fr/fr/definition/force-brute-attaque-informatique){:target="_blank" }
- Seul, il n'offre aucune sécurité de communication, à cause du très faible nombre de clés, ce qui permet d'essayer systématiquement celles-ci quand la méthode de chiffrement est connue, mais aussi parce que, comme tout encodage par substitution monoalphabétique, il peut être très rapidement « cassé » par **analyse de fréquences** (certaines lettres apparaissent beaucoup plus souvent que les autres dans une langue naturelle).
## <u>II. Le chiffrement par substitution </u>
!!! info "Principe du chiffrement par substitution"
On remplace une lettre par une autre de l’alphabet, on a donc 26! ≈ 4×10<sup>26</sup> clés possibles.
Avec la clé suivante:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
AZERTYUIOPQSDFGHJKLMWXCVBN
le message `SUBSTITUTION`devient `LWZLMOMWMOGF`.
!!! warning "Validité du chiffrement par substitution"
- Le chiffrement par substitution peut être cassé facilement par [analyse fréquentielle](https://fr.wikipedia.org/wiki/Analyse_fr%C3%A9quentielle){:target="_blank" }
## <u>III. Le chiffrement affine </u>
### <u>3.1. Le chiffrement linéaire.</u>
!!! info "Le chiffrement linéaire"
**Le chiffrement linéaire consiste à multiplier** le nombre correspondant à la lettre par un même nombre, que l’on appellera
également clé de codage.
Chacune des 26 lettres est associée à l’un des entiers de 0 à 25, selon le tableau de correspondance suivant.
{ width=100%; : .center }
Le cryptage affine se fait à l’aide d’une clé, qui est un nombre entier k fixé, compris entre 1 et 25. Pour crypter une lettre donnée on suit le processus ℘ suivant:
- on repère le nombre x associé à la lettre dans le tableau de correspondance précédent
- on multiplie ce nombre x par la clé k
- on calcule le reste r de la division euclidienne du nombre obtenu par 26
- on repère la lettre associée au nombre r dans le tableau de correspondance, qui devient la lettre cryptée
Par exemple, pour crypter la lettre P avec la clé 𝑘=11 :
- le nombre x associé à la lettre P est le nombre 15
- on multiplie 15 par la clé k, ce qui donne 11×15=165
- on calcule le reste de la division euclidienne par 26 : on obtient 165 % 26 = 9
- on repère finalement la lettre associée à 9 dans le tableau, c’est-à-dire J
Ainsi avec la clé k = 11, la lettre P est cryptée en la lettre J.
!!! question "Questions: "
<ol>
<li>Quel est le cryptage de la lettre S avec la clé 3? </li>
- Le nombre associée à la lettre S est 18
- On multiplie 18 par la clé 3 : 18×3 = 54
- On calcule le reste de de la division euclidienne du nombre obtenu par 26: 54%26 = 2
- la lettre associée est au nombre 2 est le C
<li>En quoi la lettre A constitue-t-elle un cas particulier dans le processus de cryptage ?</li>
Lorsque la lettre est A, d’indice x = 0, pour tout 𝑘∈[1,25],𝑘×𝑥=0 et le reste de la division euclidienne de 𝑘×𝑥 par 26 est 0. La lettre A est cryptée par elle-même, quelle que soit la clé de cryptage utilisée. Elle est invariante.
<li>Dans le cas où la clé est égale à 11, crypter le mot MIRO.</li>
Pour la lettre M d’indice 12, on a 12×11=132 et 132 % 26=2, indice correspondant à la lettre C.
Pour la lettre I d’indice 8, on a 8×11=88 et 88 % 26=10, indice correspondant à la lettre K.
Pour la lettre R d’indice 17, on a 17×11=187 et 187 % 26=5, indice correspondant à la lettre F.
Pour la lettre O d’indice 14, on a 14×11=154 et 154 % 26=24, indice correspondant à la lettre Y.
Le mot MIRO est donc crypté par le mot CKFY.
!!! question "Compléter le script ci-dessous:"
Vous réutiliserez la fonction `dico_chiffrement`
!!! danger "BILAN"
Il faut enfin réaliser ***une fiche de cours*** (sur une feuille simple) en faisant apparaitre les notions importantes de ce cours :
- Connaitre le principe du chiffrement de César.
- Connaitre le principe du chiffrement par substitution.
- Connaitre le principe du chiffrement affine.
- Connaitre le principe du chiffrement de Vigenere.