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 ではじまる値)
ファイル構成イメージ¶
構成図

構成補足
* 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 の場合に使う