自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Google驗證器驗證及安全防御研究

安全
Google Authenticator 是一個安全的身份驗證應用程序,但仍然可能存在潛在的安全威脅

1.Google驗證器簡介   

圖片


1.1 Google驗證器使用場景  

Google驗證器(Google Authenticator)的應用場景廣泛,主要用于提供額外的安全保護,以防止各平臺賬戶遭到惡意攻擊。以下是Google驗證器的一些主要應用場景:

1.身份驗證

Google驗證器可用于用戶的身份驗證過程。用戶安裝手機客戶端并生成臨時的身份驗證碼,然后提交到服務器進行驗證。這樣,即使密碼被竊取,沒有動態(tài)驗證碼也無法登錄賬戶,增強了賬戶的安全性。

2.金融服務

在金融平臺、銀行、投資公司等場景中,Google驗證器常被用于提供額外的安全層。用戶可以在登錄時輸入由Google驗證器生成的動態(tài)驗證碼,以確認身份并授權(quán)交易或操作。

3.在線服務

Google驗證器可以與各種在線賬戶綁定,如電子郵件、社交媒體、云服務等。用戶可以通過輸入由Google驗證器生成的動態(tài)驗證碼來登錄這些賬戶,提高賬戶的安全性。

4.遠程訪問

對于需要遠程訪問公司網(wǎng)絡或服務器的場景,Google驗證器可以作為額外的安全層。員工在嘗試遠程連接時,除了輸入用戶名和密碼外,還需要提供由Google驗證器生成的動態(tài)驗證碼,以確認其身份并授權(quán)遠程訪問。    

5.API 調(diào)用

在進行 API 調(diào)用時,為了驗證請求的合法性,Google驗證器可以生成動態(tài)驗證碼,與 API 請求一起發(fā)送到服務器進行驗證。這樣可以防止未授權(quán)的 API 調(diào)用和潛在的安全風險。

 總的來說,Google驗證器廣泛應用于各種場景,旨在提高賬戶和數(shù)據(jù)的安全性。無論是在金融服務、在線服務、遠程訪問還是API調(diào)用等方面,Google驗證器都能提供有效的安全保護。

1.2 使用Google驗證器的優(yōu)勢  

使用Google驗證器有以下優(yōu)勢:

1.提高安全性

Google驗證器采用基于時間的一次性密碼(TOTP)算法,每次登錄都會生成一個新的動態(tài)驗證碼。這種方式可以大大提高賬戶的安全性,防止未經(jīng)授權(quán)的訪問。即使密碼被竊取,沒有動態(tài)驗證碼也無法登錄賬戶。

2.方便易用

Google驗證器作為一款手機應用程序,用戶可以方便地在手機上安裝和使用。只需將手機與需要保護的賬戶進行綁定,即可使用動態(tài)驗證碼進行身份驗證。這對于需要在多個平臺進行安全驗證的用戶來說非常方便。    

3.減少釣魚攻擊風險

傳統(tǒng)的用戶名和密碼身份驗證方式容易受到釣魚攻擊的威脅。而Google驗證器的動態(tài)驗證碼機制使得釣魚攻擊更加困難。由于驗證碼是實時生成的,并且與用戶的手機設備綁定,攻擊者很難在偽造頁面上獲取有效的驗證碼,從而有效降低了釣魚攻擊的風險。

4.支持多平臺使用

Google驗證器可以與各種在線賬戶綁定,如電子郵件、社交媒體、云服務等。無論是金融平臺、在線服務還是遠程訪問,都可以使用Google驗證器提供額外的安全層。這為用戶提供了更廣泛的選擇,滿足了用戶在多個平臺上對安全性的需求。

5.時間同步問題減少

Google驗證器使用基于時間的算法生成動態(tài)驗證碼,這使得時間同步問題對用戶來說更加簡化。用戶不需要經(jīng)常校準手機時間,也可以正常進行身份驗證。這減少了用戶在使用過程中的困擾,提高了便利性。

綜上所述,使用Google驗證器可以顯著提高賬戶的安全性,降低安全風險,提供方便易用的身份驗證方式,減少時間同步問題等優(yōu)勢。這些優(yōu)勢使得Google驗證器成為許多在線服務和應用程序中廣泛采用的安全工具。    

