logo
Menu

Sensibilisation à la sécurité informatique à travers la cryptographie

8 août 2016 - Cryptographie, Projet, Site Web
1 531 vues
Sensibilisation à la sécurité informatique à travers la cryptographie

Envie de savoir pourquoi un mot de passe comme celui-ci : « apj4ld!3fh » est plus sécurisé que « abcdef », et de comprendre pourquoi ? Je vous propose de faire un tour sur le fonctionnement basique de la cryptographie et les moyens qu’ont les « hackers » de retrouver les mots de passe.


Qu’est-ce qu’une empreinte ? Qu’est-ce que MD5, ou SHA-1 ?

Une empreinte est un identifiant unique que l’on attribue à une chaine de caractères (comme « abcdef »). Dans le cas de la méthode de cryptographie MD5, cet identifiant est une chaine de 32 caractères, appelé « hash », et composé de lettres minuscules et de chiffres uniquement.

Voici à quoi une empreinte MD5 ressemble :
Pour « abcdef » en MD5 : e80b5017098950fc58aad83c8c14978e.

Ces identifiants (empreintes), ont un but : ne jamais être identiques pour deux chaines de caractères différentes. Si jamais on retrouve des empreintes identiques, alors on change de technologie de cryptographie (d’algorithme de hash). C’est ce qu’il s’est passé pour le MD5 : en 2004, des chercheurs chinois ont retrouvé des chaines identiques. Ainsi est né le SHA-1 pour remplacer le MD5.
Celui ci donne des empreintes de 40 caractères, donc beaucoup moins de chance (1 sur 1.8264476*10^96) d’obtenir des chaines identiques.

Pour « abcdef » en SHA-1 : 1f8ac10f23c5b5bc1167bda84b833e5c057a77d2.

Quelle utilité ?

L’avantage premier de ces technologies, est qu’elles ne portent pas l’information en elle même. Par exemple pour un mot de passe comme « abc », l’empreinte MD5 va donner : 900150983cd24fb0d6963f7d28e17f72.
Si jamais le mot de passe est « fhaibeznuofhdnsiguod4189hsgiuh7319uirbkjfn », le MD5 sera : 08423691c3caf7b6a98314fa8a293429.

On voit bien que quelque soit la longueur ou la variété du mot de passe (ou même d’un fichier), on obtiendra une chaîne de 32 caractères. Donc impossible de retrouver l’original (sans faire des millions/milliards de calculs, cette méthode étant appelée « brutforce »).

Nous allons voir à quoi peut donc servir cela :

  1. Vérifier l’intégrité (l’authenticité) d’un fichier [sécurité].

    Vous le savez, un fichier est composé de 1 et de 0, c’est du code binaire, langage compréhensible par les ordinateurs.
    Admettons que notre programme possède le (très court) code suivant : « 0101101000100100100100100001001001010011 ».
    … et que vous souhaitez télécharger ce programme. Comment vérifier que le programme que vous souhaitez télécharger est celui qui va être/a été téléchargé ? L’empreinte de ce fichier ! En effet, pour des raisons de sécurité, il est nécessaire que l’empreinte du programme à la réception soit celle du programme originale.
    Si jamais ce n’est pas le cas, c’est qu’une personne ou un programme malveillant a modifié le programme original, et qu’il pourrait à l’intérieur avoir inséré entre autre un enregistreur de vos touches de clavier (pour éventuellement capturer votre carte de crédit – ce genre de programme est appelé keylogger).

    Et comment faire ?
    Il est nécessaire que celui qui propose le téléchargement de son fichier fournisse l’empreinte de son programme.
    Ainsi, il suffit que l’ordinateur de celui qui télécharge calcule l’empreinte du fichier reçu et la compare à l’originale.
    Dans la réalité, si vous êtes sur une adresse web HTTPS, tout est fait automatiquement. Sinon, vous pouvez utiliser ce tutoriel 😀 http://www.pcastuces.com/pratique/windows/integrite_md5/page1.htm.

    Préférez donc toujours télécharger sur des sites premièrement de confiance (populaires), mais surtout qui possèdent une adresse url HTTPS.

  2. Vérifier l’intégrité d’un fichier (mise à jour).

    Via le même processus, l’empreinte permet de savoir si un fichier a été mis à jour. Admettons que vous avez un fichier A avec l’empreinte suivante : 0cc175b9c0f1b6a831c399e269772661.
    … mais que ce fichier vous parrait quasiment identique au premier ou bien que vous n’êtes pas sûr d’avoir sa dernière version. Il suffit alors de vérifier l’empreinte du fichier B (dernière version du fichier). Si jamais son empreinte est identique à celle du fichier A, vous possédez le dernier programme, sinon, il faut penser à télécharger la dernière version du programme (bien entendu me direz-vous).

  3. Vérifier un mot de passe lors d’une connexion.

    Lorsque vous vous inscrivez sur un site web, celui ci ne gardera jamais votre mot de passe en clair dans sa base de données. En revanche, il enregistrera justement une empreinte de votre mot de passe ! Cela évite que si jamais un hacker arrive à avoir accès à la base de données, il puisse directement avoir vos informations personnelles (pratique hein :p).Mais comment alors, va-t-il pouvoir savoir si le mot de passe que vous avez entré est le votre ? En comparant.

    Voyons comment cela fonctionne :

    1. Vous vous rendez sur la page de connection et écrivez votre mot de passe.
    2. Vous envoyez le formulaire de connexion.
    3. Le serveur reçoit votre mot de passe en clair (ou chiffré si il y a une connexion HTTPS, mais qu’il déchiffrera en clair de toute manière pour le traitement suivant).
    4. Il hash (créer l’empreinte) du mot reçu et le compare au mot dans la base de données.
    5. Si les deux empreintes correspondent, l’accès est autorisé, sinon refusé.

