Cifrado con múltiples claves diferentes?


¿Hay alguna forma de almacenar datos de forma encriptada para que puedan ser descifrados con varias claves diferentes?

Es decir, si he cifrado datos con la clave 1, pero quiero poder descifrarlos con las claves 2, 3 y 4.

Es esto posible?

 90
Author: Eric Platon, 2009-02-28

5 answers

GnuPG realiza el cifrado de múltiples claves en estándar.

El siguiente comando cifrará doc.txt usando la clave pública para Alice y la clave pública para Bob. Alice puede descifrar usando su clave privada. Bob también puede descifrar usando su clave privada.

gpg --encrypt --recipient [email protected] \
    --recipient [email protected] doc.txt

Esta característica se detalla en la sección de la guía del usuario titulada "Cifrar y descifrar documentos "

 132
Author: David S.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-09 07:21:57

Sí es posible

Sí Es posible el cifrado para múltiples destinatarios. También parece lógico cuando piensas que podrías querer ser capaz de leer lo que has enviado a alguien y para hacerlo necesitas estar en la lista de destinatarios.

Línea de comandos

Aquí está cómo hacerlo a través de gpg línea de comandos (como se describe en Respuesta de David Segonds):

gpg --encrypt \
  --recipient [email protected] \
  --recipient [email protected] \
clear-message.txt

Cliente GUI

Su GUI debe proporcionar una forma de cifrar para varios personas

Mecanismo

Hay una pregunta sobre Seguridad de la información, ¿Tamaño de archivo GPG con múltiples destinatarios?, que explican el mecanismo de cifrado:

GPG cifra el archivo una vez con una clave simétrica, luego coloca un encabezado identificar el par de claves de destino y una versión cifrada del clave simétrica.

[...] Cuando se encripta a varios destinatarios, esto cabecera se coloca varias veces proporcionando un única versión cifrada de la misma clave simétrica para cada receptor.

 45
Author: Édouard Lopez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-18 19:06:55

GnuPG y los clientes PGP generalmente cifran los datos reales con una clave simétrica llamada "clave de sesión". La clave de sesión se encripta con cada "clave de destinatario" (es decir, las que especifique con-r/recipient recipient). Esto a veces se conoce como un cifrado híbrido . En este momento, creo que GnuPG por defecto utiliza claves de sesión de 256 bits y AES para cifrar los datos de texto plano a esa clave de sesión AES-256, y sus claves de destinatario son su RSA/DSA/ECDSA/etc. asimétrico clave en este caso.

Una razón para hacerlo de esta manera es que los algoritmos criptográficos simétricos como AES son generalmente mucho más rápidos que los asimétricos como RSA. Por lo tanto, GnuPG solo tiene que cifrar ~256 bits (la clave de sesión) con RSA, y puede usar AES para cifrar los datos (¡tan grandes como desee!) con esa clave de sesión. Las máquinas Intel incluso tienen una instrucción incorporada, AES-NI, para hacer algunos pasos del algoritmo en hardware, lo que hace que GnuPG sea extra rápido en cifrar / descifrar datos.

Otra razón para hacerlo de esta manera es que permite que los documentos cifrados PGP se cifren a varias partes sin tener que duplicar el tamaño del documento. Tenga en cuenta que cuando especifica varios destinatarios para un documento cifrado (por ejemplo, gpg -ea -r Alice -r Bob -o ciphertext.asc), el documento cifrado que se almacena (texto cifrado.asc) no es 2 veces más grande que si lo hubieras encriptado a Alice.

Vea también el parámetro --show-session-key en la página de manual de gpg para poder descifre solo la clave de sesión, por ejemplo, para permitir que un tercero descifre un documento que está encriptado para usted sin tener que transferirle su clave privada o los datos de texto plano.

 23
Author: ido,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-29 04:06:58

Sí, es posible. Google "multiparty encryption" para empezar.

AFAIK, no hay drop 'em in y use 'em paquetes para ello.

Mark MarkusQ

P.d. Para un bosquejo de cómo se podría hacer, considere esto. El mensaje cifrado consiste en:

  • la carga útil, cifrada con un pad de una sola vez
  • el one time pad, encriptado con key1
  • el one time pad, encriptado con key2
  • ...
  • el one time pad, encriptado con keyN

El destinatario que tiene la clave que acaba de descifrar su copia del pad con su clave, y luego descifrar la carga útil.

Sin embargo, esto es solo una prueba de que se podría hacer y suck como una implementación real. Si es posible, debe evitar rodar su propio cifrado. Si no entiende por qué, debe definitivamente evitar rodar su propio cifrado.

-----Editar ------------

Si me equivoco y las herramientas Gnu lo hacen eso, úsalos. Pero no puedo encontrar ninguna información sobre cómo hacerlo.

 4
Author: MarkusQ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-28 02:50:07

Múltiple (más de dos) clave RSA es tal vez así - bueno, no soy un matemático, por lo que este algoritmo no es necesariamente seguro, solo quiero dar una idea con él.

M = p * q * r; p,q,r son números primos grandes

Fi(m)=(p-1)(q-1)(r-1)

D==(e1*e2*e3*...* ei)^(-1) (mod fi (m)); e1...ei son números arbitrarios, d se calcula para cumplir con la ecuación

Y1 = = x^e1 (mod m)

Y2 = = y1^e2 (mod m)

Y3 = = y2^e3 (mod m)

...

X = = yi^d (mod m)

Este algoritmo podría usarse, por ejemplo, para aumentar la velocidad del enrutador de cebolla.

 -15
Author: IQfighter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-13 09:10:14