?

Log in

No account? Create an account
dump -0f - /dev/mind
Я знаю Haskell, OCaml, GSM, эндофункторы и много других страшных слов
Аутентификация в сети GSM 
9th-Nov-2006 02:50 pm
Заказной пост для netch, aefimov и andrew_dashin: "Я так понимаю, что у каждой sim-карты есть свой ID, по котрому определяют что это именно та самая карта. Волнует меня вот что: могу ли я подменить программно этот ID?" и "Каналы сетей действительно шифрованы или это сказки?"

Короткий ответ: у каждой SIM-карты действительно есть уникальный ID, называемый IMSI (International Mobile Subscriber Identity). Теоретически (при использовании программируемых или инженерных SIM-карт) его можно изменять. Однако, IMSI не является authentication token-ом - для того, чтобы определить "что это та самая карта", используется challenge-response протокол. В качестве секретного ключа используется длинное секретное число, которое хранится в SIM-карте так, что его невозможно считать и/или изменить. При определенной доле удачи его можно попытаться вычислить и сделать дубликат SIM-карты, но если не повезет - можно лишиться SIM-карты.

Длинный ответ:

В процессе производства SIM-карт производитель заносит в ROM каждой карты случайное число, называемое "Ki" (Key for identification). Это число будет служить секретным ключем для данной SIM-карты. Когда SIM-карты доставляются мобильному оператору, с ними передаются данные о Ki каждой новый SIM-карты. Эти данные (в виде пар (IMSI, Ki)) заносят в "центр аутентификации" мобильной сети (AuC).

Когда мобильный телефон пытается зарегистрироваться в сети, его IMSI передается в AuC, который передает обратно случайное число (RAND). Дальше SIM-карта и AuC параллельно выполняют одно и то же вычисление: (SRES, Kc) = A3/A8(RAND, Ki), где "A3/A8" - название стандартных алгоритмов вычисления SRES (Signed RESponse) и Kc (Key for ciphering) соответственно.

Телефон передает вычисленное SIM-картой значение SRES обратно в AuC, который сравнивает его со своим SRES. Если результаты совпали, то SIM-карта - подлинная.



Вычисленное значение Kc сохраняется в AuC/HLR/VLR и энергонезависимой памяти SIM-карты до следующей регистрации карты в сети и используется для шифрования голосового траффика, идущего по радиоинтерфейсу. Насколько я помню, расшифровкой занимается BSC и дальше (по наземным каналам) голос идет оцифрованным, но нешифрованным (кажется, кодек называется gsm 06.10).

Почему так тяжело клонировать SIM-карту?
Во-первых, у SIM-карты нет интерфейса, по которому можно непосредственно считать или изменить "Ki". Есть интерфейс, позволяющий выполнить алгоритм A3 или A8, но он защищен от попыток собрать достаточно данных для вычисления Ki путем перебора (brute forceing-а) - если слишком часто вызывать эти функции в течении короткого интервала времени, то SIM-карта заблокируется (приведет сама себя в негодность), после чего ее останется только выкинуть. Для успешного брут-форсинга нужно около 20000-40000 вызовов, и то - при условии, что в SIM-картах используется стандартный алгоритм A3 или несущественно отличающиеся его разновидности.

Кроме того, большинство операторов используют свои собственные алгоритмы вместо стандартного A3, не публикуя принципы их работы.

В сумме это приводит к тому, что клонировать SIM-карту возможно, но очень-очень тяжело.

Литература:
Comments 
9th-Nov-2006 02:34 pm (UTC)
Ну дык, как электронная подпись. Сеть передает в девайс challenge, он его шифрует с приватным ключом и передает обратно. Сеть расшифровывает с публичным ключом - если получилось, и получилось то что надо - значит подлинник. Подслушивание ничего не даст при хорошем алгоритме генерации challenge и достаточной длине ключа.
9th-Nov-2006 02:44 pm (UTC)
Для этого девайсу должен быть известен public key текущей сети/AuC-а (не забываем про роуминг) и средство проверить, что нас не дурят и не пытаются нам подсунуть левый AuC и провести против нас known plaintext attack :)
9th-Nov-2006 02:53 pm (UTC)
Чего-то не понимаю, сорри. Просто в существующей схеме заменить Ki на public key и шифрование на дешифрование на стороне сети.

Девайс точно так же защищается от левых запросов как и в Вашем описании - ограничением по количеству операций в единицу времени. К тому же можно сделать ограничение - шифруем не абы что, а несколько десятков байт в определенном формате.

В любом случае, схема будет не менее устойчива к known plaintext attack, чем симметричное шифрование, не так ли?
9th-Nov-2006 02:56 pm (UTC)
есть подозрение, это не было сделано потому, что асимметричное шифрование подразумевает изначально бОльшие вычислительные затраты, а выигрыш не так существенен, проще защищать базу оператора
(Deleted comment)
9th-Nov-2006 03:32 pm (UTC)
С простыми, но очень большими числами :)
(Deleted comment)
9th-Nov-2006 03:37 pm (UTC)
Их надо еще где-то хранить :)
Вот скажи сходу, если у тебя регистр K бит, и два числа по N*K бит, какой порядок сложности от N будет у алгоритма умножения одного на другое?
9th-Nov-2006 04:27 pm (UTC)
Ну вообще говоря N^2, но есть еще и быстрое умножение, там что-то порядка n^1.3.
(Deleted comment)
9th-Nov-2006 03:50 pm (UTC)
Каке еще затраты?
не скажу в абсолютных цифрах, но точно бОльшие, чем при симметричном алгоритме, согласны ?
И их должна выполнять симка.
вот именно
10th-Nov-2006 05:31 am (UTC)
Хм, если я не ошибаюсь, то ассиметрично сейчас шифруют только сессионный ключ. Данные все шифруют симметричными алгоритмами (PGP по крайней мере).
10th-Nov-2006 08:15 am (UTC)
Да, я торможу.

Учитывая, в каком году все придумываль, я думаю, что уперлись в производительность, и не стали дальше заморачиваться.

У меня вон Palm с процессором 33 mHz перед логином по ssh2 2.5 минуты думает. А SIM-карте - еще тяжелее.
9th-Nov-2006 10:19 pm (UTC)
А с каких пор это проблема? Посмотри на SSH или SSL, ключ клиента (в первом) или сертификат (во втором) спокойно отрабатывается и нет никаких причин морочиться с неотдачей его кому не следует. Ну да, сразу не получилось - PKCS#1 не зря был придуман, и версия 2.0 оного тоже. Но ведь получилось.

Разве что мощности на такое телефону не хватало когда этот алгоритм только строился...
10th-Nov-2006 08:16 am (UTC)
Точно-точно, торможу :)

Я порылся в инете, ничего толкового не нашел, но версия про низкое быстродействие SIM-карты кажется мне самой реальной.
10th-Nov-2006 01:59 pm (UTC)
А нынче на симку уже гиг памяти впихнуть ухитряются :)
This page was loaded Oct 22nd 2019, 1:43 am GMT.