[IT-Security-1] 認證機制 Certificates and Public Key Infrastructures
Certificates and Public Key Infrastructures
Notes from RWTH Aachen University course
“IT security 1” Wintersemester 2019/20
professor: Meyer, Ulrike Michaela
- Trusted Third Parties
- 假設Alice和Bob有trusted thrid party的public key
- trusted third party對發行的key做簽章(包含可以擁有key的人的名字)
- Bob可以驗證是不是由trusted third party發行的key
- 稱為Certification Authority
- certificate至少包含:
- public key
- owner的名字
- 發行者的名字
- 對剩下的內容的hash的簽章
- 假設Alice和Bob有trusted thrid party的public key
- trusted third party對發行的key做簽章(包含可以擁有key的人的名字)
- Bob可以驗證是不是由trusted third party發行的key
- 稱為Certification Authority
- public key
- owner的名字
- 發行者的名字
- 對剩下的內容的hash的簽章
Public Key Infrastructures
- CA發行certificate
- 檢索certificate的資料庫(repository)
- 撤銷certificate的方法
- 衡量certificate的"chain"的方法
- RA(registration authority)與CA並用
- 同意certificate的請求
- 同意certificate的請求
Certificate Revocation List (CRL)
- 被CA簽署過的list,其中的certificate都未到期(expired)
Online Certificate Status Protocol(OCSP)
- OCSP允許certificate未過期的query
- OCSP回傳list中的certificate的狀態
- CRL和OCSP的比較
- CRL
- CRL會過長,難以搜尋
- 撤銷具有週期性
- query哪個certificate不會被CA知道
- OCSP
- 可隨時撤銷
- CA會知道哪個certificate被查詢
- 若query太多會是CA的流量負擔
- 雞蛋問題:如果網路連線前要網站的secure access(要去OCSP retrieval)
- 可以用OCSP stapling解決:用最近的OCSP的結果,也解決流量問題
- OCSP回傳list中的certificate的狀態
- CRL
- CRL會過長,難以搜尋
- 撤銷具有週期性
- query哪個certificate不會被CA知道
- OCSP
- 可隨時撤銷
- CA會知道哪個certificate被查詢
- 若query太多會是CA的流量負擔
- 雞蛋問題:如果網路連線前要網站的secure access(要去OCSP retrieval)
- 可以用OCSP stapling解決:用最近的OCSP的結果,也解決流量問題
Using Certificates to Protect Diffie-Hellman
- First try
- 流程:
- Alice送 \(h_A,sig_A,cert_A\)
- Bob用\(pub_A\)驗算\(sig_A\),用\(pub_{CA}\)驗算\(cert_A\)
- Problem:
- Signature沒有跟此protocal結合
- 攻擊者可以記錄Alice的訊息並且再重傳給Bob(replay)
- Second try
- 流程:
- Alice送 \(h_A\)
- Bob用 \(h_A\)跟 \(h_B\)做簽章 \(sig_B:=gensig(priv_B,h_B||\)\(h_A\)\()\)
- Bob傳送 \(h_B,sig_B,cert_B\)
- Alice驗證 \(sig_B\) 是否包含 \(h_A\),則可以知道Bob收到的 \(h_A\) 有沒有被竄改過
- Alice也用上列的方法簽章 \(sig_A:=gensig(priv_A,h_A||\)\(h_B\)\()\)
- Alice傳送 \(sig_A,cert_A\)
- Bob驗證
- Problem:
- 攻擊者仍竄改Bob的public key,傳送自己的signature
- Secure Authentic Diffie-Hellman
- 流程:
- Alice傳送 \(h_A\)
- Bob傳送 \(h_B\)
- Alice用\(h_B^a\)作為對稱式key \(k\)
用 \(k\) 加密 \(c_A:=enc(k,sig_A||cert_A)\) (\(sig_A\)如上定義) - Alice傳送 \(c_A\)
- Bob也計算對稱式key \(k=h_A^b\)
用 \(k\) 解密 \(sig_A||cert_A:=dec(k,c_A)\) - Bob也傳算 \(c_B\)
ReadingsKaufmann et al., Chapter 15RFC 5280: X.509 Certificates and CRLsRFC 2560: Online Certificate Revocation ProtocolRFC 2559: X.509 Public Key Infrastructure Operational Protocols - LDAPv2RFC 4210: Certificate Management Protocol (CMP)
- 流程:
- Alice送 \(h_A,sig_A,cert_A\)
- Bob用\(pub_A\)驗算\(sig_A\),用\(pub_{CA}\)驗算\(cert_A\)
- Problem:
- Signature沒有跟此protocal結合
- 攻擊者可以記錄Alice的訊息並且再重傳給Bob(replay)
- 流程:
- Alice送 \(h_A\)
- Bob用 \(h_A\)跟 \(h_B\)做簽章 \(sig_B:=gensig(priv_B,h_B||\)\(h_A\)\()\)
- Bob傳送 \(h_B,sig_B,cert_B\)
- Alice驗證 \(sig_B\) 是否包含 \(h_A\),則可以知道Bob收到的 \(h_A\) 有沒有被竄改過
- Alice也用上列的方法簽章 \(sig_A:=gensig(priv_A,h_A||\)\(h_B\)\()\)
- Alice傳送 \(sig_A,cert_A\)
- Bob驗證
- Problem:
- 攻擊者仍竄改Bob的public key,傳送自己的signature
- 流程:
- Alice傳送 \(h_A\)
- Bob傳送 \(h_B\)
- Alice用\(h_B^a\)作為對稱式key \(k\)
用 \(k\) 加密 \(c_A:=enc(k,sig_A||cert_A)\) (\(sig_A\)如上定義) - Alice傳送 \(c_A\)
- Bob也計算對稱式key \(k=h_A^b\)
用 \(k\) 解密 \(sig_A||cert_A:=dec(k,c_A)\) - Bob也傳算 \(c_B\)
Readings
Kaufmann et al., Chapter 15
RFC 5280: X.509 Certificates and CRLs
RFC 2560: Online Certificate Revocation Protocol
RFC 2559: X.509 Public Key Infrastructure Operational Protocols - LDAPv2
RFC 4210: Certificate Management Protocol (CMP)
留言
張貼留言