Алгоритмы COMP128 являются реализациями функций A3 и A8, определенных в GSM Стандарт. A3 используется для аутентификации мобильной станции в сети. A8 используется для генерации сеансового ключа, используемого A5 для шифрования данных, передаваемых между мобильной станцией и BTS.
. Существует три версии COMP128. Изначально они были конфиденциальными. Частичное описание первой версии просочилось в 1997 году и было завершено с помощью обратного проектирования. Это привело к полной публикации в 1998 году. Вторая и третья версии были получены путем обратного проектирования программного обеспечения, которое проверяет соответствие SIM-карт.
Подробнее о способах использования A3 и A8 см. Центр аутентификации.
A3 и A8 принимают 128-битный ключ (K i) и 128-битный запрос (RAND) в качестве входных данных. A3 выдает 32-битный ответ (SRES), а A8 создает 64-битный сеансовый ключ (K c). A3 / A8 - это комбинированная функция с K i и RAND в качестве входов и SRES и K c в качестве выходов.
Поскольку A3 и A8 дополнительно не определены, операторы могут свободно выбирать конкретные алгоритмы, используемые для A3 и A8.
Алгоритмы COMP128 реализуют функцию A3 / A8. Их три:
Все они построены на основе функции сжатия с двумя 128-битными входами и одним 128-битным выходом, отсюда и их названия. K i и RAND используются как входы функции сжатия. Затем биты с его выхода используются для заполнения SRES, и K c.
COMP128-1 использует функцию сжатия с восемью циклами, которая основана на структуре бабочки с пятью ступенями. SRES заполняется первыми 32 битами вывода. K c заполняется последними 54 битами вывода, за которыми следуют десять нулей.
Для полного описания алгоритма читатель может просмотреть реализацию OsmocomBB.
Реализация COMP128-2 и COMP128-3 является заметно сложнее, чем COMP128-1. Для полного описания алгоритма читатель может просмотреть реализацию OsmocomBB или реализацию FreeRADIUS, обе основаны на коде Python из статьи Secrets of Sim. COMP128-2 идентичен COMP128-3 за исключением того факта, что в конце он очищает 10 крайних правых битов K c.
Хэш-функция COMP128-1 считается слабой, поскольку ее недостаточно. 42>распространение небольших изменений на входе. Были продемонстрированы практические атаки, с помощью которых можно восстановить ключ абонента с SIM-карты.
Сеансовые ключи, созданные COMP128-1 и COMP128-2, намеренно имеют только 54 бита энтропии. Это значительно ослабляет шифрование A5 или A6.