Partage
  • Partager sur Facebook
  • Partager sur Twitter

MSE (Multiples Subtitution Encryption)

Chiffrement par subtitution

Anonyme
15 août 2022 à 23:11:10

KoaTao a écrit:

GDemay a écrit:

Pourriez vous être un peu plus indulgent avec lui? :o

Dire que son code est à revoir est acceptable mais dire qu'il est " extrêmement mauvais" peut être blessant.

On a tous commencé quelque part ;) C'est en codant que l'ont devient codeur, alors continue! C'est du bon boulot ;)


Il est quand même arriver avec un postulat de départ d'avoir créer un chiffrement par substitution plus robuste que tous les autres conçus jusqu'ici. Ce qui est bien évidemment faux et qui démontre quand même très peu de documentation et de recherche sur le sujet au préalable. De plus, il a quand même demandé une relecture complète de son code avant de lui répondre. Je pense qu'à partir du moment où on pose des bases aussi exigeantes, il faut s'attendre que les réponses le soient aussi.

J'ai rien contre son projet, mais ici, c'est quand même une partie du forum fait pour présenter des projets sérieux et/ou orignal normalement plus que des petits projets perso pour s'amuser.

Quant aux remarques, tu observeras aussi que c'est toujours les mêmes depuis 4 mois quasiment, et que peu de choses ont évoluées en terme de qualité de code. Libre à l'auteur de nous ignorer effectivement, mais je vois encore moins l'intérêt de ce sujet alors...


Bonsoir,
Je veut tous simplement partager avec vous mon projet personnel. Car il est original. J'ai passé deux mois à l'améliorer, il ne ressemble au au projet du premier message, il a considérablement changer.
Je veut que vous m'aider à trouver un moyen de casser l'algorithme. On n'eut peut pas passer par des attaques conventionnelles.
Je part d'une théorie celle des "versions alternatives" c'est à dire une version complètement différente du code source de base, ou l'utilisateur à modifié tous les paramètres. Et je veut que peut importe la version alternative du programme quand puisse quand même décoder le text.
https://github.com/flowlord/Multiple-Substitution-Encryption
  • Partager sur Facebook
  • Partager sur Twitter
19 août 2022 à 8:53:34

Ce que je lis c'est que tu sembles sûr d'avoir créer un algo incassable, tu étais même tellement sûr de toi que tu t'es interrogé sur la création d'une page wikipedia.

J'ai lu ton code et ton projet ... la seule chose qui me vient en tête c'est cela

Attention, je ne dis pas que tu es stupide, c'est juste un concept ultra courant quand on commence à développer.

  • Partager sur Facebook
  • Partager sur Twitter

Ancien étudiant OpenClassroom, diplômé en développeur d'application Python

Anonyme
20 août 2022 à 10:40:18

Mcflan_7 a écrit:

Ce que je lis c'est que tu sembles sûr d'avoir créer un algo incassable, tu étais même tellement sûr de toi que tu t'es interrogé sur la création d'une page wikipedia.

J'ai lu ton code et ton projet ... la seule chose qui me vient en tête c'est cela

Attention, je ne dis pas que tu es stupide, c'est juste un concept ultra courant quand on commence à développer.

Bonjour !

Ah oui je l'ai lue sur internet, je rit.

Oui mais la différence entre le moi d'avant et celui d'aujourd'hui est que je sais qui existe une faiblesse dans mon programme et c'est pour céla que mon objectif maintenant a clairement changé. C'est de d'arriver à casser l'algorithme.

Tous en respectant sa conception de base. C'est facile de le casser en désactivent certain module, mais ce n'est pas le but. C'est pour céla que en plus d'appliquer des mise à jour de code régulièrement, j'incarne aussi le rôle d'un "Attaquant" c'est à dire déduire le text claire à partir du code secret.

  • Partager sur Facebook
  • Partager sur Twitter
21 août 2022 à 12:18:24

J’entends bien, mais ton projet ne donne pas très envie car il est code de manière tres amateur. 

tu devrais réellement reprendre certaines base de langage Python :

  • Suivre les conventions de la pep8
  • Nommer de manière cohérente et en anglais tes modules et fonctions
  • Organiser ton projets en plusieurs modules  et packages 
  • Penser un peu plus orientée objet et ne pas éclater des fonctions partout alors que tu pourrais utiliser des classes
  • Utiliser la bibliothèque native de Python plutot que réinventer la roue .. tu as plein de fonctions qui ne servent à rien 
  • Nommer tes variables avec peu plus de réflexion  

