我是智能卡编程的新手,我想开发一个特定的应用程序。
我想使用非接触式智能卡并开发具有以下功能的应用程序:
我已经购买了一些基本硬件来启动项目,但我不完全确定我购买的硬件是否兼容我想到的应用程序。
对于读者/作家我买了一个: ACR1251
对于非接触式智能卡,我购买了此类卡: 复旦08 M1S50配FM1108芯片
在阅读了智能卡编程的文档之后,我对智能卡可以支持的内容感到困惑。根据我的理解,智能卡的操作系统由制造商定义,不能更改或扩展。另外的操作系统也无法添加。 OS还确切地定义了卡支持哪些APDU命令。 因此,我的问题是,我要求的功能是否可以通过我当前的硬件实现?
如果没有,我非常感谢智能卡能够支持我要求的功能的提示。在尝试自己找到答案时,我发现JavaCards支持椭圆曲线加密。如果我目前的智能卡不支持我要求的功能,那么Java Card是一个很好的选择,可以让我自己定义椭圆曲线吗?
我会发现任何其他有用的提示,例如要查看的特定APDU命令或其他有用的开发提示,我们将非常感谢!
提前谢谢。
答案 0 :(得分:1)
如果您想对卡进行编程,我强烈建议使用符合Java Card卡的卡。确保它具有所需的ECC兼容性。一般来说,你必须使用F(p)之上的曲线,但这可能是你想要的。
如果您需要对大整数或ECC操作进行低级访问,您可能需要考虑其他智能卡解决方案; Java Card提供了一个相对高级的接口(可能扩展了特定于实现的功能)。您需要具有ECC功能的协处理器和足够内存的智能卡/处理器卡,当然还需要具有足够文档和开发环境的运行时和API。
您最好在卡上生成公钥/私钥对,然后导出公钥。您或签名的任何接收者当然也必须信任公钥。
您的读者可以使用非接触式智能卡。你现在拥有的东西似乎是所谓的存储卡,而那些无法编程。您可能只能存储一些字节(或多或少安全)。
答案 1 :(得分:1)
您提到的复旦卡似乎是1 kByte MIFARE经典卡。这不是智能卡,但正如Maarten指出的那样,是一种非接触式存储卡。与椭圆曲线加密相比,它绝对是性能谱的另一端,实际上它只使用了一些弱而破碎的对称加密。
Thera也是非Java智能卡,无法编程,但能够生成和应用RSA以及椭圆曲线键。