- Смарт-карты. Часть 1. Принципы работы
- Применение смарт-карты
- Работа смарт-карты
- Карты Native и Javacard
- Что такое смарт карта?
- Виды смарт — карт
- Контактные смарт — карты, интерфейс ISO 7816
- Контактные смарт — карты, USB — интерфейс
- Бесконтактные смарт — карты
- Карты памяти
- Интеллектуальные карты
- Область использования контактных и бесконтактных карт
- Карты для Андроид
- Карты на телефон на Андроид
- Смарт-карты для самых маленьких
- Подсистема хранения данных
- Типы файлов
- Разграничение доступа
Смарт-карты. Часть 1. Принципы работы
Все мы пользуемся разными видами смарт-карт в повседневной жизни. Наиболее яркими примерами смарт-карт являются: SIM-карты, кредитные карты, электронные документы и т.д.
По сути, смарт-карта — это оптимизированный для криптографии микроконтроллер с повышенным уровнем безопасности. Что это означает? В отличие от стандартного микроконтроллера доступ к памяти смарт-карты строго контролируется процессором. Таким образом, чтение данных с карты их написание на ней регулируются ПО самой карты. Более того, производители чипов предпринимают меры по предотвращению несанкционированного доступа (копирования всей памяти, перепрограммирования) к карте на электронном и физическом уровне.
Применение смарт-карты
Смарт-карта используется в тех случаях, когда необходимо удостоверить подлинность ее обладателя. Примером тому служит SIM-карта. Ее главной ролью является доказать оператору, что телефон, подключившийся к сети, принадлежит конкретному абоненту. После подобной проверки оператор сможет направлять коммуникацию с номера и на номер абонента именно тому телефону, а также регистрировать платежный баланс абонента.
С технической точки зрения карта наделена следующими функциями:
- Сохранение идентификационных данных обладателя карты (чаще всего ID-номера, а не контактные данные обладателя).
- Сохранение и проверка PIN-кодов для осуществления двухфакторной аутентификации.
- Генерация и сохранение криптографических ключей и сертификатов. Обычно данные ключи используются исключительно для исполнения других функции внутри карты и не подлежат чтению.
- Генерация цифровой подписи.
- Аутентификация по схеме «Вызов-ответ».
- Иные специфические функции, присущие тому или иному виду карты.
Работа смарт-карты
Карты не работают автономно, а только в связке с так называемым терминалом (телефон, банкомат, иной проводной или беспроводной электронный читатель). Читатель обеспечивает карту электричеством и посылает команды. Карта никогда не инициирует коммуникацию, а всегда обязательно отвечает на любые посланные ей терминалом команды. В случае отсутствия ответа карта будет считаться «MUTED», т.е. не работающей. В подобной ситуации терминал либо никак не реагирует на ошибку, либо пытается восстановить общение с картой после осуществления RESET.
На логическом уровне коммуникация между терминалом и картой происходит в формате APDU, описанном стандартом ISO7816-4. Что касается физического уровня, то выше упомянутое общение регулируется не каким-то одним определенным стандартом, а их множеством. К примеру, существуют стандарты для контактного (ISO7816-3 T=0 и T=1, USB и т.д.) и бесконтактного (ISO14443, NFC/SWP) общения.
Я бы хотел поподробнее описать коммуникацию терминал с картой. Она происходит следующим образом:
- Инициализация физического канала (Cold reset, ATR, и т.д.)
- Выбор с помощью команды SELECT желаемой программы. Данный шаг является опциональным. В случае если он не исполняется, то общение будет осуществляться с программой, выбранной по умолчанию при инициализации канала
- Дальнейшее общение для реализации конкретных задач
Стоит упомянуть, что на карте может быть установлена более чем одна программа. К тому же, терминал имеет возможность параллельного общения с одной или несколькими программами с помощью так называемых логических каналов. Количество поддерживаемых логических каналов зависит от конкретной карты. Стандарт ISO7816-4 позволяет карте поддерживать не более чем 20 каналов. Однако, на практике большинство карт поддерживают только 4 канала.
Карты Native и Javacard
Некоторые смарт-карты выходят в производство с уже заранее установленными на них и не подлежащими изменению, дополнению, либо удалению одной или более программами, предназначенными для исполнения конкретных функций (SIM и USIM, EMV и т.д.). Подобные карты, носящие название Native, являются привлекательными благодаря их низкой цене (при оптовых закупках) и относительной простоте используемого для их программирования кода, что уменьшает вероятность проблем с безопасностью карты. Однако наиболее интересными, на мой взгляд, картами являются карты на основе JavaCard и Global Platform, в которых ОС карты — это платформа, на которой можно установить различные приложения. Приложения, написанные для JavaCard, с использованием стандартных API, можно будет загрузить на все карты, поддерживающие совместимую версию платформы, вне зависимости от производителя карты. Что касается Global Platform, то это набор спецификаций, регулирующий безопасную администрацию карты, в том числе установку, блокировку либо удаление тех или иных приложений, а также управление жизненным циклом (Life Cycle) карты.
Маленькое примечание по поводу администрации карты. Пользователь карты, как правило, не является владельцем и администратором карты. К примеру, администратором SIM-Карты является оператор мобильной связи, а не абонент. Только оператор имеет право устанавливать или удалять приложения на/с карты. Тем не менее, существует также возможность приобрести «пустые» карты для собственной разработки приложений.
Таким образом, в данной части своей статьи я коснулся базиса работы смарт-карты, как на внешнем, так и на внутреннем уровне, а также дал краткое определение понятия смарт-карты. Следующие части статьи я хотел бы посвятить:
- краткому описанию формата APDU по стандарту ISO7816-4
- описанию формата BER-TLV
- понятию и сущности JavaCard
- различным аспектам Global Platform
Источник
Что такое смарт карта?
Смарт — карта — это пластиковая карта, в которой установлена микросхема. Такие кадры предназначены для контроля и записи данных, также часто они способны проводить криптографические вычисления. Смарт — карта может выполнять различные функции по обработке информации, а затем ее сохранять. Само название говорит о возможностях карты, поскольку Smart означает «интеллектуальный», т.е. смарт — карта является умной.
Виды смарт — карт
Смарт — карты можно разделить на 2 основных вида:
По функциональности они также делятся на 2 типа:
- карты памяти — такие карты содержат какое-то количество информации и функцию их разграничения;
- интеллектуальные карты — имеют возможность управления информацией, содержащиеся на микропроцессоре.
Теперь разберемся в видах и функционале подробнее.
Контактные смарт — карты, интерфейс ISO 7816
Такие смарт — карты содержат зону соприкосновения, в которой заключены несколько своеобразных лепестков. В момент, когда карту помещают в считыватель, происходит прикосновения чипа и коннекторов, благодаря считыватель может получить или записать данные с чипа.
Такие контактные карты не требуют батареек — вся энергия подается со считывателя. Распространение таких карта заключается в SIM-картах, банковских картах и т.д.
Контактные смарт — карты, USB — интерфейс
Идентичны микросхемы интерфейса ISO 7816, но в дополнение находится USB считыватель, оба интерфейса совмещены в едином корпусе. Такие карты более удобны для компьютерной аутентификации.
Бесконтактные смарт — карты
В данном виде карта имеет связь со считывателем при помощи техники RFID. Чтобы связь была установлена, карту нужно поднести максимально близко к считывателю для проведения какой-либо операции. Подобные карты необходимы для проведения процедуры в кратчайшие сроки, а именно: в общественном транспорте, в торговых центрах и т.д.
Карты памяти
Содержат определенные данные, а также встроенный механизм разграничения. Часто это карты для быстрых платежей в аквапарке, транспортах, метро и др.
Интеллектуальные карты
Карты имеют микропроцессоры и возможность загрузки алгоритма работы. Применяются такие карты в основном в сложных аутентификационных действиях, протоколах обмена и т.д.
Область использования контактных и бесконтактных карт
Удобство применения, максимальная скорость считывателя и многофункциональность за небольшой срок сделали смарт — карты весьма популярными. Такие карты находят свое применение практически во всех сферах жизни:
- телефония — картами можно расплатиться в таксофонах;
- транспортные связи — в троллейбусах в приборе кондуктора или метрополитенах;
- здравоохранение — медицинские карты пациентов, полисы;
- карты потребителей — благодаря картам происходит начисление баллов, это могут быть скидочные карты и т.д.
Особо важны такие карты в приложениях, чувствительных к безопасности и обеспечивающих гарантию надежности. К подобным приложениям относят:
- разнообразные банковские действия, оплата товаров/услуг, дебетовые/кредитные карты, карты, направленные на начисление стипендий, пенсий и заработных плат и пр.
- хранение личных конфиденциальных данных;
- гарантия информационной безопасности — засекречивание данных пользователей компьютерных сетей, контроль доступа в зданиях и т.д.
Некоторые смарт — карты имеют функцию самоблокировки. Что это означает? В какой-то момент смарт — карта может самостоятельно заблокироваться, тогда дальнейшая работа с ней не будет возможна. Самостоятельно и беспричинно однако она не блокируется. Такое действие может произойти в том случае, когда карта отмечает попытки несанкционированного доступа.
Smart — карты контроля используются для управления доступом определенного владельца этой карты в здания, комнаты, автомобильные стоянки и т.д. Интеллектуальные же смарт — карты позволяют управлять доступом к компьютерам, а также информацией на них содержащейся. И в том, и в другом случае для того чтобы открыть доступ, потребуется поместить карту в считыватель, а затем ввести индивидуальный код, который должен знать лишь владелец (PIN-код). В некоторых случаях введение кода не требуется, достаточно просто провести картой по считывателю.
Также карты смарт способствуют упрощению процедуры идентификации клиента. Чтобы проверить правильность введенного пин кода, используется специальный алгоритм, позволяющий избавиться от необходимости централизованной проверки. ПО устанавливает несколько уровней безопасности, которые строго контролируются системным администратором. Определенный уровень доступа может быть выдана всем лицам, некоторые же уровни предназначаются исключительно группе лиц. Кроме того, некоторые лица имеют право на присвоение индивидуальную форму доступа.
Все отмеченные выше функции позволяют прийти к выводу, что смарт — карты — это карты, защищенные универсальным инструментом, позволяющие использование в приложениях, которые выставляют высокие требования к безопасности. Помимо гарантии защиты, смарт — карты являются удобными и практичными, что помогает тысячам клиентам совершать различного рода манипуляции в максимально быстрые сроки.
Источник
Карты для Андроид
У автолюбителя либо пешехода может появиться необходимость проложить маршрут до какого-либо пункта. Приобретать GPS-навигатор вовсе не обязательно. Можно загрузить карты на Android. При этом пользователи смартфонов на Android могут установить на свой гаджет сразу несколько карт, входящих в разные приложения-навигаторы.
Карты на телефон на Андроид
Самыми распространенными навигаторами для «Андроида» считаются:
1.Яндекс.Навигатор. Предусмотрено голосовое управление, масштабирование. Пользователь может получать данные о расположенным рядом учреждениях, быстро прокладывать маршруты в незнакомом месте. В этот навигатор для «Андроида» интегрированы карты Российской Федерации, Украины, Белоруссии, иных государств СНГ.
2.Waze. Маршрут прокладывается при учете типа транспортного средства (авто, мотоцикл, такси) и иных факторов. Навигатор уведомляет автомобилиста о событиях на дороге в режиме real-time.
3.Google Maps. Известное приложение на «Андроид» для прокладывания маршрутов. Предусмотрена опция гида. Пользователь может просматривать 3D-виды любых районов города, поворачивать трехмерные изображения на 360 градусов.
4.«Навител». Пользователь может построить сразу 3 маршрута с указанием дистанции до пункта прибытия и времени в пути. Подобная опция пригодится профессиональным водителям и логистам.
5.GPS Sygic. Неплохая замена полноценному навигатору. При 1-м запуске программа предложит загрузить карты, чтобы потом использовать их в оффлайновом режиме. Предусмотрена функция Dashcam, позволяющая записывать на видео происходящее на дороге. Можно искать места для парковки и узнавать их цену.
Источник
Смарт-карты для самых маленьких
Поскольку статья вводная и обзорная, то рассматриваться будет простейшая разновидность смарт-карт — SIM-карты, полагаю, что таких карт на планете сейчас больше всего.
По сегодняшним меркам стандарт SIM выглядит архаично, но зато он идеален для первого знакомства с миром смарт-карт, усвоение принципов, которые заложены в основу этого стандарта, облегчит дальнейшее погружение в тему.
Если Вы «карточник», то вряд ли узнаете для себя что-то новое, разве что какие-нибудь не очень понятные моменты разложатся по полочкам, а может быть Вы разложете по полочкам то, что недопонял автор (но, напоминаю, держимся в рамках SIM!).
Смарт-карта является программно-аппаратным комплексом, по сути — миниатюрным компьютером, в состав которого входят, как минимум:
- процессор;
- оперативная память;
- подсистема хранения данных;
- операционная система.
Часто, но не всегда, в состав карты входит и Java VM. ОС, как таковая, конечному пользователю не видна.
Роль API выполняет обмен данными с картой посредством т.н. APDU .
Множество различных APDU представляет из себя набор команд, каждая из которых имеет следующую структуру (согласно ISO7816-4):
Элемент | Размер (байт) | Описание |
---|---|---|
CLA | 1 | класс команды |
INS | 1 | код инструкции |
P1 | 1 | параметр №1 |
P2 | 1 | параметр №2 |
L | 1 | длина данных, передаваемых карте. |
Data | L | данные |
APDU принято записывать в виде набора шестнадцатиричных цифр, вот так:
A0 A4 00 00 02 3F00
Для GSM SIM-карт используется CLA = A0 .
Приведу несколько кодов инструкций:
Инструкция | Описание |
---|---|
A4 | SELECT FILE |
B0 | READ BINARY |
B2 | READ RECORD |
C0 | GET RESPONSE |
20 | VERIFY CODE |
D6 | UPDATE BINARY |
DC | UPDATE RECORD |
В ответ на APDU карта всегда возвращает, как минимум, 2 байта, т.н. Status Word (SW),
причем первый и второй байт соответственно принято называть SW1 и SW2. По SW можно определить статус исполнения команды, причем SW1 обычно предоставляет основную информацию, а SW2 — дополнительную. В случае SIM-карт об успехе выполнения будут говорить статусы 90 00 и 9F xx (здесь xx — шестнадцатиричная цифра, длина дополнительной информации, о которой ниже).
Помимо SW карта может вернуть и данные. Есть также команды, после выполнения которых возможно получить дополнительную информацию.
Для этого предназначена команда:
Для того, чтобы воспользоваться «услугами» этой инструкции, нужно иметь в виду, что она должна быть вызвана сразу после той команды, результат которой требуется запросить. При вызове любой инструкции, отличной от GET RESPONSE, контекст предыдущей команды будет утрачен.
Если какая-либо инструкция позволяет использовать после своего вызова GET RESPONSE, то она в SW2 возвращает объем данных в байтах, который вернет команда GET RESPONSE.
Одним из ярких применений GET RESPONSE является ее использование после команды SELECT — оно дает возможность получить полезную информацию о выбранном объекте файловой системы.
Подсистема хранения данных
Кстати, самое время вспомнить о файловой системе карты. Система эта является иерархической, существует корневая папка (Master File, MF), обычные папки (Dedicated File, DF) и, собственно, файлы (Elementary File, EF). Каждый объект файловой системы имеет идентификатор (File ID, FID), который, в простейшем случае, состоит из четырех шестнадцатиричных цифр и который заменяет ему имя. Например, MF всегда имеет идентификатор 3F00 . В рамках каждого карточного стандарта существует свой перечень зарезервированных файловых идентификаторов, например, файл адресной книги на SIM имеет идентификатор 6F3A, а файл для хранения SMS — 6F3C. У стандартных файлов также имеются и произносимые имена (исключительно для удобства человека, API их не использует), для указанных выше файлов они, такие:
EF ADN для 6F3A ;
EF SMS для 6F3С .
Типы файлов
API смарт-карт предусматривает манипуляции с тремя типами файлов:
аналог обычного бинарного файла любой файловой системы.
Средства работы с такими файлами — пара команд READ BINARY/UPDATE BINARY .
Файл, состоящий из фиксированного количества записей, причем все записи одинаковой длины, длина записи задается при создании файла.
Записей не может быть больше 255 шт., каждая запись не может быть длинее 255 байт.
Средство работы — пара READ RECORD/UPDATE RECORD.
Можно использовать как абсолютную (по номеру записи) так и относительную адресацию (следующая/предыдущая, но без цикличности).
Пример использования — записная книжка на SIM-карте.
В целом — то же, что и Linear Fixed, но со следующей дополнительной функциональностью:
При чтении: замкнутость — при использовании относительной адресации, переходя с последней на следующую запись попадаем на первую, переходя с первой на предыдущую запись, попадаем на последнюю.
При записи: допустима только относительная адресация с обращением только к предыдущей записи. Есть даже специальная команда, только для циклических файлов, которая обновляет самую старую запись файла (после этого она становится самой новой) — INCREASE.
Первая запись всегда хранит самые новые данные, а последняя — самые старые.
Пример использования — список ранее набранных номеров. Вообще, файлы данного типа используются гораздо реже, чем файлы других типов.
В API отсутствует возможность запросить список всех файлов/папок для MF или DF , соответственно, для того, чтобы проверить наличие файла по заданному пути, необходимо попытаться выбрать этот файл командой SELECT и проанализировать SW.
Виды обобщенных операций с файлами представлены в данной таблице:
Обобщенный тип операции | Примеры команд |
---|---|
Read | READ BINARY, READ RECORD |
Update | UPDATE RECORD, UPDATE RECORD, INCREASE |
Invalidate | INVALIDATE |
Rehabilitate | REHABILITATE |
Кратко поясню по последним двум командам:
- INVALIDATE — обратимо изменяет состояние файла так, что:
- для него выставляется специальный флаг, т.е. мы можем узнать о том, что файл инвалидирован.
- в зависимости от настроек инвалидированного файла операции чтения и записи могут стать невозможны.
- REHABILITATE — возвращает инвалидированный ранее файл в обычное состояние, при этом возможные ограничения, наложенные инвалидацией, снимаются.
Пример использования — механизм активации режима фиксированного набора (когда звонить можно только абонентам из специальной телефонной книги) построен на инвалидации файла основной телефонной книги SIM-карты. О других применениях данного механизма мне неизвестно.
Определившись с обобщенными типами операций над файлами, мы можем перейти к знакомству с принципами разграничения доступа.
Разграничение доступа
В основе этих принципов лежат понятия:
- Access Condition (AC) — состояние карты, в пределах текущей сесии, при котором для определенного файла возможен определенный вид операции.
- Условия доступа, самым известным из которых является предъявление PIN-кода.
Возможные условия доступа:
Условие доступа | Пояснение |
---|---|
Never | Операция запрещена |
Always | Операция разрешена всегда |
PIN1 (так же известен как CHV 1) | Для выполнения операции требуется предъявить карте PIN1 |
PIN2 (CHV 2) | Для выполнения операции требуется предъявить карте PIN2 |
ADM | Для выполнения операции требуется предъявить карте административный код. |
Оба кода PIN предъявляются карте командой VERIFY CODE. ADM предъявляется проприетарной командой (какая команда вздумается производителю, такую он и использует, поскольку стандартом это не регламентировано).
Предъявление кода — это операция масштаба сессии работы с картой, если вы предъявили PIN или ADM однажды, то можете выполнять операции со всеми файлами, которые требуют соответствующего кода, пока сессия не завершится.
Для каждого файла и каждой операции карта хранит маппинг: обобщенная операция — условие доступа.
Например, для файла EF ICCID , в котором хранится уникальный серийный номер карты (не путать с номером абонента мобильной связи), AC будут выглядеть так:
Read | Update | Invalidate/Rehabilitate |
---|---|---|
Always | Never | Never |
Для основной телефонной книги:
Read | Update | Invalidate/Rehabilitate |
---|---|---|
PIN1 | PIN1 | PIN2 |
Если предъявление определенного кода отключено, как сейчас часто операторы делают с PIN1, то данный код считается предъявленным с начала сеcсии карты.
Конечно же, то, что я здесь описал, не является реальной файловой системой — как правило, за этой абстракцией, на уровне ОС, спрятана знакомая всем FAT.
В завершение я просто обязан привести пример использования данного API в реальной жизни.
Думаю, многие уже догадались (или знали?), что самым известным и массовым устройством, использующим этот API постоянно и интенсивно, является обыкновенный мобильный терминал.
PS:
В следующей статье планирую рассказать о том, как можно применить полученные сейчас знания, работая с картой программно.
Источник