- 區塊鏈架構之美:從比特幣、以太坊、超級賬本看區塊鏈架構設計
- 何昊編著
- 638字
- 2021-07-23 17:31:09
1.9 身份驗證
身份驗證(Authentication)又稱驗證或鑒權,是指通過一定的手段完成對用戶身份的確認。身份驗證的目的是確認當前聲稱為某種身份的用戶,確實是所聲稱的用戶。在日常生活中,身份驗證并不罕見。例如,通過檢查對方的證件,我們一般可以確信對方的身份。雖然在日常生活中,這種確認對方身份的做法屬于廣義的“身份驗證”,但“身份驗證”一詞更多地被用在計算機、通信等領域。
身份驗證的方法有很多,基本上可分為基于共享密鑰的身份驗證、基于生物學特征的身份驗證和基于公開密鑰加密算法的身份驗證。不同的身份驗證方法,其安全性各有不同。
在TLS/SSL協議握手的第三步中,用到了數字證書中的公鑰,為什么會出現數字證書呢?先假設不采用數字證書,觀察一下在建立安全通信的過程中會面臨哪些風險。
我們假設這樣一種不使用數字證書就進行TLS協議建立連接的場景:在TLS協議握手的第一步中,客戶端發送明文消息client_hello給服務端。Mallory在服務端收到client_hello消息之前,截獲了這條消息,發送給客戶端偽造的協商消息server_hello??蛻舳耸盏組allory發來的偽造的協商消息,如果不驗證證書,繼續進行后續的密鑰協商過程,流程也是可以走完的。后續的通信依然使用客戶端和服務端協商的密鑰加密通信過程,但是問題顯而易見,客戶端并沒有和最初預想的服務端建立連接,而和Mallory的服務端建立了連接。
Mallory可以冒充客戶端和真正的服務端建立連接,Mallory作為中間人,監聽轉發通信內容。
產生這個問題的根源在于,大家都可以生成公私鑰對,而客戶端無法確認這個公私鑰對到底屬于誰,這個時候就需要一種方法來證明一個公私鑰對的擁有者身份。