| 引導(dǎo)符 | 終端序列號(hào) | 電話號(hào)碼*隨機(jī)數(shù) | HMAC認(rèn)證碼 | 校驗(yàn)碼 |
| * | 10Byte | 21Byte | 16Byte | 0.5Byte |
| 32Byte,高位為0,可直接發(fā)送DTMF | 不可直接發(fā)送,要轉(zhuǎn)化 | |||
16Byte認(rèn)證碼,是經(jīng)由HMAC加密得到的,其中的KEY值、TEXT值都可以作為用戶密碼。由于認(rèn)證碼高4bit為為0,所以不可以直接發(fā)送DTMF,要把4bit校驗(yàn)碼排在認(rèn)證碼之后,共組成132bit數(shù)據(jù),一起經(jīng)過(guò)串行左移轉(zhuǎn)化,每3bit構(gòu)成1組,最后形成44個(gè)DTMF。
智能終端由單片機(jī)、DTMF撥號(hào)電話機(jī)、液晶顯示等芯片構(gòu)成。MCU不但要承擔(dān)主控任務(wù),還要實(shí)現(xiàn)HMAC的運(yùn)算。
3 HMAC的單片機(jī)實(shí)現(xiàn)
(1)ZQ032SA單片機(jī)簡(jiǎn)介
ZQ032SA 是北京中慶公司具有獨(dú)立知識(shí)產(chǎn)權(quán)的Flash型MCU,與Motorola 6805系列單片機(jī)功能相似,指令兼容。其采用CMOS工藝,工作穩(wěn)定、功耗低、采用小型表貼封裝(SOP28),適合民用設(shè)備使用。
主要特性有:
*8位MCU,兼容增強(qiáng)型6502指令集;
*4MHz主頻,典型取指周期0.5μs。
*16Kbyte片內(nèi)Flash存儲(chǔ)器。
*352Byte片內(nèi)用戶RAM,其中包括64Byte的堆棧區(qū);
*1個(gè)13位的多功能計(jì)數(shù)器和1個(gè)看門狗WDT
*20個(gè)通用I/O接口;
*1個(gè)載波調(diào)制發(fā)生器CMT;
*Flash保護(hù)機(jī)制;
*Flash在線程序下載;
*2種節(jié)電模式。
引腳排列和內(nèi)部模塊可參見(jiàn)本刊網(wǎng)絡(luò)補(bǔ)充版。(http://www.dpj.com.cn)。
(2)HMAC算法的實(shí)現(xiàn)
基于單片機(jī)內(nèi)部可用RAM的大小及實(shí)際使用時(shí)可能的密碼長(zhǎng)度,在認(rèn)證系統(tǒng)中規(guī)定了消息長(zhǎng)度,key≤64B,text≤58B。這樣在本例中,MD5運(yùn)算的消息分組N=2。在單片機(jī)4MHz主頻時(shí),經(jīng)過(guò)程序優(yōu)化,完成HMAC的運(yùn)算所需時(shí)間小于3ms。詳細(xì)程序網(wǎng)絡(luò)補(bǔ)充版(http://www.dpj.com.cn)。
下面列出主要流程圖。
其中:MD5_MAIN是MD5運(yùn)算主程序;
MD5_ONE子程序是MD5的一個(gè)分組運(yùn)算;
SUB-FF、FBCD、GBCD、HBCD、IBCD分別是MD5運(yùn)算中相應(yīng)函數(shù)的子程序;
SHIFT子程序完成<<Si的功能;
EXCH子程序完成地址4組數(shù)據(jù)的交換;
常數(shù)Ti列表于MEM_C,移位Si列表于TABLE_S;
消息子分組順序列表于TABLE_M;
KEY鍵盤程序讀入存于MEM_M,TEXT存于MEM_MB。
標(biāo)號(hào)MEM1-4的RAM用于中間計(jì)算。
HMAC流程如圖4所示。
MD5算法中的一個(gè)消息分組的計(jì)算程序流程如圖6所示。
HMAC作為一種認(rèn)證的協(xié)議,可以用于那么需要數(shù)字簽名、身份認(rèn)證或報(bào)文完整性檢驗(yàn)等領(lǐng)域。在家用電子市場(chǎng)、安防、電子商務(wù)方面,都有廣泛的用途。
在單片機(jī)可實(shí)現(xiàn)HMAC認(rèn)證的基礎(chǔ)上,可以進(jìn)一步把ZQ032SA的IP核與其它外圍邏輯構(gòu)成ASIC,用于智能卡,將有應(yīng)用前景。
在HMAC協(xié)議的基礎(chǔ)上,加入其它成熟的加密算法,如DES,可以進(jìn)一步提高認(rèn)證的安全性。





