| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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). Формат этих пакетов определен ниже: ![]() 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 должен быть получен ответ следующего формата: ![]() Здесь поле Data опционально. В случае если с карты были запрошены какие либо данные, именно поле Data должно их содержать. Два последующих байта представяют обязательный код выполнения операции - Status Words. Каждый байт называется по своему: SW1 и SW2. Если последняя операция (APDU) была выполнена успешно, то эти байты могут принимать следующие значения (в шестнадцатиричной системе): 90 00 - успешное выполнение последней операции 61 ХХ - успешное выполнение, SW2 указывает на количество все еще доступных байт (могут быть получены после запроса) 62 XX, 63 XX - успешное выполнение, но с предупреждением (warning). Код предупреждения в SW2 Остальные коды указывают на какую либо ошибку. Полный список кодов представлен в таблице Table 6 в документе ISO/IEC 7816-4. Для удобства приведу ее здесь (надеюсь не согрешу), т.к. очень часто приходится к ней обращаться: ![]() Библиография: 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 были у далены :( |