SIMカード:クローンの攻撃

2016年2月1日

このシリーズの第1弾では、SIMカードの歴史を取り上げました。今回は本題に入って、セキュリティについてお話ししましょう。SIMカードで初めて発見された脆弱性の1つは「クローンを作られる可能性がある」というものです。ここでいうクローンの作成とは、SIMカードの内容を読み取り、別のSIMカードのメモリに書き込むという意味です。ハードウェアの観点で見れば、SIMカードは単なるスマートカードにすぎず、似たようなものはどこででも手に入り、チップ程度の値段で買えます。そう考えると、クローンを作成できるのも至極当然です。

sim-cards-clones-featured

複数のSIMカードを使える電話がSFの話だったころ、複数のSIMカードを必要とする人々はクローンを作成することでこの問題を解決していました。SIMカード入れ替えの手間を省くために登場したのが、MultiSIMと呼ばれる方式です。MultiSIMは基本的に拡張メモリを搭載したスマートカードであり、通常は複数のSIMカードに格納されるデータを保管します。

そのため、SIMカードを物理的に入れ替えなくても、SIMを簡単に切り替えることができます。この方式では、「再起動のたびに、次のSIMカードに相当するセルのシーケンスが選択される」という単純な仕組みが利用されていました。もちろん、複数のSIMカードが同時に機能することはありません。端末側では、いったん電源がオフになり、SIMカードが切り替わった後、再び電源がオンになったと認識されます。

この解決策はとりたてて役に立たないことがわかりました(現在でさえ、別のSIMカードと安い携帯電話を買う方が、2個のSIMに対応した本格的な端末を買うよりもずっと安上がりで簡単です)。しかし、10年前、MultiSIMは積極的に使われていました。興味深いことに、ダミーのスマートカード、スマートカードを読み書きするためのPCアダプター、対応するソフトウェアの入ったDIYキットが売られていたほどです。

しかし、SIMカードのクローン作成は、悪質な活動にも使えました。犯罪者は狙ったSIMカードにわずかな時間でもアクセスできれば、クローンを作って正規のSIMカードに侵入できるのです。正規の加入者がモバイルネットワークで認識されているときに、クローンのSIMカードがアクティブになると、通信は切断されてしまいますが、正規の加入者はまったく気付きません。この場合、着信する通話や受信メッセージはすべて犯罪者宛てに送られます。また、犯罪者はその人に代わって電話をかける、メッセージを送信する、インターネットを閲覧する、などが可能です。

携帯電話の画面には、ネットワークインジケーターや通信事業者の名前がいつもどおり表示されるので、被害者は何も気付かず、接続されていると錯覚します。しかし、端末を再起動するか、モバイルネットワークの接続ステータスが強制的に更新されるかしないと(通常は、数時間おきに自動更新されます)、電話をかけることができません。

当初、クローンは基本的にどこからでも(別の大陸でも!)認識可能でした。しばらくしてこれに気付いた通信事業者は、対策として、原始的なセキュリティの仕組みを導入しました。加入者が最後に認識された場所から遠く離れたところで突如として認識された場合、管理者に通知が送られるのです。「おい、みんな、誰かがテレポート装置を発明したぞ!」という具合です。

それでも、犯罪者が標的にかなり近いところで認識される可能性は残ります。この場合、先に述べたセキュリティ対策は役に立ちません。

そこで疑問が出てきます。結局、どうしてSIMのクローンを作成できてしまうのでしょうか?この機能こそ禁止にするか、無効にすべきなのでは?

ネットワークで加入者の認証に使われるKi(Key Identification)鍵は通常、SIMカードから読み取ることはできません。SIMカードプロセッサはこの鍵を「内部」で呼び出します。つまり、この鍵は無線でシェアされるものではないのです。メモリ内の保護された区画に保存されており、この鍵を読み取ることができるAPIはありません。

しかし、ここで登場するのが暗号解読法です。SIMカード上でA3アルゴリズムを繰り返し走らせるソフトウェアを使用し、ランダムなRANDを処理させてSRESレスポンスを生成させたならば、なんらかの依存性を見つけ出してKi鍵を算出できる可能性があります。

10年前のPCでさえ、こうした処理をほんの数分で完了できる性能を備えていました。とはいえ、話はそれほど単純ではありません。SIMカードは、ある種の自己破壊タイマーを搭載していて、暗号アルゴリズムの実行回数を数えています。たとえば、あるカードで実行回数の上限が65,536回に設定されている場合、この上限に達した時点でSIMカードのプロセッサはSRESレスポンスを計算しなくなります。

Kiが正しく計算されなければ、そのSIMカードはまったく使い物にならなくなり、交換が必要になります。正規のSIMカードを使っていても、こうしたことが起こる可能性があります。たとえば、上限値が最初から低く設定されているカードを長い間使っていると、現実に起こり得えます。

楽観的な情報をもう1つ。暗号解読法でKi値を取得できるのは、A3アルゴリズムの最も古いバージョン、COMP128v1をサポートするSIMカードだけです。このSIMカードは一部の通信事業者で今も使用されていて、まさにクローンの作成が可能です。最先端を行く通信事業者は、すでにCOMP128v2やCOMP128v3のアルゴリズムに切り替えていてRAND-SRESの組み合わせ数が増えているので、先の方法でKi鍵を計算することはできません。

通信事業者のSIMカードデータベース、またはSIMカードメーカーから通信事業者に送られる特別なルックアップテーブルにアクセス可能となった場合は、一度に大量のSIMカードの鍵セットを手に入れることができるかもしれません。しかし、そのためには、通信事業者かSIMメーカーの内部に、必要な情報に不正アクセスしてくれる共犯者が必要になります。

また、ある都市伝説によると、今どきのPCなら無線で鍵を横取りし、その場で復号できるそうです。しかし、繰り返しますが、Ki鍵が無線でやりとりされることはなく、SIMカードの中に保存されています。では、横取り可能なデータとは何でしょうか?それについては、次回、お話ししましょう。