[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

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

Message par rattle-snake » 30 Jan 2017 15:17

Impeccable merci pour vos retours, je suis curieux si vous avez des compléments par la suite effectivement !

Pour lutter contre la décompilation je suis en train de ré-écrire tout mon projet en C# (quelle douleur :lol: ) afin de pouvoir utiliser le combo :
Obfuscator :
https://www.assetstore.unity3d.com/en/#!/content/48919

et Anti-Cheat Toolkit pour protéger les variables en mémoire :
https://www.assetstore.unity3d.com/en/#!/content/10395

Avec une exportation en IL2CPP.
Si j'ai bien compris le IL2CPP permet de compiler en C++ avec parfois un vrai gain de vitesse et la structure est plus difficile a reverse ingénierier ?

Avec ça, ça devrais commencer a être pas mal même avec une clé AES stockée coté Appli :oops:

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

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

Message par Farstone » 30 Jan 2017 18:30

F@B a écrit :
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 ?
Alors oui et non, disons que si quelqu'un arrive à entré dans ta base de donnée il devrait savoir comment le décrypter, ensuite un script côté serveur qui se charge de crypter les mot de passe entré en clair sur l'appli avec un mot clef bien stocké je pense que c'est le moyen le plus sur.

Sinon rattle-snake je pense que tu a pas besoin de te prendre la tête a faire ça, comme je t'ai dit seulement les dll que tu trouve dans ton dossier managed peuvent être dé compilé et ce sont en faite des bibliothèques avec seulement les fonction que tu appel comme la GUI example.text = text; les scripts que tu code son compilé dans les fichier assets, resS je ne sait pas si ont peux les décompiler, mais si tu le sens pas, tu peux utilisé un obfuscator c'est comme tu sens.

EDIT : En faite j'ai revérifié et fouillé un peux, le dll Assembly-CSharp.dll regroupe tout les scripts de ton projet je n'avait pas vue, il est donc INDISPENSABLE d'utiliser un obfuscator, même si tu n'a pas de données sensible dans ton code source ta pas forcément envie que tout le monde le voie, j'ai bien fait de passer par là car je ne pensait pas qu'on pouvait l'obtenir aussi clairement, même l'assembly de Rust est clairement visible 8| .

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 » 30 Jan 2017 18:54

Bien reçu Twiixy,

C'est ce que j'avais vu dans la vidéo du plugin effectivement tout est lisible en clair (ce qui est un peu abusé de la part de Unity quand même).
On peut voir la transformation ici ça rigole pas ^^
https://www.youtube.com/watch?v=a5ypXst4OaM

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

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

Message par Farstone » 30 Jan 2017 19:02

rattle-snake a écrit :Bien reçu Twiixy,

C'est ce que j'avais vu dans la vidéo du plugin effectivement tout est lisible en clair (ce qui est un peu abusé de la part de Unity quand même).
On peut voir la transformation ici ça rigole pas ^^
https://www.youtube.com/watch?v=a5ypXst4OaM
Beaucoup de gens disent que l'obfuscation ne sert que a ralentir un pirate, tu peux toujours lire le code mais moins bien.
Si des jeux comme Rust ne voient pas d'inconvénient a laisser leur code en clair c'est que apparemment quand tu fait un projet sur unity tu sait que ton code source serras lisible a tous, il faut juste faire attention si tu utilise un cloud ou une base de donnée a protéger les identifiant. Mais un obfuscator ne te protège pas a 100% si tu a t'es identifiant stocké côté client. Il faudra faire des autorisation spécial (voir le liens que je t'ai donnée plus haut) Après un obfuscator peux quand même décourager les personnes mal intentionnée les moins persévérante.

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 » 05 Fév 2017 13:00

Hello Twiixy,

Merci j'ai jeté un coup d'oeil aux liens que tu m'as envoyé sur App42 mais le fait que la clé secrète soit obligatoirement stocké sur Unity, nous fais retourner au point de départ concernant la décompilation :roll:

E3DStef, tu as raison l'authentification de l'appareil par le serveur est en grand plus :)

J'ai l'impression qu'il n'y a pas de solution fiable cela dit.

Merci a vous, je laisse un peu le forum ouvert pour si d'autres bonne idées arrivent entre temps et sinon je le mettrai comme résolu.

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 » 06 Fév 2017 21:11

