Le chiffrement à clé asymétrique utilise deux clés différentes pour le processus de chiffrement et de déchiffrement. Ces deux clés sont la clé privée et la clé publique. La clé publique est publique et est utilisée pour le processus de cryptage.
11 juil. 2021La cryptographie, la pratique de la communication sécurisée, est utilisée depuis l’Antiquité. Les Grecs et les Romains utilisaient des codes simples pour garder leurs messages secrets. Aujourd’hui, le cryptage est un aspect fondamental de la cybersécurité. Alors que nous dépendons de plus en plus de la technologie pour stocker et transmettre des informations sensibles, il est essentiel de savoir comment crypter correctement les données. Dans cet article, nous allons explorer les bases du chiffrement et la manière de l’implémenter en Python.
Qui a inventé la cryptographie ? Les origines de la cryptographie ne sont pas claires, mais certains des premiers exemples connus proviennent de l’Égypte ancienne. Les Grecs et les Romains utilisaient également la cryptographie pour protéger les communications militaires et diplomatiques. C’est Leon Battista Alberti, mathématicien italien, qui a utilisé pour la première fois un code polyalphabétique (un code qui utilise plusieurs alphabets) au XVe siècle.
L’un des chiffres les plus simples est le chiffre de César, nommé d’après Jules César. Il s’agit d’un chiffrement par substitution qui remplace chaque lettre du texte en clair par une lettre située à un nombre fixe de positions dans l’alphabet. Par exemple, avec un décalage de trois, A serait remplacé par D, B deviendrait E, et ainsi de suite. Le chiffrement de César est facile à décrypter puisqu’il n’y a que 25 clés possibles (la valeur du décalage). Cependant, il constitue un bon point de départ pour s’initier au cryptage.
Pour chiffrer un fichier texte en Python, nous pouvons utiliser le module de cryptographie. Tout d’abord, nous devons l’installer à l’aide de pip. Ouvrez votre terminal et tapez « pip install cryptography ». Une fois installé, le code suivant peut être utilisé pour crypter un fichier :
« `
from cryptography.fernet import Fernet
key = Fernet.generate_key()
cipher = Fernet(key)
with open(‘plaintext.txt’, ‘rb’) as f :
plaintext = f.read()
avec open(‘encrypted.txt’, ‘wb’) as f :
f.write(encrypted)
« `
Dans le code ci-dessus, nous générons une clé aléatoire en utilisant la méthode generate_key() de Fernet. Nous créons un objet de chiffrement à l’aide de cette clé et l’utilisons pour chiffrer le contenu d’un fichier en texte clair. Le texte chiffré est ensuite écrit dans un nouveau fichier appelé « encrypted.txt ». Notez que nous utilisons les modes ‘rb’ et ‘wb’ pour lire et écrire des données binaires.
« `
from cryptography.fernet import Fernet
key = b’…’
cipher = Fernet(key)
with open(‘encrypted.txt’, ‘rb’) as f :
encrypted = f.read()
avec open(‘decrypted.txt’, ‘wb’) as f :
f.write(decrypted)
« `
Ici, nous lisons le texte chiffré du fichier chiffré et utilisons la même clé et le même objet de chiffrement pour le déchiffrer. Les données déchiffrées sont ensuite écrites dans un nouveau fichier appelé « decrypted.txt ».
Nous pouvons également crypter des programmes Python en les convertissant en bytecode, puis en cryptant le bytecode. Pour ce faire, nous pouvons utiliser la fonction intégrée compile() et le module base64 :
« `
import base64
with open(‘program.py’, ‘rb’) as f :
code = compile(f.read(), », ‘exec’)
avec open(‘encrypted.py’, ‘wb’) as f :
f.write(encrypted)
« `
Dans le code ci-dessus, nous compilons le programme Python en bytecode à l’aide de la fonction compile(). Nous codons ensuite le bytecode à l’aide de base64 et l’écrivons dans un nouveau fichier appelé « encrypted.py ». Pour exécuter le programme crypté, nous pouvons décoder le bytecode et l’exécuter en utilisant la fonction exec() :
« `
import base64
with open(‘encrypted.py’, ‘rb’) as f :
encrypted = f.read()
exec(code)
« `
Un message crypté est un message qui a été transformé de telle manière qu’il est illisible pour quiconque ne possède pas la clé pour le décrypter. Le cryptage est utilisé pour protéger les informations sensibles telles que les mots de passe, les numéros de carte de crédit et les données personnelles. Dans le monde d’aujourd’hui, les violations de données peuvent avoir des conséquences désastreuses, et le cryptage est un outil crucial pour les prévenir.
En conclusion, le chiffrement est un aspect vital de la cybersécurité, et Python fournit plusieurs modules pour le mettre en œuvre. Bien que la cryptographie puisse être un sujet complexe, commencer par des chiffres simples comme le chiffre de César peut vous aider à comprendre les bases. En apprenant à chiffrer les données, nous pouvons mettre nos informations privées à l’abri des regards indiscrets.