Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 25-06-2013 19:58:21
- Hal
- Invité
Quelques notions pour un ignorant...
Bonjour, je m'intéresse un petit peu à la cryptologie notamment pour m'amuser à crypter des fichiers de type texte(notes personnelles, journal, agenda etc) sur mon ordinateur. Je dois commencer par dire que je n'y connais quasiment rien et je ne cherche pas véritablement à étudier le sujet mais simplement à avoir une petite idée de ce que vaut ce que je suis capable de faire.
Donc pour le programme "cryptant", je code en Dark Basic, seul langage de programmation que je sais utiliser n'étant pas particulièrement doué en informatique, donc inutile de me faire remarquer ce c'est pas du tout performant, je le sais^^
Pour le processus de cryptage, ce qui me semble jusque là le plus prometteur (et qui fonctionne), c'est un truc qui ressemble à ce qu'on appelle le "masque jetable" je crois. J'explique:
-Grâce à la commande "read byte" je peux lire chaque octet d'un fichier un à un et ça me donne toujours un nombre entier compris entre 0 et 255 qui correspond plus ou moins(en tout cas pour le texte) aux caractères ASCII.
-Donc je transforme chaque octet en un autre en appliquant l'opération suivante via un fichier clé (toujours plus long que le fichier à coder): j'additionne le nombre de l'octet du fichier de départ avec celui du fichier clé qui a la même position, puis je retire 256 si nécessaire(si >255).
-De cette façon, j'arrive à crypter (et à retrouver le fichier d'origine en décryptant) des fichiers de type texte, image et même vidéo (types de fichier qui peuvent aussi être utilisés comme fichier clé d'ailleurs). Ça marche peut-être pour plein d'autres types de fichier mais probablement pas tous j'imagine.
Voilà, donc à propos de cette méthode, je suis très curieux de savoir quel degré de difficulté cela prendrait pour décoder un fichier ainsi crypté, sans avoir accès au programme ni au fichier clé ?
Et d'une façon générale, est-ce que j'ai raison de penser que, sans tenir compte du temps de cryptage et décryptage, c'est assez facile de créer un fichier indécryptable(toujours en ne possédant que le fichier crypté bien sur) en utilisant plusieurs fois cette méthode, avec plusieurs clés et/ou en la combinant avec d'autres méthodes plus ou moins compliqués, dont une simple substitution(par exemple) ?
Parce que j'ai du mal à imaginer comment on pourrait, même avec tout le temps qu'on veut, déchiffrer un fichier qui serait ainsi crypté selon un mélange aléatoire de nombreuses méthodes efficaces et reconnus appliquées partiellement ou complètement et des transformations improvisées soi-même.
Voilà, désolé si mes questions paraissent évidentes ou idiotes mais je n'y connais pas grand chose et en parcourant brièvement le forum je n'ai trouvé que des sujets portant sur des questions bien particulières.
#2 26-06-2013 07:09:02
- gielev
- Membre
- Inscription : 08-03-2007
- Messages : 425
Re : Quelques notions pour un ignorant...
salut,
Si la clé que tu utilises est aussi longue que le fichier à crypter (et tu dis que c'est le cas) alors ton fichier crypté est indéchiffrable.
Il y a cependant une condition à ce que je viens de dire : c'est que tu ne dois utiliser ta clé qu'une seule fois.
Si tu l'utilises pour de nombreux fichier, l'analyse des nombreux cryptos obtenus pourrait permettre le déchiffrage plus ou moins facilement (essentiellement selon le nombre de cryptos dont on dispose)
@Nerosson : tu confirmes ?
gielev
Hors ligne
#3 26-06-2013 18:29:11
- nerosson
- Membre actif
- Inscription : 21-03-2009
- Messages : 1 658
Re : Quelques notions pour un ignorant...
Salut à tous,
@Gielev,
Comme tu le sais, quand il s' agit d'une cryptographie informatisée, je me tiens sur une prudente réserve.
Toutefois, dans le cas présent, il me semble qu'il y a certaines règles qui, n'ont rien perdu de leur valeur.
1) pour moi, quelqu'un qui s'intéresse à la crypto n'est jamais idiot (freddy dirait: "nérosson est l'exception qui confirme la règle...")
2) si l'on procède par addition d' un fichier clair avec un fichier clé, il importe que :
a) ce fichier clé soit aléatoire (à tout le moins incohérent), parce que sinon, si l'on cherche à placer une séquence cohérente probable dans le crypto, on en déduira une séquence cohérente dans la clé,
b) ce fichier clé ne doit servir qu'une fois, parce que, si on parvient à placer une hypothèse correcte dans un fichier crypto, il en résultera un fragment clé qui donnera aussi des résultats corrects dans les fichiers clairs chiffrés avec la même clé, confirmant ainsi l'hypothèse de départ.
Je ne suis pas sûr d' avoir totalement exploré le terrain, parce que , comme je le disais en début de post, ledit terrain ne m'est pas familier.
Notons aussi que la notion d' "aléatoirité" peut prêter à d'interminables débats.
J'aimerais dire (une fois de plus) que cette expression de "masque jetable", que je n'ai jamais, je dis bien jamais, rencontré dans ma carrière, n'est absolument pas parlante, alors que l'expression "clé aléatoire une fois" dit si bien ce qu'elle veut dire.
Dernière modification par nerosson (26-06-2013 18:33:49)
Hors ligne
#4 28-06-2013 20:31:06
- Hal
- Invité
Re : Quelques notions pour un ignorant...
Merci pour vos réponses, maintenant j'ai modifié un peu mon programme de base de manière à pouvoir crypter tout le contenu d'un répertoire (uniquement les fichiers, les dossiers sont ignorés) via une seule clé de telle manière qu'elle n'est pas réutilisé depuis le début à chaque fois qu'on passe d'un fichier à l'autre. Donc tant que le fichier clé est d'une taille supérieure à la somme de tous les fichiers contenu dans le répertoire, les conditions de taille de la clé et de l'utilisation unique de celle-ci sont remplies(puisque que l'idée c'est de réunir tous les fichiers qu'on veut crypter en un seul endroit et de les crypter en même temps une seule fois pour une clé donnée).
Par contre, pour la condition de l'"aléatoirité" de la clé, c'est une autre histoire.
Pour l'instant, voilà l'idée que j'ai, vous me direz si elle est bonne: j'envisage d'utiliser des fichiers vidéos comme clés parce qu'ils peuvent être très volumineux(remplissant facilement la condition de la taille minimum de la clé), très accessibles (je télécharge beaucoup de séries et de films^^) et enfin (ça je viens d'y penser à l'instant) parce qu'ils sont assez insoupçonnables et qu'ils n'y aurait pas forcément besoin de les dissimuler (par exemple: un épisode de telle série stocké sur l'ordinateur où j'ai par ailleurs plus de 200giga de vidéos répartis en plusieurs centaines(voire milliers) de vidéo de séries ou de films...). Dans ces conditions, est-ce que le contenu en octet d'une vidéo peut-être considéré comme "incohérent" comme tu le préconises, nerosson ?
Je sais pas si vous avez déjà essayer d'ouvrir un fichier vidéo avec un éditeur de texte mais ça donne une suite de caractère qui parait aléatoire. Pour donner un exemple, voici un morceau tirée d'une vidéo:
¢jô'ÁÅ–“uß>fû}Ž@©œoOù(ržY^ÚY{)qk3Ï)ùÚ¿¡"LÛcQš°˜ËYe2ILÀŽì¿ê…ØqM£Ï©29¸•‹˜iX²—·½ê:¨¥´}÷Îáxlœ6mñî'Üëìï¹øTV<þz—nzK¢ÈLMmUºõÝ2k@u„?ˆ¨3½wÿ¦™7‚°ø˜£Òø_ÿGÔ]Z¤rÂk¾§Ù8£¥ÌU!q7µ·—þ1t훹p§àG‚²Y7¶ æ¿pBM× €mžAz”÷p¶ÏÇHCí
oT½ïµ—ö¿j#y"í4SyTåüã²)žàç!¨¢KbeØo-ì¼à²ñ:a|´\Dß)$¥;8®ÆÐd'\¶gÙ÷Rª¶¾#®e¶SQœêcö*ÌA{[g,¦¥²IÔKj¡ÄC|‰%¸ÙÁœò]ûÔÝŽ¢©Ûã³vp¾^_YéycNâ&V²ø²÷„¦Œçƒþg)ˆ7‘Z¸n£O\é¼ÑÝŒõÐßÙ†x_ÛŠO\ª÷{þ%Vx qI4ajP† »…²‘EÖ0ZK£†Ÿ^›]s`¸þˆ¦íÕTÌeiÐ^[§íÎSàÈÜßô$0vñnÛÏ{Nµ•‡–"¹Ó`W?ž‹.œköKö %›æˆ 29‰)ö„“0øj`Çà#.d\,äüöß,¢[îï«…U@yµq&S8¦Ò–x÷Š]:ÄŒÈüGºlÞ•ïØœ[²›lÅM‘Íz™»ƒFLøm¨|ø¼;Òf™˜¦¨ûÁ¿ôn½Jõ|ÂPF'ÇLjªE¡¿
î!Ö}nïgI4ý½£6Ü_42™`(.k-n9°9¿ûÕðª}™VÓÉys²‡NDÜy/®»{Í#œîñÇ.Ômoàäæv(3$YODÍŠ¨©ÆñÓÊ¥±5z©Èo’Šnr@ù¤6ë<–d*ÄŠ, Bö)`¡y\6úû‡4´Œ?<~:ÇJcû庺šiyåÎwûÞ¬
¬Ž\°tAw3êKÖº?#ÆPÝäˆ"“DšH檵æU(Īõx}H‘éàÊAe3Æìhcº‰nÁ8e^^ÏÞHä…¹±.FuÂ$—ºãýIàsÎÛxYy5>²ÂkÛ]p%RøTêe'¹ëÃ@ÙÎvap~¬üKSÿ¹AHNcwZ
Il est important de remarquer que tout le contenu cité ne peut pas forcément être affiché(caractère non affichable par l'éditeur de texte et caractère non-affichable du tout(=instructions comme par exemple: passer à la ligne).
Je ne sais pas si c'est vraiment utile(en tout cas ça m'amuse^^) mais j'aimerais présenter un exemple précis d'un texte crypté à partir d'un morceau de fichier vidéo. Ici, le fichier vidéo que j'ai choisi est au format mkv et pèse 2.12 Go et plus précisément 2 287 878 549 d'octets.
Le but, c'est de crypter un texte de 20 caractères(ou octets) à l'aide d'un morceau du fichier vidéo de taille équivalente.
Comme les premiers octets du fichier sont consacrés à sa description et ses paramètres, pour trouver une séquence aussi aléatoire que possible, je vais "sauter" les 1 milliards de premiers octets pour arriver très à peu près au milieu du fichier(on suppose donc que la séquence obtenu correspond directement à du "contenu vidéo" pur). Les 20 octets que j'utilise sont donc les octets numéro 1 000 000 001 à 1 000 000 020 dans le fichier.
Avec un éditeur de texte, ça donne:
ÝK§¾õjwN´Ž7¥@
Je remarque au passage que sur ce forum ça affiche 15 caractères, alors que dans mon "bloc note" j'en ai 18. Mais peu importe, il y a bien 20 octets, donc 20 "entités" et pour pouvoir les utiliser, voici la transcription brut en tant que nombres compris entre 0 et 255(je sépare les nombres par des tirets pour ce soit plus lisible):
221-127-75-167-190-245-29-106-25-7-127-30-119-78-180-22-142-55-165-64
Ensuite, prenons la chaine de 20 caractère qu'on veut crypter:
Il était une fois...
Et son équivalent selon le code ASCII:
73-108- 32-233-116- 97-105-116- 32-117-110-101- 32-102-111-105-115- 46- 46- 46
Maintenant, on ajoute la clé au texte clair:
clair: 73 108 32 233 116 97 105 116 32 117 110 101 32 102 111 105 115 46 46 46
clé: 221 127 75 167 190 245 29 106 25 7 127 30 119 78 180 22 142 55 165 64
crypté: 38 235 107 144 50 86 134 222 57 124 237 131 151 180 35 127 1 101 211 110
Donc le "texte" crypté donne:
&ëk2V†Þ9|탗´#eÓn
Voilà, j'ai donné cet exemple précis pour vous faire une idée du système que j'imagine utiliser et ainsi vous demander si une telle méthode donne à votre avis un cryptage fiable. Si j'ai bien compris, ça revient à poser la question: la séquence de la clé utilisée est-elle vraiment "incohérente" ?
#5 01-08-2013 22:32:38
- rastarocco
- Invité
Re : Quelques notions pour un ignorant...
Salut !
Si le fichier clé est aussi long que la clé, alors tu as le meilleur chiffrement qui existe : le One Time Pad. C'est un système de chiffrement parfait, au sens de Shannon, puisque l'entropie résultante de la connaissance du chiffré H(M|C) est égale à l'entropie H(M) du message.
En plus de l'hypersécurité, il est plutôt performant, car un OR se fait très rapidement bit à bit.
Problème : il faut changer de clé à chaque fois, ce qui peut être contraignant, vu qu'en plus, la clé est trop grande...
A propos des fichiers vidéos, il faut revenir à l'essentiel : qu'est-ce qu'un fichier ? Une suite d'octets. Un octet c'est 8 bits, donc un nombre entre 0 et 255. Un fichier vidéo est donc une suite d'octets, qui, dans le format du fichier vidéo, veut dire quelque chose.
Un fichier texte, le format ASCII, est une suite d'octets, donc une suite de nombres, où chaque nombre représente un caractère : la correspondance est dans la table ASCII, et tout le monde respecte la même norme pour afficher un "Z" quand l'octet a la valeur 90.
Maintenant, un fichier vidéo se moque royalement de la norme ASCII, et contient donc des valeurs d'octets avec tous ces caractères bizarres... La solution, c'est d'ouvrir ton fichier d'une façon "binaire" (raw data), et d'avoir un tableau de nombres. A partir de là, tu peux faire toutes les additions.
#6 08-08-2013 17:11:28
- nerosson
- Membre actif
- Inscription : 21-03-2009
- Messages : 1 658
Re : Quelques notions pour un ignorant...
Salut,
Pour ceux à qui l' anglais donne des boutons, rappelons que "one time pad" et "clé aléatoire une fois", c'est "kif-kif", sauf que l'expression française mentionne en plus le caractère d' aléatoirité.
J'attire votre attention sur le fait que, avec un post d' une phrase, j'ai fait appel à quatre langues :
1) français : "clé aléatoire",
2) anglais : "one time pad",
3) arabe : "kif-kif",
4) belge : "une fois"....
Hors ligne
#7 13-08-2013 12:03:15
- paultal
- Membre
- Inscription : 13-08-2013
- Messages : 2
Re : Quelques notions pour un ignorant...
Bonjour,
J'ai déjà testé cette clef jetable issue d'un fichier vidéo (facile pour transmettre la clef au correspondant : il achète le DVD !).
Cependant, les fichiers vidéo comportent des répétitions de caractères qui sont toujours les mêmes.
Le contenu de certaines parties de ce genre de fichiers est donc prévisible ...
J'ai créé une application qui génère une clef de la longueur désirée à partir d'une fonction d'UNIX qui est pratiquement parfaite; elle se base sur le comportement de l'ordinateur (mouvements de la souris, température du HDD, etc.). Malheureusement ça ne marche que sur un système basé sur UNIX, genre Apple OS X.
Pareil pour des morceaux de musique.
Le contenu d'un roman peut-être ?
Cordialement.
Hors ligne
#8 25-11-2013 09:41:51
- rastarocco
- Invité
Re : Quelques notions pour un ignorant...
Salut !
Effectivement, que la clé soit un DVD achetable à la Fnac est une très bonne idée, mais cette clé ne sera pas uniforme, dû à l'encodage effectué dans le DVD... Cependant, il y a des techniques pour extraire une clé aléatoire à partir d'une input non aléatoire... C'est utilisé notamment en biométrie, pour extraire une clé depuis une empreinte digitale (qui n'est pas aléatoire)... Les "secure sketch" le font très bien. :)
Pages : 1







