¿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?
¿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?
Respuestas:
GnuPG realiza el cifrado de varias claves de forma 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 alice@example.com \
--recipient bob@example.com doc.txt
Esta función se detalla en la sección de la guía del usuario titulada " Cifrado y descifrado de documentos "
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.
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 ):
gpg --encrypt \
--recipient alice@example.com \
--recipient bob@example.com \
clear-message.txt
Su GUI debe proporcionar una forma de cifrar para varias personas
Hay una pregunta sobre seguridad de la información , tamaño de archivo GPG con varios destinatarios. , que explican el mecanismo de cifrado :
GPG cifra el archivo una vez con una clave simétrica, luego coloca un encabezado que identifica el par de claves de destino y una versión cifrada de la clave simétrica.
[...] Cuando se encripta para varios destinatarios, este encabezado se coloca varias veces, lo que proporciona una versión encriptada de la misma clave simétrica para cada destinatario .
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.
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.
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.