A8 (шифр)
A8 — алгоритм формирования ключа шифрования, который впоследствии используется для обеспечения конфиденциальности передаваемой по радиоканалу информации в стандарте мобильной сотовой связи GSM. A8 является одним из алгоритмов обеспечения секретности разговора в GSM вместе с A5 и A3. Его задача — генерация сеансового ключа Kc для потокового шифрования информации в канале связи между сотовым телефоном (MS — Mobile Station) и базовой станцией (BTS — Basic Transmitter Station) после аутентификации. По причине безопасности формирование Kc происходит в Sim-карте.
Обеспечение безопасности
Под «безопасностью» в GSM будем понимать невозможность несанкционированного использования системы и секретность переговоров абонентов. В этой статье рассматриваются некоторые механизмы безопасности:
- аутентификация
- секретность передачи данных
Механизм аутентификации
Для исключения несанкционированного использования ресурсов системы связи вводятся механизмы аутентификации. У каждого подвижного абонента есть стандартный модуль подлинности абонента (SIM-карта), которая содержит:
- международный идентификационный номер подвижного абонента (IMSI — International Mobile Subscriber Identity)
- свой индивидуальный 128-битный ключ аутентификации (Ki)
- алгоритм аутентификации (A3), и генерации сеансового ключа (А8).
Ключ аутентификации пользователя Ki уникален и однозначно связан с IMSI, оператор связи по значению IMSI «умеет» определять Ki и вычисляет ожидаемый результат. От несанкционированного использования SIM защищена вводом индивидуального идентификационного номера (PIN-код — Personal Identification Number), который присваивается пользователю вместе с самой картой.
Рассмотрим процедуру проверки подлинности абонента. Сеть генерирует оказию — случайный номер (RAND) и передаёт его на мобильное устройство. В Sim-карте происходит вычисление значения отклика (SRES — Signed Response) и сеансового ключа, используя RAND, Ki и алгоритмы A3, А8. Мобильное устройство вычисляет SRES и посылает его в сеть, которая сверяет его с тем, что вычислила сама. Если оба значения совпадают, то аутентификация пройдена успешно и мобильное устройство получает от сети команду войти в шифрованный режим работы. Из-за секретности все вычисления происходят внутри SIM. Секретная информация (такая как Ki) не поступает вне SIM-карты. Ключ Kc также не передаётся по радиоканалу. Подвижная станция (ПС) и базовая станция (БС) вычисляют их отдельно друг от друга.
Реализация алгоритма
Формат входных и выходных данных для алгоритма A8 строго определён консорциумом 3GPP. Но A8 не является стандартизованным, а определяется оператором. Алгоритмы A3 и А8 реализованы как единое вычисление, выходные данные которого (96 бит) трактуются так: 32 бита для образования SRES и 64 бита для образования Kc.[1] Длина значимой части ключа Kc, выданная алгоритмом А8 может быть меньше 64 бит. Тогда значимые биты дополняются нулями до количества 64, указанного в спецификации алгоритма. В настоящее время известны следующие стандартные реализации алгоритма A3/A8:
- COMP128
- COMP128-2
- COMP128-3
- MILENAGE
Хотя существуют альтернативы COMP128, но этот протокол по-прежнему поддерживается в подавляющем большинстве сетей GSM[1]. По данным SDA (Smarcard Developer Assosiation), большинство операторов связи не производит проверку на одновременное включение «одинаковых» абонентов, настолько они уверены в невозможности клонирования Sim-карт.
COMP128
История
COMP128 — ключевая хеш-функция, генерирующая за один проход SRES и Kc. А3, А5, А8 были разработаны в Великобритании, и изготовители мобильных телефонов, желающие реализовать эту технологию шифрования в своих продуктах, должны соглашаться на неразглашение тайны и получать специальные лицензии от британского правительства. Разногласия между изготовителями мобильных телефонов и британским правительством вокруг экспорта технологии шифрования в GSM были улажены в 1993. Но в 1998 году некоторые документы с описанием были опубликованы в Интернете. Несмотря на неполное описание, было установлено, какие именно криптографические методы используются в GSM. Дэвид Вагнер и Айан Голдберг буквально за день взломали алгоритм COMP128, так как его ключ был слишком коротким. Криптографический алгоритм COMP128 все ещё используется, но в улучшенной форме под названием COMP 128-2. Криптографические алгоритмы A3 и A8 специфицированы для сетевых операторов, хотя некоторые параметры стандартизованы для обеспечения взаимодействия между сетями.
Общие утверждения
На вход алгоритму подается 128-битный (16 байт) RAND, полученный от базовой станции и 128-битный Ki, прошитый в Sim-карте. Выходом является 96-битная (12 байт) последовательность. Спецификация стандарта[2] утверждает, что первые 4 байта являются SRES, который мобильный аппарат отправляет для аутентификации, а байты с 5-го по 12-й — это сессионный ключ Kc. Следует заметить, что биты ключа с 42 по 95, за которыми идут 10 нулей. То есть у 64-битного ключа Kc энтропия не превосходит 54 бита. Это представляет существенное ослабление криптостойкости шифра A5 более чем в 1000 раз.
Ослабление криптостойкости
Одной из причин, объясняющих, почему разработчики GSM держали в секрете алгоритмы, возможно, является их сотрудничество со службами контроля.
«Единственная сторона, которая заинтересована в ослаблении защиты, это национальные службы надзора,
— сказал директор SDA (Smartcard Developer Association[3]) Марк Брисено, —
покупателям нужна секретность переговоров, а операторы не несут дополнительных расходов от использования полноразмерного ключа»
.
3GPP
В архитектуре 3GPP (как и в GSM) всем операторам не обязательно использовать одинаковые алгоритмы аутентификации и генерации ключа. Конечно существуют рекомендации и в качестве примера приводится один алгоритм. Однако, как показывает практика, именно он становится повсеместно используемым. В 3GPP таким примером стал MILENAGE. MILENAGE построен на основе шифра Rijndael (победитель конкурса AES на лучший американский криптостандарт, сменивший DES). Что касается А5 — шифрования переговоров и обеспечения целостности сообщений, то он непременно должен быть одинаков у всех операторов, чтобы они могли предоставлять услугу роуминг. Этот алгоритм в 3GPP построен на основе блочного шифра KASUMI.
Проблемы безопасности
- Активные атаки — злоумышленник исполняет роль сетевого элемента (например, роль BTS).
- Небезопасная передача ключевой информации: RAND, SRES передаются в явном виде внутри и между сетями.
- Односторонняя идентификация:
- Обеспечивается только аутентификация пользователя для сети.
- Нет средств идентификации сети для пользователя.
- Слабые алгоритмы шифрования. Длина ключа слишком мала, в то время как скорости вычислений растут
- Негибкость. Неадекватная гибкость, что мешает модернизировать и улучшать функциональные возможности защиты со временем.
См. также
Примечания
- Безопасность GSM .
- Реализация COMP128 (англ.) (недоступная ссылка). Архивировано 2 декабря 1998 года.
- Smartcard Developer Association (недоступная ссылка). Дата обращения: 3 декабря 2009. Архивировано 22 августа 2009 года.