Источник: Christine Daniloff/MIT |
В 2009 году специалисты Массачусетского технологического института продемонстрировали возможность выяснения ключей AES путем анализа закономерностей доступа алгоритма дешифровки к кэш-памяти. Простейший способ защиты от подобных атак — запрашивать данные сразу со всех адресов в памяти и отбрасывать все, кроме нужных; но это потребовало бы непозволительно много времени.
Исследователи из МТИ предложили идею аппаратного модуля под названием Ascend, реализующего защиту от подобных атак. Ascend формирует дерево, в котором каждому узлу присваивается случайный адрес памяти. Таким образом, к каждому адресу существует маршрут. Когда процессору нужны данные по какому-либо адресу, он отправляет запрос сразу ко всем адресам на маршруте, где есть нужный. Чтобы атакующий ничего не узнал по особенностям доступа к памяти, всякий раз после обращения к конкретному адресу тот меняется местами с другим узлом, выбранным случайно.
Поскольку запросы-«пустышки» происходят только к адресам на одном маршруте, а не ко всем сразу, Ascend экспоненциально сокращает затраты времени на сокрытие адреса. Модуль также защищает от атак, извлекающих сведения путем анализа времени выполнения вычислений: запросы к памяти выполняются через регулярные интервалы, даже когда процессору не требуются новые данные.