Ric*_*ook 6 ruby cryptography ruby-on-rails
我正在考虑在Rails应用程序中使用attr_encrypted gem进行字段级加密.如何生成用于此gem的加密密钥?
更新:
Encryptor的文档(attr_encrypted使用的基础加密)声明如下(在Usage | Basic下):
secret_key = Digest::SHA256.hexdigest('a secret key')
encrypted_value = Encryptor.encrypt('some string to encrypt', :key => secret_key)
Run Code Online (Sandbox Code Playgroud)
我猜这a secret key可以是任意长度的随机字符串,并且调用hexdigest将从中计算适当的固定长度字符串.这是推荐的方法吗?
密钥只是一个字符串,任何字符串都可以,你只想让它远离那些不允许看到明文数据的人.您可以使用简单生成密钥SecureRandom.base64.这会让你几乎无法通过蛮力进行攻击,只需要很少的努力.
这里有趣的是密钥管理.您对此宝石的选择似乎是:
将密钥硬编码到应用程序中.这可以防止例如DBA或支持工程师"意外"读取敏感数据,但如果他们能够访问源代码和数据库,那么知道gem如何工作的人并不安全.
引用一个确定密钥的命名方法.这更有趣,但要注意:将密钥放入数据库并不会真正增加安全性.可以访问数据库和代码的人可以像使用硬编码值那样做很多事情.
通过让应用程序从开发人员(或者可能只是大多数开发人员)无法在生产中访问的位置读取至少部分密钥,您可以稍微改进一下,或者至少让开发团队与加密数据分离.超越它更难,至少在这个gem中是这样,因为应用程序需要运行才能访问加密/解密密钥.
这是否足够好取决于您首先加密数据的原因.
| 归档时间: |
|
| 查看次数: |
5541 次 |
| 最近记录: |