請各位大大幫小弟釋疑,請問誰是正確的呢,亦或是都有錯誤,在此先感謝大家了。
從今天凌晨開始,就有一位網友一直在跟我討論使用者的根憑證區域沒有CA的根憑證是誰的錯。
他的論點:OS有義務主動把市面上所有CA放進憑證區
我的論點:OS沒有義務要這樣做,是CA要要求OS做這件事
他的論點基礎是,OS才是有權力控制系統CA庫的,所以理當是OS要處理Root憑證的信任問題,自然有義務要主動將所有CA的Root憑證置入,所以憑證不被信任是OS的錯。
我的論點基礎為,CA必須自行通知OS自己的Root憑證,並且申請及通過審核才能被置入至Root憑證區受到信任,所以憑證不被信任是CA的錯。
當時引起爭議的討論串,第一張圖疑似因為另一位網友刪除回復,所以只剩他一個人,我看到的時候就這樣了,所以針對他所發出的單方回復討論,而後面的黃彥儒是我,我也把回復刪除了,但是他私訊我繼續討論...。
他的論點:OS有義務主動把市面上所有CA放進憑證區
我的論點:OS沒有義務要這樣做,是CA要要求OS做這件事
這兩個論點都有瑕疵, 跟OS無關, 也非誰的"義務":
CA公司向應用程式開發商請求信任其根憑證或中繼憑證, 應用程式商有權利決定是否同意.
應用程式可以是瀏覽器, FTP客戶端, Email客戶端, 當然也包含自己開發的應用程式. 要不要信任是這些應用程式的權利. 以HTTPS協定為例:
伺服器端建立私鑰, 產生公鑰向CA請求憑證及簽署, 瀏覽器必須個別決定是否信任這個CA簽署的憑證和伺器公鑰, 這是基本程序, 不同的瀏覽器有不同的信任政策, 關鍵是為什麼瀏覽器要信任這個CA? 為了簡化流程, 各家瀏覽器"預先信任"了許多CA及其所簽發的憑證, 因此在各瀏覽器有根憑證與中繼憑證管理系統, 這種內建的信任通常經過冗長的申請, 而且會隨著政策改變而更新, 瀏覽器的使用者也可以自己匯入非瀏覽器內建信任的憑證, 使用者也可以自行移除內建的憑證, 我通常都移除一些, 如果瀏覽器遇到不在其憑證管理系統中的憑證, 就會尋求使用者的同意詢問是否信任此憑證, 但為了資安考量, 現代的瀏覽器會對不安全的憑證與公鑰提出質疑以提醒使用者注意.
請注意, 這些憑證只用在HTTPS握手階段, 用來交換對稱金鑰和加密法的, 並非資料傳輸階段.
使用者的根憑證區域沒有CA的根憑證是誰的錯。
我投「使用者」的錯一票
另外
才三個字母
你把PKI寫成PIK
看起來氣勢就弱掉了
因為就基本定義來看
CA:管理Certificate
OS:管理資訊設備的軟硬體
要不要匯入憑證,是使用者決定的,跟CA/OS都沒有關係
至於現行作業很多「預載」的根憑證
那是OS廠商「好心」「雞婆」的設計
OS廠商替使用者「信任」了那些根憑證
如果你仍然不認同我的答案
也沒關係
我再送你一個題目
可以想想看
假設OS裡已經有幾家CA的根憑證
今天新開了一家CA(註)
那麼他的CA會如何安裝到作業系統中?
是你的OS會「自動」去下載安裝根憑證?
還是CA會「要求」天下所有的OS要安裝他的根憑證?
(我的答案是:都不會)
註:這家CA值不值得信任?
如果是Google開的?
如果是我開的阿里不達的CA?
值不值得信任到底由誰決定呢?
我的看法是這樣,使用者信任OS會審核該不該信任這家CA;像是StartCom和沃通就不該被信任,但是他們在最開始也是通過了審查被加入信任的。
所以CA要賣所謂的信任之前是要去取得大家的信任的,當然是CA要努力去取得大家的信任囉
首先, 不是只有 OS 能管理 CA 庫, Firefox 就用了自家 NSS 附帶的 CA 列表
再來也不是所有的 OS 都會有預設的 CA 庫: https://unix.stackexchange.com/questions/159977/freebsd-10-root-certificate-store
事實上, 使用者才是有權力決定要信任哪一個根憑證的, OS 與瀏覽器充其量只是弄個預設列表, 把常用可信任的都放進去而已, 只是多數使用者沒那個能力辨別與操作這些東西罷了, 甚至傻傻的讓防毒軟體劫持自己的 https 通訊內容
OS 與 CA 商的關係應該是這樣:
所以回到你的問題, 若一定要選一個的話, 好像大家普遍是怪罪 CA 商而不會怪 OS, 但如果換個情況, 若 Windows 與 MAC 都能正常瀏覽, 只有 Linux 說憑證有問題, 大概又會有人開始說 Linux 怎麼怎麼爛了
我的結論: 知道是誰錯了又如何呢?