SIM-карта и идентификация

11ачнем исследование SIM-карты с изучения механизмов ее защиты. В качестве модуля идентификации абонента (Subscriber Identity Module - SIM) SIM-карта хранит в надежном месте регистрационный номер, который идентифицирует своего владельца универсальным для всех стран мира образом. Этот номер может быть прочитан только после представления (или нейтрализации) конфиденциального кода владельца.

Из соображений элементарной осторожности следует воздержаться от передачи в явном виде этого номера по радиоканалам, которые являются чрезвычайно уязвимыми. Несмотря на то что процедуры разработаны таким образом, чтобы максимально избегать подобных случаев, стандарт GSM между тем предусматривает несколько ситуаций, когда разрешается пренебречь упомянутым правилом.

Номер, о котором идет речь, называется международным идентификационным номером мобильного абонента IMSI (International Mobile Subscriber Identity) и представляет собой настоящий номер счета, узнать который можно при помощи конфиденциального кода (PIN или CHV1) владельца. Интересно отметить, что в обычных меню мобильных телефонов его прочтение никогда не предлагается.

Однако прочесть его можно. Идентификационный номер IMSI располагается в файле 6F07 директории 7F20 (GSM), что обычно обозначается как 7F20:6F07.

Как известно, прежде чем получить доступ к данному номеру, необходимо ввести конфиденциальный код, который в рассматриваемом примере имеет вид 1234, а для новой карты это чаще всего 0000 (осторожно, троекратное введение неправильного кода надолго заблокирует карту).

Переведем этот код ASCII в шестнадцатеричный формат и дополним его до восьми цифр (предусмотренный максимум), «набив» FFh. Получится следующий результат:

31 32 33 34 FF FF FF FF

Для того чтобы представить код карте (после ее ответа на сброс), надо сначала набрать такой заголовок ISQ

АО 20 00-01 08

Если речь идет об устройстве для считывания, представленном в главе 4, то необходимо дождаться отображения байта процедуры, отправленного картой (в рассматриваемом случае 20), и затем набрать часть кода, соответствующую собственно данным команды:

31 32 33 34 FF FF FF FF

При использовании промышленного устройства для считывания байт процедуры фильтруется и можно все набирать за один раз (при этом, однако, исчезает возможность отслеживать приведенный выше диалог).

Если код верный, то в ответ карта отправит 90 00, а если код уже был дезактивирован и карте больше не нужен, то 98 08.

Для того чтобы точно"дезактивировать этот код, только создающий неудобства для проводимых экспериментов, можно набрать:

АО 26 00 01 08

Затем после получения байта процедуры 26 записать:

31 32 33 34 FF FF FF FF

Код всегда можно снова активировать, если набрать: АО 28 00 01 08

После получения байта процедуры 28 следует опять ввести:

31 32 33 34 FF FF FF FF

Предположим, что код был представлен или дезактивирован, теперь можно приступить к прочтению номера IMSI. Прежде всего следует обратиться к файлу, содержащему необходимую информацию, и очень тщательно выполнить следующие операции:

1. Набрать АО А4 00 00 02, карта должна ответить байтом процедуры А4.

2. Набрать 7F 20, карта отвечает двумя байтами отчета (в виде 9F XX), которые на данном этапе использоваться не будут.

3. Снова набрать АО А4 00 00 02, карта выдаст в ответ байт процедуры А4.

4. Набрать 6F 07; карта ответит двумя байтами, на которые не нужно обращать внимания.

5. Набрать АО во 00 00 09, и карта, наконец, выдает девять желаемых байт, перед которыми идет байт процедуры во и за которыми следует 90 00.

Карта ответит только 98 04, если конфиденциальный код не бьи представлен или дезактивирован надлежащим образом, и 67 00 при попытке прочитать большее количество байтов, чем содержит номер IMSI.

При использовании промышленного устройства для считывания байт процедуры во будет отсутствовать, а отчет 90 00 может отображаться как в начале, так и в конце считываемых данных или отдельно от них и даже совсем не отображаться.

Рассмотрим в качестве вымышленного примера английскую карту.

Девять полученных байт могут иметь следующий вид:

08 29 43 01 20 20 20 20 20

Для того чтобы получить номер IMSI, их надо проинвертировать:

809 23410 0202020202

Цифры 23410 обозначают английского оператора CELLNET: 234 -код Великобритании (код страны в системе мобильной связи МСС -Mobile Country Code) и 10 - код сети (код сети мобильной связи MNC - Mobile Network Code) ветви мобильной связи British Telecom.

Две цифры, следующие за 23410, называются подмножеством сети (network subset) и могут определять подразделения одной и той же сети (например, относящиеся к различным схемам абонемента или предварительной оплаты, с целью «запирания» отдельных субсидированных телефонов).

Остается, следовательно, восемь цифр для идентификации одной единственной карты из 100 млн потенциальных членов данного подсемейства. А если этого будет недостаточно, то рассматривается вопрос о 15-значном номере IMSI.

Не следует путать международный номер идентификации мобильного абонента IMSI с номером идентификации чип-карты ICCID (Integrated Chip Card IDentification), соответствующим серийному номеру карты, отпечатанному на ней и очень часто на ее упаковке. 10 байт (ОАп), из которых он состоит, не более секретны, чем штрих-код, стоящий на упаковке какого-либо продукта из супермаркета, и могут быть прочитаны, не представляя конфиденциального кода, в файле 2FE2 корневой директории (3F00):

АО А4 00 00 02 2F Е2

Карта отвечает кодом 9F 0F, который в данном случае следует проигнорировать. Далее набираем

АО ВО 00 00 0А

Карта отвечает кодом 90 00, затем отправляет, например, следующие десять байт данных:

98 33 01 29 89 20 20 20 20 20

После их инвертирования получаем:

89 33 10 92 98 02 02 02 02 02

Таким образом, данная карта выпущена в 1998 году французским оператором (международный телефонный код страны 33) и имеет серийный номер (естественно, фиктивный) 92 9802 0202 0202.

И наконец, полезно знать, что каждый чип, размещенный на SIM-карте, в свою очередь, идентифицируется с помощью кода ICC, который, например, в картах GemXplore фирмы Gemplus имеет длину 15 байт и записывается в 3F00:0002.