Перейти к содержанию
    

Простой вопрос по защите данных с помощью CRC

Поле адреса устройства считается при подсчете CRC7, но реально не передается.

 

Это как?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вместо

addr,byte1,byte2,byte3,byte4,crc

передаётся

byte1,byte2,byte3,byte4,crc

 

при сравнении на приёме вместо addr подставляется свой адрес девайса, который девайс ессно знает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вместо

addr,byte1,byte2,byte3,byte4,crc

передаётся

byte1,byte2,byte3,byte4,crc

 

при сравнении на приёме вместо addr подставляется свой адрес девайса, который девайс ессно знает.

 

 

Ваше объяснение ничего не объясняет. Это просто некорректная переформулировка некорректного первоначального описания.

 

Устройство что, на шине одно, если "адрес не передается"? Если действительно так - тогда нет никакой разницы в вероятности пропуска ошибки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Описание вполне ясное. Все всё поняли, кроме Oldring-а :)

 

Устройств много. А передавать адрес не обязательно, т.к. в алгоритмах девайсов с неправильным адресом CRC все-равно не совпадёт и пакет не будет "принят". Только у девайса с правильным адресом CRC совпадёт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Устройств много. А передавать адрес не обязательно, т.к. в алгоритмах девайсов с неправильным адресом CRC все-равно не совпадёт и пакет не будет "принят". Только у девайса с правильным адресом CRC совпадёт.

Тогда надо значительно увеличивать кодовое расстояние.

Вот с википедии характеристика CRC8:

MaxLen: 15 байт (127 бит) - обнаружение

одинарных, двойных, тройных и всех нечетных ошибок

CRC7 будет соответственно обнаруживать одинарные, двойные и тройные ошибки ВО ВСЁМ сообщении.

То есть, максимально имеем 3 бита на адрес, и при этом любая дополнительная ошибка может перевести сообщение в разряд "правильных" для неправильного адреса.

В общем, подход весьма скользкий.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

CRC7 будет соответственно обнаруживать одинарные, двойные и тройные ошибки ВО ВСЁМ сообщении.

То есть, максимально имеем 3 бита на адрес, и при этом любая дополнительная ошибка может перевести сообщение в разряд "правильных" для неправильного адреса.

В общем, подход весьма скользкий.

Он "скользкий" так же как и сама CRC, когда незнакомый с ней человек с ней знакомится.

Там всё просчитывается. Не на супер компутере, а скорее на калькуляторе.

Непереданный байт адреса не является ошибкой. Потому как можно взять 8 бит адреса и так работать. Что уже противоречит ограничению в 3 бита.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Конкретные параметры топикстартер не указал, поэтому принимаю вариант предложеный GetSmart c CRC8.

Задача: сравнить вероятности необнаруживаемого искажения посылок 6 байт и 5 байт для CRC8.

Вероятность искажения одного бита в канале связи принимаем p=10-3. Тогда:

Для 48 бит p(crc8)=1.4*10-9

Для 40 бит p(crc8)=6.8*10-10

Вывод: если адрес не передавать, то надежность будет выше в два раза.

PS. Лень сейчас модельку переделать для CRC7, поэтому привожу готовое для CRC8.

Порядок цифр примерно тот-же.

Изменено пользователем i-mir

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Описание вполне ясное. Все всё поняли, кроме Oldring-а :)

 

Устройств много. А передавать адрес не обязательно, т.к. в алгоритмах девайсов с неправильным адресом CRC все-равно не совпадёт и пакет не будет "принят". Только у девайса с правильным адресом CRC совпадёт.

 

Если устройств много, тогда передавать адрес как раз обязательно. Иначе устройства не поймут, к кому пакет адресован. И принимать обязательно. Но при расчете CRC в устройстве эти биты известны заранее. Дело нt в том, понял я или нет, дело в чёткости формулировок, необходимой для анализа.

 

Потому что если адрес передается, то ошибки в нём точно так же приводят к неправильному приёму пакета. А дальше многое зависит от количества устройств на шине и распределения их адресов. В крайнем случае 128 устройств на шине, пакеты к которым посылаются с равной вероятностью, всё сводится просто к оценке вероятности пропуска ошибки в пакете длиной 39 бит. На самом деле, не сильно выше, чем для пакета, длиной 32 бита, особенно, если ошибки приема битов в блоке могут коррелировать. Если же устройств сильно меньше 128, то дополнительным выбором хорошего распределения их адресов можно дополнительно снизить вероятность ошибочного приема адреса.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...Иначе устройства не поймут, к кому пакет адресован.

...Дело на в том, понял я или нет, дело в чёткости формулировок, необходимой для анализа.

Это не верно.

Чёткая формулировка - при отсутсвии искажений в канале связи передавать адрес не обязательно. Устройства 100% поймут кому адресован пакет. CRC содержит адрес девайса точно так же как простейшая контрольная сумма например в HEX файле, если из HEX строки убрать первый байт.

 

При наличии ошибок вопрос стоит только в их кол-ве, при котором пакеты будут правильно приниматься. Причём относительно ситуации с присутствием адреса в пакете, то бишь классическим свойствам CRC.

Изменено пользователем GetSmart

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чёткая формулировка - при отсутсвии искажений в канале связи передавать адрес не обязательно. Устройства 100% поймут кому адресован пакет.

При гарантированном отсутствии помех и CRC считать смысла нет. Подал адрес, и всё!

В том-то и задача, что топикстартер хочет и от помех перестраховаться, и длину передачи уменьшить. Я так не делал бы. Чем более избыточный код, тем больше ошибок будет обнаружено.

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

Что, если из-за многобитовой ошибки устройство посчитает своим пакет, предназначенный не ему?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это не верно.

Чёткая формулировка - при отсутсвии искажений в канале связи передавать адрес не обязательно. Устройства 100% поймут кому адресован пакет.

 

Тогда я вас совершенно не понимаю.

Два устройства сидят на шине. Адрес не передается. Как устройства понимают, кому адресован пакет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как устройства понимают, кому адресован пакет?

Через (квази) обратное преобразование из CRC.

 

Даже ViKo всё понял и задал правильный вопрос.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Непереданный байт адреса не является ошибкой. Потому как можно взять 8 бит адреса и так работать. Что уже противоречит ограничению в 3 бита.

Если адрес передаваемого сообщения отличается от адреса приёмника более чем в 3 битах, CRC не выявит ошибки.

Вот это я хотел сказать.

Отсюда и ограничение в 3 бита адреса, не считая дополнительных ошибок.

Или мы опять друг друга не поняли.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что, если из-за многобитовой ошибки устройство посчитает своим пакет, предназначенный не ему?

Ровно та же ситуация и с обычной CRC. Вопрос только в относительности надёжности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Даже ViKo всё понял...

почему "даже"?

 

Ровно та же ситуация и с обычной CRC. Вопрос только в относительности надёжности.

Не та же ситуация. Я чуть выше подкорректировал свой ответ. Зависит от длины сообщения.

 

Здесь еще важно, что опаснее - передать сообщение не тому адресату, или передать ошибочное сообщение тому, кому нужно. Первое мне видится более тяжелым. Поэтому байт адреса я оставил бы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...