對(duì)無(wú)線IC卡傳輸數(shù)據(jù)實(shí)行3DES加密
在STC單片機(jī)內(nèi)部的EEPROM中需要存儲(chǔ)兩種密碼,一種是讀取M1卡時(shí)需要驗(yàn)證的物理密碼,另一種是3DES算法用到的加密、解密的邏輯密碼,M1卡的物理密碼一般是12個(gè)字節(jié),3DES算法的邏輯密碼是16個(gè)字節(jié)。當(dāng)需要往M1卡中寫入數(shù)據(jù)時(shí),單片機(jī)把事先存儲(chǔ)在STC15單片機(jī)的EEPROM中16字節(jié)邏輯密鑰讀取到password[16]數(shù)組中,然后把要寫入M1卡中的數(shù)據(jù)按照8個(gè)字節(jié)一組進(jìn)行3DES算法加密,當(dāng)達(dá)到16個(gè)字節(jié)后寫入用戶指定的扇區(qū)塊中,如果加密數(shù)據(jù)不夠8個(gè)字節(jié),按照約定進(jìn)行補(bǔ)零以滿足3DES算法要求。當(dāng)單片機(jī)控制射頻芯片驗(yàn)證物理密碼并讀取到M1卡中的數(shù)據(jù)后,按照8個(gè)字節(jié)一組進(jìn)行3DES算法解密,并把解密后的明文數(shù)據(jù)返回給用戶。如果不知道3DES算法的16位邏輯密鑰,即使非法讀取到了M1卡中的數(shù)據(jù)也無(wú)法得到其明文,從而達(dá)到了防止數(shù)據(jù)被破解的目的。
本文引用地址:http://m.butianyuan.cn/article/279222.htm如果得到了卡中的密文,盡管無(wú)法得到其明文,但是攻擊者可以對(duì)卡進(jìn)行完全復(fù)制,包括復(fù)制第0扇區(qū)第0塊的卡序列號(hào)等信息(如UID卡即可修改其0扇區(qū)第0塊的內(nèi)容),為了防止攻擊者對(duì)M1卡中的數(shù)據(jù)進(jìn)行復(fù)制到另一張M1卡中,需要在STC單片機(jī)的EEPROM或者外部存儲(chǔ)器中建立一個(gè)存儲(chǔ)卡序列號(hào)和時(shí)間戳的系統(tǒng)表,卡序列號(hào)和時(shí)間戳各占4個(gè)字節(jié)。每當(dāng)單片機(jī)系統(tǒng)對(duì)卡進(jìn)行一次操作之后,就要在卡中和系統(tǒng)表中都寫入新的時(shí)間戳,當(dāng)兩張完全一樣的復(fù)制卡先后被系統(tǒng)讀取到之后,由于系統(tǒng)在先被讀取的復(fù)制卡中寫入了新的時(shí)間戳信息,從而把另一張復(fù)制卡標(biāo)識(shí)為非法卡,也就是說(shuō),無(wú)論攻擊者復(fù)制了多少?gòu)埻耆嗤目?,只有最先被系統(tǒng)讀取到那一張能正常使用,從而,防止了卡被復(fù)制。時(shí)間戳是STC單片機(jī)從DS1302中讀取出來(lái)的年、月、日、時(shí)、分、秒之后經(jīng)過(guò)相應(yīng)的移位操作而合成的一個(gè)四字節(jié)無(wú)符號(hào)變量。時(shí)間戳的合成方法如圖4所示。系統(tǒng)處理總體流程圖如圖5所示。
根據(jù)圖4所示,時(shí)間戳的合成算法可以用以下語(yǔ)句來(lái)實(shí)現(xiàn):
ts = ((INT32U)yr << 26) | ((INT32U)month << 22) | ((INT32U)day << 17);
ts |= ((INT32U)hr << 12) | ((INT32U)min << 6) | (INT32U)sec;
時(shí)間和日期也可以由單片機(jī)系統(tǒng)的定時(shí)器或者其他方法來(lái)實(shí)現(xiàn)。
3 系統(tǒng)測(cè)試
為了對(duì)STC單片機(jī)在3DES算法加密、解密數(shù)據(jù)的正確性和運(yùn)算能力進(jìn)一步分析,對(duì)STC單片機(jī)系統(tǒng)進(jìn)行了系統(tǒng)測(cè)試。在STC單片機(jī)RAM中建立一個(gè)容量為1K字節(jié)的數(shù)組test3des[1024],并給它賦初始值,調(diào)用TripleDes函數(shù)進(jìn)行加密,并通過(guò)串口發(fā)送到上位機(jī)顯示出來(lái);把加密后的數(shù)據(jù)重新賦值給數(shù)組test3des[1024],調(diào)用TripleDes函數(shù)進(jìn)行解密,并發(fā)串口顯示,實(shí)際測(cè)試證明3DES算法是正確的??紤]到STC單片機(jī)系統(tǒng)運(yùn)行速度較低,如果讓STC單片機(jī)對(duì)加密、解密速度進(jìn)行計(jì)算并處理,勢(shì)必會(huì)影響到結(jié)論的準(zhǔn)確性,為此,使用VC++編寫上位機(jī)軟件配合3DES算法處理速度測(cè)試。在STC單片機(jī)調(diào)用3DES算法加密、解密數(shù)據(jù)時(shí),通過(guò)單片機(jī)串口發(fā)送到上位機(jī)一個(gè)開(kāi)始命令,上位機(jī)軟件啟動(dòng)精密計(jì)時(shí),等STC單片機(jī)處理完數(shù)據(jù)時(shí)再給上位機(jī)軟件發(fā)送一個(gè)結(jié)束命令,上位機(jī)軟件停止計(jì)時(shí),通過(guò)單片機(jī)處理的數(shù)據(jù)字節(jié)數(shù)和計(jì)時(shí)時(shí)間可以計(jì)算出STC單片機(jī)調(diào)用3DES算法加密、解密數(shù)據(jù)的速度。STC單片機(jī)在不同晶振頻率下3DES算法加密、解密測(cè)試對(duì)照表如表1所示。平均加密或解密時(shí)間是經(jīng)過(guò)10次測(cè)試取其平均值。
從表1的數(shù)據(jù)可知:在STC單片機(jī)運(yùn)行在典型工作頻率22.1184MHz的情況下,3DES算法加密、解密的平均速度約為308.7bit/s,加密或解密M1卡一個(gè)塊數(shù)據(jù)(16個(gè)字節(jié))用時(shí)約為0.41s,完全達(dá)到了實(shí)際應(yīng)用的條件,而且,隨著所選用單片機(jī)或微處理器運(yùn)行速度的提高,所用時(shí)間會(huì)更少。
4 結(jié)論
通過(guò)分析3DES算法原理和防復(fù)制方法,在較低配置的STC單片機(jī)系統(tǒng)中實(shí)現(xiàn)了3DES加密算法,并進(jìn)行了實(shí)驗(yàn)測(cè)試,得到了實(shí)驗(yàn)測(cè)試結(jié)果,證明了3DES算法在非接觸式M1卡中應(yīng)用的可行性,這對(duì)保障RFID卡信息安全性和保密性具有重要的作用,在實(shí)際應(yīng)用中也具有一定的參考意義。
參考文獻(xiàn):
[1]錢曉華.基于RFID系統(tǒng)的信息安全技術(shù)研究[D].江蘇:南京郵電大學(xué),2013,02
[2]單承贛等.射頻識(shí)別(RFID)原理與應(yīng)用[M].北京:電子工業(yè)出版社,2014,07
[3]宏晶科技公司.STC15L2K32S2系列單片機(jī)器件手冊(cè)[P].2013,09
[4]上海復(fù)旦微電子股份有限公司.FM1702SL芯片使用手冊(cè)[P].2009
[5]丁顯信.DES算法的硬件實(shí)現(xiàn)方法研究及FPGA實(shí)現(xiàn)[D].青島:青島科技大學(xué),2013
[6]王素琴,林平分.非接觸式智能卡中DES/3DES協(xié)處理器的設(shè)計(jì)[J].科技信息,2013(05)
[7]趙澤茂等.信息安全技術(shù)[M].西安:西安電子科技大學(xué)出版社,2009,02
[8]Philips Semiconductors.Standard Card IC MF1 IC S50 Functional Specification[P].2008
c語(yǔ)言相關(guān)文章:c語(yǔ)言教程
加速度計(jì)相關(guān)文章:加速度計(jì)原理 晶振相關(guān)文章:晶振原理
評(píng)論