「[[マイクロソフト系技術情報 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国際標準]], [[:認証基盤]]