WireGuard VPNの作者であるJason A. Donenfeld氏は最近、Linuxカーネル内の/dev/randomおよび/dev/urandomデバイスの動作を担うRDRAND乱数生成器の新しい更新版実装を発表しました。
XNUMX月末に、ジェイソンはランダムコントローラーメンテナーとしてリストされ、現在、彼のリワーク作業の最初の結果を投稿しています。
この発表によると、新しい実装では、エントロピー混合演算にSHA1ではなくBLAKE2sハッシュ関数を使用するように変更された点が注目に値するとのことです。
BLAKE2s自体には、内部的に基づいているという優れた特性があります。
RNGがすでに拡張に使用しているChaCha順列、
斬新さ、独創性、素晴らしいCPUに問題はないはずです
すでに使用されているものに基づいているため、動作。
さらに、この変更により、問題のあるSHA1アルゴリズムが排除され、乱数生成器の初期化ベクトルの上書きが防止されたことで、擬似乱数生成器のセキュリティも向上したことに注目すべきです。BLAKE2sアルゴリズムはSHA1よりも優れているため、その使用は擬似乱数生成器のパフォーマンスにもプラスの効果をもたらしました(Intel i7-11850Hプロセッサを搭載したシステムでのテストでは、速度が131%向上しました)。
もう一つ強調されている利点は、エントロピーミックスをBLAKE2に移行することで、使用されるアルゴリズムが統一されることです。BLAKE2はChaCha暗号で使用されており、ChaCha暗号はすでにランダムなシーケンスを抽出するために使用されています。
BLAKE2sは一般的に高速で、確かにセキュリティも高いのですが、深刻な脆弱性が指摘されています。さらに、現在の乱数生成器の構造は、規定どおりにSHA1関数を完全に利用しておらず、 RDRANDが「信頼済み」として設定されていない場合でも、RDRANDの出力でIVを上書きできるという、文書化されていない脆弱性を抱えています。これは、悪意のあるIVオプションが存在する可能性を示唆しています。
そして、ハッシュ関数の長さが短いということは、ミキサーにフィードバックする際に半分だけ秘密にしておくと、前方秘匿性はわずか2^80ビットしか得られないことを意味します。つまり、ハッシュ関数の選択が時代遅れであるだけでなく、その使用方法も実際には適切ではないのです。
また、getrandom呼び出しで使用される暗号で保護されたCRNG疑似乱数ジェネレーターが改善されました。
また、改善点はエントロピー抽出時に低速なRDRANDジェネレータへの呼び出しを制限することであり、これによりパフォーマンスが3,7倍向上するとも述べられています。ジェイソンは、RDRAND呼び出しはCRNGがまだ完全に初期化されていない状況でのみ意味があり、CRNGの初期化が完了している場合はその値は生成されるシーケンスの品質に影響を与えないため、この場合はRDRANDを呼び出さずに実行できることを示しました。
この妥協案は、これらXNUMXつの問題を解決すると同時に、 一般的な構造とセマンティクスは、可能な限りオリジナルに近いものです。
具体的には:a)IVハッシュをRDRANDで上書きする代わりに、 文書化されたBLAKE2の「salt」フィールドと「personal」フィールドを入力します。 このタイプの使用のために特別に作成されました。
b)この関数は、完全なハッシュの結果を エントロピーコレクター、返されるのは長さの半分だけです 以前と同じようにハッシュします。 これにより、 2 ^ 80から 2 ^ 128はるかに快適です。
c)生の「sha1_transform」関数を使用する代わりに、 代わりに、完全で適切なBLAKE2s関数を使用して完了します。
これらの変更はカーネル5.17に組み込まれる予定で、すでに開発者のテッド・ツォー(乱数ドライバの保守を担当する2人目の人物)、グレッグ・クロア=ハートマン(Linuxカーネルの安定性の維持を担当)、ジャン=フィリップ・オーマソン(BLAKE2/3アルゴリズムの作者)によってレビューされています。
最後に、さらに詳しく知りたい場合は、以下のリンクから詳細をご確認いただけます。