日曜日に公開されたリリース候補コードである Linux v4.19-rc1 では、独自のカーネルまたは Linux ディストリビューションを構築するユーザーが、CPU ハードウェア乱数ジェネレータを信頼するかどうかを選択できるようになっているが、この決定は、過去 5 年間にわたる政府による監視に関する暴露を受けて複雑になっている。
乱数生成が十分にランダムでない場合、そのような数値に基づく暗号化は比較的容易に解読できます。セキュリティ意識の高い人々の間では、ハードウェアメーカーがスパイ活動や政府の法執行機関、諜報機関の要求に応えるために、意図せず基準を満たさない乱数生成を行っているのではないかと懸念されています。
こうしたパラノイアは、必ずしも明白だったわけではありません。2013年には、Linuxの帝王ことリーナス・トーバルズ氏が、Linuxカーネルが乱数を生成するために複数の入力ソースを使用していることを指摘し、IntelのRDRANDプロセッサ命令を廃止すべきだという主張を退けました。
このパッチは、Linuxカーネル貢献者でありGoogleのソフトウェアエンジニアでもあるTheodore Ts'o氏によって7月に提案されたもので、論争をLinuxディストリビューターとカーネルビルダーの手に委ねている。
「Linuxディストリビューションがこれに感謝してくれるかどうかは分からない」とTs'o氏は先月、Linuxカーネルのメーリングリストへの投稿で述べた。
RANDOM_TRUST_CPU フラグを有効にすると、カーネルのgetrandom()
システムコールが十分なエントロピーを蓄積するためにブートプロセスをブロックするのを防ぎます。これによりブートプロセスが高速化され、いくつかの利点が得られますが、暗号強度の確実性は低くなります。
Debian使ってる?Intelの最新CPUパッチが欲しい?小さな文字が大きな問題を引き起こす
続きを読む
この設定は、RDRAND だけでなく、Intel および AMD x86 チップの RDSEED、および IBM の S390 および PowerPC アーキテクチャの乱数ジェネレータにも適用されます。
Ts'o 氏は、コード変更によって、カーネル開発者が特定の政府や組織を信頼し、他の政府や組織を信頼しないことで窮地に陥ることがなくなると示唆している。
「このパッチによって、私たち自身がこのような状況に陥ることはありません。しかし、Linuxディストリビューションがこのような状況に陥ることになります」と彼は書いている。「良い点は、Linuxカーネルを構築する各人が、ブートプロセスの早い段階でユーザー空間が暗号レベルのエントロピーを取得しようとすることで発生するハングアップを回避するために、RDRANDを信頼する価値があるかどうかを判断できるようになることです。」
驚くことではないかもしれませんが、信頼フラグを無効にする方法を実装するよう求めるリクエストがすでにあります。®