暗号化された環境にGRUB2をインストールしました。始めるパーティション、詳細を見るここ。私が選択したハッシュアルゴリズムはluksFormat
次のとおりです。シャー512、デフォルト値iter-time
(2秒)を使用します。
コマンドラインからアーチソまたは実行中のシステムでは、GRUBがロックを解除するのに平均10.5秒かかります。これは私のシナリオで許可されているよりも遅いです。
他の人も同じ問題があることがわかりましたここそしてここ。 2番目のリンクでは、ユーザーはフロストスーツこの問題の原因に関するいくつかのヒントが掲載されており、そのうちの2つは非常に妥当だと思います。
1) 初期 GRUB ロック解除中に CPU が省電力モードで実行されることがあります。
2) GRUB はシステムよりはるかに遅いハッシュ実装を使用できます。ベンチマークテストをしてみると、ここ。
ブートパーティションの暗号化がますます一般的になっているようで、まだこの質問に対する満足のいく答えがないので、質問をしたいと思いました。繰り返し回数を減らすこと(オフライン攻撃シナリオでセキュリティを大幅に減らすこと)に加えて、GRUBブートローダの(はるかに遅い)復号化時間を解決するために実行できる他の方法は何ですか?
少なくとも正確な原因でも知りたいです。ブートローダ画面でCPUクロックを確認して変更する方法はありますか?私はGRUBにシェルがあることを知っています。それを開こうとしましたが、cat /proc/cpuinfo
「/proc not Found」などのエラーが原因で失敗しました。私も試してみましたがcpuid
失敗しませんが、何も返しません。
追加情報として、次のような時間がありました。
- GRUBには以下が必要です。9秒以上
/boot
パスワードを入力してキーを押してブートパーティション()のロックを解除しますEnter。 - カーネルがルートパーティション(
/
)のロックを解除するのに約7秒かかります。もう一度押すと時間が測定されますEnter。 - カーネルは
/boot
()を介してブートパーティションのロックを解除してマウントします。crypttab
2秒余りかかります。
修正する:
SHA256ハッシュを試みましたが、時間がかかりました(13秒)。これは、GRUBが64ビットを使用する必要があることを示します。ここ、https://security.stackexchange.com/a/40218/91904そしてフロストスーツの答え。
SHA1も試してみましたが、11.5秒かかりました。
AES256を使用してもAES512を使用しても差がないようです。
また、ブートパーティションがどのファイルシステムを使用するかは重要ではありません。
答え1
GRUBは初期ブートです。まだオペレーティングシステムやLinuxがありません。しかし、GRUBはそれ自体が驚くほど素晴らしいことをたくさんすることができるので、私たちはこれを忘れる傾向があります。したがって、/proc not found
驚くべきメッセージではありません。
SHA512は64ビット命令の利点を大きく活用していますが、GRUBはまだこれらの命令を使用していない可能性があります。 SHA256またはSHA1をお試しください。 GRUBに最適です。繰り返し回数がそれに応じて調整されるため、LUKS でどのハッシュ仕様を使用するかは問題ではありません。バラより既存のdm-crypt LUKSデバイスのハッシュ仕様と繰り返し時間をどのように変更しますか?すべてを再暗号化しない方法について説明します。
GRUBはハッシュの要求に応じてgcryptライブラリのバリエーションを使用しているようです。わからない私の非常に古いベンチマークまだ有効です。テストしてみると最速のライブラリでもなく(少なくとも私が使った方法ではcryptsetup benchmark
)驚くほど大きな違いがありました。
したがって、cryptsetup バイナリで gcrypt を使用しない場合、これはロック解除時間差の別の理由かもしれません。おそらく、自分に合った値が見つかるまで実験をしてみる必要があります。
暗号化されたブートパーティションがますます普遍化するにつれて
間違った理由のために...人々が/bootを操作するのと同じように、人々がブートローダを操作するのも簡単です。 GRUBは最も簡単なソリューションだけをサポートしていますが、安価なキーロガーの手に渡ったら何の役に立ちますか?