web-dev-qa-db-fra.com

Qu'est-ce qu'une bonne configuration de clé GnuPG à usage général?

Étant donné que la plupart des types de clés peuvent être utilisés à des fins multiples, à savoir la certification, l'authentification, le chiffrement et les signatures, on pourrait simplement utiliser une clé pour tout - ce qui est un mauvais idée, telle que développée par exemple par Thomas Pornin . Il faut donc utiliser différentes paires de clés à des fins différentes, avec différentes méthodes de sauvegarde (le déchiffrement doit rester possible "pour toujours", tandis que les clés de signature peuvent "simplement" être remplacées) et la sécurisation. Mais je n'ai pas réussi à trouver un récapitulatif des meilleures pratiques résumant les réponses aux questions suivantes:

  • Quel type de clé doit être utilisé dans quel but (RSA, DSA, ... combien de bits, quand doivent-ils expirer, etc.)?
  • Toutes les clés doivent-elles être (distinctes?) Des sous-clés de la clé principale de certification ou des clés principales individuelles signées par l'ancienne? J'ai trouvé des guides non triviaux sur la façon de supprimer la clé principale secrète de vos sous-clés utilisées au quotidien, mais le problème impliqué vaut-il vraiment la peine d'avoir une chaîne de confiance plus courte pour ces clés par rapport à une clé de certification entièrement distincte ?
  • Dans quelle mesure est-il réellement important de garder la clé de certification hors ligne lorsque l'on utilise a) une phrase de passe "vraiment" forte ou b) un périphérique matériel comme une carte OpenPGP?
66
Tobias Kienzler

A propos de l'utilisation des sous-clés

Utilisez une clé primaire pour chaque identité vous avez besoin, sinon, utilisez des sous-clés.

Exemples d'utilisation de plusieurs clés primaires:

  • Vous ne voulez pas mélanger vos clés privées et professionnelles
  • Vous avez besoin d'une clé pas liée à votre identité "réelle", par exemple. lorsqu'il est poursuivi par les autorités

Exemples d'utilisation de sous-clés:

  • Vous souhaitez utiliser plusieurs clés pour plusieurs appareils (vous n'aurez donc pas à révoquer la clé de votre ordinateur si vous perdez votre mobile)
  • Vous souhaitez changer de clé régulièrement (par exemple, toutes les quelques années) sans perdre votre réputation sur le Web of Trust

J'ai récemment publié environ combien de clés OpenPGP faire dans une autre réponse.

À propos des tailles clés

Les développeurs GnuPG recommandent d'utiliser des clés RSA 2k pour le chiffrement et la signature. Ce sera très bien pour les sous-clés actuellement utilisées.

Comme votre clé primaire ne sera pas utilisée pour autre chose que la signature et la validation des signatures (et la révocation bien sûr), il est considéré comme une bonne pratique d'avoir une clé assez énorme ici, tout en utilisant des tailles plus petites ( assez grand pour le temps dont vous en aurez besoin) pour les sous-clés (ce qui accélérera les calculs et réduira la taille des fichiers).

J'ai eu un réponse plus détaillée face à RSA avec DSA/Elgamal pour une autre question chez Superuser, allez-y pour lire plus loin.

Expiration de la clé

Il existe deux façons de compromettre une clé privée:

  1. Quelqu'un est capable de vous le voler
  2. Quelqu'un peut le recalculer à partir de votre clé publique

La première est une question de sécurité de votre ordinateur (et comment vous utilisez votre clé, lire ci-dessous), la seconde est une question de temps. Aujourd'hui (et probablement dans les prochaines années), les clés RSA 2k iront parfaitement bien. Mais la puissance de calcul augmente considérablement, donc un attaquant a besoin de moins de cœurs CPU/cartes graphiques/ordinateurs/centrales électriques pour recalculer votre clé privée. En outre, des problèmes ont pu être trouvés dans les algorithmes utilisés, conduisant à une puissance de calcul beaucoup moins nécessaire. Les ordinateurs quantiques pourraient accélérer encore plus les choses.

Une date d'expiration de la clé limitera la validité de votre clé à une période donnée pendant laquelle vous vous attendez à ce qu'elle soit sécurisée. Tout attaquant le piratant par la suite ne pourra lire que les données chiffrées qui vous sont envoyées, mais personne ne les utilisera plus; si un attaquant s'empare de votre clé et que vous restez inaperçu, au moins cela l'empêchera de l'utiliser après un certain temps.

L'expiration de votre clé primaire vous fera perdre toute votre réputation Web of Trust, mais invalidera au moins votre clé après un certain temps si vous perdez l'accès (ce qui devrait ne se produira jamais, lisez la suite à la fin de ma réponse).

Stockage de votre clé primaire hors ligne

Votre clé primaire est la plus cruciale. Toute confiance - entrante et sortante - est liée à cela. Si quelqu'un y accède, il peut:

  • Créez de nouvelles clés en utilisant votre nom (et GnuPG utilise toujours votre nouvelle sous-clé par défaut!)
  • Révocation des sous-clés et des clés primaires
  • Délivrer la confiance à d'autres clés, ce qui est la pire chose qui puisse arriver: un attaquant pourrait créer une nouvelle clé, lui donner la confiance de votre ancienne puis révoquer votre ancienne clé, vous laissant sans accès à votre identité "déplacée" - il est littéralement dépassant votre identité .

Dans quelle mesure est-il réellement important de garder la clé de certification hors ligne lorsque l'on utilise a) une phrase secrète "vraiment" forte [...]?

Votre ordinateur pourrait toujours être piraté ou infecté par certains logiciels malveillants téléchargeant vos clés et installant un enregistreur de frappe pour récupérer votre mot de passe (et ce n'est pas une question de système d'exploitation que vous utilisez, ils comportent tous de graves failles de sécurité que personne ne connaît pour le moment ).

Garder votre clé primaire (privée) hors ligne est un bon choix pour éviter ces problèmes. Il comprend certains tracas, mais réduit les risques comme indiqué ci-dessus.

La plus haute sécurité signifierait bien sûr utiliser un ordinateur séparé et hors ligne (matériel, pas de machine virtuelle!) Pour effectuer toute la gestion des clés à l'aide de votre clé primaire et transférer uniquement les données OpenPGP (clés étrangères et signatures que vous avez émises) à l'aide d'une clé USB.

b) un périphérique matériel comme une carte OpenPGP?

