TLS Working Group Will Price INTERNET-DRAFT Michael Elkins Network Associates, Inc. 18 February 2002 draft-ietf-tls-openpgp-02.txt OpenPGP鍵のためのTLSの拡張 このメモの位置付け このドキュメントはインターネットドラフトであり、RFC2026の第10章に記載 されているすべての条項に従う。 インターネットドラフトは、Internet Engineering Task Force(IETF)とその エリア、そしてそのワーキンググループにおいて作成中のドキュメントのこと である。その他のグループが、作成中のドキュメントをインターネットドラフト として配布することも認められている。 インターネットドラフトは最大6ヶ月間有効で、その後アップデートや置き換え をすることができる。もしくは、他のドキュメントによりいつでも無効にする ことができる。インターネットドラフトを参考文献として引用すること、もし くは "work in progress" 以上の扱いで引用するのは適切ではない。 現在のインターネットドラフトは、次のところからアクセスすることができる。 http://www.ietf.org/ietf/1id-abstracts.txt インターネットドラフトのミラーサイトのリストは、次のところからアクセス することができる。 http://www.ietf.org/shadow.html. 要旨 本ドキュメントは、TLSプロトコル規定[TLS]をベースにして作成されている。 ここで示されている拡張方法は、TLSバージョン1.0に対して適用することを 意図している。 本ドキュメントの目的は、TLSプロトコルをアップデートし、OpenPGP [OpenPGP] で使用している証明書、公開鍵アルゴリズム、対称暗号、ハッシュアルゴリズム、 そして信用モデルをサポートするよう、プロトコルを拡張することである。 本ドキュメントでは、TLSプロトコルドラフトで使用しているのと同じ表記法を 使用する。 本ドキュメントに現れるキーワード"MUST"、"MUST NOT"、"REQUIRED"、"SHALL"、 "SHALL NOT"、"SHOULD"、"SHOULD NOT"、"RECOMMENDED"、"MAY"、"OPTIONAL"は、 RFC2119で示されるように解釈されなければならない。 Certificateメッセージ TLSにおいて使用が推奨されているX.509v3 [X509] 証明書は、OpenPGP鍵と 連携して使用することができない。実装においては、X509を使用したTLSと、 OpenPGP鍵を使用したTLSの両方をサポートできるようにすべきである(SHOULD)。 実装においては、両方の方式をサポートする必要はない(NOT REQUIRED)。 TLSのセションステータスにおける、"ピア証明書"は、X509またはOpenPGPの どちらを意味してもよい(MAY)。 サーバからクライアント、そしてその逆へ送信されるCertificate (11)メッセージ の内容は、暗号スイートによって決定される。そのため、OpenPGP鍵を使用するため の多くの新規暗号スイートを、このドキュメントの暗号スイートの章において定義 する。すべてのOpenPGP暗号スイートにおいては、Certificateメッセージにおいて OpenPGP鍵が必要とされる(REQUIRE)。Certificateメッセージに含まれるOpenPGP 鍵は、バイナリ形式でのOpenPGPフォーマットが使用される。Certificate メッセージ内の、通常X509証明書が使用される箇所において、OpenPGP鍵を含める。 また、鍵全体を送信する代わりに、64ビットのOpenPGP鍵IDを送信することも できる。クライアントにおいては、鍵IDを受信しなかった場合には、fatalレベル のno_certificateアラートで応答する。鍵が有効でない、期限切れである、 失効されている、または改竄されていた場合には、TLSのA.3章で規定されて いる適切なfatalアラートメッセージを送信する。鍵が有効であり、期限切れ または失効されていなければ、その鍵はプロトコルにより受理される。 OpenPGPとの互換性をもつTLS実装においては、ある鍵を、信頼されるサーバ鍵 として、明示的に指定可能としてもよい(MAY)。ただしこれはローカルルール であり、このドキュメントの範囲外である。 enum { keyid (0), key (1), (255) } PGPKeyDescriptorType; opaque PGPKeyID<8> opaque PGPKey<1..2^24-1> struct { PGPKeyDescriptorType descriptorType; select (descriptorType) { case keyid: PGPKeyID; case key: PGPKey; } } Certificate; CertificateRequestメッセージ サーバは、クライアントへ証明書を要求してもよい。OpenPGP鍵を使用した 場合においても、このメッセージの本質的な意味は変更されない。 OpenPGP鍵と関連させて、rsa_signやdss_sign証明書型を要求してもよい。 ClientCertificateTypeフィールドは、TLS仕様と同じように使用される。 それに続くDistinguishedNameフィールドには、OpenPGP鍵に基づく暗号スイート を使用する場合、値を含めない。 ClientCertificateメッセージは、CertificateRequestメッセージに対する 応答として、ServerCertificateメッセージと同じフォーマットを使用して 送信される。クライアントがOpenPGP鍵を保持していない場合には、 no_certificateアラートで応答する。そして適切な場合には、サーバは fatalレベルのアラートにより応答してもよい(MAY)。この処理は、TLS仕様 に準拠している。 ServerKeyExchangeメッセージ 一時的Diffie-Hellmanを使用した場合には、ServerKeyExchangeメッセージを 使用して、Diffie-Hellman公開値をクライアントに送信する。クライアントと サーバはこの値を使用して、共有シークレットを確立する。これはTLS仕様 における処理と同じである。 CertificateVerifyメッセージ OpenPGP鍵を使用した場合のCertificateVerifyメッセージは、TLSプロトコル 仕様と同じである。暗号スイートに従い、DSSまたはRSAにより署名が行われる。 Finishedメッセージ OpenPGP鍵を使用した場合のFinishedメッセージは、TLSプロトコル仕様と同じ である。 暗号スイート TLSには証明書型フィールドが存在しないため、同様の機能を実現するには 暗号スイートフィールドを使用する。OpenPGP鍵を使用するために、多くの 暗号スイートを追加定義する。 CipherSuite TLS_PGP_DHE_DSS_WITH_CAST_CBC_SHA = { 0x01, 0x01 }; CipherSuite TLS_PGP_DHE_DSS_WITH_IDEA_CBC_SHA = { 0x01, 0x02 }; CipherSuite TLS_PGP_DHE_DSS_WITH_3DES_EDE_CBC_SHA = { 0x01, 0x03 }; CipherSuite TLS_PGP_DHE_DSS_WITH_CAST_CBC_RMD = { 0x01, 0x04 }; CipherSuite TLS_PGP_DHE_DSS_WITH_IDEA_CBC_RMD = { 0x01, 0x05 }; CipherSuite TLS_PGP_DHE_DSS_WITH_3DES_EDE_CBC_RMD = { 0x01, 0x06 }; CipherSuite TLS_PGP_DHE_RSA_WITH_CAST_CBC_SHA = { 0x01, 0x10 }; CipherSuite TLS_PGP_RSA_WITH_CAST_CBC_SHA = { 0x01, 0x20 }; CipherSuite TLS_PGP_RSA_WITH_IDEA_CBC_SHA = { 0x01, 0x21 }; CipherSuite TLS_PGP_RSA_WITH_3DES_EDE_CBC_SHA = { 0x01, 0x22 }; CipherSuite TLS_PGP_RSA_WITH_CAST_CBC_RMD = { 0x01, 0x23 }; CipherSuite TLS_PGP_RSA_WITH_IDEA_CBC_RMD = { 0x01, 0x24 }; CipherSuite TLS_PGP_RSA_WITH_3DES_EDE_CBC_RMD = { 0x01, 0x25 }; CipherSuite TLS_PGP_DSA_WITH_NULL_SHA = { 0x01, 0xF0 }; 注: 上記の暗号スイートに割り当てられている値は、まだ登録されたものでは ない。 上記の暗号スイートでは、CAST、IDEA、またはトリプルDESブロック暗号の いずれか1つをCBCモードで使用している。ハッシュは、SHA-1またはRIPEMD-160 のどちらかを選択する。これらの暗号スイートを使用する場合には、 CertificateとClientCertificateメッセージにおいてOpenPGP鍵を必要とする (REQUIRES)。MD5をOpenPGP鍵と共に使用してはならない(MAY NOT)。"Export" アルゴリズムも、OpenPGP鍵と共に使用してはならない(MAY NOT)。 TLSにおいてOpenPGPのサポートを考慮する場合には、実装においては TLS_PGP_DHE_DSS_WITH_3DES_EDE_CBC_SHA をサポートしなければならない(MUST)。 参考文献 [TLS] T. Dierks, and C. Allen, "The TLS Protocol Version 1.0", RFC 2246, January 1999. [OpenPGP] J. Callas, L. Donnerhacke, H. Finney, R. Thayer, "OpenPGP Message Format", RFC 2440, November 1998. 著者 Will Price Network Associates, Inc. Michael Elkins Network Associates, Inc. 日本語訳 西原 啓輔 2002年3月 訳者は、訳出した文書を利用することにより発生したいかなる損害に対しても 責任を負いません。 本文書には、技術的あるいは翻訳上の誤りがある可能性があります。技術的に 正しい知識を獲得しなければならない場合は、InterNIC/IETFから発行されて いる原文を参照してください。