6.6. Public Key Algorithms (公開鍵アルゴリズム)
6.6. Public Key Algorithms (公開鍵アルゴリズム)
このプロトコルは, ほとんどすべての公開鍵形式, エンコーディング, アルゴリズム (署名および/または暗号化) で動作するように設計されている。
公開鍵タイプを定義するいくつかの側面がある:
-
鍵形式: 鍵のエンコード方法と証明書の表現方法。このプロトコルの鍵 blob には, 鍵に加えて証明書が含まれてもよい (MAY)。
-
署名および/または暗号化アルゴリズム: 一部の鍵タイプは署名と暗号化の両方をサポートしていない場合がある。鍵の使用は, ポリシーステートメント (証明書内など) によって制限される場合もある。この場合, 異なるポリシー代替案に対して異なる鍵タイプを定義すべきである (SHOULD)。
-
署名および/または暗号化データのエンコーディング: これには, パディング, バイト順序, データ形式が含まれるが, これらに限定されない。
現在定義されている公開鍵および/または証明書形式は次のとおりである:
ssh-dss REQUIRED sign 生の DSS 鍵
ssh-rsa RECOMMENDED sign 生の RSA 鍵
pgp-sign-rsa OPTIONAL sign OpenPGP 証明書 (RSA 鍵)
pgp-sign-dss OPTIONAL sign OpenPGP 証明書 (DSS 鍵)
[SSH-ARCH] と [SSH-NUMBERS] で指定されているように追加の鍵タイプを定義してもよい。
鍵タイプは常に明示的に既知でなければならない (MUST) (アルゴリズムネゴシエーションまたは他のソースから)。通常, 鍵 blob には含まれない。
証明書と公開鍵は次のようにエンコードされる:
string 証明書または公開鍵形式識別子
byte[n] 鍵/証明書データ
証明書部分はゼロ長文字列でもよいが, 公開鍵は必要である。これは認証に使用される公開鍵である。証明書 blob に含まれる証明書シーケンスは認可を提供するために使用できる。
署名形式識別子を明示的に指定しない公開鍵/証明書形式は, 署名識別子として公開鍵/証明書形式識別子を使用しなければならない (MUST)。
署名は次のようにエンコードされる:
string 署名形式識別子 (公開鍵/証明書形式で指定)
byte[n] 形式固有エンコーディングの署名 blob
"ssh-dss" および "ssh-rsa" 鍵形式の詳細なエンコーディング仕様は, 完全な仕様文書に記載されている。