1. 程式人生 > >在雙因素身份認證領域混跡6年,聊聊我的見解

在雙因素身份認證領域混跡6年,聊聊我的見解

先簡單聊點眾所周知的,什麼是雙因素認證?

借用百科的描述:

雙因素認證是一種採用時間同步技術的系統,採用了基於時間、事件和金鑰三變數而產生的一次性密碼來代替傳統的靜態密碼。每個動態密碼卡都有一個唯一的金鑰,該金鑰同時存放在伺服器端,每次認證時動態密碼卡與伺服器分別根據同樣的金鑰,同樣的隨機引數(時間、事件)和同樣的演算法計算了認證的動態密碼,從而確保密碼的一致性,從而實現了使用者的認證。因每次認證時的隨機引數不同,所以每次產生的動態密碼也不同。由於每次計算時引數的隨機性保證了每次密碼的不可預測性,從而在最基本的密碼認證這一環節保證了系統的安全性。解決因口令欺詐而導致的重大損失,防止惡意入侵者或人為破壞,解決由口令洩密導致的入侵問題。

事實上這個並不完全正確,準確來講這個太過於片面,不夠全面,“雙因素”顧名思義就是在原來“使用者名稱+靜態祕密”的基礎上增加一種因素,用以判斷使用者身份,以確保是使用者本人登入,目前我知道的就有:動態密碼、掃碼、訊息推送、郵件認證、指紋、人臉、虹膜、聲音、U盤證書等,所以說動態密碼是雙因素認證其中的一種,只是目前應用的最廣泛而已。

雙因素身份的核心在於“身份判定”!所以簡單講能在使用者名稱+靜態密碼的基礎上,增加一種判定身份的因素,都可以稱之為雙因素認證。

分別聊下上面提到的幾種雙因素認證方式:

首先是動態密碼:

動態密碼是目前使用最廣泛的雙因素認證方式,我們在登入各類網站或者APP時,通常情況下都需要簡訊驗證碼,用以判斷是本人操作,這在C端個人使用者中是最普遍、也是最有效的方式。但是在B端企業使用者中,很少採用簡訊驗證碼!一是簡訊驗證碼完全依賴運營商訊號,及時性差,再者手機簡訊有被劫持的風險,安全級別低。

企業使用動態密碼一般會選用以下幾種令牌形式:

1、硬體令牌

2、APP令牌

3、微信小程式令牌

4、釘釘令牌

5、PC令牌

6、微信公眾號令牌

 

雖然同為動態密碼令牌,但認證邏輯和流程並不相同,其中手機驗證碼和微信公眾號令牌認證原理較為相似:使用者端向認證伺服器申請動態密碼,認證伺服器生成動態密碼,並通過簡訊閘道器或者微信公眾號服務端以簡訊驗證碼或微信公眾號訊息的形式傳送到使用者端,大致登入流程如下(簡訊為例):

前提條件:

1、業務系統和認證系統完成對接;

2、企業使用者源和認證系統完成同步;

3、簡訊閘道器和認證系統完成對接;

認證流程:

1、使用者輸入使用者名稱+靜態密碼申請訪問業務系統;

2、業務系統通過API介面將請求資訊傳送到企業使用者源做初步校驗;

3、企業使用者源校驗成功,核驗通過;

4、業務系統通過API介面向認證系統申請索要動態密碼;

5、生成動態密碼,並讓簡訊閘道器向該申請使用者繫結的手機號傳送動態密碼;

6、簡訊閘道器執行傳送動態密碼指令;

7、使用者手機收到簡訊驗證碼;

8、使用者輸入驗證碼做二次訪問申請(身份二次校驗);

9、業務系統通過API介面將請求資訊傳送到認證系統做動態密碼校驗;

10、認證系統校驗成功,核驗通過;

11、成功登入業務系統。

注:1、微信公眾號認證流程和簡訊認證一致,在微信服務端繫結使用者賬號,並把簡訊閘道器換成微信服務端;

2、郵件認證流程和簡訊認證同樣一致,把簡訊閘道器換成郵件伺服器;

硬體令牌、APP令牌、微信小程式令牌、釘釘令牌、PC令牌這幾種令牌非常相似,邏輯為:內建加密演算法、時鐘、祕鑰,隨著時間變換不斷的產生新的密碼,通過與有著相同加密演算法、時鐘、祕鑰的認證服務端進行密碼比對,實現動態密碼校驗,大致登入流程如下:

 

認證前提:

1、業務系統和認證伺服器完成對接;

2、企業使用者源和完成對接;

1、認證令牌和使用者完成繫結;

大致登入流程:

2、使用者輸入“使用者名稱+靜態密碼+動態密碼”訪問目標主機;

3、目標主機通過Radius Client或API同時將使用者名稱+靜態密碼傳送到企業使用者源做靜態認證、將使用者名稱+動態密碼傳送到認證伺服器做動態認證;

4、使用者源和分別對認證做反饋;

5、當且僅當靜態密碼認證和動態密碼認證同時通過時,才能成功訪問,否則登入失敗;

再來說說掃碼登入

掃碼登入目前應用也比較廣泛,如常用的微信PC端用手機端掃碼登入、購物網站用手機APP掃碼登入,還有一些各類網站用微信掃碼登入,其基本原理是:使用者在手機端APP上完成使用者身份確認,然後通過掃碼的形式,授權登入。,這個和上面提到的手機APP令牌、微信小程式令牌、釘釘令牌有相似之處,都是用手機作為判斷依據。但企業級掃碼登入又有不同之處,掃碼登入大致流程如下;

