AC<- 目次 ->AE


D. 実装上の注意 English

(準備中)

TLS プロトコルでは、多くの一般的なセキュリティミスを防ぐことはできない。この章では、実装者のための様々な推奨事項を示す。

D.1. 一時的 RSA 鍵 English

米国の法令上、輸出制限を受けないためには、暗号化処理に使用可能な RSA 鍵は 512 ビットまでに制限されているが、署名処理に使用可能な RSA 鍵の長さには制限を設けていない。証明書では、512 ビットより長いビット長が必要となる場合がある。なぜならば、512 ビットの RSA 鍵では、金額が高くなる場合のプロトコル処理や、長期間、偽造されることなく安全に保管しておく必要のあるアプリケーションでは、十分に安全であるとは言えないからである。またある証明書では、署名目的のみと指定されている場合がある。この場合、鍵交換においてこの証明書を使用することはできない。

証明書に記載されている公開鍵が暗号化処理に使用できない場合には、サーバーは一時的 RSA 鍵に署名し、その鍵を交換する。法令上、輸出可能なアプリケーションにおいては、一時的 RSA 鍵は、許容される最大の長さ(すなわち、512 ビット)であるべきである。 512 ビットの RSA 鍵はそれほど安全ではないので、一時的 RSA 鍵はときどき変更するべきである。 典型的な電子商 取引アプリケーションにおいては、その鍵は一日ごと、または 500 トランザクションごと、できればそれ以上の頻度で変更することを提案する。多くのトランザクションに対して、同じ一時的鍵を使用することが出来るが、この鍵は、使用されるごとに署名されなければならないということに注意すべきである。

RSA 鍵生成処理には、かなりの時間を要する。多くの場合、鍵生成タスクは、低い優先度をもつプロセスに対して割り当てられる。

新しい鍵が生成されたときには、これまでの一時的鍵を新しいものと取り替えることができる。

D.2. 乱数生成とその種入力 English

TLS では、暗号的に安全な擬似乱数生成器 (PRNG: pseudorandom number generator) が必要である。PRNG の設計と種の生成は、十分に注意すべきである。セキュアハッシュで最も有名なのは MD5 と SHA であるが、これに基づく PRNG は許容することができる。しかし、乱数発生器ステータスのサイズより高いセキュリティを提供することはできない。 (例えば、MD5 ベースのPRNG は通常、128 ビットステータスを提供する。)

生成する種の量を推定するために、それぞれの種バイトにおける予測することのできない情報のビット数を加える。例えば、PC と互換性のある 18.2Hz のタイマから取得されたキーストロークタイミング値により、カウンタ値の全サイズが 16 ビット以上であっても、1 または 2ビットの安全なビットが取得できる。それゆえ、128 ビット PRNG に対する種を生成するには、100 個程度のそのようなタイマ値が必要となることになる。

警告: RSAREF と、バージョン 3.0 より前の BSAFE の種関数は、順序非依存である。例えば、種関数を 1000 回呼び出し、1度に1個、1000 個の種ビットが提供されるとき、PRNG は種データにおける種ビットの、0 または 1 の数のみに依存するステータスで終了する(すなわち、1001 個の終了ステータスが存在する)。BSAFE または RSAREF を使用しているアプリケーションでは、適切な種処理がされていることに特に注意を払わなければならない。これは、種ビットをバッファに蓄積しておき、すべてを一度に処理する、もしくはすべての種ビットに対応する増加カウンタを使用することにより実現される。どちらの方法も、種処理に関して順序依存性を導入するものである。

D.3. 証明書と認証 English

実装においては、証明書の有効性について検証する責任があり、また一般に、証明書失効メッセージをサポートするべきである。 証明書が信用のおける認証局によって適切に署名されていることを、常に確認するべきである。信用のおける CA の選択と追加については、十分に気をつけるべきである。ユーザに対し、証明書に関する情報と、ルート CA に関する情報を見ることができるようにするべきである。

D.4. 暗号スィート English

TLS では、さまざまな鍵サイズとセキュリティレベルをサポートしている。これには、セキュリティなし、すなわち最小のセキュリティ提供も含まれる。適切な実装においてはおそらく、それほど多くの暗号スイートをサポートしないであろう。例えば、40 ビットの暗号化では容易に解読されてしまうので、高いセキュリティが要求される実装では 40 ビットの鍵を認めるべきでない。同様に、匿名 Diffie- Hellman では、なりすまし攻撃を防ぐことができないので、全く推奨されない。また、アプリケーションでは最小と最大の鍵サイズを強制するようにするべきである。例えば、512 ビットの RSA 鍵または署名を含む証明書チェーンは、高セキュリティアプリケーションにおいては適切ではない。


AC<- 目次 ->AE