首先終端和卡片有乙個共同的金鑰叫做消費金鑰:purchkey
假設purchkey = 11223344556677888877665544332211 在滿足安全條件的情況下:
第一步:終端向卡片傳送消費初始化命令:
apdu: 80 50 01 02 0b 01 00001000 001122334455
cla ins p1 p2 lc keyindex 交易金額 終端機編號
p1:金鑰用途、
p2:金鑰版本、
lc:金鑰檔案首席資訊官度、
keyindex
:金鑰檔案識別符號
卡片返回15個位元組的資料如下(不包括9000):
00000000 0000 000000 01 00 11223344
卡片餘額 交易序號 透支限額 金鑰版本號 演算法標識 隨機數
mac1的計算過程如下(終端):
1.計算過程金鑰:sessionkey
inputdata = 11223344 0000 0001 (8bytes)
隨機數 卡片離線交易序號 終端交易序號後四位
purchkey = 11223344556677888877665544332211(消費金鑰)
sessionkey = 3desenypt(inputdata, purchkey) =003238abc57659dd(計算過程金鑰)
用loadkey輸入鍵對inputdata輸入資料 做3des加密
2.
計算mac1
inputdata1 = 00001000 06 001122334455 20120229135100
交易金額 交易型別 終端機編號 日期時間
sessionkey = 003238abc57659dd
mac1 = mac(inputdata1sessionkey ) = f15cab75
用sessionkey對inputdata1做mac運算
第二步:終端向卡片傳送消費命令:
apdu: 80 54 01 00 0f 00000001 20111221214822 3a845bf0
cla ins p1 p2 lc 終端交易序號 交易日期時間 mac1
卡片用同樣的方法計算
mac1
並驗證終端發來的
mac1
是否正確來確認終端是否合法。如果
mac1
驗證沒通過,卡片會返回
mac錯誤終止交易。如果
mac1
驗證通過,進行第三步。
第三步:卡片修改餘額,離線交易序號加
1並計算
mac2
和tac
,並返回給終端
3.
計算mac2
inputdata2= 00001000 交易金額
sessionkey = 003238abc57659dd
mac2 = mac(inputdata2 sessionkey ) = 56988a13
用sessionkey對inputdata2做mac運算,
4.
計算tac
卡片和終端還有乙個共同的金鑰tac金鑰:tackey
假設tackey = 00112233445566778899aabbccddeeff
tacsessionkey=xor( left(8),right(8)) =8888888888888888
tackey左右8個位元組做異或運算
inputdata3=00001000 01 001122334455 00000001 20111221 214822
交易金額 交易型別 終端機編號 終端交易序號 交易日期 交易時間
tac = mac(inputdata3, tacsessionkey) = 3ff7a28a
mac2
和tac
作為消費命令的返回資料返回給終端,消費交易到此就結束了,
tac作為清算的時候驗證交易資料真偽和完整性的重要依據,連同交易記錄一同儲存在終端。
tac的計算方法:
初始向量:
00 00 00 00 00 00 00 00
待處理資料:
4位元組交易金額
+1位元組交易型別標識
+6位元組終端機編號
+4位元組終端交易序號
+4位元組終端交易日期
+3位元組終端交易時間
金鑰:tac
金鑰左8
位元組與右
8位元組異或得到的
8位元組資料
演算法:des_mac
演算法
說明:以下計算
tac的流程適用於:
1.
如果psam
卡中tac
秘鑰型別是口令重灌金鑰型別,則此
psam
卡中的tac
金鑰對cpu
卡中的分散因子分散之後
=cpu
卡中的tac
金鑰,因為
口令重灌金鑰在被使用時
cos會自動左右
8位元組進行異或。
2.
如果psam
卡中的tac
金鑰型別是加密
mac金鑰,或者是
mac金鑰型別,則此
psam
卡tac
金鑰對cpu
卡中的分散因子分散之後
=cpu
卡中的tac
金鑰左右
8位元組異或的值
基於PBOC的電子錢包消費交易過程
智慧卡金融行業應用電子錢包的消費交易流程,開發人員可參考 首先終端和卡片有乙個共同的金鑰叫做消費金鑰 purchkey 假設purchkey 11223344556677888877665544332211 在滿足安全條件的情況下 第一步 終端向卡片傳送消費初始化命令 apdu 80 50 01 0...
基於PBOC電子錢包的消費過程詳解
智慧卡金融行業應用電子錢包的消費交易流程,開發人員可參考 首先終端和卡片有乙個共同的金鑰叫做消費金鑰 purchkey 針對每種特定的交易,比如,圈存,消費,都有特定的金鑰與之對應 假設purchkey 11223344556677888877665544332211 應用金鑰一般都是16位元組,寫...
基於pboc的電子錢包的圈存過程
基於pboc 的電子錢包的圈存過程,供智慧卡行業的開發人員參考 一 圈存 首先終端和卡片有乙個共同的金鑰叫做圈存金鑰 loadkey 假設loadkey 11223344556677888877665544332211 在滿足安全條件的情況下 第一步 終端向卡片傳送圈存初始化命令 apdu 80 5...