戻る | 前へ | 次へ

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 の場合に使う