マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

ASP.NET Core Identityで、TOTPがサポートされていたので調査した。

詳細

S/Keyと時刻同期方式

S/Key

  • シーケンス
  • ユーザIDを送信
  • Seed+「初期値(最大値) or 保存しているカウンタ値 - 1」を返信
  • S(=Seed+Password)をカウンタ値回ハッシュ関数にかけOTPとして送信
  • ハッシュ値の比較(妥当性検証)
    • 初回は初期値(最大値)回分のハッシュを自力で計算して比較
    • 初回以降は前回OTPをハッシュ関数にかけて比較(サーバ負荷軽減)
  • 比較して=だった場合、認証OKを返信

時刻同期方式

  • 特許対象で、詳細が一般に公開されていない
  • 難解さに基づくセキュリティに依拠している。
  • 専門家によって理論的に安全性が確認されていない。
  • 以下の様な方式で実装されているらしい。
  • ユーザ名を送信
  • パスコード要求を返信
  • トークンの生成したパスコード(トークコード+個人情報番号(PIN))を送信
    ※ PINがNW上に流れないようトークンにPINを入力して、パスコードを生成する方式もある。
  • 認証サーバでも同様の方法でパスコードを生成して比較
  • 比較して=だった場合、認証OKを返信

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


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-09-11 (水) 09:42:16 (9d)