繁體中文(香港)
  • OTP
  • TOTP
  • MFA
  • HOTP
  • one-time password

甚麼是一次性密碼 (OTP)?

甚麼是 OTP?OTP 和 TOTP 有甚麼分別?OTP 如何運作?本文拆解了 OTP 的基本概念和為甚麼它比靜態密碼更受歡迎。

Simeng
Simeng
Developer

Stop wasting weeks on user auth
Launch secure apps faster with Logto. Integrate user auth in minutes, and focus on your core product.
Get started
Product screenshot

OTP 代表一次性密碼,也稱為一次性 PIN、一次性密碼或動態密碼。它是一個唯一的、自動生成的臨時密碼,用於單一身份驗證會話或交易。

與傳統的靜態密碼不同,OTP 每次使用時都會變更,並在短時間內過期。這使得它們成為一種高度安全的身份驗證方法,因為攻擊者很難竊取和重用它們。

OTP 被廣泛應用在各種安全應用中,包括網上銀行、電子商務及保護敏感數據或系統的訪問權限。它們還常被用作多因素身份驗證(MFA)中的第二因素,以提供額外的安全層。通過結合使用者知道的東西(例如:密碼)和他們擁有的東西(例如:行動設備),OTP 已成為現代身份驗證系統的基本工具。

OTP 如何運作?

OTP 有幾種類型,每種都有不同的生成和傳遞方式,適用於不同的使用情境。一些常見的 OTP 方法包括:

SMS OTP / 電郵 OTP

SMS OTP 或電郵 OTP 是最簡單的 OTP 形式之一,其中一個獨特的通行碼由伺服器生成並通過 SMS 或電郵安全地傳送給使用者。然後使用者輸入此密碼以驗證自己的身份。

運作方式:

  • 使用者從伺服器請求 OTP。
  • 伺服器生成一個隨機的數字或字母數字碼,並通過 SMS 或電郵發送給使用者。
  • 使用者從他們的 SMS 或電郵收件箱中取回 OTP,並輸入到應用程式中。
  • 伺服器根據其記錄驗證代碼,如果代碼有效則授予訪問權限。

安全措施:

  • OTP 只在短時間內有效(例如:5 分鐘),以減少攔截和重放攻擊的風險。
  • SMS 傳遞渠道依賴於電信網絡,容易受到 SIM 短信交換攻擊或其他電信基礎設施漏洞的攔截。
  • 基於電郵的 OTP 的安全性只取決於使用者的電郵帳戶。如果電郵帳戶被入侵,OTP 可能被攔截。

使用情境:

SMS 和電郵 OTP 常用於面向消費者的應用程式,例如網上銀行、電子商務及社交媒體平台。它們不僅比靜態密碼更安全,還為使用者提供了一種方便的方式來驗證身份而無需記住複雜的密碼和安全問題。

由於大多數使用者始終可以訪問移動電話或電郵帳戶,SMS 和電郵 OTP 已成為使用者身份驗證、電郵地址或電話號碼所有權驗證和密碼重置的首選。

基於 HMAC 的 OTP (HOTP)

基於 HMAC 的 OTP,定義於 RFC 4226,是一種時間同步 OTP 演算法,基於一個密鑰和計數器值生成一組一次性密碼。每個 OTP 是通過使用加密哈希函數(例如 SHA-1、SHA-256)來哈希密鑰和計數器值得到的。

運作方式:

  1. 密鑰:HOTP 需要伺服器和客戶端之間有一個共享的密鑰。

  2. 計數器:伺服器和客戶端維護一個計數器值,它隨每次 OTP 生成而遞增。

  3. 客戶端使用共享密鑰 (K) 計算計數器值 (C) 的 HMAC-SHA1(或其他哈希函數)哈希

    • H = HMAC-SHA1(K, C)
  4. 哈希值被截斷為 6 位或 8 位的數字代碼(取決於實施)以生成 OTP。

    • OTP = Truncate(H)mod 10^d
  5. 伺服器通過使用相同的計數器值和密鑰計算哈希值來驗證傳入的 OTP。(如果有輕微不匹配,伺服器可能允許一個或兩個計數器值的窗口,以應對同步問題)