Bref, c’est comme un livre, si tu veux qu’il soit lu assure toi qu’il donne envie et soit facile à parcourir. 

Tu as code au kilomètre sans prendre du recul sur ce que tu faisais, ce qui me fait bien sûr douter de la robustesse de ton programme.

il peut être sympa de regarder des librairies comme celle de requests par exemple, ça aide à structurer son projet et ses idées  

  • Partager sur Facebook
  • Partager sur Twitter

Ancien étudiant OpenClassroom, diplômé en développeur d'application Python

Anonyme
22 août 2022 à 21:45:37

Mcflan_7 a écrit:

J’entends bien, mais ton projet ne donne pas très envie car il est code de manière tres amateur. 

tu devrais réellement reprendre certaines base de langage Python :

  • Suivre les conventions de la pep8
  • Nommer de manière cohérente et en anglais tes modules et fonctions
  • Organiser ton projets en plusieurs modules  et packages 
  • Penser un peu plus orientée objet et ne pas éclater des fonctions partout alors que tu pourrais utiliser des classes
  • Utiliser la bibliothèque native de Python plutot que réinventer la roue .. tu as plein de fonctions qui ne servent à rien 
  • Nommer tes variables avec peu plus de réflexion  

Bref, c’est comme un livre, si tu veux qu’il soit lu assure toi qu’il donne envie et soit facile à parcourir. 

Tu as code au kilomètre sans prendre du recul sur ce que tu faisais, ce qui me fait bien sûr douter de la robustesse de ton programme.

il peut être sympa de regarder des librairies comme celle de requests par exemple, ça aide à structurer son projet et ses idées  

J'ai appliqué une première correction:

https://github.com/flowlord/Multiple-Substitution-Encryption

  • Partager sur Facebook
  • Partager sur Twitter
23 août 2022 à 23:51:28

Bonjour,

Je trouve que la qualité du code s'est nettement améliorée!

Personnellement, je n'ai pas envie de faire du reverse engineering et du code review à la recherche de bug ou d'exploit sur ton code. Et je pense que de manière générale, ce sera difficile de trouver des personnes pour le faire pour un projet que tu es seul à utiliser.

FLOW LORD a écrit:

On n'eut peut pas passer par des attaques conventionnelles.

Tu l'as prouvé?

FLOW LORD a écrit:

Je part d'une théorie celle des "versions alternatives" c'est à dire une version complètement différente du code source de base, ou l'utilisateur à modifié tous les paramètres. Et je veut que peut importe la version alternative du programme quand puisse quand même décoder le text.

C'est bien ça le problème en fait, si tu regardes un peu tous les chiffrements qui existent, ils sont tous indépendant de leur implémentation dans un langage. Le système de chiffrement peut être définit mathématiquement. C'est aussi ce qui permet de prouver de sa «qualité» (pour faire simple). Toi, ton algo, tu le développes à la volée en Python. Tu commences à toucher les limites de ton design. Un algorithme doit être indépendant de son implémentation dans un langage de programmation.

https://en.wikipedia.org/wiki/Advanced_Encryption_Standard


À partir de là, il existe soit une vulnérabilité dans le chiffrement en lui-même, soit dans son implémentation.



  • Partager sur Facebook
  • Partager sur Twitter
25 août 2022 à 8:59:07

Pour commencer, je trouve ça idiot de se moquer de quelqu'un car il commence la programmation.

Est ce que vous, étant enfants on s'est moqués de vous car vous appreniez à parler?

Le développement a à la base été créé pour produire des choses. Pourquoi d'après vous est-il si libre? Car chacun peut faire à sa manière. Python laisse des dizaines de possibilités pour arriver au même résultat. Et c'est probablement le but de ce langage. Il y en a pleins d'autres, qui eux, sont plus strictes.

