EMV
EMV
Использование технологии Match-on-Card
Явное подключение DLL
Функции PKCS 11
функции общего назначения
функции общего назначения
Функции для работы со слотами и токенами
Функции для работы со слотами и токенами
Функции для работы со слотами и токенами
Функции для работы со слотами и токенами
Функции для работы со слотами и токенами
Функции для работы с сеансами
Функции для работы с сеансами
Ссылки
1.39M
Категория: ИнформатикаИнформатика

Изучение аппаратных методов защиты информации с помощью смарт-карт "e-Token PRO"

1.

Изучение аппаратных методов
защиты информации с помощью
смарт-карт “e-Token PRO”
Доцент каф. БИТ Маро Е.А.

2.

Смарт-карты (англ. Smart card) представляют собой пластиковые карты со
встроенной микросхемой (ICC, integrated circuit(s) card — карта с
интегрированными электронными схемами). Впервые такая карта была
предложена французским инженером Роландом Морено в середине 70-х годов.
В большинстве случаев смарт-карты содержат микропроцессор и операционную
систему, контролирующую устройство и доступ к объектам в его памяти. Так же
смарт-карты,
как
правило,
обладают
возможностью
проводить
криптографические вычисления.
Назначение смарт-карт — одно- и двухфакторная аутентификация
пользователей,
хранение
ключевой
информации
и
проведение
криптографических операций в доверенной среде.

3.

Виды смарт-карт
Все смарт-карты можно разделить по способу обмена со считывающим
устройством на:
Контактные смарт-карты с интерфейсом ISO 7816.
Контактные смарт-карты с USB интерфейсом.
Бесконтактные (RFID, Radio Frequency IDentification, радиочастотная
идентификация) смарт-карты. Стандарты ISO/IEC 14443, реже ISO/IEC 15693.
Существуют карты, которые включают в себя как контактные, так и
бесконтактные интерфейсы.
По функциональности карты можно разделить на:
Карты памяти (содержат некоторое количество данных и механизм
разграничения доступа к ним). Делятся на карты с закрытой и открытой областью
памяти. Например, Memory-карты ASECard:
- Защита данных паролем от записи
- Счетчик неудачных попыток ввода пароля
- Недорогой носитель для хранения ограниченного набора данных
Интеллектуальные карты (содержат микропроцессор и возможность управлять
данными на карте). Например, смарт-карта eToken.
- Замена парольной аутентификации на строгую аутентификацию
- Безопасное хранение цифровых сертификатов
- Аппаратная электронная подпись
- Сертифицировано ФСТЭК и ФБС

4.

Стандарты по безопасности смарт-карт
Наиболее известны следующие стандарты:
ISO/IEC 15408, более известный как Common Criteria — широкий свод правил
относящихся к безопасности цифровых систем.
Federal Information Processing Standards (FIPS). Национальные стандарты
США в области информационной безопасности. Применительно к безопасности
смарткарт наиболее известен FIPS-140 — требования к криптографическим
механизмам.
EMV — совместный стандарт Europay, MasterCard и VISA для карточных
платежных систем.
Вопросы безопасности зачастую входят в отраслевые стандарты, например
GlobalPlatform, EPC, JavaCard, и т. д.

5. EMV

Статическая аутентификация данных

6. EMV

Динамическая аутентификация данных

7.

Методы атаки
Дифференциальный анализ питания — оценка осциллограмм потребляемой
смарт-картой электроэнергии в момент выполнения криптоалгоритма.
Физический взлом — получение доступа к электрическим цепям смарткарты
после химического снятия защитных слоев с кристалла. Позволяет провести
анализ устройства смарт-карты и подключиться к ней с помощью
микроэлектродов.
Необычные условия эксплуатации смарт-карт. Например, нештатный
температурный режим, напряжения и частоты сигнала на контактах и т. д. Это
может приводить к сбоям в алгоритмах с последующим получением доступа к
информации.

8.

Смарт-карты eToken
eToken - представляет собой защищенное устройство, предназначенное для
строгой аутентификации, безопасного хранения секретных данных, выполнения
криптографических вычислений и работы с асимметричными ключами и
цифровыми сертификатами.
eToken выпускается в двух форм-факторах: USB-ключа и смарт-карты.
eToken поддерживает работу и интегрируется со всеми основными системами и
приложениями, использующими технологии смарт-карт или PKI (Public Key
Infrastructure).
eToken может выступать в качестве единой корпоративной карты, служащей для
визуальной идентификации сотрудника, для доступа в помещения, для входа в
компьютер, в сеть, для
доступа к защищенным
данным, для защиты
электронных документов
(ЭЦП, шифрование),
для установления
защищенных соединений
(VPN, SSL), для
проведения финансовых
транзакций.

