言語を選択

疑似乱数生成器(PRNG)に基づく安全なパスワード生成器

本論文は、HMAC、CMAC、またはKMACベースのPRNGを用いた安全なパスワード生成器を提案し、NIST SP 800-90BのエントロピーおよびIIDテストにより検証する。
computationalcoin.com | PDF Size: 0.5 MB
評価: 4.5/5
あなたの評価
この文書は既に評価済みです
PDF文書カバー - 疑似乱数生成器(PRNG)に基づく安全なパスワード生成器

目次

1. 序論

近年、ウェブサイトアカウントやテキストベースのパスワード漏洩が継続的に報告されており、情報とパスワードのセキュリティの重要性が極めて高まっている。ウェブサイトの脆弱性に加えて、パスワード自体の安全性が最も重要である。一般的な安全でないパスワードの慣行には、キーワードベースのパスワード、一般的なフレーズベースのパスワード、ユーザー情報ベースのパスワード、およびパスワードの再利用などがある。AIや大規模言語モデル(LLM)の急速な発展は、攻撃者がパスワードをより効果的に推測する能力をさらに強化している。

プラットフォームがワンタイムパスワード(OTP)、多要素認証(MFA)、暗号化されたパスワードストレージなどの防御策を採用している一方で、パスワード自体の本質的なセキュリティを強化することは依然として重要である。本研究では、安全な疑似乱数生成器(PRNG)に基づく安全なパスワード生成器を提案する。このPRNGは、ハッシュベースメッセージ認証コード(HMAC)、暗号ベースメッセージ認証コード(CMAC)、またはKECCAKメッセージ認証コード(KMAC)を用いて構築され、暗号論的に安全な乱数を生成し、それらを用いてパスワードを生成する。

主な貢献は以下の通りである:

2. 関連研究

2.1. 線形合同法に基づく疑似乱数生成器

多くのプログラミング言語(例:C、Java)は、線形合同法(LCG)に基づくPRNGを実装している。シード$k$が与えられた場合、数列は以下のように生成される:

$f_0(k) \equiv a \oplus k \ (\text{mod} \ m)$

$f_i(k) \equiv a \times f_{i-1}(k) + c \ (\text{mod} \ m)$ for $i \ge 1$

しかし、LCGは安全ではない。なぜなら、次の状態は前の状態から線形的に導出されるため($f_{i-1}(k) \equiv (f_i(k) - c) \times a^{-1} \ (\text{mod} \ m)$)、攻撃者がシードまで遡ることが可能となるからである。

2.2. 安全な疑似乱数生成器

2.2.1. ハッシュベースメッセージ認証コード(HMAC)に基づく方式

HMACの安全性は、暗号学的ハッシュ関数(例:SHA-2、SHA-3)の一方向性に依存している。鍵$k$とメッセージ$M$に対して、HMACは以下のように計算される:

$r_{hmac}(k, M) = h((k \oplus opad) \ || \ h((k \oplus ipad) \ || \ M))$

ここで、$ipad$と$opad$は固定のパディング定数であり、$h$はハッシュ関数である。長さ$L$のランダムビットストリームを生成するために、カウンタモードが使用され、各出力ブロックに対してメッセージを変更する:$M_i = i \ || \ \text{KDF} \ || \ 0x00 \ || \ M \ || \ L$、これにより$r_{hmac,i}(k, M_i)$が生成される。

2.2.2. 暗号ベースメッセージ認証コード(CMAC)に基づく方式

