web-dev-qa-db-ja.com

VeraCryptとLUKSで暗号化されたボリュームは、データの破損に対してどの程度回復力がありますか?

質問の一部は回答されましたが、それでも私が正確に探しているものではありません。 Update 1ダウンベアを参照してください

VeraCryptとLUKSを使用して一部のファイルシステムを暗号化することを計画していますが、単一の問題が発生した場合、パーティションを再度マウントできないため、内部に格納されているすべてのデータが失われるのではないかと心配しています。 (セクター/ブロックの損傷、書き込み操作中の電源障害、ファイルシステムエラーなどによる)

また、VeraCryptはTrueCryptの修復ツールをフォークしたかもしれませんが、私はそれを当てにして実際のケースについて詳しく調べていません。

RAIDとバックアップ/ボールトについても知っていますが、それは私が探しているものではありません。

だから問題は:VeraCryptとLUKSで暗号化されたパーティション自体はどのように回復力があるか?

更新1

私の質問は、マスターキー、メタデータ、またはヘッダーを保存することではなく、暗号化されたパーティションとそのデータの復元力についてです。この問題は、7Zipの堅固なアーカイブに似ています。1つのビットが途中で破損していると、アーカイブ全体が失われます。

暗号化されたパーティションは脆弱になりますか? (マスターキー、メタデータ、ヘッダーを除く)

PS:私がすぐに答えない場合は申し訳ありませんが、私は世界中で働いて旅行しているため、この投稿に関連しています-そして私はしばしば時間を節約するビジネスに直面しています。しかし、私は間違いなく確かに返答します。

21
X.LINK

提供されたすべての回答のおかげで、最終的な回答は100%完了です。

最近は時間がないので、後で「自分の」回答を編集します。ここでの回答はすべて役に立ちますので、これは彼らが言ったことの要約と私の調査結果にすぎません。

とにかく、これは私が遭遇した多くの混乱を明らかにする私の発見の1つであり、それは主に懸念しています...それは過度にそして誤って使用されている用語であるため、ブロックが何を意味するのか:

https://sockpuppet.org/blog/2014/04/30/you-dont-want-xts/

また、ここで物事について話す「標準的な」方法が見つかり、「ブロック」の混乱を回避できます。

https://superuser.com/questions/1176839/what-are-every-possible-names-of-hard-drives-structure-parts

簡単に言うと、ワード「400」を含む暗号化ブロックを「800」に変更できます。つまり、暗号化されたブロックレベルのレイヤーは、「これは通常のファイルシステムのように機能する」(つまり、Veracrypt FAQ)とは考えず、完全に非ソリッドです。

また、2か月前にそのリンクを見つけたはずです。

https://unix.stackexchange.com/questions/321488/full-image-of-internal-hdd-drive-dd-dd-rescue-with-truecrypt-bad-sectors/

VeraCryptはTrueCryptのフォークなので、確実に同じように機能します。

PS:

追加の回答は引き続き歓迎され、私の「自分の」回答に追加されます。

0
X.LINK

実際には、暗号化を使用しない場合と同じように、復元力がありますマスターキーとメタデータをバックアップするが適切である限り。

メタデータとは別に、破損は破損ビットのブロックにのみ影響します。ほとんどの場合、そのビットは16バイトです。

データが破損するほとんどの状況で、キーとツール(パスワードやVeracrypt/LUKSなど)を使用すると、暗号化ディスクを日常的に使用する場合と同じように、非暗号化ディスクと同じアクセスができます。暗号化は、通常よりも追加のステップ(暗号化されたパーティションを開く)を追加するだけです。したがって、この場合は、暗号化されていないデータと同じように動作します。

VeracryptまたはLuksでは、パスワードで暗号化されたマスターキーをディスクに保存する必要があります。このセクターに損傷を与えると、永久的なデータが失われます。これは、マスターキーバックアップ(サイズが数キロバイト)で簡単に解決できます。両方のソフトウェアで簡単に実行できるため、すべての人に強くお勧めします。

非メタデータの詳細

VeracryptとLuksはどちらも現在XTSを使用しています。このモードでは、すべてのブロックのキーが計算されます。簡略化すると、ブロックiを暗号化するには、マスターキーとブロック番号で生成されたキーを使用します。つまり、あるブロックを別のブロックから独立して暗号化します。一部の情報を破損した場合、そのブロックに制限されます。

XTSでは、ブロックをサブブロック(通常は16バイト)に分割してキーを作成し、そのサブブロックを暗号化します。つまり、ビットを変更すると、この16バイトのみが影響を受けます。

テストと同様に、Luksボリュームの1ビットを変更すると、元のファイルの16バイトが意味不明に変更されますが、他のファイルは変更されません。 7Zipファイルでは、すべてのバイトがチェーンされるストリームメソッドを使用しているため、1バイトの変更が残りのすべてのバイトに影響します。これはここでは当てはまりません。

暗号化されたデータだけを比較してプレーンテキストを変更するときと場所を16バイトの精度で把握できるため、これを問題と考える人もいます。

これに関するより興味深い情報はこれらのリンクで見つけることができます:

https://crypto.stackexchange.com/questions/6185/what-is-a-tweakable-block-cipher

https://security.stackexchange.com/questions/39306/how-secure-is-ubuntus-default-full-disk-encryption

https://en.wikipedia.org/wiki/Disk_encryption_theory

マスターキーの詳細

