SIMカード基礎情報

概要

  • SIMカード
    • スマートカード(免許証、パスポート、マイナンバーカード等)の一種
    • CPU・メモリは存在するマイクロコンピュータ(電源・表示能力は存在しない)
  • ファイルシステム
    • 3GPPで規定された独自のファイルシステムを持つ
    • 大きくSD(Security Domain)、DF(dedicated File)、EF(Elementary File)といった要素で構成される
    • DFはディレクトリ、EFはファイル、SDがEF,DFをまとめるドライブの概念に近い
  • 通信手段
    • SIMカードはデバイス内のCAD(Card Acceptance Device)との通信を行う
    • Command APDU / Response APDU が用いられる
    • CAD側がマスター、スマートカード側はスレーブとして動作
  • Sim Applet
    • SIMカードにはスマートカードの一種であるJavaCard OSを搭載
    • Java Cardランタイム環境(JCRE)上で JavaAppletを載せることができる
    • JCRE上で動作させるアプリケーションのことをSIM Appletと称す
    • Applet自体は物理的な制約に拠らないため eSIM Appletとも呼ばれ、本資料では同義で扱う

SIMカードファイルシステム仕様

  • 複数のファイルシステムを持つ
    • MF,DF,EF などと称される
    • 各々ファイルID(FID)2バイトの値をを持つ
  • 共通ファイル
    • MF(Master File)配下に格納される
    • ルートディレクトリに相当する
  • アプリ毎のファイルシステム
    • ルートディレクトリ相当のDFはADF(Application DF)と呼ばれる

    • DF(dedicated File)
      • フォルダ/ディレクトリの概念に近い
    • EF(Elementary File)
      • ファイル相当の概念、データ格納
  • ファイルシステムやアプリケーションはAIDというIDで管理される

  • AIDは共通ファイル(EF-DIR)に格納

  • SIMカードは、USIM Applicationを搭載する(そのため、USIMとも呼ばれる)

  • USIM Applicationの主な役割
    • 通信プロファイルの格納
      • 端末は起動時にこれらファイルを読み取り呼制御に使用
    • AKA認証を実行
      • AUTHENTICATEコマンド
  • USIM ApplicationのAIDは予約値(A0000000871002 ではじまる値)

ファイル構成イメージ

構成図

../_images/1690252779.png

構成補足

* MF
    * EF-DIR // Application-DF情報
    * EF-PL
    * EF-APR
    * EF-ICCID // ICCID
    * DF-GSM
    * DF-TELECOM
        * DF-GRAPHICS
        * DF-PHONEBOOK // 電話帳
        * DF-MULITMEDIA
        * DF-MSS
* ADF-USIM
    * EF-xxx // EF-IMSIなど
* OTA-SD
    * DF1
    * EF1
    * ...
* OEM-SSD
    * ...
* PAR-SSD
    * ...

APDUコマンド

  • C-APDU(command APDU=送る方=端末側)
    • 必須要素(ヘッダ)
      • CLS(クラス)/INS(インストラクション)/P1(パラメータ1)/P2(パラメータ2)

      • 各々1バイト

      • SIMの場合、CLSは 00 のことが多い(3GPP, ETSI規格)

      • INS
        • A4: SELECT
        • B2: READ BINARY
        • DC: UPDATE BINARY
        • など
    • 任意要素(ボディ)
      • Lc(データ長)/Data(データ本体)/Le(期待するレスポンス長)
      • Lc,Leは0,1,3バイトを取りえる
  • R-APDU(response APDU=返す方=SIM側)
    • 任意要素(ボディ)
      • Data
    • 必須要素(トレイラ)
      • Sw1/Sw2 (ステータスワード)
      • Sw1,Sw2共に1バイト
  • リクエスト送受信のパターン
    • パターン1
      • ヘッダ → トレイラ
    • パターン2
      • ヘッダ/Le → Data/トレイラ
    • パターン3
      • ヘッダ/Lc/Data → トレイラ
    • パターン4
      • ヘッダ/Lc/Data/Le → Data/トレイラ
  • select file
    • パターン:2 or 3
    • CLS:00
    • INS:a4 // select by DF name
    • P1: 04 // 04: DF名で選択、02: 現在のDF直下のEF識別子で選択、など
    • P2: 00 // AIDのバイト数
    • Le: 00(no AID)
  • read binary
    • パターン:2
    • CLS:00
    • INS:b0
    • P1:00
    • P2:00
    • Le:00 // 長さが判らない場合などは 00 を指定
    • EFの Structureが transparent の場合に使う
  • read record
    • パターン:2
    • CLS:
    • INS:b2
    • P1:01 // Record 番号
    • P2:04 // Read record P1
    • Le:00 // 長さが判らない場合などは 00 を指定
    • EFの Structureが linear fixed の場合に使う