系統(tǒng)安全基石IP-OTPC :OTPC的概述與工作原理
前言
OTP是為設(shè)備提供一次性編程功能的模塊。
這種編程的結(jié)果是非易失性的,并且與閃存不同,無(wú)法逆轉(zhuǎn)。OTP功能通過(guò)開(kāi)源OTP控制器和專有OTP IP構(gòu)建。
OTP控制器提供:
?一個(gè)開(kāi)源抽象接口,軟件可以使用它與下面的專有OTP塊進(jìn)行交互。
?一種開(kāi)源抽象接口,硬件組件(例如生命周期控制器和密鑰管理器)可以使用該接口與下面的專有OTP塊進(jìn)行交互。
?高級(jí)邏輯安全保護(hù),如完整性檢查和對(duì)敏感內(nèi)容的加擾。
? OTP內(nèi)容可讀和可編程時(shí)的軟件隔離。
專有OTP IP提供:
?可靠的非易失性存儲(chǔ)。
?技術(shù)特定的冗余或糾錯(cuò)機(jī)制。
?物理防御特征,如SCA和FI抵抗。
OTP控制器和IP一起提供了在設(shè)備的整個(gè)生命周期(LC)中使用的安全一次性編程功能。
特征
?底層OTP IP的多個(gè)邏輯分區(qū)
?每個(gè)分區(qū)都可鎖定并檢查完整性
?完整性摘要存儲(chǔ)在每個(gè)邏輯庫(kù)旁邊
?OTP值的定期/持續(xù)檢查
?定期檢查陰影內(nèi)容與摘要
?定期檢查OTP存儲(chǔ)的內(nèi)容和陰影內(nèi)容
?持續(xù)檢查即時(shí)錯(cuò)誤
?獨(dú)立的生命周期分區(qū)和與生命周期控制器的接口
?支持生命周期功能,但不能被完整性鎖定
?使用全局網(wǎng)表常量對(duì)秘密OTP分區(qū)進(jìn)行輕量級(jí)加擾
?用于RAM加擾機(jī)制的輕量級(jí)短暫密鑰派生功能
?FLASH加擾機(jī)制的輕量級(jí)密鑰推導(dǎo)功能
OTP控制器概述
OTP的功能分為開(kāi)源和閉源兩部分,兩者之間有明確的邊界,如下面簡(jiǎn)化的高級(jí)框圖所示。
在這里插入圖片描述
開(kāi)源控制器的任務(wù)是為OTP用戶提供一個(gè)通用的、非技術(shù)特定的接口,該接口具有通用寄存器接口和明確定義的硬件I/O接口。
開(kāi)源控制器實(shí)現(xiàn)了OTP存儲(chǔ)的邏輯隔離和分區(qū),使用戶可以將OTP的不同功能劃分為具有不同屬性的“分區(qū)”。
最后,
?開(kāi)源控制器通過(guò)為每個(gè)分區(qū)提供完整性摘要,
?并在需要時(shí)對(duì)分區(qū)進(jìn)行加擾,
?為特定分區(qū)提供了高級(jí)別的安全性。
另一方面,專有IP將通用訪問(wèn)接口轉(zhuǎn)換為技術(shù)特定的OTP接口,用于功能訪問(wèn)和調(diào)試訪問(wèn)(例如對(duì)宏內(nèi)部控制結(jié)構(gòu)的寄存器訪問(wèn))。
這種分離意味著每個(gè)專有的OTP IP都必須實(shí)現(xiàn)從標(biāo)準(zhǔn)化OpenTitan接口到底層模塊的轉(zhuǎn)換層。
這也意味著,無(wú)論OTP存儲(chǔ)或文字大小在下面如何變化,開(kāi)源控制器都必須提供一致和連貫的軟件和硬件接口。
這個(gè)標(biāo)準(zhǔn)化接口將在下文中進(jìn)一步定義,包裝器利用OpenTitan其他部分中使用的相同技術(shù)原始機(jī)制來(lái)包裝和抽象可能是閉源的技術(shù)特定宏(如存儲(chǔ)器和時(shí)鐘單元)。
工作原理
從概念上講,OTP功能處于高級(jí),分為“前端”和“后端”。
?“前端”包含邏輯分區(qū),這些分區(qū)為系統(tǒng)的硬件和軟件使用者接口提供信息。
?“后端”表示硬件和軟件組件用來(lái)存儲(chǔ)即將到來(lái)的值的編程接口。
下圖說(shuō)明了這種行為模型。
在這里插入圖片描述
請(qǐng)注意,前端同時(shí)包含緩沖分區(qū)和非緩沖分區(qū)。
每個(gè)電源循環(huán)感應(yīng)一次緩沖分區(qū),并將其內(nèi)容存儲(chǔ)在寄存器中,而按需讀取未緩沖分區(qū)。
前者通常是包含硬件配置位、關(guān)鍵材料和生命周期狀態(tài)等數(shù)據(jù)的分區(qū),這些數(shù)據(jù)需要始終可用于硬件,
而后者是很少訪問(wèn)的大型分區(qū),例如軟件配置。
通過(guò)編程接口(與讀取驗(yàn)證相結(jié)合)編程到緩沖分區(qū)中的值只是“暫存”的,直到下一次電源循環(huán)才生效。
下面的部分描述了OTP控制器的各個(gè)部件的操作以及它如何支持所描述的功能。
Logical Partitions
OTP在邏輯上被劃分為表示不同功能的分區(qū)。這意味著隔離是虛擬的,由OTP控制器而不是底層OTP IP來(lái)維護(hù)。
在每個(gè)邏輯分區(qū)中,都有特定的可執(zhí)行屬性:
?通過(guò)秘密分區(qū)進(jìn)行保密
?這控制特定分區(qū)是否包含機(jī)密數(shù)據(jù)。
?如果分區(qū)是秘密的,那么一旦鎖定,軟件就無(wú)法讀取分區(qū),并在存儲(chǔ)中進(jìn)行加擾。
?讀取鎖定能力
?這控制特定分區(qū)是否禁用后期軟件的軟件可讀性。
?一些分區(qū)可以靜態(tài)鎖定(通過(guò)在OTP中計(jì)算和存儲(chǔ)相關(guān)摘要),其他分區(qū)可以在運(yùn)行時(shí)通過(guò)CSR讀取鎖定。
?寫(xiě)入鎖定能力
?這控制分區(qū)是否被鎖定并阻止將來(lái)更新。
?鎖定分區(qū)與摘要一起存儲(chǔ),以便稍后用于完整性驗(yàn)證。
?完整性驗(yàn)證
?一旦分區(qū)通過(guò)計(jì)算并向其寫(xiě)入非零摘要而被寫(xiě)鎖定,它就可以進(jìn)行周期性驗(yàn)證(時(shí)間范圍可由軟件配置)。這種驗(yàn)證有兩種形式,分區(qū)完整性檢查和存儲(chǔ)一致性檢查。
由于OTP本質(zhì)上類似于存儲(chǔ)器(每個(gè)地址位置只輸出一定數(shù)量的位),一些邏輯分區(qū)被緩沖在寄存器中,用于硬件的即時(shí)和并行訪問(wèn)。
這是一個(gè)關(guān)鍵點(diǎn),因?yàn)樵谕娭?,這些特定的OTP內(nèi)容被存儲(chǔ)在觸發(fā)器中并來(lái)源于系統(tǒng)。
也就是說(shuō),緩沖分區(qū)不是直接來(lái)自O(shè)TP宏本身。因此,易失性存儲(chǔ)器(OTP控制器)和非易失性存儲(chǔ)(OTP IP)的安全性變得重要。
分區(qū)列表和描述
OpenTitan的OTP控制器包含如下所示的七個(gè)邏輯分區(qū)。
在這里插入圖片描述
一般來(lái)說(shuō),設(shè)備的生產(chǎn)生命周期分為5個(gè)階段“制造”->“校準(zhǔn)和測(cè)試”->“供應(yīng)”->“任務(wù)”->“RMA”。OTP值通常在“校準(zhǔn)和測(cè)試”、“供應(yīng)”和“RMA”階段進(jìn)行編程,
校準(zhǔn)和測(cè)試-Calibration and Test
在此階段,對(duì)設(shè)備進(jìn)行功能測(cè)試和校準(zhǔn),以確保一致性。
校準(zhǔn)可以集中在許多事情上,但通常以調(diào)整時(shí)鐘、電壓和定時(shí)源為中心,以消除工藝變化。
這些校準(zhǔn)值被編程到CREATOR_SW_CFG分區(qū)中,因?yàn)樗鼈兪欠菣C(jī)密值,旨在由軟件讀出并編程到相應(yīng)的外圍設(shè)備中。
在這個(gè)階段的早期,各種tokens 也被編程到秘密分區(qū)中,并由芯片廠商創(chuàng)造者讀出使用。
預(yù)配置-Provisioning
在此階段,為設(shè)備提供最終固件和“唯一”種子或標(biāo)識(shí)。
秘密分區(qū)填充有根秘密和密鑰,這些密鑰對(duì)建立設(shè)備標(biāo)識(shí)至關(guān)重要。
作為注入最終固件的一部分,還對(duì)庫(kù)存單元特定的硬件和軟件配置進(jìn)行了編程。
生命周期劃分-Life Cycle Partition
生命周期分區(qū)在所有階段都是活動(dòng)的,因此它是唯一不能鎖定的分區(qū)。
設(shè)備完成供應(yīng)并投入生產(chǎn)后,必須保留在發(fā)生意外故障時(shí)轉(zhuǎn)換回RMA的能力。
為了支持這種轉(zhuǎn)換,生命周期狀態(tài)和計(jì)數(shù)器必須始終是可更新的。
生命周期控制器是芯片互連總線上的外圍設(shè)備模塊,因此遵循可組裝性規(guī)范。
生命周期實(shí)施是指包含所有生命周期功能的設(shè)計(jì)。這涉及以下模塊的功能,這些模塊未按特定順序列出:
?The life cycle controller itself - A new peripheral
?The key manager
?The flash controller
?The OTP controller
?The reset / power controller
?The debug infrastructure, specifically TAP isolation
?Any other peripheral where life cycle information may alter its behavior
生命周期控制器提供以下功能:
?專用OTP接口,用于讀取和更新冗余編碼的設(shè)備生命周期狀態(tài)。
? CSR和JTAG接口,用于啟動(dòng)生命周期轉(zhuǎn)換。
?冗余生命周期狀態(tài)的專用并行解碼和冗余編碼的生命周期資格信號(hào)的廣播(例如,啟用DFT功能或主處理器)。
?一種令牌哈希和匹配機(jī)制,用于保護(hù)重要的生命周期轉(zhuǎn)換。
?警報(bào)子系統(tǒng)的升級(jí)接收器,它允許作為升級(jí)序列的一部分使生命周期狀態(tài)無(wú)效(另請(qǐng)參閱警報(bào)處理程序子系統(tǒng))。
Locking a Partition
當(dāng)軟件確定不再對(duì)某個(gè)分區(qū)進(jìn)行任何更新時(shí),對(duì)該分區(qū)的寫(xiě)入訪問(wèn)可以被永久鎖定。
為了鎖定,完整性常數(shù)與該分區(qū)的其他數(shù)據(jù)一起計(jì)算和編程。
完整性常數(shù)的大小取決于分區(qū)大小顆粒,是32位還是64位(另請(qǐng)參閱直接訪問(wèn)內(nèi)存映射)。
一旦“完整性摘要”為非零,就不允許進(jìn)行進(jìn)一步的更新。如果分區(qū)是秘密的,軟件將無(wú)法再讀取其內(nèi)容(請(qǐng)參閱秘密分區(qū)描述)。
但是,請(qǐng)注意,在所有分區(qū)中,摘要本身總是可讀的。這使軟件有機(jī)會(huì)確認(rèn)鎖定操作是否正確進(jìn)行,如果沒(méi)有,則立即報(bào)廢零件。
完整性摘要的計(jì)算取決于分區(qū)是否需要定期的后臺(tái)驗(yàn)證。
供應(yīng)商測(cè)試分區(qū)
供應(yīng)商測(cè)試分區(qū)旨在用于制造流程中的OTP編程冒煙檢查。
芯片供應(yīng)商可以在prim_otp包裝器的專有版本中實(shí)現(xiàn)這些檢查。
此分區(qū)的行為與任何其他SW分區(qū)類似,但ECC不可糾正的錯(cuò)誤不會(huì)像在所有其他分區(qū)中那樣導(dǎo)致致命錯(cuò)誤/警報(bào)。
這是由于OTP編程煙霧檢查的性質(zhì),這可能使某些OTP字處于與OTP讀出時(shí)使用的ECC多項(xiàng)式不一致的狀態(tài)。
Software Configuration Partitions
軟件配置分區(qū)用作標(biāo)志、配置和校準(zhǔn)數(shù)據(jù)的非易失性存儲(chǔ)器。
因此,作為代碼執(zhí)行的一部分,這個(gè)分區(qū)的內(nèi)容通常被消耗一次,或者被移動(dòng)到設(shè)計(jì)中的另一個(gè)存儲(chǔ)隔間。
例如,時(shí)鐘校準(zhǔn)值和LDO校準(zhǔn)值在啟動(dòng)時(shí)編程到模擬傳感器頂部(AST)。
因此,沒(méi)有必要在OTP源處定期檢查。相反,軟件可以簡(jiǎn)單地作為安全引導(dǎo)的一部分進(jìn)行檢查,并在將這些值編程到外圍設(shè)備中時(shí)采取其他措施。
因此,對(duì)于該分區(qū),軟件有責(zé)任計(jì)算完整性摘要并將其編程到OTP中。在主內(nèi)存中對(duì)該分區(qū)(部分)進(jìn)行陰影處理也是合理的,并且OTP內(nèi)容不會(huì)對(duì)硬件產(chǎn)生直接影響。
Hardware Configuration and Secret Partitions
硬件和秘密分區(qū)直接影響下游硬件。
內(nèi)容必須經(jīng)過(guò)定期的完整性檢查,因此當(dāng)軟件提供鎖定意圖時(shí),存儲(chǔ)的摘要由硬件計(jì)算(而不是必須由軟件計(jì)算摘要的軟件分區(qū))。
生命周期劃分
生命周期分區(qū)無(wú)法鎖定,因此不會(huì)包含存儲(chǔ)的摘要。然而,請(qǐng)注意,只有生命周期控制器可以訪問(wèn)該分區(qū),即,直接訪問(wèn)接口(DAI)不能從生命周期分區(qū)讀取或?qū)懭搿?/p>
Secret vs Non-Secret Partitions
非機(jī)密OTP分區(qū)保存可以公開(kāi)的數(shù)據(jù);或?qū)Π踩詻](méi)有影響的數(shù)據(jù)。例如,鎖定位的當(dāng)前值或時(shí)鐘校準(zhǔn)值。這些值以明文形式存儲(chǔ)在OTP中。
機(jī)密分區(qū)包含對(duì)安全至關(guān)重要的數(shù)據(jù),例如FLASH加擾密鑰、設(shè)備根機(jī)密和解鎖令牌。這些值被加擾地存儲(chǔ)在OTP中,并且在讀取時(shí)被解擾。目前使用的密碼是PRESENT,因?yàn)樗苓m合迭代分解,而且它是一種已被證明的輕量級(jí)分組密碼(另請(qǐng)參閱PRESENT加擾原語(yǔ)。然而,分組密碼的使用意味著秘密分區(qū)只能寫(xiě)入64位塊。
此外,特定秘密分區(qū)的內(nèi)容一旦被鎖定就不能被軟件讀取(除了必須始終可讀的摘要之外);而非秘密分區(qū)總是可讀的,除非軟件明確地去除讀取可訪問(wèn)性。
不幸的是,機(jī)密分區(qū)必須使用全局網(wǎng)表密鑰進(jìn)行加擾操作,因?yàn)闆](méi)有其他非易失性存儲(chǔ)器來(lái)存儲(chǔ)唯一密鑰。
Partition Checks
Integrity
一旦鎖定了適當(dāng)?shù)姆謪^(qū),硬件完整性檢查器就采用兩種完整性檢查來(lái)驗(yàn)證易失性緩沖寄存器的內(nèi)容:
?所有緩沖分區(qū)都有額外的ECC保護(hù)(每個(gè)64位塊有8位ECC),同時(shí)進(jìn)行監(jiān)控。
?分區(qū)的摘要以半隨機(jī)間隔重新計(jì)算,并與存儲(chǔ)在分區(qū)旁邊的摘要進(jìn)行比較。
此檢查的目的不是在存儲(chǔ)觸發(fā)器和OTP之間進(jìn)行檢查,而是檢查緩沖寄存器內(nèi)容是否與計(jì)算的摘要保持一致。此驗(yàn)證主要關(guān)注存儲(chǔ)觸發(fā)器是否經(jīng)歷過(guò)故障攻擊。此檢查僅適用于HW_CFG和SECRET*分區(qū)。
如果遇到故障,OTP控制器將發(fā)出致命檢查錯(cuò)誤警報(bào)-fatal_check_error,并將其所有硬件輸出重置為默認(rèn)值。
Storage Consistency
這種驗(yàn)證確保存儲(chǔ)在緩沖寄存器中的值與OTP中的值保持一致。
該過(guò)程以半隨機(jī)間隔重新讀取OTP,并確認(rèn)讀取的值與存儲(chǔ)的值相同。
注意,如果存在并行的完整性檢查,則某些分區(qū)沒(méi)有必要檢查所有讀取內(nèi)容的一致性。
如果存在完整性摘要,則只需要讀取該摘要;否則,必須讀取所有值。
Secret Partition Integrity Checks-秘密分區(qū)完整性檢查
由于秘密分區(qū)是加擾存儲(chǔ)的,這也意味著完整性摘要是在加擾形式上計(jì)算的。
為了平衡所需的緩沖寄存器數(shù)量,緩沖寄存器中只保存秘密分區(qū)的解密形式。
硬件通過(guò)在通過(guò)摘要之前對(duì)數(shù)據(jù)進(jìn)行重新加擾來(lái)計(jì)算摘要。
Power-up and Sense
重置釋放時(shí),OTP控制器分區(qū)存儲(chǔ)必須輸出指定的安全默認(rèn)值(它不像空白OTP那樣總是0)。此默認(rèn)輸出必須保持,直到OTP控制器完成所有檢查。
OTP控制器讀取OTP IP。如果讀取通過(guò)OTP IP內(nèi)部檢查(例如ECC或冗余),則更新分區(qū)存儲(chǔ);然而,輸出仍然經(jīng)由輸出mux保持在默認(rèn)狀態(tài)。
在所有讀取完成后,OTP控制器對(duì)HW_CFG和SECRET*分區(qū)執(zhí)行完整性檢查。
如果分區(qū)在這一點(diǎn)上沒(méi)有通過(guò)完整性檢查,它將在狀態(tài)CSR中發(fā)出初始化錯(cuò)誤的信號(hào),并中止進(jìn)一步的初始化。
在所有完整性檢查完成后,OTP控制器釋放輸出門(mén)控并將輸出標(biāo)記為有效。但是,任何標(biāo)有“error”的分區(qū)都會(huì)繼續(xù)將其輸出保持在默認(rèn)狀態(tài)。
一旦完成上述步驟,緩沖寄存器中的分區(qū)存儲(chǔ)就不會(huì)再次更新(通過(guò)生命周期接口更新生命周期分區(qū)除外)。也就是說(shuō),通過(guò)編程接口編程到OTP的值在下一次電源循環(huán)之后才會(huì)在緩沖寄存器中可見(jiàn)。
在這一點(diǎn)上,分區(qū)存儲(chǔ)的輸出預(yù)計(jì)不會(huì)改變,除非定期檢查突然失敗。發(fā)生此故障時(shí),所有輸出都將恢復(fù)到默認(rèn)狀態(tài),并立即向警報(bào)處理程序觸發(fā)警報(bào)。
出于定時(shí)目的,OTP輸出可以被視為半靜態(tài),因?yàn)檫@種錯(cuò)誤事件應(yīng)該是罕見(jiàn)和特殊的。
Partition Defaults
分區(qū)默認(rèn)值是特定于上下文的。例如,鎖定特定訪問(wèn)的硬件配置項(xiàng)應(yīng)默認(rèn)為“無(wú)訪問(wèn)”。這確保了對(duì)OTP的故障攻擊不能輕易地將設(shè)計(jì)恢復(fù)到不安全狀態(tài)。
因此,這表明,當(dāng)OTP都是0和1時(shí),它應(yīng)該盡可能在受影響項(xiàng)目的編碼空間中反映無(wú)效或惰性狀態(tài)。這也意味著使用代理的重置狀態(tài)(例如密鑰管理器和生命周期)也應(yīng)默認(rèn)為無(wú)效/惰性狀態(tài)。
Program and Read Ports
如前所示,OTP分為前端和后端。后端接口主要用于更新OTP內(nèi)容,并讀取以進(jìn)行調(diào)試和驗(yàn)證。盡管是與邏輯分區(qū)分離的功能訪問(wèn)端口,但程序和讀取端口受到相同的訪問(wèn)控制。
當(dāng)分區(qū)被寫(xiě)鎖定時(shí),編程訪問(wèn)被禁止。如果分區(qū)是秘密的,則后端接口的讀取訪問(wèn)也被禁止(摘要必須始終可讀)。軟件還可以通過(guò)CSR設(shè)置禁用對(duì)軟件配置分區(qū)的任何讀取訪問(wèn),以防止后期軟件讀取任何內(nèi)容。
上述情況的例外是生命周期分區(qū)。生命周期控制器接口還充當(dāng)“后端”接口,始終具有編程訪問(wèn)權(quán)限,以確保生命周期狀態(tài)可以提前。
請(qǐng)注意,程序和讀取端口可能與正在進(jìn)行的后臺(tái)存儲(chǔ)檢查沖突,OTP控制器在這兩方之間進(jìn)行仲裁。將始終完成正在進(jìn)行的操作。之后,或者當(dāng)兩個(gè)請(qǐng)求同時(shí)到達(dá)時(shí),優(yōu)先級(jí)為生命周期>編程接口>通過(guò)CSR窗口的按需讀取訪問(wèn)>背景檢查。
Programming the OTP
OTP控制器有兩條編程路徑:
?通過(guò)軟件的功能編程路徑(程序端口),
?通過(guò)硬件的生命周期編程路徑。
功能接口用于更新除生命周期之外的所有分區(qū)。如前所述,在下一次重新啟動(dòng)之前,當(dāng)前電源周期中進(jìn)行的任何更新都不會(huì)反映在緩沖分區(qū)中。
生命周期接口僅用于更新生命周期狀態(tài)和轉(zhuǎn)換計(jì)數(shù)器。命令是從生命周期控制器發(fā)出的,類似地,成功或失敗的指示也被發(fā)送回生命周期控制器。與功能接口類似,生命周期控制器每個(gè)電源周期只允許一次更新,并且在請(qǐng)求的轉(zhuǎn)換之后恢復(fù)到惰性狀態(tài),直到重新啟動(dòng)。
請(qǐng)注意,req/ack協(xié)議在OTP時(shí)鐘上運(yùn)行。擾頻設(shè)備的任務(wù)是通過(guò)實(shí)例化prim_sync_repack.sv原語(yǔ)來(lái)同步握手協(xié)議,如下所示。
在這里插入圖片描述
OTPC對(duì)接的信號(hào)
?EDN Interface(隨機(jī)數(shù)熵,之前我們發(fā)過(guò)哦)
?Power Manager Interface
?Life Cycle Interfaces
?Interface to Key Manager(OTP里面存儲(chǔ)了一些密鑰,肯定要使用到Key Manager)
? Interface to Flash Scrambler 到FLASH加擾設(shè)備的接口是一個(gè)簡(jiǎn)單的req/ack接口,該接口為閃存控制器提供用于數(shù)據(jù)和地址加擾的兩個(gè)128位密鑰。用來(lái)加擾解擾內(nèi)存
在這里插入圖片描述
?Interfaces to SRAM and OTBN Scramblers
-
控制器
+關(guān)注
關(guān)注
112文章
16103瀏覽量
177067 -
編程
+關(guān)注
關(guān)注
88文章
3565瀏覽量
93535 -
OTP
+關(guān)注
關(guān)注
4文章
180瀏覽量
47075
原文標(biāo)題:工作原理
文章出處:【微信號(hào):IP與SoC設(shè)計(jì),微信公眾號(hào):IP與SoC設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論