作者:Maxim Integrated技術(shù)團(tuán)隊主要成員 Bernhard Linke 最近十年,SHA-1安全認(rèn)證一直作為防偽及防止非法竊取知識產(chǎn)權(quán)(IP)的有力武器。但是現(xiàn)在,隨著計算機(jī)技術(shù)信息處理的進(jìn)步,用戶亟待獲取更高級別的安全方案。 基于這一需求,我們推出了一組新的SHA-256安全認(rèn)證器和配套的安全協(xié)處理器。這項新技術(shù)提供高級物理安全,實現(xiàn)無與倫比的低成本IP保護(hù)、防克隆及外設(shè)安全認(rèn)證技術(shù)。本文介紹基于SHA-256安全認(rèn)證的工作原理,概要介紹安全認(rèn)證系統(tǒng)采用的雙向認(rèn)證功能。 安全認(rèn)證系統(tǒng) 實現(xiàn)安全認(rèn)證系統(tǒng)要求利用傳感器/外設(shè)模塊連接主機(jī)系統(tǒng)。圖1所示的系統(tǒng)由SHA-256安全認(rèn)證器和SHA-256安全協(xié)處理器組成。主機(jī)通過行業(yè)標(biāo)準(zhǔn)I2C總線與認(rèn)證器和協(xié)處理器通信。 圖1:SHA-256安全認(rèn)證系統(tǒng)的實施方案。該系統(tǒng)包括DeepCover DS2465 SHA-256安全協(xié)處理器和DeepCover DS28C22安全認(rèn)證器。 SHA-256安全認(rèn)證器 該系統(tǒng)的SHA-256安全認(rèn)證器支持256位質(zhì)詢,采用256位密鑰。圖1所示安全認(rèn)證器為I2C從機(jī),具有唯一的64位ROM ID,作為安全認(rèn)證計算的基本數(shù)據(jù)單元。系統(tǒng)設(shè)計者可將3Kb用戶EEPROM劃分為開放(無保護(hù))訪問的區(qū)域、主控制器必須具備授權(quán)的寫訪問區(qū)域、涉及數(shù)據(jù)加密的讀/寫區(qū)域。可結(jié)合安全認(rèn)證進(jìn)行加密,進(jìn)一步提高數(shù)據(jù)安全性。表1所示為可用的保護(hù)模式。 表1:安全認(rèn)證保護(hù)選項** SHA-256安全協(xié)處理器 圖1所示的SHA-256安全協(xié)處理器使主處理器無需參與SHA-256計算。更重要的是,安全協(xié)處理器內(nèi)置保護(hù)存儲器,可安全儲存主密鑰。保留附加存儲器,以儲存、保護(hù)用于計算唯一從密鑰的其它數(shù)據(jù)單元。從主機(jī)側(cè)看,SHA-256安全協(xié)處理器為256字節(jié)讀/寫存儲器,特定區(qū)域(數(shù)據(jù)單元)分配給特殊目的。 安全邏輯 基于SHA的安全性取決于由公開數(shù)據(jù)及密鑰計算得到的信息驗證碼(MAC)。為確保安全驗證,兩側(cè)(即主機(jī)或協(xié)處理器和安全認(rèn)證器)必須知道“永不泄露”的密鑰。此外,為實現(xiàn)最大程度的安全性,每個安全認(rèn)證器中的密鑰必須唯一。按照這種方式,一旦某個安全認(rèn)證器的密鑰受到威脅,整個系統(tǒng)的安全性不受影響。 咋一看,似乎沒有辦法達(dá)到這些目標(biāo)。但我們采用了一個簡單的解決途徑,即利用一些“數(shù)據(jù)源”計算密鑰,然后在受信任/受控制的生產(chǎn)環(huán)境下將其安裝到安全認(rèn)證器內(nèi)部。用于計算唯一安全認(rèn)證密鑰的數(shù)據(jù)源包括:主密鑰、綁定數(shù)據(jù)、分密鑰、安全認(rèn)證器的ROM ID,以及填充符/格式化符號(“其它數(shù)據(jù)”),過程如圖2所示。盡管數(shù)據(jù)源在某個時間點是公開的,例如在受信任的生產(chǎn)環(huán)境,但計算得到的密鑰永遠(yuǎn)不會暴露,始終是隱蔽的。 圖2:產(chǎn)生唯一的密鑰。 出于安全性和存儲空間的考慮,系統(tǒng)中所有安全存儲器的唯一密鑰不能儲存在安全協(xié)處理器或主機(jī)中;協(xié)處理器僅在受保護(hù)的存儲器部分儲存主密鑰和綁定數(shù)據(jù)。分密鑰是系統(tǒng)常數(shù),可在主處理器的固件中編碼并公開交換。讀取安全認(rèn)證器的ROM ID后,協(xié)處理器即可計算唯一密鑰,如圖2所示。然后安全認(rèn)證器和協(xié)處理器共用唯一的密鑰,系統(tǒng)即可進(jìn)行工作。 質(zhì)詢-應(yīng)答安全認(rèn)證 安全認(rèn)證的主要目的是驗證所連接的對象真實有效。基于對稱密鑰的認(rèn)證方法將密鑰和被驗證數(shù)據(jù)(即“信息”)作為輸入以計算MAC。主機(jī)利用預(yù)先制定的密鑰和相同信息數(shù)據(jù)執(zhí)行相同的計算,然后將計算得到的MAC與從安全認(rèn)證器接收到的MAC進(jìn)行比較。如果兩個MAC完全相同,則說明安全認(rèn)證器是系統(tǒng)的一部分。 在這種SHA-256安全認(rèn)證系統(tǒng)中,信息是主機(jī)質(zhì)詢和安全認(rèn)證器中儲存的數(shù)據(jù)單元組合。質(zhì)詢基于隨機(jī)數(shù)據(jù),這一點至關(guān)重要,如果質(zhì)詢從不變化,就為重放攻擊大開方便之門,即攻擊者記錄并回放有效的靜態(tài)MAC,而非即時計算MAC。 安全認(rèn)證器利用質(zhì)詢、密鑰、存儲器數(shù)據(jù)及附加數(shù)據(jù)計算一個MAC(圖3)。如果安全認(rèn)證器能夠計算任何質(zhì)詢碼的有效MAC,則可以認(rèn)為其已知密鑰并被視為可靠。 圖3:計算質(zhì)詢-應(yīng)答安全認(rèn)證MAC 安全認(rèn)證寫操作 除有效性驗證以外,多數(shù)系統(tǒng)還需要確保安全認(rèn)證器中儲存的數(shù)據(jù)可信。出于這一考慮,可對安全認(rèn)證器中的部分或全部EEPROM進(jìn)行“安全保護(hù)”。如果激活安全保護(hù),在執(zhí)行存儲器寫操作時,要求主機(jī)向安全認(rèn)證器提供主機(jī)安全認(rèn)證MAC,證明自身的有效性(圖4)。 圖4:寫保護(hù)操作(主機(jī)安全認(rèn)證MAC) 主機(jī)安全認(rèn)證MAC是利用新的存儲器數(shù)據(jù)、已有存儲器數(shù)據(jù)、安全認(rèn)證器的唯一密鑰以及ROM ID、附加數(shù)據(jù)計算得到的。安全認(rèn)證器按照相同方式計算一個MAC。 合法主機(jī)重建安全認(rèn)證器的密鑰,能夠生成有效的寫保護(hù)MAC。接收到來自主機(jī)的MAC時,安全認(rèn)證器將其與自身的計算結(jié)果進(jìn)行比較。只有兩個MAC相匹配時,才允許將數(shù)據(jù)寫入EEPROM。即使MAC正確,也不能更改受寫保護(hù)的用戶存儲區(qū)域。 加密讀、寫操作 DS28C22安全認(rèn)證器不僅具備普通的SHA-256安全認(rèn)證功能,始終不會暴露密鑰,甚至可以配置成在存儲器讀/寫操作期間也不暴露其存儲數(shù)據(jù)。這種增強保護(hù)方案是通過在傳輸期間對數(shù)據(jù)進(jìn)行加密實現(xiàn)的。在芯片內(nèi)部,以確定方式儲存數(shù)據(jù),以滿足安全認(rèn)證的需要。 寫操作加密采用一次性密碼本(OTP,根據(jù)主機(jī)提供的加密種子計算得到)、安全認(rèn)證器的密鑰、安全認(rèn)證器的部分ROM ID以及其它數(shù)據(jù)(填充符、格式化符號以及數(shù)據(jù)地址相關(guān)的數(shù)據(jù))。如圖5所示,這些數(shù)據(jù)單元組成一條消息,根據(jù)SHA-256算法對其進(jìn)行處理,得到的信息驗證代碼為OTP。主機(jī)將新存儲器數(shù)據(jù)與OTP中對應(yīng)的數(shù)據(jù)進(jìn)行XOR運算,然后發(fā)送至安全認(rèn)證器。安全認(rèn)證器再次執(zhí)行XOR運算,重建EEPROM中編程的原始數(shù)據(jù)。主機(jī)提供加密種子,種子應(yīng)為隨機(jī)數(shù)。按照這種方式,即使主機(jī)重復(fù)寫相同的數(shù)據(jù),對于I?C總線上的竊聽者,加密后的數(shù)據(jù)每次都不同。 圖5:加密寫操作。 讀操作加密類似于寫操作加密。盡管消息的數(shù)據(jù)單元實質(zhì)上是相同的,但“其它數(shù)據(jù)”存在差異,使得讀操作OTP不同于寫操作OTP,即使其它數(shù)據(jù)源完全相同。如圖6所示,安全認(rèn)證器讀取用戶存儲器中的數(shù)據(jù),將其與OTP進(jìn)行XOR運算,使主機(jī)能夠?qū)ζ溥M(jìn)行讀操作。然后主機(jī)利用其自身的OTP執(zhí)行XOR運算。如果主機(jī)能夠計算得到用于加密的安全認(rèn)證器密鑰和OTP,XOR運算步驟將成功解密數(shù)據(jù)。同樣,主機(jī)提供加密種子,種子應(yīng)為隨機(jī)數(shù)。現(xiàn)在,即使主機(jī)重復(fù)讀取相同的數(shù)據(jù),對于I?C總線上的竊聽者,數(shù)據(jù)每次都不同。 圖6:加密讀操作。 加密認(rèn)證寫操作 加密寫操作不能防止不知道安全認(rèn)證器密鑰的主處理器對存儲器進(jìn)行寫操作,盡管實際寫入存儲器的數(shù)據(jù)無用。當(dāng)然,破壞者可惡意耗盡存儲器,以此損害安全認(rèn)證器。為防止發(fā)生以上現(xiàn)象,設(shè)置為加密的存儲器區(qū)域應(yīng)在初始寫操作后采取寫保護(hù)或安全認(rèn)證保護(hù),只有合法主機(jī)可更改存儲器數(shù)據(jù)。 安全認(rèn)證器的密鑰和協(xié)處理器的主密鑰通過硬件設(shè)計進(jìn)行讀保護(hù)。如果需要,密鑰可采取寫保護(hù),防止利用已知密鑰代替未知密鑰來篡改安全認(rèn)證器的存儲數(shù)據(jù)。綁定數(shù)據(jù)一般儲存在協(xié)處理器的存儲器內(nèi),應(yīng)在安裝之后進(jìn)行讀保護(hù)。只要在受信任的生產(chǎn)環(huán)境下針對應(yīng)用設(shè)置協(xié)處理器和安全認(rèn)證器,這種級別的保護(hù)就非常有效。 加密認(rèn)證寫操作包括兩步:第一步中,主機(jī)按圖5所示對新數(shù)據(jù)進(jìn)行加密,然后將其送至安全認(rèn)證器;第二步中,主機(jī)按圖4所示計算寫操作安全認(rèn)證MAC,然后將其送至安全認(rèn)證器。相對于沒有加密的安全認(rèn)證寫操作,現(xiàn)在是根據(jù)已有加密存儲器數(shù)據(jù)和加密后的新數(shù)據(jù)計算得到MAC。 密鑰保護(hù) 安全認(rèn)證器的密鑰和安全協(xié)處理器的主密鑰通過硬件設(shè)計進(jìn)行讀保護(hù)。如果需要,密鑰可采取寫保護(hù),防止利用已知密鑰代替未知密鑰來篡改安全認(rèn)證器的數(shù)據(jù)。綁定數(shù)據(jù)一般儲存在協(xié)處理器的存儲器內(nèi),應(yīng)在安裝之后進(jìn)行讀保護(hù)。只要在受信任的生產(chǎn)環(huán)境下針對應(yīng)用設(shè)置協(xié)處理器和安全認(rèn)證器,這種級別的保護(hù)就非常有效。 DeepCover終極安全 Maxim Integrated的DeepCover技術(shù)提供強大、經(jīng)濟(jì)的保護(hù)方案,可防止試圖偵測密鑰的芯片級攻擊。DeepCover技術(shù)包括多種監(jiān)測芯片級篡改事件的有源電路,采用先進(jìn)的芯片級布線、布局技術(shù),以及專利技術(shù),有效抵御各種攻擊性操作。 雙向安全認(rèn)證 上述系統(tǒng)的密匙認(rèn)證支持質(zhì)詢-應(yīng)答安全認(rèn)證和寫保護(hù)操作(主機(jī)安全認(rèn)證)。整個用戶存儲器可用于質(zhì)詢-應(yīng)答安全認(rèn)證,雙向安全認(rèn)證適用于儲存安全數(shù)據(jù)(安全認(rèn)證寫操作)的存儲器區(qū)域。數(shù)據(jù)加密不妨礙質(zhì)詢-應(yīng)答安全認(rèn)證。始終利用用戶EEPROM中的未加密數(shù)據(jù)計算安全認(rèn)證MAC。 總結(jié) SHA-256的密鑰、質(zhì)詢和MAC均為256位,相對于原來的SHA-1安全認(rèn)證方案有了顯著改進(jìn)。本文介紹了最新的安全認(rèn)證系統(tǒng),該系統(tǒng)對主機(jī)系統(tǒng)(具有SHA-256協(xié)處理器的主控制)與傳感器/外設(shè)模塊(SHA-256安全認(rèn)證器)的匹配性進(jìn)行驗證。SHA-256安全認(rèn)證的實施方案比以往任何時候都簡單! 參考資料 1. 關(guān)于相互認(rèn)證的一般介紹,請參見Maxim Integrated應(yīng)用筆記3675《利用安全認(rèn)證保護(hù)您的研發(fā)成果》:www.maximintegrated.com/AN3675。 2. Maxim Integrated數(shù)據(jù)資料DS28C22。 3. Maxim Integrated數(shù)據(jù)資料DS28C22。 DeepCover是Maxim Integrated Products, Inc.的注冊商標(biāo)。 |