Курсовой проект
«Управление смарт-картами с применением персонального компьютера»
Введение
Смарт-карты в наше время нашли широкое применение в метро, таксофонах, банках, в секретных объектах, в программах для ПК где нужен физический ключ для её запуска. Так как смарт-карты имеют малые размеры то их удобно переносить, во-вторых подделка карты невозможна без прямого контакта с оригиналом. Также карты служат не менее 5 лет. Если карта теряется можно всегда сделать дополнительную проверку вторым паролем.
В ПК можно подсоединить до 4-х картридеров (через порт LPT) без аппаратных затрат и обработка будет вестись независимо. Но одна проблема возникающая если нужно обрабатывать информацию хранящуюся в карте в больших размерах в очень короткое время. Так например что бы перебрать все комбинации одного байта в карте нужно затратить 1 мин. Также время доступа к ячейке памяти прямо пропорционально зависит от её положения в памяти. В стандартных смарт-картах частота кристалла достигает 4 МГц.
У каждой из типов карт есть свои функции и методы доступа к ним. У исследуемого нами типа карт есть определенный набор функций к которым нам дает доступ чипы SLE4436/SLE5533.
Основные сведения о смарт-картах
Все карты использующиеся на сегодняшний день соответствуют международному стандарту ISO 7816.
Стандарт ISO 7816 состоит из следующих разделов:
физические характеристики;
размеры и расположение контактов;
электронные сигналы и протоколы передачи;
команды для обмена информацией для межотраслевого взаимодействия;
идентификаторы приложений;
межотраслевые элементы данных;
межотраслевые команды SCQL.
Объектами наблюдения будут выступать наиболее применяемые карты «Укртелеком», а также «Харьковский Метрополитен» так как они являются наиболее доступными.
На рис. 1 представлены физические характеристики смарт-карт, определенные в первой части стандарта ISO 7816.
Рис. 1
У смарт-карт нет источника питания, дисплея и клавиатуры. Взаимодействие с окружающим миром производится с помощью последовательного коммуникационного интерфейса, имеющего восемь контактов. Расположение и размеры контактов описываются во второй части стандарта ISO 7816. На рис. 2 показаны контакты смарт-карты.
Рис. 2
Внешне карточки разных типов можно различить по форме контактов чипа изображенных на рисунках 3 и 4.
Рис. 3 Рис. 4
Первая и вторая карточки отвечают стандартам ISO 7816–1 и ISO 7816–2 соответственно.
У карточек данного типа есть также тип AFNOR, который отличается лишь тем, что его чип развернут на 180°. На рис. 5 изображено нормальное расположение, на рис. 6 типа AFNOR.
Рис. 5 Рис. 6
Карточки содержат электрически программируемое ПЗУ емкостью 256 * 1 бит с последовательной побитной выдачей информации и внутренним инкрементным счетчиком адреса. Операция записи производит изменение состояния ячеек памяти «в одну сторону», обратное изменение (стирание) интерфейсом карточки не предусмотрено (на защищенных типах). Память можно было бы стереть ультрафиолетом, но чип закрыт контактной панелью и специальной смолой. Можно применить для стирания чипа жесткое излучение. Казалось бы, можно запрограммировать заново всю карточку, однако первые 96 бит памяти, где прошиты тип карточки и код производителя, защищены от записи предохранителем, пережигаемым на заводе после прошивки чипа. По этим причинам использованную карточку нельзя «перезарядить», чтобы она работала, как новая. Единственный способ обмануть смарт-карту – использовать электронный эмулятор. Но есть и карты которые позволяют переписывать некоторые области памяти, например карты «Харьковский Метрополитен» позволяют перезаписывать 56 бит памяти в которой хранится CRC код.
На карточке используются только 16 байт. Все остальные равны 0xFF или 0x00.
Все карты должны придерживаться единому стандарту (размер носителя, положение и размеры контактов). Нижеуказанных параметров, в соответствии со стандартом ISO 7816, придерживаются все производители смарт-карт.
Габариты чипа должны соответствовать следующим размерам:
– длина 85.60 мм;
– ширина 53.98 мм;
– толщина 0.76 мм
Также на чипе определено восемь контактных областей, каждая из которых по крайней мере 2 мм шириной и 1.7 мм высотой. Назначение контактов указано ниже (табл. 1 и табл. 2).
Таблица 1. Типично для стандарта ISO 7816
Номер контакта | Обозначение | Назначение |
1 | VCC | Напряжение питания (Vdd) (+5 V, max. 200 mA) |
2 | R/W | Read/Write |
3 | CLK | Тактовая частота |
4 | RST | Сигнал сброса |
5 | GND | Земля (VSS) |
6 | VPP | Напряжение программирования (5–25 V) |
7 | I/O | Данные вход / выход |
8 | FUSE |
Таблица 2. Типично для стандарта ISO 7816–2
Номер контакта | Обозначение | Назначение |
1 | VCC | Напряжение питания (Vdd) (+5 V, max. 200 mA) |
2 | RST | Сигнал сброса |
3 | CLK | Тактовая частота |
4 | Резерв | |
5 | GND | Земля (VSS) |
6 | Резерв | |
7 | I/O | Данные вход / выход |
8 | Резерв |
Карточки типа ISO 7816–2 совместимы сверху вниз с карточками типа ISO 7816–1. Для распознавания типа карточки таксофон начинает работать по стандарту ISO 7816–2, и если вместо данных идут только одни единицы, переходит на тип ISO 7816–1.
Внутри карточки находится счетчик адреса разрядностью 9 бит. То есть после чтения каждых 512 бит все начинается сначала.
Обычно на картах второго типа вся важная информация храниться в защищенной части памяти 9–13 байты (65–104 биты). Что бы выяснить сколько «юнитов» осталось на карте (поездок, времени) нужно посчитать сколько единиц в каждом из байтов (9–13 байты), и воспользоваться формулой , где S – количество юнитов.
Электрические характеристики Rst, Clk, Vpp, I/O контактов
Для каждого из контактов Rst, Clk, Vpp, I/O, Vcc есть свои допустимые напряжения входов и выходов.
В таблице 3 указаны напряжения для нормальной работы карты для контакта Rst.
Таблица 3
Обозначение | Режим | Минимум | Максимум | Единица измерения | |
Высокий уровень |
Один из двух | Ток max=+/ – 200 uA | 4 | Vcc | V |
Ток max=+/ – 10 uA | Vcc-0.7 | Vcc | V | ||
Низкий уровень | Ток max=+/ – 200 uA | 0 | 0.6 | V |
В таблице 4 указаны напряжения для нормальной работы карты для контакта Clk.
Таблица 4
Обозначение | Режим | Минимум | Максимум | Единица измерения | |
Высокий уровень (входной) |
Один из трех | Ток max=+/ – 200 uA | 2.4 | Vcc | V |
Ток max=+/ – 20 uA | 0.7*Vcc | Vcc | V | ||
Ток max=+/ – 10 uA | Vcc-0.7 | Vcc | V | ||
Низкий уровень (входной) |
Ток max=+/ – 200 uA | 0 | 0.5 | V | |
Емкость входная 30 pF |
В таблице 5 указаны напряжения для нормальной работы карты для контакта программирования Vpp.
Таблица 5
Обозначение | Режим | Минимум | Максимум | Единица измерения |
Vpp Ipp |
Состояние (программирование не производится) | 0.95*Vcc |
1.05*Vcc 20 |
V mA |
Vpp Ipp |
Активное состояние (программирование карты) | 0.975*P |
1.025*P I |
V mA |
Обычно P=5 и I=50 |
При программировании контроллера потребляемая мощность не превышает 1.5W.
В таблице 6 указаны напряжения для нормальной работы карты для контакта ввода / вывода I/O.
Таблица 6
Обозначение | Режим | Минимум | Максимум | Единица измерения | |
Высокий уровень (входной) | Один из двух | Ток max=+/ – 500uA | 2 | Vcc | V |
Ток max=+/ – 50uA | 0.7*Vcc | Vcc | V | ||
Низкий уровень (входной) | Ток max=+/ – 1mA | 0 | 0.8 | V | |
Высокий уровень (выходной) | Один из двух | Ток max=+/ – 100uA | 2.4 | Vcc | V |
Ток max=+/ – 20uA | 3.8 | Vcc | V | ||
Низкий уровень (выходной) | Ток max=+/ – 1mA | 0 | 0.4 | V | |
Емкость входная и выходная 30 pF |
Принципиальная схема подсоединения к смарт-карте управляющего интерфейса
Смарт-карта вставляется в приемное устройство (Card Acceptance Device, CAD), которое соединяется с компьютером. Кроме того, в состав приемного устройства может входить терминал, считыватель и интерфейсный механизм (interface device, IFD). В числе его основных функций – обеспечение смарт-карты энергией и установление соединения для обмена данными.
В процессе взаимодействия два компьютера обмениваются пакетами данных, которые создаются на основе определенного набора протоколов. Смарт-карты общаются с окружающим миром при помощи собственных пакетов данных, которые называются APDU (Application Protocol Data Units). Пакеты APDU содержат либо команду, либо ответное сообщение. Технология смарт-карт моделирует широко известный интерфейс «ведущий-ведомый» (master-slave), в котором самой смарт-карте отводится пассивная роль. Другими словами, смарт-карта всегда ждет от терминала команду APDU. Затем она выполняет указанное действие и посылает терминалу ответный пакет, подтверждающий выполнение команды. Между картой и терминалом происходит непрерывный обмен пакетами APDU, содержащими команды и ответы на них.
Микросхема в телефонной карточке имеет 8 выводов, но реально используются только 5. Наиболее простым вариантом является сборка «ридера» для подключения его к LPT-порту компьютера (рис 7).
Рис. 7
В таблице 7 приведены соответствия номеров контактов LPT порта и их обозначений.
Таблица 7
Номер контакта | Обозначение |
2 | D0 |
3 | D1 |
4 | D2 |
5 | D3 |
11 | BUSY |
10 | ACK |
25 | GND |
Элементы схемы:
S1-S4 – выключатели, предназначенные для того, что бы при вытаскивании или вставке карты не было замыкания между контактами LPT порта.
R1 – резистор, предназначен для того, что бы светодиод VD1 не вышел из строя, так как светодиод рассчитан на = 20 mA. Установлен R1 = 800 Ом при =10 mA, что соответствует нормальной работе светодиода.
VD1 – светодиод, АЛ307АМ красного свечения, предназначен лишь для визуального контроля работы устройства. При желании можно не использовать.
VT1 – транзистор, КТ315Б предназначен для записи в порт I/O карты логической единицы или нуля. Служит также для инверсии выхода I/O.
Принципиальная схема источника питания
Смарт-карта питается от внешнего источника питания. Для этого необходим блок питания состоящий из понижающего трансформатора с напряжением на вторичной обмоткой от 7,5 до 15 В. Схема стабилизатора напряжения изображена на рисунке 8.
Рис. 8
Для питания карты нужно напряжение диапазона 4,75 – 5,25 В. Для этого используется интегральный стабилизатор КР142ЕН5А (на схеме СН1) с фиксированным выходным напряжением 4,9 – 5,1 В.
В состав схемы стабилизатора входят такие элементы:
С1, С2 – электролитические конденсаторы. Служат как сглаживающие фильтры импульсов напряжения. При всех условиях эксплуатации емкость конденсатора С1 должна быть не менее 2,2 мкФ для танталовых и не менее 10 мкФ для алюминиевых оксидных конденсаторов; емкость конденсатора С2 должна быть не менее 1 мкФ для танталовых и не менее 10 мкФ для алюминиевых.
S1 – включатель, который находится в разъеме для смарт-карты. Он замыкается при установке карты.
VD1 – светодиод АЛ307ВМ зеленый. Светодиод рассчитан на = 22 mA. Индицирует подачу напряжения. При желании можно не использовать.
R1 – Резистор установлен на 260 Ом при этом = 20 mA, что соответствует нормальной работе светодиода VD1.
Активация и деактивация карты
Что бы установить карту в начальное состояние нужно проделать следующие действия:
Все линии устанавливаются в состояние низкого уровня;
Подается напряжение питания VCC;
Сигнал I/O на интерфейсном устройстве устанавливается в режим ввода;
На соответствующий контакт (RST) подается высокий уровень в течение 50 мкс, после чего сигнал устанавливается в низкий уровень.
Начальная установка карты в настоящее время используется не во всех чипах, раньше это было продиктовано особенностью внутренней архитектуры чипа, не позволявшей определить его текущее состояние без полного сброса. Чипы нового типа лишены этого недостатка, что и повлекло за собой исключение этого контакта с карт.
Для того что бы определить состояние готовности смарт-карты интерфейсное устройство должно определить готовность карты по появлению сигнала высокого уровня на выводе I/O после окончания сигнала RST.
Отсоединение контактов производится так:
На все контакты подается низкий уровень;
Отключается напряжение программирования (Vpp);
Отключается напряжение питания (VCC).
Именно эти действия и производит таксофон, когда нажимается кнопка сброса.
Чтение и запись смарт-карты через параллельный порт компьютера
Обмен информацией между картой и интерфейсным устройством.
Вся суть стандарта ISO 7816 сводится к стандартному: карта может работать в двух режимах: асинхронном и синхронном. В первом из них данные передаются на линию I/O в асинхронном полудуплексном режиме. Во втором режиме все то же самое, но только передача данных синхронизируется сигналом CLK. И в том, и в другом случае, обмен данными производится пакетами по 8 бит, то бишь по 1 байту. За исключением маленьких технических нюансов, весь режим передачи данных полностью аналогичен передаче данных по параллельному (LPT) порту в первом режиме и по последовательному (СОМ) – во втором.
Ниже приведена диаграмма сигналов для типа ISO 7816–1 (сброс, чтение и запись):
+21V _____________
+5V ____________________________________| |_________________ Vpp
+0V:
: : _____
+5V ___________________:_____________:_________________ Reset
0V ________________| :
: :
+5V ____ : ____ : ______:______
0V ___| |_______:_____| |________:______| : |__________ Clock
: : : : : : : :
+5V : : : : : :______:______: : _
0V ___:____:_______:_____:____:________| : |______:__________ R/W
: : : : : : : :
+5V : : :_____: :________: : : :__________
0V XXXXXXXXXXXXXXXXX_____XXXXXX________XXXXXXXXXXXXXXXXXXXXXX__________ Out
: : : : : :<–><–>:
: : : : : :10 – 10 – :
: : : : : :50ms 50ms :
Сброс Бит 1 Бит 2 Бит 3
карты чтение чтение Бит 2 Запись в 1 чтение
Примечание: контакт Reset условно инвертирован.
На первом этапе происходит сброс карты для того, что бы она установилась в изначальное состояние. При этом на контакте I/O появляется значение равное первому биту из цепочки памяти. После происходит чтение первых двух бит, после чего происходит запись второго бита и чтение третьего. При этом напряжение записи (Vpp) должно быть не менее 5В и не более 21В чтобы не спалить сам чип. Напряжение программирования зависит от самих параметров чипа.
В «чистом» виде ячейки памяти чипа типа – ISO 7816–1 содержат «0», операция записи прошивает в ячейку «1».
На следующей диаграмме приведена работа чипа типа ISO 7816–2 (сброс и чтение):
__________________
_____| |_____________________________________________ Reset
:
: _____ : _____ _____ _____ _____
_____:_______| |____:_| |_____| |_____| |_____| |_ Clk
: : : : : : : : :
_____:_______:__________:_:_____:_____:_____:_____:_____:_____:_____:_
_____:___n___|_____0____:_|_____1_____|_____2_____|_____3_____|___4_:_ (Адрес)
Сначала происходит сброс карты, при этом Reset и Clk устанавливаются в «1». Затем подаются на контакт Clk импульсы, с помощью которых происходит перемещение по памяти карты. По фронту импульса Clk происходит увеличение на единицу внутреннего счетчика адреса. По спаду тактового импульса следующий бит данных появляется на выходе. Обычно удобнее представлять информацию в виде байтов. Для этого каждые 8 считанных бит группируют в байт, считая, что первым считывается наименее значащий бит. Таким образом, последовательно считывая 1,0,0,1,0,1,1,1, получим байт 0xE9. При этом счетчик может быть только увеличен.
Если нужно считать бит с адресом меньше текущего, то счетчик нужно сбросить в 0, а затем увеличить до необходимого значения.
Вся информация поступающая на карту производится через порт 0x378 принтера (базовый адрес). Записанный байт появляется на выходных контактах. Мы используем бит 0 (Data 0) для сигнала Reset и бит 1 (Data 1) для сигнала Clk. Чтение выполняется через порт 0x379. В самом старшем бите появится инвертированное значение с входного контакта 11 (Busy).
Основные управляющие команды карты
На рисунке 9 приведена команда сброса карты.
На рисунке 10 приведена команда стирания бита (установка бита в «0’).
На рисунке 11 приведена команда увеличения счетчика на один пункт.
На рисунке 12 приведена команда записи байта (установка битов в «1’).
Рис. 9 Рис. 10
Рис. 11 Рис. 12
Назначение полей данных
При чтении карты были выделены основные области (таблица 8):
Таблица 8
Байт | Биты | Значение / Описание |
1 | 1–8 | D8 старые карты DD новые карты |
2 | 9–16 | Код страны |
5 | 33–36 | Номинал карточки |
5 | 37–40 | Последняя цифра года выпуска |
6 | 41–44 | № месяца выпуска |
6–9 | 45–64 | Серийный номер |
9 | 65–72 | 4096* NBS единиц |
10 | 73–80 | 512* NBS единиц |
11 | 81–88 | 64* NBS единиц |
12 | 89–96 | 8* NBS единиц |
13 | 97–104 | 1* NBS единиц (NBS-число установленных битов) |
14–40 | 105–320 | FF – проверочная область |
Итак, можно выделить следующие информационные области на карте: заголовок, счетчик. Заголовок содержит 40 бит информации, которые жестко программируются изготовителем карт. Обычно эта область содержит чисто служебные данные, которые в принципе нужны только для информативности. Следует иметь в виду, что некоторые производители в битах 36–64 пишут копию даты выпуска и серийного номера. Кроме этого первыми четырьмя цифрами серийного номера всегда будет дата выпуска, т.е., 0600 будет означать июнь 2000 года. Проверочная область – область, на которой производитель проверяет работоспособность чипа.
Пример дампа памяти карты
Ниже на рисунке 13 показан дамп (образ) памяти карты на котором условно цветами выделены различные области памяти по их назначению и свойствам.
Рис. 13
Чтение карты производится как 512-ти битного чипа, но это лишь внутреннее представление памяти.
В картах «Харьковский Метрополитен» биты 320–375 не защищены и их можно перезаписать, эти биты являются CRC кодом.
Эмуляторы смарт-карты
В основе построения эмуляторов различных карт лежит следующий принцип. Поскольку память смарт-карты состоит из перезаписываемого блока и неперезаписываемого, причем телефонный аппарат пишет только в перезаписываемую область, ничто мешает нам считать информацию из новой карты и сохранить ее где-нибудь.
Пусть алгоритм работы управляющего аппарата карты зависит от содержимого «неперезаписываемой» области памяти, и она у каждого экземпляра карточки индивидуальна, но ведь эта область неизменна. Единственным недостатком данного метода можно считать довольно большую трудоемкость реализации, но это искупается тем, что на основе этого принципа реализуются эмуляторы практически всех карт, включая даже SIM-карты сотовых телефонов.
Реализацию эмулятора на этом принципе можно осуществить двумя путями. Первый состоит в том, что собирается логическая схема, осуществляющая всю логику работы схемы «аппарат-карта». Второй же способ основан на применении микроконтроллеров. В основном, используют микроконтроллеры из PIC-серии. Наиболее приемлемым является использование контроллера МС68НС705К1 фирмы Motorola. Во-первых, его довольно легко найти, во-вторых, он дешев, в-третьих, в этом контроллере огромное количество функций. Собираем программатор по схеме, приведенной на рисунке 14:
Рис. 14
Данная схема подключения контроллера к компьютеру через LPT порт очень удобна и не требует большой аппаратной реализации.
Для программирования контроллера нужен еще один источник напряжения 16,5 В. Этим напряжением и программируется контроллер.
Поведенческая программа записана в специальном формате фирмы Моторола, формат этот называется S19 и весьма хорошо описан на сайте этой фирмы.
После того как микросхема контроллера запрограммирована нужно собрать схему самого эмулятора (рисунок 15).
Рис. 15
Такой эмулятор размещается целиком собранным на таксофонной карте. При этом все сопротивления и конденсаторы подобраны таким образом, что бы «приемник» карты не смог различить подделку от реального чипа.
Еще один вариант схемы при которой сигнал «стирания» не сможет пройти через это устройство при условии, что карту не нужно сбрасывать (рис. 16).
Рис. 16
Когда схема на одном RS триггере принимает импульс по Reset то на выходе тригера появляется «1» и сигналы Clock не смогут дальше пройти.
Реализуется данная схема на 3-х микросхемах:
К555ТР2 – 4-ре RS триггера
К555ЛИ1 – 4-ре элемента И
К555ЛН1 – 6 элементов НЕ
Принципиальная схема с размещением элементов приведена на рисунке 17.
Рис. 17
Схема удобна тем, что питание микросхем совпадает с питанием которое подается устройством на карту.
Временные диаграммы приведенные на рисунке 18 показывают работу устройства.
Рис. 18
Список использованной литературы
Smart Card Technology: Introduction To Smart Cards by Dr. David B Everett. «Technical Adviser to Smart Card News».1997 Smart Card News Ltd., Brighton, England. http://kbts.neic.nsk.su/sat/satxpress/SmartCard/ISO7816–1.htm
Основы Java Card 2.0. Жикун Чен JavaWorld, США 1994–2002 Sun Microsystems
Web-узел Java Card http://java.sun.com/products/javacard/
Web-узел, посвященный применению Java в электронной коммерции http://java.sun.com/products/commerce/
Стандарт ISO 7816–3 Web-узел http://nppiis.boom.ru/lib2.htm
Технические характеристики некоторых моделей смарт-картридеров Web-узел http://www.bizcom.ru/cards/equipment/2001–02/tech_kart_tabl.html
Демо-версия программы Smartlab Web-узел http://www.gsho.de/phonecard