CMACの安全性は、Advanced Encryption Standard(AES)に基づいている。鍵$k$とメッセージ$M$(長さ$l_a$のブロック$M'_i$に分割)に対して、Cipher Block Chaining(CBC)モードで動作する:

$c_{i+1} = AES(k, c_i \oplus M'_{i+1})$、ただし$c_0 = Pad0(0)$。

最終的な出力$r_{cmac}(k, Split(M))$は、特定のパディング(Pad1)を施した後の最後の暗号文ブロックから導出される。

2.2.3. KECCAKメッセージ認証コード(KMAC)に基づく方式

KMACは、SHA-3(KECCAK)のスポンジ構造に基づいており、柔軟性と安全性を提供する。NIST SP 800-108 Rev. 1で概説されているように、PRNGの目的に適した決定論的で予測不可能なビットストリームを生成するために、HMACと同様にカウンタモードで使用することができる。

2.3. 乱数性の検証手法

本論文では、乱数性の検証にNIST SP 800-90Bフレームワークを採用し、以下の2つの重要な側面に焦点を当てる:

3. 安全なPRNGに基づく提案する安全なパスワード生成器

提案するシステムアーキテクチャは以下の要素を含む:

  1. 入力: ユーザーが任意で提供する「ハッシュ化対象メッセージ(TBHM)」とパラメータ(希望するパスワード長、文字セット)。
  2. 安全なPRNGコア: NIST SP 800-108に従い、カウンタモードで3つのMAC関数(HMAC、CMAC、またはKMAC)のいずれかを用いて構築されたPRNG。このコアは、TBHM(および内部鍵/シード)を入力として受け取り、暗号論的に安全な疑似乱数ビットシーケンスを生成する。
  3. パスワード生成: ランダムビットは、ユーザー指定の文字セット(例:英数字+記号)にマッピングされ、希望する長さのパスワードが作成される。

セキュリティ分析では、生成されたパスワードの有効な鍵空間(文字セットサイズ$C$と長さ$L$に基づき、$C^L$通りの可能性)を、AES-128($2^{128}$)およびAES-256($2^{256}$)のブルートフォース耐性と比較する。例えば、94文字のセットから生成された16文字のパスワードは、約$94^{16} \approx 2^{105}$通りの可能性を提供し、AES-128よりは弱いが、多くの目的に対しては依然として堅牢である。

4. 実験環境と結果

4.1. 実験設定

提案されたHMAC、CMAC、およびKMACベースのPRNGを用いて、大量の乱数シーケンスを生成する実験が行われた。これらのシーケンスは、その後、NIST SP 800-90Bテストスイートに適用された。

4.2. 乱数性検証結果

主な発見: 実験結果は、提案された3つのPRNG手法(HMAC/SHA-256、CMAC/AES-256、KMAC)によって生成された乱数が、NIST SP 800-90Bで規定されているエントロピー検証テストとIID検証テストの両方に成功したことを示した。

意味合い: これは、出力シーケンスが高いエントロピーを持ち、検出可能な統計的依存性や偏りを示さないことを確認しており、パスワード生成における安全な乱数源の核心要件を満たしている。

4.3. 計算効率の分析

主な焦点ではないが、本論文はトレードオフを示唆している。HMAC/SHA-256とKMACは、一般的にソフトウェアで非常に効率的である。CMAC/AESは、特定のプラットフォームではハードウェアアクセラレーションの利点がある可能性がある。選択は、展開環境のパフォーマンス制約に基づいて調整することができる。

5. 結論と今後の課題

本研究は、暗号論的に強力なPRNG(HMAC、CMAC、KMAC)に基づく安全なパスワード生成器フレームワークを設計し、検証することに成功した。生成されるパスワードのセキュリティは、これらのMAC関数の証明された特性と、基礎となるビットストリームの検証済みの高い乱数性に由来する。

今後の方向性は以下の通りである:

6. 独自分析と専門家の洞察

核心的洞察: Chenの研究は、根本的なセキュリティ問題である「弱いパスワードエントロピー」に対する、実用的で標準準拠の工学的解決策である。多くのパスワード侵害の根本原因は、単なるストレージの欠陥だけでなく、予測可能な生成にあることを正しく特定している。NIST承認の構成要素(HMAC、CMAC、KMAC)と検証フレームワーク(SP 800-90B)に解決策を定着させることで、この研究は暗号学的な新奇性のための新奇性を避け、代わりに検証可能な健全な方法を提供している。このアプローチは、Linuxの/dev/urandomインターフェースのような確立されたシステムの背後にある哲学を反映しているが、ここでの焦点は、再現可能なパスワード生成に適した、決定論的でシード可能、かつユーザーが影響を与えられるプロセスにある。

論理的流れ: 議論は体系的である:1)問題の確立(弱く、推測可能なパスワード)。2)一般的だが欠陥のある解決策(LCGベースのRNG)の排除。3)証明されたセキュリティを持つ構成要素(暗号学的MAC)の提案。4)既存の標準(NIST SP 800-108カウンタモード)に従った組み立て。5)厳格なベンチマーク(NIST SP 800-90B)に対する出力の検証。この流れは堅牢であり、応用暗号学研究におけるベストプラクティスを反映しており、CycleGAN論文のような画期的な研究で見られる構造化された評価と類似している。

強みと欠点: 主な強みはその信頼性である。実戦で鍛えられた暗号プリミティブとNISTガイダンスを使用することでリスクを最小限に抑えている。任意のユーザー入力(TBHM)は巧妙な機能であり、パーソナライズされながらも安全なシードを可能にする。しかし、重要な欠点は、最先端のパスワード生成器(同様の文脈で鍵伸張にArgon2やbcryptを使用するものなど)に対する直接的な比較セキュリティ分析の欠如である。AESのブルートフォース強度との比較は有用だが単純化されている。現実世界の攻撃ベクトルは、多くの場合、ハッシュ化されたパスワードのオフラインクラッキングである。論文は、最適化されたルールセットを持つHashcatのようなツールに対する耐性をモデル化することで、その主張を強化することができただろう。さらに、NISTテストは権威あるものではあるが、すべての暗号学的特性に対して網羅的ではない。PRNG実装に対するサイドチャネル攻撃への耐性についての議論は有益であっただろう。