Si tu débute, ton projet est super. Alors bien sûr, il n'est pas parfait mais même Google n'est pas parfait.Tu pourrais, il est vrai améliorer la lisibilité mais... il marche non? Ce n'est pas le but de ton programme? Il chiffre correctement? Si tu avais voulu, tu n'étais pas obligé de montrer le code source mais tu l'a fait. Si tu ne l'avais pas fait personne n'aurais remarqué le problème. Je n'encourage personne à faire cela mais je vous trouve rude.

Personelement, je trouve ton programme bien!

  • Partager sur Facebook
  • Partager sur Twitter

Développeur Python - Projet PyDClass: https://github.com/CeltiumCDev/PyDClass (Diagramme de class)

C'est codant que l'on devient codeur.

25 août 2022 à 9:34:00

MinomodDev a écrit:

Pour commencer, je trouve ça idiot de se moquer de quelqu'un car il commence la programmation.

Est ce que vous, étant enfants on s'est moqués de vous car vous appreniez à parler?

Le développement a à la base été créé pour produire des choses. Pourquoi d'après vous est-il si libre? Car chacun peut faire à sa manière. Python laisse des dizaines de possibilités pour arriver au même résultat. Et c'est probablement le but de ce langage. Il y en a pleins d'autres, qui eux, sont plus strictes.

Si tu débute, ton projet est super. Alors bien sûr, il n'est pas parfait mais même Google n'est pas parfait.Tu pourrais, il est vrai améliorer la lisibilité mais... il marche non? Ce n'est pas le but de ton programme? Il chiffre correctement? Si tu avais voulu, tu n'étais pas obligé de montrer le code source mais tu l'a fait. Si tu ne l'avais pas fait personne n'aurais remarqué le problème. Je n'encourage personne à faire cela mais je vous trouve rude.

Personelement, je trouve ton programme bien!


C'est un peu démagogique et simple comme raisonnement, ton argument est d'ailleurs étrange, les enfants se moquent constamment les uns des autres... certains l'utilisent comme une force ! 

Il y a certes plusieurs façon de coder en Python, mais comme tout language il a les bonnes manières et les autres, il faudrait peut-être arrêter un miment de vouloir édulcorer tous les discours, car ce qui ressort c'est un paragraphe qui effleure le sujet sans vraiment se mouiller.

"Il marche, non?" oui d'accord .. cela va vraiment aider les débutants à progresser.

Encore une fois il suffit de lire le sujet dans son entièreté pour voir que l'auteur a commencé avec une certaine forme d'assurance débordante.

  • Partager sur Facebook
  • Partager sur Twitter

Ancien étudiant OpenClassroom, diplômé en développeur d'application Python

25 août 2022 à 10:09:54

> Encore une fois il suffit de lire le sujet dans son entièreté pour voir que l'auteur a commencé avec une certaine forme d'assurance débordante.

Vrai. Après qui n'est pas content de pouvoir présenter son programme?

Après, pour l'argument des enfants, ce n'était qu'un exemple.

TU aurais aimé, toi, que lorsque tu présente ton premier projet, tout le monde te dise qu'il est mal écrit?

Il est vrai, il ne respecte pas PEP8, mais certains ne l'aident pas, disent juste "c'est mal". Pas tout le monde évidement :) mais certains.

  • Partager sur Facebook
  • Partager sur Twitter

Développeur Python - Projet PyDClass: https://github.com/CeltiumCDev/PyDClass (Diagramme de class)

C'est codant que l'on devient codeur.

25 août 2022 à 20:42:18

Il ne s'est nul part presente comme debutant et encore moins comme montrant son premier programme, si il l'avait fait il aurait eu probablement des reactions plus nuancees, avant de lancer des jugements a l'emporte piece et traiter les autres d'idiots il serait sage de lire au moins le premier post.

Ensuite meme si debutant, proposer une relecture d'un code avec des variables/fonctions d'un seul caractere est au mieux un gros manque de respect vis a vis des lecteurs, on ne peut savoir a quoi elles servent sans lire le code les utilisant, on ne peut pas faire de recherche dessus(ou alors en important le code dans un IDE) et on doit se taper la charge mentale de se rappeler que 'a' fait ca, 'b' fait autre chose et 'c' encore ca'.

Si on demandait de realiser une recette avec 

100 de b

1 de s

3 o

250 de f

tu trouverais ca acceptable, parce que c'est la 1ere recette de l'auteur(qui pour rappel se presente comme le fils spirituel de Philippe Conticini)?

