• [^] # Re: Pourquoi 3 clés?

    Posté par . En réponse au journal De la gestion des clefs OpenPGP. Évalué à 5.

    je vois que sur la carte OpenPGP, on peut/doit stocker 2 ou 3 clés. Pourquoi donc?

    Une clef de signature, une clef de (dé)chiffrement, et une clef d’authentification.

    Pourquoi alors avoir une clé de chiffrement et une clé de signature différentes?

    Comme j’essaie de l’expliquer dans le journal, seul RSA permet d’utiliser une même paire de clefs à la fois pour signer/vérifier (signer avec la clef privée, vérifier avec la clef publique) et pour chiffrer/déchiffrer (chiffrer avec la clef publique, déchiffrer avec la clef privée). Les autres algorithmes asymétriques n’ont pas cette flexibilité (une paire ElGamal ou ECDH ne permet que de chiffrer/déchiffrer, une paire DSA ou ECDSA ne permet que de signer).

    Et même dans le cas de RSA utiliser une seule paire pour toutes les opérations n’est pas forcément considéré comme une bonne idée (cf. message de khivapia ci-dessus).

    Si j'ai 3 clés différentes, j'ai donc 3 clés publiques à communiquer.

    On touche là du doigt un problème de vocabulaire récurrent et enquiquinant dans le monde OpenPGP, lié au fait que le terme « clef publique » peut désigner deux choses complètement différentes.

    Au sens strict, une « clef publique » est juste un ensemble de quelques valeurs numériques (par exemple, une clef publique RSA est un couple {n,e} où n est le module et e l’exposant de chiffrement), sans aucune autre information. C’est le pendant de la clef privée dans une « paire de clefs ».

    Mais dans le monde OpenPGP, on emploie très souvent « clef publique » pour désigner ce qu’il conviendrait plutôt d’appeler un « certificat OpenPGP »1, et qui comprend :

    • la clef publique (au sens strict) de la paire de clefs primaire ;
    • une ou plusieurs identités ;
    • pour chaque identité, des signatures (qu’il conviendrait d’appeler des certifications) établissant un lien entre la clef publique primaire et cette identité :
      • au moins une auto-signature (émise par la clef primaire privée) ;
      • un nombre indéfini de signatures émises par d’autres clefs ;
    • une ou plusieurs sous-clefs publique (encore une fois, au sens strict).

    Ce que les utilisateurs d’OpenPGP manipulent, ce sont des certificats, jamais des clefs publiques au sens strict.

    Peu importe le nombre de sous-clefs, quand tu communiques ta « clef publique », tu communiques un certificat contenant toutes les informations ci-dessus (y compris toutes les sous-clefs publiques). Tes correspondants n’ont pas à se soucier de ce que contient ton certificat.


    1 Cette notion de « certificat » a été évitée dans les RFC 2440/4880 pour des raisons politiques (pour ne pas marcher sur les plates-bandes de X.509 et PKIX), d’après un des auteurs desdites RFC.