実践的洞察: セキュリティアーキテクトにとって、この論文はすぐに使える設計図を提供する。推奨1: KMACベースのバリアントを実装する。SHA-3の派生として、特定のシナリオでSHA-2ベースのHMACに理論的に影響を与える長さ拡張攻撃に対して耐性を持つように設計されており、より将来性のある選択肢を表している。推奨2: この生成器を、ポリシーベースのパスワード作成が必要なエンタープライズパスワードボールトやSSOシステムのコアエンジンとして統合する。その決定論的な性質(同じTBHM+パラメータ=同じパスワード)は、回復シナリオにおいて機能となる。推奨3: この技術的解決策をユーザー教育で補完する。生成器は20文字のランダム文字列を生成できるが、ユーザーが短く覚えやすいTBHMと8文字の長さを選択した場合、セキュリティは急落する。インターフェースは健全なデフォルト(例:最小12文字、完全な文字セット)を強制し、NCC Groupのような組織の研究に基づくパスワード強度メーターのように、エントロピー強度を視覚的に伝える必要がある。

7. 技術詳細と数式

コアのセキュリティは、MACの疑似乱数関数(PRF)特性に依存している。カウンタモードのPRNGは以下のように抽象化できる:

$R_i = PRF(K, \text{Counter} \ || \ \text{Label} \ || \ 0x00 \ || \ \text{Input} \ || \ L)$

ここで、$PRF$は$HMAC$、$CMAC$、または$KMAC$であり、$K$は秘密鍵であり、$R_i$は最終的なビットストリームを形成するために連結される出力ブロックである。

パスワードマッピング: ビットストリームから導出されたランダム整数値$v$とサイズ$C$の文字セットが与えられた場合、文字インデックスは以下のように選択される:$index = v \mod C$。これは$L$回繰り返される。

8. 分析フレームワークと概念例

シナリオ: ウェブサービスが、新規ユーザーに対して高強度のランダムな初期パスワードを生成する必要がある。

フレームワークの適用:

  1. パラメータ選択: サービスは、PRFとしてKMAC256を選択し、安全に保管されたシステム由来の暗号鍵$K_{sys}$、およびユーザーの一意で不変のUserIDとタイムスタンプで構成されるTBHMを選択する。
  2. プロセス:
    • 入力:TBHM = "USER12345@2023-10-27T10:30:00Z"、長さ$L$ = 16、文字セット = 94の印字可能ASCII。
    • PRNGコアは、$K_{sys}$を用いてカウンタモードでこれを処理し、128ランダムビットを生成する(16文字 * log2(94) ≈ 105ビットなので、128ビットは十分なエントロピーを提供する)。
    • ビットはs9*!Lq9@Pz%2m#X&のような文字列に変換される。
  3. セキュリティ特性:
    • 予測不可能性: $K_{sys}$がなければ、TBHMが知られていても出力は予測不可能である。
    • 決定性: 同じユーザーがその正確な瞬間に同じパスワードを得るため、デバッグに役立つ。
    • 高エントロピー: パスワードは約105ビットのエントロピーを持ち、ブルートフォースを非現実的にする。

9. 将来の応用と開発方向性

10. 参考文献

  1. M. Bellare, R. Canetti, and H. Krawczyk, "Keying Hash Functions for Message Authentication," CRYPTO 1996.
  2. NIST, "Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication," SP 800-38B.
  3. NIST, "SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions," FIPS PUB 202.
  4. NIST, "Recommendation for the Entropy Sources Used for Random Bit Generation," SP 800-90B.
  5. NIST, "Recommendation for Key Derivation Using Pseudorandom Functions," SP 800-108 Rev. 1.
  6. J. Kelsey, B. Schneier, and N. Ferguson, "Yarrow-160: Notes on the Design and Analysis of the Yarrow Cryptographic Pseudorandom Number Generator," SAC 1999.
  7. J. Zhu, T. Park, P. Isola, A.A. Efros, "Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks," ICCV 2017. (厳密な方法論的評価の例として引用)
  8. NCC Group, "Password Storage Cheat Sheet," OWASP Foundation. (実践的なパスワードポリシーガイダンスの情報源として引用)