OVH Cloud OVH Cloud

Enigme : 2 Codes a 5 X 6 Caractères

22 réponses
Avatar
Imochon
Bonjour,

J'aimerais savoir quel type de calcul ou méthode est réalisé pour obtenir
d'un code a 30 caractères un autre code a 30 caractères tout en sachant que
seule le second code peut valider le premier.

Je m'explique plus clairement peut etre :) Il s'agit de vérouiller un
logiciel par le biais d'une authentification par téléphone. L'utilisateur
devra appeler son revendeur, lui donner 1 code a 30 caractères correspondant
au numéro de série de son disque dur et son revendeur lui donnera un code a
30 caractères permettant de débrider le logiciel.

Voici le cas concret :

Code délivré par l'application : HF8EGH - FHQ3V7 - 8R92E7 - 0EGHFT - 729VIV
Code permettant de débrider le logiciel : XCX9QE - VPDOMO - EMQ987 -
EXP5DP - DOM7PD

J'aimerais savoir quelle est le calcul permettant de trouver ce second code.

Pour anticiper les questions, je ne cherche de loin pas a cracker une
application mais a proteger ma propre solution. Le développeur à déjà
developpé la solution c'est pour cela que je peux vous donner un 1er couple
de code. j'aimerais simplement m'assurer que l'algorythme n'est pas simple a
trouver.

Merci d'avance.

10 réponses

1 2 3
Avatar
AMcD®
Faut quand même pas pousser !

Produit commercial je présume ? Et comme d'habitude, on vient faire faire
son étude de sécurité gratuitement ici. C'est vrai que parfois il peut être
marrant de perdre quelques heures à renvoyer tous ces programmeurs qui
veulent mettre de la cryptographie dans leurs softs à leurs chères études,
mais faut-il encore que cela soit présenté un peu moins naïvement...

Je me permets une autre remarque, évite d'utiliser le numéro de série de
disque dur pour authentifier quoi que ce soit. Un disque dur, ça se change,
son numéro de série aussi. Enfin, c'est ton sofy qu'il faut donner pour
analyser, pas une sortie. Et plusieurs personens ici te diront même que
c'est l'algo carrément qu'il faut nous soumettre.

Bonne journée.

--
AMcD®

http://arnold.mcdonald.free.fr/
Avatar
Imochon
Bonjour a toi Arnold.

Tourt d'abord , pourquoi tant d'agressivité dans ta réponse ?

Pour information, c'est une application commerciale oui, mais commercialisé
par une toute petite société donc je suis le seul et unique acteur. N'ayant
pas les compétences techniques pour developper mon produit je l'ai fait
developpé.

Je ne fais que demandé si l'algorythme utilisé n'est pas trop simple .. est
ce un crime ?

Sinon pour reprendre ta remarque qu'entends tu par " Enfin, c'est ton sofy
qu'il faut donner pour
analyser, pas une sortie. "

"et plusieurs personnes ici te diront même que c'est l'algo carrément qu'il
faut nous soumettre."
Je comprend bien, mais je en connais pas l'algo justement c'est pour cela
que je transmets un couple de code. Je peux en fournir d'autres si besoin
est.

Merci d'avance et désolé si j'ai pu déranger en quoi que ce soit mais avant
tout ce newsgroup est un group d'entraide non ? Et j'ai besoin d'aide ..
Merci
Avatar
AMcD®
Imochon wrote:
Bonjour a toi Arnold.

Tourt d'abord , pourquoi tant d'agressivité dans ta réponse ?


J'ai sans doute un style direct, mais il n'y a pas d'agressivité. S'il te
semble que je suis un peu énervé, c'est parce que c'est fatiguant de voir
que les études de sécurité des softs sont basés sur "si ça se craque pas
c'est bon" plutôt que sur "faisons une étude exhaustive de la robustesse de
notre algorithme".

