Группа исследователей представила на конференции ACM CCS интересную научную работу (pdf), которая посвящена специфическим криптографическим уязвимостям облачных сервисов. Дело в том, что многие современные веб-сайты полностью размещаются в облаке, обычно — на виртуальных машинах хостинг-провайдера Amazon. В результате, их сервисы TLS и SSH основаны на секретных ключах, которые генерируются в виртуальных машинах хостинг-провайдера. Проблема в том, что инстансы VM зачастую работают на одном и том же оборудовании, то есть на одних и тех же серверах. По соседству с вашим инстансом может быть виртуальная машина злоумышленника. Именно такую ситуацию описывает группа исследователей под руководством известного криптолога Арии Джуелса (Ari Juels) из RSA Laboratories в научной работе “Cross-VM Side Channels and Their Use to Extract Private Keys”.
Речь идёт об атаке по сторонним каналам (Side channels attack) между виртуальными машинами. Атака по сторонним каналам использует информацию о физических процессах в устройстве, которые не рассматриваются в теоретическом описании криптографического алгоритма. Криптоанализ осуществляется по побочным характеристикам, специфичным для конкретной реализации криптографического алгоритма, таким как время выполнения операций, потребляемая мощность, электромагнитное излучение и т.д.
Угроза атаки по сторонним каналам между виртуальными машинами давно обсуждалась исследователями, но практическая реализация такой атаки оказалась неожиданно сложной, поскольку гипервизоры VM значительно затрудняют получения точной информации с физического уровня сервера. Однако, группа исследователей под руководством Джуелса элегантно продемонстрировала, что подобная угроза действительно существует.
В опубликованном исследовании идёт работа с гипервизором Xen, который используется в облаке Amazon EC2, а также похожее оборудование: многоядерные серверы с отключённым SMT. Атака предполагает, что злоумышленник и жертва находятся на одном сервере и жертва расшифровывает текст по схеме Эль-Гамаля с помощью библиотеки libgcrypt v.1.5.0.
Схема Эль-Гамаля предполагает, что берётся фрагмент сообщения x, после чего вычисляется x^e mod N, где e — это секретный ключ, а N — обычно, простое число. Возведение в степень осуществляется по быстрому алгоритму.
Как можно заметить, в этом алгоритме используются конкретные биты секретного ключа, и скорость вычисления каждой операции зависит от того, является бит секретного ключа 0 или 1.
Способ атаки по сторонним каналам на алгоритм быстрого возведения в степень известен с 90-х годов, но сейчас исследователи показали, как можно на практике использовать его на виртуальных машинах с гипервизором Xen и на оборудовании, близком к Amazon EC2. Вычисление тайминга процесса на соседней VM осуществляется через общий доступ к кэшу L1 процессора на сервере (VCPU). В случае с 2-VCPU VM исследователи нагружают второй VCPU работой, чтобы гарантированно иметь доступ к тому же VCPU, на котором осуществляет криптографические вычисления виртуальная машина жертвы.
Исследователи разработали метод эффективного сбора данных с соседней VM, при условии, что она выполняет большой объём вычислительной работы с одним и тем же секретным ключом. Это вполне логичное предположение, если секретный ключ используется для SSL. Таким образом, нивелируются различные погрешности сбора данных из кэша, связанные с фрагментацией и выполнением посторонних процессов, не имеющих отношения к криптографии.
При каждой операции удаётся восстановить маленький фрагмент секретного ключа, потом фрагменты объединяются в единое целое.
S1: RSRMRSRMRSRSRSMR
S2: MRSRSRSRMR**SRMRSR
S3: SRMRSRSR
S4: MRSRSRSR**SRMRSR
S5: MR*RSRMRSRMRSR
S6: MRSRSRMRSRSRSRMR
------------------------------------------------
SRSRMRSRMRSRSRSMRSRSRMRSRSRSRMRSRMRSRSRMRSRMRSR
Во время эксперимента была осуществлена атака на 4096-битный открытый ключ Эль-Гамаля, который (из-за оптимизаций libgcrypt) соответствует 457-битному секретному ключу. После нескольких часов сбора данных было собрано около тысячи фрагментов закрытого ключа, из которых 330 были достаточно длинными для использования в реконструкции оригинала. Это позволило исследователям восстановить секретный ключ почти полностью, за исключением нескольких бит, которые легко подбираются брутфорсом.
Подобную атаку на OpenSSL/RSA осуществить гораздо сложнее, чем на ключ Эль-Гамаля и libgcrypt, но теоретически это возможно, если вам удастся попасть на один сервер с жертвой.