21

如何开始使用智能卡编程?我在这里询问他入门所需的所有工具包:书籍、教程、硬件等。

我计划与几个智能卡程序员一起玩,我对这个领域很陌生。

编辑:我最感兴趣的是那些能很好地使用类 Unix 操作系统的程序员。另外,我不确定这是如何工作的……但我想用 C/C++ 对它们进行编程

4

4 回答 4

23

每当我需要访问智能卡以用于安全应用程序时,它都是通过以下方式之一:

  • 微软加密API
  • 用于卡的PKCS#11库。

要使用 Microsoft CryptoAPI 访问卡,需要特定于卡的加密服务提供程序 (CSP)。CSP 位于 CryptoAPI 层之下。

但是,如果您正在使用“C/C++”在 Unix/Linux 上进行开发,那么您可能需要查看 RSA 的PKCS#11标准。该标准指定了一个名为 Cryptoki(加密令牌接口)的“C”API,它在所有类型的加密设备之上提供了一个通用抽象。几乎所有智能卡供应商都为其卡提供了 PKCS#11 库,您可以使用 Cryptoki API 对其进行编程。

如果您想在较低级别访问智能卡/读卡器,您可以使用 API,例如 PC/SC 或 CT-API。

  • 在 Windows、Linux 和 Mac OS X 上实现的智能卡访问的 PC/SC 事实标准

  • CT-API 仅提供非常少的功能;不太适合现代应用程序。

如果您对编写在智能卡上运行的 Java 小程序感兴趣,那么您可能希望查看http://java.sun.com/javacard/

可能有用的资源

  • OpenSC是一组用于智能卡的库和工具。它旨在与 PKCS#11 支持卡一起使用。OpenCT 为读卡器提供驱动程序,以及由卡和读卡器组成的令牌(即 USB 令牌和其他“完整”设备)。

  • http://www.linuxnet.com/ MUSCLE - 在 linux 环境中使用智能卡的运动

  • PKCS#15 - 加密令牌信息格式标准

  • 智能卡手册

  • 2009年在 RSA conf上发表的关于 PKCS#11 的演讲。

  • PyKCS11 PKCS#11 的 Python 包装器。这些类型的包装器可以提供比直接在 Cryptoki 级别工作更简单的更高级别的接口。

  • 智能卡联盟

于 2010-04-23T15:34:54.873 回答
3

Java 开始在智能卡市场获得巨大的控制权,受到非常大的玩家(如 IBM)的推动。

在整个国家/地区,人们的口袋里都装着 Java 卡。例如,有超过 1000 万比利时公民(他们必须拥有)国民身份证是运行 BELPIC“小程序”的 Java 卡。

如果我没记错的话,整个巴西的医疗保健系统也是基于 Java 卡的。

关于 SmartCard 和 Linux,这里是 Linux SmartCard howto(请注意,howto 到处都是“Java”关键字):

http://www.faqs.org/docs/Linux-HOWTO/Smart-Card-HOWTO.html

然后是 2008 年 6 月名为“Exploring SmartCards”的 .pdf文件,其中介绍了“SmartCard”世界的混乱局面,基本上首先解释“SmartCard”与“计算机”一样具有描述性:那就是,不是很详细;)

于 2010-04-23T17:07:38.927 回答
0

如果你在谷歌上搜索一下,你可以找到智能卡开发工具包,这些工具包提供程序员、一些示例卡和手册,而且价格相当便宜。

它还有助于了解密码学(尤其是公钥密码学),以及将数据打包成非常小的结构的一些实践。

智能卡的范围从令人难以置信的愚蠢(一个安全的 1kb 内存存储)到相当复杂的(我看到广告中的智能卡运行精简的 .NET 框架)。

最常用的智能卡可能是 Mifare 生产的单元,它们通常用作旅行票,但也用作会员卡甚至访问许可证。

于 2010-04-23T15:08:27.713 回答
0

现在给出答案已经很晚了,但我想给@bignum 的答案添加一个附加组件。

好吧,你可以开始玩 Java 智能卡开发了,我想推荐一本好书来了解初学者和开发人员的诀窍。“用于智能卡的 Java 卡技术”。

如果您的预算允许,那么您可以购买一张“移动安全卡”,使用从上述书籍中获得的知识来研发智能卡小程序。

您还可以参考或使用托管在 googlecode 上的智能卡 API 项目SEEK FOR ANDROID以获得第一手体验。

于 2012-08-31T20:06:10.567 回答