GunsПишут, что в Штатах предложили некий стандарт “умного” стрелкового оружия – пистолетов. Под “умными” – подразумеваются пистолеты, оснащённые электронным приспособлением, которое должно блокировать стрельбу, если пистолет оказался у “неавторизованного” лица.

В статье по ссылке содержится занятная неточность. Там сказано, что в “случае разряда аккумулятора, управляющего электронным предохранителем и системой авторизации пистолета, оружие должно блокироваться”. Это было бы, мягко говоря, удивительным решением. Однако в исходном документе Минюста США ничего подобного нет. Вероятно, журналиста ввёл в заблуждение достаточно специальный англоязычный термин – “out-of-battery”: в отношении стрелкового оружия он обозначает преждевременный выстрел, обычно, при недозакрытом затворе. Естественно, прямой перевод – “без батарейки” – ошибочен: когда этот термин появился, никаких электрических батареек в пистолетах и пушках ещё не было. Но несложно представить, какова была бы реакция бойцов спецподразделений полиции, которым вручили бы новое личное оружие, предупредив, что перед мероприятием нужно не забыть зарядить батарейки.

Вернёмся к вопросу подобных “систем безопасности”. Конечно, исходная рекомендация прямо предписывает, чтобы в случае любого сбоя “устройства безопасности” – пистолет переходил в пригодное для стрельбы состояние. Правда, не совсем ясно, какой тогда смысл в ограничении, даже если для авторизации используется некоторый дополнительный токен (ключ-метка), который находится у легитимного “пользователя” при себе. Можно предположить, что, на практике, у любого сотрудника, который как-то заботится о собственной безопасности и допускает применение оружия, этот токен моментально окажется привязан или приклеен к пистолету; так, на всякий случай. (И однажды токен зацепится за кобуру.) Но интересен и другой момент: с одной стороны, сейчас обсуждаются запреты на применение оружия боевыми роботами, в автоматическом режиме; с другой стороны – предлагается дать электронному устройству возможность ограничивать и человека в применении оружия. Естественно, речь идёт о намерении ограничивать только нелегитимные случаи, но вопрос в том, как подобное техническое ограничение проявит себя в реальности.

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



Комментарии (9) »

В продолжение предыдущей заметки – посмотрим, как устроены симметричные блочные шифры. Примером послужит шифр “Магма”, в версии ГОСТ Р 34.12-2015, с картинками. Симметричными называют шифры, для которых ключ расшифрования можно легко получить из ключа зашифрования. В современных симметричных шифрах – эти ключи просто совпадают. Блочный шифр, в отличие от потокового, работает с блоками данных фиксированной длины (разрядности), измеряемой в битах. Например, шифр AES работает с блоками разрядности 128 бит. А “Магма” – 64 бита.

Получив на вход блок открытого текста и ключ, преобразование, называемое шифром, выводит блок шифротекста, той же разрядности. Соответствие между блоками открытого текста и блоками шифротекста задаёт значение ключа. “Магма” использует ключ длиной 256 бит. Современные шифры строятся из некоторых элементарных операций над блоками. Наборы таких операций обычно объединяют в раунды. Раунды повторяются несколько раз.

В “Магме” 64-битный блок разделяется на две равные части, над которыми производятся операции раунда. Эти операции включают в себя (в порядке выполнения): сложение с ключом раунда; подстановки; циклический сдвиг; сложение с половиной блока. Заканчивается раунд перестановкой полублоков местами. Раунд показан на схеме ниже:

Magma Round

A1 и A0 – две части входного блока: соответственно, они содержат по 32 разряда каждая. На вход цепочки раундовых операций поступает значение полублока A0. Для каждого раунда используется свой ключ. На схеме ключ обозначен Ki. Раундовый ключ также имеет длину 32 бита (разряда), то есть, совпадает с разрядностью половины блока. Сложение блока со значением ключа (операция обозначена символом ⊞) выполняется по модулю 232 – это эквивалентно “естественному”, для вычислительной техники, сложению двух 32-битных чисел (без знака). Над результатом сложения выполняются подстановки по таблице подстановок. Таблицы часто называют S-boxes. “Магма” использует 4-битные подстановки, отдельные для каждого полубайта из 32-битного блока. Логика тут следующая: 32-битный блок разбивается на 8 4-битных частей, каждое из получившихся значений (0..15, так как битов – четыре) заменяется на соответствующее ему значение из таблицы подстановок; таблиц восемь – по одной для каждой позиции 4-битного значения внутри 32-битного блока.