1.3 Google驗證器遠程訪問安全驗證應用  

Google驗證器可以用于遠程訪問的安全驗證,為遠程連接提供額外的安全層。具體步驟如下:

1.安裝Google驗證器應用

用戶需要在自己的手機或平板電腦上安裝Google驗證器應用??梢栽趹蒙痰曛兴阉鞑⑾螺d安裝。

2.生成密鑰對

在安裝Google驗證器后,用戶需要生成一對密鑰,包括公鑰和私鑰。這些密鑰用于后續(xù)的身份驗證過程。

3.配置遠程訪問系統(tǒng)

用戶需要將生成的公鑰提供給遠程訪問系統(tǒng)的管理員或提供商。管理員或提供商將在遠程訪問服務器上配置相應的公鑰,以與用戶的Google驗證器進行綁定。

4.登錄遠程訪問

當用戶嘗試遠程訪問時,系統(tǒng)會要求輸入用戶名和密碼進行身份驗證。在輸入密碼后,用戶還需要使用Google驗證器生成動態(tài)驗證碼。

5.輸入動態(tài)驗證碼

用戶在Google驗證器應用中查看動態(tài)驗證碼,并將其輸入到遠程訪問系統(tǒng)的登錄界面中。驗證碼通常是六位數(shù)字或字母的組合。

6.確認身份

當用戶輸入正確的密碼和動態(tài)驗證碼后,遠程訪問系統(tǒng)會驗證用戶的身份并允許其登錄。只有通過驗證的用戶才能成功連接到遠程服務器。    

通過使用Google驗證器進行遠程訪問的安全驗證,可以增加額外的安全層,防止未經(jīng)授權(quán)的訪問和潛在的安全風險。即使可能的入侵者竊取或猜出了用戶的密碼,也無法登錄到賬戶,因為必須使用用戶的手機才能生成動態(tài)驗證碼。

2.Google驗證器的實現(xiàn)  

2.1 Google驗證器的實現(xiàn)原理和步驟  

1.生成密鑰對

在Google驗證器中,用戶需要在手機客戶端安裝Google Authenticator應用,并生成一對密鑰,包括公鑰和私鑰。

2.服務器端驗證

當用戶需要登錄時,服務器端會驗證用戶輸入的驗證碼是否正確。服務器端會根據(jù)用戶提供的公鑰和當前時間戳,通過TOTP算法計算出一次性密碼,并與用戶提交的密碼進行比對。如果一致,則驗證通過,允許用戶登錄。

3.客戶端生成密碼

客戶端(Google Authenticator應用)會使用用戶保存的私鑰和當前時間戳作為輸入,通過TOTP算法生成一次性密碼。這個密碼是動態(tài)生成的,并且是基于當前時間戳的。

4.時間同步問題    

由于一次性密碼是基于當前時間戳的,因此用戶手機上的時間和服務器上的時間必須保持同步。如果時間相差太大,會導致驗證失敗。因此,建議用戶定期校準手機時間,并開啟網(wǎng)絡自動對時功能以確保時間準確。

2.2 TOTP算法  

TOTP算法,全稱為“Time-based One-time Password algorithm”,中文譯為基于時間的一次性密碼算法。它是一種從共享密鑰和當前時間計算一次性密碼的算法,已被采納為Internet工程任務組標準RFC 6238。TOTP是開放身份驗證計劃(OATH)的基石,并被用于許多雙因素身份驗證系統(tǒng)。

TOTP算法的原理是基于散列的消息認證碼(HMAC)的一個示例,它使用加密哈希函數(shù)將密鑰與當前時間戳組合在一起以生成一次性密碼。由于網(wǎng)絡延遲和不同步時鐘可能導致密碼接收者必須嘗試一系列可能的時間來進行身份驗證,因此時間戳通常以30秒的間隔增加,從而減少了潛在的搜索空間。

TOTP的安全性較高,廣泛應用于網(wǎng)絡認證、移動支付等領(lǐng)域。其核心在于客戶端和服務器端必須共享一個密鑰,且密鑰的生成必須足夠隨機,密鑰必須儲存在防篡改的設備上,不能在不安全的情況下被訪問或使用。    

