這是目前工作中遇到的一些知識點蒐集整理。
一、什麼是 PKI
首先,PKI(Public Key Infrastructure)是一個體系。
公鑰基礎設施是一個包括硬件、軟件、人員、策略和規程的集合,用來實現基於公鑰密碼體制的密鑰和證書的產生、管理、存儲、分發和撤銷等功能。
PKI體系是計算機軟硬件、權威機構及應用系統的結合。它爲實施電子商務、電子政務、辦公自動化等提供了基本的安全服務,從而使那些彼此不認識或距離很遠的用戶能通過信任鏈安全地交流。
— 百度百科
說白了,PKI還是提供了彼此身份確認的服務,確保通信的安全。
接下來,打開百度的網址,進一步瞭解PKI體系中的各種角色。
1. 數字證書
我跟你對話,如果確認彼此就是自己要對話的人?那麼我們可以互相亮出身份證,來證實彼此身份是可靠的。
那麼,在網絡通信裏,也需要用到這樣的介質,那就是數字證書。
點開百度網址左邊的小鎖圖標,瀏覽器會顯示如下,告訴你這個連接是安全的。
瀏覽器之所以能確認百度的身份,就是因爲數字證書。點擊這個按鈕,進一步可以看到證書相關信息。
信息大概可以分爲 3 類:
1.1 使用者
- 使用者的信息,如果是企業這裏就是域名,示例中爲baidu.com...。
- 公鑰信息,這裏是非對稱加密中用戶公開的密鑰,誰都可以看到。、
- 有效期
1.2 頒發者
- 頒發者:誰頒發的證書,這裏的GlobalSign Organization Validation。
- 頒發者的簽名:頒發者對該證書的所有信息的數字簽名,表明他對這個證書的真實性負責。
1.3 證書的其他信息
證書相關的其他信息
基於此,當瀏覽器訪問https的網址,就會檢查證書的有效性,通過後使用證書裏的信息(主要是公鑰)與網址進行通信。
2. 公開密鑰加密(非對稱加密)
數字證書的關鍵在於公鑰,也就是非對稱加密算法。它有2個角色:
- 私有密鑰 (private key):私有密鑰不能讓其他任何人知道。
- 公開密鑰(public key):公開密鑰則可以隨意發佈,任何人都可以獲得。
交互過程是這樣的(發送密文方A,接收方B):
- A 使用 B 的公開密鑰進行加密。
- A 發送加密後的信息給 B。
- B 收到加密的信息後,用自己的私有鑰匙進行解密。
利用這種方式,不需要發送用來解密的私有密鑰,也就不必擔心密鑰被攻擊者竊聽而盜走。
另外,就算你知道了公開密鑰和密文,想要恢復到信息原文是異常困難的。因爲解密過程就是在對離散對數進行求值,這並非輕而易舉就能辦到。
再退一步講,如果能對一個非常大的整數做到快速地因式分解,那麼密碼破解還是存在希望的。但就目前的技術來看是不太現實的。
3. PKI登場
上面在上述的公開密鑰加密方式還是存在一個問題:
- 無法證明公開密鑰本身就是貨真價實的公開密鑰。
比如,A 正準備和 B 服務器建立公開密鑰加密方式下的通信,A 也確實收到了公開密鑰。但是 A 不知道這個公開密鑰是不是真的來自於 B,或許在傳輸途中,真的公開密鑰已經被攻擊者替換掉了。
所以,還需要一套機制來證明過程中的這些內容都是可靠的,這裏就需要開頭提到的PKI體系了,其核心是證書的產生和分發層級。
證書的產生則來自一位的重要角色:數字證書認證機構(CA,Certificate Authority)。
全世界有大概幾十家左右的根CA(Certificate Authority),計算機上都會預置這些CA的數字證書。比如Amazon、Verisign這種,他們有一整套的機制保證自己是可信的。基於此,他們有自己的數字證書,及與之匹配的私鑰。
網站若想拿到自己的證書,就可以找個子CA,填好信息付好年費,就可以拿到證明了。當瀏覽器訪問網站的時候,看到你有業內權威開的證明,自己也覈對沒問題後就無條件信任你了。
在這裏,PKI 體系必須爲用戶提供安全和透明的服務,用戶不必考慮 PKI 體系中的證書是怎樣生成、更新、撤銷及恢復的,密鑰是如何管理的,只要用戶自己能夠方便地獲得數字簽名即可。
二、PKI在汽車行業的應用
PKI體系在汽車行業的應用場景非常廣泛,如遠程車控、近場車控、安全啓動、Ethernet通信安全等等。在此處講一個優先級最高的“遠程車控”的實例。
1. 建立自己的PKI體系
企業應該先行建立自己的PKI體系,即引入一個PKI供應商,將證書的頒發、申請、吊銷等公用模塊建立起來。接下來,在其之上,建立各應用的流程。
2. 各端接入PKI體系
手機端、雲端與車端Tbox,都在本地生成自己的私鑰,並在雲端申請完自己的證書。這也需要制定相應的業務流程。
三端都需要妥善保管好自己的私鑰,手機端可以將私鑰存儲在TEE中,雲端可存儲的選擇會較多,車端可存儲在HSM或TEE中。若沒有這些硬件的存儲方式,可以使用軟件的白盒加密方法,安全性也有一定保障。白盒加密也就是說即使遭遇白盒攻擊,其密鑰也較難被破解。
3. 開始業務
大家都具備證書與私鑰後,業務流程就變的相當簡單了。
- 雲端與車端由於交互較多,建議兩端通過雙向認證交換“會話密鑰”(對稱密鑰)。因爲對稱加密要比非對稱加密要快上千倍,根據密鑰長度不同會稍有變化。交換會話密鑰的流程可參考TLS的雙向認證的握手流程。
- 手機端將車端指令發給雲端,並使用自己的私鑰進行簽名。雲端收到之後,使用手機A的數字證書,進行驗籤。
- 雲端將車控指令用協商好的“會話密鑰”加密後,發送給車端。車端驗證後,即可在內部執行。
所以,基於PKI體系的方案是更加可靠的。
參考文章:
https://zhuanlan.zhihu.com/p/237155609
https://www.cnblogs.com/pingguo-softwaretesting/p/14970453.html