日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]HMAC是一種基于密鑰的Hash算法的認(rèn)證協(xié)議

    摘要:HMAC是一種基于密鑰的Hash算法的認(rèn)證協(xié)議,可以應(yīng)用于電子商務(wù)領(lǐng)域。我們通過國(guó)有自主知識(shí)產(chǎn)權(quán)的單片機(jī)ZQ032SA,實(shí)現(xiàn)了以MD5算法為核心的HMAC協(xié)議,并把它調(diào)用于IP電話計(jì)費(fèi)認(rèn)證系統(tǒng)。

    關(guān)鍵詞:HMAC ZQ032SA(6805) MD5 IP電話

引言

在開放的通信和計(jì)算機(jī)系統(tǒng)中,建立安全可靠的電子商務(wù)平臺(tái)是十分重要的。通常需要通過加密的方法對(duì)客戶的有關(guān)信息,如密碼、合同等加以保護(hù),使之不被盜取或篡改。當(dāng)客戶提出服務(wù)申請(qǐng)時(shí),必須對(duì)客戶身份的合法性、報(bào)文的完整性進(jìn)行確認(rèn)。

HMAC(Keyed-Hashing for Message Authentication)是一個(gè)公開的協(xié)議。它是一種基于密鑰的報(bào)文完整性的驗(yàn)證方法,其安全性是建立在Hash算法基礎(chǔ)上的。它要求通信雙方共享密鑰、約定算法、對(duì)報(bào)文進(jìn)行Hash運(yùn)算,如MD5、SHA、RIPEMD等,形成固定長(zhǎng)度的認(rèn)證碼。通信雙方通過認(rèn)證碼的校驗(yàn)來確定報(bào)文的合法性。這個(gè)協(xié)議可以用來作加密、數(shù)字簽名、報(bào)文驗(yàn)證等。

    利用HMAC協(xié)議可以建立一個(gè)身份認(rèn)證的電子商務(wù)平臺(tái),客戶和服務(wù)端雙方需要預(yù)先約定唯一的公鑰和加密算法;客戶單方面保留自己密碼作為密鑰,服務(wù)端只保留公鑰和認(rèn)證碼。這個(gè)認(rèn)證碼是密鑰經(jīng)HMAC協(xié)議加密得到定長(zhǎng)碼字。當(dāng)客戶提出服務(wù)申請(qǐng)時(shí),應(yīng)提交鑰和密鑰的認(rèn)證碼。服務(wù)端通過公鑰確認(rèn)客戶的基本身份,再檢驗(yàn)認(rèn)證碼確定客戶的合法性。這樣,客戶的私密信息在服務(wù)端、傳輸媒介中都是加密隱藏的。

我們利用服務(wù)器建立了服務(wù)端的模擬用戶數(shù)據(jù)庫,單片機(jī)實(shí)現(xiàn)客戶端的加密算法,電話線作為傳輸介質(zhì),實(shí)現(xiàn)了HMAC協(xié)議在IP電話計(jì)費(fèi)系統(tǒng)中的應(yīng)用。

1 HMAC的算法原理

1.1 HMAC算法定義

用公式表示如下:

HMAC=H(key xor opad,H(key xor ipad,text))

H(X,Y)代表對(duì)X+Y的消息進(jìn)行一種Hash運(yùn)算;

ipad代表重復(fù)B次的單字節(jié)十六進(jìn)制常數(shù)0x36;

opad代表重復(fù)B次的單字節(jié)十六進(jìn)行常數(shù)0x5c;

key代表64字節(jié)的字符串,由密鑰組成,不足的補(bǔ)0;

text代表任意長(zhǎng)度文本。

密鑰≥L字節(jié)。當(dāng)大于B時(shí),先經(jīng)Hash計(jì)算形成L字節(jié)的秘鑰(B是Hash算法中一次迭代運(yùn)算的數(shù)據(jù)塊字節(jié)數(shù);L是Hash算法形成報(bào)文摘要的字節(jié)數(shù))。

HMAC協(xié)議定義了迭代兩次的Hash加密算法,最終形成報(bào)文摘要(DIGEST)值就是認(rèn)證碼?;谒惴ǖ目煽啃?、安全性和易于計(jì)算機(jī)實(shí)現(xiàn)特性,先用Hash中的MD5算法實(shí)現(xiàn)HMAC,其B=64,L=16。

1.2 MD5算法定義

MD5算法以對(duì)任意長(zhǎng)度消息多次循環(huán)迭代的散列運(yùn)算,最終形成16 Byte報(bào)文摘要。這個(gè)摘要對(duì)文本具有唯一性,可作為認(rèn)證碼。在目標(biāo)計(jì)算機(jī)的計(jì)算速度下,這個(gè)摘要是難于破解的。

