Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
Как реализовать проверку на задержку пакета
 
Как можно реализовать защиту от задержки пакета. Жду любых предложений.

Условия задачи:
1. Односторонняя связь ( т.е. имеется передатчик и приемник, пакеты могут идти только в одну сторону)
2. Нет синхронизации по времени. Время может идти как угодно.
3. Нет гарантии доставки пакета. Приемник может быть выключен на какой то период времени.
3. Промежуток между пакетами может быть большим.

Требуется:
1. Определить доставлен ли пакет без задержки.

Ситуация:
Послали зашифрованный пакет, чтобы спутник начал маневр. Спутник не получил этот пакет, но его перехватил злоумышлиник. Мы не отправляем больше пакетов ждем следующего момента. На следующий день, злоумышлиник посылает этот пакет в эфир и спутник начинает делать маневр, который нам уже не нужен. Как можно это предотвратить??

Заранее спасибо!
 
Не вдаваясь в подробности задачи,
Цитата
2. Нет синхронизации по времени. Время может идти как угодно.
противоречит
Цитата
На следующий день, злоумышлиник посылает этот пакет в эфир и спутник начинает делать маневр, который нам уже не нужен.
Т.е. ни спутник, ни вы в данных условиях не знаете, что такое «следующий день» или какой бы то ни было другой интервал времени.

Имхо, вам нужно вводить временнЫе метки или просто порядковые номера пакетов в последовательностях (а в случае с номерами еще и временнОй TTL) и учитывать их при обмене данными (а также передавать их вместе с данными). Например, как это делается в протоколе TCP.
А вашему спутнику тогда нужно уметь отслеживать эти номера и отбрасывать, как невалидные, те, что приходят вне очереди или с опозданием.
Кроме того, пакеты должны отправляться достаточно часто, чтобы правильно отсеивались все, нарушающие очередь.
Скажем, если злоумышленник решит отправить перехваченный пакет с командой через час, а вы к тому времени уже отправите N>0 пакетов, то он окажется в пролёте. И тогда «достаточно часто» – это пакет в час или чаще.
 
Цитата
disintegrator пишет:

Имхо, вам нужно вводить временнЫе метки или просто порядковые номера пакетов в последовательностях (а в случае с номерами еще и временнОй TTL) и учитывать их при обмене данными (а также передавать их вместе с данными). Например, как это делается в протоколе  TCP .

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

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

Скажем, если злоумышленник решит отправить перехваченный пакет с командой через час, а вы к тому времени уже отправите N>0 пакетов, то он окажется в пролёте. И тогда «достаточно часто» – это пакет в час или чаще.

Спасибо! Но, условиями я как раз хотел сказать, что этот вариант решения не подходит.

Еще раз поясню задачу:
По поводу временных меток, нет синхронизации, т.е. приемник может отсчитывать тики, и мы не можем знать сколько он насчитал, он может быть выключен и число будет меньше, либо считать быстрее, чем передатчик.
Про вариант с порядковым номером: пакеты могут быть утеряны и мы про это не узнаем, и другой более важный момент это последнее условие, т.е. даже если мы будем на приемнике отбрасывать все пакеты с номерами меньше последнего, но все равно мы не можем посылать пакеты часто, промежуток между посылками может быть большой. И в этот промежуток времени злоумышлиник может отослать последний не дошедший пакет. Нас также не могут удовлетворять пакеты, которые опоздали даже на меньше минуты.

Еще раз спасибо за внимание!
Изменено: SinDo - 29.10.2010 17:54:17
 
Тут довольно правдоподобно уверяют, что нельзя.
Так, что делаем синхронизацию времени и таймстапим
Изменено: f_s_b_37 - 30.10.2010 19:31:06
 
Насколько я понял проблему, Вам может помочь только шифрование с механизмом подтверждения команды и ограничением на время подтверждение. Что я имею в виду.
1. С базы на спутник шлем шифрованный пакет, содержащий команду спутнику и id пакета.
2. Спутник отвечает базе шифрованным пакетом, содержащим id пакета базы и id своего пакета.
3. База отвечает спутнику шифрованным пакетом, содержащим id пакета спутника.

