Crypter un champ en BDD (mais ce n'est pas une question bdd) - SQL/NoSQL - Programmation
Marsh Posté le 04-08-2016 à 11:13:57
je pense que la rubrique adéquate aurait été "Programmation"
il y a une rubrique SQL, tu devrais trouver des interlocuteurs.
Marsh Posté le 04-08-2016 à 14:17:29
Ce sujet a été déplacé de la catégorie Systèmes & Réseaux Pro vers la categorie Programmation par Je@nb
Marsh Posté le 04-08-2016 à 16:18:30
Sans en savoir plus sur tes données d'entrée (jeu de caractères notamment) et ton besoin de confidentialité (si je ne peux pas lire la valeur en clair mais que déduire la méthode de cryptage est trivial, ça passe ?), difficile d'en dire plus.
Peuwi a écrit :
|
Base64 si ce que j'évoque plus haut n'est pas un problème.
Marsh Posté le 04-08-2016 à 16:45:14
Bonjour,
merci !
Le jeu de caractère, c'est un mot de passe, donc, UTF-8 limité aux caractères imprimables.
Après, si cela devient important, on peut aussi limiter à un ensemble plus restreint. (je veux dire, on est pas censé choisir des mots de passe en araméen)
Effectivement, le laisser simplement en base64 serait pas mal ...
Par contre, je préfèrerais une solution où on ne peut pas décoder à partir de la seule information de la BDD.
Marsh Posté le 05-08-2016 à 08:19:45
Dans ce cas pars sur de l'AES.
Regarde du côté des classes Cipher et PBEKeySpec (PBE pour Password Based Encryption).
Marsh Posté le 05-08-2016 à 09:55:34
Oui, pourquoi pas un bête AES ? C'est extrêmement robuste (à condition de protéger la clé évidemment) et dispo dans tous les langages. Il faut juste faire gaffe à bien supporter l'encoding de la valeur soumise en entrée.
Ca parle de base64 au dessus, je me demande bien pourquoi vu que c'est juste une façon d'encoder des informations pour maitriser le charset mais en aucun cas une solution de cryptage vu qu'il n'y a aucune notion de clé. Donc pour un mot de passe c'est pourri.
Marsh Posté le 05-08-2016 à 10:50:51
TotalRecall a écrit : Ca parle de base64 au dessus, je me demande bien pourquoi vu que c'est juste une façon d'encoder des informations pour maitriser le charset mais en aucun cas une solution de cryptage vu qu'il n'y a aucune notion de clé. Donc pour un mot de passe c'est pourri. |
Peuwi a écrit : - Je ne peux pas faire un hashage, car j'ai besoin d'avoir la donnée en clair. (ce n'est pas une vérification de mot de passe) |
J'ai commencé par Base64 parce que le besoin initial n'était pas de la protection mais de l'obfuscation
Marsh Posté le 05-08-2016 à 11:05:01
Et bien, voilà, merci pour votre réponse !
Effectivement, du coup, c'est une solution purement dev.
Ca semble tout bête,
http://www.abricocotier.fr/16333-c [...] 28-en-java
donc, j'imagine que je peux demander cela facilement
Merci !
Marsh Posté le 05-08-2016 à 20:13:11
LeRiton a écrit :
|
Désolé mais un chiffrage par modulo, xor or tout ce que tu veux de basique c'est déjà du cryptage contrairement à la base64 qui est réversible sans aucune donnée externe comme je disais et qui en plus visuellement se reconnait super facilement.
Même si je vois bien où tu voulais en venir ça n'est pas pareil : pour moi un mot de passe en base64 c'est aussi dangereux qu'un mot de passe en clair.
Marsh Posté le 05-08-2016 à 20:59:08
TotalRecall a écrit :
|
Complètement d'accord.
Pour moi l'objectif c'était pas de protéger un mot de passe mais d'empêcher Marcel de la MOA qui a accès à la prod de connaître les mots de passe de ses collègues. Dans ce sens, Base64 comme n'importe quoi d'autre conviendrait.
Marsh Posté le 04-08-2016 à 10:48:44
Bonjour,
- j'ai besoin de crypter un champ dans une BDD postgres. (une sorte de mot de passe)
- Je ne peux pas faire un hashage, car j'ai besoin d'avoir la donnée en clair. (ce n'est pas une vérification de mot de passe)
- Je souhaite le crypter pour que la prod ne puisse par voir "en clair" cette valeur.
- J'aimerais éviter de chiffrer toute la BDD avec un certificat authentifiant le client de la BDD, ce qui serait rapidement un truc à emmerdes maximum, ce serait too much, et j'aurais bien du mal à le justifier.
Ca, c'est pour le besoin.
Pour un début de solution, j'imaginerais :
- une petite clé inscrite en dur dans l'application. (il faut la clé applicative + la valeur en bdd, cette double sécurité me suffirait)
- une moulinette qui transforme mon champ en un autre truc, dans un sens et dans l'autre. (intuitivement, un modulo suffit) L'idéal, ce serait d'utiliser une fonction java toute bête qui existe déjà et qui fait ca bien
Le problème étant très commun (enfin, moins commun qu'une vérification de mot de passe quand même), je suppose que des solutions standard existent.
Je vous remercie d'avance !
Message édité par Peuwi le 04-08-2016 à 10:49:30