(1)報(bào)文填充

MD5算法要求對(duì)任意長(zhǎng)度報(bào)文進(jìn)行填充,構(gòu)成N×64 Byte消息分組,N為整數(shù)。其中每一分組又劃分為16個(gè)4字節(jié)子分組。

填充數(shù)據(jù)分2步。首先,填充使得數(shù)據(jù)位長(zhǎng)度恰好為(N×64-8)Byte的數(shù),即在報(bào)文有效數(shù)據(jù)后補(bǔ)1個(gè)0x1,其它補(bǔ)0x0至滿足上述要求。然后,再后補(bǔ)上8字節(jié)(64位)的報(bào)文數(shù)據(jù)長(zhǎng)度(填充前字節(jié)數(shù))。這樣,數(shù)據(jù)就被填充為64Byte(512bit)的整數(shù)倍。

(2)初始化MD5參數(shù)

4個(gè)4字節(jié)位變量(A、B、C、D)用來作為報(bào)文摘要的初始值:

A=0x01234567

B=0x89abcdef

C=0xfedcba98

D=0x76543210

(3)算法

MD5算法是對(duì)消息分組依次迭代算法。第1次運(yùn)算的初始值為ABCD,以后每一次迭代運(yùn)算的結(jié)果都替換ABCD作為下一次的初始值,共經(jīng)過N次的迭代運(yùn)算,就得到該消息的報(bào)文摘要,如圖1所示。

對(duì)每一消息分組的運(yùn)算方法是相同的。首先把初始值A(chǔ)BCD放入變量abcd,然后進(jìn)行4輪相似的運(yùn)算變換,每輪包含16次操作。每次操作對(duì)其中的3個(gè)變量(4字節(jié))bcd做1次非線性運(yùn)算,將其結(jié)果加上變量a,一個(gè)消息子分組Mi,一個(gè)常數(shù)Ti;將所得結(jié)果向環(huán)移一個(gè)不定的數(shù)Si,再加變量b,然后用該結(jié)果取代變量a,變換abcd<=dabc,進(jìn)入下一次運(yùn)算,共16次,如圖2所示。4輪運(yùn)算結(jié)束后,把變量abcd與初始ABCD進(jìn)行“異或”運(yùn)算,結(jié)果作為下一分組的初始值。

計(jì)算公式如下:

第1輪:SUB_FF(a,b,c,d,Mi,Si,Ti):a<=b+((a+F(b,c,d)+Mi+Ti)<<<Si)

第2輪:SUB_GG(a,b,c,d,Mi,Si,Ti):a<=b+((a+G(b,c,d)+Mi+Ti)<<<Si)

第3輪:SUB_HH(a,b,c,d,Mi,Si,Ti):a<=b+((a+H(b,c,d)+Mi+Ti)<<<Si)

第4輪:SUB_II(a,b,c,d,Mi,Si,Ti):a<=b+((a+I(b,c,d)+Mi+Ti)<<<Si)

數(shù)據(jù)交換規(guī)則:a,b,c,d→d,a,b,c→c,d,a,b, →b,c,d,a

最終:ABCD<=ABCD+abcd

其中:Mi為16個(gè)信息子包,每個(gè)4字節(jié);Ti為4字節(jié)常數(shù);Si為左移位數(shù);abcd為32位變量;初始值為ABCD。

函數(shù):F(X,Y,Z)=X&Y|NOT(X)&Z

G(X,Y,Z)=X&Z|Y&not(Z)

H(X,Y,Z)=XxorYxorZ

I(X,Y,Z)=Yxor(X|not(Z))

2 HMAC在IP電話計(jì)費(fèi)上的應(yīng)用

利用HMAC的認(rèn)證功能,可對(duì)用戶的IP儲(chǔ)值卡中的金額進(jìn)行保護(hù)。在試驗(yàn)系統(tǒng)中,智能終端相當(dāng)于認(rèn)證系統(tǒng)的客戶端,如圖3所示。

當(dāng)用戶使用時(shí),用戶只須直接撥入所叫的電話號(hào)碼即可。智能終端則自動(dòng)撥向IP服務(wù)商,待響應(yīng)后,反終端序列號(hào)、主叫電話號(hào)碼、認(rèn)證碼一同發(fā)給服務(wù)商。智能終端序列號(hào)相當(dāng)于公鑰,用戶的密碼就是密鑰。智能終端對(duì)密鑰進(jìn)行HMAC協(xié)議的加密運(yùn)算自動(dòng)生成認(rèn)證碼。

服務(wù)曾幾何時(shí)接收數(shù)據(jù)碼流,根據(jù)終端序列號(hào)確定用戶的基本信息,再通過數(shù)據(jù)庫中存儲(chǔ)的認(rèn)證碼與接收到認(rèn)證碼的比較,確認(rèn)用戶的合法身份。如身份無誤,則接通話路,計(jì)時(shí)收費(fèi)。

