当前位置: 首页>編程日記>正文

APDU应用协议数据单元

APDU应用协议数据单元

APDU应用协议数据单元

      • 0.PDU(ProtocolDataUnit)
      • 1.APDU(ApplicationProtocolDataUnit)
        • 1.1 APDU
        • 1.2 命令APDU的四种组成格式
        • 1.3通用APDU指令集
        • 1.4响应APDU格式
      • 参考链接

0.PDU(ProtocolDataUnit)

协议数据单元。对等层次直接传递的数据单位。物理层的PDU是数据位(bit),数据链路层的PDU是数据帧(frame),网络层的PDU是数据包(packet),传输层的PDU是数据段(segment),其他更高层次的PDU是数据(data)。在分层网络模型,例如OSI参考模型中,传系统的每层都将建立PDU。PDU包含来自上层的信息,以及当前层的实体附加信息。然后该PDU被传送到下一较低的层。

1.APDU(ApplicationProtocolDataUnit)

应用协议数据单元。是智能卡智能卡读卡器之间传送的信息单元,像智能卡发送的指令。(IOS/IEC 7816-4规范定义)

1.1 APDU

  • 命令APDU (由读卡器像卡片发出),包含4字节的头(CLA, INS, P1, P2)和0-255字节的数据。
  • 响应APDU (由卡片像读卡器发送),包含必须的2字节状态字和0-256字节数据。
  • 格式:

命令APDU(Command APDU)

字段名长度(Byte)说明
CLA1【指令类型】–指示命令的类型,例如行业间命令或专有命令
INS1【指令代码】–指示特定的命令,例如 ”写数据”命令
P1-P22【指令参数】–该命令APDU的指令参数,如指明文件偏移地址以在偏移地址写入数据
Lc0,1或3【Data长度】–指明命令APDU中携带的数据(Command data)字节数(Nc)
Command dataNc【数据】–Nc字节的数据
Le0, 1, 2或3【希望响应数据最大字节数】–指明预期响应数据的最大字节数(Ne)
  • 必选部分:CLA, INS, P1, P2 CLA确定APDU类别,INS确定具体执行的命令,P1 P2为参数
  • 可选部分:Lc Data Le

响应APDU(Response APDU)

字段名长度(Byte)说明
Response dataNr(最大为Ne)响应数据
SW1-SW2(响应后缀)2命令处理状态,例如 0x 9000表示成功

1.2 命令APDU的四种组成格式

由“命令头"(CLA INS P1 P2)和"命令体"(Lc Data Le)组成。可分为四种情况:

  • case1 : CLA INS P1 P2
    命令中没有数据送到卡(Lc)中,也没有数据从卡中返回(Le)。
    不含安全报文的命令:CLA | INS | P1 | P2
    含安全报文的命令 :CLA | INS | P1 | P2 | Lc | MAC (Lc=MAC的长度,4字节)
  • case2 : CLA INS P1 P2 Le
    命令中没有数据送到卡( Lc)中,有数据从卡中返回( Le)。
    不含安全报文的命令: CLA | INS | P1 | P2 | Le
    含安全报文的命令: CLA | INS | P1 | P2 | Lc | MAC | Le
  • case3 : CLA INS P1 P2 Lc Data
    命令中有数据送到卡( Lc)中,没有数据从卡中返回( Le)。
    不含安全报文的命令: CLA | INS | P1 | P2 | Lc | Data
    含安全报文的命令: CLA | INS | P1 | P2 | Lc | Data+MAC (Lc=Data长度+MAC长度)
  • case4 : CLA INS P1 P2 Lc Data Le
    命令中既有数据送到卡( Lc)中,也有数据从卡中返回( Le)。
    不含安全报文的命令: CLA | INS | P1 | P2 | Lc | Data | Le
    含安全报文的命令: CLA | INS | P1 | P2 | Lc | Data+MAC | Le

1.3通用APDU指令集

