什麼是HTTPS

以TLS保護的HTTP通訊。進行通訊加密、竄改偵測,以及以伺服器憑證驗證伺服器。URL以 https:// 開頭,預設連接埠號碼為443。請求與回應的形式與HTTP相同,其下方多了一層TLS。

日文名稱: HTTPS

「HTTPS」出現在6領域的12道練習題中(電腦網路基礎, Web技術基礎, 資訊安全基礎等)。

這個名詞所屬的領域: Web技術基礎

連線的流程

瀏覽器先與伺服器建立TCP連線(HTTP/3則為QUIC),接著進行TLS交握。瀏覽器送出可使用的加密方式、金鑰交換用的值,以及想連線的伺服器名稱(SNI),伺服器回傳自己的憑證與金鑰交換的值。雙方以ECDHE等金鑰交換在每次連線時產生新的共用金鑰,瀏覽器則驗證伺服器的憑證。之後的HTTP請求與回應,會以AES-GCM等對稱式加密一面加密、一面偵測竄改後傳送。在TLS 1.3中,交握只需1個往返。

以憑證確認伺服器

伺服器憑證是由憑證機構(CA)以數位簽章保證網域名稱與公開金鑰之對應關係的文件。瀏覽器會確認憑證是否以簽章鏈連到受信任的根憑證機構、是否在有效期限內、是否與URL的主機名稱一致、是否已被撤銷。藉此防止在途中攔截通訊、冒充真正伺服器的中間人攻擊。無法確認時,瀏覽器會顯示警告並停止連線。

能保護與不能保護的部分

HTTPS保護網頁內容、URL的路徑與查詢、標頭與Cookie,免於在途中被竊聽與竄改。另一方面,伺服器的IP位址、通訊量與時間點仍然看得到,連線目標的網域名稱也可能從DNS查詢或SNI得知。此外,HTTPS只保護通訊路徑,並不保證網站經營者值得信任,因為假網站也能取得憑證並使用HTTPS。實務上會與防止降級為HTTP的HSTS,以及只在HTTPS時送出Cookie的Secure屬性等搭配使用。

練習HTTPS的題目

在 Kubernetes 叢集中,希望把到達同一個主機名稱的 HTTPS 要求中,路徑以 /api 開頭的分配給 api 的 Service,其他的分配給 web 的 Service。適合用來訂定這個分配規則的資源是下列何者?

  1. AIngress
  2. BReplicaSet
  3. Ctype: ClusterIP 的 Service
查看答案與解析

正確答案:A. Ingress

Ingress 是依主機名稱與URL路徑,訂定把來自叢集外部的 HTTP、HTTPS 要求分配給各 Service 之規則的資源,也可以在這裡設定 TLS 終結。實際接收並分配要求的,是安裝在叢集中的 Ingress 控制器(以反向代理方式運作)。type: ClusterIP 的 Service 是只能從叢集內部使用的連線目標,沒有依路徑分配的功能。ReplicaSet 是用來維持 Pod 數量的,與通訊的分配無關。

以HTTPS(在TCP之上的TLS 1.3)重新連線到RTT(往返時間)為100 ms的Web伺服器,從送出第一個請求到開始收到回應,所需時間最接近下列何者?假設DNS名稱解析已完成,並忽略伺服器的處理時間與資料的傳輸時間。

  1. A約100 ms
  2. B約300 ms
  3. C約200 ms
查看答案與解析

正確答案:B. 約300 ms

首先,TCP的三向交握需要1個往返(用戶端可以把TLS的第一則訊息與最後的ACK一起送出)。接著TLS 1.3的交握需要1個往返,之後HTTP的請求與回應再需要1個往返,合計3個往返,即 3 × 100 = 300 ms。TLS 1.2的金鑰交換需要2個往返,因此共4個往返,為400 ms。這段等待時間取決於RTT的次數,而RTT由距離決定,因此即使增加線路頻寬也不會縮短。HTTP/3使用的QUIC把傳輸層與加密的交握合併為1個往返,重新連線時還提供在第一次往返就傳送資料的方法(0-RTT)。

常見問題

HTTP與HTTPS有什麼不同?

HTTPS是以TLS加密HTTP的交換,並加上竄改偵測與伺服器驗證。請求與回應的形式相同,預設連接埠號碼HTTP為80、HTTPS為443。使用HTTP時,途中的設備可能讀取或改寫內容。

使用HTTPS的網站就一定安全嗎?

可以確認通訊在途中不會被竊看或改寫,以及連到的是該網域名稱的伺服器。但不保證網站本身是真的或沒有惡意。釣魚網站也能使用HTTPS,因此要仔細確認網域名稱。

HTTPS的加密使用公開金鑰加密還是對稱式加密?

兩者分工使用。交握時以公開金鑰的技術進行金鑰交換與憑證驗證,實際的資料則用在交握中產生的金鑰,以處理快速的對稱式加密來加密。

解析中的「HTTPS」

出現「HTTPS」的題目(12題)

  1. 在 Kubernetes 叢集中,希望把到達同一個主機名稱的 HTTPS 要求中,路徑以 /api 開頭的分配給 api 的 Service,其他的分配給 web 的 Service。適合用來訂定這個分配規則的資源是下列何者?
  2. 以HTTPS(在TCP之上的TLS 1.3)重新連線到RTT(往返時間)為100 ms的Web伺服器,從送出第一個請求到開始收到回應,所需時間最接近下列何者?假設DNS名稱解析已完成,並忽略伺服器的處理時間與資料的傳輸時間。
  3. HTTPS(以TLS保護的HTTP通訊)能保護的是下列何者?
  4. 在執行NAPT的路由器(外側全球位址為 198.51.100.7)內側的終端A(192.168.1.10),以來源連接埠50000連線到Web伺服器 203.0.113.5 的443號連接埠。路由器把來源轉譯為 198.51.100.7 的連接埠61000。Web伺服器送回的回應封包,其目的地是下列何者?
  5. 下列協定與其伺服器標準使用之連接埠號碼的組合,何者正確?
  6. 關於以上方標頭設定的Cookie,下列說明何者正確?
  7. 關於Service Worker的說明,下列何者正確?
  8. 關於反向代理的說明,下列何者正確?
  9. 某留言板網頁應用程式有一個漏洞:使用者張貼的文章中所含的指令碼,會在其他瀏覽者的瀏覽器中執行。此漏洞的名稱與根本對策的組合,正確的是哪一項?
  10. 網頁應用程式若在登入前後持續使用相同的工作階段ID,攻擊者可能讓使用者使用攻擊者事先準備的工作階段ID,並在使用者登入後以該ID冒充使用者。對這種攻擊最適當的對策是哪一項?
  11. 設 1 GiB = 2³⁰ 位元組、1 EiB = 2⁶⁰ 位元組。以CBC模式使用區塊長度64位元的區塊加密(3DES等),用同一把金鑰加密大量資料。把密文區塊視為隨機的64位元值時,根據生日悖論,出現相同密文區塊之配對的機率變得不可忽視的資料量參考值為下列何者?
  12. 關於網頁應用程式防火牆(WAF),正確的說明是下列何者?

相關名詞

HTTP(超文字傳輸協定) URL(網址) TLS Cookie IP位址 跨網站指令碼(XSS) 反向代理 DNS(網域名稱系統) 連接埠號碼 Kubernetes

前往名詞解釋列表