2012-08-16 56 views
0

我有一个Android项目,需要我使用NFC标签进行椭圆曲线算法的加密/签名数据。NFC兼容标签用于椭圆曲线加密

我需要该标签能够使用我在外部生成的密钥对来执行密码本身。私钥存储在标签上,而不是转移到Android来执行签名,这一点很重要。

我还需要写保护所有标签,以便数据只有在我签名时才能写入。

我希望标签的形状因子是圆形的,尽可能小。

从我的研究到目前为止,它看起来像我必须使用Java卡,但我不确定这一点。

任何人都可以确认我可以使用适当的设备吗?

回答

3

您需要一些微控制器卡。我从来没有见过除标准信用卡表格(ID-1)以外的任何其他表格。

Java Card卡当然是一种选择,例如恩智浦JCOP或金雅拓TOP卡。他们可以在各个地方在线购买。要为这种卡编写小程序,需要您可以访问该卡的SDK(通常仅在NDA下可用)。 Java Card编程与Java编程完全不同,而且它需要ISO 7816-4和(在你的情况下)加密等知识。

另一种可能性可能是ZeitControl BasicCard。这些卡可以从各种在线智能卡商店和ZeitControl本身获得(并非所有卡都可以做ECC)。该SDK是免费的,可从ZeitControl website获得。虽然卡的编程语言需要一些习惯,但是很多通信细节都是自动处理的。如果您需要帮助将BasicCard applet与Android应用程序连接起来,您可以从ZeitControl请求更多信息(当我联系他们时,这些信息非常有用)。不过,这并不太复杂。

+0

使用随Java卡类型提供的SDK可能是开发applet并让它在该卡上运行的最简单方法,但我不会说这是一个困难的要求。如果你有一个标准的JDK,来自Sun/Oracle的免费Java Card开发包,一些导出文件和全球平台密钥,那么有(命令行)工具可以完成工作。 – martijno 2012-08-16 14:34:50

+0

@martijno问题在于Oracle Java Card SDK不包含使用所有加密基元的模拟器。这意味着调试应用程序很困难。要进行适当的调试,您需要供应商特定的工具。这也有助于这些工具通常为您设置环境(适用的API级别等)。 – 2012-08-17 15:33:11

+0

@owlstead,是的,关于调试和模拟器的好点。尽管如此,在一个套件中开发的编写良好,经过测试的applet是否可以轻松安装在不同供应商的卡上(如果它支持相同的加密原语集)?如果没有,Java Card作为标准有什么意义? – martijno 2012-08-17 20:30:40