指令名称CLAINS含义
READ BINARY00/04B0读出带有透明结构的EF内容的一部分
WRITE BINARYD0将二进制值写入 EF
UPDATE BINARY00/04D6启动使用在命令 APDU 中给出的位来更新早已呈现在EF中的位
ERASE BINARY0E顺序地从给出的偏移开始,将 EF 的内容的一部分置为其逻辑擦除的状态
READ RECORD00/04B2给出了EF的规定记录的内容或EF的一个记录开始部分的内容
WRITE RECORDD2WRITE RECORD命令报文启动下列操作之一:a. 写一次记录;b. 对早已呈现在卡内的记录数据字节与在命令 APDU 中给出的记录数据字节进行逻辑“或”运算;c. 对早已呈现在卡内的记录数据字节与在命令 APDU 中给出的记录数据字节进行逻辑“和”运算
APPEND RECORD00/04E2启动在线性结构 EF 的结束端添加记录,或者在循环结构的 EF 内写记录号 1
UPDATE RECORD00/04DC启动使用命令 APDU 给出的位来更新特定记录
GET DATACA可在当前上下文(例如应用特定环境或当前 DF )范围内用于检索一个原始数据对象,或者包含在结构化数据对象中所包含的一个或多个数据对象
PUT DATADA可在当前上下文(例如应用特定环境或当前 DF )范围内用于存储一个原始数据对象,或者包含在结构化数据对象中的一个或多个数据对象正确的存储功能(写一次和/或更新和/或添加)通过数据对象的定义和性质来引出
SELECT FILE00A4设置当前文件后续命令可以通过那个逻辑信道隐式地引用该当前文件
VERIFY00/0420启动从接口设备送入卡内的验证数据与卡内存储的引用数据(例如口令)进行比较
INTERNAL AUTHENTICATE0088启动卡使用从接口设备发送来的询问数据和在卡内存储的相关秘密(例如密钥)来计算鉴别数据,当该相关秘密被连接到 MF 时,命令可以用来鉴别整个卡当该相关秘密被连接到另一个 DF 时命令可以用来鉴别那个 DF。
EXTERNAL AUTHENTICATE0082使用卡计算的结果(是或否)有条件地来更新安全状态而该卡的计算是以该卡先前发出(例如通过 GETCHALLENGE 命令)的询问在卡内存储的可能的秘密密钥以及接口设备发送的鉴别数据为基础的
GET CHALLENGE0084要求发出一个询问(例如随机数)以便用于安全相关的规程(例EXTERNAL AUTHENTICATE 命令)
MANAGE CHANNEL70打开和关闭逻辑信道
GET RESPONSE00C0用于从卡发送至接口设备用可用的协议不能传送的那一些的 APDU (或APDU的一部分)
ENVOLOPE80C2用来发送那些不能由有效协议来发送的 APDU 或 APDU 的一部分或任何数据串

1.4响应APDU格式

由响应数据(Data)和状态字(SW1 SW2 --卡片执行命令的返回值)组成。

常用的SW1-SW2值

SW1 SW2含义
9000执行成功
6100数据被截断
6200警告,信息未提供
6281警告,回送数据可能出错
6282警告,文件长度小于Le
6283应用无效
6284FCI格式与P2指定的不符
6300认证失败
63Cx校验失败(x-允许重试次数)
6400原因不明
6581内存失败
6700长度不对
6900不能处理
6901命令不接受(无效状态)
6981命令与文件结构不相容,当前文件非所需文件
6982要PIN验证
6983文件无效,PIN被锁定
6984数据无效,随机数无效,引用的数据无效
6985条件不满足
6986不允许该命令
6982安全条件不满足
6987安全消息丢失
6988安全消息不正确
6999应用选择失败
6A80数据错误
6A81功能不支持
6A82文件找不到
6A83记录找不到
6A84没有足够的空间
6A86不正确的参数(P1,P2)
6A88引用数据没找到
6B00错误的参数 (P1,P2)
6C00长度错误 (Le)
6D00INS不支持
6E00CLA 不支持
6F00未知错误
9301资金不足
9302MAC无效
9303应用被永久锁定
9401交易金额不足
9402交易计数器达到最大值
9403密钥索引不支持
9406所需MAC不可用

SW1 SW2状态码:

正常处理警告错误执行错误检测错误
61XX或者900062XX或者63XX64XX或者65XX67XX直到6FXX

参考链接

APDU
APDU命令格式
APDU指令小记


https://www.fengoutiyan.com/post/15008.html

相关文章:

  • pdu协议数据单元
  • i2c通信协议
  • IEEE80211ac协议
  • 协议数据单元PDU包含哪两个部分
  • 应用层协议数据单元
  • oidc协议
  • i2c通讯协议
  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機