2.3 其他多因素認證  

除了Google驗證器之外,還有許多其他的多因素驗證器可以應用。以下是一些常見的多因素驗證器:

1.Authy

Authy是一款跨平臺的身份驗證器,支持多種平臺和應用程序。它提供基于時間的一次性密碼(TOTP)和雙因素身份驗證功能,可以與各種在線賬戶綁定,提高賬戶的安全性。

2.Microsoft Authenticator

Microsoft Authenticator是微軟官方推出的身份驗證工具,支持Windows、iOS和Android平臺。它采用基于時間的一次性密碼(TOTP)算法,提供雙因素身份驗證功能,確保賬戶的安全性。

3.Duo Mobile

Duo Mobile是一款安全認證解決方案,適用于iOS和Android平臺。它提供基于時間的一次性密碼(TOTP)和動態(tài)令牌等多種驗證方式,確保用戶身份的安全性。

4.2FA Authenticator(2FAS)

2FA Authenticator是一款免費開源的身份驗證器,支持iOS和Android平臺。它采用基于時間的一次性密碼(TOTP)算法,提供雙因素身份驗證功能,并且可以與超過500個網(wǎng)絡平臺綁定。

5.Authing

Authing是一款支持多平臺的身份驗證工具,提供基于時間的一次性密碼(TOTP)、短信驗證碼、指紋識別等多種驗證方式,確保賬戶的安全性。        這些多因素驗證器都具有各自的特點和優(yōu)勢,用戶可以根據(jù)自己的需求選擇適合的身份驗證工具,提高賬戶的安全性。

3.Google驗證碼實現(xiàn)算法  

3.1 算法實現(xiàn)流程  

3.1.1解碼密鑰  

將原始密鑰中的空格和小寫字母移除。

使用Base32解碼將密鑰轉(zhuǎn)換為二進制格式。

3.1.2獲取輸入  

獲取當前時間的Unix時間戳。

將時間戳除以固定時間段(例如30秒),取整數(shù)部分作為輸入。

3.1.3簽名函數(shù)(HMAC-SHA1)  

將密鑰和輸入進行兩次SHA1哈希運算。

將第一次哈希結(jié)果與輸入進行拼接,并再次進行SHA1哈希運算。

生成的HMAC是一個標準長度的SHA1值,通常為20字節(jié)(40個十六進制字符)。    

3.1.4提取驗證碼  

從HMAC的末尾字節(jié)開始,取連續(xù)的4個字節(jié)。

將這4個字節(jié)轉(zhuǎn)換為一個大整數(shù)。

將大整數(shù)對1,000,000取模,得到一個6位數(shù)字的驗證碼。

3.2 算法實現(xiàn)示例  

3.2.1Python代碼示例  

以下是一個簡單的Python代碼示例,實現(xiàn)了Google驗證器算法的完整過程:

import base64
import hashlib
import hmac
import struct
import time
def decode_secret(original_secret):
    secret = original_secret.replace(' ', '').upper()
    return base64.b32decode(secret)
def generate_otp(secret):
    interval = int(time.time()) // 30
    msg = struct.pack('>Q', interval)  # 將輸入轉(zhuǎn)換為8字節(jié)的大端序列    
    key = secret
    hmac_digest = hmac.new(key, msg, hashlib.sha1).digest()
    offset = hmac_digest[19] & 0x0F
    truncated_hash = hmac_digest[offset:offset+4]
    otp = struct.unpack('>L', truncated_hash)[0]   # 將截斷的哈希值轉(zhuǎn)換為32位無符號整數(shù)
    otp &= 0x7FFFFFFF    # 獲取低31位
    otp %= 1000000       # 取模得到6位驗證碼
    return str(otp).zfill(6)
# 測試代碼
original_secret = "xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx"
secret = decode_secret(original_secret)
otp = generate_otp(secret)
print("驗證碼:", otp)

