嗨,我正在开发一个存储敏感医疗记录的 Rails 应用程序,因此我一直在寻找加密存储数据的最佳实践方法。我决定使用 gem 保险箱,它通过生成随机密钥和 IVs 来提供对称加密,然后用公钥加密那些。该应用程序需要向用户和一系列特殊用户(注册医生)提供对加密数据的访问。
我的问题与我需要工作流具有两个我不太确定如何实现的属性有关:
第一个问题是我想使用登录并提交数据的用户的密码作为公钥,但我使用的是存储加密密码的 gem Devise。我不想使用加密密码,因为如果有人能够访问数据库,它可能会破坏加密工作流程。
第二个问题是加密信息不仅需要创建信息的用户访问,还需要一系列特殊用户(医疗用户)访问。我知道 PHP 有一个函数 openssl_seal 可以接受一组公钥,但我不确定实现:
我需要加密和存储每个收件人公钥的对称密钥吗?或者我可以只提供所有的公钥和我们来加密和存储一次吗
第三个问题是第一个和第二个问题的组合,我如何访问多个收件人的公钥而不在服务器上存储任何可能危及工作流安全的内容?
我正在寻找的是关于架构概述而不是实际(代码)实现的一些建议和讨论。