安全措施:

  • HOTP 確保每個密碼都是唯一的,並且在使用後有效,因為計數器在每次成功驗證後遞增。
  • 共享密鑰從未在網絡上傳輸,減少了攔截的風險。
  • 計數器值在伺服器和客戶端之間同步,以防止重放攻擊。

使用情境:

HOTP 通常用於硬件令牌和傳統系統中,因為它們可能難以實施時間約束。對於現代應用,TOTP 更受歡迎,因為其基於時間的特性和容易實施。

基於時間的 OTP (TOTP)

基於時間的 OTP,定義於 RFC 6238,是一種基於當前時間和共享密鑰生成一組一次性密碼的演算法。TOTP 是 HOTP 的改進擴展,它使用時間戳而不是計數器值來生成 OTP。這為 OTP 提供了時間基礎的有效性,使它們比 HOTP 更安全。

運作方式:

  1. 密鑰:與 HOTP 一樣,TOTP 需要伺服器和客戶端之間有一個共享的密鑰。

  2. 時間步驟:HOTP 和 TOTP 之間的主要區別在於 TOTP 使用基於時間的步長值(通常為 30 秒)而不是計數器值。

  3. 客戶端計算當前時間除以時間步長的 HMAC-SHA1 哈希,使用共享密鑰。

    • H(Time) = HMAC-SHA1(K, Time/TimeStep)
  4. 哈希值被截斷為 6 位或 8 位的數字代碼以生成 OTP。

    • OTP(Time) = Truncate(H(Time))mod 10^d
  5. 動態 OTP:由於 OTP 生成是基於時間的,因此 OTP 每 30 秒更換一次,提供了更高的安全性。

  6. 伺服器驗證傳入的 OTP 通過使用當前時間和密鑰計算哈希值。只要 OTP 在有效時間窗口內,伺服器就接受身份驗證。

安全措施:

  • 對時間同步的依賴確保 OTP 僅在短期內有效,減少了攔截或重用的風險。
  • TOTP 的基於時間特性使它比 HOTP 更安全,因為它不易受到重放攻擊。即使攻擊者獲得之前使用過的 OTP,它在時間窗口到期後變得無效。
  • 與 HOTP 一樣,共享密鑰從未在網絡上傳輸,減少了攔截的風險。

使用情境:

TOTP 被廣泛用於基於軟件的身份驗證應用程式,如 Google Authenticator、Authy 和 Microsoft Authenticator。這些應用程式生成基於時間的 OTP,讓使用者用於驗證自己使用各種網上服務,包括社交媒體平台、雲服務和財務機構。

TOTP 身份驗證應用程式已成為最受歡迎的 OTP 形式,用於 MFA,因為它在安全性和易用性之間取得了平衡。使用者可以在移動設備上生成 OTP,而無需依賴 SMS 或電子郵件傳遞,使其成為更安全和便捷的身份驗證方式。

OTP 的優勢

  1. 增強的安全性

    • OTP 減輕了與被盜或泄露密碼相關的風險。
    • OTP 是時間敏感的,並迅速到期,降低了攻擊者攔截和重用它們的機會窗口。
    • 其單次使用的特性使其比靜態密碼更安全,因為每個 OTP 都是唯一的且不可重用。
  2. 易用性

    • OTP 易於生成和使用,需用戶最少的交互。
    • 被多個平台和服務廣泛支援,如 TOTP,只需很少的設置,並可以利用多種現有的身份驗證應用程式。
  3. 靈活性

    • OTP 可以通過多種渠道傳遞,包括 SMS、電郵及身份驗證應用程式,提供用戶選擇其首選方法的靈活性。
  4. 符合法規

    • OTP 符合行業標準和法規,如 PCI DSS、GDPR 和 HIPAA,這些要求強大的身份驗證機制來保護敏感數據。

為何 OTP 比靜態密碼更優?

OTP 是一種安全且方便的身份驗證方法,已成為現代安全實踐中的重要工具。通過為每個身份驗證會話提供一個唯一的、時間敏感的密碼,OTP 提供了比傳統靜態密碼更高的安全性。無論是通過 SMS、電郵還是身份驗證應用程式傳遞,OTP 在各種應用中被廣泛採用,以保護敏感數據和確保對網上服務的訪問安全。隨著威脅態勢的演變,OTP 仍然在保護用戶帳戶和防止未經授權訪問個人和公司信息中發揮著關鍵作用。