密碼學基礎與應用
驗證TLS的憑證時,除了確認簽章鏈與有效期間,也要確認所要連線的主機名稱是否包含在憑證的SAN(主體別名)中。這項確認不可或缺的理由,正確的是下列何者?
- A攻擊者對於自己擁有的其他網域名稱,也能從受信任的憑證機構取得正規的憑證
- B若不確認主機名稱,通訊本身就不會被加密
- C主機名稱不一致的憑證,其簽章鏈一定會在中途斷掉,因此原本就無法通過驗證
查看答案與解析
正確答案:A. 攻擊者對於自己擁有的其他網域名稱,也能從受信任的憑證機構取得正規的憑證
即使憑證的簽章正確且未過期,若不確認它是「哪個網域名稱的憑證」就沒有意義。攻擊者對自己擁有的網域名稱,只要證明自己管理該網域,就能取得正規的憑證。因此,不確認主機名稱的用戶端,會把出示該憑證的偽造伺服器當成真的。在自行使用TLS的程式中,停用主機名稱驗證就直接使用的錯誤,是有名的漏洞成因。
- A. 正確。簽章鏈正確,與它是連線對象的憑證,必須分別確認。
- B. 即使不確認主機名稱,也會進行加密。但對方是偽造的也無法察覺,等於與偽造者進行加密通訊。
- C. 攻擊者取得的正規憑證,簽章鏈也能正確追溯。正因如此,才必須確認主機名稱。