Pour information, c'est une application commerciale oui, mais
commercialisé par une toute petite société donc je suis le seul et
unique acteur. N'ayant pas les compétences techniques pour developper
mon produit je l'ai fait developpé.


Avant de faire développer quoi que ce soit, fais une étude de ton algorithme
avant.

Je ne fais que demandé si l'algorythme utilisé n'est pas trop simple
.. est ce un crime ?


Le "crime" c'est de se faire faire une étude gratos ici :-). Ensuite, tu ne
donnes aucun algo, juste une sortie.

Sinon pour reprendre ta remarque qu'entends tu par " Enfin, c'est ton
sofy qu'il faut donner pour
analyser, pas une sortie. "


Il se peut que quelques comiques, dont moi, craquent ton soft en quelques
minutes, auquel cas la robustesse de l'algo n'aurait auucne importance...

"et plusieurs personnes ici te diront même que c'est l'algo carrément
qu'il faut nous soumettre."
Je comprend bien, mais je en connais pas l'algo justement c'est pour
cela que je transmets un couple de code. Je peux en fournir d'autres
si besoin est.


Il en faudrait des dizaines, à moins que l'algo de génération soit vraiment
naze. Et puis, je t'ai dit, on ne base pas une sécurité sur un numéro de
série de disque dur ! Cela se change en quelques secondes.

--
AMcD®

http://arnold.mcdonald.free.fr/

Avatar
Imochon
J'ai sans doute un style direct, mais il n'y a pas d'agressivité. S'il te
semble que je suis un peu énervé, c'est parce que c'est fatiguant de voir
que les études de sécurité des softs sont basés sur "si ça se craque pas
c'est bon" plutôt que sur "faisons une étude exhaustive de la robustesse de
notre algorithme".
je comprend et j'en suis désolé, mais je n'ai que cette solution
aujourd'hui



Avant de faire développer quoi que ce soit, fais une étude de ton
algorithme avant.
Bien sur je comprend, mais le bridage du logiciel n'etait pas la priorité
au départ. Avec la mise en place d'une nouvelle option ca devenait


obligatoire.

Le "crime" c'est de se faire faire une étude gratos ici :-). Ensuite, tu ne
donnes aucun algo, juste une sortie.
Effectivement car je n'ai que la sortie pour le moment. de facon generale
, n'est il pas possible de connaitre l'algorithme juste avec une "sortie"


(sortie c'est bien un code de débridage ou un numéro de licence valide oui
? )


Il en faudrait des dizaines, à moins que l'algo de génération soit vraiment
naze. Et puis, je t'ai dit, on ne base pas une sécurité sur un numéro de
série de disque dur ! Cela se change en quelques secondes.
Ok j'en prend note. Qu'as tu ou qu'avez vous besoin comme info alors ?
L'algo utilisé ?


Si le numéro de serie du disque dur n'est pas methode fiable, selon toi
quelle serait la meilleure protection logicielle ?

@+ et merci


Avatar
Imochon
Voici quelques informations supplémentaires sur la méthode :

Le code envoyé par l'utilisateur s'obtient à partir du numéro serial du
disque dur. Le code de debridage s'obtient avec des opérations sur bits (sur
la représentation en 0 et 1 du code envoyé par client), et après ça
re-conversion en chars. Il va ajouter aussi l'appel de qqes fonctions
mathématiques (exp, ln) sur la représentation numérique

Cela semble t il "correct " comme méthode ?

++
Avatar
Ludovic FLAMENT
Voici quelques informations supplémentaires sur la méthode :

Le code envoyé par l'utilisateur s'obtient à partir du numéro serial du
disque dur. Le code de debridage s'obtient avec des opérations sur bits (sur
la représentation en 0 et 1 du code envoyé par client), et après ça
re-conversion en chars. Il va ajouter aussi l'appel de qqes fonctions
mathématiques (exp, ln) sur la représentation numérique

Cela semble t il "correct " comme méthode ?


Bonjour,

