Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Alternatively, we can implement our own solution using/maintaining our own Master Key and using python/django libraries to encrypt database fields.

  1. django-fernet-fields (recommended)
    1. uses pyca/cryptography open source library
      1. 136 contributors, relatively active, maintained
      2. Fernet algorithm
        1. AES with CBC mode, with PKCS7 padding, and SHA256 HMAC
        2. Generates base-64 encoded, 32-bit key
    2. very easy-to-use extension on top of django fields
    3. readable/understandable code
    4. can provide custom master key, rather than relying on a single SERVER_KEY
    5. allows for key rotation of the master key by listing older keys for decryption
    6. only 5 contributors; now just in maintenance mode (upgrading libraries)
  2. Django Extensions' Encrypted Fields
    1. uses Google's keyczar open source library, which has known security issues, but may not apply to our usage of it
    2. code is somewhat cryptic - mostly due to keyczar's interface
    3. 327 contributors, active overall development
  3. django-encrypted-fields
    1. uses Google's keyczar open source library, which has known security issues, but may not apply to our usage of it
  4. https://github.com/lanshark/django-encrypted-model-fields, uses Python's crypto library, but is a forked version of the original.