注意:你需要將 original_secret 替換為你實際使用的密鑰值。此代碼示例使用了Python的標準庫中的 base64、hashlib 和 hmac,以及 struct 模塊用于處理二進制數(shù)據(jù)。運行代碼后,將輸出生成的6位數(shù)字驗證碼。請確保在使用時適當?shù)貙胨璧哪K。    

3.2.2網(wǎng)站后臺使用Google驗證  

 以下完整的php代碼示例,演示了如何在網(wǎng)站后臺使用 Google Authenticator 配合安卓手機上的驗證器進行驗證:

equire_once 'vendor/autoload.php'; // 導入 Google Authenticator 庫
use OTPHP\TOTP;
use OTPHP\Factory;
// 生成密鑰
$secret = Factory::create()->setIssuer('YourWebsite')->setLabel('YourUsername')->createSecret();
// 獲取二維碼供用戶掃描
$qrCodeUri = Factory::create()->setIssuer('YourWebsite')->setLabel('YourUsername')->getQrCodeUri($secret);
// 輸出二維碼圖像
echo '';
// 用戶輸入的驗證碼
$otp = $_POST['otp'];
// 驗證驗證碼是否正確
$totp = TOTP::create($secret);
$isVerified = $totp->verify($otp);    
if ($isVerified) {
    echo "驗證成功";
} else {
    echo "驗證失敗";
}

請確保你已經(jīng)安裝了 Composer,并通過 Composer 安裝了 otphp/otphp 庫。

使用上述代碼,首先會生成一個密鑰,然后使用該密鑰生成一個二維碼供用戶掃描。用戶可以通過 Google Authenticator 應用程序掃描該二維碼來添加驗證器。

在用戶登錄或執(zhí)行敏感操作時,用戶會被要求輸入 Google Authenticator 應用程序中顯示的6位數(shù)字驗證碼。你需要將該驗證碼作為 POST 請求中的 otp 參數(shù)發(fā)送到服務器。

服務器將使用先前生成的密鑰驗證用戶輸入的驗證碼是否正確。如果驗證成功,將輸出 "驗證成功",否則輸出 "驗證失敗"。

請根據(jù)你的實際需求修改代碼并進行適當?shù)呐渲?,以便與你的網(wǎng)站后臺集成 Google Authenticator 驗證。

4.Google驗證器安全風險

雖然 Google Authenticator 是一個相對安全的身份驗證應用程序,但仍存在一些潛在的安全風險和問題。以下是一些可能存在的安全問題:

丟失設備:如果你的手機丟失或被盜,未經(jīng)保護的 Google Authenticator 應用程序可能會暴露給他人,使他們能夠訪問你的賬戶。

密鑰備份:如果你沒有妥善備份生成的密鑰,而且手機丟失或損壞,你可能會永久丟失對賬戶的訪問權(quán)。

惡意軟件:如果你的手機被惡意軟件感染,攻擊者可能能夠獲取你的密鑰和生成的驗證碼。

不安全的密碼重置選項:在某些情況下,Google Authenticator 可能作為密碼重置的替代方法。如果攻擊者能夠訪問你的郵箱或其他重置選項,他們可能能夠繞過 Google Authenticator 驗證。

二維碼釣魚:惡意網(wǎng)站或應用程序可以通過偽造二維碼來欺騙你,要求你提供生成的驗證碼。這可能會導致你的賬戶被攻擊者接管。

不安全的操作系統(tǒng)或應用程序:如果你的操作系統(tǒng)或應用程序存在漏洞或安全問題,攻擊者可能能夠繞過 Google Authenticator 的保護。      

4.1 Google驗證碼暴力破解  

1.選擇需要攔截的記錄

 如圖1所示,在Burpsuite的HTTP history記錄中去找到包含Google驗證碼的POST記錄。    

圖片

圖1 選擇攔截發(fā)包記錄

2.設置變量

在Burpsuite中去掉其它無關(guān)的所有變量,僅僅增加Google驗證碼字段為變量,如圖2所示,Google驗證碼的變量為opt。

圖片

圖2 設置破解的變量    

3.設置字典

如圖3所示,在Playload中選擇暴力破解(Brute forcer),在下方去掉26個字母,僅僅保留0123456789,接著設置最大和最小長度均為6。

