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