Интересно, а можно на основе симки сделать что-то полезное, не связанное с телефонией? Там же по сути микроконтроллер с памятью, файловой системой. Никто не видел никаких поделок на симках?
Ей всё равно нужно внешнее питание, внешний генератор тактовой частоты и мастер-устройство. Потому что сама сим-карта не делает вообще ничего, пока её не попросишь.
На основе массово выпускаемых SIM — вряд ли. Потому что оператор при выпуске ограничивает возможность установки приложений. Т.е. стандартная симка просто не даст Вам записать туда апплет вплоть до блокировки.
Нужно брать чистую карточку (например JCOP21 — на ней есть JCRE) и заливать на нее приложение.
Я для разработки использую NetBeans 6.9.1, для заливки — GPShell.
Работая на уровне APDU, можно как показано выше разнообразить работу встраиваемых систем. Например, GSM-сигнализации. SIM будет отвечать за идентификацию в сети оператора, а дополнительная Java-карта за логику приложения. Микроконтроллер в данном случае выступает тупо транслятором протоколов + терминал.
Другой бонус Java-карт — это возможность использования RMI при работе из ПК. Неуниверсально, зато разрабатывается быстрее.
Так что SIM-ок с возможностью произвольной записи ждем ) так же как и Java 3.0 карточек с поддержкой сервлетов.
Ну в память SMS и в телефонную книгу своих СИМок операторы же не запрещают писать? Значит из «обычной» СИМки вполне можно сделать вполне бюджетный аппаратный самоуничтожающийся криптоконтейнер для хранения (например) ключей шифрования: достаточно написать для описанного в статье аппаратного решения ПО, которое будет запрашивать и передавать в подключенную СИМку PUK, сохранять нужные данные в памяти для тел. книги либо SMS, а при «отмонтировании» криптоконтейнера — «взводить» механизм самоуничтожения, «накручивая» 3 неверных PIN+9 неверных PUK.
Насчет криптоконтейнера не уверен — по-моему, работа с EF телефонной книги и SMS не требует PIN. Т.е. не защищена. Для ключей давно уже придумали карточки по стандарту PKCS#11.
Да, чтение/запись смс и контактов не требует PIN-кода. А раз не требует, возможно, блокировка карты не влияет на чтение смс на низком уровне. Но можно ведь просто обнулить все смс — такой результат вас устроит?
Устройство получается мобильным, тогда я думаю здесь уместнее использовать микроконтроллер в качестве терминала. А он уже соединяется с компьютером. Почти етокен/рутокен — только здесь можно аппаратно стирать информацию с карты, например, кнопкой, подключенной к МК.
Кстати, есть чистые смарт-карты, которые стоят очень дешево.
Т.е. получается что у карточки с заблокированным PUK можно прочитать содержимое памяти СМС и телефонную книгу? Если это так, то это само по-себе открывает интересные возможности…
Пункт 10.5.3 Стандарта ETSI TS 100 997 гласит, что чтение и обновление файла EF_SMS, в котором находятся смски требует удовлетворения условия доступа CHV1, что означает необходимость правильного ввода пин-кода. Цитата:
«CHV1 (card holder verification 1): The action shall only be possible if one of the following three conditions is
fulfilled:
— a correct CHV1 value has already been presented to the SIM during the current session;
— the CHV1 enabled/disabled indicator is set to „disabled“;»
Перечитал стандарт. Я тоже ошибся с предложением использовать СИМку как криптоконтейнер.
У файла 'ICCID' уровень доступа на чтение — ALWAYS, т.е. если даже у нас будет СИМка с вытравленным/сошкуренным с пластика номером и одной оставшейся попыткой ввода PUK1 — атакующий всегда сможет прочитать ICCID из самой карты, а потом «пробить» PUK1 по базе оператора.
Да и новые позволяют.
AT+CSIM — Generic SIM access (APDU)
AT+CRSM — это Restricted SIM access, упрощенный доступ
Для чтения SMS вообще достаточно AT+CMGR
Некоторые телефоны с J2ME поддерживают JSR177, который дает интерфейсы для работы с картой.
Про андроид не скажу, но на iOS стандартными средствами точно не получится.
Общаемся с SIM-картой на низком уровне