Chiffres élémentaires en langage simple

Bonjour, Habr!

Nous entendons tous assez souvent des mots et des expressions tels que «chiffrement des données», «chiffrement secret», «protection cryptographique», «chiffrement», mais tout le monde ne comprend pas exactement ce que l'on entend. Dans cet article, nous allons comprendre ce qu'est le chiffrement et considérer les chiffrements élémentaires afin que même les personnes éloignées de l'informatique comprennent l'essence de ce phénomène.

Tout d'abord, nous comprendrons la terminologie.

Le chiffrement est une transformation du message d'origine qui ne permettra à aucune mauvaise personne de lire les données si elles interceptent ce message. Cette transformation est effectuée à l'aide d'algorithmes mathématiques et logiques spéciaux, dont certains seront examinés ci-dessous.

Le message d'origine est, en fait, ce que nous voulons crypter. Un exemple classique est le texte.

Un message crypté est un message qui a réussi le processus de cryptage.

Un chiffre est l'algorithme lui-même par lequel nous convertissons le message.

Une clé est un composant basé sur lequel le chiffrement ou le déchiffrement peut être effectué.

L'alphabet est une liste de tous les caractères possibles dans le message original et crypté. Y compris les chiffres, la ponctuation, les espaces, les minuscules et les majuscules séparément, etc.

Maintenant que nous parlons plus ou moins la même langue, nous allons analyser des chiffres simples.

  • Chiffre Atbash


Le chiffre le plus simple. Son essence est la reprise de l'alphabet.

Par exemple, nous avons un alphabet qui est entièrement cohérent avec l'alphabet latin habituel.

abcdefghijklmnopqrstu vwxyz 

Pour implémenter le chiffrement Atbash, nous l'inversons simplement. "A" deviendra "Z", "B" deviendra "Y" et vice versa. À la sortie, nous obtenons l'image suivante:



Et maintenant, nous écrivons le message nécessaire sur l'alphabet source et l'alphabet chiffré

Message d'origine: I love habr
Chiffré: r olev szyi

  • Code de César


Ici, un autre paramètre est ajouté - une clé primitive sous la forme d'un nombre de 1 à 25 (pour l'alphabet latin). En pratique, la clé sera de 4 à 10.

Encore une fois, pour plus de clarté, prenez l'alphabet latin

 abcdefghijklmnopqrstu vwxyz 

Et maintenant, déplacez chaque lettre vers la droite ou la gauche d'un nombre clé de valeurs.

Par exemple, la clé sera 4 et le décalage vers la droite.

Alphabet original: abcdefghijklmnopqrstu vwxyz
Chiffré: wxyzabcdefghijklmnopq rstuv

Nous essayons d'écrire un message:

 hello world 

Nous le chiffrons et obtenons le texte incohérent suivant:

 dahhk sknhz 

  • Chiffre de Vernam (chiffrement XOR)


Le chiffrement binaire le plus simple qui a une force cryptographique absolue . Sans connaissance de la clé, il est impossible de la décrypter (prouvé par Claude Shannon).

L'alphabet d'origine est toujours le même latin.

Le message est divisé en caractères séparés et chaque caractère est présenté sous forme binaire.
Les classiques de la cryptographie offrent un code bodo à cinq chiffres pour chaque lettre. Nous allons essayer de changer ce chiffre pour l'encodage à 8 bits / caractère en utilisant l'exemple d'une table ASCII. Nous représentons chaque lettre sous la forme d'un code binaire.

image

Rappelez-vous maintenant le cours d'électronique et l'élément XOR, également connu sous le nom de XOR.

XOR reçoit des signaux (0 ou 1 chacun), effectue une opération logique sur eux et donne un signal basé sur les valeurs d'entrée.

Si tous les signaux sont égaux les uns aux autres (0-0 ou 1-1 ou 0-0-0, etc.), alors nous obtenons 0 à la sortie.
Si les signaux ne sont pas égaux (0-1 ou 1-0 ou 1-0-0, etc.), alors la sortie est 1.

