Esquema de cifrado donde varios usuarios pueden cifrar

3

Tengo un caso de uso en el que necesito asegurarme de que los usuarios de un grupo reciben un archivo. Los usuarios pueden agregarse o eliminarse de este grupo y el cifrado no es obligatorio, solo para asegurarse de que el archivo provino de uno de esos usuarios

Mi primer pensamiento fue utilizar el cifrado simétrico, pero dificultaría la eliminación de usuarios del grupo.

Luego, aunque usé un par de claves privadas y públicas para cada usuario, el usuario cifra el archivo con su clave privada y, cuando tengo que usarlo, lo desencripto con la clave pública. Si es necesario eliminar un usuario, simplemente podría revocar su certificado

El problema es que no sé de qué usuario proviene el archivo, por lo tanto, debería intentar descifrarlo con cada clave hasta que se descifre con éxito

¿Hay una forma más sencilla de lograr esto?

    
pregunta Mr. E 10.04.2017 - 19:12
fuente

3 respuestas

4

Eso suena como un caso de uso para GPG - ¿has probado GPG y lo encuentras falto (como muchos otros tienen ), y quieres una solución diferente?

Si no, GPG suena como la herramienta adecuada para el trabajo, aunque significa que tendrá una clave por usuario y no tendrá control sobre esa clave (aunque puede elegir marcarla como no confiable).

Si necesitas control sobre la clave, entonces x509 parece la mejor manera de hacerlo, pero como dices, debes administrar el descifrado.

También advertiría contra su enfoque private key encrypt, public key decrypt , ya que significa que todos los usuarios con acceso a la clave pública (es decir, cualquier persona que haya tenido una copia del certificado) pueden descifrar. Para evitarlo, deberá utilizar la clave pública del destinatario para el cifrado (y la clave privada del remitente para firmar).

De pasada: parece estar hablando de firmar, por lo que no tiene que preocuparse por el cifrado. De cualquier manera, la publicación / validación de claves públicas (por ejemplo, en LDAP, o utilizando x509) parece ser una posible solución.

    
respondido por el iwaseatenbyagrue 10.04.2017 - 19:22
fuente
2

Está en el camino correcto, pero la mejor opción es firmar y cifrar. Tiene un par de claves, al igual que cada uno de los usuarios del grupo. Firman el mensaje con su clave privada y lo cifran con su clave pública.

Luego, puede descifrar como describe con su clave privada, y verificar de qué usuario proviene el mensaje al verificar la firma con la clave pública de ese usuario.

    
respondido por el Xander 10.04.2017 - 19:20
fuente
0

Como han dicho otros, aquí probablemente hay herramientas que pueden hacer esto, pero intentaré mostrar una forma en que esto se puede hacer.

Los usuarios necesitan tener claves públicas / privadas. Cada usuario tiene su propia clave privada y las claves públicas de todos los demás usuarios. Al enviar datos, generará claves simétricas y las utilizará para cifrar los datos. La clave que se necesita para descifrar los datos luego se agrega varias veces a ese mensaje, cada vez cifrada con la clave pública de otro usuario.

Al recibir el mensaje, un usuario usará su propia clave privada para descifrar la clave simétrica generada y la usará para descifrar los datos iniciales.

De esta manera, cada mensaje será accesible solo para los destinatarios deseados. La adición o eliminación de destinatarios se puede hacer por mensaje.

Si el usuario que envía los datos está creando un hash de estos datos y los encripta con su propia clave privada, todos los usuarios receptores podrán descifrar ese hash. Al generar un hash local y compararlo con el descifrado, el usuario confirma que el originador es el propietario de la clave privada correspondiente. Si los datos con hash también contienen la lista de destinatarios, cada receptor podrá validar esa lista de destinatarios.

    
respondido por el Leo 11.04.2017 - 05:41
fuente

Lea otras preguntas en las etiquetas