我正在从事一个 HIPAA 项目,我注意到我需要加密所有包含或可能包含私有(private)健康信息的列级数据。也就是说,我希望在 block_encryption_mode=aes-256-cbc 中将 AES_ENCRYPT 和 AES_DECRYPT 与 MySQL 一起使用。看起来我需要为表中的每一行提供一个唯一的 IV(初始化向量)。我需要同样的 IV 来加密和解密。我应该将其存储在数据库的列中还是其他位置?
另外,对于列类型,使用 varbinary/blob 还是 HEX 加密结果并将其放入 varchar/text 中更好?
欢迎提出任何其他建议,以尽可能保证数据安全。
最佳答案
将iv存储在列中,不需要保密。
我会使用 varbinary/blob 而不是十六进制编码数据。
注意:Base64 是比十六进制更好的选择,存储开销更少。
稍微解决一下@Marc:加密 key 将如何受到保护?服务器保护和管理访问有多好。
关于MySQL CBC 加密和存储初始化向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36013996/