mardi 6 janvier 2009

Cryptage, chiffrement, clé secrète, clé public/privée expliqué pour tous

par Ronan 4 comments


Spam, virus, spyware, intrusion, hackers, bruteforce, DOS, ...plus on en apprend sur l'informatique et les réseaux de communication, plus on devient parano. Qu'il était bon le temps où utiliser un firewall relevait presque du gadget!
Aujourd'hui, particuliers et entreprises qui ont une fenêtre sur internet sont confrontés à des enjeux de sécurité dans leurs communications, et surtout :
  • - la confidentialité
  • - l'authenticité (via des moyens d'authentification)
  • - l'intégrité des données  
    Il y aurai de quoi écrire un livre, mais je vais pour cette fois-ci me concentrer sur le chiffrement, et notamment le système de clé. Car pendant bien longtemps j'en ai entendu parler, j'ai lu x articles “d'experts”, sans jamais bien comprendre le but...tout simplement car ils ne posaient pas les bonnes questions. C'est donc à une explication simple et imagée que je vais me livrer, une espèce de « cryptage pour les nuls ».

    Cryptage et chiffrement
    Cryptage et chiffrement, quelle est la différence? A la base il faut bien comprendre que l'un ou l'autre c'est une action mathématique, un algorithme qui va permettre de passer d'une donnée claire en une donnée codée.
    Aujourd'hui on assimile souvent cryptage et chiffrement. Pourtant ces termes ne désignent pas vraiment la même chose.
    Avant le 21 juin 2004, il était interdit en France de chiffrer symétriquement ses données avec une clé supérieur à 128 bits (je reviendrais plus tard sur le chiffrement symétrique/asymétrique et sur les clés) pour des raisons de sécurité nationale. En effet, au yeux de l'État rien ne doit être caché ou cachable. Et ne sachant pas cracker des codes chiffrés avec une clé supérieur à 128 bits, l'utilisation de clés de 256, 512, 1024, ... étaient proscrites. Et c'est là où intervenait le cryptage : le cryptage est une méthode illégale qui consiste à chiffrer des données avec une clé de taille interdite par la loi.
    Or depuis le 21 juin 2004, et la loi pour la confiance dans l'économie numérique, l'utilisation de moyen de cryptage est libre. Non pas que notre chère patrie ait trouvé le moyen de décoder n'importe quel code, mais simplement que la fourniture de prestations de cryptologie doit être déclarée auprès du Premier ministre (Loi n°2004-575 du 21 juin 2004). Étant en possession de tous les moyens de “cryptage”, l'État conserve donc la possibilité en cas de force majeure d'avoir accès à n'importe quelle information chiffrée.

    Clé de chiffrement
    J'ai parlé à plusieurs reprises de clés de chiffrement et de bits, et je pense que ça mérite une petite explication. Une clé peut être un mot, une suite de chiffre, ou comme pour la machine Enigma une combinaison de fils à brancher. Cette clé est alors un paramètre (un élément de l'équation si vous préférez) qui permet de passer de données claires vers des données chiffrées, et réciproquement.
    La complexité de cet algorithme est directement lié à la taille de la clé, que l'on exprime généralement en bits (un 1 ou un 0). La longueur de la clé quantifie le nombre maximal d'opérations liés au déchiffrement. Par exemple pour une clé de 128 bits (suite aléatoire de 128 zéros ou uns) il y a 2128 valeurs possibles.
    Chiffrement symétrique et chiffrement asymétrique
    Cette notion de chiffrement symétrique ou asymétrique est très simple. Un chiffrement symétrique signifie que la même clé est utilisée pour chiffrer et déchiffrer le message. C'est la méthode la plus basique, qui a été utilisé il y a plus de 4000 ans par les égyptiens. On peut comparer cela au mot de passe que vous mettez pour un fichier zip ou rar. Lors de la compression de vos fichiers dans l'archive, vous pouvez la chiffrer avec un mot de passe. C'est ce même mot de passe que vous devrez rentrer par la suite si vous voulez ouvrir l'archive et lire vos fichiers.
    A l'inverse, un chiffrement asymétrique fait en sorte que la clé pour coder et la clé pour lire soient différentes.

     
    Le chiffrement et le transfert de données
    Je ne m'attarderais pas sur les logiciels et entités qui délivrent des clés, je fais simplement expliquer le principes de fonctionnement du chiffrement de données, en prenant un exemple très simple. Au fils des réponses apportées à des problématiques que nous allons définir, j'y apporterais des réponses. Nous partirons ainsi d'un chiffrement simple pour arrivé à une combinaison de chiffrement, basé sur le fameux système des clés public/privée.
    Problématiques
    Lors de transfert de données par mail ou autre, on est en droit (et c'est même un devoir) de s'assurer de trois choses :
    • - La confidentialité : vous avez le droit d'envoyer des photos à une amies, sans que personnes n'y ai accès...sinon autant les poster sur le premier forum qui vient.
    • - L'authenticité : si vous recevez un mail de votre fils vous demandant une petite avance sur son argent de poche, à déposer sur le compte 045125496N452, vous devez être sûr que ce message vient bien de lui. On met alors en place des moyens d'authentification.
    • - L'intégrité : Vous recevez une lettre de votre chef vous annonçant que si vous ne voulez pas être viré, vous devrez faire un strip-tease devant le DG à la prochaine réunion de bilan...hum...si vous ne doutez par de l'authenticité du destinataire (signature, écriture, en-tête) vous doutez en revanche des mains entre lesquels la lettre est passé. En effet quelqu'un a pu intercepter le message et le modifier pour vous jouer un (très) mauvais tour.


       
    Ces enjeux sont d'autant plus importants si vous êtes une entreprise transférant des données sensibles : banque, avocat, médecine,...
    Quels sont alors les moyens les plus sûr pour chiffrer vos données, tout en étant certain que votre destinataire réussira à lire correctement le fichier.

    Les solutions de chiffrements
    Pamela souhaite flirter par mail avec François. Comme les deux sont mariés, ils n'aimerait pas que leur moitié découvre leurs activités, et décident donc de chiffrer leurs communications.
    Le chiffrement simple
    Le plus basique, ils n'y connaissent rien et pour le moment ça leur suffit. Pam a écrit son mot doux, et grâce à un logiciel qui décale toutes les lettres de 2 ( A devient C, M devient O, ) elle transmet à François le texte codé. Ce dernier connait l'astuce et utilise le logiciel dans sa fonction inverse et le tour est joué!
     

    Mathématiquement, on a D = C(S) (D est égal l'image de S par la fonction C)
    L'opération de déchiffrement : 
     

    Mathématiquement, on a S = X(D), avec X la fonction inverse de C : X = C-1
    Mais voilà, ce type de code, sur message assez long sera très facilement cassable. En effet Paul, l'ami de Pamela qui est très très très jaloux et proportionnellement intelligent sait qu'en Français la lettre « e » à 15% d'apparaitre dans un texte, la lettre « t » x%, ... Ainsi en collectant suffisamment de message et en appliquant une simple formule statistique (on apprend les pourcentages en 5ième quand même!) il pourra démasquer les infidèles, ou encore capturer un message et le changer, ou se faire passer pour Pamela et rompre.
    Ici il n'y a ni la confidentialité, ni l'authentification, ni l'intégrité qui est garanti.
    Bien sûr ils pourraient changer à chaque ligne du message la méthode de chiffrage, mais ce ne serait pas pratique, et Pamela à une autre idée.

    Le chiffrement à clé secrète (symétrique)
    Cette fois-ci Pamela a trouvé un logiciel qui code le texte en fonction d'une clé.
     

    On a D = Ck(S) (D est égal à l'image de S par la fonction C de paramètre k)...ça à déjà plus de gueule! Notre chiffrement de dépend plus d'un fonction, il faut LE paramètre pour avoir le message clair.
    Pour le déchiffrer, nous avons donc S = Xk(D), ou S = Xk(Ck(S))
    La blonde à forte poitrine (bah je n'allais pas choisir une naine unijambiste qui louche!) veut alors tout de suite envoyer son premier message à François. Mais alors qu'elle choisit sa clé, elle se pose une question : « Comment je vais lui envoyer la clé? ». Pas question de se voir, d'ailleurs il ne sait pas où j'habite, un sms? Trop risqué, pareil pour le téléphone.
    Et si j'envoie la clé, dans un fichier chiffré lui même par une autre clé? Mouais, pas bête, mais le problème reste le même. De plus François, lui a dit que sa femme travaillait dans l'informatique, et qu'elle connaissait des logiciels pour casser n'importe quel mot de passe ou clé. On appelle ça les attaques par dictionnaire (mot) ou par Brute force (toutes les combinaisons alphanumériques possibles)...même si casser un code de 8/10 caractères peut durer des mois voire des années, c'est trop risqué. Mais s'il y a un avantage dans le fait que Marie, la femme de François, travaille dans l'informatique, c'est qu'elle est au courant de bien des choses!
     
    Le chiffrement asymétrique à deux clés (public/privée)
    François est heureux, au détour d'une conversation avec sa compagne, elle vient à lui parler d'une méthode de chiffrement originale : tu chiffres un message avec une clé que toi seul connait (clé privée), et ton correspondant la déchiffre avec une clé public, non confidentielle. Ainsi pas besoin de se casser la tête pour chiffrer la clé.

    François est heureux, mais (comme moi au début) il ne comprend pas vraiment l'intérêt : s'il envoie un message contenant sa clé public, alors Paul n'aura qu'à le lire, prendre la clé public et déchiffrer le texte.
    Par contre ici, comme il envoie un message avec sa clé privée (confidentielle et connu de lui seul), alors il a résolu les problèmes d'intégrité et d'authentification : Si la clé public de Pamela marche, c'est que c'est bien François qui l'a envoyé, et c'est aussi que le message n'a pas été modifié.
    Reste à résoudre le problème de la confidentialité.
    Alors le François, très avide de discussions coquines avec Pamela (mais cela ne nous...regarde pas) cherche, cherche...et trouve que si on peut coder un message avec une clé privée et la lire avec la clé public correspondante, l'inverse est également possible!

    Cette fois ci la confidentialité est assurée (seule la personne avec la clé privée peut lire le message) ainsi que l'intégrité, mais pas l'authenticité.
    François remue ses méninges, motivé par le désir de recontacter sa blonde avec de bonnes nouvelles.
    Et là, THE IDEA, l'idée lui traverse l'esprit :
    • - le codage avec la clé privée garanti authenticité et intégrité
    • - le codage par clé publique apporte la confidentialité

    Donc la solution est simple, il suffit de réaliser un double codage. Donc Pamela doit également avoir son trousseau de clé public/privée.
    Ainsi :
    • - François code le texte clair avec la clé public de Pamela, cela donne le texte chiffré1 TC1 (garanti de confidentialité)
    • - François rechiffre TC1 avec sa clé privée, cela donne TC2 (garanti d'authenticité et d'intégrité)
    • - Pamela reçoit le TC2 et le déchiffre avec la clé public de François, ce qui donne TC1
    • - Pamela déchiffre TC1 avec sa clé privée, et obtient finalement le texte clair
    Ainsi même si Paul ou Marie viennent à connaitre la clé public de François (1ere action de déchiffrement), il ne pourront accéder à la seconde partie, car elle nécessite la clé privée de Pamela, qui est confidentielle.


    Et voilà! Pamela et François peuvent communiquer sans aucune chance de se faire prendre, tant qu'ils garderont secret leurs clés privées.
    Sauf que le petit François a été bien naïf : en effet il n'est pas le seul que drague la belle blonde.
    La Succube tient entre ses ongles manucurés une centaine de mâles.
    Et vient le jours où dans son scénario elle doit envoyer une photo d'elle à tous ses correspondant. Le chiffrement marche exactement de la même manière que pour les textes, au détails près qu'une image pèse 1Mo.
    Le chiffrement symétrique d'un fichier de 1Mo demande 1 seconde.
    Le chiffrement asymétrique pour le même fichiers demande 1000 fois plus de temps. Ainsi pour la charmante photo il faut entre 15 et 20 minutes....multiplié par le nombre de destinataire! Il faudrait donc environ un jour et 8 heures pour chiffrer une première fois les fichiers, 2 jours et 16 heures pour le double chiffrement....soit 5 jours et 8 heures pour le simple double chiffrement/déchriffrement.
    Pamela à bien de la chance de n'envoyer qu'une photo à 100 destinataires : imaginer une entreprise qui doit envoyer son catalogue à 1000 clients (un catalogue demandant les trois garantis).
    Pamela, qui souhaite pourtant continuer à jouer la tombeuse va solliciter son neurone. Et la solution est sous ses (nos!) yeux. Si le chiffrage symétrique dure 1000x moins longtemps que le chiffrage asymétrique, pourquoi ne pas combiner les deux, tout en garantissant confidentialité, authenticité et intégrité?

    Et bien le schémas n'est pas bien compliqué!
     

    Le même que le précédent? Ho! Serais-je devenu fainéant? Et bien non, vous avez sous vos yeux la solution....enfin presque : il suffit simplement de mettre dans le texte clair une clé k de l'envoyer par mail, et ensuite de transférer la photo grâce au chiffrement à clé unique. La clé k sera connu du seul destinataire du message grâce au double chiffrement asymétrique, et le chiffrement symétrique de l'image sera donc très rapide : 
     
    La clé, mis dans un fichier *.txt pèse environ 1ko : il font donc 2 seconde pour effectuer le double chiffrement, 4 pour le chiffrement/déchiffrement.
    L'image pèse 1 Mo, il faut donc une seconde pour le chiffrer, et une de plus pour le déchiffrer.
    On passe donc de 5 jours et des brouettes à moins de 10 secondes...Magique non!
    Mais voilà (ne vous inquiétez pas c'est bientôt la fin) Pamela s'appelle en fait Robert et est un pervers notoire....Alors là cela n'est plus du domaine de la cryptologie. Le seul moyen serait de pouvoir prouver son identité grâce à une carte d'identité numérique.
    Il en existe déjà, délivrée par des organismes comme Verisign (auteur de certificats pour les banques, les sites marchants en ligne,...). Ces organismes délivreraient des cartes d'identités officielles, permettant de prouver son identité sur le net, ou de savoir à qui l'on parle vraiment.
    Mais ensuite il n'est plus question de confidentialité, authenticité ou intégrité mais d'anonymat...et là le sujet est extrêmement sensible.
     

    Télécharger cet article au format PDF (67.11 ko)

    Comments 4 comments
    Anonyme a dit…

    Je ne sait pas si la question est très pertinente mais connaissez vous des logiciels permettant de crypter/décrypter du texte en choisissant une clé, que je fournirai à mon contact auparavant pour qu'il puisse décrypter mon message et me renvoyer la réponse cryptée avec la même clé ... ?
    Merci d'avance.

    SICW a dit…

    Bonjour,
    cet article avait juste pour but de présenter le principe de fonctionnement des clés, je ne me suis pas vraiment intéressé aux solutions logiciels.

    Si j'ai bien compris vous souhaitez réaliser un chiffrage symétrique de texte (mail? document word?...)

    Je peux vous recommander un logiciel très simple : vous rentrer un code, puis votre texte, cliquez sur coder et votre message codé apparait.
    Votre correspondant devra (à partir du même logiciel) rentrer le code, rentrer le texte chiffré, et cliquer sur décoder.
    Codage 1.0 : http://www.ptorris.com/crypto.php (tout en bas de page)

    J'espère que c'est ce que vous recherchiez!

    Bonne journée
    SICW

    SICW a dit…

    Re!
    Un qui à l'air un petit peu plus performant (et qui a l'avantage de coder également le miniscules ^^) est Enigma 128 : http://enigma128.neuf.fr/telecharger.html

    Anonyme a dit…

    Sophos propose une solution gratuite performante :

    http://www.sophos.com/fr-fr/products/free-tools/sophos-free-encryption.aspx?utm_source=Data-protection&utm_medium=AdWords&utm_campaign=DP-FR-AW-EncryptionTool-A

    Cordialement,

    Videodrome

    Recevez les derniers articles par mail
    Ajouter à votre lecteur RSS

    Blogroll et Amis

    My Twitter Les derniers Tweets

    locations of visitors to this page

    Tous les articles ici présents sont sous licence Creative Common