GP APDU Transport over SPI/I2C規(guī)范介紹
簡介
IOT設(shè)備往往會(huì)使用安全元件(Secure Element,縮寫SE)實(shí)現(xiàn)安全功能。SE和主機(jī)設(shè)備(Hosting Device,縮寫HD)之間通過SPI/I2C接口連接,并傳輸數(shù)據(jù)。這個(gè)規(guī)范就定義了這個(gè)接口。類似OSI模型,這個(gè)協(xié)議分了物理層和數(shù)據(jù)鏈路層。
物理層
物理層接口可以是SPI或者是I2C
I2C
I2C總線必須包括兩根信號(hào)Serial Clock Line (SCL)和Serial Data Line (SDA)。另外I2C-IRQ是可選的。這個(gè)協(xié)議中只支持7-bit Addressing,最大時(shí)鐘頻率為下列值:
o 400 kHz for Fast Mode
o 1000 kHz for Fast Mode Plus
o 3400 kHz for HS Mode
另外,如果SE支持Clock Stretching則HD必須也支持。
I2C-IRQ信號(hào)被SE通知HD,它已經(jīng)準(zhǔn)備好發(fā)送數(shù)據(jù)了。如果I2C-IRQ信號(hào)沒有用,則HD必須用輪詢的方式接收SE數(shù)據(jù)。
數(shù)據(jù)鏈路層
這個(gè)規(guī)范的鏈路層協(xié)議和[7816-3]的T=1 protocol,被稱為T=1’ 協(xié)議。
數(shù)據(jù)鏈路層的數(shù)據(jù)被分成若干塊(block)進(jìn)行傳輸,塊是鏈路層最小的傳輸單位。這個(gè)規(guī)范定義了三種塊:
信息塊(information block / I-block):應(yīng)用層通過這種塊傳輸信息,同時(shí)I-block也可以用于傳輸應(yīng)答(acknowledgement)
應(yīng)答塊 (receive ready block / R-block):用于傳輸應(yīng)答(acknowledgement)
控制塊 (supervisory block / S-block):用于傳送控制信息
每個(gè)block的結(jié)構(gòu)如下:
Prologue Field Prologue Field Prologue Field Information Field Epilogue Field
NAD (1 byte) PCB (1 byte) LEN (2 byte) INF (LEN bytes) CRC (2 bytes)
節(jié)點(diǎn)地址字節(jié)域Node Address Byte (NAD)
NAD域表示報(bào)文的源和目的地址。前4個(gè)bit是目的地址(DAD),后4bit是源地址(SAD)。源和目的地址不能一樣,且不能是全0或全1。
Destination Address (DAD) Source Address (SAD)
8 – 5b 4 – 1b
對于HD和SE是1對1的情況,這個(gè)規(guī)范建議用0001b做HD地址,0010b做SE地址。
協(xié)議控制域Protocol Control Byte (PCB)
PCB定義了block的類型,并可以用于傳輸一些控制數(shù)據(jù)
Type Sub-Type b8 b7 b6 b5 b4 b3 b2 b1
I-Block Application Data 0 N(S) M-bit 0 0 0 0 0
R-Block Error-free acknowledgement 1 0 0 N(R) 0 0 0 0
CRC error 1 0 0 N(R) 0 0 0 1
Other error 1 0 0 N(R) 0 0 1 0
S-Block RESYNCH request 1 1 0 0 0 0 0 0
RESYNCH response 1 1 1 0 0 0 0 0
IFS request 1 1 0 0 0 0 0 1
IFS response 1 1 1 0 0 0 0 1
ABORT request 1 1 0 0 0 0 1 0
ABORT response 1 1 1 0 0 0 1 0
WTX request 1 1 0 0 0 0 1 1
WTX response 1 1 1 0 0 0 1 1
CIP request 1 1 0 0 0 1 0 0
CIP response 1 1 1 0 0 1 0 0
RELEASE request 1 1 0 0 0 1 1 0
RELEASE response 1 1 1 0 0 1 1 0
SWR request 1 1 0 0 1 1 1 1
SWR response 1 1 1 0 1 1 1 1
Reserved for future use 1 1 x 1 0 x x x
Reserved for proprietary use 1 1 x 1 1 x x x
注
N(S): I-block中發(fā)送的序列號(hào),值是0和1交替,每發(fā)一個(gè)block就變一次。
M-bit:用在block鏈表中,1表示后面還有下一個(gè)block。
N(R ):每個(gè)R-block都帶一位N( R),表示期待的下一個(gè)I-block的N(S)位的值。
說明
S(RESYNCH request): 請求重新同步resynchronization。每個(gè)I-block都會(huì)帶N(S),resynchronization的意思就是重新從0開始計(jì)數(shù)。
S(IFS request): 用于獲取HD和SE側(cè)各自的信息域 (Information Field)的最大長度。
S(ABORT request):請求結(jié)束當(dāng)前鏈。
S(WTX request): 如果SE需要比BWT更長的時(shí)間處理I-Block,則會(huì)發(fā)送S(WTX request)消息給HD,其中包含了要求延長的時(shí)間,整個(gè)值用BWT的整數(shù)倍表示。HD收到這個(gè)消息后應(yīng)該回復(fù)S(WTX response)。
S(CIP request): HD請求SE返回CIP。
S(CIP response): SE對S(CIP request)的響應(yīng),其中包含了請求的CIP。
S(RELEASE request): HD釋放SE,SE可以進(jìn)入省電模式了。
S(RELEASE response): SE對S(RELEASE request)的響應(yīng)。
S(SWR request): HD請求SE對其通信接口進(jìn)行軟復(fù)位,同時(shí)HD需要對N(S)位進(jìn)行復(fù)位,丟棄之前的 block的連接信息。
-S(SWR response): SE對 S(SWR request)的響應(yīng)。
長度域 Length (LEN)
這個(gè)域表示INF域的長度。
信息域Information (INF)
INF的內(nèi)容根據(jù)block類型的不同而不同。
Type Sub-Type Information Field Usage
I-Block Application Data Application Data
R-Block Error-free acknowledgement 不存在
CRC error 不存在
Other error 不存在
S-Block RESYNCH request 不存在
RESYNCH response 不存在
IFS request 1/2字節(jié)的IFS值
IFS response 同IFS request
ABORT request 不存在
ABORT response 不存在
WTX request 長度為1字節(jié)的BWT的倍數(shù)
WTX response 同WTX request
CIP request 不存在
CIP response 通信接口參數(shù)
RELEASE request 不存在
RELEASE response 不存在
SWR request 不存在
SWR response 不存在
后記域 Epilogue
內(nèi)容是2字節(jié)的塊數(shù)據(jù)的CRC校驗(yàn)。
通信接口參數(shù)(CIP)
通常在上電或者軟復(fù)位后,主機(jī)設(shè)備需要獲得通信接口參數(shù)才能和SE進(jìn)行后續(xù)的通信。這個(gè)過程是通過主機(jī)發(fā)送CIP request,SE用CIP response響應(yīng)實(shí)現(xiàn)的。通信接口參數(shù)包含在CIP response的INF域中,其結(jié)構(gòu)如下:
CIP INF域結(jié)構(gòu)
名稱 長度 描述
PVER 1 協(xié)議版本,目前的版本是01
IIN長度 1 IIN(Issuer Identification Number)的長度
IIN 3-4 IIN(Issuer Identification Number)
PLID 1 物理層ID, 對SPI是0,對I2C是1
PLP長度 1 PLP域的長度
PLP 不固定 物理層參數(shù) Physical Layer Parameters
DLLP長度 1 DLLP域的長度
DLLP 不固定 數(shù)據(jù)鏈路層參數(shù) Data Link Layer Parameters (見后文)
HB長度 1 HB域的長度
HB 不固定 歷史字節(jié)
CIP數(shù)據(jù)鏈路層參數(shù)
名稱 長度 描述
BWT 2 Block的等待時(shí)間,以毫秒為單位。是SE收到的上一個(gè)字節(jié)的開始時(shí)間到下一個(gè)發(fā)送字節(jié)的開始時(shí)間之間的間隔
IFSC 2 SE的最大信息域長度(Information Field)
CIP物理層參數(shù)
名稱 長度 描述
PWT 1 供電喚醒時(shí)間
MCF 2 最大時(shí)鐘頻率
PST 1 省電模式超時(shí)時(shí)間
MPOT 1 最小輪詢時(shí)間
SEGT 2 SE保護(hù)時(shí)間
SEAL 2 最大SE訪問長度
WUT 2 喚醒時(shí)間
————————————————
原文鏈接:https://blog.csdn.net/Eagle_K2/article/details/107696424
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。