[RESOLU ]Comment protéger les données sensibles (mdp...)

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Avatar de l’utilisateur
rattle-snake
Messages : 187
Inscription : 23 Jan 2012 23:37

[RESOLU ]Comment protéger les données sensibles (mdp...)

Message par rattle-snake » 24 Jan 2017 00:28

Bonsoir a tous,
Je suis actuellement sur une application envoyant des mails et cryptant des données en AES (je suis novice dans la matière et apprend en marchant). L'appli est destinée a être diffusée sur Android/IOS.

J'ai appris que l'appli exportée depuis unity est en réalité tres lisible en clair avec des outils tels ilspy :
http://ilspy.net

Solution 1 :
Du coup j'ai commencé a fouiller un peu Internet et suis tombé sur l'obfuscation :
https://www.assetstore.unity3d.com/en/#!/content/48919

Mais mon appli est codée en JS (oui pardon ^^) et le plugin ne supporte que le C#. Je pourrais éventuellement réecrire tout le code en C# si c'était d'une necessité absolue mais surtout j'ai lu que beaucoup de "Deobfuscators" existaient et que c'était loin d'être une solution fiable...

Solution 2 :
Des topics parlent d'utiliser des hashs salés mais d'autres affirment qu'avec les puissances de calculs actuelles cela devient craquable.
En plus je ne vois pas comment utilser un hash dans un NetworkCredential() par exemple

Solution 3 :
Certains disent de tout simplement ne pas stocker du tout les données sensibles coté appli (comme ça c'est réglé :lol: )
http://answers.unity3d.com/questions/72 ... -code.html

Mais du coup je n'ai pas trouvé beaucoup d'info sur ces "credentials temportaires".

Je ne dois pas être le premier a être confronté a ce genre de problème :lol: :roll:
Auriez vous des experiences a partager ou des conseils de procédure a suivre ?

Edit : qu'en est-il du IL2CPP ? Si j'en crois les forums cela semble meilleur que l'obfuscation ?

Merci par avance,
Seb
Dernière édition par rattle-snake le 21 Fév 2017 12:53, édité 1 fois.

zugsoft
Messages : 386
Inscription : 26 Juin 2014 23:43
Localisation : Swiss
Contact :

Re: Comment protéger les données sensibles (mdp...)

Message par zugsoft » 24 Jan 2017 07:44

Rien n'est incrackable, il y aura toujours la possibilité de dechiffrer des données.
Sauvegarde tes données sur un serveur , compile en il2cpp, genere une clé a chaque connexion de ton client.
Moon RTS

Avatar de l’utilisateur
rattle-snake
Messages : 187
Inscription : 23 Jan 2012 23:37

Re: Comment protéger les données sensibles (mdp...)

Message par rattle-snake » 24 Jan 2017 09:04

Merci pour ta réponse Zugsoft,
Mais ce qui m'échappe c'est que si un pirate réussi à décompiler mon code et à le lire, il pourra également voir de quelle manière je genere ma clé non ?

Avatar de l’utilisateur
E3DStef
Administrateur
Administrateur
Messages : 1646
Inscription : 14 Juil 2013 18:30
Localisation : https://www.carte-des-membres.com/fr/Unity3D-France/

Re: Comment protéger les données sensibles (mdp...)

Message par E3DStef » 24 Jan 2017 11:25

Oui il pourrait sauf si tu y insère une variable aléatoire côté serveur pour la génération de la clé.
Le Savoir n'est Précieux que s'il est Partagé

Si besoin urgent de me contacter, faites moi un mail sur : franceunity3d@gmail.com

Avatar de l’utilisateur
rattle-snake
Messages : 187
Inscription : 23 Jan 2012 23:37

Re: Comment protéger les données sensibles (mdp...)

Message par rattle-snake » 24 Jan 2017 22:42

Ton idée m’intéresse E3DStef, pourrais tu un peu developper le concept ? :-D

Si dans mon code je vais chercher une var aléatoire coté serveur (par exemple via un POST), le pirate pourra également reproduire l'action du coup ??? C'est le serpent qui se mort la queue.

Pourrais tu détailler ton idée peut être que je la comprends mal :)

Avatar de l’utilisateur
F@B
Messages : 1844
Inscription : 01 Août 2013 10:41
Contact :

Re: Comment protéger les données sensibles (mdp...)

Message par F@B » 25 Jan 2017 10:18

une premiere règle importante c'est de ne jamais stocker les mdp en clair dans ta BDD, mais les encoder en MD5 par exemple.

même si il les récupère il les récup encodés.

ensuite c'est de ne jamais transiter par le réseau de données non encodées,

mais sinon tu as raison, c'est souvent le serpent qui se mord la queue ! si il y a un spécialiste je suis preneur aussi ;)
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ

Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

Avatar de l’utilisateur
rattle-snake
Messages : 187
Inscription : 23 Jan 2012 23:37

Re: Comment protéger les données sensibles (mdp...)

Message par rattle-snake » 28 Jan 2017 22:11

Justement pour faire transiter des données encodées il faut que la clé de chiffrement coté appli soit elle aussi à l'abri ^^

