Вопрос
“а какова роль PIN-кода SIM-карты? Почему имея SIM-карту (но не зная PIN-кода), нельзя выполнять алгоритмы A3/A8 (см. процесс аутентификации)? Как шифруется информация на SIM-карте (адресная книга, например)?”
Если у вас есть мобильный телефон, то у вас с большой вероятностью есть какой-то gadget, в который вставляется карта памяти - цифровой фотоаппарат, mp3-плейер, или usb-накопитель для компьютера. Возможно, именно обилие разнообразных устройств, “начиняемых” картами памяти, привело к тому, что SIM-карта воспринимается многими как еще одна разновидность энергонезависимого накопителя - вроде SD, MMC или CompactFlash.
Что же такое SIM-карта на самом деле?
На самом деле SIM-карта является “смарт-картой” и содержит в себе микропроцессор и память (как ROM, так и EEPROM). Процессор этот, правда, не имеет собственного питания - его (равно как и генератор тактовой частоты) предоставляет телефон.
Каждая SIM-карта содержит определенный набор (под)программ, заложеных в нее производителем и определяющих ее поведение. Стандарт GSM описывает необходимый минимум операций, который должна поддерживать любая SIM-карта.
В частности, в стандартное поведение SIM-карты входит авторизация доступа к различным областям ее памяти. Для этого карта хранит у себя два “логина”, называемые PIN1 и PIN2 (другое, редкое название - CHV1 и CHV2, от card holder verification), и запрашивает их (при помощи телефона) при попытке считать и/или изменить определенные области памяти или вызвать определенные подпрограммы.
Если не вдаваться в подробности, то можно сказать, что без авторизации по PIN1 толку от SIM-карты практически нет - из нее почти ничего нельзя считать, и нельзя обратиться к большинству ее функций (включая выполнение алгоритмов A3/A8). Однако, в таком состоянии SIM-карты в дикой природе практически не встречаются. Для доступа к ним так или иначе используется телефон – либо пользователь стучит по клавишам, либо с помощью data cable работает с SIM-картой с персонального компьютера – а телефон первым делом после включения дает питание SIM-карте, и та сразу же требует PIN1.
Что и как хранится на SIM-карте?
Память SIM-карты организована в виде древовидной структуры:MF (master file) `--> GSM DF (directory file) `--> EF1 (elementary file) `--> EF2 ..... `--> TELCO DF `--> EF1 `--> EF2
Слово file тут употребляется в непривычном значении и может сбивать с толку. Для простоты, считайте, что MF и DF - это директории, а EF - это файлы, каждый из который может содержать одну или несколько “записей”, где запись - это пара (имя, значение).
Примеры EF, хранящися на SIM-карте: телефонная книга; принятые SMS-ы; перечень сетей, в которых SIM-карте запрещено регистрироваться; параметры broadcast channels соседних базовых станций.
Режим доступа к EF (read-only, read-write) определяется программой SIM-карты. Поскольку стандартный интерфейс работы с SIM-картой не предусматривает передачу/прием шифрованных данных, а другого способа доступиться к содержимому SIM-карты не существует, то для нас не существенно, как именно хранятся данные на SIM-карте - шифрованными, в виде 6-битных байтов, в переводе на китайский и т.п. :)
Подробный перечень стандартных EF и режимов доступа к ним можно найти в “GSM Handbook” на странице 330, в таблице 8.2 (см. список литературы). В принципе, SIM-картам там посвящен целый раздел (Section 8).