MacOSのエントロピーについてたくさん読んでいます...
this FIPS 140-02 doc a NIST準拠のDRBGに従って、Yarrowを使用しないことを知っています。
私はたくさん読みます:
https://github.com/briansmith/ring/pull/398Mac OS Xでエントロピーを測定(および増加)するにはどうすればよいですか?https:/ /stackoverflow.com/questions/5832941/how-good-is-secrandomcopybyteshttp://serverascode.com/2014/03/04/yarrow.htmlhttps:/ /stackoverflow.com/questions/3170500/random-number-generator-dev-randomhttps://stackoverflow.com/questions/42197958/secrandomcopybytes-provider-sha1prng-or-nativeprng-type-in -objc
SecRandomCopyBytes
が効果的に使用していることがわかります。
/dev/urandom
が使用するもの:
https://opensource.Apple.com/source/xnu/xnu-4570.41.2/osfmk/prng/random.c.auto.html
カタリナで/dev/urandom
を使用している古いコードをたくさん持っていますが、鍵素材に/dev/urandom/
を使用することはまだ有効ですか?暗号的に安全ですか?
すべてをmacOS固有のlibに移植したくありません。
libsodium
でも/dev/urandom
を使用しているようですので、大丈夫でしょうか?
したがって、やや偶然に、Appleが更新された プラットフォームセキュリティガイド が12月にリリースされました(2019年12月)。
これは、暗号化の目的で 乱数生成 を直接カバーしています:
乱数生成
暗号化疑似乱数ジェネレータ(CPRNG)は、安全なソフトウェアの重要な構成要素です。このため、Appleは、iOS、iPadOS、macOS、tvOS、およびwatchOSカーネルで実行される信頼できるソフトウェアCPRNGを提供します。システムから生のエントロピーを集約し、消費者に安全な乱数を提供しますカーネルとユーザー空間の両方で。
エントロピーソース
カーネルCPRNGは、起動時およびデバイスの寿命中、複数のエントロピーソースからシードされます。これらには以下が含まれます(可用性に依存):
_* The Secure Enclave’s hardware RNG * Timing-based jitter collected during boot * Entropy collected from hardware interrupts * A seed file used to persist entropy across boots * Intel random instructions, i.e. RDSEED and RDRAND (macOS-only)
_カーネルCPRNG
カーネルCPRNGは、_
256-bit
_セキュリティレベルを対象とするFortuna派生の設計です。次のAPIを使用して、ユーザー空間の消費者に高品質の乱数を提供します。_* The getentropy(2) system call * The random device, i.e. `/dev/random`
_カーネルCPRNGは、ランダムデバイスへの書き込みを通じてユーザー指定のエントロピーを受け入れます。
したがって、答えははいですが、macOS Catalina(10.15.2 (19C57)
)でキーマテリアルを生成するために/ dev/urandom /を使用することは依然として有効です。
これにより、_160-bit Yarrow
_または_256-bit Fortuna
_がCSPRNGの中心にあったかどうかについての私の推測も終わります。