Principes de la cryptographie moderne

Principes de la cryptographie moderne

Dans la société de l’information d’aujourd’hui, l’usage de la cryptologie s’est banalisé. On le retrouve quotidiennement avec les cartes bleues, téléphones portables, Internet ou encore les titres de transport.

La cryptologie moderne a pour l’objet l’étude des méthodes qui permettent d’assurer les services d’intégrité, d’authenticité et de confidentialité dans les systèmes d’information et de communication. Elle recouvre aujourd’hui également l’ensemble des procédés informatiques devant résister à des adversaires.

La cryptologie se partage en deux sous-disciplines :

  • La cryptographie qui propose des méthodes pour assurer ces services.
  • La cryptanalyse qui recherche des failles dans les mécanismes proposés.
Nous allons détailler dans cet article les grandes lignes des principes de la cryptographie. La principale distinction se fera entre les chiffrements de type symétrique et ceux de type asymétrique.

La cryptographie symétrique

Principe général

La cryptographie symétrique, aussi connue sous le nom de cryptographie à clé secrète ou cryptographie conventionnelle, est la plus ancienne historiquement. Elle est extrêmement répandue à cause de ses performances remarquables. Elle suppose qu’au moins deux personnes partagent la connaissance de la même clé secrète, ce qui leur confère donc un rôle symétrique. Elle s’appuie principalement sur les fonctions booléennes et les statistiques.


Avec le passage à l’ère numérique, ce sont désormais des suites de bits qui sont chiffrés. distingue deux types d’algorithmes de chiffrement :

  • Chiffrement par bloc : le message clair est découpé en une multitude de blocs relativement grands (par exemple 128 bits) et on opère des opérations bien choisies sur les blocs.
  • Chiffrement par flot : le message clair est considéré comme un flot de bits (ou d’octets), et il est combiné avec un autre flot de bits (ou d’octets) généré de façon pseudo-aléatoire.

Chiffrement par bloc

L’algorithme d’un chiffrement par bloc est généralement basé sur une modèle itératif. Il utilise une fonction F qui prend une clé secrète k et un message M de n bits. La fonction F est itérée un certain nombre de fois (nombre de tours). Lors de chaque tout, la clé k est différente et on chiffre le message qui vient d’être obtenu de l’itération précédente. Les différentes clés k(i) qui sont utilisées sont déduites de la clé secrète k.

L’algorithme le plus connu est le DES (Data Encryption Standard). Il s’agit d’une version remaniée par la NSA d’un algorithme initialement conçu par IBM dans les années 1970 : ses spécifications sont publiques, mais sa conception est longtemps restée secrète. Sa version la plus récente date de 1994. Il opère généralement sur des blocs de 64 bits et utilise une clé de 56 bits qui sera transformée en 16 sous-clés de 48 bits chacune. Le chiffrement se déroule en 16 tours.


Chiffrement par flot ou par flux

Dans les algorithmes de chiffrement par flot, une suite d’octets ou de bits r_i est produite à partir de la clé. Cette suite est combinée aux octets ou aux bits du message clair m_i pour donner les octets ou les bits du message chiffré c_i .

L'exemple le plus répandu du chiffrement par flot est celui du RC4. Il a été développé en 1987 par Ron Rivest pour RSA. Il est longtemps resté secret avant d’être publié, et il est aujourd’hui beaucoup utilisé, en particulier dans le protocole SSL.

La structure du RC4 se compose de deux parties distinctes. La première génère une table d’état S à partir de données secrètes. La deuxième partie de l’algorithme est le générateur de données en sortie, qui utilise la table S et deux compteurs.

A partir de la clé de longueur variable, par exemple 128 bits, un tableau S de 256 octets est initialisé et deux compteurs i et j sont mis à zéro. Pour générer un nouvel octet aléatoire, on applique les opérations suivantes :

  • i = (i + 1) mod 256
  • j = j + S[i] mod 256
  • échanger S[i] et S[j]
  • t = S[i] + S[j] mod 256
  • retourner S[t]

La cryptographie asymétrique

Principe général

Le principe d'un code asymétrique (aussi appelé à clé publique) est que, contrairement au code symétrique, les deux interlocuteurs ne partagent pas la même clé. En effet, la personne qui veut envoyer un message utilise la clé publique de son correspondant. Celui-ci déchiffrera alors ce message à partir de sa clé privée que lui seul connait. On voit ici que contrairement à un codage symétrique, le chiffrement et le déchiffrement se font par des opérations complètement différentes.


