SIMカードの進化

2016年1月15日

携帯電話でおなじみのSIM(Subscriber Identity Module)カード。簡単に差し替えや交換ができますが、携帯電話と同時に誕生したわけではありません。初期の携帯電話では「一体式」の通信規格だけがサポートされており、加入者情報は携帯端末のメモリにハードコーディングされていたのです。

NMT-450のような最古のアナログ規格には、セキュリティの対策が一切施されていませんでした。加入者情報を別のデバイスにコピーし、クローンを作成できたので、正規の所有者の代わりに電話をかけたり、受けたりすることができたのです。もちろん、無料で。

sim-card-history-featured

これに少し遅れて、初のセキュリティ手段となるSIS(Subscriber Identity Security)コードが開発されました。これはデバイスごとに異なる18桁の数値であり、アプリケーションプロセッサにハードコーディングされていました。また、複数のデバイスで同じSISコードが使われないように、通信事業者へ均等に割り振られていました。さらに、プロセッサには、加入者が携帯電話ネットワークに登録したときに基地局へ送信される7桁のRIDコードも格納されていました。

SISプロセッサは、基地局が生成したランダムな数値と固有のSIS応答のペアを使って、認証鍵を作成しました。

こうした鍵と数値は比較的短いものでしたが、1994年の時点では十分妥当な長さでした。しかし、ご想像のとおり、このシステムはその後、クラッキングされました。GSM(Global System for Mobile Communications)規格登場のわずか3年前のことでした。GSM規格はSISによく似ていましたが、暗号強度の高い認証システムを使用し、セキュリティの強化された仕様でした。こうして通信規格は「分離式」になりました。

つまり認証は、スマートカードに内蔵された外部プロセッサですべて行われるということです。その結果、生まれたソリューションがSIMです。SIMカードの導入に伴い、加入契約とデバイスとの間に依存関係がなくなったため、利用者は同じモバイルIDを使いながら、何度でも好きなだけデバイスを変更できるようになりました。

SIMカードは基本的に、ISO 7816規格のスマートカードで、クレジットカードやキャッシュカードのような接触型ICカードとほぼ同じものです。最初のSIMカードはクレジットカードと同じサイズでしたが、部品の小型化の流れに従って、このカードもコンパクトになりました。

従来のフルサイズ1FF(1st Form Factor)SIMカードは携帯電話のサイズに合わなくなるため、互換性のあるシンプルな手段が開発されました。ミニSIM、2FF(2nd Form Factor)など、近ごろの利用者にはおなじみの小さくなったSIMカードを、1FFサイズのプラスチック製アダプターに挿入する、というやり方です。新しいフォームファクターでは、以前よりも小さな面積に以前と同じチップと端子が収まっており、取り外しも簡単です。

sim-card-history-evolution

この小型化の傾向は、マイクロSIM(3FF)、ナノSIM(4FF)と続いていますが、形状、端子構成、組み込みチップの機能は約25年間変わらず、そのままです。昔ながらの携帯電話を今でも大切に使っている利用者のニーズに対応するため、最近では、大きなプラスチック製のアダプターが作られています。

とはいえ、旧式のデバイスの多くは、たとえフルサイズであっても、現在のSIMカードに対応しません。というのも、初期のSIMカードの動作電圧が5Vであるのに対し、最新のSIMカードは3Vだからです。互換性よりもコストを重視するSIMメーカーが多く、最新のSIMカードで2種類の電圧をサポートしているものは、ほとんどありません。このため、旧式の5Vのみに対応した携帯電話では、プロセッサの電圧保護という理由から、3Vのみに対応したSIMカードは動作しないのです。

生産工程で、SIMカードのメモリには、生産バッチを注文した通信事業者に応じたIMSI(国際携帯機器加入者識別情報)と、128ビットの鍵であるKi(鍵識別子)が書き込まれます。簡単に言うと、IMSIは加入者のログインID(IMSI)、Kiはパスワード(Ki)であり、SIMカードチップにハードコーディングされます。

加入者のIMSIと電話番号との対応は、HLR(Home Location Register)と呼ばれる特別なデータベースに格納されます。このデータは、もう1つのデータベースであるVLR(Visitor Location Register)にもコピーされます。VLRはネットワークのセグメントごとに設けられており、もう一方の基地局に対する加入者の一時的登録情報を格納するデータベースです。

認証プロセスはかなりシンプルです。加入者が一時データベース(VLR)に登録されると、VLRは128ビットのランダムな数値(RAND)を加入者の電話番号に送信します。SIMカードプロセッサはA3アルゴリズムを使用し、RANDの数値とKiから32ビットの応答(SRES)を生成します。VLRの受け取った応答が一致した場合、加入者はそのネットワークに登録されます。

また、SIMは「Kc」と呼ばれる一時鍵も生成します。Kcの値は、前述のRANDとKiからA8アルゴリズムを使って計算されます。次に、KcとA5アルゴリズムを使用して、送信データが暗号化されます。

略語が多すぎて、ちょっと複雑な感じがしますね。でも、基本的な考え方は極めて単純です。まず、利用者のSIMにはログインIDとパスワードがハードコーディングされています。次に、何回か数字を計算して、検証用の鍵と暗号用の鍵を作成します。これで、接続完了です。

既定では、常に暗号化は有効になっていますが、場合(たとえば、令状が出ている場合など)によっては暗号化がオフになり、情報機関が通話を傍受できるようになります。その場合、旧式の携帯電話のディスプレイには開いた錠前のアイコンが表示されますが、最近の電話ではブラックベリーを除き、このような表示は一切行われません。

電話の盗聴に特化した攻撃というものがあります。この攻撃には、IMSIキャッチャーというデバイスが必要です。このデバイスは基地局を偽装し、接続している電話を記録してから、すべての信号を本物の基地局に転送します。

この場合、認証プロセス全体は通常モードで行われます。ただし、偽の基地局は携帯電話に対して平文モードでの送信を要求しますので、攻撃者は通信事業者や加入者に気づかれずに信号を傍受できます(暗号鍵のクラッキングは不要)。

おかしなことですが、この「脆弱性」は脆弱性ではありません。実際、この機能は最初に設計されたときからありました。つまり、諜報機関は、必要であればいつでも中間者攻撃を実行できたのです。