Ben voila, j' ai envie d'un gateau maintenant, bravo...

-
Edité par P.X.L 25 août 2022 à 20:42:57

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
24 septembre 2022 à 20:59:50

Hello !

Désolé pour le temps de réponse, je n'est jamais le temps ;)

Merci pour vos réponse !!

Entre mon premier poste et celui d'aujourd'hui, il s'est écoulé 186 jours soit 6 mois et 2 jours.

Le but de ce projet personnel à clairment changé.

Le but de ce projet maintenant ce n'est pas de faire un programme ultra sécurisé de la mort qui tue, non ! (Ce qui est sécurisé à 99% n'est jamais sécurisé ! )

Mon but maintenant c'est de répondre à cette seule et unique problématique: Es ce que avec un code source publique, on peut décoder les messages chiffré, même si je ne connais pas les paramètres que l'utilisateur a modifier ?

C'est à dire que si un utilisateur random télécharge le code source officiel, modifie les paramètres du programme:

https://github.com/flowlord/Multiple-Substitution-Encryption/blob/main/configs/setting.json

et chiffre des message:

Exemple : https://zpuf06s8huajolm3byvojg.on.drv.tw/public_html/MSE%20VISUAL%20CODE/

Si vous avez peur de ce liens voici des images:

chaque paragraphe est une phrase.

chaque caractère est coloré avec deux couleurs différentes.

la couleur la plus dominante est celle des caractères du groupe B*.

es ce que c'est possible de décoder les messages sans avoir le code source modifié ?

une version "alternative" du programme ?

En sachons qu'on a que le text mais pas le code source.

L'analyse fréquentielle oui ! mais je pense que, à un moment elle à une limite !

C'est à dire imaginer just un utilisateur de type "Casse couille", qui modifie les paramètres de manière excessive (même si ce n'est pas recomandé) et qui donne cette monstruosité:

(40946 caractères en tous)

mon fichier setting.json:

Le nombre de fois ou un caractère du groupe B* seras ajouter dans le message est un nombre entre mini et maxi donc entre 4000 et 55500

(oui ! oui ! le programme arrive à le déchiffré sans aucun problème car je possède le code source modifié)

Ici le message codé fait plusieurs lignes pour une seule petite phrase. Es ce que L'analyse fréquentielle tiendra toujours ?

Es ce que on pourras toujours de manière algorithmique identifier les caractères du groupe B* peut import la les paramètre ?

* Le groupe A génère les clés de chiffrement et le groupe B sont les caractères qui seront ajouté x nombre de fois après la substititution des lettres

exemple d'une clé de chiffrement: https://github.com/flowlord/Multiple-Substitution-Encryption#exemple-de-cl%C3%A9-de-chiffrement

"okay mais il suffit d'avoir accès au groupe de caractères initial du code source officiel non ? "

Mais si en tombe sur un autre utilisateur malin qui mélange les groupes de caractères initiales avec la fonction mixer:

https://github.com/flowlord/Multiple-Substitution-Encryption/blob/main/tools.py#L30

Comment on fait là ?

Ce que je veut dire ce qu'il peut avoir plusieurs possibiilité de modifier le programme.

voici quelques exemples:

