Как используются данные SIM‑карты в GSM (2G): аутентификация, ключи, IMSI, A3/A8
Всем привет! В GSM (2G) SIM‑карта хранит постоянный секретный ключ абонента Ki и идентификатор IMSI; при регистрации в сети используется механизм «вызов‑ответ»: сеть посылает случайное число RAND, SIM вычисляет подписанный ответ SRES = A3(Ki, RAND) и сеансовый ключ шифрования Kc = A8(Ki, RAND), после чего сеть проверяет SRES и при успехе включает шифрование A5.
Важно: Ki никогда не передаётся по радиоинтерфейсу и не выводится из SIM; вся криптография «вызов‑ответ» выполняется внутри SIM.jucs+2
2. Роли сетевых элементов (кратко)
- MS (Mobile Station) = ME (телефон) + SIM.
- BTS/BSC — радиодоступ.
- MSC/VLR — коммутация и локальное управление сессиями; VLR хранит «триплеты» аутентификации для абонента.
- HLR — домашний реестр абонентов.
- AuC (Authentication Center) — генерирует RAND, SRES, Kc (триплеты) на основе IMSI и Ki.
3. Протокол аутентификации GSM (2G): пошагово
Ниже — упрощённая последовательность при регистрации/доступе к услугам.
text[MS/SIM] [MSC/VLR] [HLR/AuC]
| | |
| 1. Location Update / CM Service Request (IMSI или TMSI) |
|--------------------------------------------------------------->|
| | 2. Запрос триплетов для IMSI |
| |------------------------------>|
| | 3. Возврат N триплетов |
| | (RAND_i, SRES_i, Kc_i) |
| |<------------------------------|
| | |
| 4. AUTHENTICATION REQUEST | |
| (RAND) | |
|<-------------------------------| |
| 5. SIM: SRES' = A3(Ki, RAND) | |
| Kc' = A8(Ki, RAND) | |
| 6. AUTHENTICATION RESPONSE | |
| (SRES') | |
|------------------------------>| |
| | 7. Проверка: SRES' == SRES? |
| | Если да → аутентификация OK |
| 8. Cipher Mode Command (A5/x) | |
|<-------------------------------| |
| 9. Включение шифрования A5/x с Kc' |
|<================================================================>|- Сеть заранее получает от AuC «триплеты» (RAND, SRES, Kc) для данного IMSI; при аутентификации она посылает только RAND.
- SIM вычисляет SRES' и Kc' по тем же формулам; VLR сравнивает SRES' с ожидаемым SRES.
- После успеха сеть инициирует Cipher Mode Command и далее трафик шифруется A5/x с ключом Kc.
4. Алгоритмы A3 и A8: что именно считается
Формально стандарт GSM не фиксирует одну конкретную реализацию A3/A8; операторы выбирают алгоритм (часто COMP128‑1/2/3, milenage‑подобные варианты в 2G‑совместимых реализациях и др.).
- A3: SRES = A3(Ki, RAND) → 32‑битный ответ.
- A8: Kc = A8(Ki, RAND) → 64‑битный сеансовый ключ для A5/x.
На практике A3 и A8 часто реализованы как единая функция, выдающая (SRES, Kc) из (Ki, RAND).
5. Роль IMSI и почему он важен
- IMSI используется для идентификации абонента в HLR/AuC и получения правильного Ki (и триплетов).
- При первой регистрации в новой зоне MS обычно передаёт IMSI (если нет валидного TMSI), что делает IMSI видимым для любой базовой станции в радиусе.
- В дальнейшем сеть старается использовать TMSI вместо IMSI для конфиденциальности, но IMSI всё равно может быть запрошен (например, при сбоях или специальных процедурах).
- TMSI (Temporary Mobile Subscriber Identity) — это временный идентификатор абонента, который сеть выдаёт мобильному устройству после успешной регистрации, чтобы вместо постоянного IMSI использовать его в радиоканале для повышения конфиденциальности.
6. Риски безопасности GSM (2G), связанные с SIM и аутентификацией
GSM (2G) имеет ряд фундаментальных ограничений, которые напрямую касаются использования данных SIM:
- Односторонняя аутентификация
- Сеть аутентифицирует телефон (MS), но телефон не аутентифицирует сеть.
- Это позволяет IMSI‑catcher'у (фейковой базовой станции) притворяться «легальной» сетью: телефон отправляет IMSI/TMSI, проходит «аутентификацию» у злоумышленника, а трафик может не шифроваться или шифроваться слабым алгоритмом.
- Слабость шифрования A5/1 (и A5/2)
- A5/1 (64‑битный ключ Kc) уязвим к атакам по заранее вычисленным таблицам (rainbow tables); практическая расшифровка возможна за секунды–минуты на обычном железе.
- A5/2 ещё слабее и практически не защищает.
- Злоумышленник может принудительно переключить сессию на A5/0 (без шифрования) или слабый A5/x.
- Зависимость от реализации A3/A8
- Ранние популярные реализации (например, COMP128‑1) имели криптографические слабости, позволяющие при достаточном числе запросов извлекать Ki.
- Даже при более стойких A3/A8, 32‑битный SRES и 64‑битный Kc ограничивают криптостойкость по современным меркам.
- Перехват IMSI
Эти ограничения — причина, по которой в 3G/4G/5G введена взаимная аутентификация (сеть тоже доказывается абоненту), более длинные ответы (RES вместо SRES), ключи CK/IK и более стойкие алгоритмы (Milenage, AES‑based и др.).
7. Сводная схема «данные SIM → параметры сессии»
textSIM (Ki, IMSI, A3/A8)
│
│ IMSI → HLR/AuC → выбор Ki
│
└─► AuC: для каждого RAND_i
SRES_i = A3(Ki, RAND_i)
Kc_i = A8(Ki, RAND_i)
триплет (RAND_i, SRES_i, Kc_i) → VLR
При аутентификации:
VLR → MS: RAND
SIM: SRES' = A3(Ki, RAND)
Kc' = A8(Ki, RAND)
MS → VLR: SRES'
VLR: если SRES' == SRES → OK, шифрование A5/x с Kc'