ディスク暗号化によるプリブート認証は技術的にどのように機能しますか?

ディスク暗号化によるプリブート認証は技術的にどのように機能しますか?

デュアルブートSSDドライブを完全に暗号化するためのソリューションを探しています(まだ新製品であり、空いているので、ドライブに何かを入れる前に暗号化を設定したい)。

この問題についてオンラインで多くの混乱がありますが、追加のブートディスクでTrueCryptのブートローダを使用する必要があるかもしれませんが、TrueCryptはこれを行うことができるようです。私はいくつかのLinuxツール(いくつかの修正されたGRUB2バージョンを含む)でもこれを行うことができることを知っています。

しかし、私は疑い、私が読んだ記事は基本的な質問に答えるほど深くありません。ディスク全体が暗号化され、一部のプリブートツールでユーザーに復号化キーを提供するように要求した場合はどうなりますか?そうではないでしょうか?ツールを実行しているオペレーティングシステムで実行する必要があるという意味ですか?つまり、オペレーティングシステムが見ているディスクが実際に暗号化されていることを知らないようにするツールはありますか?

そのようなツールがない場合、これは復号化ツールが起動時に復号化情報をオペレーティングシステムに渡す必要があることを意味しますか?クロスプラットフォームを実装するのは難しいと思います。

答え1

ディスク全体が暗号化されていて、一部のプリブートツールでユーザーがディスクの復号化にキーを提供する必要がある場合は、ツールを起動するオペレーティングシステムで実行する必要がありますか?

はい、ほとんどです。ハードウェアベースのフルディスク暗号化実行方法:暗号化はデバイス(ハードドライブ/フラッシュ)によって完全に処理されるか、可能であれば物理デバイスのチェーンのコントローラによって処理され、オペレーティングシステムには「表示」されません。
これにより、OSは暗号化されていない一般的なデバイスと同様にI / O操作を処理し、ハードウェア(および/またはファームウェア - とにかくOSの「下」)で魔法のようなことが起こります。

そのようなツールがない場合、これは復号化ツールが起動時に復号化情報をオペレーティングシステムに渡す必要があることを意味しますか?

暗号化がオペレーティングシステムの「下」で実行できない場合(上記のように、または仮想化技術を使用しますが、2つ以上のオペレーティングシステムを実行できます)、実際には何らかの形で情報転送が必要です。 。はい、これはクロスオペレーティングシステムが難しいことを意味します。
ハードウェア/ファームウェアヘルプがない場合は、暗号化されていないブートローダコード(少なくともブートローダ)も必要です。

ウィキペディアディスク暗号化この記事にはこれに関する詳細があります。

答え2

暗号化されたドライブをサポートするハードウェア(より正確にはファームウェア、BIOS)がある場合は、ファームウェアを使用してディスク全体を暗号化できます。これには欠点があります。周囲にディスク暗号化をサポートするコンピュータはあまりありません。これは特定のファームウェアに接続します。さらに悪いことに、コンピュータにTPMがあり、暗号化キーがTPMにある場合は、特定のファームウェアに接続されます。ファームウェア)(ストレージ暗号化キーをバックアップしていない場合)。

オペレーティングシステムが暗号化されている場合は、オペレーティングシステムの初期部分を保存するためにディスクに暗号化されていない小さなスペースが必要です。 Linuxの一般的な構成は、単一のプレーンテキスト/bootパーティションを持ち、他のすべてのパーティションを暗号化することです。 「フルディスク暗号化」は少し間違った名前です。ボリュームは通常、ディスクではなくパーティションである「フルボリューム暗号化」を意味するためによく使用されます。フルディスク暗号化は、各ファイル(または少なくともディレクトリツリー)を個別に暗号化しないことを意味します。

Linux でディスク全体を暗号化するための標準ツールは次のとおりです。暗号化。すべての主要なディストリビューションで利用可能であり、多くのインストーラに統合されています。

答え3

はい、Grub2/bootパーティションを使用するとLUKで暗号化できます。

  • /boot/LUK暗号化パーティションのフォルダへ
  • /bootパーティションで暗号化されたLUK
  • そして、Linuxではソートされていないブロックリストをデバイスとして使用したり、rootとして使用したりすることができます(initramfsはソートされていないブロックリストに対して設定するのは非常に複雑ですが、それは可能です。編集可能な方法です)

/bootまた、複数のレイヤー(分割されている場合)を使用して、編集可能な暗号化をテストしました。

  1. /dev/sda5ディスク上の唯一の論理パーティション(MBRには2つの拡張パーティションしかありませ/boot/
  2. /dev/sda5LUKレベル1を一番上に置き、次のようにマッピングしました。/dev/mapper/level_0001
  3. /dev/mapper/level_0001上にLUKレベル2を配置し、次のようにマッピングしました。/dev/mapper/level_0002
  4. /dev/mapper/level_0002上にLUKレベル3を配置し、次のようにマッピングしました。/dev/mapper/level_0003
  5. 次に、LUKレベルを次のようにマッピング/dev/mapper/level_####します。####+1/dev/mapper/level_####+1
  6. /dev/mapper/level_3436LUKレベル3437を次にマッピングしました。/dev/mapper/level_3436
  7. 私はそれに/dev/mapper/level_3437Ext4を置き、次のようにインストールしました。/boot
  8. /boot実行後にGrub2をインストールしました。echo GRUB_CRYPTODISK_ENABLE=y >> /etc/default/grub
  9. LUKを一枚だけ/dev/sda6入れました。/

始めたとき、それぞれ32文字を超える3437の異なるパスワードを要求しました。

これは単なる概念証明であり、開始時間はひどいです。

しかし、同じことをすれば、/すべてのシステムで読み書き速度も不便ですが、少なくともLinuxは動作します。また、10,000以上のレベルをテストしました。部分的に動作し、CPUで読み取り/書き込み速度が10KiB / sに低下し(例えば、本当に悪い)、起動に一日かかり、オンラインアクセス(サーフィンなど)を実行している間にアプリケーションが動作する傾向があります。ディスクのタイムアウトが原因で競合が発生します。 。

したがって、レベル3〜4 LUK、たぶん10レベルを入れることができます。これは、CPUとCPU対ディスク、3Dレンダリングと大規模なデータスクランブリングなどの使用方法によって大きく異なります。

PD:LUKの各レベルでさまざまなハッシュ関数とアルゴリズムを使用することも、--iter-time=#約10,000の値を使用してマウント時間を長くすることもできます。プリブート時間は30秒に近いです。

関連情報