vous utilisez probablement le cryptage, sous une forme ou une autre, tous les jours. Vous ne savez peut-être pas que vous l’êtes, mais vous l’êtes. Et ma conjecture est que vous n’avez pas de lui donner une seconde pensée. Avez-vous un service de télévision par câble ou par satellite basé sur un abonnement? Devinez quoi, une partie de ce contenu sera cryptée. Vous connectez – vous à des sites Web en utilisant https://? C’est plus de chiffrement. Jamais créé un.fichier zip avec un mot de passe? Vous l’avez compris, qui utilise un système de cryptage.,
je pourrais continuer et une liste des dizaines d’autres exemples de cryptage tous les jours, mais je ne le ferai pas. quant à Android, il prend également en charge le cryptage, non seulement pour le web avec https:// mais aussi pour vos fichiers et données. Android 6.0 Marshmallow a utilisé le cryptage complet du disque, tandis que Android 7.0 Nougat a ajouté l’option pour le cryptage par fichier. L’idée est que si votre téléphone tombe entre les mains d’hostiles, vos données privées sont sécurisées.
Alors, qu’est-ce que le cryptage? C’est le processus de prendre des données simples, y compris du texte, et de les convertir en une forme illisible (par les humains ou les ordinateurs)., Le processus de cryptage est basé sur une clé, l’analogie ici étant un verrou qui a besoin d’une clé, et seules les personnes avec la clé peuvent déverrouiller (décrypter) les données et les remettre dans leur forme originale. Cela signifie que toute personne qui met la main sur vos données cryptées ne peut pas les lire à moins d’avoir la clé.
comme le dit le personnage de Tom Jericho dans L’excellent film Enigma, « il transforme les messages en texte brut en gobbledygook. À l’autre extrémité se trouve une autre machine, qui traduit le message au texte d’origine.” Le chiffrement et le déchiffrement!,
tout a commencé avec César
l’art de l’écriture secrète, ce que nous appellerions le chiffrement, existe depuis au moins 2500 ans, mais l’exemple le plus célèbre de l’Antiquité est celui du chiffrement de substitution utilisé par Jules César pour envoyer des messages à Cicéron., Un chiffrement de substitution fonctionne comme ceci, vous commencez avec l’alphabet sur une ligne, puis ajoutez une deuxième ligne avec l’alphabet décalé le long d’un bit:
A B C D E F G H I J K L M N O P Q R S T U V W X Y ZX Y Z A B C D E F G H I J K L M N O P Q R S T U V W
Si vous voulez chiffrer le mot « bonjour”, alors vous prenez la première lettre, H, et regardez la lettre en dessous, qui vous donne E. Ensuite, le E donne B et ainsi de suite. La forme cryptée de HELLO est EBIIL. Pour le déchiffrer, vous recherchez E sur la rangée du bas et voyez le H au-dessus, puis le B en bas pour obtenir le E au-dessus et ainsi de suite. Terminez le processus pour obtenir bonjour.,
dans ce cas, la « clé” est 3, car l’alphabet a été décalé de trois vers la droite (vous pouvez également passer à gauche à la place). Si vous passez à touche-à-dire 5, puis vous obtenez ceci:
A B C D E F G H I J K L M N O P Q R S T U V W X Y ZV W X Y Z A B C D E F G H I J K L M N O P Q R S T U
Maintenant, la version chiffrée de BONJOUR serait CZGGJ. Très différent D’EBIIL. Dans ce cas, la clé est de 5. La magie!
cependant, il y a quelques problèmes majeurs avec cette forme de cryptage. Tout d’abord, il n’y a que 26 clés. Vous avez peut-être entendu parler de gens parlant de clés 128 bits ou de clés 256 bits, Eh bien c’est une clé 5 bits (c’est-à-dire que 26 en binaire est 11010)., Il ne faudrait donc pas trop de temps pour essayer les 26 variations et voir laquelle commence à produire un texte compréhensible.
Deuxièmement, l’anglais (et d’autres langues) a certaines caractéristiques. Par exemple, E est la lettre la plus populaire en anglais, donc si vous aviez un bon morceau de texte, vous pouviez voir quelle lettre apparaît le plus souvent, puis deviner que c’est E. déplacez l’alphabet du bas pour faire correspondre E avec le caractère le plus commun et vous avez probablement craqué le code. En outre, il n’y a que quelques lettres qui peuvent doubler en anglais, comme OO, LL, SS, EE et ainsi de suite., Chaque fois que vous voyez un double comme le II ou GG (à partir des exemples ci-dessus), vous devriez essayer de faire correspondre ceux des alphabets en premier.
La combinaison de la petite clé et du fait que la même lettre crypte toujours la même lettre correspondante sur l’alphabet de chiffrement signifie qu’il s’agit d’un cryptage très faible. Et aujourd’hui, avec les ordinateurs qui font le travail acharné, c’est au-delà de la faiblesse!,
Plus d’alphabets et de chiffrement incassable
Les faiblesses du César chiffrement de substitution peut être légèrement atténué en utilisant plus d’un alphabet décalé. L’exemple ci-dessous peut être étendu à 26 alphabets décalés dont plusieurs sont utilisés à la fois, mais pas tous.
A B C D E F G H I J K L M N O P Q R S T U V W X Y ZZ A B C D E F G H I J K L M N O P Q R S T U V W X YY Z A B C D E F G H I J K L M N O P Q R S T U V W XX Y Z A B C D E F G H I J K L M N O P Q R S T U V WW X Y Z A B C D E F G H I J K L M N O P Q R S T U VV W X Y Z A B C D E F G H I J K L M N O P Q R S T U
donc, si nous mettons la clé sur WVY, cela signifie que nous utilisons d’abord L’alphabet commençant par W, puis celui commençant par V et enfin celui commençant par Y. ceci est ensuite répété pour coder le message entier. Alors bonjour deviendrait DZJHJ., Notez que maintenant le double L dans HELLO n’est pas codé comme le même caractère, il est maintenant J puis H. de plus, le premier J dans le texte crypté est le code pour L tandis que le second on est le code pour O. donc J maintenant ne représente pas toujours la même lettre de texte brut.
Une version de cette idée, avec 26 alphabets, est à la base du chiffre de Vigenère qui a été publié au 16ème siècle par Blaise de Vigenère. Une idée similaire a également été décrite par Giovan Battista Bellaso en 1553., Le chiffre Vigenère est resté incassable pendant 300 ans jusqu’à ce qu’il soit craqué par Charles Babbage puis par Friedrich Kasiski. Le secret pour briser le chiffre Vigenère est de comprendre qu’en fin de compte les mêmes mots peuvent être codés en utilisant les mêmes lettres parce que les mêmes alphabets sont utilisés encore et encore. Ainsi, le mot « et” peut être codé différemment les premières fois qu’il apparaît, mais finalement il sera codé à nouveau en utilisant les mêmes lettres. La répétition est généralement la chute d’un chiffre.,
La répétition est la faiblesse du chiffre César, du Vigenère et de toutes les variantes, mais il existe une façon d’utiliser un chiffre alphabet pour créer un code secret incassable sans répétitions, il s’appelle le pad unique. L’idée est que plutôt que d’utiliser un alphabet décalé, une séquence aléatoire de lettres est utilisée. Cette séquence doit être vraiment aléatoire et doit avoir la même longueur que le message.
I S T H I S U N B R E A K A B L EP S O V Y V U B M W S P A H Q T D
plutôt que de faire une substitution droite cette fois, nous utilisons addition, avec une torsion., Chaque lettre de l’alphabet se voit attribuer un numéro, A est 0, B est 1, C est 2 et ainsi de suite. Je est la 9ème lettre de l’alphabet, ce qui signifie qu’il a une valeur de 8. P (la lettre ci-dessous sur notre tampon à chiffrement unique) 15. 8 + 15 = 25 ce qui signifie X. La deuxième lettre de notre message est S, qui a la valeur 18. Il se trouve que S est également la lettre sur notre tampon unique (ce qui n’est pas du tout un problème). 18 + 18 = 36. Maintenant, voici la torsion, il n’y a pas de 36ème lettre de l’alphabet. Nous effectuons donc ce qu’on appelle une opération de module., Ce que cela signifie essentiellement, c’est que nous avons divisé le résultat par 26 (le nombre de lettres dans l’alphabet), et utiliser le reste. 36 / 26 = 1 reste 10. La lettre avec la valeur de 10 est K. Si vous continuez à faire cela, le message chiffré final est:
X K H C G N O O N N W P K H R E H
la raison pour laquelle ce code est incassable est que vous n’utilisez la clé (la chaîne aléatoire) qu’une seule fois. Cela signifie que toute personne essayant de décoder le message n’a pas de point de référence et il n’y a pas de répétition. Le prochain message à envoyer utilisera une clé aléatoire complètement différente et ainsi de suite.,
le plus gros problème avec les pads uniques, est d’obtenir les clés de l’autre partie afin qu’ils puissent déchiffrer le message. Traditionnellement, cela se faisait à l’aide d’un livre sous la forme d’un bloc-notes, avec les différents codes sur chaque page. Les pages utilisées changeaient tous les jours et une fois qu’un code était utilisé, il pouvait être extrait du pad et jeté. Cependant, ces tampons doivent être transportés dans une méthode sécurisée. Parce que si quelqu’un d’autre obtient les codes, le cryptage peut être fissuré., Cela signifiait essentiellement que vous deviez rencontrer l’autre partie avant la main et convenir des codes qui seraient utilisés et quand. C’est la méthode la plus sûre, mais c’est aussi la plus lourde, et ce n’est certainement pas une solution réalisable pour le monde numérique moderne d’aujourd’hui.
l’ère numérique
Au cours du 20ème siècle, le cryptage est devenu mécanisé, l’exemple le plus célèbre étant la machine Enigma utilisée par les nazis pendant la Seconde Guerre mondiale. cependant, après la guerre, le cryptage est devenu informatisé., La cryptographie informatisée présente trois grands avantages:
- Les ordinateurs sont flexibles, contrairement aux boîtes mécaniques, les ordinateurs peuvent être programmés pour effectuer de nombreuses opérations différentes sur un message et le nombre et la complexité de ces opérations peuvent être modifiés relativement rapidement.
- Vitesse.
- Les ordinateurs traitent des nombres binaires et pas seulement des lettres.
Les Points 1 et 2 sont très importants, en particulier lorsque l’on compare les ordinateurs aux méthodes de chiffrement mécanique. Cependant, le changement de paradigme est que les ordinateurs traitent des chiffres et non des lettres., Cela signifie que le cryptage peut être appliqué à tout type de données. Un message texte, une image, un fichier audio, un film, une base de données, des fichiers sur un smartphone, etc.
avec le passage des lettres au binaire est venu un changement dans la façon dont le cryptage est effectué. Les lettres entières n’ont plus besoin d’être chiffrées, mais les uns et les zéros peuvent être manipulés pour donner de nouvelles séquences. Le mot HELLO en ASCII 8 bits est 01001000010001010100110001001100010011111. De là, le binaire peut être manipulé d’une myriade de façons différentes. Il peut être divisé, déplacé, ajouté, multiplié, peu importe.,
la méthode utilisée pour traiter les uns et les zéros est connue sous le nom d’algorithme cryptographique et il existe de nombreux types d’algorithmes différents. Les principales caractéristiques d’un algorithme de chiffrement sont sa sécurité (peut-il être fissuré) et ses performances (combien de temps faut-il pour encoder ou décoder des données).
Les chiffrements de flux sont comme des tampons uniques en ce sens que les données ne sont pas seulement cryptées sur une seule clé, mais plutôt une séquence de nombres pseudo-aléatoires basée sur la clé. La différence entre un pavé unique et un chiffrement de flux est qu’avec un pavé unique, la clé doit être vraiment aléatoire. Avec les chiffrements de flux utilisant la même clé signifie que vous obtenez la même séquence de nombres, c’est ce qui permet de décoder le message., Cependant, sans la clé, la séquence semble aléatoire et est donc difficile à casser.
la faiblesse de RC4 était que dans certaines circonstances et dans certaines conditions (principalement lorsque les mêmes données ont été cryptées à plusieurs reprises), il est possible de deviner quels nombres pourraient venir ensuite dans la séquence. Cette supposition réduit le nombre de combinaisons possibles et permet d’utiliser une attaque par force brute (où chaque combinaison est essayée). Pour que l’attaque fonctionne, beaucoup de données sont nécessaires. Le RC4 NO MORE attack doit collecter 75 heures de données chiffrées, sur la base de 4450 requêtes par seconde.,
l’autre type majeur de chiffrement est le chiffrement par bloc. Cela fonctionne en divisant les données en blocs plus gérables, disons 64 bits. Chaque bloc est traité plusieurs fois, appelés rounds (comme en boxe). Pour chaque cycle, le bloc est divisé en deux parties égales, la gauche et la droite. La partie droite reste intacte tandis que la partie gauche est cryptée à l’aide d’une fonction spéciale, appelée fonction ronde. La fonction prend deux entrées, la clé et la partie droite (la partie qui est allé intact). Le résultat de la fonction round est ensuite « ajouté » à la partie gauche en utilisant XOR.,
Ce modèle est connu sous le nom de chiffrement Feistel, du nom de son inventeur Horst Feistel qui a travaillé sur le chiffrement chez IBM. Son travail a finalement conduit à l’élaboration de la norme de cryptage des données (DES). En 1977, DES est devenu la norme de cryptage officielle pour les États-Unis et a vu son adoption dans le monde entier. DES utilise 16 Tours travaillant sur des blocs 64 bits. Le problème avec DES est que la NSA a limité la taille de la clé à 56 bits. Alors qu’en 1977 cela suffisait, à la fin des années 1990, il est devenu possible pour les organisations non gouvernementales de casser les messages cryptés Du DES.,
Jargon BUSTER
Exclusive OR (XOR) – c’est une opération logique de niveau de bits qui est appliquée à 2 bits D’entrée A et B. L’exclusif ou renvoie true ou false (1 ou 0) à la question, « a ou B, mais pas, a et B”. Vous pouvez penser que, « l’un ou l’autre mais pas les deux”. Donc, si A est 1 et B est 0 alors c’est l’un ou l’autre, donc le résultat est 1 (vrai). Le même résultat s’applique à A est 0 et B est 1. Mais si A est 0 et B est 0, alors le résultat est 0 (faux), car les deux ont la même valeur. False est également donné pour A est 1 et B est 1.,
mais la vraie magie de XOR est qu’il est réversible. Si a XOR B = C alors B XOR C = A, et a XOR C = B. Ceci est très important pour le cryptage car cela signifie que les données peuvent être cryptées (où A est les données) en utilisant une clé (B) pour obtenir les données cryptées (C). Plus tard, les données cryptées peuvent être déchiffrées par XOR avec la clé à nouveau pour obtenir les données d’origine. La raison pour laquelle XOR est utilisé en conjonction avec des fonctions rondes compliquées et des opérations de décalage de bits est que XOR peut être cassé en utilisant l’analyse de fréquence (en raison de la clé qui se répète constamment).,
en réponse aux faiblesses de DES, une nouvelle norme a été proposée appelée Triple DES (3DES). Qui a essentiellement crypté les données trois fois avec DES, mais avec trois clés différentes. 3DES a offert un moyen d’augmenter la taille de la clé de 56 bits à 168 bits sans avoir besoin de concevoir un tout nouvel algorithme de chiffrement par bloc. En raison de certains détails techniques, la clé effective est de 112 bits, mais si vous aviez une machine capable de casser DES en 1 minute, il faudrait environ 260 658 ans à la même machine pour casser une clé Triple-DES.,
alors que DES avait servi son but pendant près de 25 ans, la longueur de clé limitée signifiait qu’il était temps pour une autre norme de cryptage. En 2001, le National Institute of Standards and Technology (NIST) des États-Unis a publié le Advanced Encryption Standard (AES). Ce n’est pas un chiffrement de Feistel, mais plutôt un réseau de substitution-permutation. Il utilise toujours des blocs et des tours Comme DES, mais lors de chaque tour, l’ordre des bits du bloc est échangé et le résultat est combiné avec la clé en utilisant XOR.
AES utilise des clés de 128, 192 ou 256 bits et fonctionne sur des blocs de 128 bits., Le nombre de tours utilisés dépend de la taille de la clé. Le minimum est de 10, qui est utilisé pour les clés de 128 bits et le maximum est de 14, qui est utilisé pour les clés de 256 bits.
AES, Android et l’ARMv8 architecture
AES est au cœur de chiffrement sous-systèmes Android. Pour Android 5.0 et Android 6.0, Google a imposé l’utilisation D’AES avec au moins une clé 128 bits pour les appareils prenant en charge le cryptage complet du disque., Avec Android 7, Google est passé au cryptage basé sur les fichiers (FBE) qui permet de crypter différents fichiers avec différentes clés tout en permettant aux fichiers d’être décryptés indépendamment. Il semble que FBE dans Android 7 utilise AES 256 bits.
lorsque ARM est passé de 32 bits à 64 bits, il a défini une nouvelle révision de son architecture de jeu d’instructions appelée ARMv8. En plus de définir le jeu d’instructions pour les puces ARM 64 bits, il a également ajouté de nouvelles instructions pour implémenter des parties de l’algorithme AES dans le matériel. Au cours de chaque tour, divers bits sont échangés et substitués., La façon dont les bits sont manipulés est bien définie (et fait partie de la norme), de sorte que les extensions AES dans ARMv8 permettent à ces parties du cryptage de se produire dans le matériel plutôt que dans le logiciel.
le résultat est un cryptage ultra-rapide, qui devrait avoir un impact négligeable sur les performances globales du système. L’implémentation AOSP du cryptage basé sur des fichiers utilise AES – 256 et nécessite une performance d’au moins 50 Mo/s.
cryptographie à clé publique et conclusion
La Plupart de ce que nous avons discuté jusqu’à présent est connu sous le nom de chiffrement symétrique., Pour chiffrer et déchiffrer un message, l’expéditeur et le Destinataire doivent connaître la clé secrète. Il existe une forme de cryptage appelée cryptage asymétrique où il existe deux clés, une pour crypter les messages et une autre pour les déchiffrer. La clé de chiffrement peut être publiée librement pour tous ceux qui souhaitent envoyer un message au destinataire, mais la clé de déchiffrement doit rester secrète, mais doit seulement être connue par le destinataire. Cela signifie qu’il existe une clé publique et une clé privée. Ce système est la base du fonctionnement de la sécurité sur Internet, du fonctionnement du protocole https://., Cependant c’est une histoire pour un autre jour!
en terminant, je veux ajouter une mise en garde. Le cryptage est un sujet complexe et il y a beaucoup plus au cryptage que je l’ai écrit ici.