¿Es posible cifrar datos, de modo que se puedan descifrar con varias claves diferentes?
Ejemplo:
He cifrado datos con key1, pero quiero poder descifrarlos con las claves 2, 3 y 4.
es posible?
encryption
gnupg
encryption-asymmetric
Glen Solsberry
fuente
fuente
si es posible
Sí, es posible el cifrado para varios destinatarios. También parece lógico cuando piensas que es posible que desees poder leer lo que le has enviado a alguien y hacerlo , debe estar en la lista de destinatarios.
Línea de comando
Aquí se explica cómo hacerlo a través de la
gpg
línea de comando (como se describe en la respuesta de David Segonds ):Cliente GUI
Su GUI debe proporcionar una forma de cifrar para varias personas
Mecanismo
Hay una pregunta sobre seguridad de la información , tamaño de archivo GPG con varios destinatarios. , que explican el mecanismo de cifrado :
fuente
Los clientes GnuPG y PGP en general generalmente cifran los datos reales con una clave simétrica llamada "clave de sesión". Luego, la clave de sesión se cifra con cada "clave de destinatario" (es decir, las que especifica con -r / - destinatario). Esto a veces se denomina cifrado híbrido. . En este momento, creo que GnuPG de forma predeterminada usa claves de sesión de 256 bits y AES para cifrar los datos de texto sin formato en esa clave de sesión AES-256, y las claves de su destinatario son su RSA / DSA / ECDSA / etc. clave asimétrica 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 realizar algunos pasos del algoritmo en el hardware, lo que hace que GnuPG sea más ágil en el cifrado / descifrado de datos.
Otra razón para hacerlo de esta manera es que permite que los documentos cifrados con PGP se cifren para varias partes sin tener que duplicar el tamaño del documento. Tenga en cuenta que cuando especifica varios destinatarios para un documento cifrado (p. Ej.
gpg -ea -r Alice -r Bob -o ciphertext.asc
), el documento cifrado que se almacena (ciphertext.asc) no es el doble de grande que si lo acabara de cifrar a Alice.Consulte también el
--show-session-key
parámetro en la página de manual de gpg para poder descifrar solo la clave de sesión, por ejemplo, para permitir que un tercero descifre un documento que le está cifrado sin tener que transferirle su clave privada o los datos de texto sin formato.fuente
Si es posible. Para empezar, el "cifrado de varias partes" de Google.
AFAIK, sin embargo, no hay que colocarlos y usarlos en paquetes.
- MarkusQ
PD: Para un bosquejo de cómo se podría hacer, considere esto. El mensaje cifrado consta de:
El destinatario que tiene la tecla i simplemente descifra su copia del pad con su clave y luego descifra la carga útil.
Sin embargo, esto es solo una prueba de que podría hacerse y sería una mierda como una implementación real. Si es posible, debe evitar utilizar su propio cifrado. Si no entiende por qué, definitivamente debería evitar utilizar su propio cifrado.
----- Editar ------------
Si me equivoco y las herramientas Gnu hacen eso, úselas. Pero parece que no puedo encontrar ninguna información sobre cómo hacerlo.
fuente
El RSA de varias claves (más de dos) 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 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 de The Onion Router.
fuente