В версиях шифра, предшествовавших ГОСТ Р 34.12-2015, таблицы подстановок предлагалось выбирать отдельно для каждой сети обмена сообщениями и держать в секрете. То есть, таблицы позволяли повысить стойкость шифра. При этом, впрочем, неверно выбранные подстановки стойкость могут заметно снизить, а раскрыть секретные подстановки реально, если атакующий может зашифровывать произвольные тексты с известным ключом. В ГОСТ Р 34.12-2015 – значения подстановок зафиксированы.

Значение 32-битного блока после подстановок циклически сдвигается влево на 11 разрядов (то есть, биты сдвигаются влево, а выбывшие разряды вдвигаются справа в том же порядке). После операции сдвига, значение поразрядно суммируется с блоком A1 по модулю 2, это логическая операция XOR (обозначена символом ⊕ на схеме).

В заключении раунда – A1 и A0 меняются местами. То есть, A0 переходит в следующий раунд без изменений, но становится на место A1. Всего раундов 32. Последний раунд отличается тем, что 32-битные блоки не меняются местами, а просто объединяются: A0 присоединяется к A1 справа. Это замыкает всю конструкцию, позволяя использовать её без изменений для расшифрования: операция расшифрования отличается только обратным порядком раундовых ключей.

Раундовых ключей – 32. Каждый имеет разрядность 32 бита. Эти ключи получаются из основного ключа шифрования при помощи алгоритма развёртывания ключа. В “Магме” этот алгоритм очень простой. Исходный ключ содержит 32 байта (256/8=32). 32 байта – это 8 раундовых ключей, каждый по четыре байта; на 32 раунда – ключи копируются, с той лишь разницей, что последние восемь используются в обратном порядке. Схема:

Round Keys

Работа шифра выражается в “перемешивании” битов открытого текста, схему перемешивания определяет ключ (и таблицы подстановок, но мы считаем, что они неизменны). Преобразования можно визуализировать. На картинке ниже – разным значениям битов соответствуют синий и жёлтый цвета, раунды выполняются сверху вниз (самая верхняя строка – открытый текст).

Magma Operation

Посмотрим, насколько важны параметры и базовые преобразования, выбранные для построения шифра. Важным инструментом криптоанализа является изучение работы шифра при малых отличиях открытых текстов. На картинке ниже – распространение изменений между раундами “Магмы”: два открытых текста отличаются значением одного бита, ключ используется одинаковый; синим цветом отображены разряды, значения которых совпали между собой; зелёным – отличающиеся разряды.

Avalanche-1

Хорошо видно, что уже на седьмом раунде различия между значениями блоков сравнимы (визуально) с типичным расстоянием между двумя случайными 64-битными значениями. При этом решающий вклад в “разделение” блоков вносят подстановки (собственно, в этом их основное назначение). Попробуем выключить подстановки (кроме последнего раунда; без подстановок, естественно, данный шифр использовать нельзя).

No S-boxes

Результат – плачевный. Несмотря на то, что это лишь схема для двух открытых текстов, понятно, что ни о каком “лавинном эффекте” от замены одного бита говорить уже не приходится. Сходного результата можно добиться и использованием “плохих” таблиц подстановок (но нестойкие таблицы, в общем случае, не обязательно приводят к такому эффекту).

Попробуем изменить другой параметр – число разрядов, на которые циклически сдвигается блок в каждом раунде. Используем сдвиг на 12 разрядов, вместо 11 (подстановки и другие преобразования – без изменений).

Wrong Rotation

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



Комментарии (2) »

ASM codeРоссийский шифр “Магма” известен также под названием ГОСТ 28147-89. В новом ГОСТ Р 34.12-2015 данный шифр приведён вместе с более современным шифром “Кузнечик”. “Магма” весьма старый блочный шифр, ещё советский, он родом из 70-х годов прошлого века. Некоторым образом шифр связан с электромеханическими шифровальными машинами. Например, таблицы подстановок ведут своё происхождение от “перемешивающих” дисков этих машин. Несмотря на солидный возраст, шифр до сих пор выглядит неплохо по соотношению таких характеристик, как практическая стойкость и требуемое количество операций. Шифр достаточно простой и может быть реализован на базе микроконтроллера. В качестве базового устройства используем распространённую платформу – Arduino (конкретно – Arduino Uno, на котором я проверял исходный код).

