Aller au contenu principal

6.6. Public Key Algorithms (Algorithmes de clé publique)

6.6. Public Key Algorithms (Algorithmes de clé publique)

Ce protocole a été conçu pour fonctionner avec presque n'importe quel format de clé publique, encodage et algorithme (signature et/ou chiffrement).

Il existe plusieurs aspects qui définissent un type de clé publique:

  • Format de clé: comment la clé est encodée et comment les certificats sont représentés. Les blobs de clé dans ce protocole PEUVENT contenir des certificats en plus des clés.

  • Algorithmes de signature et/ou de chiffrement: Certains types de clés peuvent ne pas prendre en charge à la fois la signature et le chiffrement. L'utilisation de la clé peut également être restreinte par des déclarations de politique (par exemple, dans les certificats). Dans ce cas, différents types de clés DEVRAIENT être définis pour les différentes alternatives de politique.

  • Encodage des signatures et/ou des données chiffrées: Cela inclut, mais n'est pas limité au remplissage, à l'ordre des octets et aux formats de données.

Les formats de clé publique et/ou de certificat actuellement définis sont les suivants:

ssh-dss           REQUIRED     sign   Clé DSS brute
ssh-rsa RECOMMENDED sign Clé RSA brute
pgp-sign-rsa OPTIONAL sign Certificats OpenPGP (clé RSA)
pgp-sign-dss OPTIONAL sign Certificats OpenPGP (clé DSS)

Des types de clés supplémentaires peuvent être définis, comme spécifié dans [SSH-ARCH] et dans [SSH-NUMBERS].

Le type de clé DOIT toujours être explicitement connu (à partir de la négociation d'algorithme ou d'une autre source). Il n'est normalement pas inclus dans le blob de clé.

Les certificats et les clés publiques sont encodés comme suit:

string    identifiant de format de certificat ou de clé publique
byte[n] données de clé/certificat

La partie certificat peut être une chaîne de longueur nulle, mais une clé publique est requise. C'est la clé publique qui sera utilisée pour l'authentification. La séquence de certificats contenue dans le blob de certificat peut être utilisée pour fournir une autorisation.

Les formats de clé publique/certificat qui ne spécifient pas explicitement un identifiant de format de signature DOIVENT utiliser l'identifiant de format de clé publique/certificat comme identifiant de signature.

Les signatures sont encodées comme suit:

string    identifiant de format de signature (tel que spécifié par le format de clé publique/certificat)
byte[n] blob de signature dans un encodage spécifique au format

Les spécifications d'encodage détaillées pour les formats de clés "ssh-dss" et "ssh-rsa" peuvent être trouvées dans les documents de spécification complets.