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