如何开始智能卡编程?这里我想问问需要哪些工具才能开始编程:书籍、教程、硬件等。
我打算使用几个智能卡编程器进行实验,而我在这个领域很新。
编辑:我主要对兼容类Unix操作系统的编程器有兴趣。此外,虽然我不确定如何运作,但我希望使用C/C++语言进行编程。
每当我需要访问智能卡以供安全应用时,通常使用以下两种方式之一:
要使用 Microsoft CryptoAPI 访问智能卡,需要一个特定于卡片的 Cryptographic Service Providers(CSP)。CSP 位于 CryptoAPI 层下方。
然而,如果您正在 Unix/Linux 上使用 'C/C++' 进行开发,那么您可能需要查看 RSA 的 PKCS#11 标准。该标准指定了一个名为 Cryptoki(Cryptographic Token Interface)的 'C' API,它在所有类型的加密设备上提供了公共抽象层。几乎所有智能卡供应商都会为其卡提供一个 PKCS#11 库,您可以使用 Cryptoki API 进行编程。
如果您想在更低的级别上访问智能卡/读卡器,则可以使用诸如 PC/SC 或 CT-API 的 API。
PC/SC 是在 Windows、Linux 和 Mac OS X 上实现智能卡访问的事实标准。
CT-API 仅提供非常基本的功能,不太适合现代应用程序。
如果您有兴趣编写在智能卡上运行的 Java 小程序,则可能需要查看http://java.sun.com/javacard/
以下资源可能会有所帮助
OpenSC 是一组用于智能卡的库和工具。它旨在与支持 PKCS#11 的卡片配合使用。OpenCT 为读卡器和由卡和读卡器(即 USB 记号和其他“完整”设备)组成的记号提供驱动程序。
PKCS#15 - 密码令牌信息格式标准
PyKCS11 - PKCS#11的Python封装。这些类型的封装可以提供比直接在Cryptoki层工作更简单的高级接口。
Java在智能卡市场上开始占据重要地位,得到了像IBM这样的大公司的推动。
有一些国家的人们口袋里都携带着Java卡。例如,比利时有超过1000万名公民必须携带Java卡作为其国民身份证,并运行BELPIC“applet”。
如果我没记错的话,整个巴西医疗保健系统也是基于Java卡的。
关于SmartCard和Linux,下面是Linux SmartCard HowTo(请注意,该HowTo中“Java”关键字随处可见):
http://www.faqs.org/docs/Linux-HOWTO/Smart-Card-HOWTO.html
此外,2008年6月发布了一份名为“探索智能卡”的pdf文档,介绍了智能卡领域的混乱现状,并从根本上解释了“智能卡”这个词是多么的不够具描述性,就像说“计算机”一样。
如果你在谷歌上搜索,你可以找到一些智能卡开发套件,这些套件提供程序员、几张样品卡和手册,价格合理。
了解密码学(特别是公钥加密)以及将数据打包成非常小的结构也会有所帮助。
智能卡的范围从极其愚蠢的(一个安全的1kb存储器)到相当复杂的(我看到过广告宣传的运行精简版.NET框架的智能卡)。
可能最常用的智能卡是由Mifare生产的单元,通常作为旅行票使用,但也用作忠诚卡甚至访问许可证。
回答已经来晚了,但我还是想给 @bignum 的答案补充一个。
你可以开始尝试 Java 智能卡开发,并且我推荐一本适合初学者和开发者的好书,名称为 "Java Card Technology for Smart Cards".
如果你的预算允许,那么你可以购买一个 "Mobile Security Card" 用于研究和开发智能卡 applets,应用上述书籍所学知识。
同时,你也可以参考或使用托管在 Googlecode 上的智能卡 API 项目 SEEK FOR ANDROID 来获得第一手的实践经验。