Je me permets de relancer un peu le post, pour si jms un expert passe par là :)

Avatar de l’utilisateur
E3DStef
Administrateur
Administrateur
Messages : 1646
Inscription : 14 Juil 2013 18:30
Localisation : https://www.carte-des-membres.com/fr/Unity3D-France/

Re: Comment protéger les données sensibles (mdp...)

Message par E3DStef » 29 Jan 2017 19:07

rattle-snake a écrit :Ton idée m’intéresse E3DStef, pourrais tu un peu developper le concept ? :-D
L'idée est d'avoir un webservice (ou un petit script / serveur / node.js / etc...) qui va se charger de l'autorisation.

Ton app envoie une demande hashé et codifiée (IDAPP+MAC+DATEHEUREJOUR) qui sera reçu au serveur, le serveur décode et vérifie (via sa BDD) que cet appareil est autorisé à communiquer avec lui. Si c'est le cas il lui renvoie une info hashé que l'APP en interne décode.

1- Comme dit plus haut ne rien faire communiquer en clair.
2- La meilleur protection est celle que vous mettrez en place
3- Plus elle sera complexe plus cela vous prendra du temps à la faire et donc du temps à un hacker à la défaire
4- Perso quand j'ai besoin de faire cela j'utilise des données parasites. c-a-d des données qui ne servent à rien mais qui donnent l'impression qu'elles sont utiles pour la protection. Cela perturbe le hacker car cela l'oblige à chercher une logique/décrypter des données qui le sont (cryptées) mais qui ne servent à rien

5- Rappelez-vous au final que tout ce qui peut être fait peut être défait. Même si votre app nécessite une connexion Internet, cela peut être détourné...

A+

Stef
Le Savoir n'est Précieux que s'il est Partagé

Si besoin urgent de me contacter, faites moi un mail sur : franceunity3d@gmail.com

Farstone
Messages : 187
Inscription : 04 Déc 2016 09:38

Re: Comment protéger les données sensibles (mdp...)

Message par Farstone » 29 Jan 2017 22:17

F@B a écrit :une premiere règle importante c'est de ne jamais stocker les mdp en clair dans ta BDD, mais les encoder en MD5 par exemple.

même si il les récupère il les récup encodés.

ensuite c'est de ne jamais transiter par le réseau de données non encodées,

mais sinon tu as raison, c'est souvent le serpent qui se mord la queue ! si il y a un spécialiste je suis preneur aussi ;)
Je voie pas en quoi crypter un mot de passe en MD5 change quelques choses a la protection des mot de passe, tu peux décrypter le md5 aussi facilement que tu le crypte, et même si tu utilise un mot clé pour crypter (donc une cryptographie unique au mot) il va forcément devoir être stocké sur l'appli pour le décrypter (ou le crypter, à moins que le mot de passe entré sur l'appli soit crypté selon un mot stocker sur le serveur, dans ce cas la sa peux effectivement marcher.

Pour en revenir au sujet principal je te conseil de jeter un œil à App42 qui est assez bien sécurisé (tu peux rajouter d'autres sécu par dessus) mais surtout qui t’évite de coder en php pour accéder a ta base de donner avec des WWW (pour éviter que tes logs de base de donnée ainsi que le domaine soit stocker sur l'appli)
Plus d'info et de documentation sur le site officiel : App42
Après je ne dit pas que c'est fiable a 100% c'est juste un moyen efficace de gérer c'est utilisateur avec plusieurs autres options, pour moi il y quelques points faible :
l'Api assez dur a prendre en main, mais une fois que tu a compris le fonctionnement c'est assez simple.
Le fait que la clé secrète (qui te permet de communiquer avec t'es infos) soit obligatoirement stocké sur Unity.
Donc si la personne récupère cette clé et qu'il utilise l'Api il faire en quelques sortent ce qu'il veux avec les comptes, certaines méthodes te permette d'augmenter la sécurité : Securing Your App
même si sa ne règles pas le problème de la décompilation.

EDIT : J'ai posté une demande sur le forum pour avoir plus d'information au sujet de la sécurité contre la décompilation, je te tient au jus si j'arrive a avoir quelques chose de concret.

EDIT 2 : J'ai essayé de décompiler mon propre projet avec ILSpy mais apparemment tu ne peux récupérer que les fonction et non quand elle son appelé donc avec les paramètre etc, après je mit prend peux être mal mais je n'ai pas accès au code sources des scripts qui sont dans mon projet, seulement les dll dans le dossier managed.

Avatar de l’utilisateur
F@B
Messages : 1844
Inscription : 01 Août 2013 10:41
Contact :

Re: Comment protéger les données sensibles (mdp...)

Message par F@B » 30 Jan 2017 09:53

tu peux décrypter le md5 aussi facilement que tu le crypte
alors oui ça se décrypte le md5, c'est pas super simple et salé c'est déjà plus compliqué il me semble ?
je suis pas du tout expert, mais c'est toujours mieux que de stocker ou transiter un mdp en clair non ?
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ

Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

Répondre

Revenir vers « Unity le logiciel »