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