[Crypto] Что такое side-channel attack / timing attack

Была у меня когда-то подруга и съемная двухкомнатная квартира. И мы обычно работали находясь в разных комнатах.

Деятельность подруги за компом была разделена на 4 основные (под)вида:

Фазы 2 и 3 часто перемежались, как и у большинства людей.

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

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

Облегчало задачу и то, что подруга довольно шустро топтала клаву вслепую.

Так работает side-channel attack (а особенно timing attack) в быту.


Так еще иногда бывает как в каком-нибудь гос.учреждении, чтобы ты отстал от гос.чиновника, он делает вид что ищет какую-то нужную тебе инфу на компе, хотя ты ясно слышишь, как он просто "рандомно" топчет клаву, а потом говорит тебе что ничего не нашел. И что ты ему скажешь на это?


Так и с номерными радиостанциями. Дешифровать их сообщения никто не возьмется. Но имея дешевый радиоприемник и газету с новостями, вы могли протоколировать -- как часто станция выходит в эфир? Как много выдает сообщений? Какой они длины? И что в это время происходит в мире, в новостях? Так делали выводы о том, какая станция связана с какой страной.

В последствии так можно делать выводы -- если некая станция слишком активна, значит в такой-то стране что-то назревает. Опять же, такие выводы можно делать имея только радиоприемник, не дешифруя ничего.

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

Например -- в 1960-х, после карибского кризиса, между кабинетами президентов США и СССР установили телетайпы для прямой и срочной связи. По слухам, для шифрования использовался one-time pad (одноразовый блокнот), а ключами обменивались через дипломатов, надо думать, в чемоданах (ключ для OTP должен быть такой же длины, как и сообщение). Но и его могли подслушивать и наблюдать за активностью, даже не дешифруя сообщения. Так что во время неактивности, телетайпы гнали друг другу куски из русской (и американской?) художественной литературы. Наверное, принимающая сторона автоматически идентифицировала этот текстовый шум и игнорировала его. К тому же, это еще и было для теста, чтобы было видно, что во всякий момент времени телетайпы исправны и канал(ы) связи тоже.


Также может много полезной информации вам дать тот факт, что наблюдаемое сообщение, хотя и зашифрованное, но точно такое же. Вы можете делать разные полезные выводы, зная, что одно и то же сообщение X было отослано несколько раз, в такие-то дни и часы. А сообщение Y -- в другие какие-то дни и часы. Для современной безопасной связи в интернете это неприемлимо вообще. Поэтому в ssl/tls и ssh пакеты всегда будут разные, даже если пользователь запрашивает одну и ту же страницу через https, исполняет одну и ту же команду через ssh, и т.д.


И еще народная мудрость. Если поздно вечером в каком-то правительственном здании горит много окон -- это что-то значит. "Что-то происходит". Если много суетятся, мотаются машины -- тоже. (Хотя вы можете и не иметь доступа к той информации.) Ну и т.д.


Кстати, однажды на lichess.org опявился очень сильный гроссмейстер под ником Konevlad. Люди гадали, кто это может быть. (Настолько сильных гроссмейстеров в мире не так уж и много.) Нашелся тот, кто просто выкачал базу всех игр с lichess.org и проанализировал, в какие часы чаще всего был активен Konevlad и те гроссмейстеры, на кого падало подозрение. К тому же, анализировали и дебютный репертуар, что тоже очень легко, если под руками есть все сыгранные партии всякого активного гроссмейстера. Так его анонимность была раскрыта. Забавно: это можно было сделать даже если вообще не разбираться в шахматах.


Еще на эту тему, про слепого математика Льва Понтрягина:

Еще студентом как-то поразил аудиторию. Прервал лекцию профессора Бухгольца громкой фразой:
«Профессор, вы ошиблись в чертеже».

Он слушал стук мела о доску, и в какой-то момент обнаружил несоответствие реальных звуков и тех, 
что раздавались у него в голове.

( src )


И еще история со времен Фидонет. Конец 90-х. При коннекте через модемы (которые через телефонные линии), фидошные мейлеры передавали друг другу инфу о себе. Тогда это называлось EMSI-пакеты. В нашем маленьком городке завелся пранкер. Он изменил всю инфу в конфигах. И звонил на разные узлы, пакостил по мелочам.

Как я его идентифицировал? Хотя АОНа у меня не было. Дело в том, что в EMSI-пакетах фидошный мейлер также передавал текущее время на компе. А в то время, системное время (намеренная игра слов) выставляли вручную. Редко с точностью до секунд. Обычно с точностью до минут. К тому же оно съезжало постепенно. По NTP еще не синхронизировался никто.

Так что, когда пранкер звонил, я смотрел на разницу между его временем и моим. Потом в логах я нашел звонки с другого узла, более "легитимного", с корректной инфой, с которым у меня была та же разница времени.

Пранкер был идентифицирован и наказан.


Бывает так, что некоторые люди появляются одновременно. Хотя при этом отрицают что знакомы друг с другом. Хочется вспомнить старый мем "мы с Тамарой ходим парой".

Раньше соц.сети вроде facebook, twitter, высылали на емыло оповещение, что вас зафрендили. Было удобно наблюдать как у некоторых людей, одновременно, то появляется активность, то пропадает.


Юзая airmon, aircrack, вы, быть может, и не сломаете пароль. Но вы можете видеть, когда подключаются к wifi-точке. В какое время. И airmon покажет (WPA2/3) handshake. Обыкновенно это означает, что к wifi-точке близко подошел человек, чья мобила автоматически коннектится к ней. Иными словами, некто зашел в помещение. Эта информация так же может иметь ценность.

(Лирическое отступление -- у многих людей bluetooth-девайсы очень даже отсвечивают. И вы точно так же можете фиксировать время появления, например, вашего соседа дома. И время его ухода. А если вспомнить, что можно видеть насколько хорошо вы принимаете сигнал от этого bluetooth-девайса, то можно даже примерно прикидывать, насколько близко к вам находится этот человек.)

Люди могут переписываться через PGP, и вы не можете дешифровать их сообщения. Но, работая, например, на провайдере, и/или перехватывая SMTP-траффик, вы можете видеть, кто кому и когда пишет, и примерный объем сообщения. Что тоже может быть важно.

Собственно, это называют metadata.


Кол-во Wi-Fi handshak-ов это вообще удобная метрика -- как много людей приходит-уходит. Причем, вам не обязательно находится в том месте, вообще.

Вы можете сесть на лавочке рядом с неким бизнес-центром и наблюдать, как сотрудники приходят на работу (и коннектятся к Wi-Fi-роутеру). Как они уходят на обед и возвращаются.

Плюс, юзая airmon/airodump какой-нибудь, вы видите, как много траффика проходит через всякую WiFi-точку, и когда.

(the post first published at 20230126, updated at 20241118.)


List of my other blog posts.

Subscribe to my news feed,

Yes, I know about these lousy Disqus ads. Please use adblocker. I would consider to subscribe to 'pro' version of Disqus if the signal/noise ratio in comments would be good enough.