Cette technique permet de répondre à la problématique du partage sécurisé des clés publiques entre des correspondants. En effet, en cas d'interception de la clé (publique) et d'un message codé par cette clé, l'intercepteur ne pourra pas retrouver le message d'origine, car il lui manque la clé privée possédée par le vrai destinataire du message codé.

L'exemple le plus connu de système cryptographique asymétrique est le système RSA.

Mais la clé privée ne sert pas qu'à assurer la sécurité de la transmission des messages. En effet, si notre intercepteur, qui possède la clé publique, veut envoyer un message au vrai destinataire avec des intentions douteuses, comment le destinataire pourrait-il se rendre compte que l'expediteur n'est pas l'un de ses amis?

La clé privée sert donc aussi à vérifier l'authenticité de l'identification de l'expéditeur d'un message codé par clé publique.

  1. Soit A (Alice) l'expéditeur et B (Benoit) le destinataire d'un message M.
  2. A possède sa clé privée prK(A) et une clé publique puK(A) qu'elle diffuse à B.
  3. B possède sa clé privée prK(B) et une clé publique puK(B) qu'il diffuse à A.
  4. M est codé par clé publique PuK(B), mais ce message est distribué avec un condensât du message, S, codé par la clé privée prK(A).
  5. M est déchiffré par la clé privée de B. Le résultat est lisible mais il manque l'authentification de l'expéditeur.
  6. S correspond donc en fait à la signature ou empreinte du message original, et donc de l'identifiant A.
  7. S doit être déchiffré par la clé publique de A. Si le résultat obtenu est le même que le condensât obtenu par la fonction de hachage sur le texte en clair, calculé par B, alors B est assuré de l'authenticité du message et de l'expéditeur.

Cette méthode d'authentification utilise donc la propriété des paires de clés asymétriques. Un message codé par clé publique peut être déchiffré par une clé privée et un message codé par une clé privée (ici le condensât) peut être décodé par une clé publique. Maintenant, on peut se demander ce qu'est un condensât, qui est le résultat d'une fonction de hachage sur un texte.

Fonctions de condensation

Il s'agit de fonctions mathématiques dont le paramètre d'entrée est de grande taille, comme un fichier ou un paquet, mais avec un résultat très réduit en taille. La principale caractéristique de ces fonctions est qu'elle sont difficilement inversibles, c'est à dire qu'en cas d'interception du résultat appelé condensat, il est extrêmement difficile de retrouver le message d'origine.

On peut en citer deux des plus utilisées:

  • MD5 (Message Digest Algorithm 5) qui permet de hacher les données d'entrée en renvoyant une chaîne de 128 bits. Mais quelques faiblesses ont été découvertes. Son utilisation se raréfie.
  • SHA-1 (Secure Hash Algorithm) publié par le gouvernement Américain, et qui renvoie une valeur de 160 bits. Il est relativement jeune, et il n’y a pas de faiblesse connue.

La cryptographie hybride

Cette technique a été introduite afin de profiter des avantages des deux techniques précedemment citées, c'est à dire la rapidité de traitement des messages codés par cryptographie symétrique et la puissance du chiffrement des messages par cryptographie asymétrique.

Le principe est assez simple. La communication entre A et B se fait par système cryptographique symétrique, ce qui rend rend la communication assez rapide à chiffrer et déchiffrer. Mais la lacune de la sécurité de transmission de la clé symétrique de chiffrement/déchiffrement est palliée par un chiffrement de cette clé, qui lui est asymétrique.

Comments

Sarah (unauthenticated)
Jan 25, 2015

Finalement pour une communication hybride entre A et B combien de clés leurs faut ils ? moi je vois que c'est 3 je ne sais pas si c'est ça , parace que le A va choisir une clé K' qu'il va chiffrer avec une clé publique K(pub) et le transmet a B , le B va la déchiffrer avec sa clé privée (Kpriv) donc au total 3

raphoulapute (unauthenticated)
Feb 17, 2017

niquez vos mere bandes de fils de putes de merde

Pavel (unauthenticated)
May 20, 2017

Sarah moi aussi je pense que c'est 3
1) La clé publique connue de tous
2)La clé privée connue uniquement par le destinataire
3)La clé aléatoire générée par l'expéditeur