大概講一下我的認知跟理解,我不是搞資安的所以有錯請不吝指教
現代網路會透過一個機制來確保傳輸的內容只有你跟對方看到的
方法是透過所謂的不對稱加密,這種加密機制會同時生成公鑰跟私鑰兩種密碼,其中公鑰是
可以任意洩漏的,而私鑰必須保密。而公鑰加密的內容只能用私鑰解密,私鑰加密的內容也
只能用公鑰來解密
以連線到PTT為例,流程大概是
1. 我生成一組公鑰跟私鑰,把我的公鑰交給PTT,同時PTT也會給我他的公鑰
2. 我發送訊息前先用PTT的公鑰把訊息加密,再用我的私鑰再加密一次後跟PTT
3. PTT收到後先用我的公鑰解密,再用他的私鑰解密,這樣可以確保這個訊息是我發送的,
同時只有PTT能看懂訊息內容
4. 反之亦同,我也會用這種機制確保送來的訊息是PTT發送的
但這種機制有個問題,假設有個壞人決定假冒PT
T並且想辦法讓你的ptt.cc連接到壞人的伺服器,然後再把你的訊息轉發給真正的PTT,並把
真正的PTT傳來的訊息回覆給你,那你永遠不會發現跟你的話的人根本不是PTT,因為這種狀
況下你一開始拿到的公鑰就是壞人的公鑰,這種手法叫做中間人攻擊
因此我們用另一個協定來確保PTT真的是PTT
(先不討論中繼憑證)
要實現這樣的機制必須要有一種被叫做CA的第三方機構,可能是公司也可能是政府機關
流程大概是
1. PTT的伺服器管理員會拿自己的公鑰去跟CA買一張憑證,這張憑證會寫:這張憑證由某某
CA簽發,以及一段被某某CA的私鑰加密過的PTT公鑰。請注意:用這個公鑰加密的訊息只有
真正的PTT的私鑰能夠解密,這是關鍵
2. 你連上PTT ,PTT的伺服器會給你看他的憑證。請注意,這張憑證是公開的,因此任何人
都可以讓自己的伺服器出示PTT的憑證
3. 如果你的瀏覽器信任某某CA(要取得瀏覽器的信任很不容易),那你的瀏覽器會用內建
的某某CA公鑰來解密那段被某某CA的私鑰加密過的ptt.cc公鑰
4. 接著瀏覽器會比對這組解密出來的公鑰跟送來的公鑰是否一致,如果不同就表示這是壞
人的公鑰,會跳出警告或是直接不讓你連線
另外,即使壞人用真正的PTT憑證成功跟你建立連線(前面有說任何人都可以出示PTT的憑證
),他也無法解密你用PTT 公鑰加密的訊
息,從而保證安全
但如果今天某某CA決定跟壞人合作呢?
那你的瀏覽器解密出來的公鑰就會是壞人的公鑰,這時比對就會是一致的,然後你就用壞人
的公鑰加密訊息建立連線,於是壞人就可以看懂你的訊息了
一直到有一天有人發現:為什麼我拿到的公鑰跟真正的PTT公鑰長的不一樣,然後把事情鬧
大為止
有什麼技術上的預防方法嗎?目前沒有。
那我們是怎麼克服的呢?
答案是資本主義
如果CA被發現亂搞,那所有瀏覽器廠商就會不信任這個CA所簽發的憑證,網站管理員就不會
去跟他買憑證,然後就會倒閉,所以這類CA不太敢亂搞
那如果是政府機關類型的CA呢?
沒辦法,只能取消信任他然後讓他自己玩沙去
例如中國政府的一張憑證CNNIC之前就被發現亂搞,於是主流瀏覽器都不信任他。現在應該
只有中國國
產的那些東西會信任吧
原文也提到一堆國家的憑證都被取消信任了
BTW台灣的政府憑證TWCA目前還是受信任的喔
那這個法案危險在哪裡呢?就是規定瀏覽器廠商不可以取消信任歐盟成員政府的憑證這樣,
嚴不嚴重你各位自己判斷
以下個人心得
我是覺得原文那篇標題稍微有點聳動啦
個人覺得EFF跟Mozilla 的聲明比較合適
但歐盟確實就是我心目中地球第二G8噁心組織
第一是聯合國這樣