ベース回答、明らかにdm-verityはブロックにアクセスしようとするとブロックをチェックしようとします。ブロックが検証されると、ルートハッシュを検証するためにハッシュツリーに上がります。
ただ、アクセス中のブロックのハッシュを検証することで終わればいいのでしょうか?
答えによれば、dm-verityハッシュツリー(メークルツリー)には、実際には各リーフの各ブロックのハッシュ値が含まれていることがわかります。リーフ内のすべてのブロックのハッシュがある場合、アクセスされるブロックだけではなく、すべてのブロックアクセスに対してブロックデバイス全体を確認する必要があるのはなぜですか。
答え1
今やるべきことから始めましょう。ブロックデバイス(画像)が予想されるデバイスであるかどうかを暗号化方式で確認します。
これを行うには、ディスク上のすべてのビットを暗号化して署名する必要があります。 1ビットが変更されると、それを検出する方法が必要です。
したがって、ブロックデバイスを同じ長さのチャンクに分割し、各チャンクのチェックサムを計算するだけでは十分ではありません。ファイルシステムイメージを変更したい場合は、後でフィットするようにチェックサムも明確に変更する必要があります。
代わりにチェックサムに署名する必要があります(作業が定義されていると仮定すると、今日私たちが知っている暗号化数学を使用して検証するのに長い時間がかかるため、ブロック全体に署名するよりも優れています)。
したがって、各チェックサムを個別に署名するか、すべてのチェックサムのチェックサムを計算して署名することができます。
したがって、後者を選択します。
ただし、実際に署名された1つのルートハッシュを提供するために、そのブロックのハッシュを他のハッシュと組み合わせるのではなく、単一のブロックのみをチェックする場合は、ステータスブロックのデバイスイメージを変更する方法に戻ります。そして明らかにそのブロックのハッシュも修正されます。署名されていないので誰も見つかりません。