我将使用AES_ENCRYPT()和AES_DECRYPT将患者数据存储在EMR系统中,我想知道如何存储密钥。我需要能够允许授权用户访问该密钥,以便解密和读取存储在患者记录中的数据。如何轻松与许多用户共享密钥,但保持密钥安全。任何想法或例子都表示赞赏。
答案 0 :(得分:6)
执行此操作的标准方法是为每位患者创建“系统”密钥,并使用该密钥加密该患者的数据。 不要与患者或任何用户共享该密钥。
当用户注册系统时,请使用密码为该用户创建“用户”密钥。 (例如,使用用户密码的SHA-256哈希。)不要在系统上存储用户密码。
然后,当用户被授权访问患者的数据时,用授权用户的密钥加密该患者的系统密钥,并将加密的密钥保存在用户的帐户中。如果用户有权访问其他患者的记录,请对每个患者的系统密钥重复此过程。
最后,当授权用户想要访问患者的数据时,他/她输入他或她自己的密码,该密码用于解密患者的系统密钥,而密码又用于解密患者的数据。
当用户想要更改其密码时,您必须解密与该帐户关联的每个系统密钥,然后使用新密码对其进行重新加密。
免责声明:安全性很难 * ,我不是密码学家。此外,法律可能要求根据某些标准对患者数据进行加密和保护。在实施任何安全系统之前,请咨询专家,从不在任何情况下创建自己的安全方案,尤其是涉及财务,医疗或其他重要信息时。< / p>
* Bruce Schneier,首席安全技术官,BT