【認證與授權】曇花一現的OTP如何保護我們的資產

更新於 發佈於 閱讀時間約 6 分鐘

使用網銀時我們常常會聽到OTP、OTP, 究竟OTP是什麼呢? 全名為「One Time Password」, 一次性密碼, 顧名思義就是密碼僅能一次性的使用, 在過去我們也都很清楚單純的帳號密碼登入已經不是一個非常安全的選項的, 萬一牽涉到重要的金錢交易時, 如果安全環節沒有兼顧, 將導致個人財產損失, 因此也讓各家銀行都將OTP的技術導入變成一種基本功能。

OTP的工作原理是生成一個只能使用一次且有時限的密碼,這個密碼在每次使用後就會失效,無法再重複使用。這樣的設計可以有效防止密碼被竊取或重複使用,提高帳戶的安全性。

常見的OPT生成方式包括以下幾種:

1. 手機應用程式:使用者在手機上安裝一個OTP生成器應用程式(例如Google Authenticator、Authy),該應用程式會根據特定演算法和密鑰生成一個短暫性的OTP。

2. 簡訊:使用者在登錄或進行特定操作時,系統會向其註冊的手機號碼發送一條包含OTP的簡訊。

3. 電子郵件:OTP也可以通過電子郵件發送給使用者,使用者在登錄時需要輸入郵件中提供的OTP。

當使用者收到OTP後,他們需要在指定的時間內輸入這個密碼,以完成身份驗證或授權的過程。由於OTP只能使用一次且有時效性,即使有人盜取了OTP,也無法在有效期過後再次使用。

以Google Authenticator的流程為例子

raw-image

非常清楚,登入前服務提供者與Google Authenticator之間已經約定好: 每次登入前核發一組一次性密碼,而用戶則輸入這組一次性密碼進行登入並操作,確保安全性。

實務上,我們也會在手機裝上Google Authenticator。

raw-image

至於如何註冊與使用,官方文件都有詳細的說明,這裡就直接附上傳送門,請大家自行閱讀囉:

https://support.google.com/accounts/answer/1066447?hl=zh-Hant&co=GENIE.Platform%3DAndroid

演算法

Time-based One Time Password(TOTP)

raw-image

基於時間的算法, 讓驗證碼具有時效性, 因此會依賴於時間。

1. 生成共享密鑰:服務提供商在用戶註冊時生成一個共享密鑰,並將其與用戶帳戶關聯。

2. 生成時間戳記:TOTP 基於時間,所以需要一個時間戳記。通常是以一個固定的時間間隔(例如 30 秒)為單位。

3. 用戶計算一次性密碼:用戶設備上的 TOTP 客戶端使用共享密鑰和當前的時間戳記來計算一次性密碼。計算過程包括將時間戳記除以時間間隔並向下取整,將結果與共享密鑰結合,然後進行哈希運算以生成一次性密碼。

4. 用戶提供一次性密碼:用戶將計算得到的一次性密碼提供給服務提供商進行驗證。

5. 服務提供商驗證一次性密碼:服務提供商使用相同的共享密鑰和時間戳記計算一次性密碼,然後比對用戶提供的一次性密碼和計算得到的一次性密碼是否匹配。如果匹配,驗證成功。

這種OTP模式是比較常見的一種模式,除了達到一次性以外,連同時效性也一併考慮,非常適合用於轉帳、錢包…等重要的資產轉移驗證。

HMAC-based One-time Password(HOTP)

raw-image

基於Counter的算法, 計數器的值是每次使用後遞增的, 這樣每次生成的一次性密碼都是不同的。

1. 生成共享密鑰:服務提供商在用戶註冊時生成一個共享密鑰,並將其與用戶帳戶關聯。

2. 初始化計數器:將一個初始計數器(通常為 0)與用戶帳戶關聯。

3. 用戶計算一次性密碼:用戶設備上的 HOTP 客戶端使用共享密鑰和計數器來計算一次性密碼。計算過程包括將計數器轉換為固定位數的數字字串,將共享密鑰和計數器進行結合,然後進行哈希運算以生成一次性密碼。

4. 用戶提供一次性密碼:用戶將計算得到的一次性密碼提供給服務提供商進行驗證。

