Как можно было начать с программированием смарт-карт? Я спрашиваю здесь обо всем инструментарии, в котором он нуждается для начала работы: книги, учебные руководства, аппаратные средства и т.д.
Я планирую в проигрывании вокруг с несколькими программистами смарт-карт, и я довольно плохо знаком с этим полем.
Править: Я главным образом интересуюсь программистами, которые играют по правилам с подобными Unix операционными системами. Кроме того, я не уверен, как это работает..., но я хотел бы программировать их в C/C++
Всякий раз, когда мне нужно было получить доступ к смарт-картам для использования в приложениях безопасности, я использовал либо:
Для доступа к карте с помощью Microsoft CryptoAPI требуются поставщики криптографических служб (CSP) для конкретных карт. CSP находится под слоем CryptoAPI.
Однако, если вы разрабатываете под Unix / Linux с использованием «C / C ++», вам, вероятно, захочется взглянуть на стандарт PKCS # 11 от RSA. Стандарт определяет API C, называемый Cryptoki (интерфейс криптографических токенов), который дает общую абстракцию над всеми типами криптоустройств.Почти все поставщики смарт-карт предоставляют библиотеку PKCS # 11 для своих карт, против которой вы можете запрограммировать использование Cryptoki API.
Если вы хотите получить доступ к смарт-карте / считывателю на более низком уровне, вы можете использовать API, такие как PC / SC или CT-API.
Фактически стандарт PC / SC для доступа к смарт-картам, реализованный в Windows, Linux и Mac OS X
CT-API обеспечивает лишь очень минимальную функциональность; не очень подходит для современных приложений.
Если вы заинтересованы в написании Java-апплетов, работающих на смарт-картах, вы, вероятно, захотите посмотреть http://java.sun.com/javacard/
Ресурсы, которые могут быть полезны
OpenSC - это набор библиотек и инструментов для смарт-карт. Он предназначен для работы с картами поддержки PKCS # 11. OpenCT предоставляет драйверы для картридеров и токенов, которые состоят как из карты, так и из считывающего устройства (например, USB-токены и другие «полные» устройства).
http://www.linuxnet.com/ MUSCLE - Движение за использование смарт-карт в среде Linux
PKCS # 15 - Стандарт формата информации криптографических токенов
презентация PKCS # 11 , сделанная на конференции RSA в 2009 году.
PyKCS11 Python-оболочка вокруг PKCS # 11. Эти типы оболочек могут обеспечить более простой интерфейс более высокого уровня, чем работа непосредственно на уровне Cryptoki.
Java начинает завоевывать рынок смарт-карт, движимый очень крупными игроками (такими как IBM).
Есть целые страны, где люди носят Java Card в кармане. Например, более 10 миллионов граждан Бельгии имеют (обязательно иметь с собой) национальную идентификационную карту - это карта Java, на которой работает «апплет» BELPIC.
Если я не ошибаюсь, вся бразильская система здравоохранения также основана на Java-картах.
Что касается SmartCard и Linux, вот руководство по Linux SmartCard (обратите внимание, что оно везде полно ключевого слова "Java"):
http://www.faqs.org/docs/Linux-HOWTO/Smart- Card-HOWTO.html
Затем есть .pdf под названием «Изучение смарт-карт» от июня 2008 года, в котором рассматривается большой беспорядок, который представляет собой мир «смарт-карт», и который в основном начинается с объяснения того, что: « SmartCard примерно так же описательна, как и слово «компьютер»: то есть не очень наглядно; )
Если вы погуглите, вы можете найти комплекты для разработки смарт-карт, которые предлагают программист, несколько образцов карточек и руководства по разумной цене.
Это также помогает понять криптографию (особенно криптографию с открытым ключом) и немного попрактиковаться в упаковке данных в действительно очень крошечные структуры.
Смарт-карты варьируются от невероятно глупых (безопасное хранилище памяти размером 1 Кбайт) до довольно сложных (я видел рекламируемые карты, которые запускают урезанную платформу .NET).
Вероятно, наиболее часто используемые смарт-карты - это единицы, производимые Mifare, которые обычно изготавливаются как проездные, но также используются в качестве карт лояльности или даже разрешений на доступ.