身份認證之雙因素認證 2FA

2021-02-23 01二進位

身份認證

這裡所說的身份認證,指的是狹義上的在計算機及其網絡系統中確認操作者身份的過程,從而確定用戶是否具有訪問或操作某種資源的權限。

之所以要在網際網路中進行身份認證,是為了防止攻擊者假冒你的身份在系統中進行不利於你的操作。試想一下,萬一哪天早晨起來你發現你的支付寶帳號被盜了,你餘額寶裡的錢全沒了,那豈不是虧大了。

只不過,和現實世界不同的是,網絡世界中一切信息都是用一組特定的數據來表示的,計算機只能識別用戶的數字身份,所以對用戶的授權本質上就是針對用戶數字身份的授權

因此,如何保證操作者的物理身份和數字身份相對應,就成了一個至關重要的議題了,身份認證也因此在網際網路世界中起著舉足輕重的作用了。本文將會介紹目前很多網站常用的一種方式——雙因素認證(也叫兩步驗證,英語:Two-factor authentication,縮寫為 2FA)。

雙因素認證 2FA

雖然網絡世界和真實世界對於身份的表示不盡相同,但是對於身份認證的手段與經驗是可以相互借鑑的。在真實世界,對用戶的身份認證基本依據可以分為這三種:

上述三種認證依據被稱為三種「因素」(factor)。因素越多,證明力就越強,身份就越可靠。

因此,在網絡世界中,為了達到更高的身份認證安全性,某些場景會將上面 3 種挑選 2 種混合使用,即雙因素認證。

在支付寶還沒有在中華大地普及的時候,去銀行通常需要準備一個叫「U 盾」的東西,在使用網上銀行時,用戶需要先插上 U 盾,然後再輸入密碼才能登錄網上銀行。在這一操作中,U 盾(you have)+密碼(you know)這兩種因素組合在一起就構成了一個雙因素認證。

只是後來,隨著移動網際網路的普及,手機漸漸成為最離不開人身邊的物品了,於是傳統的「U 盾+密碼」的組合方案就被「手機+密碼」的組合替代了。

現如今,簡訊驗證碼在國內已經成為使用最廣泛的兩步驗證方法之一了,雖然操作方便,不需要安裝額外的 APP,但是驗證碼的下發依賴網絡和運營商信號,有被竊聽的風險。試想一下,如果這種驗證碼的獲取不需要依賴運營商和網絡,哪怕手機處於飛行模式也可以獲取驗證碼,那麼安全性是不是就得到提升了?

而這也就是下面將要說的 TOTP,即「基於時間的一次性密碼(Time-based One-time Password)」。這是目前公認的可靠解決方案,已被納入國際標準。

TOTP流程

TOTP 的流程如下:

1.伺服器隨機生成一個的密鑰,並且把這個密鑰保存在資料庫中。2.服務端將該密鑰下發,通常是在頁面上顯示一個二維碼,內容中包含密鑰。3.客戶端掃描二維碼,把密鑰保存在客戶端。4.客戶端每 30 秒使用密鑰和時間戳通過 TOTP 算法生成一個 6 位數字的一次性密碼

其實利用 TOTP 驗證的流程很簡單,這裡也只是介紹,如果想深入了解 TOTP 算法的具體實現過程,可以參考 👉 TOTP: Time-Based One-Time Password Algorithm[1]

通過這種方式生成一次性驗證碼,除去第一次獲取伺服器下發的密鑰外,對網絡並無其他要求了,這樣即使是在離線情況下也可以使用,而且由於由於這種動態生成的密碼通常只會存在 30s,安全性也得到了較大的提升。

只是在實際過程中,肯定要額外考慮一些情況,比如如果有人想要暴力破解驗證碼時,我們可以對驗證的錯誤次數進行限制;抑或是手機端時間和伺服器時間不同步,我們需要通過算法的方式兼容伺服器時間的前後 30s,從而有效的避免細微時間上差異而導致的驗證失敗。

使用現狀

目前 TOTP 驗證 App 主要分為兩類:「獨佔類」和「開放類」。所謂獨佔類指的是只支持自家帳戶登錄的兩步驗證,比如 QQ 安全中心、Steam 驗證令牌等。開放類則是一個純粹的兩步驗證 App,通過一個 App 去作為多個網站的驗證器,例如 Google authenticator 就是一個開源的基於 TOTP 原理實現的一個生成一次性密碼的工具。

Google Play Store 上就有許多第三方的基於 TOTP 原理實現的一次性驗證碼工具,只是由於國內用戶使用習慣的問題,除非在一些特殊場合,例如找回密碼時會用到 TOTP 驗證外,其他大多數情況還是會使用簡訊驗證碼的方式,這也算國內外使用習慣的差異了。

總結

