FDE(Full Disk Encryption)はどのように素早く動作しますか?


12

Ubuntuのフルディスク暗号化が内部でどのように機能するのか興味があります。以下に例を示します。

次の文字列をすべてのディスクのコンテンツと見なします。

hello world

ある種の暗号化方法を適用すると、次のようになります
(この例では、A→B; B→C ...のように、+ 1のシフトでCaesar暗号を使用しました)

ifmmp xpsme

私が理解しているように、コンピューターの電源をオフにすると、ドライブのコンテンツは上記の文字列になります。しかし、Ubuntuをオンに戻すと、Ubuntuはhello world正常に起動するためにコンテンツを再び戻す必要があります。

私が実際に得られないのは、現実の世界ではディスクのコンテンツがはるかに多く、暗号化アルゴリズムがより複雑であり、コンピューターが数秒ですべてを完全に暗号化/復号化することが難しいことです(起動またはシャットダウンに時間がかかりません)。

これはどのように可能ですか?

回答:


10

AES / Rijndael Encryptionは一般的にどのように機能しますか?

このページには、簡単に理解できるように見える高度な暗号化標準(AES)のスティック図ガイドがありますが、50以上の画像のように見えます。たとえば、次の2つです。

ここに画像の説明を入力してください

そして

ここに画像の説明を入力してください

ここですべてを複製するのはあまりにも多すぎますが、オールインワンイメージが必要な場合は次のようになります。

ここに画像の説明を入力してください


または、http://www.password-depot.com/know-how/blowfish_and_rijndael.htmでより簡潔な説明があります。

Rijndael暗号化方式は、バイトのxor操作の置換、変更、および実行に基づいています。メソッドは次のようになります。

  • Rijndaelは128ビットキーから、それぞれ128ビットの10個のキーを生成します。
  • これらのキーは4x4配列に配置されます。
  • プレーンテキストも4x4配列(各128ビット)に分割されます。
  • 128ビットのプレーンテキストアイテムはそれぞれ10ラウンドで処理されます(128ビットキーの場合は10ラウンド、192の場合は12ラウンド、256の場合は14ラウンド)。
  • 10回目のラウンドの後、コードが生成されます。
  • 各単一バイトはSボックスで置換され、GF(2 8)の逆数に置き換えられます。
  • 次に、ビット単位のモジュロ2行列が適用され、63のXOR演算が続きます。
  • 行列の行は周期的にソートされます。
  • 行列乗算の列は、GF(2 8)で交換されます。
  • 各ラウンドのサブキーは、XOR演算の対象となります。

Rijndaelが異なるサブキーで複数回実行されると、この暗号化方式のセキュリティレベルが向上します。


Ubuntuのフルディスク暗号化はどのように機能しますか?

私は信じている、それはLUKS(AESとデフォルト設定)でパーティションを暗号化することで動作し、その後、LVM(のように、その上にいくつかのボリュームを置く/パスフレーズを入力した後、スワップ、)、およびブート時に復号化し、マウントして。また、パスフレーズを要求するのに十分なブートを行う通常の(暗号化されていない)ブートパーティションがあります。

the_simple_computerのUbuntuでのフルディスク暗号化ガイド(2015年6月28日に更新)では、デフォルトインストーラーの暗号化の仕組みについて説明し、デュアルブートが機能しない(少なくともすぐに使える)ドライブについて言及していますMBRを使用する必要があります。「コンピューターにUEFIがある場合、ディストリビューションはレガシーBIOSモードでインストールされるため、セキュアブートを使用できません」および「システムRAM(多くの場合、不要)と同等のスワップサイズを提供します。使用されている暗号化の種類の上に選択肢がありません。


暗号化の速度はどれくらいですか?

実行cryptsetup benchmarkすると、テストが実行され、暗号化だけでどれだけ速くなるかがわかります(現在の)デフォルトのaes-xts行に注意してください:

#  Algorithm | Key |  Encryption |  Decryption
     aes-xts   256b    150.0 MiB/s    145.0 MiB/s

ハードドライブの平均読み取り速度は80〜160 MB / sである可能性があるため、通常の読み取りよりも長くなることはありません。詳細を読むためのハードドライブ。

SSD はおそらく 200〜550MB / sの高速である可能性があるため、気づくかもしれません。しかし、ランダム読み取りは遅くなる可能性があり、使用後にSSDの速度が低下する可能性があることを読みました(ドライブが完全にいっぱいになり、セクターの「消去」を開始する必要がある場合)。

コンピューターは、わずか数秒ですべてのドライブを完全に暗号化/復号化できます(ブートまたはシャットダウンに時間がかかりません)。

最初にすべてを解読する必要はありません。暗号化(LUKS)はデータのブロックで機能し、任意のブロックをランダムに解読でき、ドライブの暗号化されたデータとファイルシステムが見るものの間のレイヤーのように機能します。

