国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

安全開發(fā):身份認(rèn)證方案之 Google 身份驗(yàn)證器和基于時(shí)間的一次性密碼 TOTP 算法

這篇具有很好參考價(jià)值的文章主要介紹了安全開發(fā):身份認(rèn)證方案之 Google 身份驗(yàn)證器和基于時(shí)間的一次性密碼 TOTP 算法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

  • 參考資料在文末注明,如本文有錯(cuò)漏歡迎評(píng)論區(qū)指出??

目前很多應(yīng)用都逐步采用了雙因子認(rèn)證或者說MFA認(rèn)證方案,因此本文介紹一下背后的機(jī)制和TOTP算法原理。使用TOTP算法,只要滿足兩個(gè)條件:1)基于相同的密鑰;2)時(shí)鐘同步;只需要事先約定好密鑰,TOTP算法就可以保證校驗(yàn)段和被校驗(yàn)端具有相同的輸出。

OTP

在介紹 TOTP 算法前,先介紹一下 OTP 算法。OTP,One Time Password,又稱一次性口令、一次性密碼、動(dòng)態(tài)密碼、單次有效密碼。OTP 基于專門的算法每隔一定的時(shí)間間隔生成一個(gè)不可預(yù)測(cè)的隨機(jī)數(shù)字組合。OTP密碼有效期僅在一次會(huì)話或者交易過程中,因此不容易受到重放攻擊。OTP分為計(jì)次使用和計(jì)時(shí)使用兩種,計(jì)次使用的OTP產(chǎn)出后,可在不限時(shí)間內(nèi)使用。計(jì)時(shí)使用的 OTP 需要設(shè)置密碼有效時(shí)間,從30秒到兩分鐘不等,而 OTP 在進(jìn)行認(rèn)證之后即廢棄不用,下次認(rèn)證必須使用新的密碼,降低了不經(jīng)授權(quán)訪問限制資源可能性。

OTP密碼進(jìn)一步分為:

  • HOTP:HMAC-based One-Time Password ,基于 HMAC 算法的一次性密碼。事件同步,通過某一特定的事件次序及相同的種子值作為輸入,通過 HASH 算法運(yùn)算出一致的密碼。
  • TOTP:Time-based One-Time Password寫,基于時(shí)間戳算法的一次性密碼。 時(shí)間同步,基于客戶端的動(dòng)態(tài)口令和動(dòng)態(tài)口令驗(yàn)證服務(wù)器的時(shí)間比對(duì),一般每 30 秒產(chǎn)生一個(gè)新口令,要求客戶端和服務(wù)器能夠十分精確的保持正確的時(shí)鐘,客戶端和服務(wù)端基于時(shí)間計(jì)算的動(dòng)態(tài)口令才能一致。

計(jì)算 OTP 串的公式:OTP(K,C) = Truncate(HMAC-SHA-1(K,C))
K 表示秘鑰串;C 為隨機(jī)數(shù);HMAC-SHA-1 表示使用 SHA-1 做 HMAC;Truncate 表示怎么截取加密后的串,并取加密后串的哪些字段組成一個(gè)數(shù)字;

對(duì) HMAC-SHA-1 方式加密來說,Truncate 實(shí)現(xiàn)如下:
HMAC-SHA-1 加密后的長(zhǎng)度得到一個(gè) 20 字節(jié)的密串;取這個(gè) 20 字節(jié)的密串的最后一個(gè)字節(jié),取這字節(jié)的低 4 位,作為截取加密串的下標(biāo)偏移量;按照下標(biāo)偏移量開始,獲取4個(gè)字節(jié),按照大端方式(符合人類習(xí)慣的形式,比如 0x12 34 , 0x12 存放在低地址,大端即大端在前/高位在低地址存放的意思)組成一個(gè)整數(shù);截取這個(gè)整數(shù)的后 6 位或者 8 位轉(zhuǎn)成字符串返回。

TOTP 將其中的參數(shù) C 變成了由時(shí)間戳產(chǎn)生的數(shù)字:C = (T - T0) / X; T 表示當(dāng)前 Unix 時(shí)間戳:T0 一般取值為 0,也就是 1970 年 1 月 1 日。X 表示時(shí)間步數(shù),也就是說多長(zhǎng)時(shí)間產(chǎn)生一個(gè)動(dòng)態(tài)密碼,這個(gè)時(shí)間間隔就是時(shí)間步數(shù) X,系統(tǒng)默認(rèn)是 30 秒;