“Магма” имеет разрядность блока 64 бита и разрядность ключа 256 бит. По современным меркам 64 бита – малая разрядность блока, но она сохраняет актуальность для встроенных применений (“Интернета вещей”), где короткие криптограммы очень распространены и обусловлены техническими ограничениями. 256 бит ключа и на современном уровне являются излишне большим значением, при условии, конечно, что шифр обеспечивает стойкость, эквивалентную полному перебору. Я не буду приводить обзор литературы по криптоанализу данного “ГОСТового” шифра в этой заметке. Отмечу только, что до сих пор для шифра не предложено универсального метода криптоанализа, который снизил бы криптостойкость, с точки зрения практической атаки, до неприемлемого уровня. Все известные эффективные атаки – академические, требуют чрезвычайно больших ресурсов, при этом лучший результат: снижение стойкости до 101 бита. Примем, что в наихудшем практическом случае данный шифр обеспечивает стойкость около 115 бит, а этого вполне достаточно для, например, передачи данных от датчиков температуры “при ведении подсобного хозяйства”. Другими современными “малыми” шифрами, которые ориентированы на использование в маломощных микроконтроллерах, являются, например, шифры Speck и Simon, предложенные АНБ.

Технически, “Магма” представляет собой итеративную конструкцию Фейстеля, состоящую из 32 раундов. Входной блок разделяется на две равные части, в каждом раунде к одной из частей последовательно применяются раундовые преобразования, а результат суммируется со второй частью. Перед следующим раундом – части меняются местами (кроме последнего раунда). Преобразования включают в себя сложение (по модулую 232) с ключом раунда, подстановку по таблице подстановок, циклический сдвиг влево. При расшифровании работа шифра отличается только порядком ключей. Раундовые ключи имеют разрядность половины блока – 32 бита. Набор ключей раундов получается из основного ключа копированием его 32-битных подмножеств по достаточно простой схеме: первые 24 раунда используют “подключи” последовательно в прямом порядке (то есть, k1..k8), а заключительные 8 раундов – в обратном порядке (k8..k1).

Сам шифр я реализовал на ассемблере AVR, воспользовавшись inline-вариантом – то есть, команды ассемблера включены в исходный код на языке C (исходный код прилагается, см. ниже, функция DoCipher()). Шифр работает быстро, реализацию можно ещё улучшить. Микроконтроллер Arduino Uno очень ограничен в объёме оперативной памяти для данных, при этом “Магма” только для хранения основного ключа требует 256/8 = 32 байта. Набор раундовых ключей, если его полностью развернуть в памяти, съедает ещё 4*32 = 128 байтов. Таблица подстановок (я, кстати, использовал таблицу из ГОСТ Р 34.12-2015) включает восемь наборов по 16 значений, однако так как подстановки полубайтовые (по четыре бита), их можно объединить попарно: получаем 4*16 = 64 байта. Итого – 224 байта только на окружение, которое требуется для использования шифра. Оптимизации тут можно подвергнуть только раундовые ключи – в принципе, можно их не разворачивать, а прямо использовать байты из основного ключа (так работала бы аппаратная реализация).

Реализация непосредственно шифра называется криптопримитивом. Наличие криптопримитива позволяет строить на базе шифра полезные конструкции. При этом, использовать блочный шифр прямо для зашифрования блоков открытого текста – в подавляющем большинстве случаев нельзя: такой режим называется режимом простой замены (или ECB) и не обладает нужным уровнем секретности, даже если вы с помощью зашифрованных команд лампочки в доме переключаете. Например, одна и та же команда, при использовании одного ключа, будет соответствовать одинаковому шифротексту. Запись с повторной передачей позволит третьей стороне переключать ваши лампочки. Для предотвращения подобных атак существует ряд методов: например, использование уникальных значений (счётчиков) для команд, различные схемы с подтверждением (но тут требуется отправка дополнительных пакетов). Наличие шифра и секретных ключей позволяет все их реализовать безопасно. Также на базе шифра реализуются схемы вычисления/проверки кодов аутентификации сообщений, которые защищают от подделки данные, передаваемые в открытом виде.