ファイルシステムがデータのブロックを見たい場合、LUKSは最初にそのブロックを解読し、次に解読されたデータをファイルシステムに渡します。最初にドライブがデータブロックを読み取るのを待って(暗号化を使用しない場合と同じように)、その単一ブロック(または数ブロック)のデータの復号化に余分な遅延があります -復号化がドライブより速い場合ドライブが次のデータブロックを読み取る前に、復号化完了する可能性があります。

だから通常のファイルシステムのように暗号化が追加されたとき、それはどちらかのドライブ全体を読む必要はありません、それは物事をしない、ファイルを読むためにドライブ全体を読む必要はありませんたくさん遅くなります。

ハードドライブ上のデータは常に暗号化されるため、シャットダウン時にはキーを忘れない限り何もする必要はありません。


@Hewbot Qのタイトルが編集されて「こんなに早く?」(タイトルはまだあなたが求めていたものですか?)
Xen2050

3

これは少し単純化されますが、暗号化されたファイルシステム上のファイルにアクセスするプロセスを試してみます。

たとえば、暗号化されたファイルシステムの先頭にファイルテーブルがあるとします。読みたいとしましょう/foo.bar。そのため、最初に行うことは、パーティションの先頭を読み取り、それを復号化し、目的のファイルを探すことです。ファイルが0x10000000バイトから始まると言ってみましょう。そのため、読み取るには、その場所のディスクから読み取りを開始し、解読します。同様に、書き込むために、新しいコンテンツを暗号化し、その新しい場所に書き込むことができます。

うまくいけば、これがプロセスの混乱を解消するのに役立つでしょう。


1
私はこれがOPの質問に実際に答える答えだと思います-彼/彼女の誤解は、使用されているときに読み書きされるビットだけでなく、ドライブ全体を完全に暗号化/復号化する必要があるということです。
SomeoneSomewhereSupportsMonica

2

プロセッサは専用の命令セットを使用します。そのため、AES-NIが可能です。これにより、高速の暗号化と復号化が可能になり、オーバーヘッドを削減できると言えます。ここで説明するように、ハードウェア実装であるため高速です

ここでパフォーマンスへの影響について確認できますが、セキュリティを強化する価値があります。


1
さらに、ディスク上のデータは必要に応じて暗号化/復号化されるだけです。たとえば、起動時には、起動スクリプト、ユーザー情報、DM / WE実行可能ファイルなどのみが復号化されます
Nick Mertin

CPU年代の多くはないではない AESをサポートしている、とUbuntuの暗号化は、まだ彼らがした場合でも...それに動作しますが、これはまだ本当にUbuntuの暗号化がどのように動作するかの質問に答えていません
Xen2050

@shshそれから、もし私が本当に古いコンピューターを使っていたら、ハードウェアの実装がないのでFDEを使うことは不可能でしょうか?起動時とシャットダウン時にディスク全体が暗号化および復号化されることを理解する必要がありますか?
ヒューボット

@ MagikM18もしそうなら、アルゴリズムは「文字列」全体で復号化を開始する場所をどのように知るのですか?つまり、ドキュメントを開くと、それがどこにある「座標」をどのように知るのでしょうか?
ヒューボット

とにかく同じ方法で@Hewbot。基本的に、暗号化は物理ディスクとファイルシステムデーモンの間の層です。したがって、ディスクからデータを読み取るように要求すると、読み取られてから復号化されます。したがって、通常のfsの場合と同様に、最初にファイルテーブルを読み取り、ファイルの開始位置を見つけてから、そこから読み取ります。
ニックマーティン

0

現代のコンピューターは毎秒何十億もの操作を実行できるため、暗号化と復号化が高速であることは驚きではありません。

これは、コンピューターの処理速度を直感的にランク付けする方法です。

  1. メモリー(特にL1およびL2メモリー)内での計算の実行、非常に高速
  2. ローカルストレージからの読み取り速度が遅くなります(ソリッドステートディスクはハードディスクよりも高速です)
  3. ネットワークからの読み取り、さらに遅くなります。

理解すべきもう1つの重要な点は、システムを起動するためにオペレーティングシステムがハードディスク全体を復号化する必要がないことです。むしろ、オペレーティングシステムは、必要なハードディスクの部分のみをオンザフライで復号化する方法を知っており、書き込みについても同じことが言えます。

直感的には、ボトルネックがディスクであると考えているため、ディスク全体の暗号化がパフォーマンスに大きな影響を与えないことは驚くことではありません。

もちろん、これらの直感は必ずしも現実と一致するとは限りません。たとえば、実際には、フルディスク暗号化によってパフォーマンスが著しく低下する場合がありました。しかし、通常、これらは開発者が最適化の開発を数ラウンド行った後に解決されます。


1
この答えが可能な方法を見つけることができません。USB 3.0で1TBをコピーするだけで数分かかります。中間プロセス(復号化)を行う必要がある場合、FDEでコンピューターを起動するのに数分かかることがあります。
ヒューボット

@Hewbot私は答えを編集して、復号化がその場で行われることを説明しました。OSは、暗号化された1 TBのディスクの使用を開始するために1 TBのデータを読み取る必要はありません。
Flimm
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.