Demystifions ensemble et de manière simple ce qui se cache dans la parole cryptographie en informatique : au fait qu'est ce que la cryptographie et en quoi consiste t'elle?
La cryptographie c'est la science d'une communication secrete en présence d'un adversaire temeraire basée sur 3 principes: la confidentialité, l'intégrité, l'authenticité.
la confidentialité c'est l'assurance que l'information vehiculée durant la communication est disponible seulement aux entités authorisées, l'intégrité quand à elle que seuls les entités authorisés peuvent modifier l'information en question, et l'authenticité garantit l'identité valide des acteurs interessés dans la communication.
Un system de criptographie peut etre definit comme en image:
il y a 3 principaux acteurs dans ce sythem : Sender (l'expediteur), Receiver (le recepteur), Adversary(l'adversaire, le hacker, le ninja, l'homme qui veut casser le sytem, l'intru), l'expediteur veut envoyer un message dans un canale non securisé au recepteur (c'est exactement ce que nous faisons par exemple quand nous utilisons notre navigateur pour aller sur un site web, le navigateur c'est le client qui doit ouvrir une communication TCP donc une requete HTTP au serveur pour demander une page web, cette requete peut contenir nos données, par exemple quand vous etes entrain de faire un login sur le site de votre banque, il y a tansition de vos données personnelles du navigateur au serveur de la banque donc l'expediteur ici peut etre vous à travers votre navigateur et le recepteur est le site web sur le serveur de la banque), dans ce canal non securisé, il peut y avaoir des intrus/hacker (adversary dans l'image) pret à chiper vos données bancaire pour vider votre compte.Les autres élements d'un system de cyptographie c'est le "Texte en claire" (Plan Text), le "texte crypté" (cipher text), la clé de cryptographie, le canale securisé(secure chanel), la fonction de cryptage (encryption function), la fonction de decrtyptage (decryption fonction). Le role de la fonction de cryptage est de produire un algorithme qui convertit le texte en claire, en texte crypté en utilisant une clé de cryptographie qu'il applique sur le texte plain comme paramètre d'entrée donc en bref c'est un algorithme purement mathematique pour produire un texte difficilement decryptable si on ne connait pas la clé avec laquelle on l'a crypté. La fonction de decryptage fait l'operation inverse, à savoir aynat la clé de cryptographie, ele est capable de reproduire le texte en claire à partir du texte crypté.
Il existe deux types de cryptographie:
La cryptographie Symetrique
Ce type de cryptographie utilise la meme clée de cryptographie soit pour le cryptage du texte en claire que pour le decryptage du texte crypté. La clé de cryptographie dans ce cas doit etre secrete et transferée de manière securisée entre l'expediteur et le recepteur avant meme que la communication ne débute, donc ce sont les seuls acteurs qui doivent connaitre ce secret. Generalement, la cryptographie à clée publique est utilisée pour transferer les clées, ce type de cryptographie est le plus souvent utilisé pour la mise sur pied de la confidentialité donc on a parlé au début, la cryptographie symetrique quant à elle contient deux sous classes:
Le .Stream Ciphers dans l'image à gauche crypte le texte en claire(plain texte), bit par bit ou mieux encore un bit à la fois, en parole simple, l'algorithme de cryptographie, prend chaque bit du texte en claire, l'elabore, et produit un bit crypté en utilisant une opération XOR (operation mathematique appliqué sur les bit), ce model de cryptographie peut etre vu sous un autre angle dans l'image suivante:
dans ce modele, le texte en claire, penetre dans la fonction de cryptage bit par bit en meme temp que une key stream (clé) produit par un generateur de clé de manière hasardeuse on parle de pseudorandom key generator en anglais dans la mesure ou cette clé parait etre generé au hasard mais elle est meticuleusemnt calculée, generalement c'est une clée de 128 bit, la combinaison key stream + "texte claire" appliqué à la fonction XOR produit le texte crypté, durant le decryptage il y a l'operation inverse.
Le Block Ciphers quant à produit le texte crypté en divisant le texte claire par block avant de les crypté block par block et non bit par bit comme dans le cas des Stream ciphers,
on peut ainsi utilisé cette technique non seulement pour crypter les données, mais aussi pour faire ce qu'on appelle du haschage qui permet de produire un texte fixe à partire d'un texte en entrée ceci permet par exemple de mettre sos pieds la signature digitale. Les algorithmes de cryptographie les plus diffusés dans cette catégorie sont . l'algorithme AES(Advanced Encryption Standard) et l'algorithme DES(Data Encryption Standard)
La cryptographie à clée publique(Public Key Cryptography):
l'infrastructure à clée publique utilise deux clées distinctes et differentes pour le crytage et le decryptage, une clée publique connue de tous utilisée pour le cryptage et une clée privée secrete utilisée par le recepteur du message pour le decrypter, dans ce system, l'expediteur du message (dans le cas du web il s'agit generalement de votre navigateur ou mieux de la machine dans laquelle vous en tant que utilisateur ete entrain de naviguer) utilise la clée publique du receveur/destinataire du message pour crypter le message à envoyer à ce dernier qui doit utilisé sa clée privée pour le decrypter, seul et lui seul detient cette clée privée.En parole simple, pour que vous communiquer par exemple en HTTPS (le s derrière HTTP là est fondamentale car c'est cela qui ajoute une couche de securité et de cryptographie dans les données qui transitent) quand vous acceder à un site web protegé par ce protocole, il y a d'abord une échange sous votre dos entre, votre machine/navigateur et le serveur web, le serveur web doit presenter un certificat à votre machine qui contient sa clée publique, votre machine à travers le systhème d'exploitation verifie de la validité de ce certificat et le navigateur utilise la clée publique contenue dans ce certificat pour crypter les données qui sont transmies par HTTPS sur le serveur qui avec sa clé privée est le seul à pouvoir decrypter le message et l'interpreter.
On resoud ainsi le probleme d'insecurité dans la cryptographie à clé symetrique ou il faut creer un canale sure pour l'echange de la clée secrete de cryptographie que les deux acteurs emetteur/recepteur doivent connaitre ensemble pour crypter et decrypter les données, ici la paire clée publique connue de tous et clée privée connue seulement par le recepteur resoud ce probleme.
La Signature Digitale
L'infrastructure à clée publique permet pas seulement de crypter et de decrypter les données, mais aussi est à l'origine de l'implementation de ce qu'on appelle la signature digitale qui permet d'introduire dans le mechanisme de comunication le concepte de non-repudiation (nonrepudiation) c'est à dire que aucun des acteurs qui fait partit de la communication ne peut regnier que le message ne vient pas de lui quand ce message contient sa signature digitale, donc on ne peut pas se retrouver à dire comme beaucoup le font sur facebook qu'on a hacker leur compte et qu'on a posté des choses insensées sur son nom.
La signature digitale est aussi beaucoup utilisé dans les blochaine, d'ailleur sans la cryptographie et surtout la cryptographie à clée publique, il serait assez difficile de mettre sur pied un reseau distribué et hyper securisé comme la blockchaine, la signature digiatle est justement utilsée massivement dans la blockchaine pour signer toutes les transactions des utilisateurs qui transitent dans le réseau blockchaine, chaque utilisateur de la blochaine a generalement ce qu'on appelle un wallet (porte monnaie digitale) qui en fait dans le sens de la blochaine n'est qu'un conteneur de deux cléee: une clée publique et une clée privée, donc lors des transactions fait par l'utilisateur dans la blockchaine, la transaction est crypté en utilisant la clée public de l'utilisateur de destination qui devra le decrypter avec la clée privée de son wallet pour recuperer les données de la transaction, en plus cette transaction est signée digitalement avec la clée privée de l'emeteur et sa clée publique est utilisée pour decrytée et comparer la signature si effectivement la transaction vient de lui.
La cryptographie symetrique en terme de performance est rapide raison pour laquelle elle est utilisée beaucoup dans les scenario ou les données sont locales et ne doivent pas transiter sur le reseau, on peut l'implementer soit dans le hardware(materiel) que dans le software(logiciel), mais sa faiblesse née du fait que étant basé sur l'utilisation d'une clée secrete que l'emetteur et le recepteur doivent connaitre contemporainement et qu'il faut le faire passer par le reseau, il peut arriver que cette clée soit intercepter par un intru pour lire le message, en résumer, dans l'image suivant: voici les algorithmes populaires qui implemente cette methodlogie de cryptographie (je laisse sciement tout en anglais, l'anglais c'est la langue de l'informatique et il faut s'y habituer)
Avec la cryptographie à clé asymetrique donc clée public/privée, on resoud le probleme du canale non securisé pour la transmission de la clée secrete rencontré avec la cryptographie symetrique, le tableau suivant resume les algorithmes utilisés dans cette methodologie de cryptographie:
le probleme avec les algorithmes à clée symetrique est qu'ils sont moins performantes et lentes car il faut beaucoup d'opérations, résumons en generale ce qui se passe effectivement dans une cryptographie à clée publique avec signature digutale à travers cette image:
Imaginé que Helene veut envoyer un message à son ami Marco, elle envoie le message chiffré/crypté avec la clé publique de Marco. Ensuite, Helene prend le message d'origine et le hache pour obtenir un ensemble réduit de données (l'operation de hascher est celle qui consiste à optenir un texte plus cour et unique du message c'est ça qui va consister successivement en sa signature). Helene prend ensuite le message haché, le signe avec sa clé privée et l'envoie à Marco . En hachant le message, Helene a considérablement réduit le volume de données envoyé à Marco.
Marco va maintenant prendre le message qu'il a reçu et qui a été crypté avec sa clée publique et le décrypter avec sa clée privée et récupérer le message d'origine. Il prendra ensuite la signature numérique hachée chiffrée et la déchiffrera/decryptera avec la clé publique de Helene et obtiendra le hachage du message d'origine. Ensuite, Marco prend le message d'origine (déchiffré par sa clé privée) et le hache. Lorsque ce hachage correspond au hachage déchiffré, Marco est maintenant certain que le messaage vient effectivement de Helene.
Si vous remplacez Helene et Marco par votre navigateur/machine et le serveur web, c'est effectivement ce ping-pong qui se passe de manière transparente chaque fois que vous naviguez sur internet, pire encore pour ceux qui interagisse avec les blockchaine à travers les DAPP et les smart contract c'est ce qui règit comme norme.
Abonnez vous au site pour des contenus du coding.
LarrySig Guest
24.05.2024, 18:18
Post: Comment fonctionnent Internement les guichets automatiques ?
Orvilledop Guest
22.05.2024, 00:57
Post: Comment fonctionnent Internement les guichets automatiques ?
Orvilledop Guest
15.05.2024, 16:04
Post: Comment fonctionnent Internement les guichets automatiques ?
Franck Guest
14.05.2024, 19:34
Post: Comment deployer un site web statique sur github?