Tls

如果我從 TLS 中刪除客戶端證書會發生什麼

  • September 29, 2016

如果我在兩個實體 A 和 B 之間有一個 TLS 身份驗證過程,如下文所述,如果我從中刪除客戶端 (A) 證書,會發生什麼情況?在這種情況下,客戶端的證書定義為{A,pk(A)}inv(pk(s))

A->B: A,NA,Sid,PA

B->A: NB,Sid,PB,
 {B,pk(B)}inv(pk(s))
A->B: {A,pk(A)}inv(pk(s))
{PMS}pk(B),
{hash(NB,B,PMS)}inv(pk(A)),
{|hash(prf(PMS,NA,NB),A,B,NA,NB,Sid,PA,PB,PMS)|}
 clientK(NA,NB,prf(PMS,NA,NB))

B->A:   {|hash(prf(PMS,NA,NB),A,B,NA,NB,Sid,PA,PB,PMS)|}
 serverK(NA,NB,prf(PMS,NA,NB))

當然,客戶端失去了向伺服器 (B) 進行身份驗證的方式,但這究竟以何種方式使消息交換容易受到攻擊?

解決問題的另一種方法是查看 TLS 握手的Wiki 描述。在客戶端認證的 TLS 握手中,如果我們省略客戶端證書會發生什麼?

正如 SEJPM 已經指出的那樣,如果您失去了客戶端證書,伺服器將失去客戶端身份驗證,因此在主動(中間人)攻擊下所有數據的真實性甚至機密性都會失去。

在網際網路上,這對於電子商務來說通常不是一個大問題。客戶端仍然可以對伺服器進行身份驗證並具有安全連接。伺服器並不太在意——它只是對支付交易進行身份驗證。

另一方面,對於例如 B2B 連接,缺乏認證可能是災難性的。


注意:客戶端身份驗證需要客戶端證書。如果你把它排除在外,你最終會得到正常的伺服器認證 TLS。

引用自:https://crypto.stackexchange.com/questions/40317