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