ARM および Intel CPU 上のデータに対する命令実行時間の依存性

Adiantum 暗号の開発者の XNUMX 人であり、Linux カーネル fscrypt サブシステムのメンテナである Eric Biggers は、さまざまな処理データの一定の実行時間を保証しない Intel プロセッサの機能から生じるセキュリティ問題をブロックするためのパッチ セットを提案しました。 この問題は、Ice Lake ファミリ以降の Intel プロセッサで発生します。 同様の問題が ARM プロセッサでも観察されます。

これらの命令で処理されるデータに対する命令の実行時間の依存性の存在は、そのような動作はシステム内で実行される暗号化操作のセキュリティを保証できないため、パッチの作成者によってプロセッサの脆弱性とみなされます。 暗号アルゴリズムの実装の多くは、データが命令の実行時間に影響を与えないように設計されており、この動作に違反すると、処理時間の分析に基づいてデータを回復するサイドチャネル攻撃が発生する可能性があります。

潜在的に、ランタイム データの依存関係は、ユーザー空間からカーネル データを特定する攻撃を開始するために使用される可能性もあります。 Eric Biggers 氏によると、加算や XOR 演算を実行する命令や特殊な AES-NI 命令であっても、デフォルトでは一定の実行時間は提供されません (テストによって確認されていない情報。他のデータによると、XNUMX 時間の遅延があるとのこと)ベクトル乗算とビットカウント中のサイクル)。

この動作を無効にするために、Intel と ARM は、ARM CPU 用の PSTATE ビット DIT (データ独立タイミング) と Intel CPU 用の MSR ビット DOITM (データ オペランド独立タイミング モード) という新しいフラグを提案し、一定の実行時間で古い動作に戻します。 Intel と ARM は、重要なコードに対して必要に応じて保護を有効にすることを推奨していますが、実際には、重要な計算はカーネルとユーザー空間のどこでも発生する可能性があるため、カーネル全体で DOITM および DIT モードを常に有効にすることを検討しています。

ARM プロセッサの場合、Linux 6.2 カーネル ブランチはカーネルの動作を変更するパッチをすでに採用していますが、これらのパッチはカーネル コードのみをカバーし、ユーザー空間の動作を変更しないため、不十分であると考えられています。 Intel プロセッサの場合、保護機能の組み込みはまだ検討段階です。 パフォーマンスに対するパッチの影響はまだ測定されていませんが、Intel のドキュメントによると、DOITM モードを有効にすると (たとえば、データ固有のプリロードなどの一部の最適化を無効にすることで) パフォーマンスが低下し、将来のプロセッサ モデルではパフォーマンスの低下がさらに増加する可能性があります。 。

出所: オープンネット.ru

コメントを追加します