Est-il possible de crypter des données, de sorte qu'elles puissent être décryptées avec plusieurs clés différentes?
Exemple:
J'ai chiffré des données avec key1, mais je veux pouvoir déchiffrer avec les clés 2, 3 et 4.
Est-ce possible?
encryption
gnupg
encryption-asymmetric
Glen Solsberry
la source
la source
Oui c'est possible
Oui, le cryptage pour plusieurs destinataires est possible. De plus, il semble logique de penser que vous voudrez peut-être pouvoir lire ce que vous avez envoyé à quelqu'un et que pour ce faire, vous devez être dans la liste des destinataires.
Ligne de commande
Voici comment le faire via la
gpg
ligne de commande (comme décrit dans la réponse de David Segonds ):Client GUI
Votre GUI doit fournir un moyen de chiffrer pour plusieurs personnes
Mécanisme
Il y a une question sur la sécurité de l'information , la taille du fichier GPG avec plusieurs destinataires? , qui expliquent le mécanisme de cryptage :
la source
Les clients GnuPG et PGP en général chiffrent généralement les données réelles avec une clé symétrique appelée «clé de session». La clé de session est ensuite chiffrée avec chaque "clé de destinataire" (c'est-à-dire celles que vous spécifiez avec -r / - destinataire). Ceci est parfois appelé un chiffrement hybride . À l'heure actuelle, je pense que GnuPG utilise par défaut des clés de session de 256 bits et AES pour crypter les données en texte brut sur cette clé de session AES-256, et vos clés de destinataire sont vos RSA / DSA / ECDSA / etc. clé asymétrique dans ce cas.
Une des raisons de procéder de cette manière est que les algorithmes cryptographiques symétriques comme AES sont généralement beaucoup plus rapides que les algorithmes asymétriques comme RSA. GnuPG n'a donc qu'à crypter ~ 256 bits (la clé de session) avec RSA, et peut utiliser AES pour crypter les données (aussi grandes que vous le souhaitez!) Avec cette clé de session. Les machines Intel ont même une instruction intégrée, AES-NI , pour effectuer certaines étapes de l'algorithme dans le matériel, ce qui rend GnuPG plus rapide pour crypter / décrypter les données.
Une autre raison de procéder de cette manière est que cela permet aux documents cryptés PGP d'être cryptés à plusieurs parties sans avoir à doubler la taille du document. Notez que lorsque vous spécifiez plusieurs destinataires pour un document chiffré (par exemple
gpg -ea -r Alice -r Bob -o ciphertext.asc
), le document chiffré qui est stocké (ciphertext.asc) n'est pas 2 fois plus grand que si vous l'aviez juste chiffré avec Alice.Voir aussi le
--show-session-key
paramètre dans la page de manuel gpg pour pouvoir décrypter uniquement la clé de session, par exemple pour permettre à un tiers de décrypter un document qui vous est crypté sans avoir à lui transférer votre clé privée ou les données en clair.la source
Oui c'est possible. Google "cryptage multipartite" pour commencer.
AFAIK, il n'y a pas de drop 'em in et utilisez-les pour cela cependant.
- MarkusQ
PS Pour un aperçu de la façon dont cela pourrait être fait, considérez ceci. Le message chiffré comprend:
Le destinataire qui détient la clé i déchiffre simplement sa copie du pavé avec sa clé, puis décrypte la charge utile.
Cependant, c'est juste une preuve que cela pourrait être fait et serait nul en tant que mise en œuvre réelle. Dans la mesure du possible, vous devez éviter de lancer votre propre cryptage. Si vous ne comprenez pas pourquoi, vous devez absolument éviter de lancer votre propre cryptage.
-----Éditer ------------
Si je me trompe et que les outils Gnu le font, utilisez-les. Mais je n'arrive pas à trouver d'informations sur la façon de le faire.
la source
Plusieurs RSA clés (plus de deux) sont peut - être comme ça - eh bien je ne suis pas mathématicien, donc cet algorithme n'est pas nécessairement sécurisé, je veux juste donner une idée avec lui.
m = p * q * r; p, q, r sont de grands nombres premiers
fi (m) = (p-1) (q-1) (r-1)
d == (e1 * e2 * e3 * ... * ei) ^ (- 1) (mod fi (m)); e1 ... ei sont des nombres arbitraires, d est calculé pour remplir l'équation
y1 == x ^ e1 (mod m)
y2 == y1 ^ e2 (mod m)
y3 == y2 ^ e3 (mod m)
...
x == yi ^ d (mod m)
Cet algorithme pourrait être utilisé par exemple pour augmenter la vitesse de The Onion Router.
la source