Chiffrer votre nom et votre prénom en utilisant la méthode ROT13.
Déchiffrer le message suivant (vous pouvez ne faire que les premiers mots et utiliser rot13.com pour le reste) :
Tm bmzum « kpqnnzmumvb » mab cbqtqam lmxcqa tm fdqqm aqmktm liva tm amva lm
kpqnnzmz cv umaaiom. T'wxmzibqwv qvdmzam, ycq acxxwam ycm t'wv kwvviqaam ti
ktm, mab lwvk tm « lmkpqnnzmumvb ».decale prenant comme arguments un
caractère lettre et un nombre positif ou négatif
decalage, qui renvoie le caractère lettre
décalé de decalage dans l’alphabet. Seuls les ensembles de
caractères A-Z et a-z sont pris en compte pour lettre, et
le résultat renvoyé doit être dans l’intervalle A-Z. Le résultat pour un
caractère n’appartenant pas à ces intervalles est la chaîne vide.
Indication : utiliser la fonction ord pour obtenir le code
ASCII d’un caractère, et chr pour obtenir le caractère
correspondant à un code ASCII (RTFM si besoin !).Votre code doit satisfaire aux assertions suivantes (à compléter vous-même)
assert decale(lettre="A", decalage=3) == "D"
assert decale(lettre="D", decalage=-3) == "A"
assert decale(lettre="a", decalage=5) == "F"
assert decale(lettre="f", decalage=-5) == "A"
assert decale(lettre="é", decalage=-5) == ""
assert decale(lettre=" ", decalage=5) == ""
#assert decale(lettre="A", decalage=30) == # à vous de compléter
#assert decale(lettre="D", decalage=-30) == # à vous de compléter
#assert decale(lettre="d", decalage=34) == # à vous de compléter
#assert decale(lettre="w", decalage=-34) == # à vous de compléter
# sinon, c'est pas plus cher de tout tester...
for l in "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ":
for d in range(1, 50):
assert decale(
lettre=decale(lettre=l, decalage=d),
decalage=-d)==l.upper(), f"Erreur sur {l} décalage {d}"Créer ensuite une fonction cesar prenant comme argument
un message message et un décalage decalage et
renvoyant le message message chiffré en utilisant le
décalage decalage. Ecrire une ou plusieurs assertions
permettant de valider le fonctionnement de cette fonction. Comment
peut-on utiliser cette fonction cesar pour déchiffrer un
message ?
Chiffrer à la main le message “BONJOURCECIESTUNMESSAGESECRET” en utilisant la clef “DUMEZIL”
Créer une fonction vigenere(message, clef) permettant de
chiffrer le message message en utilisant la clef
clef. Ecrire une ou plusieurs assertions permettant de
valider le fonctionnement de cette fonction.
Créer une fonction devigenere(message, clef) permettant
de déchiffrer le message. Ecrire une ou plusieurs assertions permettant
de valider le fonctionnement de cette fonction.
Indications : on pourra utiliser un tableau de correspondance lettre / nombre en prenant A=0, B=1, …, Z=25 (= on peut utiliser 5 bits pour coder une lettre). La clef 2024 (écrite en binaire, donc 11 bits) sera répétée autant de fois que nécessaire pour obtenir une clef de même longueur que le message.
La sécurité du message est basée principalement sur la qualité de la clef et sur la fiablilité de sa transmission.
Principe : la sécurité est basée sur l’existence de deux clefs de chiffrement. Un message chiffré avec une des deux clefs n’est déchiffrable qu’avec la deuxième clef.
Deux utilisations :
chiffrement d’un message : l’expéditeur utilise la clef publique du destinataire pour coder son message. Le destinataire utilise sa clef privée pour décoder le message de l’expéditeur, garantissant la confidentialité du contenu
authentification de l’expéditeur : l’expéditeur utilise sa clef privée pour coder un message que le destinataire peut décoder avec la clef publique de l’expéditeur ; c’est le mécanisme utilisé par la signature numérique pour authentifier l’auteur d’un message.
C’est la première méthode de chiffrement asymétrique. Inventé en 1977 par Ronald Rivest, Adi Shamir, Léonard Adleman (=> R.S.A.)
Il est basé sur un problème facile à résoudre dans un sens, et très difficile à résoudre dans l’autre sens : la factorisation d’un nombre premier.
Exemple :
Plus d’informations : https://fr.wikipedia.org/wiki/Chiffrement_RSA
Python : créer une fonction factorise(n) qui renvoie la
décomposition en facteurs premiers du nombre n (en utilisant
l’algorithme super naif suivant : diviser n par tous les
nombres i > 1; si le reste de la division
n%i == 0, alors enregistrer i et recommencer
avec n=n/i, tant que i <= sqrt(n))
Essayer de factoriser les nombres suivants :
221, 391, 589, 899, 1199, 2024, 3233, 18721, 27753, 32399
Chiffrement mixte :
authentification : l’expéditeur crée un “condensat” (hash) de son message, le chiffre avec la clef publique de l’expéditeur et l’ajoute en en-tête du message
confidentialité : génération d’une clef secrète pour chaque message, chiffrement symétrique du message compressé avec cette clef. La clef est chiffrée avec la clef publique de l’expéditeur et ajoutée à l’en-tête du message.
La compression rend plus difficile la cryptanalyse du message.
En utilisant la commande gpg
protocole HTTP plus TLS (Transport Layer Sécurity)
3 élèves pour 3 rôles
Chaque clef est représentée par un symbole (carré, rond, ovale, étoile, …), et on représente sur papier le chiffrage d’un message en entourant le message par le symbole correspondant à la clef utiliée.
Etape 1 : CSR
Etape 2 : établissement de la connection HTTPS
Etape 3 : communication