5. 服務提供商驗證一次性密碼:服務提供商使用相同的共享密鑰和計數器計算一次性密碼,然後比對用戶提供的一次性密碼和計算得到的一次性密碼是否匹配。如果匹配,驗證成功。

結語

目前蠻多應用程式都有綁上Google Authenticator做為OTP驗證的加強功能, 讓我們的登入除了帳號密碼之外, 更確保是本人所登入的, 增加駭客盜竊的難度, 除了需要偷竊到該網站的帳號密碼之外, 還需要破解OTP的驗證碼, 甚至是綁定於裝置上的Google Authenticator, 這無疑是大幅增加了難度, 等於駭客要針對某一位用戶進行入侵, 相對不容易啊!

我們在前面也介紹過「【認證與授權】JWT(JSON Web Token)簡介」的概念, 有限時間內的通行證, 而這次的OTP更加安全, 除了有限的時間以外, 更限制僅能使用一次, 大幅度增加駭客破解的難度, 因此許多網站與應用程式都會綁定這種OTP功能是基於安全考量的, 隨著複雜科技的發展, 加上大量數位化的趨勢, 諸如金融交易、虛擬錢包…等與金錢有關的應用都應該加入此機制, 減少被竊取的風險。

喜歡撰寫文章的你,不妨來了解一下:

Web3.0時代下為創作者、閱讀者打造的專屬共贏平台 — 為什麼要加入?

歡迎加入一起練習寫作,賺取知識,累積財富!

