É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:
Utilisez une clé primaire pour chaque identité vous avez besoin, sinon, utilisez des sous-clés.
Exemples d'utilisation de plusieurs clés primaires:
Exemples d'utilisation de sous-clés:
J'ai récemment publié environ combien de clés OpenPGP faire dans une autre réponse.
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.
Il existe deux façons de compromettre une clé privée:
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).
Votre clé primaire est la plus cruciale. Toute confiance - entrante et sortante - est liée à cela. Si quelqu'un y accède, il peut:
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.
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:
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.
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
$ 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 .
$ 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
$ 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