日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

动态密码卡TOTP算法

發布時間:2024/6/21 编程问答 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 动态密码卡TOTP算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

TOTP NET實現:http://googleauthcsharp.codeplex.com/

引用:http://www.cnblogs.com/wangxin201492/p/5030943.html

1. OTP

OTP(One-Time Password)譯為一次性密碼,也稱動態口令。是使用密碼技術實現的在客戶端和服務器之間通過共享秘密的一種認證技術,是一種強認證技術,是增強目前靜態口令認證的一種非常方便技術手段,是一種重要的雙因素認證技術。

1.1 OTP的認證原理

動態口令的基本認證原理是在認證雙方共享密鑰,也稱種子密鑰,并使用的同一個種子密鑰對某一個事件計數、或時間值、或者是異步挑戰數進行密碼算法計算,使用的算法有對稱算法、HASH、HMAC,之后比較計算值是否一致進行認證。可以做到一次一個動態口令,使用后作廢,口令長度通常為6-8個數字,使用方便,與通常的靜態口令認證方式類似.

1.3 OTP的實現方式

  • 時間同步(TOTP)
  • 事件同步(HOTP)
  • 挑戰/應答(OCRA)
  • 2. HOTP

    HOTP(HMAC-base On-Time Password)譯為基于HMAC的一次性密碼,也稱事件同步的動態密碼。

    2.1 HOTP的工作原理

    $$ HTOP(K,C) = Truncate(HMAC-SHA-1(K,C))$$
    客戶端和服務器事先協商好一個密鑰K,用于一次性密碼的生成過程。此外,客戶端和服務器各有一個計數器C,并且事先將計數值同步。而Truncate是為了獲得一個符合HTOP要求的值。

    3 TOTP

    TOTP(Time-base One-Time Password)譯為基于時間的一次性密碼,也稱時間同步的動態密碼.

    3.1 TOTP的工作原理

    $$TOTP = Truncate(HMAC-SHA-1(K,T))$$
    TOTP是HOTP的一個變種,將HOTP中的計數器C替換為依托時間的參數T,T是由當前時間(CurrentUnixTime、初始時間(T0)、步長(X)決定的。即:

    $$ T = (Current Unix time - T0) / X $$

    • CurrentUnixTime:當前的Unix時間。
    • T0: 開始計步初始化時間,默認為0
    • X?: 步長,默認情況下為30s

    3.2 TOTP的要求

  • 客戶端和服務器必須能夠彼此知道或者推算出對方的Unix Time
  • 客戶端和服務器端必須共享一個密鑰
  • 算法必須使用HOTP作為其關鍵實現環節
  • 客戶端和服務器端必須使用相同的步長X
  • 每一個客戶端必須擁有不同的密鑰
  • 密鑰的生成必須足夠隨機
  • 密鑰必須儲存在防篡改的設備上,而且不能在不安全的情況下被訪問或使用。
  • 對該算法中T的實現必須大于int32,因為它在2038年將超出上限。
  • T0和X的協商必須在之前的步驟中就已經做好了。
  • 3.3 安全性考慮

    3.3.1 安全性分析

    該算法的安全性和健壯性完全依賴于其關鍵實現環節HOTP。

    安全性分析的結果是:在所有的測試中,該算法的結果均勻的、獨立的分布。這個分析顯示,最好的攻擊和破解TOTP(HOTP)的方法是暴力破解。而在算法要求環節,要求key必須有足夠的隨機性。

    3.3.2 時延兼容

    在同一個步長內,動態密碼生成的結果是一樣的。當一個驗證系統獲得這個動態密碼的時候,它并不知道動態密碼的生產者是在哪個步長內產生的密碼。由于網絡的原因,客戶端生成密碼的時間和服務器接受密碼的時間可能差距會很大,很有可能使得這2個時間不在同一個步長內。當一個動態密碼產生在一個步長的結尾,服務器收到的密碼很有可能在下一個步長的開始。

    驗證系統應該設置一個策略允許動態密碼的傳輸時延,不應該只驗證當前步長的動態密碼,還應該驗證之前幾個步長的動態密碼。但越大的傳輸時延窗口設置,就會帶來越大的風險被攻擊,我們推薦最多設置一個時延窗口來兼容傳輸延時。

    3.3.3 步長設置

    步長大小的設置,直接影響安全性和可用性:

  • 一個越大的步長,就會導致一個越大的窗口被攻擊。當一個動態密碼被生成而且在其有效期內暴露在第三方環境下,那么第三方系統就可以在該動態密碼無效前使用這個密碼。
  • 我們推薦默認的步長時間是30s,這個默認值是在權衡了安全性和可用性的基礎上提出的。
  • 下一個動態密碼肯定會在下一個步長生成,用戶必須等待當前步長的結束。這個等待時間的理想值會隨著步長的設置而增大。一個太長的窗口設置不使用網絡用戶登錄這種場景,用戶可能等不了一個步長的時間,就放棄登錄
  • 轉載于:https://www.cnblogs.com/Horne/p/6945862.html

    總結

    以上是生活随笔為你收集整理的动态密码卡TOTP算法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。