(ressources: https://github.com/flowlord/Multiple-Substitution-Encryption/tree/main/configs )

J'adore ce projet !  Car je suis à la fois celui qui corrige  les "failles de sécurité" et aussi celui qui veut à tous pris casser lr programme ;) Es ce que je suis le seule à trouver celà passionnant ?

https://github.com/flowlord/Multiple-Substitution-Encryption

-
Edité par Anonyme 24 septembre 2022 à 22:45:30

  • Partager sur Facebook
  • Partager sur Twitter
29 septembre 2022 à 9:28:47

Bonjour,

L'apprentissage par la pratique c'est très bien. Mais là, tu ne peux pas vouloir chercher un algorithme de chiffrement par substitution robuste à l'analyse ou aux stats uniquement par la technique du doigt mouillé. Il va falloir un moment comprendre la théorie derrière. Et vu que tu as déjà du mal à séparer l'implémentation de ton chiffrement à sa «définition», son algorithme, son «standard», tu vas avoir beaucoup de mal à prouver SCIENTIFIQUEMENT quoique ce soit. Parce qu'au bout du compte, seule une preuve scientifique peut définir de la qualité de ton algorithme.

En fait, c'est plus vraiment un algorithme de chiffrement par substitution vu que tu rajoutes artificiellement du «bruit». Tout ce «bruit» ne fait pas parti de la substitution.

Le truc, c'est que toi, dans ton algo, tu as besoin de savoir identifier le bruit. Et donc tu choisis uniquement des symboles qui ne correspondent pas aux symboles utilisés dans la substitution. Par analyse, il sera déjà possible d'identifier le bruit du payload dans certains cas (lorsque le volume de bruit est bien plus important que celui du payload et/ou que le message chiffré est assez long). Je me demande même si on ne pourrait pas utiliser ce qui se fait en télécommunications pour filter le bruit tout simplement.

Ce qui est assez fou, c'est que tu nous dis ici que tu es assez sûr de ton chiffrement pour résister aux attaques conventionnelles (sans même avoir présenté de résultats prouvant quoique ce soit) mais dans la présentation de ton projet sur Github, dans la section «Trucs et astuces», tu demandes à ce qu'on utilise un langage «SMS»... C'est contradictoire.

Ton système n'est pas pratique. Il faut lire tout le code pour comprendre ce qu'on doit modifier et comment on doit le modifier et les impacts que ça a sur le message. Si je veux décoder ton message, il me les «secrets» en clair sur mon PC (donc si quelqu'un accède à mon PC, il peut extraire tous les secrets).

Vu que ton système de chiffrement est uniquement capable de lire des caractères, il est impossible de chiffrer toutes formes d'informations dans un format binaire. De plus, il faut que l'ensemble des caractères soit connus du système qui chiffre et de celui qui déchiffre.

Tu laisses penser que ton système sert principalement à chiffrer des communications entre nous, humains. Or, comme dit précédemment, les «secrets» doivent être en clair, il faut donc pouvoir les transmettre à nos interlocuteurs de manières sécurisés. Il n'est pas possible de la chiffrer avec ton système. Il faut donc requérir à un autre système de chiffrement pour ça (quel intérêt d'utiliser le tien dans ce cas?).

Enfin, comment veux-tu qu'on puisse essayer de casser les messages que tu nous présentes à partir de capture d'écran? Comment peux-tu juger de la robustesse uniquement à partir de ce que tu vois?

Tout ça pour dire, quel est le but de ton projet? S'amuser, ok pas de problème. Mais soit conscient que pour l'instant, ça n'a rien de sérieux.

PS: L'avantage de git, c'est de pouvoir faire du versionning, donc pas besoin créer un nouveau dépôt quand tu veux changer de versions ou autre. Tu peux créer des branches ou même des releases sur github.

-
Edité par KoaTao 29 septembre 2022 à 9:34:26

  • Partager sur Facebook
  • Partager sur Twitter
30 septembre 2022 à 11:18:47

Si tu veux vraiment progresser en cryptographie ce n'est pas le langage qui va faire la différence, mais les compétences pures comme les mathématiques et l'algorithmie.

Je te renvoi une nouvelle fois vers le biais de surconfiance, actuellement tu es dans la phase "Je ne sais pas que je ne sais pas..." ce qui nous vaut des affirmations quelque peu "prétentieuses".

Enfin même si ton code était vraiment révolutionnaire je ne connais pas une personne pour le tester, c'est brouillon, tes variables sont incohérentes (a,b,c ??) tu éclates ton code en modules incompréhensible et peu de conventions sont respectées.

  • Partager sur Facebook
  • Partager sur Twitter

Ancien étudiant OpenClassroom, diplômé en développeur d'application Python

Anonyme
5 octobre 2022 à 9:22:45

KoaTao a écrit:

Bonjour,

L'apprentissage par la pratique c'est très bien. Mais là, tu ne peux pas vouloir chercher un algorithme de chiffrement par substitution robuste à l'analyse ou aux stats uniquement par la technique du doigt mouillé. Il va falloir un moment comprendre la théorie derrière. Et vu que tu as déjà du mal à séparer l'implémentation de ton chiffrement à sa «définition», son algorithme, son «standard», tu vas avoir beaucoup de mal à prouver SCIENTIFIQUEMENT quoique ce soit. Parce qu'au bout du compte, seule une preuve scientifique peut définir de la qualité de ton algorithme.

En fait, c'est plus vraiment un algorithme de chiffrement par substitution vu que tu rajoutes artificiellement du «bruit». Tout ce «bruit» ne fait pas parti de la substitution.

Le truc, c'est que toi, dans ton algo, tu as besoin de savoir identifier le bruit. Et donc tu choisis uniquement des symboles qui ne correspondent pas aux symboles utilisés dans la substitution. Par analyse, il sera déjà possible d'identifier le bruit du payload dans certains cas (lorsque le volume de bruit est bien plus important que celui du payload et/ou que le message chiffré est assez long). Je me demande même si on ne pourrait pas utiliser ce qui se fait en télécommunications pour filter le bruit tout simplement.

Ce qui est assez fou, c'est que tu nous dis ici que tu es assez sûr de ton chiffrement pour résister aux attaques conventionnelles (sans même avoir présenté de résultats prouvant quoique ce soit) mais dans la présentation de ton projet sur Github, dans la section «Trucs et astuces», tu demandes à ce qu'on utilise un langage «SMS»... C'est contradictoire.

Ton système n'est pas pratique. Il faut lire tout le code pour comprendre ce qu'on doit modifier et comment on doit le modifier et les impacts que ça a sur le message. Si je veux décoder ton message, il me les «secrets» en clair sur mon PC (donc si quelqu'un accède à mon PC, il peut extraire tous les secrets).

Vu que ton système de chiffrement est uniquement capable de lire des caractères, il est impossible de chiffrer toutes formes d'informations dans un format binaire. De plus, il faut que l'ensemble des caractères soit connus du système qui chiffre et de celui qui déchiffre.

Tu laisses penser que ton système sert principalement à chiffrer des communications entre nous, humains. Or, comme dit précédemment, les «secrets» doivent être en clair, il faut donc pouvoir les transmettre à nos interlocuteurs de manières sécurisés. Il n'est pas possible de la chiffrer avec ton système. Il faut donc requérir à un autre système de chiffrement pour ça (quel intérêt d'utiliser le tien dans ce cas?).

Enfin, comment veux-tu qu'on puisse essayer de casser les messages que tu nous présentes à partir de capture d'écran? Comment peux-tu juger de la robustesse uniquement à partir de ce que tu vois?

Tout ça pour dire, quel est le but de ton projet? S'amuser, ok pas de problème. Mais soit conscient que pour l'instant, ça n'a rien de sérieux.

PS: L'avantage de git, c'est de pouvoir faire du versionning, donc pas besoin créer un nouveau dépôt quand tu veux changer de versions ou autre. Tu peux créer des branches ou même des releases sur github.

-
Edité par KoaTao 29 septembre 2022 à 9:34:26

Hello !

Je vois que tu n'a pas lue mon message, j'ai mis des capture uniquement car je pensais que des gens pouvais avoir peur de mon lien: 

Lien qui montre clairement des exemples de messages codé:

https://zpuf06s8huajolm3byvojg.on.drv.tw/public_html/MSE%20VISUAL%20CODE/

  • Partager sur Facebook
  • Partager sur Twitter
5 octobre 2022 à 22:23:14

Bonjour,

C'est toi qui n'a pas compris mon message, je disais que tu ne juges que par l'aspect visuel et que tu n'utilises aucune méthode analytique pour démontrer les propriétés cryptographiques de ton algorithme.

As-tu fais une analyse de fréquence? Sans même la faire, je peux te dire que le résultat te décevra et que ton bruit n'est pas très efficace pour cacher la substitution, même sur des messages courts. Visuellement, on peut déjà remarquer des motifs, alors après une simple analyse, ce sera encore plus remarquable.

Tu peux très bien sur github mettre chaque message dans un fichier et les associer au résultat de leur analyse fréquencielle (juste le nombre d’occurrence de chaque caractère est suffisant pour donner un résultat exploitable).

Un résultat exploitable ne veut pas dire qu'il permet de déchiffrer le message, mais qu'il permet déjà de déterminer certains paramètres normalement secrets.

-
Edité par KoaTao 5 octobre 2022 à 22:28:29

  • Partager sur Facebook
  • Partager sur Twitter