Tls
如果我從 TLS 中刪除客戶端證書會發生什麼
如果我在兩個實體 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。