數字證書的可信

PKI公鑰基礎設施通過建設信任根,結合數字證書,實現了可信身份。通過數字證書技術,可以實現數字簽名、數據加密。

數字證書的可信

數字證書的可信基於可信根對用戶身份的核驗,確認信息和用戶身份匹配,頒發給用戶一個數字憑證,這個數字憑證即爲數字證書。

用戶基於公鑰算法生成公鑰和私鑰,公鑰算法也被稱作非對稱密鑰算法。公鑰算法區別於對稱密鑰算法,加密密鑰和解密密鑰不是一個,用公鑰加密的數據,必須用私鑰才能進行解密。並且用私鑰加密的數據,用私鑰也是不能解密,必須由對應的公鑰進行解密。

對應日常信息,如何建立一個可信的憑證?例如銀行驗證你的信息,要求你出示你的身份證,一代身份證是一個具有防僞技術的物理證件。採用這個方案,我們設計了下面數字證書,

假設當用戶去銀行辦理業務時,向銀行出示了這個數字證書,用此證明自己的身份。此時,銀行擁有權威機構的公鑰(權威機構的公鑰是通過線下的方式分發的,這個公鑰也可以放在一個可下載的位置,任意讀取),此時銀行可以對證書內容進行相同的hash運算,將證書中的簽名(圖中黃底紅字部分)用權威機構的公鑰解密,對比hash結果和解密結果,如果2者相同,能夠證明權威機構認可了數字證書上的內容,銀行根據權威機構的認證也接受用戶是所持數字證書的身份。

但是,這個過程並不安全,與線下的實物不同,數字證書可以很容易被複制。在上面的方案中,當用戶向銀行出示自己的數字證書時,銀行就會保留一份數字證書。而這份數字證書也可以完全用來證明身份,因此上面的方案是有問題的。

用戶也擁有一對密鑰,公鑰和私鑰。私鑰由用戶保存,公鑰放在證書中。銀行可以驗證證書是經過權威機構簽發的,還要經過一次應答/挑戰,證明用戶擁有證書中公鑰對應的私鑰。

應答/挑戰過程,由銀行端發起向用戶發送隨機數b,用戶用私鑰加密隨機數,銀行在用用戶證書中的公鑰解密加密密文,如果解密結果是隨機數b,證明了用戶擁有證書對應的私鑰。

在上面的方案中,用戶向銀行證明身份經過了2個步驟,1.提供證書,證書的內容是用戶身份信息,證書的可信由權威機構的簽名保證。2.用戶需要證明擁有證書中對應的私鑰。

安全性分析

1.用戶是否可以篡改證書?

如果張三將自己證書上的名稱改爲李四,並向銀行提供仿冒證書冒充李四。此時銀行通過證書hash值,和證書中的權威機構簽名,就可以驗證證書經過篡改。

2.用戶是否可以截取證書仿冒用戶?

張三截獲了李四的數字證書,向銀行提交李四的數字證書冒充李四。銀行會通過應答/挑戰驗證是否擁有李四的私鑰。通常,李四的證書和私鑰都是保存在usbkey中的,使用usbkey時還要輸入pin碼,通過物理ukey+pin碼方式保護私鑰的安全性。

但如果張三竊取了李四的ukey,並且窺探到李四的pin,就可以冒充李四。當李四發現ukey丟失時,應及時到權威機構對ukey進行註銷。

證書分類

以上介紹的是用來做身份認證和數字簽名的公鑰證書。除了公鑰證書之外,也有一些證書文件是不包含公鑰信息的。例如屬性證書和電子證照。

屬性證書,常用來做登錄憑證,簽發一個文件格式如第一個證書。舉一個例子,用戶在網站上的"等級"保存在服務端,當多個服務之間跳轉,需要一個攜帶“等級”信息時,可以將信息+服務端簽名方式發送給用戶,用戶在登錄其他服務器時出示屬性證書證明自己的等級。屬性證書用,[name=用戶證書名,level=用戶級別 ]by服務端數字簽名。廣泛使用jwt,Json web token中就使用了屬性證書的思想。

電子證照,也是一種數字證書,不包含公鑰,只包含信息和權威機構的數字簽名。例如,電子結婚證可採用[持證人,持證人]by政務部分電子印章簽名。當需要出示結婚證時,通過驗證簽名,可以證明電子證照信息的真實性。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章