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?
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?
Réponses:
GnuPG effectue un cryptage multi-clés en standard.
La commande suivante chiffrera doc.txt
à l'aide de la clé publique pour Alice et de la clé publique pour Bob. Alice peut déchiffrer en utilisant sa clé privée. Bob peut également décrypter à l'aide de sa clé privée.
gpg --encrypt --recipient alice@example.com \
--recipient bob@example.com doc.txt
Cette fonctionnalité est détaillée dans la section du guide de l'utilisateur intitulée " Crypter et décrypter les documents "
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.
Voici comment le faire via la gpg
ligne de commande (comme décrit dans la réponse de David Segonds ):
gpg --encrypt \
--recipient alice@example.com \
--recipient bob@example.com \
clear-message.txt
Votre GUI doit fournir un moyen de chiffrer pour plusieurs personnes
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 :
GPG crypte le fichier une fois avec une clé symétrique, puis place un en-tête identifiant la paire de clés cible et une version cryptée de la clé symétrique.
[...] Lorsqu'il est crypté pour plusieurs destinataires, cet en-tête est placé plusieurs fois, fournissant une version cryptée de manière unique de la même clé symétrique pour chaque destinataire .
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.
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.
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.