本發(fā)明涉及rfid智能卡,尤其涉及一種防復(fù)制的rfid智能卡初始化和動(dòng)態(tài)加密方法及系統(tǒng)。
背景技術(shù):
1、目前,基于mifare?1k的rfid智能卡因其較低的成本和基本的安全性,已廣泛應(yīng)用于各種門禁控制系統(tǒng)、公共交通支付系統(tǒng)、校園卡等應(yīng)用場(chǎng)景,mifare?1k卡片的存儲(chǔ)空間被劃分為16個(gè)扇區(qū),每個(gè)扇區(qū)有4個(gè)塊,每個(gè)塊的長(zhǎng)度為16個(gè)字節(jié),其中每個(gè)扇區(qū)的最后一個(gè)塊用于存儲(chǔ)該扇區(qū)的密鑰,并通過該密鑰控制外部對(duì)扇區(qū)的讀寫權(quán)限,傳統(tǒng)的應(yīng)用形式是將某個(gè)或多個(gè)扇區(qū)分配給特定的應(yīng)用,例如門禁控制系統(tǒng)使用2號(hào)扇區(qū)來存儲(chǔ)本系統(tǒng)的應(yīng)用數(shù)據(jù),并且通過設(shè)置特定的密鑰來確保數(shù)據(jù)的安全訪問。
2、然而,隨著mifare?1k的加密算法被破解,門禁系統(tǒng)等應(yīng)用的密鑰可以通過簡(jiǎn)單且便宜的工具被攻擊者輕易獲取,從而使得系統(tǒng)的安全性大大降低,攻擊者可以復(fù)制rfid智能卡,進(jìn)行非法刷卡操作,從而獲得不正當(dāng)?shù)脑L問權(quán)限,造成潛在的安全隱患。這一問題使得mifare?1k卡片在一些對(duì)安全性要求較高的應(yīng)用場(chǎng)景中存在較大的風(fēng)險(xiǎn),尤其是當(dāng)卡片密鑰被破解后,整個(gè)系統(tǒng)的安全性幾乎完全崩潰。
3、為了提高rfid智能卡的安全性,現(xiàn)有解決方案主要通過升級(jí)到安全級(jí)別更高的芯片,如cpu卡來實(shí)現(xiàn),然而,盡管這些更高安全級(jí)別的芯片能夠有效抵抗破解和復(fù)制攻擊,但其成本較高,導(dǎo)致整個(gè)應(yīng)用系統(tǒng)的部署和維護(hù)費(fèi)用大幅增加;這使得許多應(yīng)用場(chǎng)景,如門禁系統(tǒng)、停車場(chǎng)管理等,面臨著成本和安全性之間的取舍難題。
4、現(xiàn)有中國專利cn106529651a公開了一種采用雙重加密算法的射頻卡片,所述射頻卡片采用雙重加密,第一重加密方式:采用加密密鑰1,經(jīng)加密算法1對(duì)卡片id號(hào)加密得出卡片讀寫口令密碼,所述口令密碼為32位,所述32位口令密碼寫入存儲(chǔ)塊block7中;第二重加密方式:采用不同于第一重加密密鑰的加密密鑰2,經(jīng)加密算法2得到數(shù)據(jù)密碼,用戶數(shù)據(jù)經(jīng)數(shù)據(jù)密碼加密為交換數(shù)據(jù)后寫入卡片數(shù)據(jù)存儲(chǔ)塊block1-block6。上述專利雖然通過射頻卡片的id號(hào)加密得出讀寫口令密碼,并且每張卡片的口令密碼是基于唯一id號(hào)生成的,因此每張卡片的口令不同,但卡片id號(hào)的加密本質(zhì)上是靜態(tài)的,也就是說,id號(hào)一旦被破解或泄露,攻擊者就能夠根據(jù)該卡片的id推算出相應(yīng)的口令密碼;如果攻擊者獲得某一張卡的id號(hào)和加密算法1的相關(guān)信息,如密鑰1和加密算法,就能夠使用相同的算法進(jìn)行破解,從而在批量復(fù)制時(shí)避免了密碼重置或額外的加密步驟。
5、為此,如何在降低部署成本的同時(shí),有效避免密鑰被破解后出現(xiàn)批量復(fù)制的情況是亟待解決的問題。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本發(fā)明提供了一種防復(fù)制的rfid智能卡初始化和動(dòng)態(tài)加密方法及系統(tǒng),用以解決現(xiàn)有技術(shù)中無法在降低部署成本的同時(shí),有效避免密鑰被破解后出現(xiàn)批量復(fù)制的情況的問題。
2、本發(fā)明采用的技術(shù)方案是:
3、第一方面,本發(fā)明提供了一種防復(fù)制的rfid智能卡初始化方法,所述rfid智能卡包括若干個(gè)扇區(qū),所述扇區(qū)用于存取加密因子或卡號(hào)數(shù)據(jù),各所述扇區(qū)包括密鑰塊,所述密鑰塊用于存取訪問本扇區(qū)的密鑰,所述加密因子為加密生成的字符串,用于計(jì)算卡號(hào)數(shù)據(jù)存取的扇區(qū)地址,所述方法包括:
4、獲取預(yù)設(shè)的初始加密因子;
5、將所述初始加密因子寫入預(yù)設(shè)扇區(qū)中,并獲取rfid智能卡的唯一標(biāo)識(shí)符;
6、根據(jù)第一加密函數(shù),對(duì)所述唯一標(biāo)識(shí)符和預(yù)設(shè)扇區(qū)中的所述初始加密因子進(jìn)行加密處理,確定卡號(hào)數(shù)據(jù)存放的初始扇區(qū)地址和初始密鑰。
7、優(yōu)選地,所述根據(jù)第一加密函數(shù),對(duì)所述唯一標(biāo)識(shí)符和預(yù)設(shè)扇區(qū)中的所述初始加密因子進(jìn)行加密處理,確定卡號(hào)數(shù)據(jù)存放的初始扇區(qū)地址和初始密鑰包括:
8、對(duì)所述唯一標(biāo)識(shí)符和所述初始加密因子進(jìn)行異或運(yùn)算,確定第一字符串;
9、對(duì)唯一標(biāo)識(shí)符中第一預(yù)設(shè)位置的字符與初始加密因子中第二預(yù)設(shè)位置的字符進(jìn)行異或運(yùn)算,確定第二字符串;
10、對(duì)所述第一字符串和所述第二字符串進(jìn)行組合,確定所述初始密鑰;
11、對(duì)唯一標(biāo)識(shí)符中第三預(yù)設(shè)位置的字符與初始加密因子中第三預(yù)設(shè)位置的字符進(jìn)行異或運(yùn)算,確定第三字符串;
12、根據(jù)所述第三字符串,確定所述初始扇區(qū)地址。
13、第二方面,本發(fā)明提供了一種防復(fù)制的rfid智能卡動(dòng)態(tài)加密方法,所述rfid智能卡通過如上述的rfid智能卡的初始化方法進(jìn)行初始化,所述動(dòng)態(tài)加密方法包括:
14、讀取所述預(yù)設(shè)扇區(qū)中的實(shí)時(shí)加密因子,將實(shí)時(shí)加密因子和所述初始加密因子進(jìn)行比對(duì);
15、若初始加密因子與實(shí)時(shí)加密因子相同,則為首次刷卡,獲取rfid智能卡的唯一標(biāo)識(shí)符;
16、根據(jù)所述第一加密函數(shù),對(duì)所述實(shí)時(shí)加密因子和所述唯一標(biāo)識(shí)符進(jìn)行加密處理,獲取第一密鑰和卡號(hào)數(shù)據(jù)存取的第一扇區(qū)地址;
17、根據(jù)所述第一密鑰和所述第一扇區(qū)地址,對(duì)卡號(hào)數(shù)據(jù)進(jìn)行讀??;
18、當(dāng)成功讀取到所述卡號(hào)數(shù)據(jù)時(shí),根據(jù)第二加密函數(shù),對(duì)所述第一扇區(qū)地址和所述唯一標(biāo)識(shí)符進(jìn)行加密處理,確定新的目標(biāo)加密因子;
19、將目標(biāo)加密因子寫入實(shí)時(shí)加密因子所在的扇區(qū)中,根據(jù)所述第一加密函數(shù),對(duì)所述目標(biāo)加密因子和所述唯一標(biāo)識(shí)符進(jìn)行加密處理,確定第二密鑰和卡號(hào)數(shù)據(jù)存放的第二扇區(qū)地址;
20、刪除第一扇區(qū)地址的卡號(hào)數(shù)據(jù),根據(jù)所述第二扇區(qū)地址,將卡號(hào)數(shù)據(jù)寫入第二扇區(qū)地址對(duì)應(yīng)的新扇區(qū)。
21、優(yōu)選地,在所述讀取實(shí)時(shí)加密因子,將實(shí)時(shí)加密因子和所述初始加密因子進(jìn)行比對(duì)之后還包括:
22、若初始加密因子與實(shí)時(shí)加密因子不相同,則將實(shí)時(shí)加密因子與歷史加密因子進(jìn)行比對(duì),將當(dāng)前rfid智能卡的唯一標(biāo)識(shí)符與歷史標(biāo)識(shí)符進(jìn)行比對(duì);
23、當(dāng)實(shí)時(shí)加密因子與歷史加密因子相同且唯一標(biāo)識(shí)符與歷史標(biāo)識(shí)符相同時(shí),根據(jù)第一加密函數(shù),對(duì)所述實(shí)時(shí)加密因子和所述唯一標(biāo)識(shí)符進(jìn)行加密處理,獲取第一密鑰和卡號(hào)數(shù)據(jù)存放的第一扇區(qū)地址;
24、根據(jù)所述第一密鑰和所述第一扇區(qū)地址對(duì)卡號(hào)數(shù)據(jù)進(jìn)行讀??;
25、當(dāng)成功讀取到所述卡號(hào)數(shù)據(jù)時(shí),根據(jù)第二加密函數(shù),對(duì)所述第一扇區(qū)地址和所述唯一標(biāo)識(shí)符進(jìn)行加密處理,確定新的目標(biāo)加密因子;
26、將原歷史加密因子替換為所述目標(biāo)加密因子,根據(jù)所述第一加密函數(shù),對(duì)所述目標(biāo)加密因子和所述唯一標(biāo)識(shí)符進(jìn)行加密處理,確定第二密鑰和卡號(hào)數(shù)據(jù)存放的第二扇區(qū)地址;
27、刪除第一扇區(qū)地址的卡號(hào)數(shù)據(jù),根據(jù)所述第二扇區(qū)地址,將卡號(hào)數(shù)據(jù)寫入第二扇區(qū)地址對(duì)應(yīng)的新扇區(qū)。
28、優(yōu)選地,所述當(dāng)成功讀取到所述卡號(hào)數(shù)據(jù)時(shí),根據(jù)第二加密函數(shù),對(duì)所述第一扇區(qū)地址和所述唯一標(biāo)識(shí)符進(jìn)行加密處理,確定新的目標(biāo)加密因子包括:
29、對(duì)所述第一扇區(qū)地址和所述唯一標(biāo)識(shí)符進(jìn)行乘法計(jì)算,確定第四字符串;
30、對(duì)第四字符串中第四預(yù)設(shè)位置的字符進(jìn)行提取,將提取結(jié)果作為所述目標(biāo)加密因子。
31、優(yōu)選地,在對(duì)所述rfid智能卡進(jìn)行完全復(fù)制之后,包括:
32、讀取復(fù)制卡上的復(fù)制數(shù)據(jù),其中所述復(fù)制數(shù)據(jù)包括第一復(fù)制加密因子和復(fù)制標(biāo)識(shí)符;
33、將所述復(fù)制數(shù)據(jù)與讀卡器中的歷史數(shù)據(jù)進(jìn)行比對(duì),若所述復(fù)制數(shù)據(jù)和所述歷史數(shù)據(jù)一致,則復(fù)制卡首刷通過驗(yàn)證,其中,所述歷史數(shù)據(jù)包括所述目標(biāo)加密因子和所述唯一標(biāo)識(shí)符;
34、根據(jù)第一加密函數(shù),對(duì)所述第一復(fù)制加密因子和所述復(fù)制標(biāo)識(shí)符進(jìn)行加密處理,確定復(fù)制密鑰和卡號(hào)數(shù)據(jù)存取的復(fù)制扇區(qū)地址;
35、根據(jù)所述復(fù)制密鑰和所述復(fù)制扇區(qū)地址,對(duì)所述卡號(hào)數(shù)據(jù)進(jìn)行讀??;
36、當(dāng)成功讀取到所述卡號(hào)數(shù)據(jù)時(shí),根據(jù)第二加密函數(shù),對(duì)所述復(fù)制標(biāo)識(shí)符和所述復(fù)制扇區(qū)地址進(jìn)行加密處理,確定第二復(fù)制加密因子,將所述目標(biāo)加密因子替換為所述第二復(fù)制加密因子;
37、當(dāng)合法的原rfid智能卡進(jìn)行刷卡時(shí),將所述目標(biāo)加密因子和所述第二復(fù)制加密因子進(jìn)行比對(duì),確定原rfid智能卡為非法卡。
38、優(yōu)選地,在所述將原歷史加密因子替換為所述目標(biāo)加密因子,根據(jù)所述第一加密函數(shù),對(duì)所述目標(biāo)加密因子和所述唯一標(biāo)識(shí)符進(jìn)行加密處理,確定第二密鑰和卡號(hào)數(shù)據(jù)存放的第二扇區(qū)地址之后還包括:
39、根據(jù)所述第二扇區(qū)地址,獲取第二扇區(qū)地址對(duì)應(yīng)扇區(qū)的目標(biāo)讀取頻次,并獲取剩余各扇區(qū)分別對(duì)應(yīng)的讀取頻次和預(yù)設(shè)的頻次閾值;
40、根據(jù)所述目標(biāo)讀取頻次和剩余各扇區(qū)分別對(duì)應(yīng)的讀取頻次,計(jì)算各扇區(qū)讀取頻次的平均值;
41、若所述目標(biāo)讀取頻次小于所述平均值且目標(biāo)讀取頻次小于所述頻次閾值,則刪除第一扇區(qū)地址的卡號(hào)數(shù)據(jù),根據(jù)所述第二扇區(qū)地址,將卡號(hào)數(shù)據(jù)寫入第二扇區(qū)地址對(duì)應(yīng)的新扇區(qū);
42、若所述目標(biāo)讀取頻次大于等于所述平均值和/或目標(biāo)讀取頻次大于等于所述頻次閾值,則通過哈希函數(shù)和偽隨機(jī)算法,對(duì)所述第二扇區(qū)地址進(jìn)行更新處理,確定卡號(hào)數(shù)據(jù)存放的第三扇區(qū)地址;
43、刪除第一扇區(qū)地址的卡號(hào)數(shù)據(jù),根據(jù)所述第三扇區(qū)地址,將卡號(hào)數(shù)據(jù)寫入第三扇區(qū)地址對(duì)應(yīng)的新扇區(qū)。
44、優(yōu)選地,所述若所述目標(biāo)讀取頻次大于等于所述平均值或目標(biāo)讀取頻次大于等于所述頻次閾值,則通過哈希函數(shù)和偽隨機(jī)算法,對(duì)所述第二扇區(qū)地址進(jìn)行更新處理,確定卡號(hào)數(shù)據(jù)存放的第三扇區(qū)地址包括:
45、對(duì)所述唯一標(biāo)識(shí)符和所述目標(biāo)加密因子進(jìn)行組合,確定目標(biāo)字符串;
46、通過哈希函數(shù),對(duì)所述目標(biāo)字符串進(jìn)行處理,確定哈希值;
47、對(duì)所述哈希值進(jìn)行標(biāo)準(zhǔn)化處理,將所述哈希值轉(zhuǎn)化為哈希整數(shù)值;
48、根據(jù)所述哈希整數(shù)值和預(yù)設(shè)的扇區(qū)地址區(qū)間,將所述哈希整數(shù)值映射至扇區(qū)地址區(qū)間中,確定目標(biāo)扇區(qū)地址;
49、根據(jù)所述哈希整數(shù)值、所述第一扇區(qū)地址、所述扇區(qū)地址區(qū)間和所述目標(biāo)扇區(qū)地址,結(jié)合所述偽隨機(jī)數(shù)生成算法,確定所述第三扇區(qū)地址。
50、優(yōu)選地,所述根據(jù)所述哈希整數(shù)值、所述第一扇區(qū)地址、所述扇區(qū)地址區(qū)間和所述目標(biāo)扇區(qū)地址,結(jié)合所述偽隨機(jī)數(shù)生成算法,確定所述第三扇區(qū)地址包括:
51、根據(jù)所述哈希整數(shù)值,對(duì)預(yù)設(shè)的偽隨機(jī)數(shù)生成器進(jìn)行初始化處理;
52、將所述第一扇區(qū)地址輸入初始化處理后的偽隨機(jī)數(shù)生成器進(jìn)行,確定偽隨機(jī)數(shù);
53、根據(jù)所述扇區(qū)地址區(qū)間,對(duì)所述偽隨機(jī)數(shù)進(jìn)行取模處理,確定偏移量,其中,所述偏移量在所述扇區(qū)地址區(qū)間內(nèi);
54、對(duì)所述偏移量和所述目標(biāo)扇區(qū)地址進(jìn)行加法計(jì)算和取模處理,確定所述第三扇區(qū)地址。
55、第三方面,本發(fā)明實(shí)施例還提供了一種防復(fù)制的rfid智能卡初始化和動(dòng)態(tài)加密系統(tǒng),所述動(dòng)態(tài)加密系統(tǒng)包括rfid智能卡和讀卡器,所述rfid智能卡通過如上述的rfid智能卡初始化方法進(jìn)行初始化,所述讀卡器通過如上述的rfid智能卡動(dòng)態(tài)加密方法對(duì)所述rfid智能卡進(jìn)行動(dòng)態(tài)加密。
56、綜上所述,本發(fā)明的有益效果如下:
57、本發(fā)明提供的防復(fù)制的rfid智能卡初始化和動(dòng)態(tài)加密方法及系統(tǒng),所述方法包括:讀取所述預(yù)設(shè)扇區(qū)中的實(shí)時(shí)加密因子,將實(shí)時(shí)加密因子和所述初始加密因子進(jìn)行比對(duì);若初始加密因子與實(shí)時(shí)加密因子相同,則為首次刷卡,獲取rfid智能卡的唯一標(biāo)識(shí)符;根據(jù)所述第一加密函數(shù),對(duì)所述實(shí)時(shí)加密因子和所述唯一標(biāo)識(shí)符進(jìn)行加密處理,獲取第一密鑰和卡號(hào)數(shù)據(jù)存取的第一扇區(qū)地址;根據(jù)所述第一密鑰和所述第一扇區(qū)地址,對(duì)卡號(hào)數(shù)據(jù)進(jìn)行讀?。划?dāng)成功讀取到所述卡號(hào)數(shù)據(jù)時(shí),根據(jù)第二加密函數(shù),對(duì)所述第一扇區(qū)地址和所述唯一標(biāo)識(shí)符進(jìn)行加密處理,確定新的目標(biāo)加密因子;將目標(biāo)加密因子寫入實(shí)時(shí)加密因子所在的扇區(qū)中,根據(jù)所述第一加密函數(shù),對(duì)所述目標(biāo)加密因子和所述唯一標(biāo)識(shí)符進(jìn)行加密處理,確定第二密鑰和卡號(hào)數(shù)據(jù)存放的第二扇區(qū)地址;刪除第一扇區(qū)地址的卡號(hào)數(shù)據(jù),根據(jù)所述第二扇區(qū)地址,將卡號(hào)數(shù)據(jù)寫入第二扇區(qū)地址對(duì)應(yīng)的新扇區(qū)。一方面,本發(fā)明通過引入加密因子和動(dòng)態(tài)存取地址的機(jī)制,有效解決了rfid智能卡密鑰被破解后出現(xiàn)批量復(fù)制的問題,在本方案中,每張卡片的加密因子會(huì)在每次刷卡時(shí)發(fā)生變化,導(dǎo)致卡號(hào)存取的扇區(qū)地址和密鑰也隨之變化,即使復(fù)制卡通過復(fù)制合法卡片的uid和密鑰成功刷卡,下一次刷卡時(shí),由于加密因子發(fā)生了變化,卡號(hào)存取的扇區(qū)地址不再匹配,導(dǎo)致復(fù)制卡無法訪問存儲(chǔ)在新位置的合法數(shù)據(jù),從而使其失效;此外,由于每張卡片的密鑰和存儲(chǔ)地址是基于uid和加密因子的動(dòng)態(tài)計(jì)算結(jié)果,每張卡片的加密方式都不同,這意味著即便攻擊者破解了某張卡片的密鑰,仍無法批量復(fù)制其他卡片,因?yàn)槊繌埧ㄆ加歇?dú)立的存取地址和密鑰,通過這種動(dòng)態(tài)加密和地址變化的設(shè)計(jì),有效防止了復(fù)制卡的長(zhǎng)期使用,避免了批量復(fù)制帶來的安全隱患,從而顯著增強(qiáng)了安全性,確保了合法用戶的訪問權(quán)限不被非法卡片篡改或模仿;另一方面,由于本發(fā)明無需為每張卡片單獨(dú)配置物理密鑰,而是通過算法生成動(dòng)態(tài)密鑰和存儲(chǔ)地址,降低了硬件部署成本。