乱数の生成

暗号擬似乱数ジェネレータ(CPRNG)は安全なソフトウェアの重要な構成要素です。安全なソフトウェアを実現するために、AppleはiOS、iPadOS、macOS、tvOS、visionOS、watchOSのカーネルで実行する、信頼性の高いソフトウェアCPRNGを提供しています。CPRNGはシステムから生のエントロピーを集め、カーネルとユーザ空間の両方でコンシューマに安全な乱数を提供するという役割を担います。

エントロピーソース

カーネルのCPRNGは、起動時とデバイスのライフタイム全体を通じて、複数のエントロピーソースからシード値を得ます。エントロピーソースには以下が含まれます(使用できる場合):

  • Secure EnclaveのハードウェアTRNG

  • 起動時に収集された、タイミングベースのジッタ

  • ハードウェア割り込みから収集されたエントロピー

  • 起動をまたいでエントロピーを保持するために使用するシードファイル

  • Intelの乱数命令 — RDSEEDやRDRANDなど(Intelプロセッサ搭載Macのみ)

カーネルCPRNG

カーネルのCPRNGはFortuna由来の設計で、256ビットのセキュリティレベルを対象としています。カーネルのCPRNGは以下のAPIを使用してユーザ空間のコンシューマに高品質な乱数を提供します:

  • getentropy(2)システム呼び出し

  • ランダムデバイス(/dev/random

カーネルのCPRNGは、ランダムデバイスへの書き込みを通じて、ユーザが提供したエントロピーを受け入れます。

公開日: 2024年12月19日
Morty Proxy This is a proxified and sanitized view of the page, visit original site.
役に立ちましたか?
入力可能な文字数: 250
入力可能な文字数は 250 です。
フィードバックありがとうございます。
Morty Proxy This is a proxified and sanitized view of the page, visit original site.