9.

Продукты компании «Алладин»
Смарт-карта eToken ГОСТ:
- Защищенный высокоскоростной однокристальный микроконтроллер Atmel
AT90SC25672RCT cо встроенными контроллерами ISO 7816 (для смарт-карт) или
USB 2.0 (для USB-ключей);
- Операционная среда, соответствующая открытым спецификациям для смарт-карт
Java Card Platform Specification 2.2.2 и Global Platform 2.1.1;
- Апплет «Криптотокен», реализующий российские криптографические алгоритмы и
протоколы.
- Микроконтроллер встроенные средства противодействия известным физическим,
логическим, переборным, стрессовым и другим атакам в соответствии с
требованиями Профиля защиты для смарт-карт (Smart Card Protection Profile –
SCSUG-SCPP).
- Сертифицированы ФСБ России как СКЗИ класса КС2 (сертификат ФСБ России №
СФ/124-1671).
Аппаратно реализованы алгоритмы:
- ГОСТ Р 34.10-2001 (генерация ключевых пар, формирование и проверка электронной
цифровой подписи),
- ГОСТ Р 34.11-94 (вычисление значения хэш-функции),
- ГОСТ 28147-89 (зашифрование/расшифрование блоков данных, вычисление
имитовставки),
- генерация последовательности случайных чисел;
- выработка ключа парной связи по алгоритму Диффи-Хеллмана согласно RFC 4357.

10.

Продукты компании «Алладин» (2)
Смарт-карта eToken PRO
- Микроконтроллер Atmel AT90SC25672RCT-USB (Atmel AT90SC25672R)
- Операционная среда Athena OS755, встроенная виртуальная машина Java
(совместимая со стандартом Sun Java Card)
- Сертифицированы по НСД при создании автоматизированных систем до класса
защищенности 1Г включительно и информационных систем персональных
данных (ИСПДн) до 1 класса включительно.
Аппаратно реализованы алгоритмы:
RSA 1024 / 2048,
3DES,
SHA-1

11.

Модели eToken
Смарт-карта eToken ГОСТ
USB-ключ eToken ГОСТ,
Смарт-карта eToken ГОСТ,
Комбинированный USB-ключ eToken ГОСТ/FLASH с дополнительным модулем
Flash-памяти,
Комбинированный USB-ключ eToken ГОСТ/OTP с генератором одноразовых
паролей
Смарт-карта eToken PRO
USB-ключ eToken PRO (Java),
Смарт-карта eToken PRO (Java)

12. Использование технологии Match-on-Card

13.

Память eToken PRO
Память eToken PRO условно можно разделить на четыре области: системная,
открытая, закрытая, свободная.
Системная область содержит файловую и операционную системы. В ней
хранятся имя eToken и данные, необходимые для проверки правильности
вводимых PIN-кодов и паролей администратора.
Закрытая область памяти содержит данные, для доступа к которым
требуется ввод PIN-кода или пароля администратора.
Открытая
область
памяти
содержит данные, для доступа к
которым требуется только подключение
eToken.

14.

доступа к информации
Гостевой уровень доступ Уровни
предоставляет:
возможность просматривать объекты в открытой области памяти;
возможность получения из системной области памяти общей информации относительно eToken PRO.
Пользовательский уровень доступа предоставляет:
право просматривать, изменять и удалять объекты в открытой области памяти, а также защищённые PINкодом объекты в закрытой области памяти;
возможность получения общей информации относительно электронного ключа eToken PRO;
право выполнять криптографические операции;
право менять PIN-код.
Административный уровень доступа предоставляет:
право просматривать, изменять и удалять защищённые паролем администратора объекты в закрытой
области памяти;
право менять PIN-код, не зная его (даже если PIN-код заблокирован);
право смены пароля администратора;
право настраивать параметры безопасности eToken PRO, а также возможность делать эти настройки
доступными в пользовательском режиме.
Доступ
Эмитента
(инилизационный) предоставляет право
переформатирования ключа. При этом
происходит потеря всех пользовательских
данных,
установка
нового
пароля
администратора и PIN-кода пользователя.
Доступ эмитента возможен только после
правильного ввода ключа форматирования
в процессе форматирования eToken.

15.