圖片

圖3設置字典

4.執(zhí)行暴力破解

在Playload中單擊“Attack”,開始執(zhí)行暴力破解,如圖4所示,當命中Google的驗證碼后,其長度會遠遠大于其他包的長度。

圖片    

圖4 暴力破解

5.登錄后臺

如圖5所示,對Length進行排序,找到最大的那個值,然后在瀏覽器中更改Token、Session或者Cookie值,即可成功登錄后臺。另外也可以選中該成功的記錄,選擇在Chrome中進行訪問。

圖片

圖5 查看token

總結(jié):Google驗證碼暴力破解成功取決于6位數(shù)的動態(tài)變換碰撞,因此成功有一定幾率。缺陷是時間非常長,不知道那一刻可以暴力破解成功??梢酝ㄟ^限制驗證碼的訪問次數(shù)和IP等方式來加強安全防范。

5.Google驗證器安全防御

Google Authenticator 是一個安全的身份驗證應用程序,但仍然可能存在潛在的安全威脅。以下是一些 Google Authenticator 的安全防御措施:

設置強密碼:為Google賬戶和Google Authenticator應用設置不易猜測的強密碼,并定期更改密碼。

啟用雙因素認證:將Google Authenticator與你的Google賬戶綁定,啟用雙因素認證。這樣,在登錄時除了輸入密碼外,還需要提供Google Authenticator生成的驗證碼。

使用備份碼:在設置Google Authenticator時,通常會提供一組備份碼。請務必將這些備份碼妥善保存在安全的地方,以防手機丟失或無法使用時可以恢復訪問。

保護手機安全:確保你的手機設備本身是安全的,設置密碼鎖屏或開啟指紋識別等功能,以防止未經(jīng)授權(quán)的訪問。

謹慎使用云同步功能:Google Authenticator通常提供云同步功能,以便在更換手機時可以輕松遷移數(shù)據(jù)。但要注意,如果你選擇啟用云同步,請確保你的云存儲賬戶也是安全的,以免被攻擊者獲取。

小心釣魚網(wǎng)站:避免點擊或輸入Google Authenticator驗證碼到來歷不明的網(wǎng)站或應用程序,以防止被釣魚攻擊。

避免同時使用多個設備:為了避免數(shù)據(jù)同步或訪問權(quán)限方面的問題,最好只在一個手機設備上使用Google Authenticator應用程序。

不要共享密鑰:不要將Google Authenticator應用程序生成的密鑰與其他人分享,即使是你的家人或朋友,也應該保持謹慎。

仔細檢查應用程序權(quán)限:在安裝Google Authenticator應用程序時,應該仔細檢查應用程序所需的權(quán)限,并確保不授予不必要或可疑的權(quán)限。

使用其他雙因素認證方式:除了Google Authenticator之外,還可以考慮使用其他雙因素認證方式,如基于短信、電話或硬件密鑰的認證方式。這樣可以增加多層次的安全保障。

參考資料:https://zhuanlan.zhihu.com/p/132478048  

責任編輯:龐桂玉 來源: 小兵搞安全
相關(guān)推薦

2015-12-02 16:46:20

2019-07-17 10:23:44

網(wǎng)絡安全防御

2017-06-24 19:43:08

2015-11-18 14:04:29

信息安全微軟

2012-10-31 17:02:45

2015-06-11 15:55:55

2018-12-26 09:14:24

物聯(lián)網(wǎng)安全物聯(lián)網(wǎng)設備物聯(lián)網(wǎng)

2013-03-01 14:29:47

2010-09-10 11:17:55

2011-07-12 10:43:49

2019-12-09 12:49:31

網(wǎng)絡安全信息安全技術(shù)

2021-05-12 12:46:43

Google開源工具驗證容器

2022-07-11 15:22:08

區(qū)塊鏈去中心化安全

2011-06-20 15:09:09

2011-10-18 10:19:37

2013-06-19 13:02:26

2009-08-05 09:09:33

2010-05-31 11:52:32

2010-12-13 16:01:35

2014-09-01 10:46:57

點贊
收藏

51CTO技術(shù)棧公眾號