В исходном коде в качестве примера дана реализация функций шифрования в режиме счётчика – MagmaEncrypt(), MagmaDecrypt(). Такой режим пригоден для практического использования, однако он не обеспечивает аутентификации сообщений. Предполагается, что обменивающиеся данными устройства знают общий секретный симметричный ключ и используют синхронное значение nonce (оно может передаваться в открытом виде). Соответственно, код содержит пример вызова данных функций.

Некоторые сценарии использования шифров в разных “домашних устройствах”, работающих на базе микроконтроллеров: передача команд, с аутентификацией (сами команды не шифруются); передача данных от датчиков, в зашифрованном виде, также с аутентификацией; подключение новых устройств к сети датчиков (так сказать, опознавание “свой-чужой”).

По ссылке: исходный код (с весьма подробными комментариями на русском внутри). Возможно, из этого следует сделать полноценную библиотеку (тогда нужно реализовать режим шифрования с аутентификацией). Замечания, комментарии и пожелания – приветствуются.



Комментарии (4) »

Добавил описание основных особенностей новой версии TLS 1.3 к общему описанию TLS, пока что в качестве приложения, без “побайтового разбора”. Спецификация ещё находится в состоянии черновика. Отличия между спецификациями, как я уже упоминал ранее, огромные: единственное, с чем можно сравнить – так это с переходом от SSLv2 к SSLv3/TLS.

Теперь, на мой взгляд, описание TLS у меня весьма полное, подробное. Но, конечно, есть ещё чего добавить. Кроме расширения описания TLS, я всё же планирую добавить раздел с базовыми математическими конструкциями современной криптографии.



Комментарии (4) »

С удостоверяющим центром (УЦ) WoSign приключилась неприятность – из-за нескольких достаточно серьёзных нарушений требований (и, в частности, из-за кривого аудита), сертификатам, выпущенным от корней данного УЦ, перестали доверять браузеры (в одном пакете с WoSign оказался и другой УЦ – StartSSL: последний, как неожиданно выяснилось, был ранее куплен и, фактически, объединён с WoSign). Напомню, что и WoSign, и StartSSL выпускали бесплатные TLS-сертификаты.

Я использовал несколько сертификатов WoSign. В частности, на dxdt.ru серверный сертификат от WoSign служил в качестве входа во вторую ветку валидации для RSA (основной веткой я считаю ветку с ECDSA). То есть, сервер поддерживал обе криптосистемы для аутентификации: и ECDSA, и RSA. Сейчас я удалил RSA-сертификат WoSign и, соответственно, отключил поддержку RSA. Осталась только ECDSA – схема подписи, работающая на эллиптической кривой. Это означает, что устаревшие конфигурации браузеров/операционных систем больше не имеют доступа к сайту. Полагаю, что Windows XP с браузером IE 8 – так или иначе плохой набор для работы с Вебом. Для всех современных браузеров (и ОС) проблем быть не должно (если проблемы есть, то пишите в комментарии, если, конечно, вы как-то читаете этот текст). Стандартный набор для подключения: ECDSA + AES в режиме GCM. На всякий случай, я оставил в заголовках HPKP отпечатки ключей RSA (вдруг, они потребуются в будущем). Кстати, так как внедрение HPKP прошло успешно, попутно увеличил время кэширования отпечатков ключей до 30 суток.

Сертификат WoSign также использовался на сервере tls.dxdt.ru – пришлось заменить его на сертификат от Comodo: я провёл замену некоторое время назад, когда из обсуждения в сообществе Mozilla стало ясно, что WoSign удалят из списка доверенных корней. Ведь не очень правильно держать сайт с техническим описанием TLS под сертификатом, выпущенным проблемным УЦ.

В принципе, ранее выпущенные сертификаты WoSign продолжают поддерживаться, до момента истечения их срока действия. Такое положение вещей служит неплохой иллюстрацией того, насколько сложной и непрямолинейной стала система аутентификации серверов в браузерах. Эта система теперь дополняется всякими хитрыми исключениями: “вот этому корню доверяем, но только до такого-то срока”.

