解讀登錄因子認證(MFA)特性背后的TOTP原理

      網友投稿 1733 2022-05-29

      登錄雙因子認證(MFA)特性2018年上線華為云至今也兩年多了,趁最近有時間,介紹一下這個特性背后的原理——TOTP。

      原理

      TOTP(Time-Based One-Time Password)算法是基于時間的一次性密碼算法,根據預共享的密鑰與當前時間計算一次性密碼。它已被互聯網工程任務組接納為RFC 6238標準,成為主動開放認證的基石,并被用于眾多多因子認證系統當中。

      TOTP其實并不是一種全新的算法,可以看成是HOTP(HMAC-Based One-Tme Password)算法的一個具體化的場景。HOTP的算法可以在RFC 4226看到詳細描述,所以相比HOTP算法,TOTP的RFC文檔看起來非常簡潔。

      上面是HOTP算法的公式,參數K表示共享密鑰,參數C表示計數器counter。

      TOTP算法實際上是以時間變量作為參數C的HOTP算法,所以TOTP算法的公式應該是

      參數K仍然表示共享密鑰,而參數T表示時間變量。

      時間變量T

      TOTP的核心和實踐方案也是圍繞時間變量T,但T不是簡單的時間戳,

      X表示步長,默認是30秒,T0表示UTC時間的起始時間戳,即1970年一月一日,Floor函數向下取整。T必須是一個大于32bit的整型,才能支持到2038年以后。例如當X=30時,59對應的T為1,60對應的T為2。

      TOTP在MFA上的應用

      MFA(Multi-Factor Authentication),多因子認證,是計算機系統中一種進行身份認證的方法,用戶需要通過兩種或兩種以上的認證手段的校驗才能進入系統,訪問資源。

      開通MFA一般都需要先在登錄認證系統中將用戶的身份和用戶的物理設備進行綁定關聯,在登錄過程中,除了輸入密碼(用戶知道的),還需要輸入用戶的物理設備(用戶持有的)上顯示的訪問碼(passcode)來完成整個身份驗證。說明:不是所有的MFA驗證過程都需要用戶主動輸入訪問碼。

      上圖示意的過程即MFA的通用流程,例如我們使用網銀進行轉賬就需要拿出在銀行窗口開戶時銀行提供的一個U盾,按下按鈕,U盾上即顯示一串數字,輸入這次數字到網銀軟件上才能完成轉賬。

      但上圖的MFA流程存在一個工程難題,即第4步中認證系統后端還需要向MFA設備(或MFA設備的后臺系統)進行一次驗證,這個驗證過程限制了MFA的應用場景,運行在企業數據中心的認證服務器一般不被允許訪問公網,即使訪問公網也會因為網絡時延導致登錄體驗變差,TOTP算法的應用很好的解決了這個難題。

      使用TOTP算法,只要客戶端(證明方)和服務端(校驗方)保持時鐘一致,且雙方預先設置好一個共享密鑰的前提下,在同一個時間片段內算出來的值是一樣的。正是基于這樣的原理,在認證系統中先將用戶身份和該共享密鑰綁定,再將共享密鑰置入物理設備,在認證過程中,物理設備和認證系統各自通過TOTP算法根據共享密鑰和時間戳計算出訪問碼,只要訪問碼對比一致就能證明用戶持有該物理設備,整個認證過程中物理設備和認證系統不需要有交互,非常靈活。

      基于TOTP算法的設備,可以分為虛擬(軟件)MFA和硬件MFA。

      虛擬MFA

      虛擬MFA即通過軟件來模擬硬件MFA設備,在手機上安裝一個支持TOTP協議的APP,例如Google Authenticator, Microsoft Authenticator,華為云APP也同樣支持標準的TOTP協議。虛擬MFA通過掃碼二維碼圖片或者手工輸入的方式置入校驗方生成的共享密鑰,并且可以同時關聯多個校驗方,非常方便實用。

      硬件MFA

      下圖中是一種信用卡形狀的硬件MFA,可以放到錢包里,在需要時按下卡片上的按鈕即可顯示六位數字,非常便攜。

      安全考慮

      1.? 哈希算法

      TOTP算法的強度取決于背后的HOTP算法,但HOTP的哈希函數是HMAC-SHA1,并不是我司推薦的安全算法。TOTP算法在具體實現中也可以使用HMAC-SHA256或HMAC-SHA512,但使用HMAC-SHA1仍然是最通用,兼容性最好的實現,Google Authenticator就是使用HMAC-SHA1。

      2.? 密鑰隨機性

      對TOTP算法最可能的攻擊手段就是暴力破解,因此共享密鑰必須是密碼學安全的密鑰,足夠隨機。密鑰長度應該和哈希算法的長度盡量匹配。

      另外,校驗方必須將密鑰存放在安全的區域,使用加密方式保存,防止泄露,只有在需要驗證OTP的時候才解密。同時還需要限制最小權限,只有校驗方自身才能拿到密鑰。

      3.? 通信安全

      解讀登錄雙因子認證(MFA)特性背后的TOTP原理

      證明方和校驗方應該使用安全的通道通信,例如SSL/TLS。

      4.? 防暴力破解

      一般TOTP用于MFA時,校驗方只會要求輸入6位數字,很容易被暴力破解,在工程實踐中可以當第二因子的嘗試失敗達到一定次數后鎖定客戶端。

      5.? 保持一次性

      TOTP算法在同一個時間片段(例如,30s)內的輸出都是一樣的,如果同一個TOTP驗證已經成功驗證過一次,該驗證碼的第二次嘗試應該被拒絕,這樣才能保證OTP“一次性”的基本性質。

      6.? 時間片段

      時間片段越長,被破解的風險就越高,但考慮到證明方需要人工輸入驗證碼,應該留下足夠的操作時間。推薦使用30秒作為默認時間片段,在安全和易用性之間達到一個平衡。

      可用性考慮

      1.? “后向兼容“

      因為證明方和校驗方都是基于時間來計算OTP,如果證明方在一個時間片段的最后時刻發送OTP,在請求達到校驗方時,已經進入下一個時間片段,如果校驗方使用當前時間來計算OTP,肯定會匹配失敗,這樣會導致一定的失敗率,影響可用性。

      校驗方應該不僅僅以接收請求的時間,還應該用上一個時間片段來計算TOTP,增強容錯性。不過,容錯窗口越長,被攻擊風險越高,“后向兼容”一般推薦不超過一個時間片段。

      2.? 支持校準

      證明方和校驗方的時鐘可能不完全一致,特別是很長一段時間沒有進行過TOTP認證,時鐘偏移導致匹配失敗。校驗方的認證系統可以提供一種校準(re-sync)的能力,讓證明方輸入TOTP驗證碼,校驗方往前計算兩個時間片段(60s),往后計算一個時間片段(29s),通過匹配結果記錄證明方的時鐘的偏差值,完成時鐘校準。在證明方以后發起驗證時,校驗方直接使用偏差值計算TOTP。但如果廠商已經支持足夠的“后向兼容”,校準不一定需要支持。

      云安全

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:位置不共享卷積
      下一篇:物聯網Lora技術應用有哪些?Lora無線通訊模塊有什么優缺點?
      相關文章
      男人天堂2018亚洲男人天堂| 亚洲精品tv久久久久久久久| 久久精品亚洲视频| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 亚洲精品第一国产综合境外资源| 亚洲Av永久无码精品一区二区| 国产精品亚洲专区在线观看 | 亚洲码在线中文在线观看| 无码乱人伦一区二区亚洲| 亚洲福利视频导航| 亚洲专区先锋影音| 亚洲永久中文字幕在线| 亚洲精品中文字幕无乱码| 亚洲成人福利在线| 亚洲av午夜精品无码专区| 国产91在线|亚洲| 亚洲欧美一区二区三区日产| 亚洲六月丁香六月婷婷蜜芽| 亚洲国产精品综合久久网各| 久久久久亚洲AV无码永不| 亚洲男人都懂得羞羞网站| 亚洲高清不卡视频| 亚洲三级中文字幕| 亚洲影院天堂中文av色| 亚洲成a∨人片在无码2023| 人人狠狠综合久久亚洲高清| 亚洲日本中文字幕天堂网| 亚洲乱码国产乱码精品精| 午夜影视日本亚洲欧洲精品一区| 亚洲AV无码久久精品蜜桃| 久久精品国产亚洲AV麻豆~| 亚洲精品在线网站| 亚洲综合一区二区三区四区五区| 亚洲av无一区二区三区| 国产精品无码亚洲一区二区三区| 日韩精品电影一区亚洲| 亚洲中文字幕无码不卡电影| 亚洲综合无码一区二区| 亚洲AV成人无码天堂| 亚洲av乱码中文一区二区三区| 亚洲无线一二三四区手机|