??? 摘 要: 介紹了一種應(yīng)用DS2432器件實(shí)現(xiàn)雙向認(rèn)證及軟件功能保護(hù)的方法,。首先分析了信息認(rèn)證的基本計(jì)算模型,,然后應(yīng)用DS2432器件并使用SHA-1算法實(shí)現(xiàn)了1-Wire" title="1-Wire">1-Wire網(wǎng)絡(luò)的安全認(rèn)證" title="安全認(rèn)證">安全認(rèn)證,。分析了其質(zhì)詢-響應(yīng)認(rèn)證過(guò)程,從而得出可將系統(tǒng)密鑰存放在安全存儲(chǔ)器" title="安全存儲(chǔ)器">安全存儲(chǔ)器中,,而不必存放在程序代碼內(nèi),。這種系統(tǒng)便于擴(kuò)展,,DS2432的數(shù)據(jù)安全性甚至可以實(shí)現(xiàn)遠(yuǎn)程配置信息修改,節(jié)省設(shè)計(jì)時(shí)間,,實(shí)現(xiàn)了低成本的安全認(rèn)證功能,。
??? 關(guān)鍵詞: 認(rèn)證? 密鑰? SHA-1算法? 信息認(rèn)證碼MAC? 1-Wire? 數(shù)據(jù)安全
?
??? 高技術(shù)電子產(chǎn)品保證正確的身份識(shí)別至關(guān)重要,,系統(tǒng)供應(yīng)商需要在外有黑客攻擊這樣的“外患”,,內(nèi)有克隆硬件這樣的“內(nèi)憂”的環(huán)境中保護(hù)其產(chǎn)品的安全性。實(shí)現(xiàn)這些安全需求的關(guān)鍵是認(rèn)證,。Maxim/Dallas Semiconductor公司的DS2432器件[1]以安全存儲(chǔ)器形式提供加密控制和保護(hù)方案,,非常適合需要知識(shí)產(chǎn)權(quán)保護(hù)、HW/SW許可權(quán)管理,、安全軟件功能與狀態(tài)設(shè)置,、防篡改數(shù)據(jù)存儲(chǔ)等 方面的應(yīng)用。
1 認(rèn)證機(jī)制
1.1 認(rèn)證
??? 認(rèn)證是指兩個(gè)或多個(gè)實(shí)體之間建立身份認(rèn)可的過(guò)程,。單向認(rèn)證情況下,,一方需向另一方證明其身份的合法性。對(duì)于雙向認(rèn)證,,雙方需要彼此向?qū)Ψ阶C明自己的身份,。最常用的認(rèn)證方法是利用口令實(shí)現(xiàn)的。使用口令的主要問題是應(yīng)用中口令是暴露的,,極易被探測(cè),。
??? 1883年,弗蘭德斯語(yǔ)言學(xué)家Auguste Kerckhoffs發(fā)表了一篇關(guān)于軍事加密的文章,,震驚了整個(gè)世界,。Kerckhoffs認(rèn)為:安全不應(yīng)依靠隱匿性(例如非公開的保密算法),而應(yīng)依靠算法及其密鑰的力量,。如果安全受到破壞,,只需替換密鑰,而不是替換整個(gè)系統(tǒng)[2],。
??? 基于密鑰的認(rèn)證過(guò)程[2]如圖1所示,。密鑰(私密)和需要認(rèn)證的數(shù)據(jù)(“信息”)作為輸入,計(jì)算出信息認(rèn)證碼MAC后附加到信息上,。信息接收方進(jìn)行相同的運(yùn)算,,將MAC計(jì)算結(jié)果與隨信息一起收到的MAC比較,如果二者相同,,則信息是合法的,。
??????????????????????????????????
??? 但是,這種認(rèn)證過(guò)程有一個(gè)弱點(diǎn),。非法者如果截取到信息,,可隨后回放此信息,以仿冒合法身份。為克服這種固有的MAC弱點(diǎn)和證明MAC發(fā)送方的合法身份,,接收方可產(chǎn)生一個(gè)隨機(jī)數(shù),,作為質(zhì)詢碼回送給發(fā)送方。MAC發(fā)送方必須根據(jù)密鑰,、信息和質(zhì)詢碼重新計(jì)算新的MAC,,并返回給接收方。如果對(duì)應(yīng)任何質(zhì)詢碼發(fā)送方都可產(chǎn)生有效的MAC,,則可以確信發(fā)送方是知道密鑰的,,其身份是合法的,該過(guò)程就是質(zhì)詢-響應(yīng)認(rèn)證,。
1.2 SHA-1算法
??? 在加密學(xué)中,,由信息產(chǎn)生固定長(zhǎng)度MAC的算法稱為“單向”散列算法。單向算法從固定長(zhǎng)度MAC輸出推演出較長(zhǎng)的原始信息極為困難,。相反,,通過(guò)加密的方法則較為容易,因?yàn)榧用艿男畔⑴c原始信息是成正比的,。
??? SHA-1是經(jīng)過(guò)深入研究和國(guó)際認(rèn)可的單向散列算法[2-4],,由National Institute of Standards and Technology (NIST)開發(fā)。SHA-1已經(jīng)發(fā)展成為國(guó)際標(biāo)準(zhǔn)ISO/IEC 10118-3:2004,,算法的數(shù)學(xué)基礎(chǔ)是公開的,。
??? SHA-1算法的主要特點(diǎn)包括以下幾點(diǎn): (1)不可逆性,從計(jì)算角度講,不可能從MAC推演出輸入信息,。(2) 抗沖突性,對(duì)于特定MAC,,找到多于一種輸入信息是不現(xiàn)實(shí)的。(3)高雪崩效應(yīng),輸入的任何變化都會(huì)使MAC結(jié)果產(chǎn)生巨大的變化,?;谶@些原因以及對(duì)該算法的國(guó)際性研究,Maxim/Dallas Semiconductor公司選擇SHA-1作為其安全存儲(chǔ)器的質(zhì)詢-響應(yīng)認(rèn)證算法,。
2 利用DS2432實(shí)現(xiàn)低成本安全認(rèn)證功能
??? DS2432 EEPROM內(nèi)置SHA-1引擎,,借助1-Wire接口,可以方便地將其加入到任何帶有數(shù)字處理能力的電路中,,例如帶微控制器(μC)或FPGA的電路,。最簡(jiǎn)單的情況下,僅僅需要一個(gè)空閑I/O引腳以及一個(gè)上拉電阻即可構(gòu)成1-Wire接口,。如果板上的計(jì)算能力或者剩余的程序存儲(chǔ)空間不足以完成SHA-1算法MAC計(jì)算,,設(shè)計(jì)者可以采用DS2460 SHA-1協(xié)處理器,或?qū)⒂?jì)算任務(wù)轉(zhuǎn)交給系統(tǒng)或網(wǎng)絡(luò)中最近的主機(jī),。協(xié)處理器還有另一個(gè)好處,,即可將系統(tǒng)密鑰存放在安全存儲(chǔ)器中,,而不必存放在程序代碼內(nèi)[1]。
??? 每個(gè)子系統(tǒng)電路板上的DS2432可以保護(hù)系統(tǒng)供應(yīng)商免受上述欺騙,。除了進(jìn)行質(zhì)詢-響應(yīng)認(rèn)證外,,DS2432還可以在其用戶EEPROM內(nèi)存儲(chǔ)獨(dú)立的配置信息。配置數(shù)據(jù)可防止非法篡改,,且系統(tǒng)供應(yīng)商具有完全的控制權(quán),。配置信息可以位圖形式或代碼字形式存儲(chǔ),完全由系統(tǒng)設(shè)計(jì)者決定,。根據(jù)實(shí)際需要,,應(yīng)盡可能簡(jiǎn)單地設(shè)置配置信息,。由于DS2432提供方便的1-Wire接口,,設(shè)計(jì)者只需增加如圖2所示的一個(gè)MOSFET和一個(gè)探測(cè)點(diǎn),就可以在電路板其他部分不上電的情況下,,通過(guò)探測(cè)點(diǎn)向DS2432寫入配置信息,。MOSFET將DS2432與其他電路隔離,當(dāng)子系統(tǒng)正常工作時(shí),,也不會(huì)妨礙DS2432的正常訪問,。
???????????????????????????
??? 該配置信息寫入方法還帶來(lái)另一個(gè)好處,系統(tǒng)在用戶現(xiàn)場(chǎng)安裝完畢后,,允許進(jìn)行遠(yuǎn)程更新/更改,。任何未用于配置/功能管理的用戶EEPROM均可采用電子標(biāo)牌的形式實(shí)現(xiàn)電路板標(biāo)識(shí)功能。
3 DS2432認(rèn)證功能的設(shè)計(jì)與實(shí)現(xiàn)
3.1 器件總體架構(gòu)
??? DS2432的1-Wire接口,、1KB SHA-1安全存儲(chǔ)器的主要數(shù)據(jù)單元和數(shù)據(jù)流路徑如圖3所示,。在這個(gè)模型中包含了8字節(jié)密鑰和臨時(shí)存儲(chǔ)質(zhì)詢碼的緩沖存儲(chǔ)器" title="緩沖存儲(chǔ)器">緩沖存儲(chǔ)器(暫存器)以及主要數(shù)據(jù)單元。數(shù)據(jù)單元包括獨(dú)一無(wú)二的器件ID號(hào),、四個(gè)用戶EEPROM頁(yè)面,、控制寄存器" title="控制寄存器">控制寄存器和系統(tǒng)常數(shù)。
?????????????????????????????????
??? 器件ID號(hào)用作1-Wire網(wǎng)絡(luò)中的節(jié)點(diǎn)地址,,同時(shí)還用于認(rèn)證過(guò)程,。用戶存儲(chǔ)器存放待認(rèn)證“信息”的主要部分。系統(tǒng)常數(shù)有助于滿足格式需求和完成填充功能,,從而構(gòu)成SHA-1算法的64字節(jié)輸入數(shù)據(jù)塊,。控制寄存器執(zhí)行特定的器件功能,,例如可選的密鑰寫保護(hù)或EEPROM仿真模式,,控制寄存器通常不參與認(rèn)證過(guò)程。
??? 在這個(gè)模型中,,可毫無(wú)限制地讀取器件ID號(hào)和用戶EEPROM的信息,,并可完全讀/寫訪問緩沖存儲(chǔ)器,,還可以直接裝入密鑰,但永遠(yuǎn)不能讀取它,。如若改變用戶存儲(chǔ)器或寄存器的內(nèi)容,,則要求主機(jī)和從機(jī)(即DS2432)計(jì)算出相同的寫操作認(rèn)證MAC,才可以打開緩沖存儲(chǔ)器至EEPROM的路徑,。
??? 根據(jù)MAC結(jié)果的不同用途,,DS2432 SHA-1引擎具有三種不同的工作方式[3]。任何情況下,,SHA-1引擎均接收64字節(jié)輸入數(shù)據(jù),,并計(jì)算出20字節(jié)的MAC結(jié)果。不同之處在于輸入數(shù)據(jù),。作為安全系統(tǒng)的根本需求,,主機(jī)必須知道或者能夠計(jì)算出應(yīng)用中的有效/合法的從器件密鑰。
3.2 質(zhì)詢-響應(yīng)認(rèn)證MAC
??? DS2432的主要功能是完成質(zhì)詢-響應(yīng)認(rèn)證,。主機(jī)發(fā)送一個(gè)隨機(jī)質(zhì)詢碼,,指示DS2432根據(jù)該質(zhì)詢碼、密鑰,、主機(jī)所選存儲(chǔ)器頁(yè)的數(shù)據(jù)以及其他數(shù)據(jù)計(jì)算出響應(yīng)MAC,,如圖4所示。
??? DS2432完成計(jì)算后,,將MAC回送給主機(jī)進(jìn)行驗(yàn)證,。主機(jī)使用有效密鑰和DS2432所使用的相同信息數(shù)據(jù)重新進(jìn)行MAC計(jì)算。如果該結(jié)果和DS2432給出的MAC是匹配的,,則器件是合法的,,因?yàn)橹挥泻戏ǖ腄S2432才能正確地響應(yīng)質(zhì)詢-響應(yīng)認(rèn)證過(guò)程。質(zhì)詢碼是隨機(jī)數(shù)據(jù)這一點(diǎn)是非常重要的,。如果質(zhì)詢碼始終不變,,很容易遭受一個(gè)利用有效、靜態(tài),、記錄和回放的MAC (不是使用認(rèn)證DS2432實(shí)時(shí)算出的MAC)進(jìn)行回放攻擊,。
3.3 數(shù)據(jù)安全
??? 除了提供從器件的認(rèn)證功能外,還強(qiáng)烈要求存放在器件中的數(shù)據(jù)是可信的,。為實(shí)現(xiàn)這一點(diǎn),,DS2432的寫訪問是安全受限的。將數(shù)據(jù)從暫存器拷貝到EEPROM或控制寄存器之前,,DS2432要求主機(jī)提供寫訪問認(rèn)證MAC來(lái)證明其合法身份,。如圖5所示,DS2432要根據(jù)暫存器中的新數(shù)據(jù),、密鑰,、需要更新的存儲(chǔ)器頁(yè)數(shù)據(jù)以及其他數(shù)據(jù)計(jì)算該MAC,。
?????????????????????????????
??? 合法主機(jī)知道密鑰后可計(jì)算出有效的寫訪問MAC??截惷顖?zhí)行過(guò)程中收到主機(jī)MAC時(shí),,DS2432將其與自身計(jì)算的結(jié)果進(jìn)行比較。只有二者匹配,,數(shù)據(jù)才會(huì)從緩沖存儲(chǔ)器傳輸至目標(biāo)EEPROM,,但不能修改寫保護(hù)的存儲(chǔ)器頁(yè),即使MAC是正確的,。
3.4 密鑰保護(hù)
??? DS2432的架構(gòu)允許直接向器件裝入密鑰,。可通過(guò)讀保護(hù)提供密鑰保護(hù),,如果需要,,還可以采用寫保護(hù)提供密鑰保護(hù),但這將永遠(yuǎn)不能改變密鑰,。只要在設(shè)備制造現(xiàn)場(chǎng)訪問密鑰是安全和可控的,,這種保護(hù)等級(jí)是很有效的。
??? 可以采用不同方法提升密鑰保護(hù)等級(jí)[1]:(1)由DS2432計(jì)算其密鑰,。(2)由DS2432在不同場(chǎng)合分階段計(jì)算其密鑰。(3)計(jì)算密鑰時(shí)包含利用獨(dú)一無(wú)二的器件ID號(hào),,生成與器件相關(guān)的密鑰,。(4)組合利用(2)和(3)兩種方法。
??? 如果采用上面第1種方法,,每個(gè)DS2432自己計(jì)算其密鑰,,只知道計(jì)算密鑰的原始數(shù)據(jù),永遠(yuǎn)不會(huì)暴露密鑰本身,。如果采用第2種方法,,密鑰在不同場(chǎng)合分階段計(jì)算,只知道密鑰的“本地”原始數(shù)據(jù),。這種方法可有效控制“最終”密鑰的信息,。如果采用第3種方法,密鑰是與器件相關(guān)的,,主機(jī)還需要增加一個(gè)計(jì)算步驟,。但如果一個(gè)器件的密鑰被意外發(fā)現(xiàn),潛在危害卻可降至最低,。如果采用第4種方法,,密鑰分階段計(jì)算,并且與具體器件相關(guān),,可獲得最高保護(hù)等級(jí),。但是,,為確保系統(tǒng)保密性,主機(jī)和從機(jī)一樣需要在不同地點(diǎn)進(jìn)行設(shè)置,。
??? 計(jì)算密鑰之前,,必須先裝入一個(gè)已知數(shù)值作為密鑰。有了這個(gè)已知密鑰,,必須向四個(gè)存儲(chǔ)器頁(yè)之一寫入計(jì)算新密鑰的32字節(jié)數(shù)據(jù),。接下來(lái),需要向DS2432的暫存器寫入一個(gè)局部密鑰,。局部密鑰可以是用于計(jì)算的存儲(chǔ)器頁(yè)碼和獨(dú)一無(wú)二的器件ID號(hào)(CRC字節(jié)除外),,或任何其他與應(yīng)用相關(guān)的8字節(jié)數(shù)據(jù)。
??? 如果指示DS2432計(jì)算密鑰,,則DS2432啟動(dòng)SHA-1引擎,,使用圖6所示的輸入數(shù)據(jù)計(jì)算MAC。20字節(jié)MAC的最低8個(gè)字節(jié)自動(dòng)拷貝到密鑰存儲(chǔ)器地址,,立即成為有效密鑰,。
?????????????????????????????????
??? DS2432巧妙實(shí)現(xiàn)的安全認(rèn)證功能,不但保護(hù)了程序代碼,,而且公共硬件平臺(tái)利用安全的軟件功能設(shè)置也有助于降低生產(chǎn)成本,;DS2432的數(shù)據(jù)安全性甚至可以實(shí)現(xiàn)遠(yuǎn)程配置信息修改,節(jié)省了技術(shù)人員的寶貴時(shí)間,;從DS2432所展示的功能可以看出,,一個(gè)小小的硅晶片將對(duì)收益產(chǎn)生巨大的影響,實(shí)現(xiàn)了低成本的安全認(rèn)證,。
參考文獻(xiàn)
[1] Maxim/Dallas Semiconductor. Protecting the R&D investment—two-way authentication and secure soft-feature?settings. www.maxim.com.cn. 2005.
[2] SCHNE1ER B.應(yīng)用密碼學(xué):協(xié)議,,算法與C源程序[M].吳世忠,祝世雄,,張文政等,,譯.北京:機(jī)械工業(yè)出版社,
?2000.
[3] MEDHI D. HUANG D. MEHTA M, et al. Locationaware?key management scheme for wireless seflS0r networks[C].Procedings of 2004 ACM Workshop on Se. curity of Ad?Hoc and Sensor Networks.Washington DC. USA: ACM ??Press. 2004:29-42.
[4] LEE P P C,, LUI J C S,,YAU D K Y. Distributed collaborative key agreement protocols for dynam ic peer
?groups[C]. Proc.of the ICNP,2002:53-62.