「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次  †
概要  †
ASP.NET Core Identityで、TOTPがサポートされていたので調査した。
詳細  †
S/Keyと時刻同期方式  †
S/Key  †
- Seed+「初期値(最大値) or 保存しているカウンタ値 - 1」を返信
 
- S(=Seed+Password)をカウンタ値回ハッシュ関数にかけ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秒など)で取得。
 
脆弱性  †
ワンタイム・パスワード方式の脆弱性
サーバ認証  †
紛失・漏洩  †
- トークンの紛失
 
- パスフレーズの漏洩
 
- 個人情報番号(PIN)の漏洩
 
カウンタ管理方式  †
(再生攻撃対策がない場合)
- ログイン試行回数
OTPで認証されない限り、
カウンタが更新されないので
ブルートフォース攻撃できる。 
- 時間式
特定の時間内ならカウンタが同じなのでブルートフォース攻撃できるが、
時間間隔が短いので、ログイン試行回数式よりセキュリティの強化される。 
比較  †
以下の様に言わないと製品売れないしね(恐らく試験には出ません)。
 | TOTP/HOTP | 時刻同期方式トークン | 
| 開始するコスト | 安い | 高い | 
| 耐タンパー性 | 低い | 高い | 
 
※ 耐タンパー性:コンピュータシステムの内部構造の解析、見破られ難さ。
参考  †
Google 認証システム  †
Qiita  †
One-time Password algorithm  †
HOTP  †
TOTP  †
Tags: :IT国際標準, :認証基盤