2010-09-03 5 views
12

Je vais stocker quelques informations sensibles (SSN, comptes bancaires, etc.) donc elles devront évidemment être cryptées. Quelles stratégies recommandez-vous?Stratégies de cryptage avec Django + Postgres?

Devrais-je faire tout le chiffrement/décryptage dans l'application Web elle-même? Dois-je utiliser quelque chose comme pgcrypto et faire les conversions du côté DB? Quelque chose d'autre entièrement?

En outre, si vous pensez que je devrais faire du chiffrement du côté de l'application web, quelles bibliothèques Python recommanderiez-vous?

Répondre

1

De quoi protégez-vous? Si l'attaquant avait accès à votre DB/système de fichiers, il trouverait comment vous décrypter les clés de données &. Cacher votre clé de chiffrement n'est pas une tâche facile (et rarement implémentée dans les applications "usuelles").

Je consacrerais plus de temps à la protection du serveur et à la résolution de tous les problèmes de sécurité généraux.

+0

Je suis d'accord, et je prévois d'utiliser un service entièrement géré pour exécuter ma configuration de production précisément pour cette raison - je sais juste assez sur l'administration du système Linux pour savoir à quel point je sais :) Cela étant dit, je voudrais encore crypter les champs. Je vois cela comme le même type d'activité que le verrouillage des portes de votre maison. C'est encore assez facile à percer, mais cela ajoute un peu de dissuasion. –

+0

Ensuite, vous devriez coller toutes vos clés et votre inscription sur le côté webapp, de sorte que si l'attaquant DB volé ne reçoit rien. Si les fichiers volés - aussi rien. Donc, codez en clé le code, et cryptez/décryptez toutes les données en utilisant AES de la bibliothèque Python standard. – BarsMonster

+0

Je suppose que vous pouvez également mettre votre clé dans un endroit différent, donc quand vous copiez aveuglément la racine de votre site, l'attaquant n'aurait pas la clé. – BarsMonster

1

Je suis d'accord que vous devez d'abord considérer votre modèle global de sécurité et quelles voies menace pourrait être le plus grand risque, à la cet article:

https://security.stackexchange.com/questions/16939/is-it-generally-a-bad-idea-to-encrypt-database-fields

mais aussi jeter un oeil à ces champs pour cryptés dans Django:

crypté champs: https://github.com/svetlyak40wt/django-fields

champs cryptés:

https://github.com/defrex/django-encrypted-fields, https://github.com/django-extensions/django-extensions