Другой эффект проблем с WoSign: из бесплатных решений теперь только Let’s Encrypt, с их короткоживущими сертификатами и внешними скриптами на сервере. Да, скрипты можно написать собственные, реализовав протокол ACME, но это всё равно не тот вариант, который хотелось бы видеть.



Комментарии (6) »

CompassСпутниковая навигационная система представляет собой сложный комплекс, однако логика работы GPS, с точки зрения конкретного приёмника, весьма проста. Приёмник, измеряя разницу между временем поступления сигнала от спутника и временем генерации этого сигнала, определяет расстояние до спутника-источника. Так как координаты спутников в заданный момент времени известны с высокой точностью, приёмник может вычислить собственные координаты. Упрощённое математическое описание: каждый спутниковый сигнал даёт одно уравнение, определяющее геометрическое место точек, где может находиться приёмник; три спутника – позволяют построить систему из трёх уравнений, и, таким образом, найти точные координаты в пространстве (“пограничные” неоднозначности оставляем за скобками). Для вычислений требуется точное время, а большинство приёмников GPS не содержат достаточно точных встроенных часов, поэтому, для удаления неоднозначности по времени, требуется ещё одно уравнение, позволяющее получить точное время – это уравнение даёт четвертый спутник. Таким образом, для высокоточного определения координат приёмнику достаточно сигналов четырёх спутников. Естественно, на практике присутствуют помехи и различные аппаратурные искажения, но логика именно такая.

В GPS не предусмотрено аутентификации навигационной информации. За исключением военного сигнала, который сейчас не станем рассматривать, никакой защиты не предусмотрено. То есть, гражданский GPS-приёмник ориентируется только на полученные “из антенного входа” данные. Уже исходя из этого, несложно догадаться, что если атакующая сторона имеет возможность управлять электромагнитной картиной на антенне приёмника, то она может “нарисовать” для этого приёмника любую виртуальную конфигурацию спутников и, в общем случае, приёмник не сможет отличить виртуальные координаты от подлинных. Такая активная помеха называется GPS-спуфингом, осуществимость продемонстрирована довольно давно. (На практике, из-за того, что “нарисованная” картина не бывает идеальной, некоторые возможности обнаружить спуфинг у приёмника есть.)

Так как сигналы гражданского GPS полностью открыты, то постановщик помехи может генерировать их с опережением по времени. То есть, можно предсказать, каким будет сигнал в заданной точке пространства в заданное время. Этот момент позволяет компенсировать затраты времени на генерацию динамического поддельного сигнала, да и вообще – практически полностью снимает ограничения для системы спуфинга: она может имитировать любые конфигурации спутников и приёмника (военный сигнал тут защищён существенно лучше: спуфинг оказывается ограничен воспроизведением ранее полученных сигналов, но с задержкой).

Система спуфинга будет иметь следующую базовую конфигурацию: генератор сигнала GPS передаёт имитацию сигнала нескольких спутников через антенну, на частоте GPS (в этой системе одна частота используется всеми спутниками, сигналы разделяются при помощи кодирования); при условии, что уровень имитирующего сигнала несколько превышает уровень сигнала реальных спутников, GPS-приёмник будет “захватывать” поддельный сигнал и вычислять положение на его основе. В данной схеме все приёмники, попавшие в зону действия спуфинга, вычислят одни и те же координаты (окажутся в одной и той же “виртуальной” точке пространства), при этом у приёмников, находящихся (реально) в разных местах, автоматически возникнет небольшое рассогласование по времени. Сигнал GPS – периодический, соответственно, даже “статический” спуфинг требует динамической передачи одних и тех же по фактическому содержанию навигационных сообщений. Помеху можно сделать уводящей – такая помеха имитирует перемещение приёмника по заданной спуфером траектории.

