Устойчивость и безопасность SIM-карт.

Файловая система SIM-карт обладает достаточно высокой защищенностью. Для операций с файлами (например, чтения или записи) необходимо выполнение условий доступа. В заголовке каждого из элементарных файлов указано, по какому условию становится возможной та или иная операция. Например, файл записной книжки можно прочесть лишь в случае, если SIM-карте предъявлен код PIN1. Та кое же условие распространяется и на запись. Некоторые файлы вообще никогда нельзя прочесть и/или записать, или, наоборот, чтение возможно всегда, даже когда ни один из кодов не предъявлен.

Всего для SIM-карт существуют 16 различных уровней, точнее, условий, доступа. Слово «уровень» здесь следует понимать относительно. Выполнение условий для определенного «уровня» вовсе не означает, что доступ к «младшим уровням» будет предоставлен при этом автоматически.

Самый первый «уровень» — доступ разрешен всегда. Затем идут доступ по PIN1 и PIN2, далее — доступ по административным кодам. Наконец, самый старший — доступ запрещен всегда. Одни коды доступа, например, PIN1 и PIN2, PUK подаются карте командой с мобильного телефона локально. Другие коды (пароли) могут быть переданы оператором связи.

Коды PIN позволяют считывать и изменять содержимое некоторых «пользовательских» файлов, таких как телефонный справочник и хранилище SMS. Коды PUK служат для разблокировки карты в случае ее блокирования после нескольких не правильных попыток ввести PIN-код.

PIN и PUK-коды содержатся в определенных файлах (CHV1 и CHV2) в файловой системе GSM. Помимо самих кодов, эти файлы несут и сопутствующую информацию: число попыток ввода кода до блокировки, число оставшихся попыток, а также флаг необходимости запроса кода (да/нет).

Эти файлы (CHV1 и CHV2) используются телефоном при запросе ввода PIN и PUK-кодов. Проверка кодов происходит путем сравнения введенных цифр с содержимым файла. Предъявление PIN/PUK кодов ни в коей мере не позволяет вносить в память карты такие изменения, как создание, запись или удаление файлов. Для этого служат административные пароли, которые обычно задаются оператором связи при изготовлении карты и держатся им в строгом секрете.

Кроме того, файлы могут быть помечены как непригодные к использованию, временно или навсегда. Такая пометка применяется при включении и отключении различных сервисов, предоставляемых картой, например, WAP или GPRS.

Задача сохранения целостности записываемой информации решается в рамках файловой системы SIM-карты несколько иначе, чем в обычных «компьютерных» ФС. Предположим, когда жесткий диск вашего компьютера перезаписывает содержимое какого-либо файла, внезапно пропадает питание. Если работа системы завершается некорректно, скорее всего, записываемая информация будет потеряна.

У SIM-карты нет выключателя питания, как у компьютера, а пользователь может вынуть ее из телефона в самый неподходящий момент. Например, если шел процесс обновления файла-ключа и в этот момент пропало питание, то уже никто не будет знать, какой именно ключ необходимо предъявлять — новый так и не был записан, а старый уже безвозвратно испорчен. Такая ситуация недопустима в принципе!

Для решения проблемы используется специальный программный механизм, реализованный в рамках операционной системы. Основная его идея заключается в следующем: перед началом модификации данных заранее создается резервная копия той области памяти, в которой нужно провести изменения (в NVM-памяти), после чего выставляется специальный флаг (также в NVM-памяти), указывающий на то, что копия создана. Только после этого система приступает к самим изменениям. После окончания модификации данных флаг сбрасывается. На этапе, когда питание на карту подано, при запуске, операционная система проверяет этот флаг и, если он установлен, восстанавливает информацию. После восстановления флаг сбрасывается. Подобный алгоритм обеспечивает целостность информации при возникновении сбоев в процессе изменения данных. Для особо критичных файлов также вычисляется контрольная сумма.