Debes cifrar cada nota con su propia clave secreta. Debe usar una nueva clave simétrica para cada nota. Esta clave simétrica se denomina clave de sesión.
Ahora el problema es cómo distribuir la clave de sesión a los destinatarios y solo a los destinatarios. Para esto, necesitas criptografía de clave pública.
Debe emitir a cada participante en el sistema (pacientes y médicos) su propio par de llaves personal. La clave pública puede almacenarse en el servidor sin cifrar, pero la clave privada no debe almacenarse en el servidor sin cifrar. Debe cifrar la clave privada en el servidor con la contraseña del usuario, o se debe solicitar a los usuarios que almacenen su clave privada de forma segura.
Un paciente puede enviar un mensaje privado a un médico en particular generando una nueva clave de sesión y cifrando un mensaje con él, luego encriptando la clave de sesión con la clave pública del médico. También puede enviar un mensaje a múltiples destinatarios cifrando la clave de sesión contra múltiples claves públicas.
Opcionalmente, puede querer tener una Autoridad de Certificación que verifique la identidad de un participante (por ejemplo, solicitando una identificación con foto) y firme la clave pública del participante para afirmar que se realizó la verificación de identidad, y adjuntar atributos firmados que afirman la rol (es).
En este punto, tiene un mecanismo para el cifrado punto a punto, estos son esencialmente cómo funciona el esquema S / MIME y PGP.
Puede crear un mensaje grupal por encima de esto, para que los pacientes y / o médicos puedan enviar un mensaje a un grupo grande (por ejemplo, un paciente puede enviar un mensaje cifrado al grupo de podiatras, sin permitir que el grupo dental lea el mensaje), sin que nadie tenga que conocer la identidad del miembro individual. Esto se denomina cifrado multidifusión.
La forma en que creas mensajes de grupo es que necesitas crear un par de llaves de grupo. Un par de llaves de grupo consiste en una clave privada que se distribuye a todos los miembros del grupo y una clave pública que se distribuye a cualquiera que necesite enviar mensajes al grupo. Esto permite a los miembros y no miembros enviar un mensaje a todos en ese grupo solamente. Para enviar un mensaje de grupo, debe cifrar la clave de sesión para ese mensaje con la clave pública del grupo.
Tenga en cuenta que en la mayoría de los casos, deberá crear una nueva clave de grupo cada vez que cambie la membresía de un grupo (por ejemplo, alguien deja el grupo o una nueva persona ingresó al grupo).