DS2432雙向認(rèn)證及軟件功能保護(hù)
在冒名頂替、偽造證件行為猖獗的年代,保證正確的身份識(shí)別至關(guān)重要。這不僅對(duì)個(gè)人如此,對(duì)電子產(chǎn)品也是如此。系統(tǒng)供應(yīng)商需要在外有黑客攻擊這樣的“外患”,內(nèi)有克隆硬件這樣的“內(nèi)憂”的環(huán)境中保護(hù)其產(chǎn)品的安全性。實(shí)現(xiàn)這些安全需求的關(guān)鍵是認(rèn)證。
本文解釋了認(rèn)證的概念,以及maxim/dallas semiconductor以安全存儲(chǔ)器形式提供加密控制和保護(hù)的方案,非常適合需要知識(shí)產(chǎn)權(quán)保護(hù)、hw/sw許可權(quán)管理、安全軟件功能與狀態(tài)設(shè)置、防篡改數(shù)據(jù)存儲(chǔ)等應(yīng)用。
什么是認(rèn)證?
認(rèn)證是指兩個(gè)或多個(gè)實(shí)體之間建立身份認(rèn)可的過(guò)程。單向認(rèn)證情況下,一方需向另一方證明其身份的合法性。對(duì)于雙向認(rèn)證,雙方需要彼此向?qū)Ψ阶C明自己的身份。最常用的認(rèn)證方法是利用口令實(shí)現(xiàn)。使用口令的主要問(wèn)題是應(yīng)用中口令是暴露的,極易被探測(cè)。
我們先來(lái)回顧一下加密的歷史應(yīng)用,1883年弗蘭德斯語(yǔ)言學(xué)家auguste kerckhoffs發(fā)表了一篇關(guān)于軍事加密的文章,震驚了整個(gè)世界。kerckhoffs講道,安全不應(yīng)依靠隱匿性(例如非公開(kāi)的保密算法),而應(yīng)依靠算法及其密鑰的力量。如果安全受到破壞,kerckhoffs認(rèn)為,只需替換密鑰,而不是替換整個(gè)系統(tǒng)。
基于密鑰的認(rèn)證過(guò)程如圖1所示:密鑰(私密)和需要認(rèn)證的數(shù)據(jù)(“信息”)作為輸入,來(lái)計(jì)算信息認(rèn)證碼,即mac。mac然后附加到信息上。信息接收方進(jìn)行相同的運(yùn)算,將mac計(jì)算結(jié)果與隨信息一起收到的mac比較。如果二者相同,則信息是合法的。
但是,這種基本mac計(jì)算模型也有一個(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ā)送方是知道密鑰的,其身份是合法的(圖2)。該過(guò)程就是質(zhì)詢-響應(yīng)認(rèn)證。
在加密學(xué)中,由信息產(chǎn)生固定長(zhǎng)度mac的算法稱為“單向”散列函數(shù)。單向表示從固定長(zhǎng)度mac輸出推演出較長(zhǎng)的原始信息極為困難。相反,通過(guò)加密,加密的信息與原始信息是成正比的。
sha-1是經(jīng)過(guò)深入研究和國(guó)際認(rèn)可的單向散列算法,由national institute of standards and technology (nist)開(kāi)發(fā)。sha-1已經(jīng)發(fā)展成為國(guó)際標(biāo)準(zhǔn)iso/iec 10118-3:2004,算法的數(shù)學(xué)基礎(chǔ)是公開(kāi)的,并可從nist網(wǎng)站獲取。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)證算法。
低成本安全認(rèn)證—功能實(shí)現(xiàn)
ds2432 eeprom內(nèi)置sha-1引擎,借助1-wire接口,可以方便地加入到任何帶有數(shù)字處理能力的電路中,例如帶微控制器(μc)的電路。最簡(jiǎn)單的情況下,僅僅需要一個(gè)空閑i/o引腳以及一個(gè)上拉電阻即可構(gòu)成1-wire接口,如圖3所示。如果板上的計(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)。
嵌入式硬件/軟件授權(quán)管理
參考設(shè)計(jì)需要授權(quán),并可能由第三方進(jìn)行生產(chǎn),需要防范非法使用程序代碼??紤]到收入原因,還有必要跟蹤和確認(rèn)參考設(shè)計(jì)的使用次數(shù)。ds2432經(jīng)過(guò)預(yù)先編程(在供給第三方制造商之前先裝入密鑰和存儲(chǔ)器設(shè)定值),可以輕松地滿足這些需求和提供更多功能。上電自檢時(shí),參考設(shè)計(jì)(圖4)通過(guò)ds2432執(zhí)行認(rèn)證過(guò)程。只有具備有效密鑰的ds2432才能成功地返回有效mac。如果檢測(cè)到無(wú)效mac,處理器將采取相應(yīng)的特定操作。這種方法還帶來(lái)另外一個(gè)好處,即可以通過(guò)ds2432安全存儲(chǔ)器的設(shè)定值有選擇地授權(quán)和使能參考設(shè)計(jì)的功能。(有關(guān)此概念的更多信息,見(jiàn)軟件功能管理一節(jié)。)
具有64位有效密鑰的ds2432可通過(guò)以下兩種安全方法提供給被授權(quán)者或第三方制造商:a) 由參考設(shè)計(jì)授權(quán)公司預(yù)先編程;或b) 由maxim/dallas semiconductor根據(jù)授權(quán)公司的輸入信息預(yù)先編程并供貨給第三方制造商。無(wú)論采用何種方法,供給被授權(quán)者或制造商的器件數(shù)量都是已知的,可據(jù)此收取授權(quán)許可費(fèi)用。
驗(yàn)證硬件的合法性
驗(yàn)證硬件的合法性時(shí),需要考慮兩種情況(圖5):1) 克隆電路板完全拷貝固件/fpga配置信息;以及2) 克隆系統(tǒng)主機(jī)。
第一種情況下,固件/fpga試圖認(rèn)證克隆的電路板??寺≈圃焐桃蛴脩鬳eprom寫(xiě)入數(shù)據(jù),必須向ds2432裝入密鑰。盡管這使數(shù)據(jù)看似正確,而密鑰在系統(tǒng)中卻是無(wú)效的。由于改動(dòng)固件/fpga極為復(fù)雜,為保持和主機(jī)兼容,必須精確拷貝原始固件/配置信息。如果在上電階段電路板執(zhí)行ds2432質(zhì)詢-響應(yīng)認(rèn)證過(guò)程,則ds2432產(chǎn)生的mac與微控制器/fpga計(jì)算出的mac不同。mac不匹配充分證明電路板是不合法的。系統(tǒng)與電路板之間執(zhí)行質(zhì)詢/響應(yīng)過(guò)程可以檢測(cè)到該失配現(xiàn)象,并據(jù)此采取相應(yīng)的特定操作。
第二種情況下,電路板試圖認(rèn)證主機(jī)系統(tǒng)。電路板通過(guò)以下步驟驗(yàn)證主機(jī)的身份:1) 產(chǎn)生質(zhì)詢碼,由ds2432計(jì)算質(zhì)詢-響應(yīng)認(rèn)證碼mac;2) 向網(wǎng)絡(luò)主機(jī)發(fā)送計(jì)算mac的相同輸入數(shù)據(jù)(當(dāng)然不包括密鑰),主機(jī)根據(jù)這些數(shù)據(jù)和自己掌握的密鑰計(jì)算并返回質(zhì)詢-響應(yīng)認(rèn)證碼mac。如果二者產(chǎn)生的mac相同,則電路板斷定主機(jī)是合法的。當(dāng)然,如果ds2432和網(wǎng)絡(luò)主機(jī)有約定的話,也能獲得相同的mac。
軟件功能管理
電子產(chǎn)品涵蓋手持式產(chǎn)品到安裝于機(jī)架上的單元。單元的尺寸越大,開(kāi)發(fā)的成本越昂貴。為使成本得到有效控制,利用一些較小的子系統(tǒng)(電路板)來(lái)構(gòu)建大型系統(tǒng)是非常有益的。通常,應(yīng)用中并不需要子系統(tǒng)的所有功能。最具成本效益的作法不是去除這些功能,而是保持電路板不變,僅在控制軟件中禁用某些功能。但這種方法又會(huì)產(chǎn)生新的問(wèn)題:如果聰明的客戶需要一些功能完備的系統(tǒng),他可以只購(gòu)買(mǎi)一套功能完備的單元和一些功能較少的單元。通過(guò)軟件拷貝,功能較少的單元就可以提供完備的功能,而價(jià)格卻更低,因此欺騙了系統(tǒng)供應(yīng)商。
每個(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),這一點(diǎn)將在數(shù)據(jù)安全一節(jié)進(jìn)一步闡述。配置信息可以存儲(chǔ)為位圖形式或代碼字形式,完全由系統(tǒng)設(shè)計(jì)者決定。根據(jù)實(shí)際需要,應(yīng)盡可能簡(jiǎn)單地設(shè)置配置信息。由于ds2432提供方便的1-wire接口,設(shè)計(jì)者只需增加一個(gè)晶體管和一個(gè)探測(cè)點(diǎn),如圖6所示。可以在電路板其它部分不上電的情況下,通過(guò)探測(cè)點(diǎn)向ds2432寫(xiě)入配置信息。mosfet將ds2432與其它電路隔離,當(dāng)子系統(tǒng)正常工作時(shí),也不會(huì)妨礙ds2432的正常訪問(wèn)。
該配置寫(xiě)入方法還帶來(lái)另一個(gè)好處,系統(tǒng)在用戶現(xiàn)場(chǎng)安裝完畢后,允許進(jìn)行遠(yuǎn)程更新/更改。任何未用于配置/功能管理的用戶eeprom均可采用電子標(biāo)牌的形式實(shí)現(xiàn)電路板標(biāo)識(shí)功能。該功能在應(yīng)用筆記178: 利用1-wire產(chǎn)品標(biāo)識(shí)印刷電路板中進(jìn)行了詳細(xì)說(shuō)明,此應(yīng)用筆記178可從maxim網(wǎng)站下載。
ds2432認(rèn)證功能詳細(xì)說(shuō)明
器件總體架構(gòu)
ds2432 1-wire接口、1kb sha-1安全存儲(chǔ)器的主要數(shù)據(jù)單元和數(shù)據(jù)流路徑如圖7所示??梢钥吹?字節(jié)密鑰和臨時(shí)存儲(chǔ)質(zhì)詢碼的緩沖存儲(chǔ)器(暫存器)。前面未曾提及的數(shù)據(jù)單元包括獨(dú)一無(wú)二的器件id號(hào)(標(biāo)準(zhǔn)1-wire特性)、四個(gè)用戶eeprom頁(yè)面、控制寄存器和系統(tǒng)常數(shù)。
器件id用作1-wire網(wǎng)絡(luò)中的節(jié)點(diǎn)地址,同時(shí)還用于認(rèn)證過(guò)程。用戶存儲(chǔ)器存放待認(rèn)證“信息”的主要部分。系統(tǒng)常數(shù)有助于滿足格式需求和完成填充功能,從而構(gòu)成sha-1計(jì)算的64字節(jié)輸入數(shù)據(jù)塊??刂萍拇嫫鲌?zhí)行特定的器件功能,例如可選的密鑰寫(xiě)保護(hù)或eeprom仿真模式;控制寄存器通常不參與認(rèn)證過(guò)程。
可毫無(wú)限制地讀取器件id號(hào)和用戶eeprom。并可完全讀/寫(xiě)訪問(wèn)緩沖存儲(chǔ)器??梢灾苯友b入密鑰,但永遠(yuǎn)不能讀取它。改變用戶存儲(chǔ)器或寄存器的內(nèi)容要求主機(jī)和從機(jī)(即ds2432)計(jì)算出相同的寫(xiě)操作認(rèn)證mac,才可以打開(kāi)緩沖存儲(chǔ)器至eeprom的路徑。
取決于mac結(jié)果的不同用途,ds2432 sha-1引擎具有三種不同的工作方式。任何情況下,sha-1引擎均接收64字節(jié)輸入數(shù)據(jù),并計(jì)算出20字節(jié)mac結(jié)果。不同之處在于輸入數(shù)據(jù)。作為安全系統(tǒng)的根本需求,主機(jī)必須要么知道、要么能夠計(jì)算出應(yīng)用中有效/合法從器件的密鑰。
質(zhì)詢-響應(yīng)認(rèn)證mac
正如前面的應(yīng)用示例所述,ds2432的主要功能是完成質(zhì)詢-響應(yīng)認(rèn)證。主機(jī)發(fā)送一個(gè)隨機(jī)質(zhì)詢碼,指示ds2432根據(jù)該質(zhì)詢碼、密鑰、主機(jī)所選存儲(chǔ)器頁(yè)的數(shù)據(jù)、以及其它數(shù)據(jù)(這些數(shù)據(jù)共同構(gòu)成信息)計(jì)算出響應(yīng)mac
(見(jiàn)圖8)。
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)過(guò)程。質(zhì)詢碼是隨機(jī)數(shù)據(jù)這一點(diǎn)是非常重要的。如果質(zhì)詢碼始終不變,很容易遭受一個(gè)利用有效、靜態(tài)、記錄和回放的mac (不是使用認(rèn)證ds2432實(shí)時(shí)算出的mac)進(jìn)行回放攻擊。
數(shù)據(jù)安全
除了提供從器件的認(rèn)證功能外,同時(shí)強(qiáng)烈要求存放在器件中的數(shù)據(jù)是可信的。為實(shí)現(xiàn)這一點(diǎn),ds2432的寫(xiě)訪問(wèn)是安全受限的。將數(shù)據(jù)從暫存器拷貝到eeprom或控制寄存器之前,ds2432要求主機(jī)提供寫(xiě)訪問(wèn)認(rèn)證mac來(lái)證明其合法身份。ds2432根據(jù)暫存器中的新數(shù)據(jù)、密鑰、需要更新的存儲(chǔ)器頁(yè)數(shù)據(jù)、以及其它數(shù)據(jù)(圖9)計(jì)算該mac。
合法主機(jī)知道密鑰并可計(jì)算出有效的寫(xiě)訪問(wèn)mac??截惷顖?zhí)行過(guò)程中收到主機(jī)mac時(shí),ds2432將其與自身計(jì)算的結(jié)果進(jìn)行比較。只有當(dāng)二者匹配時(shí),數(shù)據(jù)才會(huì)從緩沖存儲(chǔ)器傳輸至目標(biāo)eeprom。當(dāng)然,不能修改寫(xiě)保護(hù)的存儲(chǔ)器頁(yè),即使mac是正確的。
密鑰保護(hù)
ds2432的架構(gòu)允許直接向器件裝入密鑰??赏ㄟ^(guò)讀保護(hù)提供密鑰保護(hù),如果需要,還可以采用寫(xiě)保護(hù)提供密鑰保護(hù),這將永遠(yuǎn)不能改變密鑰。只要在設(shè)備制造現(xiàn)場(chǎng)訪問(wèn)密鑰是安全和可控的,這種保護(hù)等級(jí)是很有效的。
可以采用不同方法提升密鑰保護(hù)等級(jí): a) 由ds2432計(jì)算其密鑰;b) 由ds2432在不同場(chǎng)合分階段計(jì)算其密鑰;c) 計(jì)算密鑰時(shí)包含獨(dú)一無(wú)二的器件id號(hào),生成與器件相關(guān)的密鑰;d) 組合第2和第3種方法。
如果采用上面第1種方法,每個(gè)ds2432自己計(jì)算其密鑰,只知道計(jì)算密鑰的原始數(shù)據(jù);永遠(yuǎn)不會(huì)暴露密鑰本身。如果采用第2種方法,密鑰在不同場(chǎng)合分階段計(jì)算,只知道密鑰的“本地”原始數(shù)據(jù)。這種方法可有效控制“最終”密鑰的信息。如果密鑰是與器件相關(guān)的(第3種方法),主機(jī)還需要增加一個(gè)計(jì)算步驟。但如果一個(gè)器件的密鑰被意外發(fā)現(xiàn),潛在危害卻可降至最低。如果密鑰分階段計(jì)算,并且與具體器件相關(guān)(第4種方法),可獲得最高保護(hù)等級(jí)。但是,為確保系統(tǒng)保密性,主機(jī)和從機(jī)一樣需要在不同地點(diǎn)進(jìn)行設(shè)置。
計(jì)算密鑰之前,必須先裝入一個(gè)已知數(shù)值作為密鑰。有了這個(gè)已知密鑰,必須向四個(gè)存儲(chǔ)器頁(yè)之一寫(xiě)入計(jì)算新密鑰的32字節(jié)數(shù)據(jù)。接下來(lái),需要向ds2432的暫存器寫(xiě)入一個(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引擎,使用圖10所示的輸入數(shù)據(jù)計(jì)算mac。20字節(jié)mac的最低8個(gè)字節(jié)自動(dòng)拷貝到密鑰存儲(chǔ)器地址,立即成為有效密鑰。
結(jié)論
了解安全認(rèn)證功能并巧妙實(shí)現(xiàn),可提供極具競(jìng)爭(zhēng)力的優(yōu)勢(shì)。認(rèn)證不但保護(hù)了程序代碼,而且公共硬件平臺(tái)利用安全的軟件功能設(shè)置有助于降低生產(chǎn)成本。ds2432的數(shù)據(jù)安全性甚至可以實(shí)現(xiàn)遠(yuǎn)程配置修改,節(jié)省了技術(shù)人員的寶貴時(shí)間。從ds2432所展示的功能可以看出,一個(gè)小小的硅晶片將對(duì)收益產(chǎn)生巨大的影響。
評(píng)論