1. Понятно, что id случайны.
2. Команда бызы выполняется спутником только в случае подтверждения (пакет 3).
3. Если пакет 3 спутником не получен в течении определенного времени, то спутник считает сессию связи неудачной. Это нужно для защиты от злоумышленника, который перехватил пакет 3 и послал его вместо недошедшего пакета базы:
Цитата
SinDo пишет:
На следующий день, злоумышлиник посылает этот пакет в эфир и спутник начинает делать маневр, который нам уже не нужен.
Мы получаем более сложную систему отдачи команды: вместо одного пакета - 3, но и гарантию ее достоверности.
В идеале нужно еще предусмотреть подтверждение спутником выполненного маневра. Это если пакет 3 побился, а база об этом не знает.
 
RU_LIDS
Цитата
SinDo пишет:
1. Односторонняя связь ( т.е. имеется передатчик и приемник, пакеты могут идти только в одну сторону)
 
имхо из "Условия задачи:
1. Односторонняя связь ( т.е. имеется передатчик и приемник, пакеты могут идти только в одну сторону)
2. Нет синхронизации по времени. Время может идти как угодно."
и того, что "Требуется:
1. Определить доставлен ли пакет без задержки."
могу сделать следующие выводы:
"Определить доставлен ли пакет без задержки" обозначает что сигнал прошёл с одной стороны до другой за время t1<t_max,
где t1 = t_получение_сообщения - t_отправки_сообщения (как видим в данном случаи нам нужно знать время на обоих концах, аналогично синхронизации)
или t1 = (t_ответ_от_приемника - t_отправка_сообщения - t_обработки_команды )/2 (т.е, делать расчет исходя из продолжительности прохождения сигнала туда и обратно)
можно извратиться 2мя пакетами типа:
1ый. сообщение: следующий придёт через 3мкс
2ой. сообщение: выполнить команду
если второй пришёл не в установленные сроки - то тип есть задержка,
но не вижу проблемы повторить тоже самое противнику: через пол часа прислать 2 пакета один за одним с задержкой в 3 мкс (если до этого момента не измениться ключ шифрования, тогда он в попе. Правда одно "но". Для того что бы менять алгоритм нужно какая та причина: 1. время - опять долбаная синхронизация, 2. пакет сообщающий о смене ключа - но это встаёт в конфликт с вашими третьими пунктами "3.Нет гарантии доставки пакета. Приемник может быть выключен на какой то период времени. 3. Промежуток между пакетами может быть большим. ").
имхо - меняйте условие задачи или требуется
Изменено: [mad]Mega - 01.11.2010 17:44:11
 
f_s_b_37
Э-э-э... Не доглядел )

SinDo
Исходя из Ваших условий, я не вижу решения. По крайней мере, без двусторонней связи или  синхронизации времени, не возможно защититься от злоумышленника техническими мерами связи.
Единственное, что приходит на ум, это привязка к внешним, по отношению к связи, событиям. Как то: геостационарная орбита, фаза выполнения задания, и т.п. То есть данные, которые известны и приемнику и передатчику.
 
В условиях отсутствия всякой синхронизации по времени, имхо, невозможно даже ввести понятие задержки, а не то, что её измерить. Для измерения интервала времени прохождения чего-то между двумя точками, они должны быть в одной системе отсчета времени, а с такими условиями одной системы не построить. Как-то так, имхо.
В конце концов, время "у нас" и на "спутнике" может идти по-разному ;)
 
Главное ведь ничего не мешает со спутника отправлять сигнал, или например со спутника рассылать сигнал какой угодно, тут его принимать и синхронизоваться по времени. Мешает только неправильная постановка задачи - Только в России строят защищённые системы управления без обратной связи и удивляются что решают не решаемую задачу :)
Страницы: 1
Читают тему