Les cartes à puce OpenPGP se situent quelque part entre le stockage hors ligne sur une clé USB, mais leur connexion à votre ordinateur pour la signature et l'utilisation d'un autre ordinateur hors ligne dédié à cet effet. Votre clé privée ne quittera jamais la carte à puce (sauf à des fins de sauvegarde) qui nécessite un "PIN administrateur", toutes les signatures et même la création de clés se feront à l'intérieur de la carte. "Utiliser" votre clé (cryptage, signature, donner confiance) ne nécessitera qu'un "PIN utilisateur", donc même si vous connectez la carte à un ordinateur "endommagé", l'attaquant ne sera pas en mesure de dépasser complètement votre ID.

Vous pouvez stocker votre clé publique où vous voulez, pour avoir une réelle utilisation d'OpenPGP, vous devriez même l'envoyer (et vos autres clés publiques) aux serveurs de clés.


Et n'oubliez pas de créer et d'imprimer un certificat de révocation de votre clé primaire. La perte de votre clé privée n'ayant pas ce certificat signifie qu'il existe une clé à laquelle vous ne pouvez plus accéder sur les serveurs de clés et que vous ne pouvez rien y faire .

Imprimez-le, éventuellement plusieurs fois, et placez-le dans des endroits de confiance. Vos parents, une boîte de dépôt bancaire, ... - si ce certificat fuit, la pire chose à faire est de perdre votre Web of Trust.

49
Jens Erat