Архитектура программного обеспечения.
Открытый стандарт архитектуры смарт-карт PC/SC
cмарт-карта - микропроцессорная
карта или карта памяти выполненная в
соответствии со стандартом ISO/IEC
7816;
устройство чтения (Interface Device,
IFD) – специальное устройство для
сопряжения смарт карты и компьютера.
Может иметь различные интерфейсы
для соединения с компьютером. Для
соединения со смарт картой имеет
интерфейс
выполненный
в
соответствии с ISO 7816. Обеспечивает
карту
питанием,
генерирует
синхронизирующие
сигналы
и
осуществляет последовательный обмен
данными;
программное
обеспечение
для
картридера, драйвер считывателя;

16.

Архитектура программного обеспечения.
Открытый стандарт архитектуры смарт-карт PC/SC
Менеджер ресурсов - ключевой
Personal Computer/Smart Card Specifications
компонент архитектуры созданный для
решения трех основных задач:
- следит за установленными устройствами
чтения и делает эту информацию доступной для
других приложений;
- отслеживает известные типы смарт карт в
соответствии с установленными
дополнительными сервисами и
поддерживаемыми интерфейсами, делая
доступной эту информацию другим
приложениям;
отслеживает подключение/отключение
карты.
Дополнительные сервисы (поставщики
услуг) - каждый дополнительный сервис
расширяет функциональность, давая
возможность работать с различными смарт
картами посредством высоко-уровневого
программного интерфейса (API).
Приложения, которые используют
смарт-карты.

17.

eToken RTE (Run Time Environment)
eToken RTE — это набор необходимых
программных компонентов для поддержки
eToken в различных операционных системах
и приложениях.
Интерфейсы, обеспечиваемые в eToken
PKCS #11 (Public-Key Cryptography Standard, RSA Laboratories);
CAPI (CryptoAPI, Microsoft );
SAPI (Supplementary API).

18. Явное подключение DLL

При явном подключении DLL используется функция LoadLibrary, которая
получает имя библиотеки и возвращает ее дескриптор. Дескриптор
необходимо сохранить в переменной, так как он будет использоваться всеми
остальными функциями, предназначенными для работы с DLL.
HMODULE hLib;
hLib = LoadLibrary("etpkcs11.DLL");
После того как библиотека загружена, адрес любой из содержащихся в ней
функций можно получить с помощью GetProcAddress, которой необходимо
передать дескриптор библиотеки и имя функции. Затем функцию из DLL можно
вызывать, как обычно.
(FARPROC&)pGFL=GetProcAddress(hLib,"C_GetFunctionList");
pFunctionList->C_Initialize();

19. Функции PKCS 11

Функции стандарта PKCS#11, используемые для работы с устройствами
eToken, делятся на следующие категории:
• функции общего назначения;
• функции для работы со слотами и токенами;
• функции для работы с сессиями;
• функции для работы с объектами;
• функции шифрования;
• функции расшифрования;
• функции хеширования сообщений;
• функции создания подписи;
• функции проверки подписи;
• функции для работы с ключами;
• функции генерации случайных чисел.

20. функции общего назначения

C_Initialize
функция
инициализирует
библиотеку
PKCS
#11
для
ее
дальнейшего
использования приложением. Первоначальный вызов
этой функции является обязательным для работы
библиотеки, иначе попытка вызова любой функции
без вызова C_Initalize приведет к ошибке.
pFunctionList->C_Initialize (NULL_PTR);
C_Finalize() - Функция завершает работу с
библиотекой PKCS#11.
pFunctionList -> C_Finalize (NULL_PTR);

21. функции общего назначения

C_GetInfo() - Функция позволяет получить общую
информацию о библиотеке, которая возвращается в
структуре
типа
CK_INFO.
pInfo
указывает
на
размещение этой информации.
CK_INFO info;
pFunctionList -> C_GetInfo(&info);
C_GetFunctionList() - функция позволяет получить
список функций, поддерживаемых библиотекой. Список
указателей на все поддерживаемые функции
возвращается в структуре типа CK_FUNCTION_LIST.
C_GetFunctionList является единственной функцией
стандарта PKCS#11, которая может быть вызвана до
вызова функции C_Initialize. Это сделано для
ускорения работы приложения, а также для возможности
одновременного доступа приложения к нескольким
библиотекам.

22. Функции для работы со слотами и токенами

C_GetSlotList() - функция позволяет получить список
зарегистрированных слотов в системе. Список
идентификаторов слотов возвращается в массиве
типа CK_SLOT_ID.
CK_DEFINE_FUNCTION(CK_RV, C_GetSlotList)(
CK_BBOOL
tokenPresent,
CK_SLOT_ID_PTR
pSlotList,
CK_ULONG_PTR
pulCount
);
Параметр tokenPresent указывает, должен ли список
включать слоты только с подключенным токенами
(CK_TRUE) или все слоты (CK_FALSE);
SlotList указывает на переменную, в которую
возвращается количество слотов.
pFunctionList->C_GetSlotList(CK_FALSE, NULL_PTR, &pulCount);