其中第3步認(rèn)證碼的格式如表1所列。

表1 認(rèn)證碼格式

引導(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)過串行左移轉(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)部模塊可參見本刊網(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)過程序優(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)證的安全性。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

8位單片機(jī)在嵌入式設(shè)計(jì)領(lǐng)域已經(jīng)成為半個(gè)多世紀(jì)以來的主流選擇。盡管嵌入式系統(tǒng)市場(chǎng)日益復(fù)雜,8位單片機(jī)依然不斷發(fā)展,積極應(yīng)對(duì)新的挑戰(zhàn)和系統(tǒng)需求。如今,Microchip推出的8位PIC?和AVR?單片機(jī)系列,配備了先進(jìn)的獨(dú)立...

關(guān)鍵字: 單片機(jī) 嵌入式 CPU

在嵌入式系統(tǒng)開發(fā)中,程序燒錄是連接軟件設(shè)計(jì)與硬件實(shí)現(xiàn)的關(guān)鍵環(huán)節(jié)。當(dāng)前主流的單片機(jī)燒錄技術(shù)已形成ICP(在電路編程)、ISP(在系統(tǒng)編程)、IAP(在應(yīng)用編程)三大技術(shù)體系,分別對(duì)應(yīng)開發(fā)調(diào)試、量產(chǎn)燒錄、遠(yuǎn)程升級(jí)等不同場(chǎng)景。...

關(guān)鍵字: 單片機(jī) ISP ICP IAP 嵌入式系統(tǒng)開發(fā)

在嵌入式系統(tǒng)開發(fā)中,看門狗(Watchdog Timer, WDT)是保障系統(tǒng)可靠性的核心組件,其初始化時(shí)機(jī)的選擇直接影響系統(tǒng)抗干擾能力和穩(wěn)定性。本文從硬件架構(gòu)、軟件流程、安全規(guī)范三個(gè)維度,系統(tǒng)分析看門狗初始化的最佳實(shí)踐...

關(guān)鍵字: 單片機(jī) 看門狗 嵌入式系統(tǒng)

本文中,小編將對(duì)單片機(jī)予以介紹,如果你想對(duì)它的詳細(xì)情況有所認(rèn)識(shí),或者想要增進(jìn)對(duì)它的了解程度,不妨請(qǐng)看以下內(nèi)容哦。

關(guān)鍵字: 單片機(jī) 開發(fā)板 Keil

隨著單片機(jī)系統(tǒng)越來越廣泛地應(yīng)用于消費(fèi)類電子、醫(yī)療、工業(yè)自動(dòng)化、智能化儀器儀表、航空航天等各領(lǐng)域,單片機(jī)系統(tǒng)面臨著電磁干擾(EMI)日益嚴(yán)重的威脅。電磁兼容性(EMC)包含系統(tǒng)的發(fā)射和敏感度兩方面的問題。

關(guān)鍵字: 單片機(jī) 電磁兼容

以下內(nèi)容中,小編將對(duì)單片機(jī)的相關(guān)內(nèi)容進(jìn)行著重介紹和闡述,希望本文能幫您增進(jìn)對(duì)單片機(jī)的了解,和小編一起來看看吧。

關(guān)鍵字: 單片機(jī) 復(fù)位電路

在這篇文章中,小編將為大家?guī)韱纹瑱C(jī)的相關(guān)報(bào)道。如果你對(duì)本文即將要講解的內(nèi)容存在一定興趣,不妨繼續(xù)往下閱讀哦。

關(guān)鍵字: 單片機(jī) 異常復(fù)位

今天,小編將在這篇文章中為大家?guī)韱纹瑱C(jī)的有關(guān)報(bào)道,通過閱讀這篇文章,大家可以對(duì)它具備清晰的認(rèn)識(shí),主要內(nèi)容如下。

關(guān)鍵字: 單片機(jī) 仿真器

單片機(jī)將是下述內(nèi)容的主要介紹對(duì)象,通過這篇文章,小編希望大家可以對(duì)它的相關(guān)情況以及信息有所認(rèn)識(shí)和了解,詳細(xì)內(nèi)容如下。

關(guān)鍵字: 單片機(jī) 中斷 boot

一直以來,單片機(jī)都是大家的關(guān)注焦點(diǎn)之一。因此針對(duì)大家的興趣點(diǎn)所在,小編將為大家?guī)韱纹瑱C(jī)的相關(guān)介紹,詳細(xì)內(nèi)容請(qǐng)看下文。

關(guān)鍵字: 單片機(jī) 數(shù)字信號(hào) 模擬信號(hào)
關(guān)閉