Révisions Cryptographie#
Cette page rassemble des exercices de révision couvrant tous les objectifs de l'examen : chiffrement symétrique (César, substitution, masque jetable), chiffrement asymétrique (RSA), leurs vulnérabilités, ainsi que les mots de passe et le hachage. Pour les calculs de puissance modulaire (RSA), aidez-vous de WolframAlpha.
Symétrique ou asymétrique ?#
Exercice 28#
Pour chaque affirmation, indiquez s'il s'agit du chiffrement symétrique ou asymétrique.
On utilise une même clef secrète pour chiffrer et déchiffrer
On chiffre avec une clef publique et on déchiffre avec une clef privée
RSA
Le chiffrement de César et le masque jetable
Permet de communiquer sans s'être partagé de secret au préalable
Beaucoup plus rapide, utilisé pour chiffrer de grandes quantités de données
Chiffrement de César#
Exercice 29#
Chiffrez le message BONJOUR avec le chiffrement de César et la clef \(k = 5\).
Texte chiffré :
Exercice 30#
Vous recevez le texte chiffré ZHSBA, chiffré avec César et la clef \(k = 7\).
Déchiffrez-le.
Texte en clair :
Exercice 31#
Vous savez que le texte en clair CHAT a été chiffré en MRKD avec César.
Quelle clef \(k\) a été utilisée ?
Clef \(k\) :
Exercice 32#
Combien de clefs faut-il tester au maximum pour casser un chiffrement de César par force brute ?
Nombre de clefs :
Le texte ci-dessous a été chiffré avec César, mais vous ne connaissez pas la clef. Exécutez l'attaque par force brute pour retrouver la clef \(k\) et le texte en clair.
def cesar_chiffrer(texte, k):
resultat = ""
for char in texte.upper():
if char.isalpha():
ascii_a = ord('A')
pos = ord(char) - ascii_a
nouvelle_pos = (pos + k) % 26
resultat += chr(ascii_a + nouvelle_pos)
else:
resultat += char
return resultat
def cesar_dechiffrer(texte_chiffre, k):
return cesar_chiffrer(texte_chiffre, -k)
c = "KXRIDXGT"
for k in range(1, 26):
print(f"k={k} : {cesar_dechiffrer(c, k)}")
Clef \(k\) trouvée :
Chiffrement par substitution#
Exercice 33#
Déchiffrez le message WKQCG, chiffré par substitution avec la clef suivante :
Clair |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Chiffré |
Q |
W |
E |
R |
T |
Y |
U |
I |
O |
P |
A |
S |
D |
F |
G |
H |
J |
K |
L |
Z |
X |
C |
V |
B |
N |
M |
Texte en clair :
Exercice 34#
Questions sur l'analyse de fréquence.
La force brute est réaliste contre la substitution (il y a \(26!\) clefs possibles)
Le chiffrement par substitution conserve les fréquences d'apparition des lettres
C'est cette conservation des fréquences qui permet de casser le chiffrement
Quelle est la lettre la plus fréquente dans un texte en français ?
Lettre :
Masque jetable (One-Time Pad)#
Exercice 35#
Chiffrez le message \(t =\) Hi avec le masque jetable et la clef \(k =\) Ax.
Convertissez chaque caractère en binaire à l'aide de la table ASCII
Effectuez l'opération XOR bit à bit
Caractère |
ASCII |
Binaire |
Caractère |
ASCII |
Binaire |
|
|---|---|---|---|---|---|---|
|
72 |
|
|
65 |
|
|
|
105 |
|
|
120 |
|
Texte chiffré \(c\) (groupes de 8 bits séparés par un espace) :
Chiffrement asymétrique (RSA)#
Exercice 36#
On génère une paire de clefs RSA avec les nombres premiers \(p = 5\) et \(q = 11\). On a donc \(n = p \times q = 55\).
a) Calculez \(\phi(n) = (p-1) \times (q-1)\).
\(\phi(n)\) :
b) Trouvez le plus petit nombre premier \(e\) (différent de 2) qui ne divise pas \(\phi(n)\).
\(e\) :
c) Trouvez \(d\) tel que \((e \times d) \mod \phi(n) = 1\), avec \(20 < d < 50\).
Sur WolframAlpha, vous pouvez taper PowerMod[3, -1, 40].
\(d\) :
d) Quelle est la clef publique ?
Clef publique \((n\) \(e)\) sans virgule :
e) Quelle est la clef privée ?
Clef privée \((n\) \(d)\) sans virgule :
Exercice 37#
Avec la clef publique \((n, e) = (55, 3)\), chiffrez le message \(t = 4\) à l'aide de la formule \(c = t^e \mod n\).
Valeur chiffrée \(c\) :
Exercice 38#
Vous recevez le message chiffré \(c = 13\). Avec votre clef privée \((n, d) = (55, 27)\), déchiffrez-le à l'aide de la formule \(t = c^d \mod n\).
Valeur en clair \(t\) :
Mots de passe et hachage#
Exercice 39#
Vrai ou faux ?
Un site sérieux stocke les mots de passe en clair dans sa base de données
Une fonction de hachage est irréversible : on ne peut pas retrouver l'entrée à partir du hash
La même entrée produit toujours le même hash
Un mot de passe long et varié résiste mieux à une attaque par force brute
Un mot de passe comme
soleilrésiste bien à une attaque par dictionnaire
Exercice 40#
Une attaque teste une liste de mots courants (prénoms, mots du dictionnaire, mots de passe répandus) plutôt que toutes les combinaisons possibles. Comment s'appelle cette attaque ?
Nom de l'attaque :
Exercice 41#
Citez deux caractéristiques d'un mot de passe sécurisé, capable de résister à la fois à une attaque par force brute et par dictionnaire.
Solution
Longueur : un mot de passe long augmente énormément le nombre de combinaisons à tester en force brute.
Variété des caractères : mélanger minuscules, majuscules, chiffres et caractères spéciaux multiplie le nombre de combinaisons possibles.
Imprévisibilité : éviter les mots courants, prénoms et dates, afin de résister aux attaques par dictionnaire.
(Deux de ces trois caractéristiques suffisent.)