「[[マイクロソフト系技術情報 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がサポートされていたので調査した。

*詳細 [#qdede1c4]

**S/Keyと時刻同期方式 [#qcf4f81f]

***S/Key [#v4d018ec]
-≒[[チャレンジ&レスポンス>認証基盤#zb3340de]]

-シーケンス

--ユーザIDを送信

--Seed+「初期値(最大値) or 保存しているSequence番号 - 1」を返信

--S=Seed+PasswordをSequence回ハッシュ関数にかけ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秒など)で取得。

**比較 [#sccc37be]
以下の様に言わないと製品売れないしね(恐らく試験には出ません)。

||TOTP/HOTP|セキュリティトークン|h
|開始するコスト|安い|高い|
|耐タンパー性|低い|高い|

**脆弱性 [#hf248dbe]
ワンタイム・パスワード方式の脆弱性

-サーバー自体の認証機能が無い
-トークンの紛失
-パスフレーズの漏洩

-カウンタ管理方式

--ログイン試行回数~
OTPで認証されない限り、OTPが更新されないのでブルートフォース攻撃できる

--時間式~
特定の時間内なら何度でも利用できる(再生攻撃対策がない場合)

*参考 [#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]
-Google 認証システムの仕組み~
https://sekika.github.io/2016/03/26/GoogleAuthenticator/

-Googleの2段階認証で使われているOTPの仕様が気になった - r-weblife~
http://d.hatena.ne.jp/ritou/20111225/1324822654

**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国際標準]], [[:認証基盤]]

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS