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