- 追加された行はこの色です。
- 削除された行はこの色です。
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。
-[[戻る>認証基盤]]
* 目次 [#ja706efb]
#contents
*概要 [#m3ad8819]
[[ASP.NET Core Identity]]で、TOTPがサポートされていたので調査した。
-[[ASP.NET Core Identity]]で、TOTPがサポートされていたので調査した。
-ワンタイム・パスワードのコンテキストでトークンと言うと、~
ワンタイム・パスワードを生成する機器と言う意味になる。
*詳細 [#qdede1c4]
**HOTP [#q7b55de0]
カウンターベースのOTP(HOTP:HMAC-based One-Time Password RFC 4226)
**S/Keyと時刻同期方式 [#qcf4f81f]
**TOTP [#x917920a]
時間ベースのOTP(TOTP:Time-based One Time Password RFC 6238)
***S/Key [#v4d018ec]
-≒[[チャレンジ&レスポンス>認証基盤#zb3340de]]
-シーケンス
--ユーザIDを送信
--Seed+「初期値(最大値) or 保存しているカウンタ値 - 1」を返信
--S(=Seed+Password)をカウンタ値回ハッシュ関数にかけOTPとして送信
--ハッシュ値の比較(妥当性検証)
---初回は初期値(最大値)回分のハッシュを自力で計算して比較
---初回以降は前回OTPをハッシュ関数にかけて比較(サーバ負荷軽減)
--比較して=だった場合、認証OKを返信
***時刻同期方式 [#m143e368]
-特許対象で、詳細が一般に公開されていない
-難解さに基づくセキュリティに依拠している。
-専門家によって理論的に安全性が確認されていない。
-以下の様な方式で実装されているらしい。
--ユーザ名を送信
--パスコード要求を返信
--トークンの生成したパスコード(トークコード+個人情報番号(PIN))を送信~
※ PINがNW上に流れないようトークンにPINを入力して、パスコードを生成する方式もある。
--認証サーバでも同様の方法でパスコードを生成して比較
--比較して=だった場合、認証OKを返信
**TOTPとHOTP [#j1d0aa2a]
***HOTP [#q7b55de0]
-カウンターベースのOTP(HOTP:HMAC-based One-Time Password RFC 4226)
-HMACを使用したカウンタ値と秘密鍵から6桁 decimal のOTP生成するアルゴリズム
-カウンタ値に関する仕様は任意で明記されていない。
***TOTP [#x917920a]
-時間ベースのOTP(TOTP:Time-based One Time Password RFC 6238)
-[[HOTP>#q7b55de0]]のカウンタ値をUNIXエポック間隔(30秒など)で取得。
**脆弱性 [#hf248dbe]
ワンタイム・パスワード方式の脆弱性
***サーバ認証 [#x349b0c7]
-サーバー自体の認証機能が無い
***紛失・漏洩 [#tcbef3c7]
-トークンの紛失
-パスフレーズの漏洩
-個人情報番号(PIN)の漏洩
***カウンタ管理方式 [#df14a53a]
(再生攻撃対策がない場合)
-ログイン試行回数~
OTPで認証されない限り、~
カウンタが更新されないので~
ブルートフォース攻撃できる。
-時間式~
特定の時間内ならカウンタが同じなのでブルートフォース攻撃できるが、~
時間間隔が短いので、ログイン試行回数式よりセキュリティの強化される。
**比較 [#sccc37be]
以下の様に言わないと製品売れないしね(恐らく試験には出ません)。
||TOTP/HOTP|時刻同期方式トークン|h
|開始するコスト|安い|高い|
|耐タンパー性|低い|高い|
※ 耐タンパー性:コンピュータシステムの内部構造の解析、見破られ難さ。
*参考 [#l67b58ce]
-OTP - Security Akademeia~
https://akademeia.info/index.php?OTP
-2要素認証のTOTPとHOTP、どちらがより安全か? – yohgaki's blog~
https://blog.ohgaki.net/2fa-totp-hotp-which-is-safer
**Google 認証システム [#m26b6406]
**認証システム [#m26b6406]
***Google [#hacfe643]
-Google 認証システムの仕組み~
https://sekika.github.io/2016/03/26/GoogleAuthenticator/
-Googleの2段階認証で使われているOTPの仕様が気になった - r-weblife~
http://d.hatena.ne.jp/ritou/20111225/1324822654
***Microsoft [#cd645a26]
-Microsoft Authenticator アプリの使い方~
https://support.microsoft.com/ja-jp/help/4026727/microsoft-account-how-to-use-the-microsoft-authenticator-app
**Qiita [#yb0e1c02]
-今さら聞けない2段階認証の話いろいろ~
https://qiita.com/isaoshimizu/items/5ca25efebdc5ecee7d9b
**One-time Password algorithm [#k861366f]
***HOTP [#c9657e49]
-RFC 4226 - HOTP: An HMAC-Based One-Time Password Algorithm~
https://tools.ietf.org/html/rfc4226
-HMAC-based One-time Password algorithm - Wikipedia~
https://en.wikipedia.org/wiki/HMAC-based_One-time_Password_algorithm
***TOTP [#q5ffff02]
-RFC 6238 - TOTP: Time-Based One-Time Password Algorithm~
https://tools.ietf.org/html/rfc6238
-Time-based One-time Password algorithm - Wikipedia~
https://en.wikipedia.org/wiki/Time-based_One-time_Password_algorithm
-IBM Knowledge Center - TOTP ワンタイム・パスワード・メカニズムの構成~
https://www.ibm.com/support/knowledgecenter/ja/SSPREK_9.0.2/com.ibm.isam.doc/config/task/ConfiguringOneTimePasswordTOTP.html
-RFC6238 Time-based One-time Password Algorithm (TOTP)の仕組みのメモ~
https://qiita.com/shrkw/items/426a7f1a59f42e0bd523
----
Tags: [[:IT国際標準]], [[:認証基盤]]