dm-verity에서 소금을 사용하는 이유는 무엇인가요?

dm-verity에서 소금을 사용하는 이유는 무엇인가요?

dm-verity에는 데이터 저장 장치를 확인하는 데 사용되는 루트 해시가 있습니다. 실행하면 생성됩니다 veritysetup. 그러나 루트 해시 외에도 소금도 제공됩니다. 왜?

답변1

솔트가 없으면 모든 데이터 블록은 항상 동일한 블록 해시를 생성합니다. 이는 해당 블록에 대한 해시 충돌이 발견되면 사용할 수 있음을 의미합니다. 블록 크기가 고정되어 있다는 점을 고려하면 이러한 가능성은 낮지만 차등 업데이트를 사용하여 업데이트되는 장기 파티션의 경우 단일 블록이 수년 동안 변경되지 않을 수 있습니다. 솔트를 사용하면 업데이트할 때마다 솔트를 변경하여 업데이트할 때마다 모든 블록 해시가 변경되므로 이에 대해 걱정하지 않아도 됩니다.

dm-verity에서 생성된 해시 트리는 신뢰할 수 없으며 기기에서 생성되므로 이를 생성하는 데 필요한 모든 것은 솔트와 데이터입니다. 최종 루트 노드는 제공된 루트 해시와 일치해야 합니다.

(Fwiw, dm-verity의 원래 버전에는 솔트 지원이 부족했습니다.)

답변2

솔트는 장치에 저장되는 다이제스트를 생성할 때 해시 값과 결합됩니다. 해시는 (주어진 콘텐츠에 대해) 동일하므로 솔트는 다이제스트를 다르게 만드는 방법입니다.

run 을 실행하면 dm-verity해시 목록과 비교되므로 해시를 저장된 다이제스트와 일치시키려면 솔트가 필요합니다.

추가 자료:

관련 정보