23. Функции для работы со слотами и токенами

Существует два варианта вызова C_GetSlotList:
• Если pSlotList == NULL_PTR, тогда C_GetSlotList вернет в
*pulCount только количество слотов, а не полностью список.
pFunctionList->C_GetSlotList(CK_FALSE, NULL_PTR, &pulCount);
• Если pSlotList != NULL_PTR, тогда *pulCount должен содержать размер
(в формате CK_SLOT_ID элемента) указываемого pSlotList буфера.
pSlotList = (CK_SLOT_ID_PTR) malloc(0);
pFunctionList->C_GetSlotList(CK_TRUE, pSlotList, &pulCount);

24. Функции для работы со слотами и токенами

C_GetSlotInfo – функция позволяет получить информацию о данном
слоте.
CK_DEFINE_FUNCTION(CK_RV, C_GetSlotInfo)(
CK_SLOT_ID
slotID,
CK_SLOT_INFO_PTR pInfo
);
Информация о слоте возвращается в структуре
типа CK_SLOT_INFO. slotID - ID слота, к которому подключен
токен, pInfo указывает на переменную, которая получает информацию о
слоте.
pFunctionList->C_GetSlotInfo(*pSlotList, &InfoSlot);

25. Функции для работы со слотами и токенами

C_GetTokenInfo() – функция позволяет получить информацию о данном
токене.
CK_DEFINE_FUNCTION(CK_RV, C_GetTokenInfo)(
CK_SLOT_ID
slotID,
CK_TOKEN_INFO_PTR pInfo
);
Функция возвращает указатель на структуру CK_TOKEN_INFO, в которой
хранится информация о токене: модель, метка, название компаниипроизводителя и т.д. slotID - ID слота, к которому подключен
токен, pInfo указывает на место размещения полученной информации о
токене.
pFunctionList->C_GetTokenInfo(*pSlotList, &InfoToken);

26. Функции для работы со слотами и токенами

C_InitToken()– функция инициализирует память токена, а именно:
• сбрасывает счетчик неверных попыток ввода пин-кода пользователя,
• устанавливает пин-код по умолчанию для пользователя,
• очищает папку для объектов PKCS#11,
• устанавливает метку токена.
CK_DEFINE_FUNCTION(CK_RV, C_InitToken) (
CK_SLOT_ID
slotID,
CK_UTF8CHAR_PTR pPin,
CK_ULONG
ulPinLen,
CK_UTF8CHAR_PTR pLabel
);
Функция возвращает указатель на структуру CK_TOKEN_INFO, в которой
хранится информация о токене: модель, метка, название компаниипроизводителя и т.д. slotID - ID слота, к которому подключен
токен, pInfo указывает на место размещения полученной информации о

27. Функции для работы с сеансами

C_OpenSession() – функция открывает сессию между приложением и токеном,
подключенным к данному слоту.
СK_DEFINE_FUNCTION(CK_RV, C_OpenSession)(
CK_SLOT_ID
slotID,
CK_FLAGS
flags,
CK_VOID_PTR
pApplication,
CK_NOTIFY
Notify,
CK_SESSION_HANDLE_PTR phSession
);
Аргументы pApplication и Notify – должны принимать значение NULL_PTR.
C_CloseSession()– функция закрывает сессию между приложением и токеном.
При закрытии сессии все созданные сессией объекты уничтожаются
автоматически, даже если приложение имеет другие сессии, использующие эти
объекты.
K_DEFINE_FUNCTION(CK_RV, C_CloseSession)(
CK_SESSION_HANDLE hSession
);

28. Функции для работы с сеансами

C_Login() – функция используется для ввода PIN-кода и перехода в режим
пользователя или администратора.
CK_DEFINE_FUNCTION(CK_RV, C_Login)
(CK_SESSION_HANDLE hSession,
CK_USER_TYPE userType,
CK_UTF8CHAR_PTR pPin,
CK_ULONG ulPinLen)
);
Аргументы userType:
CKU_USER – пользователь.
CKU_SO – администратор.
C_Logout ()– cброс предъявления PIN-кода пользователя или администратора.
K_DEFINE_FUNCTION(CK_RV, C_Logout)(
CK_SESSION_HANDLE hSession
);

29. Ссылки

Описание функций поддерживаемых pkcs #11
для eToken
http://developer.aladdinrd.ru/pkcs11/2.0.1/api/standard/index.html
English     Русский Правила