專利名稱:一種cpu卡數(shù)據(jù)加密和解密方法
技術領域:
本發(fā)明涉及CPU卡安全技術,尤其涉及一種建設事業(yè)CPU卡及 銀行業(yè)CPU卡的數(shù)據(jù)加密和解密方法。
背景技術:
截止目前,我國共有接近180余個城市應用了不同規(guī)模的交通 事業(yè)IC卡系統(tǒng),發(fā)卡量已超過1.5億張,約有95%的城市在應用 IC卡系統(tǒng)時選擇使用非接觸式邏輯加密卡,相當于約有1.4億張邏 輯加密卡在我國城市交通事業(yè)IC卡系統(tǒng)中應用。其應用范圍已覆 蓋公交、地鐵、出租、輪渡、及小額消費等領域。然而當前龐大的 交通領域早期應用的主流用卡MIFARE S50卡片卻隨著時間的推 移,凸現(xiàn)了許多技術上的不足,最大的問題莫過于安全性能低下, 導致安全性能不足的一個主要的原因就是當前主流的公交卡卡片 與讀卡器,讀卡器與系統(tǒng)之間傳輸數(shù)據(jù)采取明文,容易被犯罪分子 竊聽,篡改,分析甚至破譯,然后加以復制。給我國城市交通事業(yè) IC卡系統(tǒng)安全性造成了極大隱患??ㄆ畔⒁坏┰獾酱笠?guī)模復制, IC卡系統(tǒng)將會面臨巨大的威脅。發(fā)明內容本發(fā)明的目的在于克服上述現(xiàn)有技術的不足之處而提供一種 安全性能高的CPU卡數(shù)據(jù)加密和解密方法。本發(fā)明的目的可以通過以下技術方案實現(xiàn)一種CPU卡數(shù)據(jù)加密和解密方法,包括一個密鑰KEY,其特征在于, 加密過程包括以下步驟(1)分割數(shù)據(jù)塊;(2)通過密鑰KEY進行DES 加密;(3)通過密鑰KEY生成MAC碼;(4)附加MAC碼;解密過程包括以下步驟(a)剔除MAC碼;(b)通過密鑰KEY計算MAC值;(c) 將MAC值與收到的MAC碼比較,若相同,轉(e); (d)MAC校驗失敗, 終止;(e)通過密鑰KEY進行DES解密。一種CPU卡數(shù)據(jù)加密和解密方法,其特征在于,第(1)步所述的分 割數(shù)據(jù)塊,是指對傳輸?shù)臄?shù)據(jù)將該數(shù)據(jù)塊分成8字節(jié)為單位的數(shù)據(jù)塊,表 示為BLOCKl、 BLOCK2、 BLOCK3、 BLOCK4......;最后的數(shù)據(jù)塊有可能是1~8個字節(jié),如果最后的數(shù)據(jù)塊的長度是8字節(jié)的話,則在該數(shù)據(jù)塊 之后再加一個完整的8字節(jié)數(shù)據(jù)塊'80 00 00 00 00 00 00 00',如果最后 的數(shù)據(jù)塊的長度不足8字節(jié),則在其后加入16進制數(shù)'80',如果達到8 字節(jié)長度,則轉第(2)步,否則在其后加入16進制數(shù)(OO'直到長度達 到8字節(jié),再轉第(2)步。一種CPU卡數(shù)據(jù)加密和解密方法,其特征在于,第(3)步所述的生 成MAC碼,進一步包括以下步驟(3-1)將一個8字節(jié)長的初始值設定 為16進制數(shù)'00 00 00 00 00 00 00 00, ; (3-2)將所有輸入數(shù)據(jù)按指定順 序連接成一個數(shù)據(jù)塊;(3-3)將該數(shù)據(jù)塊分成8字節(jié)為單位的數(shù)據(jù)塊,表 示為BLOCKl、 BLOCK2、 BLOCK3、 BLOCK4......;最后的數(shù)據(jù)塊有可能是1~8個字節(jié);如果最后的數(shù)據(jù)塊的長度是8字節(jié)的話,則在該數(shù)據(jù)塊 之后再加一個完整的8字節(jié)數(shù)據(jù)塊'80 00 00 00 00 00 00 00,,轉到第(3-4) 步;如果最后的數(shù)據(jù)塊的長度不足8字節(jié),則在其后加入16進制數(shù)'80', 如果達到8字節(jié)長度,則轉到第(3-4)步;否則在其后加入16進制數(shù)'00' 直到長度達到8字節(jié),轉到第(3-4)步;(3-4)數(shù)據(jù)塊BLOCKl與初 始值'00 00 00 00 00 00 00 00,異或后得到的數(shù)據(jù)被KEY加密得到密文, 再用該密文作為初始值與BLOCK2異或后加密.…如此類推;(3-5)最終 計算結果取高4字節(jié)作為MAC碼。一種CPU卡數(shù)據(jù)加密和解密方法,其特征在于,所述CPU卡是非接 觸CPU卡。本發(fā)明涉及的CPU卡數(shù)據(jù)加密和解密方法,采用DES加密算法,5進行密文傳輸,同時,采用MAC校驗數(shù)據(jù)的完整性,必須撐握生成MCA 碼的密鑰才可以傳輸合法的數(shù)據(jù),防止第三方對數(shù)據(jù)的篡改,保證數(shù)據(jù)的 完整性與真實性。與現(xiàn)有技術相比,本發(fā)明的CPU卡數(shù)據(jù)加密和解密方 法更具有安全性。
圖1是本發(fā)明第一個實施例加密流程圖。 圖2是本發(fā)明第一個實施例解密流程圖。
具體實施方式
下面將結合附圖對本發(fā)明作進一步詳述。本發(fā)明的第一個實施 例是一種非接觸CPU卡數(shù)據(jù)加密和解密方法,硬件可以采用上海復旦微 電子股份有限公司出品的FM1208芯片。DES (DataEncryption Standard) 加密和解密,采用56位密鑰加密64位數(shù)據(jù)的方法。參考圖l、圖2,本 發(fā)明第一個實施例的CPU卡數(shù)據(jù)加密和解密方法,包括一個密鑰KEY, 其特征在于,加密過程包括以下步驟(1)分割數(shù)據(jù)塊;(2)通過密鑰 KEY進行DES加密;(3)通過密鑰KEY生成MAC碼;(4)附加MAC 碼;解密過程包括以下步驟(a)剔除MAC碼;(b)通過密鑰KEY計 算MAC值;(c)將MAC值與收到的MAC碼比較,若相同,轉(e); (d) MAC校驗失敗,終止;(e)通過密鑰KEY進行DES解密。本實施例中, 第(1)步所述的分割數(shù)據(jù)塊,是指對傳輸?shù)臄?shù)據(jù)將該數(shù)據(jù)塊分成8字節(jié) 為單位的數(shù)據(jù)塊,表示為BLOCKl、 BLOCK2、 BLOCK3、 BLOCK4......;最后的數(shù)據(jù)塊有可能是1 8個字節(jié),如果最后的數(shù)據(jù)塊的長度是8字節(jié)的 話,則在該數(shù)據(jù)塊之后再加一個完整的8字節(jié)數(shù)據(jù)塊'80 00 00 00 00 00 00 00',如果最后的數(shù)據(jù)塊的長度不足8字節(jié),則在其后加入16進制數(shù)'80', 如果達到8字節(jié)長度,則轉第(2)步,否則在其后加入16進制數(shù)'00' 直到長度達到8字節(jié),再轉第(2)步。本實施例中,第(3)步所述的生 成MAC碼,進一步包括以下步驟(3-1)將一個8字節(jié)長的初始值設定 為16進制數(shù)'00 00 00 00 00 00 00 00, ; (3-2)將所有輸入數(shù)據(jù)按指定順 序連接成一個數(shù)據(jù)塊;(3-3)將該數(shù)據(jù)塊分成8字節(jié)為單位的數(shù)據(jù)塊,表6示為BLOCKl、 BLOCK2、 BLOCK3、 BLOCK4......;最后的數(shù)據(jù)塊有可能是1~8個字節(jié);如果最后的數(shù)據(jù)塊的長度是8字節(jié)的話,則在該數(shù)據(jù)塊 之后再加一個完整的8字節(jié)數(shù)據(jù)塊'80 00 00 00 00 00 00 00,,轉到第(3-4) 步;如果最后的數(shù)據(jù)塊的長度不足8字節(jié),則在其后加入16進制數(shù)<80', 如果達到8字節(jié)長度,則轉到第(3-4)步;否則在其后加入16進制數(shù)'00' 直到長度達到8字節(jié),轉到第(3-4)步;(3-4)數(shù)據(jù)塊BLOCKl與初始 值'00 00 00 00 00 00 00 00'異或后得到的數(shù)據(jù)被KEY加密得到密文, 再用該密文作為初始值與BLOCK2異或后加密….如此類推;(3-5)最終 計算結果取高4字節(jié)作為MAC碼。本實施例的CPU卡數(shù)據(jù)加密和解密 方法,采用DES加密算法,進行密文傳輸,同時,采用MAC校驗數(shù)據(jù) 的完整性,必須撐握生成MCA碼的密鑰才可以傳輸合法的數(shù)據(jù),防止第 三方對數(shù)據(jù)的篡改,保證數(shù)據(jù)的完整性與真實性。本發(fā)明的CPU卡數(shù)據(jù) 加密和解密方法更具有安全性。
權利要求
1、一種CPU卡數(shù)據(jù)加密和解密方法,包括一個密鑰KEY,其特征在于,加密過程包括以下步驟(1)分割數(shù)據(jù)塊;(2)通過密鑰KEY進行DES加密;(3)通過密鑰KEY生成MAC碼;(4)附加MAC碼;解密過程包括以下步驟(a)剔除MAC碼;(b)通過密鑰KEY計算MAC值;(c)將MAC值與收到的MAC碼比較,若相同,轉(e);(d)MAC校驗失敗,終止;(e)通過密鑰KEY進行DES解密。
2、 根據(jù)權利要求1所述的一種CPU卡數(shù)據(jù)加密和解密方法,其特征 在于,第(1)步所述的分割數(shù)據(jù)塊,是指對傳輸?shù)臄?shù)據(jù)將該數(shù)據(jù)塊分成8 字節(jié)為單位的數(shù)據(jù)塊,表示為BLOCK1 、 BLOCK2 、 BLOCK3 、 BLOCK4......;最后的數(shù)據(jù)塊有可能是1 8個字節(jié),如果最后的數(shù)據(jù)塊的長度是8字節(jié)的話,則在該數(shù)據(jù)塊之后再加一個完整的8字節(jié)數(shù)據(jù)塊'80 00 00 00 00 00 00 00',如果最后的數(shù)據(jù)塊的長度不足8字節(jié),則在其后加 入16進制數(shù)'80',如果達到8字節(jié)長度,則轉第(2)步,否則在其后 加入16進制數(shù)<00'直到長度達到8字節(jié),再轉第(2)步。
3、 根據(jù)權利要求1所述的一種CPU卡數(shù)據(jù)加密和解密方法,其特征 在于,第(3)步所述的生成MAC碼,進一步包括以下步驟-(3-1)將一個8字節(jié)長的初始值設定為16進制數(shù)'00 00 00 00 00 00 00`00,;(3-2)將所有輸入數(shù)據(jù)按指定順序連接成一個數(shù)據(jù)塊;(3-3)將該數(shù)據(jù)塊分成8字節(jié)為單位的數(shù)據(jù)塊,表示為BLOCKl、 BLOCK2、 BLOCK3、 BLOCK4......;最后的數(shù)據(jù)塊有可能是1 8個字節(jié);如果最后的數(shù)據(jù)塊的長度是8字節(jié)的話,則在該數(shù)據(jù)塊之后再加一個完整 的8字節(jié)數(shù)據(jù)塊'80 00 00 00 00 00 00 00,,轉到第(3-4)步;如果最后的 數(shù)據(jù)塊的長度不足8字節(jié),則在其后加入16進制數(shù)'80',如果達到8字節(jié) 長度,則轉到第(3-4)步;否則在其后加入16進制數(shù)<00'直到長度達 到8字節(jié),轉到第(3-4)步;(3-4)數(shù)據(jù)塊BLOCKl與初始值'00 00 00 00 00 00 00 00,異或后得 到的數(shù)據(jù)被KEY加密得到密文,再用該密文作為初始值與BLOCK2異或后 加密....如此類推;(3-5)最終計算結果取高4字節(jié)作為MAC碼。
4、根據(jù)權利要求1所述的一種CPU卡數(shù)據(jù)加密和解密方法,其特征 在于,所述CPU卡是非接觸CPU卡。
全文摘要
本發(fā)明涉及CPU卡安全技術,尤其涉及一種建設事業(yè)CPU卡及銀行業(yè)CPU卡的數(shù)據(jù)加密和解密方法,該方法包括一個密鑰KEY,其特征在于,加密過程包括以下步驟(1)分割數(shù)據(jù)塊;(2)通過密鑰KEY進行DES加密;(3)通過密鑰KEY生成MAC碼;(4)附加MAC碼;解密過程包括以下步驟(a)剔除MAC碼;(b)通過密鑰KEY計算MAC值;(c)將MAC值與收到的MAC碼比較,若相同,轉(e);(d)MAC校驗失敗,終止;(e)通過密鑰KEY進行DES解密。本發(fā)明提供一種安全性能高的CPU卡數(shù)據(jù)加密和解密方法。
文檔編號G07F7/10GK101577022SQ20091010574
公開日2009年11月11日 申請日期2009年3月13日 優(yōu)先權日2009年3月13日
發(fā)明者李能均, 楊敬源, 梁建軍 申請人:深圳德誠信用咭制造有限公司