LUKS

LUKSには、パーティション(またはディスク)の先頭にメタデータを含むいくつかのセクターがあり、暗号化方法、その他のパラメーター、および8つのキースロットが格納されています。ディスクの暗号化と復号化には、LUKSコンテナーの作成時に生成される大きな乱数であるMaster Keyを使用します。それを保存するために、パスワードで暗号化ハッシュ関数を何度も繰り返し、そのスロットの特定のキーを生成することにより、マスターキーをパスワードで暗号化します。同じディスクに8つの異なるパスワードを設定でき、それぞれがスロットの異なるパスワードでマスターキーを暗号化します。パスワードを変更するときは、マスターキーを暗号化するのと同じくらい簡単で、すべてのパーティションを変更する必要はありません。

したがって、このスロットとメタデータが破損している場合、暗号化解除に実際に使用されているマスターキーを復元できず、ディスク上のすべてのデータが失われます。これは、すべてのデータをすばやく破棄する簡単な方法です。ただし、ボリュームヘッダーのバックアップがあれば、簡単に復元できます。

以下は、LUKSのコピーですFAQ https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions#6-backup-and-data-recovery)から抽出されたバックアップについて

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%20Men

バックアップキーに関するセキュリティの考慮事項

たとえば、漏えいしたパスワードがあり、ボリュームのパスワードを新しく強力で安全なパスワードに変更した場合、バックアップにアクセスできるユーザーは、古いパスワードでファイルを復号化できます。バックアップは基本的に、(古い)パスワードで暗号化されたマスターキーです。したがって、パスワードを変更するときは、新しいバックアップを作成して古いバックアップを破棄する必要もあります。そして、データを永久に破壊することは非常にトリックです。

そのパスワードで持っているすべてのバックアップについては、そのパスワードでデータを復号化する可能な方法です。これは、Veracryptで使用できます。たとえば、「企業のような」「ユニバーサルパスワード」を使用して、それをバックアップし、別のパスワードに変更します。 IT部門です。誰かがパスワードを紛失しても、そのボリュームへのアクセスを回復できます(マスターパスワードと考えてください。ただし、以前のマスターキーと混同しないでください)。

最終的な考え(TL; DR)

マスターキーで特定のセクターを損傷する可能性は、完全なディスク障害が発生する可能性よりも低くなります。したがって、このデータが重要な場合は、ボリュームヘッダー(マスターキー)だけではなく、バックアップを作成してください。

そして、データの破損はほとんど(16バイト)広がりません。その結果、ほとんどの用途に受け入れられます。

パーティションまたはディスクの中央にある不良ブロックは、そのブロックにのみ影響します。また、セクター内の数ビットのエラーはそのセクターに限定されており、512バイトのセクターにはまったく影響しません。

更新(23/01/2017):OPコメントに基づいて詳細情報を追加します。

15
Allan Deamon

VeraCrypt/TrueCryptコンテナーの復元力に関するいくつかの情報を以下にまとめました。

から Veracryptデータ破損

TC/VCは、ボリュームヘッダーをボリュームの最初と最後の2か所に格納します。最初のものがメインで最後のがバックアップ用です。ドライブの一部が損傷している場合が多いため、このメカニズムは通常、ドライブの一部が損傷または破損している場合のアクセスを可能にするのに十分です。ドライブの最初と最後の両方に損傷が発生した場合、ドライブはほぼ確実に死んでいます。

ドライブが破損または破損した場合、暗号化を使用しない場合と同じデータ損失が発生することに注意してください。これは、ボリュームをマウントできる場合でも、読み取られたデータが破損している可能性があることを意味します。暗号化はデータの破損から保護されないため、常にデータのバックアップについて検討してください。

VeraCrypt FAQ から:

VeraCryptボリュームの一部が破損するとどうなりますか?

暗号化されたデータでは、通常、1つの破損ビットにより、それが発生した暗号文ブロック全体が破損します。 VeraCryptで使用される暗号文ブロックサイズは16バイト(128ビット)です。 VeraCryptが使用する操作モードにより、ブロック内でデータの破損が発生しても、残りのブロックは影響を受けません。

VeraCryptボリュームの暗号化されたファイルシステムが破損した場合はどうすればよいですか?

VeraCryptボリューム内のファイルシステムは、通常の暗号化されていないファイルシステムと同じように破損する可能性があります。その場合は、オペレーティングシステムに付属のファイルシステム修復ツールを使用して修正できます。 Windowsでは、「chkdsk」ツールです。 VeraCryptは、VeraCryptボリュームでこのツールを使用する簡単な方法を提供します。メインのVeraCryptウィンドウ(ドライブリスト内)でマウントされたボリュームを右クリックし、コンテキストメニューから[ファイルシステムの修復]を選択します。

その場合、小さなデータの破損はローカルにのみ影響し、コンテナー全体を破壊することはありません。ただし、リカバリはより複雑になる可能性があるため、ボリューム/パーティション全体、特にシステムドライブを暗号化しないことをお勧めします。特にボリュームヘッダーについては、適切なバックアップを取ってください。また、実際のディスクまたはフォルダーと同様に、ディスク/ファイルヘッダーが破損すると、データの回復が困難になり、高度なユーティリティが必要になる場合があります。

LUKSにはディスク上に2番目のヘッダーがないので、バックアップを保持することについてさらに注意する必要があります。

5
harrymc