Un bon moyen de crypter les champs de la database?

On m'a demandé de crypter différents champs db dans la database .

Le problème est que ces champs doivent être déchiffrés après avoir été lus.


J'utilise Django et SQL Server 2005 .

Des bonnes idées?

    Ouais. Dites à celui qui vous a dit de devenir réel. Fait pas / peu de sens. S'il s'agit de valeurs stockées, Enterprise Edition 2008 peut stocker des files DB cryptés.

    Sinon, si vous en avez vraiment besoin (avec tous les inconvénients), cryptez-les simplement et stockez-les comme champs d'octets.

    Voir: Utilisation de Symmesortingc Encryption dans une database SQL Server 2005

    J'ai eu le même problème, et créé la solution suivante: http://djangosnippets.org/snippets/2489/

    Il m'est arrivé d'utiliser M2Crypto comme moteur de chiffrement, mais cela peut être échangé si désiré.

    Comme le note TomTom, cela augmente la barre pour un attaquant plutôt que de rendre impossible le déchiffrement hostile. En plus d'accéder à votre database, ils doivent également accéder à l'endroit où vous stockez la phrase secrète qui alimente la fonction de dérivation. Cependant, en séparant la key des données qu'elle protège de cette manière, vous avez au less maintenant la possibilité de sécuriser davantage cette key (par exemple avec un server de gestion de keys) pour élever la barre encore plus haut. La défense en profondeur est une bonne stratégie, mais vous devez également décider de ce qui constitue une surpuissance pour une application donnée.

    C'est aussi une idée terrible de crypter n'importe quel champ qui pourrait être utile pour la search ou le sorting (j'utilise cette astuce uniquement pour stocker les informations d'identification OAuth pour un service Web qui ne prend pas en charge les connections OAuth appropriées).

    Si vous stockez des choses comme des passwords, vous pouvez le faire:

    1. stocker les passwords des users comme leurs hachages SHA256
    2. get le mot de passe de l'user
    3. le hacher
    4. Élément de list

    vérifiez-le par rapport au mot de passe enregistré

    Vous pouvez créer un hachage SHA-256 en Python en utilisant le module hashlib .

    J'espère que cela t'aides