我将 Ruby on Rails 4.2 与 mySql 一起用于我的 HIPAA 合规性应用程序,我需要了解此应用程序的技术数据库要求。
我们真的需要加密所有数据库值,例如患者姓名等吗?
我将 Ruby on Rails 4.2 与 mySql 一起用于我的 HIPAA 合规性应用程序,我需要了解此应用程序的技术数据库要求。
我们真的需要加密所有数据库值,例如患者姓名等吗?
是的,如果您希望您的 Rails 应用程序符合 HIPAA 标准,您必须加密与患者和医生相关的所有详细信息(姓名、电子邮件、电话、地址)。
下面的 2 个 Ruby gem 对你很有帮助。
attr_encrypted:https ://github.com/shuber/attr_encrypted
paper_trail:https ://github.com/airblade/paper_trail
HIPAA 是一项不同寻常的法律,因为它提出了很多建议(可寻址项目)和一些断言(必需项目),但最终由每个组织自己决定他们需要做什么才能合规。这创造了很大的灵活性,也带来了很大的不确定性。一般来说,要符合 HIPAA,网站必须至少确保以下所有受保护的健康信息 (ePHI):
传输加密:在通过 Internet 传输时始终加密
备份:永远不会丢失,即应该备份并且可以恢复
授权:只能由使用独特的、经过审核的访问控制的授权人员访问
完整性:不被篡改或改变
存储加密:存储或归档时应加密
处置:不再需要时可永久处置
综合/HITECH:位于与您签订 HIPAA 业务伙伴协议的公司的 Web 服务器上(或者它在内部托管,并且这些服务器根据 HIPAA 安全规则要求得到适当保护)。
HIPAA 要求还不够强。简而言之,它声明您必须在静止时加密医疗记录,并且您不能使用损坏的原语,这是显而易见的。审核您的系统的人可能喜欢查看 AES。这很容易支持,并且 Amazon RDS MySQL 实例已经通过 aes_encrypt() 和 aes_decrypt() 函数开箱即用地支持这一点。
HIPAA 和 PCI-DSS 的不足之处在于它们没有说明应该使用哪种操作模式。实际上 MySQL 的 aes_encrypt() 使用的是 ECB 模式,这很可怕。此外,在这一层使用加密时,实施安全性存在问题。通过配置 mysql 记录所有查询,aes_encrypt() 很容易破解。AES 密钥必须嵌入到您的应用程序中,因此如果它被泄露,攻击者可以从配置文件中读取值并访问记录。这是可以通过加密应用程序中的数据然后将密文传输到数据库来避免的两个故障点。但是 HIPAA 并不关心这个问题。HIPAA 的其他要求,例如需要 CISSP 来分析您的应用程序更为重要。
我敦促您实施一个安全的系统,但 HIPAA 的设计不够好,无法在意。