Appleプラットフォームのセキュリティ
乱数の生成
暗号擬似乱数ジェネレータ(CPRNG)は安全なソフトウェアの重要な構成要素です。安全なソフトウェアを実現するために、AppleはiOS、iPadOS、macOS、tvOS、およびwatchOSカーネルで実行する、信頼性の高いソフトウェアCPRNGを提供しています。CPRNGはシステムから生のエントロピーを集め、カーネルとユーザ空間の両方でコンシューマに安全な乱数を提供するという役割を担います。
エントロピーソース
カーネルのCPRNGは、起動時とデバイスのライフタイム全体を通じて、複数のエントロピーソースからシード値を得ます。エントロピーソースには以下が含まれます(使用できる場合):
Secure EnclaveのハードウェアTRNG
起動時に収集された、タイミングベースのジッタ
ハードウェア割り込みから収集されたエントロピー
起動をまたいでエントロピーを保持するために使用するシードファイル
Intelの乱数命令 — RDSEEDやRDRANDなど(Intelプロセッサ搭載Macのみ)
カーネルCPRNG
カーネルのCPRNGはFortuna由来の設計で、256ビットのセキュリティレベルを対象としています。カーネルのCPRNGは以下のAPIを使用してユーザ空間のコンシューマに高品質な乱数を提供します:
getentropy
(2)システム呼び出しランダムデバイス(/dev/random)
カーネルのCPRNGは、ランダムデバイスへの書き込みを通じて、ユーザが提供したエントロピーを受け入れます。
フィードバックありがとうございます。