実際には、マスターキーとメタデータを適切にバックアップしていれば、暗号化を使用してもほとんど使用しなくても回復力があります。
メタデータとは別に、破損は破損したビットのブロックだけに影響し、ほとんどの場合は16バイトになります。
キーやツール(パスワードやVeracrypt / LUKSなど)を使用したデータ破損のほとんどの状況では、通常の暗号化ディスクの使用と同じように、非暗号化ディスクと同じアクセス権があります。暗号化は、通常よりも追加の手順(暗号化されたパーティションを開く)のみを追加します。したがって、この場合、暗号化されていないデータのように動作します。
VeracryptまたはLuksでは、パスワードで暗号化されたマスターキーをディスクに保存する必要があります。このセクターを損傷すると、永続的なデータが失われます。これは、両方のソフトウェアで簡単に実行できるマスターキーバックアップ(サイズが数キロバイト)で簡単に解決できるため、すべてのユーザーに強くお勧めします。
非メタデータに関する詳細
VeracryptとLuksは現在XTSを使用しています。このモードでは、すべてのブロックのキーが計算されます。簡略化すると、ブロックを暗号化i
するには、マスターキーとブロック番号で生成されたキーを使用します。したがって、あるブロックを別のブロックから独立して暗号化します。一部の情報が破損した場合、そのブロックに制限されます。
XTSでは、ブロックをサブブロック(通常16バイト)に分割し、キーを作成して、そのサブブロックを暗号化します。つまり、少し変更すると、この16バイトのみが影響を受けます。
テストとして、Luksボリュームの1ビットを変更すると、元のファイルの16バイトが意味不明に変更されますが、他の496は変更されません。7zipファイルでは、すべてのバイトがチェーンされているストリームメソッドを使用するため、1バイトの変更が残りのすべてに影響します。これはここでは当てはまりません。
暗号化されたデータだけを比較してプレーンテキストを変更するときと場所を16バイトの精度で知ることができるように、これを問題と考える人もいます。
これに関するより興味深い情報はこれらのリンクで見つけることができます:
/crypto/6185/what-is-a-tweakable-block-cipher
/security/39306/how-secure-is-ubuntus-default-full-disk-encryption
https://en.wikipedia.org/wiki/Disk_encryption_theory
マスターキーの詳細
ルークス
LUKSのパーティション(またはディスク)の先頭には、メタデータ、暗号化方法、その他のパラメーター、8つのキースロットが格納されたいくつかのセクターがあります。ディスクの暗号化と復号化には、LUKSコンテナの作成時に生成される大きな乱数であるマスターキーを使用します。保存するには、パスワードで暗号化ハッシュ関数を何度も繰り返し、そのスロットに特定のキーを生成することにより、パスワードでマスターキーを暗号化します。同じディスクに対して8つの異なるパスワードを使用できます。各パスワードは、スロット内の異なるパスワードでマスターキーを暗号化します。パスワードを変更すると、すべてのパーティションを変更するのではなく、マスターキーを暗号化するのと同じくらい簡単になります。
そのため、このスロットとメタデータが破損すると、復号化に実際に使用されるマスターキーを回復できず、ディスク上のすべてのデータが失われます。これは、すべてのデータを迅速に破壊する簡単な方法です。ただし、ボリュームヘッダーのバックアップがある場合は、簡単に復元できます。
以下は、https: //gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions#6-backup-and-data-recoveryから抽出されたバックアップに関するLUKS FAQのコピーです。
6.2 LUKSヘッダーをバックアップするにはどうすればよいですか?
LUKSパーティションの先頭から適切なバイト数をコピーすることもできますが、最良の方法は、cryptsetupのコマンドオプション「luksHeaderBackup」を使用することです。これにより、LUKSパーティションの作成で非標準のパラメーターが使用された場合のエラーからも保護されます。例:
cryptsetup luksHeaderBackup --header-backup-file <file> <device>
復元するには、逆のコマンドを使用します、すなわち
cryptsetup luksHeaderRestore --header-backup-file <file> <device>
復元するヘッダーが不明な場合は、まず現在のヘッダーのバックアップを作成してください!次のように、デタッチされたヘッダーに--headerオプションを使用することにより、ヘッダーファイルを復元せずにテストすることもできます。
cryptsetup --header <file> luksOpen <device> </dev/mapper/ -name>
それがあなたのキースロットのロックを解除するなら、あなたは良いです。もう一度デバイスを閉じることを忘れないでください。
状況によっては(ヘッダーが破損している)、これは失敗します。次に、次の手順を使用します。
最初にマスターキーのサイズを決定します。
cryptsetup luksDump <device>
フォームの行を与えます
MK bits: <bits>
古いデフォルトでは256、新しいデフォルトでは512に等しいビットを使用します。256ビットは、ヘッダーの合計サイズが1'052'672バイトに等しく、512ビットが2MiBの1つです。(項目6.12も参照)luksDumpが失敗した場合、2MiBを想定しますが、それを復元する場合は、ファイルシステムの最初の1M程度を復元することもできることに注意してください。ヘッダーサイズを特定できなかった場合は、ファイルシステムを変更しないでください!これにより、大きすぎるヘッダーバックアップを復元しても安全です。
次に、ヘッダーをファイルにダンプします。それを行うには多くの方法がありますが、私は次のことを好みます:
head -c 1052672 <device> > header_backup.dmp
または
head -c 2M <device> > header_backup.dmp
2MiBヘッダー用。ダンプファイルのサイズを確認してください。このようなバックアップを復元するには、luksHeaderRestoreを試すか、より基本的な
cat header_backup.dmp > <device>
ベラクリプト
VeracryptはLUKSに似ています。Truecryptを使用していたので、私はそれを使用していませんが、一般的な考えは保持されます。
Veracryptにはキースロットが1つしかないため、同時に複数のパスワードを持つことはできません。ただし、隠しボリュームを作成することもできます。パーティション(またはディスクやファイル)の最後にメタデータが保存されます。隠しボリュームには異なるマスターキーがあり、パーティションの終わりを重複スペースとして使用します。バックアップする必要があるという考え方は同じです。これはで行うことができるTools -> Backup Volume Header
とTools -> Restore Volume Header
。システムの暗号化では、損傷が発生した場合にTruecryptローダーとキーを回復するキーバックアップを備えた起動可能なディスクを作成していました。それは何かを暗号化する前に行われ、私が知る限り、Veracryptは同じ方法を続けます。
詳細については、このリンクhttps://veracrypt.codeplex.com/wikipage?title=Program%20Menuを参照してください。
バックアップキーに関するセキュリティの考慮事項
たとえば、漏洩したパスワードがあり、ボリュームパスワードを新しく強力で安全なパスワードに変更した場合、バックアップにアクセスできるユーザーは、古いパスワードでファイルを解読できます。バックアップは、基本的に(古い)パスワードで暗号化されたマスターキーです。そのため、パスワードを変更するときは、新しいバックアップを作成して古いバックアップを破棄する必要もあります。また、データを完全に破壊することは非常に難しい場合があります。
そのパスワードであなたが持っているすべてのバックアップに対して、そのパスワードでデータを解読する可能な方法です。たとえば、これはVeracryptで使用できます。たとえば、「Universal Password」(企業の場合)を使用してバックアップし、別のパスワードに変更します。だからIT部門。誰かがパスワードを紛失した場合でも、そのボリュームへのアクセスを回復できます(マスターパスワードと考えますが、以前のマスターキーと混同しないでください)。
最終的な考え(TL; DR)
マスターキーで特定のセクターが破損する可能性は、完全なディスク障害が発生するよりも少なくなります。したがって、このデータが重要な場合は、ボリュームヘッダー(マスターキー)だけではなく、バックアップを作成する必要があります。
また、データの破損はほとんど拡散せず(16バイト)、ほとんどの用途で受け入れられます。
そのため、パーティションまたはディスクの中央の不良ブロックは、そのブロックのみに影響します。また、セクタ内の数ビットエラーはそのセクタに制限されており、512バイトのセクタ全体には影響しません。
更新(2017年1月23日):OPコメントに基づいて情報を追加します。