SecurIDの安全性は本当に大丈夫なのか?

(2011/06/07 更新) RSAが今回の件について公式に発表をしました。ロッキードへの不正侵入の原因になったことを認め、顧客に対して SecurIDの交換などに応じる提案をしています。


この週末、アメリカで起きたロッキード・マーチン(Lockheed Martin)のネットワークに対する不正侵入が話題になっている。ロッキード・マーチンといえば、アメリカを代表する企業の一つであり、F22や F35などの最新鋭機を開発していることでも有名である。

そのロッキードで先週末にネットワークに対するリモートからの不正侵入が起きた。この件を最初に伝えたのは Robert X. Cringely氏*15/25のブログで、ある国防関連企業の話として、ネットワークで問題が起きたこと、ユーザーによるリモートアクセスを停止したこと、全てのユーザーのパスワードをリセットしたこと、SecurIDを数週間のうちに全て新しいものに交換すること、などの内容が書かれていた。この時点ではロッキードの名前は伏せてあったのだが、翌日になるとロイターがロッキードのことだとして報道した。また他の国防関連企業でも同様の被害が起きていると伝えた。その後、複数のメディアがこれに続き、5/28になるとロッキードも事実として認めるコメントをだした。この件の調査には、DoDとDHSも協力しているようだ。ロイターはその後も更新情報を伝えている。(最新の記事はこちら)

さて国防に関わる企業への侵入だからアメリカにとってはこれだけでも大事だが、問題はもう一つある。ロッキードが対応策の一つとして SecurIDを再配布するとの情報だ*2。なりすましによる不正アクセスを受けたのだとすると、SecurIDを紛失して悪用されたことが考えられる。しかしその場合には該当する SecurIDを無効にすればよい。では利用している SecurIDを全て新しくするのは一体どういうわけだろうか?


ここで関係してくるのが、3月に起きた RSAへの不正侵入事件である。3/17に RSA顧客へのレターで伝えたところによると、侵入者は SecurIDに関係する情報を不正に入手したという。この時点ではどういう情報が流出したのか詳しい説明はなく、顧客に対してセキュリティ強化を促す注意喚起をしただけだった。しかしセキュリティ研究者の中には、SecurIDのトークンコードを計算するアルゴリズム、計算の元になるシード、シリアルナンバー、顧客リストなどの重要な情報が全て流出した可能性があるのではないか、という指摘がされていた。(RSA侵入事件の影響については、SANSSecureWorksの解説が詳しい。)


ここで問題を理解するために、SecurIDの認証の仕組みを復習しよう。(といっても、私もすっかり忘れていたので、今回慌てて調べ直した。)

SecurIDにはいくつか種類があるが*3、ハードウェアタイプのものは例えばこんな感じ。
http://upload.wikimedia.org/wikipedia/commons/thumb/8/8f/SecureID_token_new.JPG/800px-SecureID_token_new.JPG

6桁の数字を表示する小さなディスプレイがついていて、この数字は一定間隔(30秒または60秒)ごとに自動的に更新される。この数字(トークンコード)とユーザーが自分で決めた4桁から8桁の PIN (Personal Identification Number)をあわせて、ワンタイムパスワードが生成される。ハードウェアトークンという物理的なデバイスと(ソフトウェアの場合もあるわけだが…)、PINの2つがなければならないので二要素認証と呼ばれる。また、生成されたパスワードは一回限りのものなので、仮に通信経路上で盗聴されても再利用はできない*4過去15年間に一度もセキュリティ侵害が起きていないという RSA社自慢の認証システムである。

トークンコードは RSAの工場出荷時に設定されるシードとシリアルナンバー、そして時刻情報から、あるアルゴリズムを用いて算出される。同じ情報を認証サーバー側でも保持しているので認証が可能となる(もちろん時刻の同期は必要)。アルゴリズムは一般に公開されてはいないが、古くから SecurIDをエミュレートするプログラムが公開されており、既知と言ってよい*5。しかしいくらアルゴリズムがわかっても、鍵となる情報(この場合はシードとシリアルナンバー)がわからなければどうしようもない。

もう一つ、実際にログインする時にはユーザーIDが必要となる。したがってどのユーザーがどのシリアルナンバーの SecurIDを使っているのかというマッピングが必要になる。これは認証サーバーが保持している情報である。


以上をまとめると、攻撃者が SecurIDによる認証を突破するには、以下の情報が必要になる。

  • ユーザーID
  • ユーザーの PIN (4〜8桁の数字)
  • SecurIDが表示するトークンコード。ただし、この SecurIDはユーザーとマッピングされたシリアルナンバーを持っていること。

そしてハードウェアトークンなどを持たずにトークンコードを算出するには、以下の情報が必要になる。

ということで、かなりハードルが高い。と、これまでは思われていた。


ここで話は3月のRSA侵入事件に戻る。RSAは認めていないが、最悪のケースとして顧客が利用している SecurIDのシードとシリアルナンバーがもし全て流出していたらどうなるか。この場合、攻撃者は任意の SecurIDのトークンコードを算出できる。しかしこれだけではダメだ。トークンコードを利用して実際に不正ログインをするのであれば、ユーザーID、PIN、そしてそのユーザーが使っているシリアルナンバーが必要になる。