Сигнал GPS спроектирован таким образом, чтобы сделать возможным приём на слабом уровне, ниже шумов. Приёмники используют тот или иной коррелятор, позволяющий получить достаточное соотношение сигнал/шум. Это, с одной стороны, означает, что сигнал спуфинга может совсем незначительно превышать мощность подлинного сигнала – коррелятор всё равно “зацепится” именно за него (другими словами: обнаружить факт наличия спуфинга по возросшей мощности сигнала – не выйдет). С другой стороны, GPS-приёмник должен захватить сигнал (это известный всем пользователям GPS процесс), и в дальнейшем работать с захваченными параметрами, сопровождая их. Этот момент сопровождения имеет важное значение: активную уводящую помеху конкретному приёмнику можно поставить так, что срыва сопровождения не произойдёт. Однако в случае с более простым спуфингом, приёмник, оказавшись в зоне действия активной помехи, потеряет сопровождаемый код и будет вынужден захватывать спуфинг-сигнал заново – этот процесс будет заметен. Постановка скрытной уводящей помехи гораздо сложнее, чем наведение статичного спуфинга. А статичный спуфинг будет проявляться в потере сигнала, с последующим восстановлением в совсем другой (имитируемой) точке пространства. Большинство навигаторов устроены крайне просто, поэтому отметка на карте перепрыгнет в произвольное место, заданное системой спуфинга (хотя этот прыжок мог бы обнаружить даже самый примитивный алгоритм).

Для системы спуфинга гражданского сигнала не имеет значения, в какую именно точку пространства “перемещать” попавшие в зону действия помехи устройства: как было отмечено выше, из-за того, что гражданский сигнал никак не защищён, его можно предвычислять без ограничений на достаточно больших интервалах времени.

Технически, система спуфинга может быть построена на основе лабораторного генератора сигналов GPS – такие специализированные устройства есть, они позволяют генерировать картину для большого числа спутников, а предназначены для отладки GPS-приёмников. В простейшем случае, достаточно вывести сигнал генератора на внешнюю антенну. Возможно построение системы спуфинга на основе того или иного набора SDR (Software-defined radio – программно-определяемая радиосистема), для них есть соответствующее программное обеспечение. Примерные затраты – не более 5 тыс. долларов США. Естественно, есть и готовые решения именно для спуфинга.

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

Не менее интересен и аспект постановки помехи группе приёмников GPS, с сохранением их пространственной конфигурации относительно друг друга. Предположим, что у нас есть три приёмника, которые находятся на расстоянии нескольких сотен метров друг от друга, и расстояния между ними известны. В случае обычного GPS-спуфинга, после того, как приёмники захватят ложный сигнал, они “переместятся” в одну точку. Этот факт может являться основной для построения системы обнаружения спуфинга. Постановка помехи с сохранением конфигурации группы – оказывается чрезвычайно сложной задачей, решаемой, скорее, теоретически, потому что потребуется вычисление индивидуальных поддельных сигналов для каждого приёмника, а также корректная доставка этих сигналов до антенн, что требует точной информации о местоположении последних.

Для обнаружения GPS-спуфинга предложены различные методы. Например, возможно выделение ложного сигнала на основании определения направления на его источник. Определить направление можно сравнивая фазы сигнала на нескольких антеннах. Можно использовать в качестве дополнительного источника информации доплеровский сдвиг частот, это актуально для движущихся объектов. Есть решения, основанные на использовании военного сигнала GPS в качестве опорного (без необходимости знания секретного ключа) – здесь проводится обнаружение расхождений между принятым гражданском сигналом и параметрами военного. (Военный канал, впрочем, может быть просто задавлен шумом.) Достаточно очевиден вариант с инерциальной навигационной системой: такая система автономна, поэтому может обнаружить противоречие в данных, поступающих от GPS-приёмника.

А вот каких-то простых методов противодействия спуфингу – нет. Его только можно относительно надёжно обнаружить, в простых случаях. Впрочем, типичный “навигатор в смартфоне” не умеет делать даже этого, а пользователи продолжают ошибочно считать GPS надёжной системой и слепо полагаться на её данные.



Комментировать »

У постановки помех GPS – история давняя. Это интересная тема. Вообще, что касается именно вопроса точной навигации, то блокирование сигнала GPS имеет свои ограничения: дело в том, что есть инерциальные системы навигации, они автономные, а GPS для них полезна лишь в том смысле, что позволяет скорректировать накопленную ошибку. Но если навигационный сигнал недоступен только на небольшой территории, то ограничения для инерциальных систем становятся не так актуальны: ошибка просто не успеет накопиться.

