メインコンテンツまでスキップ

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" 鍵形式の詳細なエンコーディング仕様は, 完全な仕様文書に記載されている。