一個(gè)信息系統(tǒng)要集成 OTP 的認(rèn)證方式,需要完成以下的工作:
1、開發(fā)手機(jī)令牌
2、開發(fā)認(rèn)證的服務(wù)端,服務(wù)端需要完成令牌種子生成、令牌種子分發(fā)、動(dòng)態(tài)口令生成等功能。
3、在OTP認(rèn)證的服務(wù)端需要將業(yè)務(wù)系統(tǒng)的用戶與分發(fā)的令牌建立關(guān)聯(lián),這樣才能完成最終的登錄驗(yàn)證。

TOTP

安全開發(fā):身份認(rèn)證方案之 Google 身份驗(yàn)證器和基于時(shí)間的一次性密碼 TOTP 算法,后端開發(fā),TOTP,OTP,MFA,2FA
TOTP 算法(Time-based One-time Password algorithm) 即基于具有時(shí)間戳計(jì)數(shù)器的 OTP。通過定義紀(jì)元(T0)的開始并以時(shí)間間隔(TI)為單位計(jì)數(shù),將當(dāng)前時(shí)間戳變?yōu)檎麛?shù)時(shí)間計(jì)數(shù)器(TC)。TOTP 實(shí)現(xiàn)可以使用 HMAC-SHA-256 或HMAC-SHA-512 (基于 SHA-256 或 SHA-512)函數(shù)來實(shí)現(xiàn),而不是 HOTP 計(jì)算中的 HMAC-SHA-1 函數(shù)【注:SHA1 存在 HASH 碰撞】。

TOTP 密碼生成過程文章來源地址http://www.zghlxwxcb.cn/news/detail-762722.html

  1. 初始化:用戶在服務(wù)提供商(如 Google 等)注冊(cè)賬戶時(shí),服務(wù)提供商(服務(wù)器)會(huì)為用戶生成一個(gè) 密鑰(Secret Key) 并保存在數(shù)據(jù)中。然后把這個(gè)密鑰會(huì)以某種方式(通常是 二維碼 )分享給用戶,用戶將其添加到(通過掃碼)自己的身份驗(yàn)證器應(yīng)用(如 Google Authenticator、Microsoft Authenticator)中。
  2. 生成 TOTP:身份驗(yàn)證器應(yīng)用會(huì)按照固定的時(shí)間間隔(常見的是 30 秒)使用 HMAC-SHA1 算法,使用當(dāng)前的時(shí)間戳和在初始化步驟中獲取的密鑰,生成一個(gè)新的一次性密碼,這個(gè)密碼通常是一個(gè) 6 位數(shù)字(但也可能更長(zhǎng)或更短)。
  3. 驗(yàn)證 TOTP:當(dāng)用戶嘗試登錄或執(zhí)行需要驗(yàn)證的操作時(shí),會(huì)被要求提供當(dāng)前的一次性密碼。用戶從自己的身份驗(yàn)證器應(yīng)用中獲取這個(gè)密碼,并輸入到服務(wù)提供商的網(wǎng)站或應(yīng)用中。服務(wù)提供商會(huì)使用同樣的算法和密鑰,以及當(dāng)前的時(shí)間戳,生成一個(gè)一次性密碼,并將其與用戶提供的密碼進(jìn)行比較。如果兩個(gè)密碼匹配,那么用戶的身份就被認(rèn)為已經(jīng)驗(yàn)證。

基于 Node.js 實(shí)現(xiàn)支持 Google 身份驗(yàn)證器的 TOTP 算法

import { Secret, TOTP } from 'otpauth';

// 生成密鑰
const secret = Secret.fromUTF8('your_secret_key'); 

// 生成TOTP實(shí)例
const totp = new TOTP({
  secret,
  issuer: 'Example',
  label: 'alice@example.com'  
});

// 生成token
const token = totp.generate();  // 30s
console.log('totp token:')
console.log(token);

// 驗(yàn)證token
const isValid = totp.validate({
  token,
  window: 1  // 一個(gè)窗口為一個(gè) period
});

if(isValid !== null) {
  console.log('Valid token'); 
} else {
  console.log('Invalid token');
}

// 轉(zhuǎn)成uri格式
const uri = totp.toString(); 
console.log(uri);

