什麼是證書鏈?

2021-10-06 18:41:51 字數 3263 閱讀 8074

證書鏈是什麼鏈麼,能發幣麼?

不要懵,證書鏈通常都是公開,不需要保密!此時你是不是感到疑惑,通常我們的證書不都是存在u盾中的麼,怎麼能輕易交給別人?

為了說明這些問題,我要講一些概念。本著越基礎,越不好講的原則,我從公鑰演算法講起,還有數字簽名、pki,還要介紹一下區塊鏈、電子證照、密碼機、簽名驗籤伺服器、和usbkey等概念。

公鑰演算法是一種加密演算法。加密演算法分為對稱加密和非對稱加密演算法,非對稱加密演算法又稱為公鑰演算法。

對稱加密的關鍵在金鑰。傳遞加密數資料,alice選取金鑰key,加密明文傳送給bob,bob採用相同的key解密資料。 

使用對稱金鑰時,通訊雙方必須擁有相同的金鑰。通常,對稱金鑰採用線下方式進行分發,或者採用一種可靠方式進行分發。例如,alice和bob坐在一起,共同選擇了乙個金鑰,這個金鑰用來做資料加密。

這個簡單的分配金鑰的方式,不適合規模較大的群體。群體中,要求每2個的通訊內容其他人都不能解密。以3個人為例,a、b、c三個人,需要分配ab/ac/bc3個金鑰;當系統中有n個人時,需要分配 n*(n-1)/2個金鑰,每個人都要儲存與其他n-1個人通訊的金鑰。此時,需要金鑰服務中心為使用者生成分配管理金鑰,依靠個體使用者自身很難管理。

以上就是對稱金鑰演算法的難題,對稱金鑰分發。

非對稱金鑰就解決了金鑰分發的問題,每個人的金鑰都是由2個金鑰組成。即alice有乙個公鑰乙個私鑰,bob有乙個公鑰乙個私鑰。

公私鑰的用法:用乙個人的公鑰加密,必須用這個人的私鑰解密;用私鑰加密,必須用公鑰解密。即乙個人的公鑰和私鑰,互為加解密金鑰。關於公鑰應用協議,會用到多人的金鑰,概念變複雜容易混淆,但是要把握「乙個人的公私鑰互為加解密金鑰」的原理。

公私鑰通常由alice和bob自己產生,此時只有自己知道自己的公鑰和私鑰,為了實現保密通訊,必須公布自己的公鑰。公布公鑰可以多種方式,只要可以公開讀取就可以。

保密通訊的例子,alice和bob已公開了自己的公鑰,alice用bob的公鑰加密資料,加密後的資料只有bob的私鑰解密,其他人截獲了密文也無法解密。(真實情況alice用bob的公鑰加密乙個會話金鑰,alice和bob用會話金鑰加密通訊內容,因為公鑰加密演算法效率低)

利用公鑰演算法實現加密資料通訊,要求公布個人的公鑰,且只能自己擁有私鑰。

數字簽名是一種基於公鑰的抗抵賴技術。alice和bob簽訂乙份合同,合同內容是:bob有乙個軟體的開發需求,共列了10項軟體的feature,並承若支付給alice 3萬塊錢。alice擔心軟體開發完成,bob不履行合同,或少支付開發費用,要求bob對合同進行數字簽名。

bob用自己的私鑰,對合同檔案進行加密,得到密文發給alice。alice收到密文後,用bob的公鑰進行解密運算,得到了合同的原文,到此alice就已經可以確定bob已經完成了合同的數字簽名。

當bob抵賴,不履行合同時。alice到仲裁機構,出示bob的密文,和bob的公鑰,仲裁機構用bob的公鑰解密密文,得到合同原文。仲裁機構認定,因為公鑰解密了合同密文,密文一定是由原文經過bob的私鑰加密生成的。因此仲裁機構推斷認定,bob是與alice簽訂了合同。

這個例子,說明了通過數字簽名可以確定1.資訊的**2.發生糾紛時,資訊源不能抵賴。

通常,標準的數字簽名要首先對原文hash,然後對hash結果進行簽名(hash可以壓縮簽名資訊的長度)。校驗數字簽名時,對原文進行hash,和解密hash進行比較,當兩個結果相同時證明數字簽名有效,說明簽名者確認過原文件,且不可抵賴。

