[RESOLU ]Comment protéger les données sensibles (mdp...)
- rattle-snake
- Messages : 187
- Inscription : 23 Jan 2012 23:37
Re: Comment protéger les données sensibles (mdp...)
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 ) 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
Pour lutter contre la décompilation je suis en train de ré-écrire tout mon projet en C# (quelle douleur ) 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
Re: Comment protéger les données sensibles (mdp...)
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.F@B a écrit :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 ?
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 .
- rattle-snake
- Messages : 187
- Inscription : 23 Jan 2012 23:37
Re: Comment protéger les données sensibles (mdp...)
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
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
Re: Comment protéger les données sensibles (mdp...)
Beaucoup de gens disent que l'obfuscation ne sert que a ralentir un pirate, tu peux toujours lire le code mais moins bien.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
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.
- rattle-snake
- Messages : 187
- Inscription : 23 Jan 2012 23:37
Re: Comment protéger les données sensibles (mdp...)
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
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.
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
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.
- 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'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 Pcrattle-snake a écrit : E3DStef, tu as raison l'authentification de l'appareil par le serveur est en grand plus
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...)
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.
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.
- rattle-snake
- Messages : 187
- Inscription : 23 Jan 2012 23:37
Re: Comment protéger les données sensibles (mdp...)
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 ^^
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 ^^
- LieutenantMaster
- Messages : 41
- Inscription : 28 Jan 2017 16:38
- Localisation : France
- Contact :
Re: Comment protéger les données sensibles (mdp...)
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
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
- rattle-snake
- Messages : 187
- Inscription : 23 Jan 2012 23:37
Re: Comment protéger les données sensibles (mdp...)
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%.
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%.