Встраивание данных в двоичный файл, охватываемый CRC, последствия? - PullRequest
0 голосов
/ 24 мая 2018

Предположим, что следующий сценарий:

  • Существует двоичное изображение некоторого приложения для микроконтроллера (чтобы не мешать этому к проблемам формата ELF / PE, в любом случае, моя конкретная связанная проблема - это микроконтроллерпроект).
  • Это двоичное изображение защищено с помощью CRC (для обнаружения ошибок в нем, никаких проблем с криптографией).
  • Я хочу иметь раздел, который можно заменить позже (например, используязагрузчик), без влияния на CRC.

Проблема решаема, пример для CRC32 следующий:

  • Внутренний поток 1: 0x49 0xA3 0x45 0xEF => CRC32:0xA1DD6F3B
  • Двоичный 2: 0x11 0xAD 0x33 0x10 0x86 0x49 0x71 0x71 0xF6 0x22 => 0xDEAD20F7

То есть встраивание блока данных с CRC32 в другой, имеющийCRC32, тВнутренний блок можно заменить, не затрагивая внешний CRC (это относится к тому, что при выполнении вычисления CRC для блока с включенным CRC вы получаете то же «магическое значение»: 0xDEBB20E3 или дополненное, как это можно увидеть в калькуляторе CRC:0x2144DF1C).

Я думаю, что это включение не должно влиять на производительность (возможность обнаружения ошибок) CRC, ни в какой-либо части внешнего блока или внутреннего блока (если я проверял это только внешним CRC,естественно, внутренний блок, проверенный его собственным CRC, не может быть затронут), однако я не совсем уверен.

(Конечно, внутренний блок не сможет улучшить обнаружение ошибок при помощивнешний CRC, например, когда в нем происходит не обнаруживаемая неисправность внутреннего CRC, это означает, что он выдает ту же «магическую ценность», что также наносит ущерб способности внешнего CRC обнаруживать в нем ошибку)

вопрос в том, если CRC используется таким образом, являются ли части внешнего блока (или внутреннего блока, если проверены тольковнешний CRC) будет страдать от любого снижения производительности обнаружения ошибок.

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Нет.Фактически вы увеличили общую вероятность обнаружения ошибок, вставив в сообщение второй CRC.Вы можете также проверить это, чтобы видеть, есть ли ошибка только в замененном разделе.

0 голосов
/ 24 мая 2018

Зависит ли ошибка при проверке CRC, зависит от того, какие биты ввода перевернуты ошибкой, а не от исходного значения этих битов.

Поэтому проверяемые данные не имеютвлияние на способность CRC обнаруживать ошибки, если только она не предрасполагает систему передачи к возникновению ошибок определенного типа.

Это вряд ли так, и почти наверняка не будет зависеть от CRC данных,поэтому ваша схема не ухудшит обнаружение ошибок.

...