上面將的數字簽名是否還要問題?當bob聲稱alice提供的公鑰不是自己的公鑰,而是alice讓黑客篡改了公開系統,並用偽造的私鑰對合同進行數字簽名的。上面的問題核心,是如何確定bob的公鑰,且bob不能抵賴。

下面介紹一下有權威機構的公鑰體系pki,bob申請數字證書的流程:

1.bob自己生成一對隨機的公私鑰,私鑰自己保留。

2.將bob的個人資訊和公鑰,放在乙個請求檔案中,傳送給ca。

3.ca通過嚴格的流程確定bob的身份,例如提交身份證證明,或者要求所在單位出具證明。

4.ca用自己的私鑰,將bob的請求檔案進行數字簽名,將bob個人資訊、bob公鑰、ca生成的簽名這3個資訊打包成乙個證書檔案。

此時公鑰公布系統,變成了公鑰證書公布系統。當alice驗證bob的合同時,經過2個步驟:

1.驗證bob的數字證書。驗證證書的過程,就是驗證數字簽名的過程。首先用ca的公鑰解密證書中的簽名,計算證書中資訊的hash值,比較hash和解密簽名結果,不相符即證書被篡改過。

2.驗證合同的數字簽名。用bob的公鑰證書,驗證合同的數字簽名,與沒有pki時驗證過程相同。

理清一下公鑰證書、私鑰、數字簽名的關係,如圖:

在這個例子中,根ca的公鑰證書和執行ca的公鑰證書,就是驗證合同簽名的證書鏈

gmssl中呼叫簽名和驗籤的例子:

$ gmssl sm2utl -sign -in msg.txt -inkey sm2.pem -id alice -out sig.der

$ gmssl sm2utl -verify -in msg.txt -sigfile sig.der -pubin -in sm2pub.pem -id alice

在位元幣中,驗證一筆交易就是檢驗交易的數字簽名,採用交易賬戶擁有者的公鑰進行驗籤。

在位元幣上,沒有pki系統,公鑰資訊即賬戶主題,公鑰對應的私鑰即用來進行數字簽名。

電子證照即機構對文件進行數字簽名,通過驗證數字簽名就可以驗證證照資訊。

在gmssl的例子中,gmssl sm2utl -sign定義了簽名介面。

密碼機和簽名驗籤伺服器,就是硬體密碼運算裝置,向應用提供api,完成各種密碼演算法。

簽名驗籤伺服器,比密碼機多提供簽名和驗籤介面。密碼機更多是底層api,如sm2 公鑰加密,sm3雜湊,sm4加密等。

上面的例子看到,bob的私鑰是非常重要的,不能洩露給別人。

usbkey就是可以用來儲存私鑰,並且要求私鑰不能拷貝出來,只能在usbkey中執行運算。通常key還用口令方式加密儲存,進行運算時要先輸入pin碼,解密後才能用來運算。

什麼是證書鏈?其工作原理又是什麼

證書鏈是什麼?證書鏈是用於在公鑰基礎結構 pki 的證書頒發機構 ca 之間建立信任關係。信任關係建立在根ca,中間ca和安全套接字層ssl證書之間的層次結構角色和關係。實際上,為了識別ssl證書的信任因素,瀏覽器必須驗證更多細節。這些詳細資訊不過是經過了更多審查的證書而已。該證書列表從根證書到最終...

什麼是軟證書

數字證書分為兩類,一類存放在電腦裡,稱為 軟證書 另一類存放在類似u盤的usbkey裡,稱為 硬證書 出於方便和成本的考慮,普通個人使用者偏愛使用 軟證書 軟證書 存在安全隱患。它不強制使用者設定證書使用口令,其他人登入同一臺電腦就能直接使用。軟證書 的私鑰可以匯出,從而給木馬程式以可乘之機,將證書...

什麼是SSL預證書?

預驗證是用作證書透明度 ct 一部分的特殊型別的ssl證書。預先證書與常規ssl證書不同,因為它們不是 也不可以 用於驗證伺服器或形成經過身份驗證的連線 例如https連線 它們的唯一目的是允許證明證書已被記錄以直接嵌入到證書中。顧名思義,預認證出現在正式證書之前。而預證書幾乎很少暴露給終端使用者,...