Maintenant, pour crypter le message, nous allons entrer le texte lui-même pour le cryptage et une clé de la même longueur. Nous traduisons chaque lettre en son code binaire et exécutons la clé XOR du message de formule

Par exemple:

Message: LONDRES
clé: SYSTÈME

Nous les traduisons en code binaire et exécutons XOR:

 01001100 01001111 01001110 01000100 01001111 01001110 01010011 01011001 01010011 01010100 01000101 01001101 _______________________________________________________ 00011111 00010110 00011101 00010000 00001010 00000011 

Dans cet exemple particulier, à la place des caractères résultants, nous ne verrons qu'un espace vide, car tous les caractères sont dans les 32 premiers caractères de service. Cependant, si nous traduisons le résultat en nombres, nous obtenons l'image suivante:

 31 22 29 16 10 3. 

En apparence - un ensemble de chiffres complètement incohérent, mais nous savons quelque chose.

  • Codeword Code


Le principe de chiffrement est à peu près le même que le chiffre de César. Ce n'est que dans ce cas que nous décalons l'alphabet non pas d'un certain nombre de positions, mais d'un mot de code.

Par exemple, prenez l'alphabet cyrillique pour un changement.

  

Nous trouverons un mot de code. Par exemple, Lukomorye. Supprimez-y tous les caractères répétitifs. À la sortie, nous obtenons le mot "Lukomrier".

Maintenant, nous entrons ce mot au début de l'alphabet et laissons les caractères restants inchangés.

   

Et maintenant, nous allons enregistrer n'importe quel message et le crypter.

 "    " 

Nous obtenons les bêtises illisibles suivantes:

 "    " 

  • Code du joueur


Le chiffrement Playfer classique suppose une matrice 5x5 basée sur les caractères de l'alphabet latin (i et j sont écrits dans une cellule), un mot de code et leur manipulation ultérieure.

Que le mot de code soit «BONJOUR».

Tout d'abord, nous agissons comme avec le chiffre précédent, c'est-à-dire supprimez les répétitions et écrivez le mot au début de l'alphabet.



Maintenant, prenez n'importe quel message. Par exemple, «J'AIME HABR ET GITHUB».

Nous le divisons en bigrammes, c'est-à-dire en paires de caractères, sans compter les espaces.

 IL OV EH AB RA ND GI TH UB. 

Si le message provenait d'un nombre impair de caractères, ou s'il y avait deux caractères identiques dans le bigramme (LL, par exemple), le symbole X est remplacé par le caractère manquant ou répété.

Le chiffrement est effectué selon plusieurs règles simples:

1) Si les caractères du digramme sont dans la matrice sur la même ligne - nous les décalons vers la droite d'une position. Si le symbole était le dernier d'affilée - il devient le premier.

Par exemple, EH devient LE.



2) Si les caractères du digram se trouvent dans la même colonne, ils sont décalés d'une position vers le bas. Si le caractère était tout en bas de la colonne, il prend alors la valeur du plus haut.

Par exemple, si nous avions un bigramme LX, il deviendrait DL.

3) Si les caractères ne sont sur aucune ligne ou colonne, alors nous construisons un rectangle, où nos caractères sont les bords de la diagonale. Et permutez les coins.

Par exemple, le bigram RA.





Selon ces règles, nous chiffrons l'intégralité du message.

 IL OV EH AB RA ND GI TH UB. KO HY LE HG EU MF BP QO QG 

Si vous supprimez les espaces, nous obtenons le message crypté suivant:

 KOHYLEHGEUMFBPQOQG 

Félicitations Après avoir lu cet article, vous comprenez au moins à peu près ce qu'est le chiffrement et vous savez comment utiliser des chiffrements primitifs, et vous pouvez commencer à étudier des exemples plus complexes de chiffrements, dont nous parlerons plus tard.

Merci de votre attention.

Source: https://habr.com/ru/post/fr444176/


All Articles