A8 (шифр)

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

A8 — алгоритм формирования ключа шифрования, который впоследствии используется для обеспечения конфиденциальности передаваемой по радиоканалу информации в стандарте мобильной сотовой связи GSM. A8 является одним из алгоритмов обеспечения секретности разговора в GSM вместе с A5 и A3. Его задача — генерация сеансового ключа Kc для потокового шифрования информации в канале связи между сотовым телефоном (MS — Mobile Station) и базовой станцией (BTS — Basic Transmitter Station) после аутентификации. По причине безопасности формирование Kc происходит в Sim-карте.

Обеспечение безопасности[править | править вики-текст]

Под «безопасностью» в GSM будем понимать невозможность несанкционированного использования системы и секретность переговоров абонентов. В этой статье рассматриваются некоторые механизмы безопасности:

  1. аутентификация
  2. секретность передачи данных

Механизм аутентификации[править | править вики-текст]

Схема аутентификации на шифре A8 для сетей GSM.

Для исключения несанкционированного использования ресурсов системы связи вводятся механизмы аутентификации. У каждого подвижного абонента есть стандартный модуль подлинности абонента (SIM-карта), которая содержит:

  1. международный идентификационный номер подвижного абонента (IMSI — International Mobile Subscriber Identity)
  2. свой индивидуальный 128-битный ключ аутентификации (Ki)
  3. алгоритм аутентификации (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.

Проблемы безопасности[править | править вики-текст]

  • Активные атаки — злоумышленник исполняет роль сетевого элемента (например, роль BST).
  • Небезопасная передача ключевой информации: RAND, SRES передаются в явном виде внутри и между сетями.
  • Односторонняя идентификация:
    1. Обеспечивается только аутентификация пользователя для сети.
    2. Нет средств идентификации сети для пользователя.
  • Слабые алгоритмы шифрования. Длина ключа слишком мала, в то время как скорости вычислений растут
  • Негибкость. Неадекватная гибкость, что мешает модернизировать и улучшать функциональные возможности защиты со временем.

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

  1. 1 2 Безопасность GSM (рус.). Архивировано 11 апреля 2012 года.
  2. Реализация COMP128 (англ.)  (недоступная ссылка — история). Архивировано 2 декабря 1998 года.
  3. Smartcard Developer Association

Ссылки[править | править вики-текст]