PHP.net mt_rand()
およびuniqid()
は、「暗号的に安全な値を生成しない」と説明されており、代わりにrandom_int()
,random_bytes()
、またはopenssl_random_pseudo_bytes()
を使用するように勇気付けられています。「暗号で安全」とはどういう意味ですか?
「暗号安全」とは何ですか?
PHP.net mt_rand()
およびuniqid()
は、「暗号的に安全な値を生成しない」と説明されており、代わりにrandom_int()
,random_bytes()
、またはopenssl_random_pseudo_bytes()
を使用するように勇気付けられています。「暗号で安全」とはどういう意味ですか?
「暗号安全」とは何ですか?
コンピュータで詳細を確認することができます。これは、コンピュータが計算する疑似乱数が予測可能である可能性があることを意味します。
この乱数が暗号鍵の基礎として使用された場合、鍵と安全なメッセージが侵害される可能性があります。
暗号で保護された擬似乱数ジェネレータ(CSPRNG)は、生成された番号が、第三者がそれが何であるかを予測することが非常に難しいものです。これは、これらの乱数から派生した暗号鍵が、そのような鍵で安全なメッセージを安全にすることを決定することは極めて困難であることを意味します。
https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator
より理想的には、CSPRNGsにおける乱数の生成は、高品質のソースから得られるエントロピー、一般に、オペレーティング・システムのランダム性APIを使用します。しかしながら、そのような表面上独立したいくつかのプロセスにおいて予期しない相関が見出されている。情報理論的観点からは、ランダム性の量、すなわち生成され得るエントロピーは、システムによって提供されるエントロピーに等しい。しかし、実用的な状況では、エントロピーが利用できるよりも多くの乱数が必要になることがあります。実行中のシステムからランダム性を抽出するプロセスも、実際の実行では遅いです。このような場合、CSPRNGを使用することがあります。 CSPRNGは、より多くのビットにわたって利用可能なエントロピーを「伸ばす」ことができる。
既知のアルゴリズムによって生成されるため、値を推測し予測することができます。
だから、あなたは次のものを推測できないという価値が必要な場合は、それらを中継するべきではありません。
ポーカーゲームを考えてみましょう。ユーザーは次のカードが何であるかを推測できますか?
あなたは、通常、真の乱数を計算することで、非常に良い仕事をしないこのSO answer
フレンド[Google](https://www.google.com/search?q=cryptographically+secure&rlz=1C1VFKB_enJP607JP618&oq=cryptographically+secure&aqs=chrome..69i57j69i60&sourceid=chrome&ie=UTF-8)と[Wikipedia](https: //en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator)これであなたを助けることができると思います。 – Geshode
は、友人が "エントロピー"について何かを教えてくれるというだけで、その楽しみのために... https://www.random.org/analysis/dilbert.jpg – DarkSquirrel42
@Geshode私はそれらの友人とスタックに尋ねたと思いますこれについてもオーバーフローします。そして、何を推測する?私は明確な説明を見つけられず、他の人にも質問をするなら、それが良いと思った。 –