一種適用于RFID讀寫器的加密算法及其實現
MCU除了操作讀卡芯片進行常規的智能卡操作,也實現了系統所需的加密算法的嵌入,讀取或寫人數據的加解密運算都通過MCU進行。
MF RC500對Mifare 1卡的操作過程依照ISO14443的協議規定,按先后的順序為尋卡、防沖突、選擇、密鑰校驗和之后的讀寫和增減值操作。MF RC500對Mifare 1卡的操作都是通過寫入Transceive命令至Regcommand寄存器,再將操作Mifare 1卡的命令以數據的形式存放于Regfifodata寄存器中,設置完收發時鐘的長度以后,就等待智能卡對讀寫命令的反應。在足夠長的時間段之內,Mifare 1卡傳輸的數據就會在Regfifodata里面出現,此時,先讀取Regfifolength以確定數據的長度,根據長度寫循環程序獲取智能卡返回的信息。圖6給出了系統上位機的界面。通過上位機,在正常操作智能卡的基礎上,進行動態更新密碼的操作,以及隱藏在讀寫操作之下的加解密過程。
系統進行加密的試驗如下:
1)控制密碼的得到:假設系統的公鑰Key_com為{0x00112233,0x44556677,0x8899AABB,0xCCDDEEFF),對于智能卡1,SNR為FDC71188,根據系統的規定,扇區X的密碼為KeyA與BTEA(Key_tom,2,SNR||SNR4)相關,結果為{oxD3A7BA0l,0x525F18FC}。取結果的前6個字節作為扇區X的控制密鑰,即KeyA為D3A7BA0152。由此密碼得到了扇區X的Data1,假設Datal為{0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77}。由此Data1和存儲于MCU中的Key1通過XXTEA加密過程BTEA(key1,2,data1),可以得到KeyB。假設Key1為{0x01234567,0x89ABCDEF,0x01234567,0x89ABCDEF},通過加密,得到了{0x4CEFBEC2,0xCSCBACE0},取前6 byte,則KeyB為4CEFBEC2C8。使用該密鑰獲得對扇區Y的控制權,就可以對價值數據進行讀寫操作,這樣也避免了未經授權的讀卡器想要非法對智能卡進行操作的情況。
2)敏感數據的加解密:在Mifare 1智能卡中,數據是以塊為單位來存儲的,一塊16 byte,可以由XXTEA直接運算得出加密結果。設需要寫入的數據為{0x01,0x12,0x23,0x34,0x45,0x56,0x67,0x78,0x89,0x9A,0xAB,0xBC,0xCD,0xDE,0xEF,0xF0},而密鑰為Key3,設為{0xFEDCBA98,0x76543210,0xFEDCBA98,0x76543210},通過該密鑰進行XXTEA加密,得到加密后的數據為{0xA2,0xC6,0x6C,0x1A,0x3E,0x98,0x5E,0x48,0x7D,0xDA,0x68,0xC3,0x0C,0x23,0x1D,0x24}。將該數據寫入智能卡中,讀取時,對它用Key3作為密鑰進行解密,得到所需數據。利用此種方法,使得明文在開放的傳播空間內得到保護,保護了信息的安全。
3)密碼的動態變換:在進行完讀寫操作以后,為了保障智能卡的安全,要立刻進行密碼的變換。Data1經過與key2的XXTEA運算后,變換為Data1_new。由此Datal_new推算出KeyB_new。假設Key2為{0xFEDCBA98,0x76543210,0x01234567,0x89ABCDEF},則Data1_new為{0x23FF28AA,0xA7684804},KeyB_new為3C7099D07F。此密碼在智能卡中必須同步更新,防止出現讀卡器未能取得智能卡扇區Y的讀寫控制權的問題。
通過對實驗結果的分析可以看出,XXTEA所占用的代碼空間為2 968 byte,占用內存空間124 byte,在24 MHz外部晶振條件下,加密速率為(3.26±0.1)Kbps(p=0.01),解密速率為(3.30±0.1)Kbps(p=0.01),抗攻擊能力強,暫時沒有一種可行的方法對該算法進行有效攻擊,而且防沖突性能好,微小的數據改變將導致結果的重大變化。控制密鑰動態變換的根密鑰和智能卡數據的加密密鑰不經過明文傳輸,杜絕了RFID數據通信中出現的非法讀取和監聽等威脅。
4 結論
在XXTEA加密算法基礎上的新RFID系統安全方案,具有安全性高、低成本和兼容性高的特點。實驗結果表明,新方案能有效地提高RFID數據傳輸的安全性,可將RFID的應用范圍推廣到信息敏感的領域,包括金融交易、食品安全和公共安全等。
評論