OUAW, 1.8264476*10^96 possibilités 😮 ?!

Longueur des mots de passe.

Décortiquons un peu ce chiffre. Parce que ça fait beaucoup de puissances !  😀

En informatique, il y a 255 caractères de base, appelés caractères ASCII, les voici tous :

Donc pour un mot de passe à un caractères, il y a 255 possibilités différentes pour qu’il soit celui que l’on cherche.

Que se passe-t-il pour un mot de passe à deux caractères ? C’est 255^2 combinaisons, soit 65025. Ca fait déjà beaucoup hein ! Voyez l’importance d’un mot de passe long directement.

Pour un mot de passe à 6 caractères, il y a 255^6 soit ~274941997000000 combinaisons possibles. C’est déjà mieux mais pas assez. Préférez donc utiliser un mot de passe à au moins 8 caractères.

Voici donc donc la formule : 255^nombre_de_caractères.

Variété des mots de passe.

La longueur du mot de passe va de paire avec les différents caractères qu’il utilise.
Par exemple, si vous utilisez uniquement des lettres minuscules, vous laissez aux hackeurs une combinaison de caractères bien moindre : les lettres minuscules représentent uniquement 25 caractères.

Faisons un petit calcul de la perte de sécurité :

Pour un mot de passe à 6 caractères, uniquement en lettres minuscules il y a 25^6 soit 244140625 combinaisons possibles.
Pour un mot de passe à 6 caractères, utilisant potentiellement tous les caractères ASCII, il y a 255^6 soit ~274941997000000 combinaisons possibles.

Total : « abcdef » est un mot de passe 1126162 fois moins sécurisé que « Ab3D!è ».

Vous comprenez maintenant mieux l’importance d’un mot de passe fort et long =) !

Puissance de calcul :

L’outil des hackers.

Après que le hacker ait réussi à avoir accès à la base de données, il devra dans la plupart des cas afin de retrouver un mot de passe à partir d’une empreinte, tenter de la comparer à toutes les combinaisons de mot de passe possibles.

Pour cela, on s’y prend de deux méthodes, l’une après l’autre pour des raisons de performance.

  1. Vérification par dictionnaire.
    1. Ces dictionnaires sont un fichier texte qui contient un grand nombre de mots de passe les plus couramment utilisés. Il y a un mot de passe par ligne, chaque mot est convertit selon l’agorithme de hash (empreintes) souhaité (comme le MD5 ou le SHA-1 par exemple) et comparé à l’empreinte que l’on souhaite décoder.
      C’est une méthode qui a l’avantage d’être rapide et qui souvent aboutit.
  2. Méthode bruteforce.
    1. Toutes les empreintes des combinaisons de chaines de caractères possibles sont comparées à l’empreinte que l’on souhaite décoder. Cette méthode est lente mais fonctionne à coup sûr (si tenté que l’on possède un ordinateur assez puissant).
    2. On peut espérer décoder sur un ordinateur traditionnel des empreintes possédant à l’origine jusqu’à 6 caractères (3 heures max. de calculs).

On comprend bien en travaillant sur de tels programmes de résolution d’empreintes, que la puissance de calcule de nos ordinateurs conventionnels est aujourd’hui extrêmement faible. En effet, pour réussir à retrouver un mot de passe de 6 caractères, il faut déjà un peu moins de 3 heures. Pour 7 caractères, il faut 28 jours. Oui on vient de multiplier par plus de 230 le temps de résolution.
Cette durée est le temps nécessaire au test de toutes les combinaisons de caractères possibles.

Ce genre de programmes qui à coup sûre vont finir par trouver le résultat rélèvent aussi le problème de la puissance de calcule de nos ordinateurs qui augmente exponentiellement en fonction du temps. Voici la courbe des puissances de calcule des super-ordinateurs en fonction du temps :

Tout ça grimple très vite ! Et nos risques en matière de sécurité avec. Imaginez qu’un super calculateur un jour ait la possibilité de cracker le mot de passe de votre compte bancaire, qu’importe le nombre de combinaison possible, ce serait problématique !

Je conclue sur l’importance (donc) de choisir des mots de passe forts et de développer de nouvelles techniques de cryptographie toujours plus performantes et indépendantes : essayez de développer vos propres algorithmes de chiffrement si vous devez traiter des données, afin que vous seul soyez capable de comprendre le fonctionnement d’un potentiel moyen de déchiffrement.


J’espère avoir été clair, ou du moins assez clair 😛 , pour que vous compreniez tout ce que j’ai tenté de vous expliquer ainsi que l’importance de choisir des mots de passe forts et longs !

Enfin, je vais très prochainement publier un article sur mon algorithme de résolution d’empreintes ! Celui ci sera capable de retrouver l’original d’empreintes MD5 et SHA-1 à travers les deux méthodes que l’on a vu dans cet article.

Si jamais vous avez des questions, n’hésitez pas à laisser un commentaire.

A très bientôt  😀

Share This:

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.