Стратегии шифрования с помощью Django + Postgres?
Я собираюсь хранить несколько чувствительных фрагментов информации (SSN, банковские счета и т.д.), поэтому они, очевидно, должны быть зашифрованы. Какие стратегии вы рекомендуете?
Должен ли я делать все шифрование/дешифрование в самом веб-приложении? Должен ли я использовать что-то вроде pgcrypto и делать преобразования на стороне БД? Что-то еще полностью?
Кроме того, если вы думаете, что я должен делать шифрование на стороне веб-приложения, какие библиотеки Python вы бы порекомендовали?
Ответы
Ответ 1
Чем вы защищаете? Если злоумышленник получит доступ к вашей DB/файловой системе, он найдет, как вы расшифруете данные и ключи. Скрытие вашего ключа регистрации - непростая задача (и редко реализуется в "обычных" приложениях).
Я потратил бы больше времени на защиту сервера и исправление всех общих проблем безопасности.
Ответ 2
Вы также можете проверить django-pgcrypto: https://github.com/dcwatson/django-pgcrypto
Ответ 3
Я согласен с тем, что сначала вам необходимо рассмотреть вашу общую модель безопасности и какие угрозы могут быть наиболее рискованными, a la this article:
https://security.stackexchange.com/questions/16939/is-it-generally-a-bad-idea-to-encrypt-database-fields
но также рассмотрим их для зашифрованных полей в Django:
зашифрованные поля: https://github.com/svetlyak40wt/django-fields
более зашифрованные поля:
https://github.com/defrex/django-encrypted-fields,
https://github.com/django-extensions/django-extensions
Ответ 4
Если вы решите сделать шифрование на стороне своего веб-приложения и используете Django для своего приложения, вы можете посмотреть django-расширения, особенно EncryptedCharField и EncryptedTextField. → https://github.com/django-extensions/django-extensions/blob/master/docs/field_extensions.rst