ハッシュオフセットで Veritysetup 検証に失敗しました。

ハッシュオフセットで Veritysetup 検証に失敗しました。

dm-verityを使用してSDカードパーティションを確認しようとしています。私がやった

veritysetup format --hash-offset=24215552 /dev/sdb4 /dev/sdb4

同じデバイスの指定されたオフセットにハッシュデバイスを作成します。

では、最初の10個のデータブロックを確認したいと思います。

veritysetup verify --hash-offset=24215552 --data-blocks=10 /dev/sdb4 /dev/sdb4 b49905b65942b0f54a2f70b09cd7bf2c8c15ce6924c7b8bae913ad8cc3f303fc

しかし、私は次のようになります。

Verification failed at position 24215552.
Verification of data area failed.

ハッシュツリーが必要な領域を検証しようとしている理由はまったくわかりません。検証するデータブロックの数を指定するためです(私の考えでは、10x1024Bytesのオフセットで検証を停止する必要があります)。助けてくれてありがとう。

答え1

最初のコマンド(ハッシュツリー作成時)でデータブロック数を指定すると機能します。

ハッシュするブロック数を指定しないと、verityはデバイス全体をハッシュするようです。その後、指定されたオフセットにハッシュツリーを書き込むと、ディスクのこの部分のブロックが明らかに変更されます。したがって、検証時に以前に計算されたハッシュ値には多くのデータが含まれなくなります。

では、検証時に「data-blocks」オプションが指定されているにもかかわらず、このセクションを確認するのはなぜですか?ドキュメントによると、このオプションは検証には使用できず、ハッシュオフセットのみ使用でき、スーパーブロックは使用できません。検証するゾーンの情報は、作成時にハッシュ部分のヘッダーに保持する必要があります。

関連情報