留言
avatar-img
留言分享你的想法!
avatar-img
阿Han的沙龍
139會員
302內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
阿Han的沙龍的其他內容
2023/06/30
什麼是零知識證明(Zero-knowledge proof) 是一種密碼學的概念,用於在不揭示具體信息的情況下,證明某個主張的正確性。它允許一方(稱為證明者)向另一方(稱為驗證者)證明某個陳述的真實性,而無需透露任何關於陳述的具體細節..., 這根本文字天書啊,底下讓我們用白話文來說一下唄! 「我必
Thumbnail
2023/06/30
什麼是零知識證明(Zero-knowledge proof) 是一種密碼學的概念,用於在不揭示具體信息的情況下,證明某個主張的正確性。它允許一方(稱為證明者)向另一方(稱為驗證者)證明某個陳述的真實性,而無需透露任何關於陳述的具體細節..., 這根本文字天書啊,底下讓我們用白話文來說一下唄! 「我必
Thumbnail
2023/06/09
上一篇我們介紹了「【認證與授權】Open Policy Agent 授權策略」, 相信都已經初步了解了OPA(Open Policy Agent)主要在做什麼, OPA簡單來說就是一個授權的政策管理規範, 有點像我們的法律系統, 提供開發者在上面制定法條, 以約束授權對象可以進行什麼樣的操作, 讓各
Thumbnail
2023/06/09
上一篇我們介紹了「【認證與授權】Open Policy Agent 授權策略」, 相信都已經初步了解了OPA(Open Policy Agent)主要在做什麼, OPA簡單來說就是一個授權的政策管理規範, 有點像我們的法律系統, 提供開發者在上面制定法條, 以約束授權對象可以進行什麼樣的操作, 讓各
Thumbnail
2023/06/06
上一篇我們有介紹什麼是OPA以及一些基本概念「【資訊軟體知識】Open Policy Agent 授權策略」,接下來我們就來介紹如何架設並以API的方式進行授權檢查。 這種方式的好處是可以跨語言, 不侷限於Go, 透過標準RESTFUL API的方式來與OPA Server相互溝通。 使用Docke
Thumbnail
2023/06/06
上一篇我們有介紹什麼是OPA以及一些基本概念「【資訊軟體知識】Open Policy Agent 授權策略」,接下來我們就來介紹如何架設並以API的方式進行授權檢查。 這種方式的好處是可以跨語言, 不侷限於Go, 透過標準RESTFUL API的方式來與OPA Server相互溝通。 使用Docke
Thumbnail
看更多
你可能也想看
Thumbnail
常常被朋友問「哪裡買的?」嗎?透過蝦皮分潤計畫,把日常購物的分享多加一個步驟,就能轉換成現金回饋。門檻低、申請簡單,特別適合學生與上班族,讓零碎時間也能創造小確幸。
Thumbnail
常常被朋友問「哪裡買的?」嗎?透過蝦皮分潤計畫,把日常購物的分享多加一個步驟,就能轉換成現金回饋。門檻低、申請簡單,特別適合學生與上班族,讓零碎時間也能創造小確幸。
Thumbnail
你好,開發者們!如今,OAuth 已經成為 Web 和移動應用中身份驗證和授權的黃金標準。這種協議允許用戶向第三方應用提供有限的訪問權限,而無需共享密碼。在這篇文章中,我們將探索如何在 Gin 框架中實現 OAuth 驗證和授權。
Thumbnail
你好,開發者們!如今,OAuth 已經成為 Web 和移動應用中身份驗證和授權的黃金標準。這種協議允許用戶向第三方應用提供有限的訪問權限,而無需共享密碼。在這篇文章中,我們將探索如何在 Gin 框架中實現 OAuth 驗證和授權。
Thumbnail
最近因為想要花些時間做完一個完整的SideProject,以前總是懂得怎麼使用,拼拼湊湊完成一個塞趴卷就交卷了,但都沒時間去真正理解這些原理的應用,而Laravel 框架本身支持的登入登出的工具,就有好多種。
Thumbnail
最近因為想要花些時間做完一個完整的SideProject,以前總是懂得怎麼使用,拼拼湊湊完成一個塞趴卷就交卷了,但都沒時間去真正理解這些原理的應用,而Laravel 框架本身支持的登入登出的工具,就有好多種。
Thumbnail
哈囉!在今天的文章中,我們將深入探討如何在 Gin 應用中實現 JWT 驗證。這種技術允許我們安全地驗證和授權用戶,並確保我們的 API 或 Web 應用的資源僅被許可的用戶訪問。
Thumbnail
哈囉!在今天的文章中,我們將深入探討如何在 Gin 應用中實現 JWT 驗證。這種技術允許我們安全地驗證和授權用戶,並確保我們的 API 或 Web 應用的資源僅被許可的用戶訪問。
Thumbnail
透過Google Authenticator轉移帳戶的功能,可以一次性提取所有TOTP密鑰,加快整合TOTP到Bitwarden的過程。整合完成後,不論是輸入帳號密碼或是輸入TOTP認證碼,都只需要Bitwarden即可搞定,在安全性和方便性取得平衡。在方便性和安全性之間取得平衡,是資安永遠的課題。
Thumbnail
透過Google Authenticator轉移帳戶的功能,可以一次性提取所有TOTP密鑰,加快整合TOTP到Bitwarden的過程。整合完成後,不論是輸入帳號密碼或是輸入TOTP認證碼,都只需要Bitwarden即可搞定,在安全性和方便性取得平衡。在方便性和安全性之間取得平衡,是資安永遠的課題。
Thumbnail
使用網銀時我們常常會聽到OTP、OTP, 究竟OTP是什麼呢? 全名為「One Time Password」, 一次性密碼, 顧名思義就是密碼僅能一次性的使用, 在過去我們也都很清楚單純的帳號密碼登入已經不是一個非常安全的選項的, 萬一牽涉到重要的金錢交易時, 如果安全環節沒有兼顧, 將導致個人財產
Thumbnail
使用網銀時我們常常會聽到OTP、OTP, 究竟OTP是什麼呢? 全名為「One Time Password」, 一次性密碼, 顧名思義就是密碼僅能一次性的使用, 在過去我們也都很清楚單純的帳號密碼登入已經不是一個非常安全的選項的, 萬一牽涉到重要的金錢交易時, 如果安全環節沒有兼顧, 將導致個人財產
Thumbnail
加密貨幣交易所Crypto.com exchange網頁版,於日前(2021/09/03)發給用戶的郵件中,公告開始支援2-Factor Authentication (2FA)自行更改以及登入密碼自行更改的功能。
Thumbnail
加密貨幣交易所Crypto.com exchange網頁版,於日前(2021/09/03)發給用戶的郵件中,公告開始支援2-Factor Authentication (2FA)自行更改以及登入密碼自行更改的功能。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News