rattle-snake a écrit : E3DStef, tu as raison l'authentification de l'appareil par le serveur est en grand plus :)
L'authentification par adresse MAC reste une grande solution, mm si on peut faire de l'ip spoofing. Mais sur un mobile c'est hachement plus dur que sur Pc ;-)

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 » 07 Fév 2017 00:44

En me renseignant et en cherchant des sujet sur la protection contre la décompilation de Photon (qui n'a rien a avoir mais il stock aussi la secret key côté client) je me suis rendu compte qu'il n'y a pratiquement aucun sujet la dessus, et en ayant cherché dans ma dll avec ILSpy j'ai été incapable de trouver cette secret key. Il faut savoir que sur Unity la secret key de photon n'est pas stocké dans un script, mais directement dans Unity (Le PUN wizard config), j'ai aussi cherché dans le dll de Photon mais aucun résultat (avec la fonction recherche), sa ma l'air sécurisé mais j'ai aucune idée de comment sa marche pour essayer de le reproduire avec la secret key de App42.
Si quelqu'un a une piste...

Sinon Rattle-snake, un bon coup d'obfuscator et un peux de recherche sur la doc pour sécuriser ta secret key, gérer les permission devrait déjà décourager le plus grand nombres, mais c'est pas du 100% bien évidemment.

L'autre solution pour être définitivement tranquille, mais ce n'est qu'une supposition je ne sait pas si sa peux marcher, se serrait de stocker la secret key dans une base de donnée et la récupérer avant la connexion, mais je pense qu'on reviens au même problème, pour la récupérer d'une base de donnée il faudra ajouté le compte de celle ci ou un lien qui renvoie la clef mais qui n'est plus du tout protégé de la décompilation, sa tourne en rond.

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 » 12 Fév 2017 22:55

Hello Twiixy et merci pour ton retour :)

Je suis d'accord avec toi, j'ai été étonné de ne trouver que très peu d'infos sur ce sujet.
L'histoire avec Photon est intéressante cela-dit s'ils ont trouvé un moyen... effectivement si quelqu'un a une piste...

Effectivement pour la base de données ca serait encore le serpent qui se mord la queue ^^

Avatar de l’utilisateur
LieutenantMaster
Messages : 41
Inscription : 28 Jan 2017 16:38
Localisation : France
Contact :

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

Message par LieutenantMaster » 12 Fév 2017 23:47

Personnellement si je devrais faire un système pour protéger par exemple les mots de passe des utilisateurs.

Création du compte => les informations vont dans la base Sql qui va être scriptée en md5.

Connexion => vérification si les identifiants sont les mêmes que ceux de la base de données ( comparé entre les identifiants enregistrés dans la base Sql en md5 et des nouveaux identifiants qui seront transformés en md5 pour faire la vérification).

Si tout est correct alors la connexion est autorisé, sinon message d'erreur. Sinon au bout de 3 erreurs, proposition de demande par mail et au bout de 5 erreurs l'ip est bloquée du système pour 1 heure. Et si je souhaite encore plus sécuriser le système j'envoie un autre mail qui demande si je souhaite bloquer cette adresse Ip. Si celle-ci est bannie de X compte différents alors ban global.

Après c'est l'idée papier en utilisant mes connaissances personnelles. Je n'ai aucune idée si tu peux faire le même style avec du AES et surtout du côté base de donnée en particulier... Et aussi faut aussi le coder.... Ben va falloir se débrouiller tout seul je pense :-|
Image

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 » 13 Fév 2017 00:28

En fait le problème est que je veux crypter des données avant l'envoi sur la base mysql (pour eviter des attaques man-in-middle par ex). Même en passant par ssl il faut toujours les crypter par précaution.
Pour crypter ces données j'utilise donc une clé AES coté Appli. Et c'est cette clée qu'il faut pouvoir rendre illisible à la décompilation.
Je passe par l'Obfuscator cité plus haut qui est très bon (renommage aléatoire des fonctions/classes, pollution du code avec des données aléatoires de partout). Cependant comme bcp le soulignent, l'Obfuscation ne sert qu'a ralentir les hackeurs mais n'est pas fiable à 100%.

Répondre

Revenir vers « Unity le logiciel »