可信計算
可信計算的概念由來已久,此處羅列幾個時間點!
資訊安全標準的演變:
- 1985年美國國家安全域提出TCSEC標準,又被稱為橘皮書,里面第一次提到了TCB(可信基)的概念,
- 1987年,NSA又提出了用于可信網路連接方面的TNI標準,被稱為紅皮書,至此彩虹系列的安全標準應運而生,
- 1991年歐洲四國(英、法、德、荷蘭)聯合提出ITSEC標準,
- 1993年,美國提出本國的FC標準,同年加拿大提出自己的CTCPEC標準,
- 1996年,歐洲四國和美、加進行六國會議,共同提出CC標準1.0版,
- 1998年,CC標準2.0版提出,
- 1999年,成立了可信計算平臺聯盟TCPA,
- 2003年,由AMD、惠普、IBM、Intel和微軟等企業共同成立了可信計算組織TCG,取代了TCPA,
可信計算的核心是TPM芯片,既通過物理防護和密碼演算法,借助雜湊值度量的手段完成可信驗證和信任傳遞,
可信計算圍繞TPM芯片,有三個信任根,既RTR、RTS和RTM,
信任根可以簡單理解為借助TPM芯片完成若干功能的代碼片段,其中,RTR是可信報告根、RTS是可信存盤根、RTM是可信度量根,
EK證書
EK證書又叫背書證書,一般是由TPM生產商創造或者植入TPM的,有時也可以由平臺的生產商發布,
一個TPM一生只能有一個EK證書,EK證書是TPM芯片的唯一標識,
平臺證書
平臺證書可以證明一個平臺中有一個唯一的TPM芯片,且該芯片永久的與一個信任根息息相關,該證書一般由平臺生產商發布和制定,包含了一些與EK相關的資訊、廠商的平臺模塊資訊以及平臺的安全配置資訊,
一般在平臺證書中包含了EK證書,
AIK證書
AIK證書由PrivateCA簽發,PrivateCA又叫PCA,也可以叫做ACA(AttestationCA),AIK證書主要是證明TPM中已經生成了相關的AIK密鑰,且已經與對應的EK進行了系結,以及在AIK注冊簽發程序中的步驟是否規范,
其中AIK只能用于簽名,不可用去加解密,而且只能用于TPM內部資訊的簽名使用,這是為了防止攻擊者進行AIK破解,
AIK注冊程序
1、平臺要求TPM生成AIK密鑰對
- 平臺或者平臺的應用程式向TSS(可信軟體堆疊)發送CollateIdentityRequest命令,TSS向TPM發送MakeIdentity命令,隨后TPM生成新的AIK公私鑰對,
- 隨著MakeIdentity函式,TPM生成IDENTITY_CONTENTS結構,包括{結構版本,TPM命令序列,PCA的簽名標記,AIK的公鑰資訊}
- TPM用AIK私鑰簽名IDENTITY_CONTENTS結構資訊,作為注冊程序中的identityBinding資訊(身份系結資訊),
- TPM在MakeIdentity介面中輸出兩個引數,一個是AIK公鑰資訊,另一個是identityBinding資訊,
2、TSS生成包括AIK的證據資料
- TSS通過以下的步驟生成了AIK注冊請求中需要的證據結構IDENTITY_PROOF,(1)第一個就是identityBinding資訊,identityBinding不用加密,他只是用來證明AIK私鑰已經存盤在TPM中,而且已經被EK證明了,無其他實際意義,(2)TPM的版本說明(3)AIK的公鑰(4)IdentityLabel(5)EK證書(6)平臺證書,
- TSS通過TPM介面生成一個對稱密鑰K1,使用K1加密IDENTITY_PROOF結構資料,
- TSS使用PCA(或者ACA)的公鑰加密K1,這個K1只是向PCA或者ACA解密公開,發送至PCA的其實是密文k1,
3、平臺向ACA或者PCA發送AIK證書簽發請求,
平臺或者平臺應用程式攜帶著IDENTITY_REQ結果,加密請求資料并發送給ACA,
4、ACA驗證簽發請求,
- ACA首先使用自身的私鑰解密K1密文,得到對稱密鑰k1資訊,
- ACA然后使用K1解密IDENTITY_PROOF結構,
- ACA重新創建IDENTITY_CONTENTS結構,并驗證identityBinding結構的正確性,同時也可以驗證整個IDENTITY_PROOF結構,
5、ACA生成一個新的AIK證書,
ACA可以使用收到的AIK公鑰生成新的AIK證書,使用自己的AIK簽名密鑰來簽發AIK證書,
6、ACA加密AIK證書
ACA依靠TPM來加密AIK證書,使用介面TPM_ActivateIdentity命令,TPM輸入一個TPM_EK_BLOB或者ASYM_CA_CONTENTS結構,
- ACA生成對稱密鑰k2,一個AIK對應唯一的k2,
- ACA使用k2加密AIK證書,
- ACA創建一個TPM_EK_BLOB結構,包括一下內容:(1)AIK公鑰的哈希值 (2)k2(3)附帶PCR資訊,供TPM來檢查確保TPM的pcr暫存器的裝飾是否正確,
- ACA使用EK公鑰加密TPM_EK_BLOB結構的資料,確保只有對應的TPM才能收到ACA簽發的AIK證書,
7、ACA將加密的TPM_EK_BLOB結構資料和加密后的AIK證書發送至TPM平臺,
8、平臺收到之后使用TPM解密AIK證書
向TPM發送Tspi_TPM_ActivateIdentity命令來解密TPM_EK_BLOB結構,取出k2,然后解密AIK證書,
AIK挑戰和證明
1、一個挑戰者的請求,包括若干的PCR暫存器值以及其他相關資訊,比如TPM版本資訊等,還包括挑戰者需要平臺回傳的臨時隨機資訊,由挑戰者發送至被待證明的平臺,
該請求可以用Req(PCR串列S_pcr,是否需要TPM版本資訊的開關標識,臨時資訊N_value),
2、平臺或者應用程式收到相關請求,由TSS呼叫TPM_Quote或者TPM_Quote2命令,TPM得到命令后,使用AIK私鑰對S_pcr指向的暫存器串列值,TPM版本資訊以及N_value資訊進行簽名,回傳SG_tpm值、S_pcr指向的暫存器的值串列,以及TPM的版本資訊,
3、TSS受到TPM的介面回傳,收集相關資訊,將TPM版本資訊、SG_tpm值、詳細度量記錄日志和證書(包括平臺證書、一致性證書以及AIK證書)一起發送給挑戰者,
4、挑戰者從PCA處驗證證書資訊,然后使用AIK證書將TPM版本資訊,和從度量日志中重新計算出來的各個PCR暫存器的值,進行二次簽名,并于SG_tpm簽名做比對,從而得出此次證明挑戰是否完成,
DAA直接匿名證明
在TPM1.2版本中,取消了上面的注冊以及證明的流程,使用DAA直接匿名證明,也就是零知識證明,
原因:
1、從上述注冊流程中可知,TPM每生成一個AIK密鑰對,都需要PCA或者ACA給簽發一個AIK證書,當AIK密鑰對需求量較大時,勢必會對PCA平臺的穩定性和可用性造成影響,
2、PCA平臺存在上帝視角,當挑戰者發起挑戰時,需要跟PCA發起請求來驗證TPM平臺的真偽,PCA中存在這所有的EK證書和AIK證書的對應關系,也就是TPM芯片與AIK證書的關系,存在一定程式的資訊泄露風險,
DAA方法:
在DAA方法中,存在join和sign/verify等幾種協議,此處不做討論,
TPM平臺使用EK與DAA的issue發行方進行互動,互動之后TPM芯片中就同時存在DAA證書、EK證書以及生成的AIK證書等,
當挑戰者A向TPM平臺發起證明挑戰,平臺方將DAA簽名的AIK_A資訊發送給A,A即可驗證當前資訊是否來自有效的TPM平臺,但A并不知曉來自哪個TPM平臺,
當挑戰者B向TPM平臺發起證明挑戰,平臺方將DAA簽名的AIK_B資訊發送給B,B即可驗證當前資訊是否來自有效的TPM平臺,但B也并不知曉來自哪個TPM平臺,
在DAA證明中,一方面減少了與DAA發行方的互動,另一方面保障了TPM的隱匿,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/340652.html
標籤:其他
