「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
ASP.NET Core Identityで、TOTPがサポートされていたので調査した。
詳細 †
S/Keyと時刻同期方式 †
S/Key †
- Seed+「初期値(最大値) or 保存しているSequence番号 - 1」を返信
- S=Seed+PasswordをSequence回ハッシュ関数にかけOTPとして送信
- ハッシュ値の比較(妥当性検証)
- 初回は初期値(最大値)回分のハッシュを自力で計算して比較
- 初回以降は前回OTPをハッシュ関数にかけて比較(サーバ負荷軽減)
時刻同期方式 †
- 特許対象で、詳細が一般に公開されていない
- 難解さに基づくセキュリティに依拠している。
- 専門家によって理論的に安全性が確認されていない。
- トークンの生成したパスコード(トークコード+個人情報番号(PIN))を送信
※ PINがNW上に流れないようトークンにPINを入力して、パスコードを生成する方式もある。
- 認証サーバでも同様の方法でパスコードを生成して比較
TOTPとHOTP †
HOTP †
- カウンターベースのOTP(HOTP:HMAC-based One-Time Password RFC 4226)
- HMACを使用したカウンタ値と秘密鍵から6桁 decimal のOTP生成するアルゴリズム
TOTP †
- 時間ベースのOTP(TOTP:Time-based One Time Password RFC 6238)
- HOTPのカウンタ値をUNIXエポック間隔(30秒など)で取得。
比較 †
以下の様に言わないと製品売れないしね(恐らく試験には出ません)。
| TOTP/HOTP | セキュリティトークン |
開始するコスト | 安い | 高い |
耐タンパー性 | 低い | 高い |
脆弱性 †
ワンタイム・パスワード方式の脆弱性
- サーバー自体の認証機能が無い
- トークンの紛失
- パスフレーズの漏洩
- ログイン試行回数
OTPで認証されない限り、OTPが更新されないのでブルートフォース攻撃できる
- 時間式
特定の時間内なら何度でも利用できる(再生攻撃対策がない場合)
参考 †
Google 認証システム †
Qiita †
One-time Password algorithm †
HOTP †
TOTP †
Tags: :IT国際標準, :認証基盤