




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、金融行業(yè)密鑰基礎(chǔ)知識(shí)1 密鑰管理SJL05 金融數(shù)據(jù)加密機(jī)采用三級(jí)密 鑰管理方法(遵循 ANSI X9.17 標(biāo)準(zhǔn)),其密 鑰層 次如下圖 :圖 1.1 密 鑰 層 次1.1 各種密鑰在密鑰層次中的作用1.1.1 本 地主密鑰( Local Master Key )又稱 主 機(jī)主 密 鑰( Master Key ),主 要 用來(lái) 保 護(hù)它 下 一級(jí) 的 區(qū) 域 主 密 鑰( Zone Master Key )( 銀 行 主 密 鑰( Bank Master Key )、 終端 主密 鑰( Terminal Master Key) )。當(dāng)區(qū) 域主 密鑰 需要導(dǎo)出或保 存到 加密 機(jī)以外時(shí) ,通
2、常需 要用本地 主密 鑰( 或衍生 的密 鑰 對(duì) )加 密 區(qū) 域 主 密 鑰 。這 一 點(diǎn) 在 RACAL 系 列 的 加 密 機(jī) 中 有 最 好 的 體現(xiàn),在RACAL加密機(jī)中,區(qū)域主密鑰都由主機(jī)主密鑰加密存放 于主 機(jī)數(shù) 據(jù)庫(kù) 中, 加密 機(jī)不 保存區(qū)域 主密 鑰。1.1.2 區(qū) 域主密鑰主要有兩種, 一種是金卡中心與成員行之間的傳輸密鑰(通 常稱為銀行主密鑰),另一種是成員行主機(jī)與ATM或POS之間的 傳輸密鑰(通常稱為終端主密鑰)。它主要用來(lái)加密下一層次的數(shù) 據(jù)密鑰(如:PIK、MAK)。1.1.3 數(shù) 據(jù)加密密鑰( Date Encrypt Key )又稱工作密 鑰( Workin
3、g Key ),是 最終 用于加密傳輸 數(shù)據(jù) 的 密 鑰 , 其 上 層 兩 種 密 鑰 可 以 稱 為 密 鑰 加 密 / 交 換 密 鑰 ( Key Encrypt/Exchange Key , 簡(jiǎn) 稱 KEK)。 數(shù) 據(jù) 密 鑰 一 般 分 為 兩 種 , 一種 是用 來(lái)加 密 PIN 的 密鑰 稱為 PIK( Pin Key ), 另一 種是用 來(lái) 計(jì) 算 MAC 的 密 鑰 稱 為 MAK( Mac Key )。1.2 各種密鑰的注入與分發(fā)1.2.1 本 地主密鑰通常由各成 員行( 或下 屬機(jī) 構(gòu))采 用加密 機(jī)前 面板 上的鍵盤 或直 接通 過(guò) IC 卡 注入到加密機(jī) 中, 各成員
4、行 的本 地主 密鑰各不 相同。一般本地主密鑰的注入都由成員行的三位高層領(lǐng)導(dǎo)注入, 三人 分別保 存一部 分密鑰( 密鑰分 量 Component ),三 部 分密 鑰 可以 在加 密機(jī) 中以一定 的算 法( 異或)合 成 為最終的本地 主密 鑰 (或 通過(guò)衍 生( Derive )生成 密鑰對(duì) )。 本 地主 密 鑰在 注 入加 密 機(jī)時(shí) 通過(guò) IC 卡進(jìn)行備 份,當(dāng) 加密 機(jī)密鑰丟 失時(shí) 可用 IC 卡 來(lái)恢復(fù)。1.2.2 區(qū) 域主密鑰(銀行主密鑰)一般由上級(jí) 機(jī)構(gòu)( 金卡中心)產(chǎn) 生并 分發(fā)。上 級(jí)機(jī)構(gòu)( 金卡 中 心 )產(chǎn) 生 并 保 存 下 屬 機(jī) 構(gòu)( 各 成 員 行 )的 區(qū) 域
5、 主 密 鑰( 銀 行 主 密 鑰 ),同 時(shí) 將 密 碼 分 量 的 明 文 或 IC 卡 的 形 式 將 區(qū) 域 主 密 鑰( 銀 行主 密鑰 ) 下發(fā) 給 下屬 機(jī)構(gòu) ( 各成 員 行)。下屬 機(jī)構(gòu)( 成員行 ) 將密鑰分量注入到加密機(jī)內(nèi),如果區(qū)域主密鑰(銀行主密鑰)是 保存到本機(jī)構(gòu)的主機(jī)數(shù)據(jù)庫(kù)中,則將區(qū)域主密鑰(銀行主密鑰) 注入到加密機(jī)后,加密機(jī)顯示本地主密鑰加密的區(qū)域主密鑰(銀 行主密鑰)密文,由銀行工作人員將其錄入主機(jī)數(shù)據(jù)庫(kù)。銀行主 密鑰通常由兩人注入,各自保存一部分。區(qū)域主密鑰中的終端主密鑰由各成員行自己注入到加密機(jī) 中,同時(shí)下裝到ATM和POS中,由于各成員行的ATM和POS
6、數(shù)量都較大, 一般是所有ATM和POS共用一個(gè)終端主密鑰或是一組 ATM和POS共用一個(gè) 終端主密鑰。1.2.3數(shù)據(jù)密鑰分為兩種,一般不在加密機(jī)中保存。一種是金卡中心與成員 行之間的數(shù)據(jù)密鑰,一種是成員行主機(jī)與ATM或POS之間的數(shù)據(jù) 密鑰。前一種數(shù)據(jù)密鑰可以由金卡中心主動(dòng)向下分發(fā),也可以由 成員行主動(dòng)向上申請(qǐng)。數(shù)據(jù)密鑰在傳輸過(guò)程中由金卡中心與成員 行之間共享的銀行主密鑰加密,成員行接收到數(shù)據(jù)密鑰后都需要 驗(yàn)證其正確性后才會(huì)啟用新的數(shù)據(jù)密鑰。后一種數(shù)據(jù)密鑰每天由 ATM或POS簽到申請(qǐng),由加密機(jī)隨機(jī)產(chǎn)生,并由終端主密鑰加密 傳送。金卡中心與成員行及其終端(ATM、POS)之間的密鑰關(guān)系如下 圖
7、:BMK金卡中心HSMA A(PIK1) BMK(DATA)PIKI、MAK1(MAK1)BMK圖 6.2 金 卡 中 心 、 成 員 行 、 終 端 之 間 密 鑰 關(guān) 系 示 意圖 6.2 中 各 符 號(hào) 的 含 義 如 下 :BMK:銀行主密鑰TMK:終端主密鑰PIK1: 金 卡中心與 成員 行之 間的 PIKMAK1:金卡中心與成員行之間的MAKPIK2:成員行與終端(ATM、POS)之間的PIKMAK2:成員行與終端(ATM、POS)之間 的MAKDATA: 傳 輸 的 數(shù) 據(jù)(PIK1) bmk 被 BMK加密的 PIK12 術(shù)語(yǔ)解釋2.1 本地主密鑰LMK Local Maste
8、r Key,本地主密鑰,又稱為文件主密鑰 (MDS)、 加密機(jī)主密鑰、主機(jī)主密鑰,在密鑰體系中處于最上層,以明文存儲(chǔ) 在加密機(jī)中,加密保護(hù)存儲(chǔ)在加密機(jī)外的其它密鑰。LMK 一般為雙長(zhǎng)度密鑰,也有三倍長(zhǎng)度密鑰。2.2 區(qū)域主密鑰ZMK Zone Master Key,區(qū)域主密鑰,在 RACAI加密機(jī)中,指主 機(jī)與主機(jī)間的傳輸主密鑰。在密鑰體系中處于中間層,可以通過(guò) LMK 加密后存儲(chǔ)在主機(jī)數(shù)據(jù)庫(kù)中,也可直接存儲(chǔ)在加密機(jī)中,一般為雙長(zhǎng)度,也有單長(zhǎng)度和三倍長(zhǎng)度密鑰。用于主機(jī)間動(dòng)態(tài)分發(fā)工作密鑰時(shí)對(duì) 其進(jìn)行加密保護(hù)BMK Bank Master Key,銀行主密鑰,同 ZMK多用于金卡聯(lián)網(wǎng), 在金卡聯(lián)網(wǎng)
9、中,有時(shí)POS和銀行主機(jī)之間也使用 BMKMM: Member Master Key,成員行主密鑰,同 ZMK多用于金卡 聯(lián)網(wǎng)SMK: Shared Master Key ,共享主密鑰,同 ZMK.2.3 數(shù)據(jù)加密密鑰TMK Terminal Master Key ,終端主密鑰,在 RACAI加密機(jī)中, 指主機(jī)與終端ATM/P03間的傳輸主密鑰,在密鑰體系中處于中間層, 可以通過(guò)LMK加密后存儲(chǔ)在主機(jī)數(shù)據(jù)庫(kù)中,也可直接存儲(chǔ)在加密機(jī)中, 現(xiàn)在一般為單長(zhǎng)度,也有雙長(zhǎng)度和三倍長(zhǎng)度。PIK: PIn Key , PIN 密鑰,專用于加密保護(hù) PIN 的工作密鑰,在 密鑰體系中處于最下層,一般通過(guò)LMK
10、和ZMK/TMK加密后存儲(chǔ)在數(shù)據(jù) 庫(kù)中,也有直接存儲(chǔ)在加密機(jī)中的,密鑰長(zhǎng)度有單長(zhǎng)度、雙倍長(zhǎng)度和 三倍長(zhǎng)度。在 MDS中,當(dāng)采用動(dòng)態(tài)密鑰時(shí),PIK每12小時(shí)或每2500 筆交易就必須更換一次(兩個(gè)條件滿足任何一個(gè)時(shí)更換)PEK Pin Encrypt Key ,PIN 加密密鑰,同 PIK。ZPK Zone Pin Key,區(qū)域PIN密鑰,PIK的一種,專指主機(jī)與主 機(jī)間的 PIK。TPK Terminal Pin Key,終端PIN密鑰,PIK的一種,專指主機(jī)與終端間的 PIKMAK Mac Key, Mac密鑰,專用于計(jì)算 MAC的工作密鑰,在密鑰 體系中處于最下層,一般通過(guò)LMK和ZMK/
11、TMK加密后存儲(chǔ)在數(shù)據(jù)庫(kù)中, 也有直接存儲(chǔ)在加密機(jī)中的,密鑰長(zhǎng)度有單長(zhǎng)度、雙倍長(zhǎng)度和三倍長(zhǎng) 度。在MDS,當(dāng)采用動(dòng)態(tài)密鑰時(shí),PIK每12小時(shí)或每2500筆交易就必須更換一次(兩個(gè)條件滿足任何一個(gè)時(shí)更換)ZAK Zone Authenticate Key ,區(qū)域認(rèn)證密鑰, MAK的一種,專 指主機(jī)與主機(jī)間的 MAK。TAK Terminal AuthenticateKey,終端認(rèn)證密鑰, MAK的一種,專指主機(jī)與終端間的 MAK。DEK:Data Encrypt Key ,數(shù)據(jù)加密密鑰,專用于加密數(shù)據(jù)的密 鑰,在密鑰體系中處于最下層,一般通過(guò)LMK和ZMK/TMK加密后存儲(chǔ)在數(shù)據(jù)庫(kù)中,也有直接存
12、儲(chǔ)在加密機(jī)中的,密鑰長(zhǎng)度有單長(zhǎng)度、雙倍 長(zhǎng)度和三倍長(zhǎng)度。在MDS中當(dāng)采用動(dòng)態(tài)密鑰時(shí),PIK每12小時(shí)或每 2500 筆交易就必須更換一次(兩個(gè)條件滿足任何一個(gè)時(shí)更換)ZEK Zone Encrypt Key,區(qū)域加密密鑰,見 DEK專指主機(jī)與主 機(jī)間的數(shù)據(jù)加密密鑰。TEK Terminal Encrypt Key,終端加密密鑰,見 DEK專指主機(jī) 與終端間的數(shù)據(jù)加密密鑰。CVK:Card Verification Key,卡校驗(yàn)密鑰,專用于校驗(yàn)卡真?zhèn)蔚墓ぷ髅荑€,在密鑰體系中處于最下層,一般通過(guò)LMK加密后存儲(chǔ)在數(shù)據(jù)庫(kù)中,也有直接存儲(chǔ)在加密機(jī)中,密鑰由兩個(gè)單長(zhǎng)度密鑰組成, 分別稱為CVKA和CV
13、KB合起來(lái)叫CVKpairs , CVL般數(shù)據(jù)年更新一 次。PVK:Pin Verification Key, PIN 校驗(yàn)密鑰,專指用于計(jì)算 PVV的工作密鑰,在密鑰體系中處于最下層,一般通過(guò)LMK加密后存儲(chǔ)在數(shù)據(jù)庫(kù)中,也有直接存儲(chǔ)在加密機(jī)中,密鑰由兩個(gè)單長(zhǎng)度密鑰組成, 分別稱為PVKA和PVKB合起來(lái)叫PVKpairs,CVK-般數(shù)據(jù)年更新一 次。PIN: Personal Identify Number,個(gè)人識(shí)別碼,即卡密碼,在ANSI9.8 標(biāo)準(zhǔn)中, 規(guī)定為同 4-12 位 0-9 的數(shù)字組成, 在中國(guó)一般采用 4 位或 6 位 PIN。PINBlock :PIN 塊,指將 PIN 按
14、指定格式生成的 64 位數(shù)據(jù)。PVV Pin Verification Value,PIN 校驗(yàn)值,是指當(dāng)采用 ABA算 法校驗(yàn)PIN時(shí),用PVK對(duì)PIN、主帳號(hào)等信息加密生成的 4位數(shù)字的 校驗(yàn)值。PAN: Private Account Number ,主帳號(hào),即卡號(hào)或帳號(hào)。CVV Card Verification Value,卡校驗(yàn)值,是指用 CVK對(duì)卡號(hào)、 服務(wù)碼、 卡有效期進(jìn)行加密生成的用來(lái)校驗(yàn)卡的合法性的 3 位數(shù)字的 校驗(yàn)值。CVC Card Verification Code,卡校驗(yàn)碼,同 CVV 用于 VISA。CVV1 Card Verifycation Value 1,
15、CVV 的一種,與 CVV2相比, 計(jì)算參數(shù)中服務(wù)碼不同。CVV的 一種,與 CVV1相比,CVV2:Card Verifycation Value 2,計(jì)算參數(shù)中服務(wù)碼不同。ICVV:ICard Verification Value,VISA 中用于 IC 卡的仿磁卡業(yè)務(wù)中,與CVV計(jì)算方法同,其服務(wù)代碼為999MAC: Message Authentication Code ,消息認(rèn)證碼,用于鑒別數(shù)據(jù)真實(shí)性的加密結(jié)果,按要求 MAC由32-64位數(shù)據(jù)(8-16個(gè)16進(jìn)制 字符) 組成。TAC: Transaction Authentication Code,交易認(rèn)證碼,在 IC卡中用于驗(yàn)證
16、交易正確性。MK Master Key,主密鑰,IC卡業(yè)務(wù)中的各級(jí)應(yīng)用主密鑰。2.4 IC 卡業(yè)務(wù)密鑰SK Session Key,過(guò)程密鑰/會(huì)話密鑰,IC卡業(yè)務(wù)中用主密鑰對(duì) 過(guò)程數(shù)據(jù)(Session Data)進(jìn)行3DES加密或其它方式處理得到的單長(zhǎng) 度或雙長(zhǎng)度密鑰,用于計(jì)算 MAC或加密數(shù)據(jù)。HSMK1 主密鑰一, SJL05 金卡版本的 IC 卡密鑰區(qū)中,保留的加 密機(jī)主密鑰。HSMK2 主密鑰二, SJL05 金卡版本的 IC 卡密鑰區(qū)中,用于存儲(chǔ) 或讀取次主密鑰時(shí)對(duì)其進(jìn)行加密保護(hù)。SHSMK 次主密鑰, SJL05 金卡版本的 IC 卡密鑰區(qū)中,對(duì)應(yīng)存儲(chǔ) IC 卡業(yè)務(wù)的各級(jí)應(yīng)用主密鑰
17、,也可用于存儲(chǔ) IC 卡傳輸主密鑰。2.5 密鑰管理體系2.6 涉及的國(guó)家(際)標(biāo)準(zhǔn)ANSI X3.92 數(shù)據(jù)加密算法;ANSI X9.9 信息鑒別;ANSI X9.8 PIN 的管理與安全;ANSI X9.17 密鑰管理;ANSI X9.19 零售金融信息的鑒別; 中國(guó)人民銀行金融 IC 卡規(guī)范 PBOC;VISA及MASTE對(duì)硬件加密機(jī)的相關(guān)需求。3 算法介紹3.1 簡(jiǎn)述金融數(shù)據(jù)加密機(jī)中主要用到的算法為對(duì)稱算法,具體如下:1) DES算法2) 3DES算法3) 金融專用算法4) Double-one-way5) Secure Calculation (安全計(jì)算)6) 密鑰分散算法7) MA
18、C算法8) TAC算法9) 密鑰校驗(yàn)值( CheckValue )在以下說(shuō)明中,有如下簡(jiǎn)稱:u8 unsigned char3.2 算法描述DES 算法函數(shù)原型:void des_64by64(u8 in8, u8 out8, u8 k8, int op)3DES 算法函數(shù)原型:void des_64by128(u8 in8, u8 out8, u8 k16, int op)void des_64by192(u8 in8, u8 out8, u8 k24, int op)void des_128by128(u8 in16, u8 out16, u8 k16, int op)void des_1
19、28by192(u8 in16, u8 out16, u8 k24, int op)void des_192by128(u8 in24, u8 out24, u8 k16, int op) void des_192by192(u8 in24, u8 out24, u8 k24, int op) 計(jì)算過(guò)程:3DES算法中,如果使用雙長(zhǎng)度(16字節(jié))密鑰K=( KL|K r),將8 字節(jié)明文數(shù)據(jù)塊加密成密文數(shù)據(jù)塊,如下所示:-1Y = DES(Kl)DES (Kr)DES(KlX)解密的方式如下:X = DES (K l)DES(Kr) DES -1 (K lY)注意:DES為加密,des-1為解
20、密金融專用算法函數(shù)原型:void sms_64by64(u8 in8, u8 out8, u8 k8, int op)void sms_128by128(u8 in16, u8 out16, u8 k16, int op)void sms_64by128(u8 in8, u8 out8, u8 k16, int op)Double-one-way函數(shù)原型:void double_one_way(u8 in8, u8 out8, u8 key16)Double-one-way 是計(jì)算臨時(shí)密鑰算法的一種,用于雙字節(jié)的密鑰分散單字節(jié)的臨時(shí)密鑰,過(guò)程如下:(設(shè)MK的左半部份為L(zhǎng)K,右半部分為R01)
21、用 LK 對(duì)輸入數(shù)據(jù)解密2) 用RK對(duì)第1步結(jié)果加密3) 用LK對(duì)第2步結(jié)果解密4) 第 3 步結(jié)果與輸入數(shù)據(jù)異或密鑰分散算法函數(shù)原型:void deduce_session_key(u8 in8, u8 out8, u8 k16)void deduce_sub_key(u8 *data, u8 dpk16, u8 mpk16, int times)void deduce_sub_key_single(u8 *data, u8 dpk8, u8 mpk8, int times)簡(jiǎn)稱Diversify ,是指將一個(gè)雙長(zhǎng)度的密鑰 MK對(duì)分散數(shù)據(jù)進(jìn)行處理, 推導(dǎo)出一個(gè)雙長(zhǎng)度的密鑰DK。推導(dǎo)DK左半部
22、分的方法是:1)將分散數(shù)據(jù)的最右 16 個(gè)數(shù)字作為輸入數(shù)據(jù);2)將MK乍為加密密鑰;3)用MK對(duì)輸入數(shù)據(jù)進(jìn)行3DES運(yùn)算;推導(dǎo)DK右半部分的方法是:1)將分散數(shù)據(jù)的最右 16 個(gè)數(shù)字求反,作為輸入數(shù)據(jù);2)將MK乍為加密密鑰;3)用MK對(duì)輸入數(shù)據(jù)進(jìn)行3DES運(yùn)算。Secure Calculation (安全計(jì)算)函數(shù)原型:void secure_calculate(u8 in24, u8 out8, u8 k8)Secure Calculation 是對(duì)數(shù)據(jù)運(yùn)算的一種方法,當(dāng)主密鑰分散出子密鑰, 子密鑰導(dǎo)出臨時(shí)密鑰后對(duì)輸入的 24 字節(jié)數(shù)據(jù)運(yùn)算的方法。過(guò)程如下:(設(shè)輸入的 24 字節(jié)數(shù)據(jù)從左到
23、右分為 Data1 , Data2, Data3)1)用KEY對(duì)Data3進(jìn)行DES加密;2)用第1步的運(yùn)算結(jié)果做為 KEY對(duì)Datal解密;3)用第 2 步運(yùn)算結(jié)果與 Data2 異或;4)用第3步運(yùn)算結(jié)果作為KEY對(duì)第1步的運(yùn)算結(jié)果解密數(shù)據(jù)加密計(jì)算函數(shù)原型:int do_icard_des(u8 *in, u8 *out, int *iolen, u8 key8, int op) 當(dāng)明文數(shù)據(jù)需要加密時(shí),它首先要被格式化為以下形式的數(shù)據(jù)塊:明文數(shù)據(jù)的長(zhǎng)度,不包括填充字符(LD)明文數(shù)據(jù)填充字符數(shù)據(jù)加密技術(shù)如下所述:1. 用Ld表示明文數(shù)據(jù)的長(zhǎng)度,在明文數(shù)據(jù)前加上Ld產(chǎn)生新的數(shù)據(jù)塊。2. 將第
24、一步中生成的數(shù)據(jù)塊分解成 8 字節(jié)數(shù)據(jù)塊, 標(biāo)號(hào)為 D1,D2,等等。最后一個(gè)數(shù)據(jù)塊長(zhǎng)度有可能不足8。3. 如果最后(或唯一)的數(shù)據(jù)塊長(zhǎng)度等于 8 字節(jié),轉(zhuǎn)入第四 步;如果不足 8 字節(jié),在右邊添十六進(jìn)制數(shù)字 80 。如果長(zhǎng)度已達(dá)8 字節(jié),轉(zhuǎn)入第四步;否則,在其右邊添加 1 字節(jié) 16 進(jìn)制 0 直到 長(zhǎng)度達(dá)到 8 字節(jié)。4. 采用標(biāo)準(zhǔn)方法加密。5. 計(jì)算結(jié)束后,所有加密后的數(shù)據(jù)塊按原順序連接在一起。MAC 算法由于不同業(yè)務(wù)的需求,根據(jù)相應(yīng)的規(guī)范,對(duì)于計(jì)算MAC的方式也有不同。1. 計(jì)算磁條卡業(yè)務(wù)中MAC勺方式。函數(shù)原型:int gen_mcard_mac(u8 *in, u8 out8, u
25、8 ivec8, u8 k8, int len)int gen_mcard_mac_919(u8 *in, u8 out8, u8 ivec8, u8 k24,int len)int gen_mcard_mac_xor(u8 *in, u8 out8, u8 k8, int len)int gen_mac_ext(u8 *in, u8 *out, u8 *key, int len)gen _mcard_mac算法過(guò)程如下:1) 檢查MAC數(shù)據(jù)是否為8的整數(shù)倍。如果不是,則添加 0x00, 直到 8 的倍數(shù);2) 用密鑰對(duì)第一步的數(shù)據(jù)進(jìn)行 Cbc加密;3) 取第二步運(yùn)算結(jié)果的最后 8字節(jié)作為 M
26、AC。gen_mcard_mac_919算法過(guò)程如下:(密鑰必須為192位)1) 檢查MAC數(shù)據(jù)是否為8的整數(shù)倍。如果不是,則添加 0x00, 直到 8 的倍數(shù);2) 用密鑰的前8字節(jié)對(duì)第一步的數(shù)據(jù)進(jìn)行 Cbc加密;3) 用密鑰的中間 8 字節(jié)對(duì)第二步的運(yùn)算結(jié)果的最后 8 字節(jié)進(jìn)行ecb 解密;4) 用密鑰的后 8 字節(jié)對(duì)第三步的運(yùn)算結(jié)果進(jìn)行ecb 加密,運(yùn)算的結(jié)果作為 MAC。gen_mcard_mac_xor 算法過(guò)程如下:1) 檢查MAC數(shù)據(jù)是否為8的整數(shù)倍。如果不是,則添加 0x00, 直到 8 的倍數(shù);2) 將第一步計(jì)算的數(shù)據(jù)按 8 字節(jié)分成若干段, 每段依次異或, 最 終得到 8
27、字節(jié)的數(shù)據(jù);3) 用密鑰對(duì)第二步的結(jié)果進(jìn)行 ecb 加密,將結(jié)果作為 MAC。 gen_mac_ext 算法過(guò)程如下:與 gen_mcard_mac_xor 算法過(guò)程一致。2. 計(jì)算IC卡業(yè)務(wù)中MAC勺方式單倍長(zhǎng)密鑰int gen_icard_mac(u8 *in, u8 out8, u8 ivec8, u8 k8, intlen)int gen_icard_mac_8(u8 *in, u8 out8, u8 ivec8, u8 k8, int len)gen_icard_mac 的計(jì)算過(guò)程如下:1) 檢查MAC數(shù)據(jù)是否為8的整數(shù)倍。如果不是,返回錯(cuò)誤;2) 用密鑰對(duì)MAC數(shù)據(jù)采用CBC的方式
28、加密;3) 將運(yùn)算結(jié)果的后 8 字節(jié)作為 MAC。gen_icard_mac_8 的計(jì)算過(guò)程如下:1) 檢查MAC數(shù)據(jù)是否為8的整數(shù)倍。如果不是,則添加 0x80, 如果還不夠 8 的倍數(shù),則添加 0x00 ,并直到 8 的倍數(shù)為止;如果是8的倍數(shù),則添加一個(gè) 0x80,七個(gè)0x00;2) 用密鑰對(duì)第一步的數(shù)據(jù)進(jìn)行Cbc加密;3) 取第二步運(yùn)算結(jié)果的最后 8字節(jié)作為 MAC。雙倍長(zhǎng)計(jì)算 MACint gen_icard_mac_16(u8 *in, u8 out8, u8 ivec8, u8 k16,int len)gen_icard_mac_16 的計(jì)算過(guò)程如下:1) 檢查MAC數(shù)據(jù)是否為8
29、的整數(shù)倍。如果不是,則添加 0x80, 如果還不夠8的倍數(shù),則添加0x00,并直到8的倍數(shù)為止; 如果是8的倍數(shù),則添加一個(gè) 0x80,七個(gè)0x00 ;2) 用密鑰前8字節(jié)對(duì)第一步的數(shù)據(jù)進(jìn)行Cbc加密;3) 用密鑰的后8字節(jié)對(duì)第二步的結(jié)果的后8字節(jié)進(jìn)行ecb解密;4) 用密鑰的前8字節(jié)對(duì)第三步的結(jié)果進(jìn)行ecb加密,并將結(jié)果作為 MAC。TAC 算法函數(shù)原型:int gen_icard_tac(u8 *in, u8 out8, u8 ivec8, u8 k16, intlen)int gen_icard_tac_NP(u8 *in, u8 out8, u8 ivec8, u8 k16, int len)gen_icard_tac 的計(jì)算過(guò)程如下:1)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 圖書管理員用戶服務(wù)質(zhì)量評(píng)估試題及答案
- 鹽城一模試題及答案英語(yǔ)
- 擴(kuò)展視野2025年稅務(wù)師考試前的準(zhǔn)備工作試題及答案
- 中考地理試題題型及答案
- 健康管理師考試風(fēng)險(xiǎn)控制試題及答案
- 健康教育的學(xué)科基礎(chǔ)試題及答案
- 徐州英語(yǔ)面試題及答案
- 明確稅務(wù)師考試的知識(shí)更新與應(yīng)用方向試題及答案
- 2024-2025學(xué)年六年級(jí)人教版下學(xué)期數(shù)學(xué)期中考試卷(提升卷)(含解析)
- 2025年鄉(xiāng)村全科醫(yī)學(xué)考試考生面臨的挑戰(zhàn)試題及答案
- GB/T 25174-2010飼料添加劑4,7-二羥基異黃酮
- GB/T 17421.2-2000機(jī)床檢驗(yàn)通則第2部分:數(shù)控軸線的定位精度和重復(fù)定位精度的確定
- GB/T 17311-1998標(biāo)準(zhǔn)音量表
- GB/T 11982.2-2015聚氯乙烯卷材地板第2部分:同質(zhì)聚氯乙烯卷材地板
- 耳鼻咽喉15種臨床路徑(整理完整版)
- 110KV 線路保護(hù)調(diào)試報(bào)告
- Xie-AI-第2章-知識(shí)表示方法
- 侵權(quán)責(zé)任法數(shù)人侵權(quán)課件
- 個(gè)人所得稅申報(bào)實(shí)操講解課件
- 移動(dòng)設(shè)備小型設(shè)備施工方案
- 2023年六安城市建設(shè)投資有限公司招聘筆試題庫(kù)及答案解析
評(píng)論
0/150
提交評(píng)論