La seule bonne méthode pour réaliser un quelconque système de sécurité
est de faire une étude complète du "produit" à sécuriser. Il est
nécessaire de se poser les bonnes questions :
- que faut-il protéger
- qu'elle est la valeur à protéger (c'est important, car cela ne sert à
rien de mettre en place des "usines à gaz" pour protéger des
informations qui valent quelques euros)
- contre qui on désire se protéger (qui peut être intéressé par
attaquer le système, quels sont les moyens dont il peux disposer)
- quelles sont les contraintes (techniques, organisationnelles, ...)
pour les utilisateurs et pour le concepteur
- ....

Ensuite on peut regarder quel système sera le plus adapté pour le
besoin du produit. De plus il est très dangereux de s'inventer un
algorithme qu'on pense cryptographique surtout si on ne s'y connaît pas
en cryptographie (ce qui semble être le cas, dans la mesure où tu dis
faire appel à une tierce personne ;-)).

Par contre pour trouver le bon algorithme (reconnu, analysé,
standardisé, ...) répondant aux besoins, il est nécessaire de faire la
démarche décrite ci-dessus. Il me semble impossible qu'il soit
nécessaire de créer un algorithme pour résoudre ton problème, au plus il
faut trouver un "protocole" (succession d'étape) mettant en jeu divers
algorithmes cryptographiques ou non.

Pour ce qui est d'attaquer ton algorithme, il est bien évidemment
nécessaire de le connaître pour pouvoir trouver les failles !
--
Ludovic FLAMENT
http://ludovic.flament.free.fr


Avatar
Imochon
Tout d'abord merci Ludo.

Pour répondre a tes commentaires, ayant pour objectif futur de faire
revendre mon logiciel, je ne voudrais pas que les numéros de licences se
balladent sur le net. Du coup je veux que chaque utilisateur m'appelle pour
obtenir un code de débridage avec un code que le PC sur lequel est installé
le logiciel lui aura prealablement fourni.

La valeur du logiciel en soit n'est pas si importante mais c'est surtout le
manque a gagner. Si un revendeur peut vendre mon logiciel sans que je le
sache je perds donc des sous. Alors qu'avec la méthode précitée je suis au
courant vu que je controle le débridage.

"De plus il est très dangereux de s'inventer un algorithme qu'on pense
cryptographique surtout si on ne s'y connaît pas en cryptographie (ce qui
semble être le cas, dans la mesure où tu dis faire appel à une tierce
personne ;-)).

Certes moi je ne m'y connais pas mais le développeur chargé de cette
protection s'y connait tout de meme. Pas convaincu de la methode utilisée


peut etre ?

"au plus il faut trouver un "protocole" (succession d'étape) mettant en jeu
divers algorithmes cryptographiques ou non."
mais encore ? :)



Pour ce qui est d'attaquer ton algorithme, il est bien évidemment nécessaire
de le connaître pour pouvoir trouver les failles !
Ok donc c'est ce que je voulais savoir, sans connaitre l'algorithme
utilisé, personne ne peut trouver les failles ?



merci bcp !!!


Avatar
AMcD®
Imochon wrote:

n'est il pas possible de connaitre l'algorithme juste avec une "sortie"
(sortie c'est bien un code de débridage ou un numéro de licence valide oui
? )


Pourquoi pas, mais alors, il serait vraiment vraiment naze l'algo...

Le code envoyé par l'utilisateur s'obtient à partir du numéro serial
du disque dur.


Déjà, qu'appelles-tu sérial du disque dur ? Le sérial du Volume ou le sérial
du disque ? Tu l'obtiens comment ? En clair, c'estq uoi concrètement que
l'utilisateur te fournit.

Le code de debridage s'obtient avec des opérations sur
bits (sur la représentation en 0 et 1 du code envoyé par client), et
après ça re-conversion en chars. Il va ajouter aussi l'appel de qqes
fonctions mathématiques (exp, ln) sur la représentation numérique

Cela semble t il "correct " comme méthode ?


