?
このドキュメントでは、 php中國(guó)語(yǔ)ネットマニュアル リリース
在此頁(yè)面上,您將看到公證服務(wù)體系結(jié)構(gòu)的概述。
本文檔假定您熟悉更新框架,但這里簡(jiǎn)要回顧一下 TUF 角色和相應(yīng)的密鑰層次結(jié)構(gòu):
根元數(shù)據(jù)文件,其中列出了根,目標(biāo),快照和時(shí)間戳公鑰的 ID??蛻舳耸褂眠@些公鑰來(lái)驗(yàn)證存儲(chǔ)庫(kù)中所有元數(shù)據(jù)文件的簽名。這個(gè)密鑰由一個(gè)集合所有者持有,并且應(yīng)該保持離線和安全,比其他密鑰更重要。
快照鍵簽名快照元數(shù)據(jù)文件,文件枚舉集合的根,目標(biāo)和委托元數(shù)據(jù)文件的文件名,大小和散列值。該文件用于驗(yàn)證其他元數(shù)據(jù)文件的完整性??煺贞P(guān)鍵字由集合所有者/管理員持有,或由公證服務(wù)持有以便于多個(gè)協(xié)作者通過(guò)委派角色進(jìn)行簽名。
時(shí)間戳記密鑰為時(shí)間戳記元數(shù)據(jù)文件簽名,文件通過(guò)使任何特定元數(shù)據(jù)的到期時(shí)間最短并通過(guò)指定集合的最近快照的文件名,大小和散列來(lái)為集合提供新鮮度保證。它用于驗(yàn)證快照文件的完整性。時(shí)間戳密鑰由公證服務(wù)持有,因此時(shí)間戳可以在服務(wù)器請(qǐng)求時(shí)自動(dòng)重新生成,而不是要求集合所有者在每個(gè)時(shí)間戳到期之前聯(lián)機(jī)。
目標(biāo)鍵對(duì)目標(biāo)元數(shù)據(jù)文件進(jìn)行簽名,目標(biāo)元數(shù)據(jù)文件列出集合中的文件名,以及它們的大小和相應(yīng)的散列值。該文件用于驗(yàn)證存儲(chǔ)庫(kù)某些或全部實(shí)際內(nèi)容的完整性。它也用于通過(guò)委派角色將信任委托給其他協(xié)作者。目標(biāo)鍵由集合所有者或管理員持有。
委托鍵為委托元數(shù)據(jù)文件簽名,其中列出了集合中的文件名以及它們的大小和相應(yīng)的散列。這些文件用于驗(yàn)證存儲(chǔ)庫(kù)某些或全部實(shí)際內(nèi)容的完整性。它們還用于通過(guò)較低級(jí)別的委派角色將信任委托給其他協(xié)作者。委托密鑰由集合所有者或管理員到集合協(xié)作者的任何人持有。
公證人客戶從一個(gè)或多個(gè)(遠(yuǎn)程)公證服務(wù)中提取元數(shù)據(jù)。一些公證客戶將把元數(shù)據(jù)推送到一個(gè)或多個(gè)公證服務(wù)。
公證服務(wù)由公證服務(wù)器組成,公證服務(wù)器存儲(chǔ)和更新關(guān)聯(lián)數(shù)據(jù)庫(kù)中多個(gè)可信集合的簽名 TUF 元數(shù)據(jù)文件,以及公證簽名人,公證簽名人存儲(chǔ)私鑰并為公證服務(wù)器簽署元數(shù)據(jù)。下圖說(shuō)明了這種架構(gòu):
根,目標(biāo)和(有時(shí))快照元數(shù)據(jù)由客戶端生成并簽署,客戶端將元數(shù)據(jù)上傳到公證服務(wù)器。服務(wù)器負(fù)責(zé):
確保上傳的元數(shù)據(jù)有效,簽名和自我一致
生成時(shí)間戳(有時(shí)是快照)元數(shù)據(jù)
存儲(chǔ)并向客戶提供任何可信收集的最新有效元數(shù)據(jù)
公證人簽名人負(fù)責(zé):
將使用 Javascript 對(duì)象簽名和加密進(jìn)行打包和加密的私人簽名密鑰存儲(chǔ)在與公證服務(wù)器數(shù)據(jù)庫(kù)分開(kāi)的數(shù)據(jù)庫(kù)中
每當(dāng)公證服務(wù)器請(qǐng)求時(shí)使用這些密鑰執(zhí)行簽名操作
下圖說(shuō)明了公證客戶端,服務(wù)器和簽署者之間的交互:
公證服務(wù)器可選擇支持使用 JWT 令牌的客戶端進(jìn)行身份驗(yàn)證。這需要一個(gè)管理訪問(wèn)控制的授權(quán)服務(wù)器,以及來(lái)自該授權(quán)服務(wù)器的包含用于簽署令牌的公鑰的證書(shū)包。如果在公證服務(wù)器上啟用令牌認(rèn)證,則任何沒(méi)有令牌的連接客戶端將被重定向到授權(quán)服務(wù)器。有關(guān)更多信息,請(qǐng)參閱 Docker Registry v2身份驗(yàn)證的文檔。
客戶端將通過(guò)基于 HTTPS 的基本身份驗(yàn)證登錄授權(quán)服務(wù)器,獲取不記名令牌,然后在將來(lái)的請(qǐng)求中將令牌提供給公證服務(wù)器。
當(dāng)客戶端上傳新的元數(shù)據(jù)文件時(shí),公證服務(wù)器會(huì)針對(duì)任何以前的版本檢查沖突,并驗(yàn)證上傳的元數(shù)據(jù)的簽名,校驗(yàn)和和有效性。
一旦所有上傳的元數(shù)據(jù)都得到驗(yàn)證,公證服務(wù)器就會(huì)生成時(shí)間戳(也可能是快照)元數(shù)據(jù)。它將這個(gè)生成的元數(shù)據(jù)發(fā)送給公證簽名者進(jìn)行簽名。
公證人簽名人從其數(shù)據(jù)庫(kù)中檢索必要的加密私鑰(如果有的話),解密密鑰并使用它們簽署元數(shù)據(jù)。如果成功,它將簽名發(fā)送回公證服務(wù)器。
公證服務(wù)器是可信數(shù)據(jù)集狀態(tài)的真實(shí)來(lái)源,將客戶端上傳的和服務(wù)器生成的元數(shù)據(jù)存儲(chǔ)在 TUF 數(shù)據(jù)庫(kù)中。生成的時(shí)間戳和快照元數(shù)據(jù)證明客戶端上傳的元數(shù)據(jù)文件是該受信任集合的最新信息。最后,公證服務(wù)器將通知客戶他們的上傳成功了。
客戶端現(xiàn)在可以立即從服務(wù)器下載最新的元數(shù)據(jù),使用仍然有效的持票人令牌進(jìn)行連接。公證服務(wù)器只需要從數(shù)據(jù)庫(kù)中獲取元數(shù)據(jù),因?yàn)闆](méi)有元數(shù)據(jù)已經(jīng)過(guò)期。在時(shí)間戳已過(guò)期的情況下,公證服務(wù)器將遍歷整個(gè)序列,并在其中生成新時(shí)間戳,請(qǐng)求公證簽名人簽名,將新簽名的時(shí)間戳存儲(chǔ)在數(shù)據(jù)庫(kù)中。然后它將這個(gè)新的時(shí)間戳以及剩余的元數(shù)據(jù)發(fā)送給請(qǐng)求客戶端。
服務(wù)器和簽名者都是針對(duì)公證服務(wù)的所有用戶的潛在攻擊媒介??蛻舳嗣荑€也是潛在的攻擊媒介,但并不一定針對(duì)所有的集合。本節(jié)討論我們的架構(gòu)是如何設(shè)計(jì)來(lái)處理妥協(xié)的。
在公證服務(wù)器遭到破壞的情況下,攻擊者可直接訪問(wèn)存儲(chǔ)在數(shù)據(jù)庫(kù)中的元數(shù)據(jù)以及訪問(wèn)用于與公證人簽名人進(jìn)行通信的憑證,因此可以使用簽署人持有的任何密鑰訪問(wèn)任意簽署操作。
拒絕服務(wù) - 攻擊者可以拒絕客戶端請(qǐng)求并破壞或刪除數(shù)據(jù)庫(kù)中的元數(shù)據(jù),從而阻止客戶端下載或上傳元數(shù)據(jù)。
惡意內(nèi)容 - 攻擊者可以為一個(gè)或多個(gè)可信集合創(chuàng)建,存儲(chǔ)和提供任意元數(shù)據(jù)內(nèi)容。但是,他們無(wú)權(quán)訪問(wèn)任何客戶端密鑰,如根,目標(biāo)以及潛在的現(xiàn)有可信集合的快照密鑰。只有那些從未見(jiàn)過(guò)可信集合的客戶,以及沒(méi)有任何形式固定信任的客戶,可能會(huì)被誘騙下載并信任這些可信集合的惡意內(nèi)容。之前與任何受信任集合進(jìn)行交互或?qū)⑵湫湃喂潭ǖ郊系奶囟ㄗC書(shū)的客戶端將立即檢測(cè)到內(nèi)容是惡意的,并且不會(huì)相信這些集合的任何根目標(biāo)或(可能)快照元數(shù)據(jù)。
回滾,凍結(jié),混合和匹配 - 攻擊者可以請(qǐng)求公證簽名者簽署他們想要的任意時(shí)間戳(也許是快照)元數(shù)據(jù)。攻擊者可以發(fā)起凍結(jié)攻擊,并根據(jù)快照鍵是否可用,進(jìn)行混合匹配攻擊,直到目標(biāo)文件到期。只要攻擊者確保其惡意元數(shù)據(jù)的版本號(hào)高于任何客戶端可能擁有的最新優(yōu)質(zhì)元數(shù)據(jù)的版本號(hào),那么無(wú)論是否擁有固定信任的客戶都將容易受到這些攻擊。
請(qǐng)注意,時(shí)間戳和快照鍵不能在僅服務(wù)器折衷方案中受到影響,因此不需要按鍵輪換。例如,一旦服務(wù)器妥協(xié)被緩解,攻擊者將無(wú)法生成有效的時(shí)間戳或快照元數(shù)據(jù),并將其提供給惡意鏡像。
如果公證簽名者受到損害,攻擊者可以訪問(wèn)存儲(chǔ)在數(shù)據(jù)庫(kù)中的所有(時(shí)間戳和快照)私鑰。如果密鑰存儲(chǔ)在 HSM 中,他們將能夠使用或刪除 HSM 中的密鑰來(lái)簽署任意內(nèi)容,但不能泄露私有資料。
拒絕服務(wù) - 攻擊者可能會(huì)拒絕所有公證服務(wù)器請(qǐng)求并破壞或刪除數(shù)據(jù)庫(kù)中的密鑰(甚至從 HSM 中刪除密鑰),從而阻止公證服務(wù)器簽名生成的時(shí)間戳或快照。
密鑰泄漏 - 如果公證簽名人使用數(shù)據(jù)庫(kù)作為其后端,攻擊者可以泄露所有(時(shí)間戳和快照)私人資料。請(qǐng)注意,攻擊者的功能與公證服務(wù)器在簽署任意元數(shù)據(jù)方面的功能相同,在這種情況下,重要的細(xì)節(jié)是關(guān)鍵循環(huán)將有必要從攻擊中恢復(fù)。
用戶持有和管理的密鑰的安全取決于用戶采取的措施。如果公證客戶端 CLI 用于創(chuàng)建它們,則它們受密碼保護(hù),公證 CLI 不會(huì)提供以明文形式導(dǎo)出它們的選項(xiàng)。
用戶可以選擇適當(dāng)?shù)拿艽a,并保護(hù)密鑰免受離線強(qiáng)力攻擊。
信任收集所有者/管理員的解密密鑰的破壞程度取決于被破壞的密鑰的類型和組合(例如,快照密鑰和目標(biāo)密鑰,或者僅僅是目標(biāo)密鑰)。
密鑰泄露 | 惡意內(nèi)容 | 回滾,凍結(jié),混合和匹配 | 拒絕服務(wù) |
---|---|---|---|
授權(quán)密鑰 | 沒(méi)有 | 沒(méi)有 | 沒(méi)有 |
密鑰泄露 | 惡意內(nèi)容 | 回滾,凍結(jié),混合和匹配 | 拒絕服務(wù) |
---|---|---|---|
授權(quán)密鑰 | 有限,也許* | 有限,也許* | 有限,也許* |
*如果公證服務(wù)持有快照密鑰并且攻擊者擁有公證服務(wù)寫(xiě)入憑證,則他們可以有效訪問(wèn)快照和時(shí)間戳記密鑰,因?yàn)榉?wù)器將為其生成并簽署快照和時(shí)間戳記。
攻擊者可以添加惡意內(nèi)容,從集合中刪除合法內(nèi)容,并混合集合中的目標(biāo),但只能在密鑰可以簽名的特定代理角色中進(jìn)行。根據(jù)對(duì)該角色的限制,他們可能會(huì)受限于他們可以修改的內(nèi)容類型。他們還可以添加或刪除其下的其他代表團(tuán)鍵在鍵層次的功能(例如,如果DelegationKey2
在上面的密鑰層次被泄露,也只是能夠修改的能力DelegationKey4
和DelegationKey5
)。
密鑰泄露 | 惡意內(nèi)容 | 回滾,凍結(jié),混合和匹配 | 拒絕服務(wù) |
---|---|---|---|
授權(quán)密鑰,快照密鑰 | 沒(méi)有 | 沒(méi)有 | 沒(méi)有 |
攻擊者無(wú)法訪問(wèn)由公證服務(wù)始終持有的時(shí)間戳密鑰,并且無(wú)法設(shè)置惡意鏡像。
密鑰泄露 | 惡意內(nèi)容 | 回滾,凍結(jié),混合和匹配 | 拒絕服務(wù) |
---|---|---|---|
授權(quán)密鑰,快照密鑰 | 有限 | 有限 | 有限 |
公證服務(wù)始終保存時(shí)間戳記密鑰。如果攻擊者具有公證服務(wù)寫(xiě)入憑證,則他們可以有效訪問(wèn)時(shí)間戳記密鑰,因?yàn)榉?wù)器將為其生成并簽署時(shí)間戳記。
攻擊者可以添加惡意內(nèi)容,從集合中刪除合法內(nèi)容,并混合集合中的目標(biāo),但只能在密鑰可以簽名的特定代理角色中進(jìn)行。根據(jù)對(duì)該角色的限制,他們可能會(huì)受限于他們可以修改的內(nèi)容類型。他們還可以添加或刪除其下的其他代表團(tuán)鍵在鍵層次的功能(例如,如果DelegationKey2
在上面的密鑰層次被泄露,也只是能夠修改的能力DelegationKey4
和DelegationKey5
)。
密鑰泄露 | 惡意內(nèi)容 | 回滾,凍結(jié),混合和匹配 | 拒絕服務(wù) |
---|---|---|---|
目標(biāo)關(guān)鍵 | 沒(méi)有 | 沒(méi)有 | 沒(méi)有 |
密鑰泄露 | 惡意內(nèi)容 | 回滾,凍結(jié),混合和匹配 | 拒絕服務(wù) |
---|---|---|---|
目標(biāo)關(guān)鍵 | 也許* | 也許* | 有限,也許* |
*如果公證服務(wù)持有快照密鑰并且攻擊者擁有公證服務(wù)寫(xiě)入憑證,則他們可以有效訪問(wèn)快照和時(shí)間戳記密鑰,因?yàn)榉?wù)器將為其生成并簽署快照和時(shí)間戳記。
攻擊者可以添加任何惡意內(nèi)容,從集合中刪除任何合法內(nèi)容,并混合集合中的目標(biāo)。他們還可以添加或刪除任何頂級(jí)代表團(tuán)鍵或角色的能力(例如Delegation1
,Delegation2
和Delegation3
在密鑰層次結(jié)構(gòu)圖)。如果他們完全刪除角色,他們會(huì)將信任鏈分解為較低的委派角色(例如Delegation4
,Delegation5
)。
密鑰泄露 | 惡意內(nèi)容 | 回滾,凍結(jié),混合和匹配 | 拒絕服務(wù) |
---|---|---|---|
目標(biāo)鍵,快照鍵 | 沒(méi)有 | 沒(méi)有 | 沒(méi)有 |
攻擊者無(wú)法訪問(wèn)由公證服務(wù)始終持有的時(shí)間戳密鑰,并且無(wú)法設(shè)置惡意鏡像。
密鑰泄露 | 惡意內(nèi)容 | 回滾,凍結(jié),混合和匹配 | 拒絕服務(wù) |
---|---|---|---|
目標(biāo)鍵,快照鍵 | 是 | 是 | 有限 |
公證服務(wù)始終保存時(shí)間戳記密鑰。如果攻擊者具有公證服務(wù)寫(xiě)入憑證,則他們可以有效訪問(wèn)時(shí)間戳記密鑰,因?yàn)榉?wù)器將為其生成并簽署時(shí)間戳記。
攻擊者可以添加任何惡意內(nèi)容,從集合中刪除任何合法內(nèi)容,并混合集合中的目標(biāo)。他們還可以添加或刪除任何頂級(jí)代表團(tuán)鍵或角色的能力(例如Delegation1
,Delegation2
和Delegation3
在密鑰層次結(jié)構(gòu)圖)。如果他們完全刪除角色,他們會(huì)將信任鏈分解為較低的委派角色(例如Delegation4
,Delegation5
)。
密鑰泄露 | 惡意內(nèi)容 | 回滾,凍結(jié),混合和匹配 | 拒絕服務(wù) |
---|---|---|---|
所有的鑰匙 | 是 | 是 | 是 |
不需要其他密鑰,因?yàn)楣粽呖梢噪S意旋轉(zhuǎn)或全部旋轉(zhuǎn)到他們生成的密鑰。利用這些密鑰,他們可以設(shè)置一個(gè)鏡像來(lái)提供惡意數(shù)據(jù) - 任何惡意數(shù)據(jù),因?yàn)樗麄兛梢栽L問(wèn)所有密鑰。
密鑰泄露 | 惡意內(nèi)容 | 回滾,凍結(jié),混合和匹配 | 拒絕服務(wù) |
---|---|---|---|
所有的鑰匙 | 是 | 是 | 是 |
*如果公證服務(wù)持有快照密鑰并且攻擊者擁有公證服務(wù)寫(xiě)入憑證,則他們甚至不必旋轉(zhuǎn)快照和時(shí)間戳密鑰,因?yàn)榉?wù)器將為其生成并簽署快照和時(shí)間戳。
如果檢測(cè)到根密鑰泄露,則根密鑰持有者應(yīng)聯(lián)系運(yùn)行公證服務(wù)的人員手動(dòng)反轉(zhuǎn)對(duì)存儲(chǔ)庫(kù)的任何惡意更改,并立即旋轉(zhuǎn)根密鑰。這將創(chuàng)建存儲(chǔ)庫(kù)歷史記錄的分支,從而打破已下載任何惡意更改的現(xiàn)有客戶端。
如果檢測(cè)到目標(biāo)密鑰泄露,則根密鑰持有者必須旋轉(zhuǎn)已泄密的密鑰并使用新密鑰推送干凈的一組目標(biāo)。
如果檢測(cè)到授權(quán)密鑰泄露,則更高級(jí)別的密鑰(例如,如果Delegation4
已被泄密,則Delegation2
;如果Delegation2
已泄密,則Targets
密鑰)持有者必須旋轉(zhuǎn)已泄密的密鑰,并使用新密鑰推送干凈的一組目標(biāo)。
如果檢測(cè)到公證服務(wù)憑證泄密,則應(yīng)立即更改憑證。