【发布时间】:2012-05-15 08:23:36
【问题描述】:
我正在使用 ActiveRecord serialize 方法和我自己的一个类 AESCoder。这将每次使用带有随机初始化向量的 aes-256-cbc。当我将它存储在数据库中时,这个初始化向量是预先添加到字段中的,当然是在反序列化之前提取的。
现在,这个方案阻止我对这些属性使用任何查找器。我必须选择我需要的所有行,这些行将被自动解密,并在项目列表上执行 ruby select。当然,这是一个巨大的性能瓶颈,我无法承受这个应用程序。
一种解决方案是不使用随机 IV,但 aes-256-cbc 将不再安全。
我在这里忽略了什么吗?
【问题讨论】:
-
您是否有充分的理由要加密数据库中的单个实体?例如,为什么不将数据库放在加密文件系统上?
-
我的应用在 Heroku 上。我无法控制文件系统。
-
我不知道 Heroku,但是以稍微不同的方式问我的问题:您试图通过加密数据来防范的攻击场景是什么?您是否担心其他人可能会在您的应用程序运行的系统上获得 root 权限?让外部用户访问您的数据库记录的 SQL 注入错误?还有什么?您的解决方案应根据威胁的性质量身定制。
-
坦率地说,我在这里只是面临合同义务。我知道不同的攻击媒介,并且我知道如果有人控制了应用程序服务器,那么关键就在眼前。我正在尝试减轻每个查询现在面临的大量开销,仅此而已。
标签: ruby-on-rails-3 security encryption aes