Но не нужно забывать, что GPS – это не только навигация. Так, в рамках разумной современной модели угроз, постановка помех GPS нужна для того, чтобы заглушить опорный сигнал синхронного времени, который, без помехи, может быть использован в распределённой сети радиоэлектронных устройств, действующих в районе прикрываемой территории. То есть, GPS позволяет синхронизировать с высокой точностью время на разных автономных пассивных устройствах, тем самым эти устройства могут действовать и обрабатывать информацию согласованно.

Реализовать в компактном электронном устройстве систему синхронного времени, обладающую сколько-нибудь высокой точностью (хотя бы миллисекундной) на продолжительных интервалах времени – чрезвычайно сложно: нужны стабильные генераторы частоты, а это не просто большая редкость, но и температурная компенсация/стабилизация, коррекция ошибок, и так далее, и тому подобное. При этом, если устройство пассивное, то в любом случае возникает проблема синхронизации между несколькими узлами сети. GPS является тут просто идеальным решением, так как предоставляет единый сигнал точного времени, независящий от работы принимающих устройств.

Для чего нужно синхронное время? Например, для построения сверхчувствительной распределённой радиоприёмной системы на базе компактных и относительно простых узлов. Для точного определения, на базе нескольких синхронных приёмников, местоположения всяких источников сигналов, причём, к этим сигналам относятся побочные излучения, которые позволяют определять местоположение микроэлектронной техники, для трансляции сигналов не предназначенной. Другая задача – передача данных в том или ином “малозаметном” режиме связи (различные LPI-системы): приёмники и ретрансляторы должны иметь общее время, чтобы правильно настроить параметры корреляции, позволяющие выделить замаскированный сигнал, который для “стороннего наблюдателя” неотличим от шума (синхронное время здесь только один из инструментов, но весьма важный). И это неполный список.

А вот “пропадание навигации” в смартфоне – всего лишь побочный эффект.



Комментировать »

Спускаемый марсианский модуль “Скиапарелли”, как сообщает ESA, возможно, потерян: телеметрия неожиданно обрывается, похоже, что алгоритм торможения был выполнен нештатным образом. Посадка модуля на Марс – задача сложнейшая, ESA тут всё ещё продолжает тестировать технологии.



Комментировать »

Появилась новая работа, посвящённая быстрому вычислению секрета протокола Диффи-Хеллмана (DH) из записанного трафика – популярная статья Arstechnica, – речь идёт о том, что можно, и это показано на практике, за обозримое время вычислить секрет, полученный в рамках обмена DH, используя даже университетское оборудование. Под “университетским” имеется в виду, что это не супердорогой специализированный вычислитель. Для успешной атаки требуется, чтобы модуль DH был коротким – 1024 бита, – и имел специальный вид. При этом обнаружить “специальный вид” снаружи и использовать для ускорения вычислений – нельзя, откуда и предположение о закладках.

О том, что найти секреты DH в произвольной короткой, 1024-битной группе, можно, если у вас есть достаточно мощный, но доступный на уровне современных технологий, компьютер и вы предвычислили нужную “арифметическую структуру” группы, известно довольно давно. Сейчас решение продемонстрировали на практике, подтвердив, что если правильно выбрать модуль, то объём вычислений ещё сокращается на несколько порядков.

Для того, чтобы атака сработала, требуются типовые группы. В более строгом случае, с подготовленным модулем, используемую группу нужно прямо задать. (Более мягкий вариант – работает с любой заранее известной 1024-битной группой, но для каждой потребуется большой объём предварительных вычислений и большой объём памяти для хранения результатов.)

Самое занимательное, что с типовыми группами проблем как раз нет. Например, в Рунете (.RU, .РФ) около 280 тыс. имён аресует узлы, поддерживающие HTTPS/TLS и классический вариант DH, которые используют всего две различных группы с разрядностью 1024 бита. Одна – это группа по умолчанию из mod_ssl, а вторая, насколько я понимаю, из настроек по умолчанию модуля SSL в nginx. Обе группы, очевидно, потенциально уязвимы. (Пояснение, 12/10/16: я скорректировал текст – изначально было написано, что 280 тыс. серверов, но речь идёт о числе доменов – имён TLS-хостов.)

Про то, что генерация общего секрета по протоколу Диффи-Хеллмана вовсе не является эквивалентом симметричных ключей, которые “есть только на узлах”, я не раз писал ранее. Например – в записке про извлечение секрета DH из трафика.



Комментарии (12) »
Навигация по запискам: Раньше »