Me gustaría desarrollar un servicio en el que los clientes se conecten y obtengan información. Estas informaciones también podrían compartirse con otros.
Es muy simple, pero me gustaría cifrar los datos, ya que solo el cliente tendría acceso a todas sus informaciones y las demás a lo que el cliente ha concedido.
En un esquema:
+----------------+ +----------------+ | SHARED DATA | |Client 1 Shared | | | ============ | Data | |----------------| |----------------| | UNSHARED DATA | | UNSHARED DATA | +----------------+ +----------------+ || || || || || || || || || || +--------+ +--------+ | Client1| | Client2| +--------+ +--------+
Estaba pensando en un cifrado asimétrico, pero como no estoy familiarizado con eso, quería saber cómo podría guardar las claves para eso (el cliente es un globo ocular, solo tiene una contraseña, no puede ser subir / recuperar claves).
Múltiples problemas / preguntas que vienen: Si cifro las claves con su contraseña. Pierde todas sus informaciones ...
¿Debo usar una clave privada para cifrar los datos que se compartirán (si alguien obtiene una clave pública, podría acceder, tal vez un apretón de manos o algo podría contrarrestar eso)? ¿O una clave pública dada por el segundo servicio? En ese caso, el servicio n ° 1 tiene que ser capaz de leer los datos para cifrarlos ...
Si cifro los datos cada vez que se debe compartir algo, perderé eficiencia, ¿no es así?
Realmente no sé cómo proceder. Mi objetivo es proteger la mayoría de los datos del usuario. ¿Qué sugieres?
Gracias de antemano.