前提條件:

1. 業務系統和認證系統完成對接;

2. 企業使用者源和認證系統完成同步;

3. 外網訊息伺服器與認證系統完成對接;

4. 手機APP已啟用認證;

認證流程:

1. 用已經啟用認證的手機APP掃描頁面二維碼;

2. 手機APP將授權登入資訊傳送至外網訊息伺服器;

3. 外網訊息伺服器將登入資訊轉發至認證伺服器;

4. 認證伺服器允許登入;

5. 成功登入;

接著聊5毛錢的訊息推送

說到訊息推送登入方式,我們常見的是微信登入PC端的時候,可以直接推送到手機端進行確認登入,微信這種訊息推送方式有個前提:之前登陸過,也就是說有過授權,然後儲存使用者資訊,下次登入的時候直接推送。

但是在在企業訊息推送中,需要對專門的APP進行啟用認證,然後登入時就可以直接推送確認。企業訊息推送認證基本原理是:在客戶端登入系統的時候,向服務端傳送登入申請,服務端向APP端傳送登入確認,其大致登入流程如下:

前提條件:

1. 業務系統和認證系統完成對接;

2. 企業使用者源和認證系統完成同步;

3. 外網訊息伺服器與認證系統完成對接;

4. 手機APP已啟用認證;

認證流程:

1. 使用者輸入使用者名稱+靜態密碼申請訪問業務系統;

2. 業務系統通過API介面將請求資訊傳送到企業使用者源做初步校驗;

3. 企業使用者源校驗成功,核驗通過;

4. 業務系統通過API介面向認證系統申請登入確認;

5. 認證系統將登入確認申請傳送至外網訊息伺服器;

6. 外網訊息伺服器將登入確認申請轉發至使用者手機APP;

7. 使用者手機APP收到申請,並確認登入;

8. 外網訊息伺服器將確認登入資訊轉發至認證伺服器;

9. 認證系統返回認證通過;

10. 成功登入;

再加個鍾說說生物識別

指紋、人臉、虹膜、聲音認證,這幾種都屬於生物認證,安全級別上來講是最高的,特別是指紋和人臉,技術比較成熟,目前也有大量被應用,最常見的就是手機解鎖、打卡考勤,用生物特徵作為唯一性驗證,以此確保是使用者本人。

相對來講虹膜和聲音應用的很少,拿虹膜認證來講,技術含量相對較高,應用成本隨之增長,應用門檻相對較高。至於聲音認證,一是隨著AI技術的成熟,聲音模擬越來越逼真,聲音認證變得越來越不安全;再者聲音容易打擾他人,所以應用很少。

生物識別的原理非常簡單:先通過生物識別器將人體特徵輸入資料庫,申請訪問的時候,用自己的生物特徵與資料庫做比對,成功登入,登入流程如下;

前提條件:

1. 業務系統和認證系統完成對接;

2. 企業使用者源和認證系統完成同步;

3. 使用者生物特徵已輸入認證伺服器中並完成使用者繫結;

認證流程:

1. 使用者輸入使用者名稱+靜態密碼申請訪問業務系統;

2. 業務系統通過API介面將請求資訊傳送到企業使用者源做初步校驗;

3. 企業使用者源校驗成功,核驗通過;

4. 使用者使用指紋、人臉或虹膜進行二次認證;

5. 業務系統通過API介面將生物認證資訊傳送至認證伺服器;

6. 認證伺服器確認並返回認證通過;

7. 成功登入;

最後總結一下吧:

雙因素身份認證是為了加強登入安全,所以簡單的講:能夠在使用者名稱+靜態密碼的基礎上,額外增加一種安全有效地可以驗證使用者身份的方式,都可以統稱為雙因素認證。

常見的認證方式有:動態密碼、掃碼、訊息推送、郵件認證、指紋、人臉、虹膜、聲音、U盤證書等,動態密碼中又會細分簡訊令牌、硬體令牌、APP令牌、微信小程式令牌、釘釘令牌等。

不同令牌之間也有不同的認證原理和登入方式,安全級別上來講也是各有不同,其中生物識別認證安全級別最高,簡訊驗證碼認證和郵件認證安全級別最低,

企業中最常用的認證方式為:動態密碼認證(硬體令牌、APP令牌、微信小程式令牌、釘釘令牌)、指紋認證、人臉認證、U盤證書認證,從成本考慮出發,軟體動態密碼認證最佳。

我們生活在網際網路時代,萬物互聯,為生活增光添彩,但同樣的,處處充滿著被盜號的風險,輕則洩露個人隱私,重則危機企業存亡,忽視安全,將會有很大的機率付出慘痛的代價。

但是電影《我是誰:沒有絕對安全的系統》告訴我們:沒有絕對安全的系統!總有一部分人,在倒逼著技術進步!客觀來講,這也是推進技術進步的一股力量,我們能做的就是在力所能及的情況下,最大限度的保障我們個人乃至企業的安全,在競爭中,獲得勝利!

這是我在雙因素身份認證淋雨混跡6年的一點點經驗,終究個人認知有限,如果你有什麼看法或者建議,歡迎交流指正!

免責宣告:

1、該文章僅代表個人觀點!不能代表任何企業或組織!

2、該文章中借用的素材部分源自網路,部分借用公司素材庫,如有侵權,請告知,一定及時處理!

3、該文章是自己的一些淺薄的見解,僅僅作為參考,不能作為依據!