[RESOLU ]Comment protéger les données sensibles (mdp...)
- rattle-snake
- Messages : 187
- Inscription : 23 Jan 2012 23:37
[RESOLU ]Comment protéger les données sensibles (mdp...)
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é )
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
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
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é )
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
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.
Re: Comment protéger les données sensibles (mdp...)
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.
Sauvegarde tes données sur un serveur , compile en il2cpp, genere une clé a chaque connexion de ton client.
Moon RTS
- rattle-snake
- Messages : 187
- Inscription : 23 Jan 2012 23:37
Re: Comment protéger les données sensibles (mdp...)
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 ?
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 ?
- E3DStef
- 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...)
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
Si besoin urgent de me contacter, faites moi un mail sur : franceunity3d@gmail.com
- rattle-snake
- Messages : 187
- Inscription : 23 Jan 2012 23:37
Re: Comment protéger les données sensibles (mdp...)
Ton idée m’intéresse E3DStef, pourrais tu un peu developper le concept ?
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
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
Re: Comment protéger les données sensibles (mdp...)
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
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 !
Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !
- rattle-snake
- Messages : 187
- Inscription : 23 Jan 2012 23:37
Re: Comment protéger les données sensibles (mdp...)
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à
Je me permets de relancer un peu le post, pour si jms un expert passe par là
- E3DStef
- 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...)
L'idée est d'avoir un webservice (ou un petit script / serveur / node.js / etc...) qui va se charger de l'autorisation.rattle-snake a écrit :Ton idée m’intéresse E3DStef, pourrais tu un peu developper le concept ?
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
Si besoin urgent de me contacter, faites moi un mail sur : franceunity3d@gmail.com
Re: Comment protéger les données sensibles (mdp...)
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.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
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.
Re: Comment protéger les données sensibles (mdp...)
alors oui ça se décrypte le md5, c'est pas super simple et salé c'est déjà plus compliqué il me semble ?tu peux décrypter le md5 aussi facilement que tu le crypte
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 !
Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !