Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java Card > Смарт карта. Общие сведения.


Автор: firstone 20.1.2008, 15:00
Смарт карта

Смарт карта представляет собой пластиковую карту с чипом внутри. Этот чип - нечто более сложное простой микросхемы - микропроцессор. Этот микропроцессор содержит в себе память (ROM, EEPROM, RAM), арифметический процессор и в большинстве случаев криптографический процессор. Все это находится в одном чипе. Кроме этого также имеются специальные контролеры ввода/вывода, но их мы затрагивать не будем.

По способу взаимодействия с управляющим устройством (ридером) смарт-карты делятся на две группы:

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


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


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

Итак, как было упомянуто выше, в карте могут находиться три типа памяти: ROM, EEPROM и RAM. В ROM-памяти записана операционная система карты, в EEPROM-память помещаются приложения а RAM используется точно также, как и на персональном компьютере - временные данные которые сохраняются пока у карты есть питание, т.е. карта находится в считывающем устройстве (для контактных карт) или в зоне досягаемости считывающего устройства (для безконтактных карт, обычно до 3-4 см).

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

Различные характеристики смарт карт определены серией стандартов ISO/IEC 7816 (которые являются разширением ISO/IEC 7810), а именно:
1) ISO/IEC 7816-1 Физические характеристики (размеры)
2) ISO/IEC 7816-2 Контактные карты - размещение чипа и размеры
3) ISO/IEC 7816-3 Електронные характеристики для контактных карт
4) ISO/IEC 7816-4 Формат команд и безопасность
5) ISO/IEC 7816-5 Регистрация изготовителей приложений и идентификаторы приложений
6) ISO/IEC 7816-6 Межотраслевые элементы
7) ISO/IEC 7816-7 Межотраслевые комманды SCQL (Structured Card Query Language)
8) ISO/IEC 7816-8 Команды для безопасной передачи данных и различных операций
9) ISO/IEC 7816-9 Команды для управления картой
10) ISO/IEC 7816-10 Электрические сигналы и ATR (Answer To Reset) для синхронных карт
11) ISO/IEC 7816-11 Верификация персонала с помощью биометрических методов
12) ISO/IEC 7816-12 Различные характеристики смарт карт с USB интерфейсом (USB-ICC)
13) ISO/IEC 7816-13 Команды для управления приложениями и взаимодействием приложений на карте
14) ISO/IEC 7816-15 Применение криптометодов.

Для полноты картины необходимо перечислить серию стандартов для безконтактных карт ISO/IEC 14443:
1) ISO/IEC 14443-1 Физические характеристики
2) ISO/IEC 14443-2 Электромагнитные волны, сигналы и интерфейсы
3) ISO/IEC 14443-3 Инициализация (при приближении карты к считывающему устройству) и антиколлизия (работа с несколькимми безконтактными картами на одном считывающем устройстве)
4) ISO/IEC 14443-4 Протоколы передачи данных

Несомненно мы не будем затрагивать темы электроники ибо это форум программистов. Наша задача - показать как легко и просто программировать эти маленькие компьютеры (а это действительно так) с помощью простого и понятного языка - Java.

Обмен данными между картой и терминалом выполняется с помощью пакетов данных APDU (Application Protocol Data Unit). Формат этих пакетов определен ниже:

user posted image


CLA (Class byte) - поле длинной 1 байт идентифицирующее класс команд (инструкций). Обычно для каждого приложения на карте отводится отдельный класс.
INS (Instruction code) - поле длиной 1 байт содержащие код инструкции (команды). Определение допустимых значений инструкций попадает под ответственность разработчика приложения.
P1 (Parameter 1) - поле длиной 1 байт содержащие параметр 1 для инструкции.
P2 (Parameter 2) - поле длиной 1 байт содержащие параметр 2 для инструкции.
Lc (Length of Command data) - поле длиной 1 байт. Это поле хранит длину поля Data (макс. 255).
Data - длина указана в поле Lc. Это поле содержит дополнительную информацию для успешного выполнения инструкции (команды).
Le - поле длиной 1 байт содержащие максимальное количество байт в поле Data ответа (response) на этот пакет APDU.

Обязательными полями APDU являются: CLA, INS, P1 и P2.
Позволю себе провести следующую аналогию, которая на мой взгляд хорошо отражает функциональную нагрузку каждого из определенных выше полей. Если представить, что CLA - имя класса/объекта, INS - наименование метода а P1 и P2 - аргументы этого метода, то все это можно сложить в такую запись которая будет понятна практически любому программисту (по крайней мере программирующему в OOP):
byte[Le + 2] CLA.INS(P1, P2, Data = null)

В ответ на посланный пакет APDU должен быть получен ответ следующего формата:

user posted image


Здесь поле Data опционально. В случае если с карты были запрошены какие либо данные, именно поле Data должно их содержать. Два последующих байта представяют обязательный код выполнения операции - Status Words. Каждый байт называется по своему: SW1 и SW2. Если последняя операция (APDU) была выполнена успешно, то эти байты могут принимать следующие значения (в шестнадцатиричной системе):
90 00 - успешное выполнение последней операции
61 ХХ - успешное выполнение, SW2 указывает на количество все еще доступных байт (могут быть получены после запроса)
62 XX, 63 XX - успешное выполнение, но с предупреждением (warning). Код предупреждения в SW2

Остальные коды указывают на какую либо ошибку. Полный список кодов представлен в таблице Table 6 в документе ISO/IEC 7816-4. Для удобства приведу ее здесь (надеюсь не согрешу), т.к. очень часто приходится к ней обращаться:

user posted image


Библиография:
1) ISO/IEC 7816
2) ISO/IEC 14443

http://www.gnu.org/copyleft/fdl.html

Автор: Olegan 1.2.2008, 12:45
Спасибо за инфу, всегда хотел узнать что это.
Теперь понятно для чего нужна одноименная служба в xp.

Автор: Gugle 27.3.2008, 11:38
Интересно было почитать. спс.

Автор: neutrino 5.4.2010, 15:18
Черт. Все изображения с сайта ipicture.ru были у далены :(

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)