Рейтинг:1

Является ли избыточным добавление дополнительной контрольной суммы или CRC в TCP-пакеты, чтобы получатель мог проверить, совпадают ли данные с отправленными?

флаг cn

Поскольку TCP содержит контрольную сумму, а стек TCP/IP обнаружит поврежденные пакеты, не будет ли излишним добавлять дополнительный контрольная сумма или CRC в TCP-пакетах, чтобы получатель мог проверить, совпадают ли данные с отправленными?

Некоторые задумались над этим вопросом:

1. Очень часто встречается значение sha256 для проверки согласованности при загрузке файлов из Интернета.

2. Контрольная сумма, содержащаяся в TCP-пакетах, уже могла в большинстве случаев обнаруживать поврежденные пакеты.

3. Протокол Modbus для TCP отбросил CRC, который используется протоколом Modubs для последовательного соединения, поскольку в TCP-пакетах уже есть контрольная сумма.

Итак, я действительно запутался сейчас. Может ли кто-нибудь пролить свет на этот вопрос?

ДОБАВЛЕН: После того как погуглил, вопрос действительно не новый, но ответ до сих пор не ясен, есть два противоположных голоса по этому вопросу.

Для получения подробной информации см. эти:

Проверка CRC выполняется автоматически на Tcp/IP?

Могут ли пакеты, отправленные с использованием TCP, когда-либо приходить с разными данными?

флаг us
существующая контрольная сумма обнаружит большинство ошибок. HMAC, вероятно, является лучшим подходом, если вы беспокоитесь о подделке данных.
John avatar
флаг cn
@Jasen Почему HMAC отличается от контрольной суммы CRC или BSD?
флаг us
hmac криптографически безопасен, поэтому, если вы беспокоитесь о том, что кто-то посередине испортит ваши сообщения, HMAC предотвратит это.
Рейтинг:2
флаг br

Контрольная сумма SHA используется для проверки целостности, т. е. того, что данные не были намеренно изменены, а CRC предназначена для защиты от битовых ошибок.

CRC нельзя использовать для защиты от несанкционированного доступа, потому что его можно тривиально пересчитать после модификации данных.

Контрольная сумма TCP еще проще, чем CRC, поэтому ее наличие в наши дни является скорее формальностью.Большинство протоколов уровня канала имеют свои собственные контрольные суммы или коды исправления ошибок, поэтому битовые ошибки стали маловероятными, но раньше они были обычным явлением для каналов RS-232.

Сама по себе контрольная сумма SHA не обеспечивает защиты, потому что ее тоже нужно передавать, но если вы можете установить безопасный канал для контрольной суммы, можно использовать небезопасный канал для массива данных, а затем сверять его с контрольной суммой SHA, и быть разумно уверенным, что данные не были подделаны.

John avatar
флаг cn
Благодарим Вас за разъяснения. «CRC нельзя использовать для защиты от несанкционированного доступа, потому что его можно тривиально пересчитать после изменения данных». Почему нельзя было тривиально пересчитать контрольную сумму SHA после изменения данных?
флаг br
@Джон, извини, это было неправильно. Можно вычислить данные, соответствующие определенной CRC, но невозможно вычислить данные, соответствующие определенной сумме SHA.
John avatar
флаг cn
***Потому что*** **вероятность** **коллизии** для CRC **намного, намного** выше, чем для SHA. Могу ли я так думать? Я прав?
флаг br
@John, CRC обычно короче, но CRC с 256 битами все равно не будет защищенным от несанкционированного доступа, потому что алгоритм можно обратить.
Michael Hampton avatar
флаг cz
@John Протокол уровня канала - это что-то вроде Ethernet, который уже имеет 32-битный CRC.
John avatar
флаг cn
@SimonRichter Как вы говорите, контрольная сумма TCP даже проще, чем CRC, поэтому ее присутствие в наши дни является скорее формальностью, тогда как протокол Modbus для TCP отбрасывает сегмент CRC, который используется протоколом Modubs для последовательного соединения из-за наличия уже является контрольной суммой в TCP-пакетах. Как думаете об этом?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.