非接觸式IC卡讀卡器模塊讀卡原理實驗
實驗的目的在于了解非接觸式IC卡讀卡器及M1 卡原理及編程方法。
首先用程序?qū)?a href="http://www.www.rzqzixun.com" target="_blank" title="IC卡讀寫卡器,充電樁計費(fèi)閱讀器,RFID閱讀器,金融IC卡QuickPass讀卡器,NFC讀寫器,二代證閱讀器,工業(yè)物聯(lián)網(wǎng),串口轉(zhuǎn)以太網(wǎng)模塊">IC卡讀卡器芯片(以下簡稱 PCD)進(jìn)行寄存器初始化,完成后進(jìn)入尋卡狀態(tài),通過天線發(fā)出尋卡信號。當(dāng)有IC 卡(以下簡稱PICC,實驗程序所使用的卡為MF1 S50 卡)進(jìn)入天線有效操作區(qū),并且得到能量后,返回給PCD 卡類型值。下一步PCD 對卡進(jìn)行防沖突操作,PICC 得到防沖突操作信號后,返回給PCD 卡序列號。PCD 接收到序列號后,程序?qū)π蛄刑栍行耘卸ā.?dāng)確認(rèn)PICC 序列號有效后,PCD 發(fā)送選卡命令,選卡命中包含送出所選卡序列號,這樣保證進(jìn)行下一步操作的卡唯一。PCD 裝載密匙,所裝載密匙與所要操作的PICC 扇區(qū)密匙一致,同一個扇有兩組密匙,密匙A、B。如進(jìn)行A 密匙認(rèn)證則,裝載的密匙為A 密匙,進(jìn)行B 密匙認(rèn)證,則需裝載B 密匙。裝載密匙成功后,開始三遍認(rèn)證操作。
如下圖所示為三遍認(rèn)證的令牌原理框圖:
認(rèn)證過程是這樣進(jìn)行的:
(A)環(huán):由 Mifare 1 卡片向讀寫器 發(fā)送一個隨機(jī)數(shù)據(jù) RB;
(B)環(huán):由讀寫器收到RB 后向Mifare 1 卡片發(fā)送一個令牌數(shù)據(jù)TOKEN AB,其中包含了讀寫器發(fā)出的一個隨機(jī)數(shù)據(jù) RA;
(C)環(huán):Mifare 1 卡片收到 TOKEN AB 后,對TOKEN AB 的加密的部分進(jìn)行解密,并校驗第一次由(A)環(huán)中Mifare 1 卡片發(fā)出去的隨機(jī)數(shù)RB 是否與(B)環(huán)中接收到的TOKEN AB 中的RB 相一致;
(D) 環(huán) : 如果(C)環(huán)校驗是正確的,則Mifare 1 卡片向IC卡讀寫器 發(fā)送令牌TOKEN BA 給讀寫器;
(E)環(huán):讀寫器收到令牌TOKEN BA 后,讀寫器將對令牌TOKEN BA 中的RB(隨機(jī)數(shù))進(jìn)行解密;并校驗第一次由(B)環(huán)中讀寫器發(fā)出去的隨機(jī)數(shù)RA 是否與(D)環(huán)中接收到的 TOKEN BA 中的RA 相一致;
如果上述的每一個環(huán)都為“真”,都能正確通過驗證,則整個的認(rèn)證過程將成功。
讀寫器將能對剛剛認(rèn)證通過的卡片上的這個扇區(qū)可以進(jìn)入下一步的操作(READ/WRITE 等操作)。卡片中的其他扇區(qū)由于有其各自的密碼,因此不能對其進(jìn)行進(jìn)一步的操作。如想對其他扇區(qū)進(jìn)行操作,必須完成上述的認(rèn)證過程。
認(rèn)證過程中的任何一環(huán)出現(xiàn)差錯,整個認(rèn)證將告失敗。必須從新開始。如果事先不知卡片上的密碼,則由于密碼的變化可以極其復(fù)雜,因此靠猜測密碼而想打開卡片上的一個扇區(qū)的可能性幾乎為零。
這里提醒一下程序員和卡片的使用者,必須牢記卡片中的 16 個扇區(qū)的每一個密碼,否則,遺忘某一扇區(qū)的密碼,將使該扇區(qū)中的數(shù)據(jù)不能讀寫。沒有任何辦法可以挽救這種低級錯誤。但是,卡片上的其他扇區(qū)可以照樣使用。
上述的敘述已經(jīng)可以充分地說明了 Mifare 1 卡片的高度安全性,保密性,及卡片的應(yīng)用場合多樣性,一卡多用(一卡通)。