繁體中文(台灣)
  • OTP
  • TOTP
  • MFA
  • HOTP
  • 一次性密碼

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

什麼是 OTP?OTP 和 TOTP 有何不同?OTP 是如何運作的?本文分解了 OTP 的基本概念,說明為什麼它比靜態密碼更受歡迎。

Simeng
Simeng
Developer

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

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

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

OTP 是如何運作的?

有幾種類型的 OTP,每種 OTP 根據不同的用例以不同的方式生成和傳遞。一些常見的 OTP 方法包括:

簡訊 OTP / 電子郵件 OTP

簡訊 OTP 或電子郵件 OTP 是最簡單的 OTP 形式之一,伺服器生成唯一的通行碼並通過簡訊或電子郵件安全地發送給使用者。然後使用者輸入該通行碼以驗證身份。

工作原理:

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

安全措施:

  • OTP 僅在短時間內有效(例如 5 分鐘),以最大程度地減少攔截和重放攻擊的風險。
  • 簡訊傳送渠道依賴於電信網絡,使其容易受到 SIM 卡交換攻擊或電訊基礎設施中的其他漏洞的攔截。
  • 基於電子郵件的 OTP 僅與使用者的電子郵件帳戶一樣安全。如果電子郵件帳戶被入侵,OTP 可能會被攔截。

使用案例:

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

由於大多數使用者隨時都能訪問行動電話或電子郵件帳戶,簡訊和電子郵件 OTP 成為使用者身份驗證、電子郵件地址或電話號碼所有權驗證和密碼恢復的首選。

基於 HMAC 的 OTP (HOTP)

RFC 4226 定義的基於 HMAC 的 OTP,是一種時間同步的 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)

RFC 6238 定義的基於時間的 OTP,是一種根據當前時間和共享密鑰生成一序列一次性密碼的算法。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 的生成基於時間,每 30 秒更改一次,提供了更高的安全性。

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

安全措施:

  • 依賴於時間同步確保 OTP 僅在短時間內有效,減少了攔截或重用的風險。
  • 相比 HOTP,TOTP 的時間基礎特性使其更安全,因為它不太容易受到重放攻擊。即使攻擊者獲得先前使用過的 OTP,它在時間窗口過期後也會失效。
  • 如同 HOTP,秘密密鑰從不在網絡上傳輸,減少了被攔截的風險。

使用案例:

TOTP 被廣泛用於軟體認證器應用,例如 Google Authenticator、Authy 和 Microsoft Authenticator。這些應用會為使用者生成基於時間的 OTP,使其能夠驗證自己與各種在線服務(包括社交媒體平台、雲服務和金融機構)的身份。

TOTP 認證器應用已成為 OTP 為 MFA 的最受歡迎形式,因為它在安全性和可用性之間提供了一個平衡。使用者能在其行動裝置上生成 OTP,無需依賴於簡訊或電子郵件發送,使其成為一種更安全和便捷的身份驗證方法。

OTP 的優勢

  1. 增強的安全性

    • OTP 緩解了與被竊或受損密碼相關的風險。
    • OTP 是時間敏感的並會迅速過期,減少了攻擊者攔截和重用的機會窗口。
    • OTP 的單次使用特性使其比靜態密碼更安全,因為每個 OTP 都是唯一的,不能重複使用。
  2. 易用性

    • OTP 易於生成和使用,需最少的使用者交互。
    • 被各種平台和服務廣泛支持,如 TOTP,需最少的設置且可使用多種現有的認證器應用。
  3. 靈活性

    • OTP 可以通過多種渠道傳送,包括簡訊、電子郵件和認證器應用,用戶可以選擇他們偏好的方法。
  4. 符合規範

    • OTP 符合行業標準和規範,例如 PCI DSS、GDPR 和 HIPAA,它們要求強身份驗證機制來保護敏感數據。

為什麼 OTP 優於靜態密碼?

OTP 是一種安全且便捷的身份驗證方法,已成為現代安全實踐中的一個重要工具。通過為每次身份驗證會話提供一個唯一、時間敏感的通行碼,OTP 提供了比傳統靜態密碼更高的安全性。無論是通過簡訊、電子郵件或認證器應用傳送,OTP 在各種應用中被廣泛採用,以保護敏感數據並保護對線上服務的訪問。在威脅環境不斷演變的情況下,OTP 繼續在保護用戶帳戶和防止未授權訪問個人和企業信息方面發揮重要作用。