そしてようやく今回のロッキードの話に戻るわけだ。SecurIDを全て再発行するということは、SecurIDの安全性に何らかの問題が生じた可能性がある。認証サーバーからシードやシリアルナンバー情報が漏れたのだろうか? しかしロッキードは今回の件について、早期に検知に成功したため、特に漏洩した情報はなかったと言っている*6。ではなぜ?

ロッキードは事件の詳細について、これ以上何も公表していないので、ここからは推測。そして各メディアの報道も似たような推測をしている。
攻撃者は RSAから不正に入手した SecurIDに関する情報を利用したのではないか*7。侵入に必要となるユーザーIDと PINは別の方法で(たとえばキーロガーなどで)入手したのではないか。シリアルナンバーとのマッチングは難しいが、ある時点のトークンコードを取得してそこから逆に探したのではないか。あるいは単にブルートフォースしたのか、もっと簡単な方法で入手できたのか。

もしこれらの推測が正しければ、他のSecurIDを利用している企業、組織への影響も大きい。ただ、もともと 3月の RSAへの侵入の際にも、RSAはあくまでも中間ターゲットであり、SecurIDに関する情報が欲しかったのではないか、最終ターゲットは別にあるのではないかと言われていた。今回の攻撃者が RSA侵入の攻撃者と同じなのであれば、この推測は正しかったことになる。そしてもしそうなら、フツーの一般企業が狙われることはおそらくないだろう。

さて真相はいかに??


(2011/05/31 補足)
ややわかりにくかったかもしれないので補足。上記の内容は Cringley氏のブログと Reutersの記事の元になっている内部からのリーク情報が「正しい」という前提で書いている。しかし当事者である Lockheedも RSAも侵入の原因について公式には何もコメントしておらず、SecurIDには全く言及していない。すべては内部リーク情報にもとづく不確かな推測にすぎない。したがって他の SecurIDユーザーが今すぐに危険にさらされるという状況ではない。もし何か影響があるのであれば、RSAから公式にアナウンスがあるはず。続報を待とう。


(2011/06/02 追記)
Wiredと Fox Newsがそれぞれ L-3 Communicationsと Northrop Grummanも攻撃されていたかもしれないという記事を書いている。いずれも内部からのリーク情報にもとづいているようだが、両社とも公式にはコメントしておらず、真偽は不明である。
Second Defense Contractor L-3 'Actively Targeted' With RSA SecurID Hacks | WIRED
EXCLUSIVE: Northrop Grumman May Have Been Hit by Cyberattack, Source Says | Fox News


(2011/06/04 追記)
Lockheedへの不正侵入の原因について、RSAから流出した情報が悪用されたことはほぼ間違いない、と Lockheedは結論づけたようだ。以下、NYTImesの記事から一部引用。

Lockheed Martin said Friday that it had proof that hackers breached its network two weeks ago partly by using data stolen from a vendor that supplies coded security tokens to tens of millions of computer users.

In response to questions on Friday, Lockheed said in an e-mail that its computer experts had concluded that the breach at RSA in March was “a direct contributing factor” in the attack on its network. Government and industry officials said the hackers had used some of the RSA data and other techniques to piece together the coded password of a Lockheed contractor who had access to Lockheed’s system.


(2011/06/07 追記)
RSAから公式発表がでた。ロッキードへの不正侵入に RSAから不正に持ち出された SecurID関連情報が悪用されたことを認める内容。
Open Letter to RSA SecurID Customers

Against this backdrop of increasingly frequent attacks, on Thursday, June 2, 2011, we were able to confirm that information taken from RSA in March had been used as an element of an attempted broader attack on Lockheed Martin, a major U.S. government defense contractor. Lockheed Martin has stated that this attack was thwarted.

また顧客に対して SecurIDの交換などの対応策を提供するようだ。

As a result, we are expanding our security remediation program to reinforce customers' trust in RSA SecurID tokens and in their overall security posture. This program will continue to include the best practices we first detailed to customers in March, and will further expand two offers we feel will help assure our customers' confidence:

  • An offer to replace SecurID tokens for customers with concentrated user bases typically focused on protecting intellectual property and corporate networks.
  • An offer to implement risk-based authentication strategies for consumer-focused customers with a large, dispersed user base, typically focused on protecting web-based financial transactions.

We will continue to work with all customers to assess their unique risk profiles and user populations and help them understand which options may be most effective and least disruptive to their business and their users.

ひとつのヤマ場を迎えたという感じ…


(2011/06/08 追記)
EMC Japanからのアナウンスはこちら

今回「Open Letter to RSA SecurID Customers」の文中で公表させていただいた交換プログラムは、すべてのRSA SecurIDを全数交換するということではありません。後述で示されますように一部ご懸念されているお客様に対応するために、交換プログラムを用意させていただいたということが事実です。

だそうです。

*1:これはペンネームだそうである。Wikipedia参照

*2:ただし、ロッキードからの公式発表ではない。

*3:ハードウェアトークン、ソフトウェアトークン、On-Demandトークンの3種類ある。

*4:多少の時刻のずれを許容するため、一回限りとは言っても通常は2-3分間は有効である。

*5:例えば Cain&Abelというツールには RSA SecurID Token Calculatorという機能がついている。

*6:ただし、事前にこれらの情報が漏洩していた可能性は残っている。

*7:RSAはこの件についてコメントを拒否しているそうだ。