總的來說,基於 TOTP 機制的兩步驗證 APP 有著比簡訊驗證碼高得多的安全性和相媲美的便利性,是一種能保障用戶財產安全的工具。只是在登錄時會多一步,費時且麻煩,可能會引起用戶的不適。只是在重要數據面前,還是儘量使用兩步驗證吧,不然和 AntDesign 一樣丟了代碼庫可就不好了。

以上就是本文的全部內容了,新年已到,想必大家也都已經復工了,在這裡祝大家新年快樂,牛年大吉 🐂。如果你覺得我的文章對你有所幫助,還希望在新的一年裡可以繼續支持「01 二進位」,你們的支持是我更新原創的最大動力!

References

[1] TOTP: Time-Based One-Time Password Algorithm: https://tools.ietf.org/html/rfc6238

相關焦點

  • [教程] Laravel 下實現 Google 2fa 兩步認證(雙因子驗證)
    我最近在我工作的其中一個項目中實現了 雙因子認證.
  • 在雙因素身份認證領域混跡6年,聊聊我的見解
    事實上這個並不完全正確,準確來講這個太過於片面,不夠全面,「雙因素」顧名思義就是在原來「用戶名+靜態秘密」的基礎上增加一種因素,用以判斷用戶身份,以確保是用戶本人登錄,目前我知道的就有:動態密碼、掃碼、消息推送、郵件認證、指紋、人臉、虹膜、聲音、U盤證書等,所以說動態密碼是雙因素認證其中的一種
  • 郵件系統(OWA)雙因素身份認證解決方案
    二、問題分析1、密碼設置簡單,非常容易被撞庫破解;2、密碼設置複雜,非常容易忘記密碼,增加網絡管理員無意義工作;3、設置統一或有規律的密碼,一旦單點被破,極易引發全面危機;4、定期更改密碼,容易密碼混淆,難以記住;5、做密碼本、存儲位置容易洩漏,引發全面危機;
  • 7個最佳雙因素認證解決方案
    在本文中,我們將介紹由知名雙因素認證服務提供商提供的7種最適合的數據保護工具。訪問網絡帳戶的標準程序包括輸入登錄詳細信息:登錄名和密碼。這是一個單因素身份驗證。雙因素身份驗證(2FA)是一種額外的數據保護措施,這意味著需要額外的步驟才能進行常規登錄過程。
  • 雙因子身份認證機制的安全分析
    雙因子身份認證的推廣之所以受阻,主要是由於其需要使用額外的工具,而這一條件為IT和技術支持人員帶來了不小的負擔。其批評者還指出,這種安全保障措施仍然很容易遭受攻擊,即在非常小的時間周期內,這種技術很容易受到中間人(man-in-the-middle)攻擊(這也是採用嚴格SSL處理的主要原因)。
  • 雙因素認證如何保證你的帳戶安全
    本文講的是一些最佳的身份驗證應用程式和選項,雖然設置過程可能需要一些時間,但是一旦啟用了雙因素認證,一切就都安全了。如果你想確保自己的在線帳戶安全,則添加雙重身份驗證(2FA)是你可以採取的最重要的安全措施。儘管沒有任何安全措施可以100%防止黑客入侵,但是2FA在鎖定對重要帳戶的訪問方面將大有幫助。顧名思義,2FA在登錄過程中增加了另一層身份驗證。
  • 攻擊雙因素認證(2FA)的11種方式
    雖然許多緩解措施中都包含「啟用雙因素認證」這樣一條建議,但是千萬別就此以為雙因素認證(2FA)是完全安全的。所謂認證(authentication)就是確認用戶的身份,是網站登錄必不可少的步驟。其中,密碼是最常見的認證方法,但是不安全,容易洩露和冒充。不可否認,與普通密碼相比,2FA具有其獨到優勢,並且正在加大部署於各種網絡和服務中。
  • 為Nexpose啟用雙因素認證
    本次說到的雙因素認證,可以讓Nexpose的Web安全控制臺結合基於時間的一次性密碼應用程式進行雙重身份驗證。要求兩個因素身份驗證需要以下內容:您必須是全局管理員才能在全局管理中啟用該功能用戶必須具有基於時間的一次密碼應用,如 Google身份驗證器,或者微軟的Authenticator以及Authy等類似工具在安全控制臺的左側導航大菜單中,單擊"管理(ADMINISTRATION
  • 【安全運維】Linux 之 利用Google Authenticator實現用戶雙因素認證
    一、介紹:什麼是雙因素認證  雙因素身份認證就是通過你所知道再加上你所能擁有的這二個要素組合到一起才能發揮作用的身份認證系統
  • 技術乾貨 | 多因素認證之Radius
    目前大多數企業內都有VPN、WI-FI、路由器等等,例如深信服的VPN本身支持Radius協議,所以擴展雙因素認證非常簡單,實現邏輯如下:1.用戶輸入帳號密碼首次認證可以選擇本地帳號密碼/LDAP/派拉多因素認證平臺等完成帳號密碼的校驗。2.VPN帳號密碼校驗完成後進入二次認證界面,需要輸入動態口令進入多因素認證,動態口令校驗成功後進入VPN。
  • ASP.NET Core & 雙因素驗證2FA 實戰經驗分享
    為了防止不提供原網址的轉載,特在這裡加上原文連結:https://www.cnblogs.com/yuefengkai/p/11408339.html雙因素認證雙因素身份認證就是通過你所知道再加上你所能擁有的這二個要素組合到一起才能發揮作用的身份認證系統。
  • Citrix 簡訊OTP雙因素認證
    這一年多來雙因素認證也成為了客戶的標配需求,native OTP是通過安裝手機APP的方式生成OTP,而大家平常使用的很多APP和網站現在都支持輸入手機號,發送簡訊驗證碼,然後通過簡訊驗證碼認證登陸的功能,因此在客戶交流過程中也有客戶對通過簡訊OTP方式實現雙因素認證有極大興趣。
  • Palo Alto結合寧盾雙因素認證,讓數字身份更安全
    同時,為解決弱密碼、帳號密碼洩漏等帳號安全風險,Palo Alto 聯合寧盾,通過在帳號密碼的基礎上增加動態密碼或使用無密碼認證等強身份認證方式提升數字身份認證安全。如下圖:用戶在使用Palo Alto VPN的過程中首先驗證帳號密碼,其次驗證寧盾令牌的6位動態碼。
  • 網絡安全之身份認證
    (二)雙因子身份認證技術在一些對安全要求更高的應用環境,簡單地使用口令認證是不夠的,還需要使用其他硬體來完成,如U盾、網銀交易就使用這種方式。在使用硬體加密和認證的應用中,通常使用雙因子認證,即口令認證與硬體認證相結合來完成對用戶的認證,其中,硬體部分被認為是用戶所擁有的物品。
  • 物聯網安全:身份認證
    2、身份認證的基本功能和要求身份認證系統的基本功能介紹如下。可信性:確保信息的來源是可信的,即信息接收者能夠確認所獲得的信息是可靠的、安全的,而不是冒充者所發出的。防止重放攻擊主要是保證認證信息的可信性,其基本方法包括:為認證消息增加一個時間戳,為認證消息增加實時信息,動態實施認證消息等。2)抵抗密碼分析攻擊身份認證系統的認證過程應具有密碼安全性。這種安全性可通過對稱密碼體制的保護、非對稱密碼體制的保護或者Hash函數的單向性來實現。
  • 關於聯機插件雙因子認證
    最近很多小夥伴問我雙因子認證的事情,也就是登錄聯機插件後官方的提示信息,這個提示是警告您的帳戶沒有開啟雙因子認證不安全。
  • 一文全解析-Citrix 簡訊OTP雙因素認證
    這一年多來雙因素認證也成為了客戶的標配需求,Native OTP是通過安裝手機APP的方式生成OTP,而大家平常使用的很多APP和網站現在都支持輸入手機號,發送簡訊驗證碼,然後通過簡訊驗證碼認證登陸的功能,因此在客戶交流過程中也有客戶對通過簡訊OTP方式實現雙因素認證有極大興趣。
  • 等保2.0高風險判定系列 | 雙因子認證
    雙因子(或稱雙因素)認證一直是安全圈比較關注的一個話題,從等保1.0時期的關鍵評價指標項,到現在網絡安全等級保護、關鍵信息基礎設施、高風險判定指引,要求在各個層面的身份鑑別上均實現雙因子身份鑑別,可見對雙因子認證在日常應用的重視程度。 現代雙因子認證的起源,可追溯到一戰時期的英國情報局軍情6處M16,用於針對處理安全、防務、外事、經濟方面的事物情報、密碼情報。
  • 雙因子認證也不可靠 警惕社會工程學攻擊
    =======當前,隨著網絡安全威脅的日益加深,關於用戶的安全認證機制也逐步完善中。為了降低傳統單因子驗證(One-factor authentication,2FA)如靜態密碼等帶來的不可靠性,目前雙因子認證機制(Two-factor authentication)已成為加強用戶安全性的主流。
  • 管理實踐.原創 | 雙因素認證雖好,忽略這幾點,運維堡壘機將被非法遠程登陸.
    一種較好的解決方案是使用「靜態密碼」+「動態密碼」的強認證方式(簡稱為「雙因素認證」),下圖為時間型雙因素認證的原理圖,伺服器和令牌具有唯一的令牌種子和內置時鐘,通過密碼算法生成相同的動態密碼,屬於較為成熟的解決方案。可以與VPN、堡壘機、伺服器、資料庫、雲平臺等進行快速集成,性價比非常高,能極大提升身份認證水平,建議大家儘快建設。