HTTPS是什麼?鎖頭圖示能保護與不能保護的事
HTTPS是把網頁的交換(HTTP)用密碼技術保護起來再傳送的方式。它保護3件事:途中不會被偷看、被竄改時能發現、能確認對方是真正的網站。不過,鎖頭圖示只是「通訊受到保護」的標記,並不代表網站值得信任。
這篇文章可以了解
- HTTP和HTTPS的差異,以及HTTPS保護的3件事
- 初次見面的瀏覽器和伺服器,共享秘密金鑰的方法
- 憑證和憑證機構確認對方是不是本尊的方法
- 即使有鎖頭圖示也保護不了的事
先備知識:不需要。如果知道「網際網路怎麼傳送資料」,會更容易閱讀。
生活中的例子
用瀏覽器打開網頁,網址有時會以「https://」開頭。在網路上購物或登入時,應該有人被教過「要確認鎖頭圖示」。
可是最近的Chrome,網址列上的鎖頭圖示已經不見了。另一方面,被有鎖頭圖示的假網站欺騙的受害事件也一再發生。鎖頭圖示到底保護了什麼,又沒有保護什麼呢?這篇文章會依序看看它的運作方式。
HTTP是什麼:「請給我頁面」這段對話的規則
瀏覽器要顯示頁面時,會向伺服器送出請求。伺服器是依要求提供資料的電腦。規定「請給我這個頁面」「好,給你」這種對話形式的規則,稱為HTTP。
HTTP的對話,直接傳送的話,任何人都讀得懂。在網際網路上,資料會分成小塊,經過許多設備轉送才送達。途中的設備,或連在同一個Wi-Fi的人,只要想讀,就讀得到內容。轉送的方式,在「網際網路怎麼傳送資料?」中說明。
HTTPS的「S」,是Secure(安全)的第一個字母。對話的內容和HTTP一樣,只是把這段對話包成別人讀不懂的形式再傳送。負責包起來的規則,稱為TLS。也就是說,HTTPS是「用TLS保護的HTTP」。
TLS的前身,是1990年代Netscape公司做的SSL。SSL被發現弱點後就不再使用,由一再改良的TLS取代。像「SSL憑證」這樣,舊名稱到現在還留著。
HTTPS保護的3件事
通訊上令人擔心的事,大致可分成3種。在資訊安全領域,常稱為「竊聽、竄改、冒充」。HTTPS對這3種,各有對應的對策。
| 擔心的事 | 例子 | HTTPS的對策 |
|---|---|---|
| 竊聽(偷看) | 輸入的密碼被讀到 | 加密 |
| 竄改(改寫) | 畫面上的匯款帳號被改掉 | 偵測改寫 |
| 冒充 | 假伺服器假裝成真的 | 用憑證確認 |
加密,是用固定的步驟和「金鑰」,把資料轉成看不出意思的形式。只有持有正確金鑰的對方,才能還原。金鑰的真面目,是非常長的數字(這裡省略計算的內容)。
偵測改寫的方法,是在送出的每一段資料後面,附上用金鑰算出的簡短確認值。途中只要被改了1個字,接收端的計算就會對不上。這時,連線本身就會中斷。
第3件事「對方是不是本尊」,要用後面說明的憑證來確認。我們先來看看,加密用的金鑰要怎麼準備。
怎麼和初次見面的對象共享金鑰
加密和還原都使用同一把金鑰的方式,稱為對稱式加密。計算很輕,大的資料也能快速加密。不過,瀏覽器和伺服器是初次見面。如果直接把金鑰送過去,途中就會被偷看。
解決這個問題的,是公開金鑰加密的想法。使用成對的2把金鑰,一把是給誰看都沒關係的「公開金鑰」,另一把是只有本人持有的「私密金鑰」。從公開金鑰推算出私密金鑰,被設計成以現在的電腦無法在合理的時間內做到。
現在HTTPS的主要方法,不傳送金鑰本身。瀏覽器和伺服器,各自在手邊產生用完即丟的秘密數字。這相當於私密金鑰。只有從它算出的「可以給人看的材料」(相當於公開金鑰),會互相傳送。把對方的材料和自己的秘密組合起來,雙方就會做出相同的金鑰。
即使途中偷看了材料,沒有手邊的秘密,也做不出相同的金鑰。這個方法以想出它的2人命名,稱為迪菲-赫爾曼金鑰交換。它的基礎,是1976年發表的想法。做出的金鑰,會用在之後的對稱式加密。也就是只在一開始做繁重的計算,正式的通訊則用輕量的對稱式加密進行。
憑證與憑證機構:確認對方是不是本尊
要怎麼確認,正在對話的是真正的「example.com」呢?這時用的就是「憑證」。憑證是寫著網站名稱和該網站公開金鑰這一組資料的電子身分證。
憑證上,蓋有發行機構的電子印章。這稱為數位簽章。簽章只能用發行機構的私密金鑰做出來,任何人都能用該機構的公開金鑰來確認。憑證的內容只要改了1個字,確認時就會對不上。
發行憑證的機構,稱為憑證機構(CA)。憑證機構會先確認申請者真的管理那個網域(網站的名稱),才發行憑證。瀏覽器和作業系統裡,一開始就內建了信任的憑證機構清單。瀏覽器會依序追溯簽章,確認能不能追到這份清單。
不過,憑證是任何人都看得到的公開資訊。所以伺服器不只出示憑證,還要證明自己持有成對的私密金鑰。具體來說,就是用私密金鑰替當下的交換內容簽章後送出。瀏覽器也會確認打開的網址和憑證上的名稱是否相符、是否過期。只要有任何問題,就會顯示警告並停止連線。
以前的憑證大多要付費,手續也很麻煩。因此,出現了免費且自動發行憑證的憑證機構「Let's Encrypt」。它在2015年9月發出第一張憑證。營運者是美國的非營利組織ISRG。它報告說,到2025年底,約有7億6,200萬個網站使用它的憑證。
連線之前的流程
把到目前為止的內容整理一下,用HTTPS連線時,會發生下面這些事。圖中是2018年成為標準的TLS 1.3版本,經過簡化後的樣子。
準備完成後,「請給我這個頁面」的HTTP請求和回應,會用做好的金鑰加密後傳送。並不是每次打開頁面,都要從頭做一次這個準備。也有重複使用之前做好的資訊,來縮短準備的方法。
即使有鎖頭圖示也保護不了的事
1. 網站值不值得信任
鎖頭圖示表示的,只是「正在和這個名稱的網站,進行受密碼保護的通訊」。即使是以詐騙為目的的網站,只要是自己申請的網域,也拿得到憑證。假冒真實的公司等,用假網站讓人輸入密碼等資料的詐騙,稱為網路釣魚。
根據反網路釣魚組織APWG的報告,使用HTTPS的釣魚網站,在2018年10~12月約占47%。到了2020年7~9月,增加到約80%。該看的不是鎖頭圖示,而是網址列的網域名稱是不是真的。不要從電子郵件或簡訊的連結打開,從書籤或官方App進入比較安全。
2. 送來的內容安不安全
HTTPS只保護傳送的途中,不檢查傳送的內容。病毒等惡意程式,也會在加密的狀態下送達。另外,資料送達之後怎麼處理,取決於經營者。個人資料從伺服器外洩的事故,HTTPS無法防止。
3. 正在看哪個網站
HTTPS會隱藏的,是頁面的內容,以及網址中網域名稱之後的部分。例如「example.com/account/」,「/account/」的部分會被加密。輸入的密碼,以及用來維持登入狀態的小資料(Cookie),也受到保護。
另一方面,通訊對象的IP位址(設備的號碼),為了送達,會維持看得到的狀態。通訊的量和時間也看得出來。而且,網站的名稱(網域名稱),在很多情況下也能從途中讀到。理由有2個。
第1個,是從名稱查號碼的DNS查詢。這個查詢,用傳統的方式不會加密就送出。
第2個,是在準備加密時,瀏覽器會告知「想連線的網站名稱」。因為1台伺服器有時會負責許多網站,所以需要這個資訊。這個欄位稱為SNI,過去一直是不加密就送出。
兩者都有隱藏的技術。把DNS查詢加密的方式,有DNS over HTTPS等。把SNI加密的ECH,也在2026年3月成為標準。不過,會不會使用,取決於瀏覽器、網站和網路的設定。目前還不能說「只要是HTTPS,就沒有人知道你看了哪個網站」。
公司的網路,還有一個要注意的地方。有些公司會在員工電腦的「信任的憑證機構清單」裡,加入公司自己的憑證機構。然後在途中放置一台設備,先解開HTTPS再檢查內容。目的是找出病毒或資料外流。這時,即使出現鎖頭圖示,公司的設備也讀得到內容。
瀏覽器的顯示也在改變
Google在2023年5月宣布,要把Chrome網址列的鎖頭圖示換成別的圖示。那是排列著滑桿的形狀、代表設定的圖示。從2023年9月的Chrome 117開始,改成這種顯示。理由之一,是鎖頭圖示一直被誤解。在Google 2021年的調查中,正確理解鎖頭圖示意思的參與者只有11%。
另一個理由,是HTTPS已經變得理所當然。現在,告知「不是HTTPS」比告知「是HTTPS」更有用。Chrome會在HTTP的頁面上顯示「不安全」。此外,Google在2025年10月宣布了一項計畫,要讓某個設定預設啟用。這個設定會在第一次打開不是HTTPS的公開網站前,先要求確認。預定從2026年10月的Chrome 154開始,對所有使用者啟用。
常見的誤解
誤解:有鎖頭圖示的網站,就是安全、值得信任的
實際上,鎖頭圖示表示的只是「正在和這個名稱的網站,進行受保護的通訊」。假網站也拿得到憑證。在HTTPS網站還很少的年代,曾廣泛呼籲「要確認鎖頭圖示」,這成了誤解的來源。
誤解:只要是HTTPS,就沒有人知道你看了哪個網站
實際上,對方的IP位址看得到,網站的名稱也常能從DNS或SNI讀到。會隱藏的是頁面的內容、網址的後半和輸入的內容。在公司內部的網路,公司的設備也可能連內容都檢查。
誤解:HTTPS是用伺服器的公開金鑰,把對稱金鑰加密後送出
實際上,那是TLS 1.2以前的版本能用的方法之一。TLS 1.3已經沒有這個方法了。用公開金鑰技術準備金鑰時,只剩下互相傳送材料、做出相同金鑰的方法。因為舊方法在伺服器的私密金鑰日後被偷時,連被記錄下來的過去通訊都可能被讀到。
不過,這不代表考試的答案變成錯的。「用公開金鑰技術準備金鑰,正式傳送用對稱式加密」的組合,在資訊類考試中常稱為「混合式加密」。教科書常見的「用對方的公開金鑰把對稱金鑰加密後送出」,作為它的基本形式,是正確的說明。改變的是現在HTTPS準備金鑰的方式。
從數字來看
| 項目 | 數字 | 時間、出處 |
|---|---|---|
| 在Chrome中以HTTPS打開的頁面比例 | 2015年約30~45%,2020年前後起約95~99%(依作業系統等而異) | Google(2025年10月的發表) |
| 使用Let's Encrypt憑證的網站 | 約7億6,200萬 | 2025年底,ISRG |
| 使用HTTPS的釣魚網站 | 約47%→約80% | 2018年10~12月→2020年7~9月,APWG |
| 正確理解鎖頭圖示意思的參與者 | 11% | Google 2021年的調查 |
| 憑證有效期間的上限 | 200天→100天→47天 | 從2026年3月、2027年3月、2029年3月起,CA/Browser Forum的決定(2025年) |
| TLS 1.3準備所需的交換 | 1次來回 | TLS 1.3的標準(2018年) |
在幾乎所有頁面都以HTTPS打開的現在,鎖頭圖示能分辨的,只有剩下少數的HTTP頁面。正因如此,比起有沒有鎖頭圖示,養成確認網域名稱的習慣更重要。
憑證期限縮短的理由之一,是撤銷有問題憑證的機制,並不是每次都能確實運作。期限短的話,即使私密金鑰被偷,或網域的擁有者換人,舊憑證能被使用的期間也會比較短。
進一步學習
- 用表格看公開金鑰加密的種類:RSA加密、橢圓曲線密碼學、後量子密碼的差異(也包括對量子電腦的準備)
- HTTP版本的差異:HTTP/1.1、HTTP/2、HTTP/3的差異(HTTP/3把加密納入了通訊的規則)
- 減少假網站的受害:多因素驗證(除了密碼,還用手機等其他東西來確認本人的方法)
- 用計算試試密碼的強度:密碼暴力破解時間計算工具
- 公司網路的防護:防火牆、IDS、IPS、WAF的差異、VPN(把整個通訊加密的虛擬專用通道。從公司外連進公司網路時等情況使用)