为了保护用户的敏感数据,我正在考虑以下两种方法:
- 为每个用户创建 1 个数据加密密钥 (DEK),使用它来加密(使用 AES CBC 模式,每次加密操作使用随机 IV)同一用户的所有数据。DEK 受到保护,并与数据分开存储。
- 使用多个 DEK,每次需要加密一条新的用户数据时使用 1 个(使用 AES/CBC 和上面的 IV)。然后使用与该用户对应的 KEK 对 DEK 进行加密,并与使用它加密的数据并排存储(例如,数据库中的同一行)。KEK 与数据和 DEK 分开安全存储。
AES/CBC 中是否存在具有良好随机 IV 的已知漏洞?第二种方法的好处是什么,除了最小化使用相同密钥加密的数据量,从而降低被密码分析的风险?