什么是 APDU谁撼?
APDU (Application Protocol Data Unit) 是基于 ISO/IEC 7816-4 標(biāo)準(zhǔn)的智能卡通信協(xié)議,是智能卡與外部設(shè)備(如讀卡器)之間交換數(shù)據(jù)的基本單元舟肉。它是智能卡通信的核心概念,定義了一組用于請(qǐng)求和響應(yīng)的標(biāo)準(zhǔn)化消息格式查库。
APDU 分為兩類:Command APDU(指令 APDU) 和 Response APDU(響應(yīng) APDU)路媚。
1. Command APDU(指令 APDU):由外部設(shè)備(主機(jī))發(fā)送給智能卡,用于向卡片發(fā)出指令樊销。由以下字段組成:
字段名稱 | 長度 (字節(jié)) | 描述 |
---|---|---|
CLA | 1 | 指令類別 (Class)整慎。指定命令的類別。 |
INS | 1 | 指令代碼 (Instruction)围苫。指定要執(zhí)行的操作裤园。 |
P1, P2 | 2 | 參數(shù) (Parameter)。指定指令的操作參數(shù)剂府。 |
LC | 1 (可選) | 數(shù)據(jù)字段長度 (Length of Command)拧揽。 |
Data | 可變長度 | 數(shù)據(jù)字段 (Data)。向卡片傳遞的數(shù)據(jù)。 |
LE | 1 (可選) | 期望的響應(yīng)數(shù)據(jù)長度 (Length of Expected)淤袜。 |
Command APDU 示例:
00A404000F7378312E73682EC9E7BBE1B1A3D5CF
? CLA: 00 - 標(biāo)準(zhǔn)指令痒谴。
? INS: A4 - SELECT 文件指令。
? P1, P2: 04 00 - 選擇方式铡羡。
? LC: 0F - 后續(xù)數(shù)據(jù)長度积蔚。
? Data: 7378312E73682EC9E7BBE1B1A3D5CF- 要選擇的文件標(biāo)識(shí)符。
2. **Response APDU(響應(yīng) APDU)**:由智能卡返回給主機(jī)蓖墅,用于提供執(zhí)行結(jié)果或數(shù)據(jù)库倘。由以下字段組成:
字段名稱 | 長度 (字節(jié)) | 描述 |
---|---|---|
Data | 可變長度 | 響應(yīng)數(shù)據(jù)。 |
SW1, SW2 | 2 | 狀態(tài)字 (Status Word)论矾。指示執(zhí)行結(jié)果教翩。 |
Response APDU 示例:
6F 10 84 08 A0 00 00 00 87 10 02 02 90 00
? Data: 6F 10 84 08 A0 00 00 00 87 10 02 02 - 返回的數(shù)據(jù)內(nèi)容。
? SW1, SW2: 90 00 - 執(zhí)行成功贪壳。
Command APDU 與 Response APDU 的工作流程
1. 主機(jī)發(fā)送 Command APDU:
? 外部設(shè)備(主機(jī))通過讀卡器向智能卡發(fā)送指令饱亿,例如選擇應(yīng)用、讀取數(shù)據(jù)或驗(yàn)證 PIN闰靴。
2. 智能卡解析并執(zhí)行指令:
? 智能卡接收并解析 Command APDU彪笼,根據(jù)指令內(nèi)容執(zhí)行操作。
3. 智能卡返回 Response APDU:
? 執(zhí)行完成后蚂且,智能卡將響應(yīng)數(shù)據(jù)和狀態(tài)字通過 Response APDU 返回給主機(jī)配猫。
示例:
? Command APDU: 主機(jī)發(fā)送選擇文件指令 00 A4 04 00 08 A0 00 00 00 87 10 02 02。
? Response APDU: 智能卡返回文件選擇成功 90 00杏死。
APDU 狀態(tài)字 (SW1, SW2)狀態(tài)字是智能卡返回的兩個(gè)字節(jié)泵肄,指示指令的執(zhí)行結(jié)果。常見狀態(tài)字包括:
狀態(tài)字 | 描述 |
---|---|
90 00 | 執(zhí)行成功淑翼。 |
67 00 | 長度錯(cuò)誤腐巢。 |
6A 82 | 文件未找到。 |
6A 84 | 存儲(chǔ)空間不足玄括。 |
69 82 | 安全狀態(tài)未滿足(如未認(rèn)證)冯丙。 |
6C XX | LE 字段不匹配,返回推薦的長度 XX遭京。 |
讀取社蔽赶В卡信息
了解了什么是APDU之后,就可以來讀社蹦牡瘢卡了船殉。
根據(jù)關(guān)于印發(fā)社會(huì)保障卡文件結(jié)構(gòu)和數(shù)據(jù)項(xiàng)(V2.0)的通知 人社信息函?2012?37 號(hào)
中的說明。
社會(huì)保障系統(tǒng)環(huán)境 SSSE 的應(yīng)用標(biāo)識(shí)符
DDF | 應(yīng)用標(biāo)識(shí)符內(nèi)容 | 應(yīng)用標(biāo)識(shí)符 |
---|---|---|
SSSE | sx1.sh.社會(huì)保障 | 7378312E73682EC9E7BBE1B1A3D5CF |
基本應(yīng)用數(shù)據(jù)區(qū)文件特性
文件定義 | 文件標(biāo)識(shí)符 | 短文件標(biāo)識(shí)符 | 讀控制 | 寫控制 | 文件結(jié)構(gòu) | 類別 |
---|---|---|---|---|---|---|
發(fā)卡機(jī)構(gòu)數(shù)據(jù)文件 | EF05 | 05 | 無 | UKSSSE | 變長記錄 | 啟用 |
持卡人的基本信息文件 | EF06 | 06 | 無 | UKSSSE | 變長記錄 | 啟用 |
數(shù)據(jù)項(xiàng)的格式與屬性
標(biāo)志 | 數(shù)據(jù)項(xiàng) | 類型 | 長度 | 所屬文件 | 備注 |
---|---|---|---|---|---|
01 | 卡的識(shí)別碼 | cn | 10 | SSSE "EF05" | |
02 | 卡的類別 | an | 01 | SSSE "EF05" | |
03 | 規(guī)范版本 | an | 04 | SSSE "EF05" | |
04 | 初始化機(jī)構(gòu)編號(hào) | cn | 0C | SSSE "EF05" | |
05 | 發(fā)卡日期 | cn | 04 | SSSE "EF05" | |
06 | 卡有效期 | cn | 04 | SSSE "EF05" | |
07 | 卡號(hào) | an | 09 | SSSE "EF05" | |
08 | 社會(huì)保障卡號(hào)碼 | cn | 12 | SSSE "EF06" | |
09 | 姓名 | an | 1E | SSSE "EF06" | |
4E | 姓名擴(kuò)展 | an | 14 | SSSE "EF06" | |
0A | 性別 | cn | 01 | SSSE "EF06" | |
0B | 民族 | cn | 01 | SSSE "EF06" | |
0C | 出生地 | cn | 03 | SSSE "EF06" | |
0D | 出生日期 | cn | 04 | SSSE "EF06" |
可以獲知热监,以上數(shù)據(jù)捺弦,可以直接讀出饮寞,不需要走加密模塊孝扛。