您需要使用自己的密钥加密每个笔记。您应该为每个音符使用一个新的对称密钥。此对称密钥称为会话密钥。
现在问题变成了如何将会话密钥分发给接收者并且只分发给接收者。为此,您需要公钥加密。
您应该为系统中的每个参与者(患者和医生)颁发他/她自己的个人密钥对。公钥可以存储在未加密的服务器上,但私钥不应存储在未加密的服务器上。您应该使用用户的密码加密服务器上的私钥,或者应该要求用户为自己安全地存储他们的私钥。
患者可以通过生成新的会话密钥并用它加密消息,然后用医生的公钥加密会话密钥来向特定医生发送私人消息。您还可以通过针对多个公钥加密会话密钥来向多个收件人发送消息。
或者,您可能希望拥有一个证书颁发机构来检查参与者的身份(例如,通过要求有照片的 ID)并签署参与者的公钥以断言已完成身份检查,并附加断言参与者角色的签名属性(s )。
至此,您有了点对点加密机制,这些本质上就是 S/MIME 和 PGP 方案的工作原理。
您可以在此基础上构建群组消息,以便患者和/或医生可以向大型群组发送消息(例如,患者可以将加密消息发送到足病医生组,而不允许牙科组阅读消息),无需任何人知道个人成员的身份。这称为多播加密。
您构建群组消息传递的方式是您需要创建群组密钥对。组密钥对由分发给组的所有成员的私钥和分发给需要向组发送消息的任何人的公钥组成。这仅允许成员和非成员向该组中的每个人发送消息。要发送群组消息,请使用群组的公钥加密该消息的会话密钥。
请注意,在大多数情况下,每次群组成员发生变化时(例如,有人离开群组,或有新人进入群组),您都需要创建一个新的群组密钥。