Cela ne veut rien dire. Tu peux utiliser des dizaines de fonctions sans pour
cela que ce soit robuste.

Si le numéro de serie du disque dur n'est pas methode fiable, selon toi
quelle serait la meilleure protection logicielle ?


Pour moi, le mieux est de protéger le code de l'application. Donc utiliser
des softs comme Armadillo etc. Mais c'est payant. On n'a rien sans rien.

Ok donc c'est ce que je voulais savoir, sans connaitre l'algorithme
utilisé, personne ne peut trouver les failles ?


Cela dépend des cas. Si l'algo est vraiment nul... En tous les cas, il faut
plusieurs sorties pour l'étudier. Réfléchis un peu, je te dis soit une
fonction f(), avec f(123456) = 12-df-z45s-pi/12 et je te demande f()
est-elle sûre ?

Résumons :

- Pour étudier ton algo, il faut plusieurs sorties.
- Pour savoir si l'algo est robuste, il faut le publier.
- Pour savoir si l'algo est protégé il faut filer l'application pour
l'étudier.

Si tu ne donnes rien, ce sera difficile de trouver les failles !

--
AMcD®

http://arnold.mcdonald.free.fr/

Avatar
Imochon
Merci Ronald !

"n'est il pas possible de connaitre l'algorithme juste avec une "sortie" ?
Pourquoi pas, mais alors, il serait vraiment vraiment naze l'algo...
Ok donc c'est quand meme un minimum rassurant



Déjà, qu'appelles-tu sérial du disque dur ? Le sérial du Volume ou le sérial
du disque ? Tu l'obtiens comment ? En clair, c'estq uoi concrètement que
l'utilisateur te fournit.
il s'agit du numéro serial du disque. Par contre je ne sais pas (mais
vais demander) comment on l'obtient.



Pour moi, le mieux est de protéger le code de l'application. Donc utiliser
des softs comme Armadillo etc. Mais c'est payant. On n'a rien sans rien.
Ais je dis qqpart que je ne souhaitais pas payer ? :)



Cela dépend des cas. Si l'algo est vraiment nul... En tous les cas, il faut
plusieurs sorties pour l'étudier.
Ok donc dans mon cas, il est difficiel pour une personne (ou un
revendeur) de trouver la methode algorithmique en n'ayant que quelques


sorties c'est cela ?

- Pour savoir si l'algo est robuste, il faut le publier.
De quoi avez vous besoin exactement ?



- Pour savoir si l'algo est protégé il faut filer l'application pour
l'étudier.
deja plus dur :)



Merci encore !


Avatar
AMcD®
Imochon wrote:
Merci Ronald !


Encore ce genre d'humour, et la conversation se poursuivra sans moi...

Sinon, ce n'est pas compliqué, il n'y a que 2 solutions :

- Soit il est impossible de retrouver l'entrée avec la sortie en étudiant
ton algo, alors, il est sûr. Mais pour savoir s'il est exempt de failles il
faut le publier pour que des volontaires l'étudient. C'est pas avec une
sortie que les volontaires vont affluer...
- Soit l'algo est relativement simple (c'est pas parce qu'il y a 3 xor et
deux log hein...) et il te faut alors protéger le code de ton application
pour pas qu'on puisse le désassembler facilement.

En tous les cas, fais marcher ton cerveau, ce n'est pas parce que personne
n'a trouvé l'entrée en étudiant UNE sortie que ton algo est sûr. Et dis-toi
bien qu'en crypto, tout est public. C'est parce qu'un algo est public qu'il
est facilement étudié. Et c'est parce qu'il est étudié que ses failles
peuvent être éventuellement mises à jour. Quant à protéger le code, cela
peut marcher un temps, mais ne rêve pas trop

PS : si tu pouvait poster plus lisiblement (sauter des lignes, etc.), ce
serait pas du luxe, merci.

--
AMcD®

http://arnold.mcdonald.free.fr/

1 2 3