基于GP32的射頻卡密碼認(rèn)證系統(tǒng)設(shè)計
文章出處:http://www.mjagi.com 作者: 人氣: 發(fā)表時間:2012年03月18日
摘要:密碼認(rèn)證是射頻卡應(yīng)用中的一項關(guān)鍵技術(shù).在剖析了Mifare卡存儲結(jié)構(gòu)、讀寫控制以及加密機(jī)制的基礎(chǔ)之上,以 MC68HC908GP32為主控芯片,利用基站芯片 MF RC500與天線技術(shù)的結(jié)合搭建出一個密碼認(rèn)證平臺.軟件部分重點闡述了 Mifare卡與基站芯片 MF RC500密碼認(rèn)證過程與程序?qū)崿F(xiàn);該系統(tǒng)具有作用距離遠(yuǎn)、響應(yīng)速度快、使用簡便、安全性高等顯著特點.
關(guān)鍵詞:MC68HC908GP32;射頻卡;密碼認(rèn)證
0 引 言
射頻卡(非接觸式 IC卡)技術(shù)是近幾年發(fā)展起來的一項新技術(shù).與傳統(tǒng)的接觸式 IC卡相比,非接觸式 IC卡無論從其可靠性、易用性、抗干擾性還是一卡多用性等方面都有著明顯的優(yōu)勢,特別是卡內(nèi)嚴(yán)格的密碼認(rèn)證機(jī)制大大提高了用戶數(shù)據(jù)的安全性,是電子加密技術(shù)應(yīng)用領(lǐng)域的一大亮點,隨著射頻卡的應(yīng)用日益廣泛,相應(yīng)地促進(jìn)了嵌入式應(yīng)用領(lǐng)域開發(fā)人員對其技術(shù)的研究[1].在我們承擔(dān)項目的開發(fā)之處,經(jīng)過仔細(xì)分析后發(fā)現(xiàn):密碼驗證的方法與機(jī)制是射頻卡應(yīng)用中的一項關(guān)鍵技術(shù),對于一般應(yīng)用開發(fā)人員來說掌握該項技術(shù)還是比較困難的.如果能將射頻卡的密碼認(rèn)證過程進(jìn)行底層屏蔽并模塊化封裝的話,那么完全可以為相關(guān)工程技術(shù)人員提供二次開發(fā)平臺,同時也將推動射頻卡技術(shù)的廣泛應(yīng)用.
1 MF1射頻卡
Philips是世界上最早研制非接觸式 IC卡的公司,其 Mifare技術(shù)已經(jīng)被制定為IS0/IEC14443 TYPE A國際標(biāo)準(zhǔn).為了方便研究,首選該公司典型產(chǎn)品Mifare 1 IC S50(MF1)卡.
1.1 存儲結(jié)構(gòu)和組成
MF1卡片的存儲容量為1K×8位字長,采用EEPROM作為存儲介質(zhì).整個結(jié)構(gòu)劃分為16個扇區(qū),編為扇區(qū)0~15.每個扇區(qū)有 4個塊(Block),分別為塊0、1、2、3.每個塊有 16個字節(jié).每個扇區(qū)的第四塊也稱作尾塊,包含了該扇區(qū)的密碼 A(6個字節(jié))、存取控制(4個字節(jié))、密碼 B(6個字節(jié)),是控制塊.其余三塊是數(shù)據(jù)塊.
1.2 對MF1卡的讀寫控制
每個扇區(qū)的尾塊是扇區(qū)的控制塊.控制塊使用兩個密碼,為用戶提供多重控制方式.例如,
用戶可以用一個密碼控制對數(shù)據(jù)塊的讀操作,用另一個密碼控制對數(shù)據(jù)塊的寫操作.在空卡狀態(tài)下每個扇區(qū)的尾塊數(shù)據(jù)為; “Ox000000000000 FF078069 FFFFFFFFFFFF”.空卡時的密碼 A和密碼 B均為“OxFFFFFF”,由于 A密碼不可讀,讀出的數(shù)據(jù)顯示為“Ox000000”.在空卡默認(rèn)讀寫權(quán)限下可以利用密碼 A對所有塊進(jìn)行讀寫操作,以及更改各塊的讀寫權(quán)限.
圖 1 尾塊的權(quán)限代碼與訪問權(quán)限圖
但不可以利用密碼 B進(jìn)行讀寫操作(此時 B密碼可讀).
權(quán)限位為:“OxFF078069”,由圖 1,有; C13=0 C12=0 C11=0 C10=0; C23=0 C22=0 C21=0 C20=0 ; C33=1 C32=0 C31=0 C30=0.“C13 C23 C33”=001,對應(yīng)圖 1的第 5行,表示 A密碼不可讀,可用 A密碼改寫(即通過 A密碼校驗后,可改寫 A密碼),權(quán)限字節(jié)及 B密碼的讀寫權(quán)限均可用 A密碼讀寫.
1.3 密碼驗證與加密機(jī)制
MF1內(nèi)部的安全加密算法叫做Crypto1,使用的密碼長度是48 bits,即6個字節(jié).Crypto1是一種三遍驗證算法.MF RC500((簡稱RC500,與MF1實現(xiàn)數(shù)據(jù)讀寫的基站芯片,見本文的2.2節(jié))片內(nèi)部將該算法進(jìn)行了封裝,只要執(zhí)行 Authent1和 Authent2命令,就可自動完成這個驗證過程.如圖2所示.
2 密碼處理框圖
在驗證命令期間, RC500是從其內(nèi)部密碼緩沖區(qū)(key buffer)讀取密碼.因此,用戶必須保證在執(zhí)行 Authen1命令前就已經(jīng)將密碼放到 key buffer中了.
需要說明的是,將密碼載入到內(nèi)部密碼緩沖區(qū)或者暫存到EEPROM中時都要使用特定的密碼存儲格式.每個密碼字節(jié)被分成兩個半字節(jié),低半字節(jié)(k0-k3)和高半字節(jié)(k4-k7).每半個字節(jié)都在一個字節(jié)內(nèi)存儲了兩次,其中一次要取反.由于這種格式,用戶使用的 6字節(jié)的密碼實際上需要 12字節(jié)的 E2PROM來存儲.
2 硬件設(shè)計
硬件主要包括 MCU電路模塊、基于 RC500的基站模塊、天線模塊電路和相關(guān)的匹配電路等,系統(tǒng)硬件原理圖如圖 3所示.
2.1 MCU部分
單片機(jī)選用FreeScale公司MC68HC908GP32(簡稱GP32)芯片[2].GP32不僅性能穩(wěn)定而且具有性能價格比高的突出優(yōu)勢.其自身有 32KB的 Flash存儲器、支持在線編程、 8MHZ內(nèi)部總線頻率和低功耗等性能,尤其還具有 8個字節(jié)(64位)Flash區(qū)的密碼保護(hù) .
2.2 基站部分
系統(tǒng)的基站單元采用 PHILIPS公司的 RC500芯片.該芯片為目前用于 13.56MHz頻段非接觸通信的主流讀卡 IC.RC500芯片采用先進(jìn)的調(diào)制和解調(diào)技術(shù) ,支持 13.56MHz頻段所有被動非接觸式通信方式和協(xié)議,并支持ISO14443A中所有的層.RC500芯片內(nèi)的發(fā)送器部分在不增加外接有源電路時可直接驅(qū)動的天線操作距離為 300mm,接收模塊部分則提供一個穩(wěn)健可靠的解調(diào)/解碼電路,用于 ISO14443A兼容的應(yīng)答信號[3]..。
圖3 系統(tǒng)硬件原理圖
第1頁第2頁 |