Существует контейнер, целостность которого необходимо проверить, а затем проанализировать:
------------------------------------------------------------------------------------
| Obj. count | 1_Obj.size | 1_Obj. data | ... | N_Obj. size | N_Obj. data |
------------------------------------------------------------------------------------
Он состоит из 2N + 1 элементов, где:
-один общий заголовок (количество объектов)
-N объектов. Каждый объект состоит из заголовка (размера объекта) и данных
. Для проверки целостности у меня есть sh контейнер с sha256 га sh, а затем сравнение ha sh с ожидаемым.
I Посмотрите, как можно проверить целостность двумя способами:
1. Одновременно хэшируйте весь контейнер, затем сравните значение ha sh с ожидаемым. После того, как мы смогли разобрать контейнер.
2. Использовать потоковый подход (проверять целостность и анализ одновременно): каждый элемент контейнера хэшируется отдельно с помощью процедуры SHA256_Update (). Затем вызовите SHA256_Final (), чтобы получить окончательный результат ha sh. Использование этого подхода требует анализа внутренних элементов контейнера (общий заголовок и заголовки каждого объекта). Но поскольку злоумышленник может скомпрометировать заголовки контейнера, мы не можем быть уверены в правильности считываемых данных, пока не закончим sh проверку целостности. Похоже, такой подход может быть проблемой безопасности.
Первый подход, похоже, будет работать медленнее, чем второй, но немного безопасен. Секунда кажется быстрее, но выглядит опасно, потому что мы получаем доступ к не проверенным внутренним элементам контейнера.
Что кто-нибудь также думает по этому поводу? Существуют ли какие-либо общие правила, методы или что-то еще, что описывает, как целостность должна проверяться в данном конкретном случае. Второй подход опасен с точки зрения безопасности? Если да, то как мы можем это аргументировать?