Массовое отключение “цисок”
(На правах технократического юмора.) Если кто не знает, то “циска” – это собирательное название маршрутизаторов, произошедшее от Cisco и почти ставшее нарицательным. Известно, что если отключить достаточное число маршрутизаторов, то национальный сегмент Интернета потеряет внутреннюю связность (а не только связность с глобальной Сетью). То есть внешняя атака, отключающая “циски”, приводит к пропаданию Интернета в выбранной стране. Естественно, маршрутизаторы содержат уязвимости-закладки, некоторые из них позволяют маршрутизатор не просто отключить, а убить совсем. Идеальным решением задачи активации закладки является передача в составе трафика специального ключа.
Маршрутизаторы копируют все пакеты и обязательно анализируют часть их заголовков, а факультативно – содержимое самих пакетов. Так что обнаружив ключ активации в составе полученного пакета данных, маршрутизатор отключается. Ключ может представлять собой строку из 256 бит, соответственно подобрать его не представляется возможным. Понятно, что программная реализация проверки валидности полученного кода должна быть устроена так, что сам код на основании анализа алгоритма вычислить не удастся. Это очень важный аспект: иначе кто-то сможет получить ключ уничтожения в своё распоряжение, прикупив одну уязвимую “циску”.
Вопрос в том, как правильно встроить в трафик убивающий маршрутизаторы ключ. Ситуация тут напоминает искусственно создаваемую биологическую эпидемию.
Предположим, что пакет, содержащий “смертельный код”, отправляется внешним узлом в направлении ближайшего пограничного маршрутизатора атакуемого сегмента сети. Если маршрутизатор, получив пакет, умирает немедленно, то гарантировать можно лишь уничтожение этого самого маршрутизатора – остальные узлы-маршрутизаторы останутся работоспособными, а вот связь их с внешним сетевым миром прервётся, поэтому вырубить их извне уже не получится. Проблема.
Допустим, маршрутизатор сперва отправляет пакет далее по маршруту, и лишь потом – умирает. При такой схеме возможно вывести из строя один из маршрутов, в который входит начальный маршрутизатор, да и то – гарантировать ничего нельзя: пакет может потеряться в пути, а переслать его повторно будет уже некому. Так как маршрутов доставки пакетов обычно несколько, получаем проблему с покрытием: после того, как откажет несколько “цисок”, эпидемия затихнет, а связность сохранится.
Естественно, можно продолжать бомбардировать все доступные узлы пакетом, содержащим смертельный код, но есть и другое решение. Для качественного уничтожения связности пакеты должны пройти через каждый маршрутизатор, обеспечивающий работу национального сегмента Сети. При этом желательно, чтобы вредоносные пакеты вообще не покидали пределов сегмента. Это означает, что источником пакетов должны быть пользовательские компьютеры – тогда они заведомо охватят большое число маршрутизаторов, а распространяться эпидемия отключений начнёт с самого подходящего уровня: ведь без конечных пользователей Интернет не имеет особого смысла.
Как получить нужный эффект? Например, использовать механизм, встроенный в распространённую операционную систему. Пусть в определённый момент центральные серверы, куда эта операционная система обращается за обновлениями, отправят некий “праймер” – сигнал к атаке. После этого операционная система в любой пакет исходящего трафика встраивает убивающий маршрутизаторы код и – вуаля, сегмент посыпался, причём падают маршрутизаторы во всех возможных путях доставки пакетов к пользователям, покрытие идеальное. Естественно, операционная система пользовательских компьютеров не содержит секретного кода: он передаётся центральными серверами, в зашифрованном виде, чтобы не вызвать преждевременного срабатывания. От конечного компьютера требуется только расшифровать код и вернуть его обратно в Сеть – самая обычная операция, кстати, не вызывает подозрений, встречается во многих протоколах, так как может являться чем-то вроде проверки электронной подписи или служить частью системы аутентификации.
А после того как в национальном сегменте умерли хотя бы две трети “цисок”, на восстановление связности потребуются многие месяцы (не исключено, что и годы).
Адрес записки: https://dxdt.ru/2014/11/04/6958/
Похожие записки:
- Новые атаки на SHA-256 (SHA-2): технические пояснения
- Общее представление о шифрах и бэкдоры
- Боты AI
- Системы счисления и системное администрирование
- "Почти что коллизия" и хеш-функции
- Экспериментальный сервер TLS 1.3: обновление
- "Яндекс.Браузер" и российские сертификаты TLS в вебе
- Twitter за стеной регистрации
- Технические подробности: постквантовая криптосистема X25519Kyber768 в TLS
- STARTTLS и SMTP
- Наложенные сети Chrome для размещения сервисов
Комментарии читателей блога: 10
1. 5th November 2014, 12:06 // Читатель sol289 написал:
при сработке закладки “циска” должна не просто умереть, а переписать содержимое ПО другим ПО, секретным, которое будет рассылать по всем портам смертельный код, и только его.
2. 5th November 2014, 23:55 // Читатель Z.T. написал:
A virus that immediately kills its host does not cause an epidemic. A “good” virus has an incubation period during which it can spread. So the kill switch would encode a future date on which all infected hardware would die, but would spend at least a few minutes infecting other equipment.
Actually, I really doubt this exists. I think the only “special” feature shipped to all customers is a bug in the firmware update code that allows the NSA to remotely flash the firmware of any network gear (even if IT staff “disabled” firmware updates).
3. 6th November 2014, 13:23 // Александр Венедюхин:
> A “good” virus has an incubation period
Да, это тоже весьма разумный вариант. Вот только реализация скрытого “звена с задержкой”, обеспечивающего инкубационный период, гораздо сложнее, чем создание простой схемы, вырубающей маршрутизатор по обнаружению ключевой последовательности в потоке данных. Например, локальная задержка подразумевает, что активирующий код будет некоторое время находиться на работающем маршрутизаторе, соответственно, этот код могут обнаружить – мало ли там что приключится с “циской” за время инкубации.
4. 6th November 2014, 22:48 // Читатель Tarabah написал:
Если речь идёт об L2 и L3 коммутаторах, то рассчитывать на то, что какая-то комбинация 8ми байт никогда не попадёться в реальном трафике невозможно. Если бы такой механизм судного дня в циски вставляли, они бы мёрли сами периодически, что вызвало бы всеобщий интерес.
5. 7th November 2014, 14:12 // Александр Венедюхин:
> Если речь идёт об L2 и L3 коммутаторах, то рассчитывать
> на то, что какая-то комбинация 8ми байт никогда не
> попадёться в реальном трафике невозможно.
Ну, не восьми, а 32 – большая разница, согласитесь. Да и насчёт 2^64 – тоже не так всё просто: допустим, маршрутизатор обрабатывает 1024 (2^10) пакета в секунду, тогда, чтобы перебрать половину множества из 2^64 элементов, ему потребуется 2^64/(1024*2) секунд, то есть, примерно, 9*10^15. Обычный год содержит 86400*365=31536000 секунд. Это означает, что перебор половины вариантов ключей потребует, примерно, (9*10^15)/(3*10^7)=300 млн лет. Конечно, здесь мат. ожидание падения нагруженной трафиком “циски” будет несколько более значимым, чем для 256 бит, но не вылезет за пределы стандартных показателей надёжности.
6. 7th November 2014, 18:08 // Читатель Tarabah написал:
Обычный коммутатор на канале 10 Гигабит/сек (не самый толстый канал) обработает до 800 тысяч пакетов в секунду (саму коммутацию не процессор осуществляет). Но это не важно. В Вашей постановке для начала эпидемии достаточно чтобы любому одному коммутатору попался один раз такой пакет, т.е. у нас все включенные циски работают параллельно, а их десятки тысяч.
7. 7th November 2014, 23:46 // Александр Венедюхин:
> обработает до 800 тысяч пакетов в секунду
Пусть даже миллион – это означает, что для случайного обнаружения заветного кода с вероятностью 1/2 потребуется около 300 тыс. “маршрутизаторо-лет”. То есть, с заметной вероятностью, по причине самозарождения отравляющего кода в трафике, сможет умирать одна из 300 тыс. “цисок” в год (не обязательно умирать, а лишь с заметной вероятностью). Это вообще никого не удивит. Заметьте, что тут не только речь про сильно урезанный (до 64 бит) ключ, но ещё и нужно непрерывно кормить эти 300 тыс. “цисок” действительно _случайным_ трафиком целый год (в реальности, интернет-трафик по своей структуре далёк от случайного, особенно, если брать его по сотням тысяч нагруженных портов – но это другая история).
8. 10th November 2014, 13:16 // Читатель Tarabah написал:
Так ведь умирание одной по сценарию вызовет эпидемию.
9. 11th November 2014, 00:22 // Читатель Z.T. написал:
А еще, SSL/TLS генерирует вполне себе случайный трафик.
10. 22nd November 2014, 15:43 // Читатель Серго написал:
И сжатый видеотрафик, который сейчас составляет основную долю трафика, тоже слабо отличается от случайного