OVH Cloud OVH Cloud

Python Crypto

7 réponses
Avatar
Plop !
Bonjour,

Je suis en train de créer un shareware en pyton. Je compte créer un
fichier executable avec py2exe. Ce shareware enbarquera une clé privée
pour décoder le fichier de configuation dans lequel sera stocké le
nombre de jours restants.
Dans quelle mesure ce programme sera vulnérable ? La clé embarquée sera
chargée en mémoire, sera-t-il possible de la lire directement ...

Je ne cherche pas la solution de protection parfaite mais juste une
sécurité acceptable. Est-ce le cas dans ce que je décrit ?


Merci.

7 réponses

Avatar
Alexandre Fayolle
Le 22-05-2006, Plop nous disait:
Bonjour,

Je suis en train de créer un shareware en pyton. Je compte créer un
fichier executable avec py2exe. Ce shareware enbarquera une clé privée
pour décoder le fichier de configuation dans lequel sera stocké le
nombre de jours restants.
Dans quelle mesure ce programme sera vulnérable ? La clé embarquée sera
chargée en mémoire, sera-t-il possible de la lire directement ...



La clé apparaîtra en clair dans le fichier library.zip généré par
py2exe, dans les fichiers pyc, qui sont décompilables en quelques
secondes avec decompyle.

Je ne cherche pas la solution de protection parfaite mais juste une
sécurité acceptable. Est-ce le cas dans ce que je décrit ?


Ca dépend de ton public, et de l'utilité de ton shareware.

