銀行とかセキュリティとか 2

昨年末の 12 月 21 日に「銀行とかセキュリティとか」であらかた書いた件が、今日半日悩んでいた問題の答えへの導入だとは、夜になるまで全く気が付かなかった。
とあるセキュリティを要する日本の有名サイトを Opera 9.2x で開こうとすると、このサイトは時代遅れの暗号化を使っています。あなたの情報は守られませんが続けますか、という警告が出た。IE でも Firefox でもそうした警告は出ない。試しに Opera 9.50 で開いてみても警告は出ない。
こういう時に大事なのは、警告文の詳細である。しかし微妙に文面が違うのは直に分かったが、同じサイトを別のバージョンの Opera が異なった扱いをするという事実にだけ目が向いてしまって、ある意味緩やかなパニック状態に陥ってしまった。これは 9.2x のバグなのではなかろうか。しかしかしなぜなのだろうかと。
暗号化通信が意味を持つためには、正当な利用者だけが解読出来る鍵がなければならない。公開鍵(public key)と秘密鍵(private key)のうち、private key が短いと他がいくら堅固な仕組みでも前提が崩れてしまう。前回書いた中にも引用したが、Opera では 900 bit 未満の長さの private key が使われていると警告を出すようになっている。
640 bit RSA だと 100 台未満のワークステーションで、5 ヶ月程で解読されてしまうという。また広く用いられている 1024 bit key も 2010 年以降の使用は推奨されないという。
そこでこれまた広く用いられている方法の一つに、公開鍵を短時間(数分)おきに変えてしまう Ephemeral Diffie-Hellman (DHE) と呼ばれるものがあるらしい。こちらも Opera 9.2x までは 900 bits 未満の場合に警告を出していたが、9.50 からは除外された。これが先の当 blog の記事に参照として挙げておいた Yngve のエントリである。暗号化された通信を盗み見ようとする人は、その全体でなくとも一つのセッションだけで読めれば目的を達する場合もある。そこでこれまでの Opera は、DHE に対してもその長さをチェックして問題があれば警告を発するという厳密な立場をとってきたのである。
ここでようやく今日私を悩ませた問題に戻れる。Opera 9.2x が出した警告を良く見ると、TLS v1.0 265 bit AES(DHE_RSA/SHA) とある。ここに問題があったという訳だ。一方同じサイトに対して安全だと診断を下した Opera 9.50 は、DHE の長さはチェックせずに Encrytion protocol TLS v1.0 256 AES(1024 bit RSA/SHA) と表示していた。これが両者の違いであったという訳だ。

  • 当該サイトでは 256 bit 長の DHE を使っていたので Opera 9.2x は警告を発したということだ。これは数分から数時間で破られ得る程度の暗号だという。
  • 当該サイトに対しては一応、Opera の考え方を踏まえて、休み明けにでも上記の問題について連絡を取ろうと思う。
  • Opera の厳密な方針と利便性や現実的危険性との妥協に、担当シニア・デベロッパの Yngve は抗議の意味をこめて "W NOT in Kestrel" というタイトルを付けてエントリを起こしたのだとようやく理解出来た気がする。
  • もう一点補足すると、DHE key のみの場合でそれが短い場合に Kestrel は、weak public key としての警告を発する。