概要
SIM(Subscriber Identity Module)は、携帯電話やIoT機器が携帯ネットワークに接続する際に使用する、加入者識別・認証のためのICカードです。カード内部に格納されたIMSI(国際移動体加入者識別子)と認証キー(Ki)によって、キャリアネットワークへの正規ユーザー認証を行います。
SIMは単なる識別情報の入れ物ではなく、それ自体がセキュアエレメントとして機能するICチップを持ちます。キャリアとの認証演算はSIM内部で完結し、認証キー(Ki)は外部に読み出せない構造になっています。この設計により、SIMカードを不正複製することは計算量的に困難です。
IoT・組み込み機器向けには通常のプラスチックカード型SIMに加え、直接基板に実装する産業用SIM(MFF2型・ナノSIM)、ソフトウェアで書き換え可能なeSIMなども広く使われています。
歴史・背景
SIMの起源は1991年にGiesecke+Devrient(ドイツ)がフィンランドのRadiolinjaに納入した最初の商用SIMカードに遡ります。当初のSIMはクレジットカードサイズ(ID-1型)でしたが、1996年に小型のプラグインSIM(2FF)、2003年にマイクロSIM(3FF)、2012年にナノSIM(4FF)へと小型化が進みました。
IoT機器向けには、SIMカードを基板に直接はんだ付けする「MFF2(Machine Form Factor 2)」規格が2010年代から普及しました。MFF2型SIMは振動・温度・湿度に対する耐性が高く、車載・産業機器での採用が増えています。
2016年以降はeSIM(eUICC: embedded Universal Integrated Circuit Card)の普及により、プロファイルをOTAで書き換えてキャリアを変更できる時代が到来しました。
技術仕様
SIMのフォームファクター
| 規格 | 別名 | サイズ | 主な用途 |
|---|---|---|---|
| 1FF(Full size) | ID-1 | 85.6mm × 54mm | 初期の携帯・ATM |
| 2FF(Mini SIM) | プラグインSIM | 25mm × 15mm | 旧式携帯・IoT機器 |
| 3FF(Micro SIM) | マイクロSIM | 15mm × 12mm | スマートフォン |
| 4FF(Nano SIM) | ナノSIM | 12.3mm × 8.8mm | 最新スマートフォン |
| MFF2(産業用) | はんだ付けSIM | 5mm × 6mm | 車載・産業IoT |
SIMに格納される主要情報
ICCID(Integrated Circuit Card Identifier):
SIMカード固有の識別番号(19〜20桁)
例: 8981 0001 0123 4567 890f
IMSI(International Mobile Subscriber Identity):
国際移動体加入者識別子(最大15桁)
MCC(国コード 3桁)+ MNC(ネットワークコード 2〜3桁)+ MSIN(10桁以下)
例: 440 10 1234567890 (NTTドコモ日本)
Ki(Authentication Key):
128bitの秘密認証キー(SIM外部からは読み出し不可)
キャリアとSIMが共有する秘密情報
OPc(Operator Variant Algorithm Configuration Field):
MILENAGE認証アルゴリズム用のオペレーターコード
MSISDN(電話番号):
SIMに紐づく電話番号
SMS・電話帳データ:
SMSの保存、電話帳のSIM側保存
認証プロセス(AKA: Authentication and Key Agreement)
携帯ネットワーク接続時の認証フロー:
1. 端末がネットワークに接続要求(IMSI送信)
2. ネットワーク(HSS/AuC)が乱数RAND生成
→ RANDとKiからMILENAGEアルゴリズムでRES・CK・IK・AUTN計算
3. ネットワーク → 端末: RAND, AUTN送信
4. 端末内SIMでのAKA処理:
a. RANDとKiでAUTN(認証トークン)を検証
→ ネットワークの正当性確認(相互認証)
b. RES(応答)とCK(暗号キー)・IK(完全性キー)を計算
5. 端末 → ネットワーク: RES送信
6. ネットワーク: RESの一致を確認 → 認証成功
→ CK・IKからセッション鍵を導出してデータ暗号化開始
SIMのストレージ容量
典型的なSIMカードのメモリ:
- NVM(不揮発性メモリ): 64KB〜256KB
- ROM: 128KB〜512KB(OS + 基本アプリ)
- RAM: 8KB〜32KB(実行時ワーク領域)
IoT用途でのSIMアプリ(STK/JavaCard):
残余領域にJavaCardアプレットを格納可能
→ デバイス認証強化・OTA鍵管理などに活用
動作原理
SIM-ホスト間インターフェース
SIMカードはISO 7816規格に基づくコンタクト型インターフェースで通信します:
ISO 7816ピン定義:
C1: VCC(電源: 1.8V, 3.0V, 5.0V)
C2: RST(リセット)
C3: CLK(クロック: 通常1〜5MHz)
C4: 予約
C5: GND(グランド)
C6: VPP(プログラム電圧: 現代SIMでは未使用)
C7: I/O(データ入出力: 半二重シリアル)
C8: 予約
通信プロトコル:
T=0: 文字指向プロトコル(最も一般的)
T=1: ブロック指向プロトコル(より効率的)
SIMとモデムの通信
IoTモジュール内では、モデムチップとSIMチップがISO 7816インターフェースで接続:
// ATコマンドによるSIM情報取得例
// (LTE-Mモジュール SARA-R410Mの場合)
// IMSI取得
at_send("AT+CIMI\r\n");
// レスポンス例: 440101234567890
// ICCIDの取得
at_send("AT+CCID\r\n");
// レスポンス例: +CCID: 89810001012345678901
// SIMのPIN状態確認
at_send("AT+CPIN?\r\n");
// レスポンス例: +CPIN: READY(PINロックなし)
// キャリア情報取得
at_send("AT+COPS?\r\n");
// レスポンス例: +COPS: 0,0,"NTT DOCOMO",7(7=LTE)
用途・ユースケース
産業IoT向けMFF2 SIM
過酷な環境に設置するIoT機器には産業用SIM(MFF2)が適しています:
- 車載機器: 振動・温度変化(-40℃〜+105℃)に対する耐性
- 屋外設置機器: 防水・防塵環境での長期安定稼働
- 重工業設備: 機械振動による接触不良のリスク排除
IoT向けSIM(MVNO・IoT専用SIM)
通常のコンシューマ向けSIMと異なり、IoT向けに最適化されたSIMサービスがあります:
IoT向けSIMサービスの特徴:
- 低データ通信量向け従量課金(月額数十円〜)
- 複数キャリアへのMNOローミング対応
- SIM管理ポータルでの一括設定・停止
- 静的IPアドレス割り当て(VPN接続に有利)
- グローバル展開対応(多国間ローミング)
日本の代表的なIoT向けSIMサービス:
- SORACOM IoT SIM(IoTに特化したMVNO)
- IIJmio IoT SIM
- NTT Com IoT Suite SIM
- KDDIの法人向けIoT SIM
フリートマネジメントとSIM管理
大量のIoTデバイスを一元管理する際のSIM管理:
SIM管理のポイント:
1. アクティベーション管理: 使用開始前は待機状態でコスト削減
2. データ使用量監視: 異常通信の早期検知
3. 一括停止: セキュリティインシデント時の即時遮断
4. ローミング制御: 国際ローミングのON/OFF
5. APN管理: デバイス種別ごとの通信経路制御
実装・開発のポイント
SIM選定チェックリスト
IoT機器のSIM選定で確認すべき項目:
□ フォームファクター: 2FF / 3FF / 4FF / MFF2
□ 動作温度範囲: 消費者向け(-25〜+85℃)か産業向け(-40〜+105℃)か
□ 認定: GSMA SGP.01/02/11/12等のeSIM認定有無
□ 通信事業者: 国内のみかグローバルローミングか
□ 料金プラン: 従量課金 / 定額 / 容量プール
□ SIM管理機能: APIによる一括管理・自動化の可否
□ セキュリティ: GSMA SAS認証の有無
□ JAVA Card対応: カスタムアプレット格納の要否
開発・デバッグ時の注意点
// SIM関連の典型的なATコマンドフロー
void sim_init_sequence(void) {
// 1. モジュール起動確認
at_cmd_wait_ok("AT", 1000);
// 2. SIM検出確認
char resp[64];
if (at_cmd_response("AT+CIMI", resp, sizeof(resp), 5000) != 0) {
log_error("SIM not detected");
// → SIMスロット確認、SIM実装確認
return;
}
// 3. ネットワーク登録待機(最大60秒)
for (int i = 0; i < 60; i++) {
at_cmd_response("AT+CREG?", resp, sizeof(resp), 1000);
// "+CREG: 0,1"(国内登録)または"+CREG: 0,5"(ローミング登録)を確認
if (strstr(resp, ",1") || strstr(resp, ",5")) {
log_info("Network registered");
break;
}
delay_ms(1000);
}
// 4. RSSI(電波強度)確認
at_cmd_response("AT+CSQ", resp, sizeof(resp), 1000);
// 返値が99の場合は電波なし
}
他技術との比較
SIM vs eSIM(eUICC)
| 比較項目 | 物理SIM | eSIM(eUICC) |
|---|---|---|
| 形状 | カード型 / MFF2 | チップ(基板実装) |
| キャリア変更 | SIM物理交換が必要 | OTAでプロファイル書き換え |
| コスト | 安い(カード単価) | やや高い(eUICC単価) |
| 産業環境耐性 | MFF2は高い | 高い(直接実装) |
| グローバル対応 | ローミングSIMが必要 | 現地プロファイル自動切り替え |
| フリート管理 | SIM個別管理 | プラットフォームから一元管理 |
SIMとeSIMは機能的に補完関係にあり、量産・固定設置機器では物理SIM(MFF2)、グローバル展開・フィールドでのキャリア切り替えが必要な機器ではeSIMが適しています。
IoT向けセキュリティにおけるSIMの役割
SIMはTPM(Trusted Platform Module)と並んで、組み込みデバイスのハードウェアセキュリティの核となる存在です。SIM内部でのAKA認証・暗号演算により、ソフトウェアのみで実装した認証より格段に高いセキュリティを提供します。デバイス認証・TLS/DTLSと組み合わせることで、エンドツーエンドの堅牢なセキュリティアーキテクチャが構築できます。