En pratique, tout shareware populaire voit ses codes publiés sur des sites de
Warez dans les jours qui suivent sa publication, indépendamment du
temps passé à développer la protection. Si ton programme n'est pas
populaire, tu ne risques rien (mais tu ne gagneras pas beaucoup
d'argent), sinon, il te faut espérer que ton public ne fréquente pas les
sites d'échanges de cracks.

--
Alexandre Fayolle LOGILAB, Paris (France)
Formations Python, Zope, Plone, Debian: http://www.logilab.fr/formations
Développement logiciel sur mesure: http://www.logilab.fr/services
Python et calcul scientifique: http://www.logilab.fr/science

Avatar
pcm
Alexandre Fayolle wrote:
Le 22-05-2006, Plop nous disait:

Bonjour,

Je suis en train de créer un shareware en pyton. Je compte créer un
fichier executable avec py2exe. Ce shareware enbarquera une clé privée
pour décoder le fichier de configuation dans lequel sera stocké le
nombre de jours restants.
Dans quelle mesure ce programme sera vulnérable ? La clé embarquée sera
chargée en mémoire, sera-t-il possible de la lire directement ...




La clé apparaîtra en clair dans le fichier library.zip généré par
py2exe, dans les fichiers pyc, qui sont décompilables en quelques
secondes avec decompyle.


Je ne cherche pas la solution de protection parfaite mais juste une
sécurité acceptable. Est-ce le cas dans ce que je décrit ?



Ca dépend de ton public, et de l'utilité de ton shareware.

En pratique, tout shareware populaire voit ses codes publiés sur des sites de
Warez dans les jours qui suivent sa publication, indépendamment du
temps passé à développer la protection. Si ton programme n'est pas
populaire, tu ne risques rien (mais tu ne gagneras pas beaucoup
d'argent), sinon, il te faut espérer que ton public ne fréquente pas les
sites d'échanges de cracks.



Une technique consite à reconstituer dynamiquement la clef privée dans
ton code ... et surtout de ne pas la stocker dans une seule variable.

Donc même après le "reverse-engineering", le hacker doit se tapper ton
algo de reconstitution.

pcm


Avatar
Amaury Forgeot d'Arc
Alexandre Fayolle wrote:
Le 22-05-2006, Plop nous disait:

Bonjour,

Je suis en train de créer un shareware en pyton. Je compte créer un
fichier executable avec py2exe. Ce shareware enbarquera une clé
privée pour décoder le fichier de configuation dans lequel sera
stocké le nombre de jours restants.
Dans quelle mesure ce programme sera vulnérable ? La clé embarquée
sera chargée en mémoire, sera-t-il possible de la lire directement ...


La clé apparaîtra en clair dans le fichier library.zip généré par
py2exe, dans les fichiers pyc, qui sont décompilables en quelques
secondes avec decompyle.

Je ne cherche pas la solution de protection parfaite mais juste une
sécurité acceptable. Est-ce le cas dans ce que je décrit ?



Ca dépend de ton public, et de l'utilité de ton shareware.
En pratique, tout shareware populaire voit ses codes publiés sur des
sites de
Warez dans les jours qui suivent sa publication, indépendamment du
temps passé à développer la protection. Si ton programme n'est pas
populaire, tu ne risques rien (mais tu ne gagneras pas beaucoup
d'argent), sinon, il te faut espérer que ton public ne fréquente pas les
sites d'échanges de cracks.



Une technique consite à reconstituer dynamiquement la clef privée dans
ton code ... et surtout de ne pas la stocker dans une seule variable.

Donc même après le "reverse-engineering", le hacker doit se tapper ton
algo de reconstitution.


On peut aussi utiliser des algos de cryptage asymétrique (RSA): le
décodage est facile, mais le codage est impossible...

Ceci dit, pas la peine d'y passer trop de temps : quel que soit le soin
apporté au cryptage, le hacker a toujours la possibilité de modifier le
programme pour qu'il ignore la phase de vérification de la licence...

--
Amaury



Avatar
hg
Amaury Forgeot d'Arc wrote:
Alexandre Fayolle wrote:
Le 22-05-2006, Plop nous disait:

Bonjour,

Je suis en train de créer un shareware en pyton. Je compte créer un
fichier executable avec py2exe. Ce shareware enbarquera une clé
privée pour décoder le fichier de configuation dans lequel sera
stocké le nombre de jours restants.
Dans quelle mesure ce programme sera vulnérable ? La clé embarquée
sera chargée en mémoire, sera-t-il possible de la lire directement ...


La clé apparaîtra en clair dans le fichier library.zip généré par
py2exe, dans les fichiers pyc, qui sont décompilables en quelques
secondes avec decompyle.

Je ne cherche pas la solution de protection parfaite mais juste une
sécurité acceptable. Est-ce le cas dans ce que je décrit ?



Ca dépend de ton public, et de l'utilité de ton shareware.
En pratique, tout shareware populaire voit ses codes publiés sur des
sites de
Warez dans les jours qui suivent sa publication, indépendamment du
temps passé à développer la protection. Si ton programme n'est pas
populaire, tu ne risques rien (mais tu ne gagneras pas beaucoup
d'argent), sinon, il te faut espérer que ton public ne fréquente pas les
sites d'échanges de cracks.



Une technique consite à reconstituer dynamiquement la clef privée dans
ton code ... et surtout de ne pas la stocker dans une seule variable.

Donc même après le "reverse-engineering", le hacker doit se tapper ton
algo de reconstitution.


On peut aussi utiliser des algos de cryptage asymétrique (RSA): le
décodage est facile, mais le codage est impossible...

Ceci dit, pas la peine d'y passer trop de temps : quel que soit le soin
apporté au cryptage, le hacker a toujours la possibilité de modifier le
programme pour qu'il ignore la phase de vérification de la licence...



Oui, que l'algorithme soit symétrique ou assymétrique, Il faudra tout de
même stocker un clef dans le le soft. que cette dernière soit
(respectivement) secrète ou privée.

La seule solution (à ma connaissance) est de passer par un péripérique
hardware (ex: HSM ou carte à puce ...) pour assurer que le firmware de
crypto ne soit pas attaquable.

hg




Avatar
Méta-MCI
Bonjour !

Il faudra tout de même stocker un clef dans le le soft.




Pas forcément. Comme te l'a suggéré Pcm, la clef peut être le résultat d'un
algorithme.
Mais la réserve d'Amaury, sur la façon de procéder des "hackers" reste
valable.

@-salutations

Michel Claveau



Avatar
Amaury Forgeot d'Arc

Oui, que l'algorithme soit symétrique ou assymétrique, Il faudra tout de
même stocker un clef dans le le soft. que cette dernière soit
(respectivement) secrète ou privée.


Dans le cas d'un algorithme asymétrique, la clef publique est publique
et n'a pas besoin d'être cachée !
Tout le monde peut reproduire les calculs qui valident le fichier de
configuration, mais il est quasi impossible de créer un autre fichier de
configuration (avec une autre date d'expiration) qui passe cette validation.

--
Amaury

Avatar
Mihamina Rakotomandimby
On Sat, 26 Aug 2006 20:33:46 -0500, hg wrote:
Je suis en train de créer un shareware en pyton.
Dans quelle mesure ce programme sera vulnérable ?
La clé apparaîtra en clair dans le fichier library.zip généré par

py2exe,

Je ne cherche pas la solution de protection parfaite mais juste une
sécurité acceptable. Est-ce le cas dans ce que je décrit ?
En pratique, tout shareware populaire voit ses codes publiés sur des

sites de
Warez dans les jours qui suivent sa publication, indépendamment du
temps passé à développer la protection.
Une technique consite à ...

Donc même après le "reverse-engineering", le hacker doit se tapper ton
algo de reconstitution.
On peut aussi utiliser des algos de cryptage asymétrique ...


Ceci dit, pas la peine d'y passer trop de temps



Exactement. Moi je me dis que le temps de reflexion et de recherche passé
à tenter de "protéger" un programme n'est PAS passé à refléchir à
améliorer ledit programme.
Je veux bien comprendre l'envie de restreindre et de
commercialiser/rentabiliser, mais je comprends moins qu'elle vienne avant
que le programme soit reconnu populaire/utile/célèbre...

J'ai dirigé la conversation sur fr.comp.developpement