Reference

  1. Google身份驗(yàn)證器、基于時(shí)間的一次性密碼 (TOTP)算法
  2. OTP概念及實(shí)現(xiàn)原理簡(jiǎn)析
  3. 基于時(shí)間的一次性密碼 TOTP 詳解
  4. 密碼學(xué)I:密碼系統(tǒng)、OTP密碼和密碼的安全性
  5. 一文搞懂 OTP 雙因素認(rèn)證
  6. 使用 Golang 實(shí)現(xiàn)基于時(shí)間的一次性密碼 TOTP
  7. 基于 Node 實(shí)現(xiàn) TOTP:Otplib

到了這里,關(guān)于安全開發(fā):身份認(rèn)證方案之 Google 身份驗(yàn)證器和基于時(shí)間的一次性密碼 TOTP 算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【網(wǎng)絡(luò)安全】圖解 Kerberos:身份認(rèn)證

    【網(wǎng)絡(luò)安全】圖解 Kerberos:身份認(rèn)證

    Kerberos 是一種身份認(rèn)證協(xié)議,被廣泛運(yùn)用在大數(shù)據(jù)生態(tài)中,甚至可以說是大數(shù)據(jù)身份認(rèn)證的事實(shí)標(biāo)準(zhǔn)。本文將詳細(xì)說明 Kerberos 原理。 Kerberos 一詞來源于古希臘神話中的 Cerberus —— 守護(hù)地獄之門的三頭犬。下圖是 Kerberos 的 LOGO。 一句話來說,Kerberos 是一種基于加密 Ticket 的身

    2024年02月06日
    瀏覽(30)
  • 指紋統(tǒng)一身份認(rèn)證系統(tǒng)系統(tǒng)安全設(shè)計(jì)

    2.10.1 身份認(rèn)證 系統(tǒng)是為廣大工作人員提供服務(wù)的,為了區(qū)分各個(gè)用戶以及不同級(jí)別的用戶,需要對(duì)他們的 身份和操作的合法性進(jìn)行檢查。體系應(yīng)該規(guī)定實(shí)現(xiàn)身份認(rèn)證與權(quán)限檢查的方式、方法以及對(duì) 這些用戶的管理要求。 2.10.2 權(quán)限管理 權(quán)限管理系統(tǒng)是保證業(yè)務(wù)系統(tǒng)安全的一

    2024年02月10日
    瀏覽(59)
  • 基于token的身份認(rèn)證及自動(dòng)續(xù)期的解決方案

    基于token的身份認(rèn)證及自動(dòng)續(xù)期的解決方案

    ? ? B/S架構(gòu)大家應(yīng)該都不陌生,web1.0時(shí)代,用戶通過個(gè)人電腦瀏覽網(wǎng)站,單項(xiàng)獲取信息,比如我們?yōu)g覽新聞,查閱資料等。web2.0很快就到來,和1.0相比,用戶可以隨時(shí)隨地分享自己的信息。這個(gè)時(shí)候就涉及到了我們的身份認(rèn)證。當(dāng)我們使用http無狀態(tài)請(qǐng)求訪問資源服務(wù)的時(shí)候,

    2023年04月16日
    瀏覽(18)
  • 2023身份識(shí)別技術(shù)大會(huì) | 安全證件 | 數(shù)字認(rèn)證 | 生物識(shí)別 | 公共安全安防身份技術(shù)展覽會(huì)

    展會(huì)名稱: ?2023身份識(shí)別技術(shù)大會(huì) | 安全證件 | 數(shù)字認(rèn)證 | 生物識(shí)別 | 公共安全安防身份技術(shù)展覽會(huì) 舉辦時(shí)間: 2023年5月17-18日 舉辦地點(diǎn):? 北京 國(guó)家會(huì)議中心 指導(dǎo)單位: ?公安部科技信息化局 主辦單位: ?多維身份識(shí)別與可信認(rèn)證技術(shù)國(guó)家工程研究中心 中國(guó)國(guó)際科技促

    2024年02月07日
    瀏覽(27)
  • 【安全】簡(jiǎn)單解析統(tǒng)一身份認(rèn)證:介紹、原理和實(shí)現(xiàn)方法

    隨著互聯(lián)網(wǎng)的發(fā)展和各種在線服務(wù)的普及,用戶在不同的應(yīng)用和平臺(tái)上需要進(jìn)行多次身份驗(yàn)證。為了簡(jiǎn)化用戶的登錄和減少重復(fù)操作,統(tǒng)一身份認(rèn)證(Single Sign-On,簡(jiǎn)稱SSO)技術(shù)應(yīng)運(yùn)而生。本文將簡(jiǎn)單介紹統(tǒng)一身份認(rèn)證的概念、原理和實(shí)現(xiàn)方法,希望能幫助你更好地理解和應(yīng)

    2024年02月15日
    瀏覽(34)
  • 多因素認(rèn)證與身份驗(yàn)證:分析不同類型的多因素認(rèn)證方法,介紹如何在訪問控制中使用身份驗(yàn)證以增強(qiáng)安全性

    多因素認(rèn)證與身份驗(yàn)證:分析不同類型的多因素認(rèn)證方法,介紹如何在訪問控制中使用身份驗(yàn)證以增強(qiáng)安全性

    隨著數(shù)字化時(shí)代的到來,信息安全問題變得愈發(fā)重要。在網(wǎng)絡(luò)世界中,用戶的身份往往是保護(hù)敏感數(shù)據(jù)和系統(tǒng)免受未經(jīng)授權(quán)訪問的第一道防線。單一的密碼已經(jīng)不再足夠,多因素認(rèn)證(MFA)應(yīng)運(yùn)而生,成為提升身份驗(yàn)證安全性的重要工具之一。本文將深入探討不同類型的多因

    2024年02月10日
    瀏覽(26)
  • AI 欺詐事件頻出,如何重塑身份認(rèn)證的安全性?

    AI 欺詐事件頻出,如何重塑身份認(rèn)證的安全性?

    據(jù)報(bào)告表示,生成式人工智能每年可為世界經(jīng)濟(jì)注入相當(dāng)于 4.4 萬億美元的資金。預(yù)計(jì)到 2030 年,人工智能對(duì)全球財(cái)政的潛在貢獻(xiàn)將達(dá)到 15.7 萬億美元。人們驚嘆于 AI 強(qiáng)大工作效率,期待能幫忙節(jié)省不必要的勞動(dòng)力,但事實(shí)上 AI 出現(xiàn)之后,AI 造假的恐慌也隨之不斷蔓延。 借

    2024年02月19日
    瀏覽(25)
  • 信息安全概論復(fù)習(xí)筆記 第九章 身份認(rèn)證(不是重點(diǎn),做了解吧)

    信息安全概論復(fù)習(xí)筆記 第九章 身份認(rèn)證(不是重點(diǎn),做了解吧)

    身份認(rèn)證(Authentication)的定義: 宣稱者向驗(yàn)證方出示證據(jù),證明其身份的交互過程 至少涉及兩個(gè)參與者,是一種協(xié)議 分為雙向認(rèn)證和單向認(rèn)證 身份認(rèn)證并不是一種靜態(tài)的加密,而是一個(gè) 協(xié)議過程 區(qū)分兩個(gè)概念 身份認(rèn)證和報(bào)文鑒別 區(qū)別: ①報(bào)文鑒別是靜態(tài)附加在報(bào)文之

    2024年02月02日
    瀏覽(22)
  • 【安全】探索統(tǒng)一身份認(rèn)證:OAuth 2.0的介紹、原理和實(shí)現(xiàn)方法

    在現(xiàn)代互聯(lián)網(wǎng)應(yīng)用中,用戶需要在多個(gè)應(yīng)用程序之間共享身份驗(yàn)證和授權(quán)信息。OAuth 2.0作為一種流行的統(tǒng)一身份認(rèn)證解決方案,通過簡(jiǎn)化和安全地授權(quán)第三方應(yīng)用程序訪問用戶資源,為用戶提供了更好的體驗(yàn)。本文將深入介紹OAuth 2.0的概念、原理和實(shí)現(xiàn)方法,幫助讀者更好地

    2024年02月11日
    瀏覽(26)
  • Java中JWT技術(shù)解析與實(shí)踐:安全高效的身份認(rèn)證

    什么是JWT(JSON Web Token)? JWT是一種用于身份驗(yàn)證和授權(quán)的開放標(biāo)準(zhǔn)(RFC 7519),它是基于JSON格式的輕量級(jí)安全令牌。JWT由三部分組成:頭部(Header)、載荷(Payload)和簽名(Signature)。通常,JWT被用于在不同的系統(tǒng)之間傳遞安全性的聲明信息,以便用戶在跨域應(yīng)用中進(jìn)行身

    2024年02月05日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包