L'expiration de la clé n'a de sens que si vous pouvez prédire un moment où la clé cessera d'être sécurisée, en raison des progrès de la science, de la technologie ou du manque d'intérêt de votre part en ce qui concerne la protection de la clé privée. La question de savoir si une clé asymétrique donnée deviendra faible à l'avenir dépend des estimations de l'augmentation future de la puissance de calcul (qui n'est que peu prévisible) et de nouvelles découvertes scientifiques (qui ne sont pas du tout prévisibles). Pour la puissance de calcul, divers chercheurs et organismes institutionnels ont publié des recommandations avec des équations prédictives; voir ce site pour une bonne enquête. Rappelez-vous que bien que beaucoup de science et de suppositions éclairées soient entrées dans ces recommandations, leur taux de réussite prédictif n'est pas nécessairement meilleur que s'ils avaient abattu un mouton et regardé son foie pour démêler la volonté des dieux.

Quoi qu'il en soit, l'hypothèse habituelle est que les clés RSA à 2048 bits devraient maintenir la ligne jusqu'à au moins l'année 2030, et probablement plus, dans les conditions suivantes:

  • La clé a été correctement générée avec un PRNG sécurisé cryptographiquement . (GnuPG est censé utiliser correctement les ressources du système d'exploitation, mais OpenSSL l'était également jusqu'à ce moment où Debian a fait des bêtises spectaculaires ).
  • Aucun mathématicien ne trouve un raccourci mortel vers factorisation entière (la dernière avancée majeure a été la découverte du General Number Field Sieve en 1989; depuis lors, la recherche s'est concentrée sur beaucoup de petits , optimisations cumulatives; l'enregistrement actuel est 768 bits ).
  • Les ordinateurs continuent de fonctionner selon les lois physiques telles que nous les connaissons, et, en particulier, ordinateurs quantiques continuent d'être théoriques uniquement (quelques QC ont été construits, mais le record actuel semble être la factorisation d'un Entier 8 bits).

Bien que l'une de ces conditions puisse échouer à l'avenir, le moment de l'échec ne peut être prévu avec aucune précision, vous ne pouvez donc pas concevoir votre politique d'expiration des clés autour d'eux. Le mieux que vous puissiez faire est de supposez qu'ils ne se produisent pas, et priez pour le mieux.

Les clés DSA et ElGamal offrent une résistance similaire pour les mêmes longueurs de clé; c'est-à-dire que 2048 bits pour ceux-ci devraient également convenir.

D'un point de vue plus pratique, vous devriez garder vos dates d'expiration avant l'année 2038 .

Votre clé principale doit être conservée surtout hors ligne . Si votre clé principale est protégée par une phrase de passe très forte, elle peut être stockée n'importe où, en particulier dans un ordinateur en ligne. Mais lorsque vous tapez cette phrase de passe, vous devez être sûr que la machine que vous utilisez à ce moment-là est "propre" et n'est pas criblée d'enregistreurs de frappe et d'autres modules complémentaires néfastes. La clé principale est "importante" (au moins pour vous), et vous ne voulez vraiment pas la voir volée. Un ordinateur "en ligne" et impliqué dans des activités quotidiennes liées à Internet ne peut pas être considéré comme propre avec une garantie de 100%.

Donc stockage sur votre ordinateur, smartphone, compte Gmail ... ça va, tant que utilisation est sur un ordinateur hors ligne dédié. Vous ne devez utiliser votre clé principale que pour émettre des sous-clés, c'est-à-dire au maximum une fois tous les dix ans. Cela soulève la question supplémentaire de la phrase de passe: comment vous souviendrez-vous d'une phrase de passe que vous ne tapez jamais, dans dix ans?

Pour une très bonne résilience, je suggère d'imprimer le fichier de clé principale (encodé en Base64), puis d'écrire la phrase secrète avec un crayon (faire pas utilisez votre imprimante pour cela!) sur le même papier et stockez-la dans un coffre-fort. Au pire, si dans dix ans vous avez perdu le fichier et oublié la phrase de passe, vous pouvez toujours la saisir et récupérer votre clé principale.

18
Thomas Pornin

Livre de recettes

Il s'agit d'une approche de livre de cuisine qui illustre la réponse de Nice ci-dessus. Il s'agit d'une version distillée de Génération de clés GPG plus sécurisées: un guide étape par étape qui sépare toutes ces fonctions en clés distinctes

Créer une clé primaire

$ gpg --expert --gen-key

(8) RSA (définissez vos propres capacités)

Your selection? 8

(S) Basculer la capacité de signe

Your selection? s

(E) Basculer la capacité de chiffrement

Your selection? e

(Q) Terminé

Your selection? q

What keysize do you want? (2048) 4096
Key is valid for? (0) 3y
Is this correct? (y/N)y

ajoutez ensuite l'UID, l'e-mail et la phrase secrète.

Cela génère une clé primaire certifiée uniquement .

Créer des sous-clés de signature (etc.)

$ gpg --expert --edit-key [email protected]
gpg> addkey

(8) RSA (définissez vos propres capacités)

Your selection? 8
Your selection? e
Your selection? q

What keysize do you want? (2048) 3072
Key is valid for? (0) 6m
Is this correct? (y/N)y
Really create? (y/N) y

Cela génère une sous-clé de signe uniquement.

(Répétez ce processus de clé supplémentaire pour les sous-clés de chiffrement et d'authentification)

[...]

Lorsque nous aurons terminé, nous enregistrerons la clé dans notre trousseau de clés.

gpg> save

Sauvegarde

$ gpg -a --export-secret-key [email protected] > secret_key
$ gpg -a --gen-revoke [email protected] > revocation_cert.gpg

Retrait de la clé primaire

$ gpg -a --export-secret-subkeys [email protected] > secret_subkeys.gpg
$ gpg --delete-secret-keys [email protected]
Delete this key from the keyring? (y/N) y
This is a secret key! - really delete? (y/N) y
$ gpg --import secret_subkeys.gpg

Cela les laisse dans un état "portable" avec la clé secrète principale manquante. Le transfert se fait via

$ gpg -a --export-secret-keys [email protected] > laptop_keys_secret.gpg
$ gpg -a --export [email protected] > laptop_keys_public.gpg

(transfert via clé USB ou CD) et sur l'ordinateur portable

$ gpg --import laptop_keys_public.gpg
$ gpg --import laptop_keys_secret.gpg
15
serv-inc