编程语言
首页 > 编程语言> > 如何验证Java卡上的证书有效性?

如何验证Java卡上的证书有效性?

作者:互联网

我知道如何使用Java验证证书,但由于java卡API的限制(没有java.io/其他类,只允许使用javacard API Object Throwable),我不知道如何在Java卡上执行此操作.

我没有找到任何javacard兼容的证书库.我错过了什么吗?

我需要验证证书是否由CA签名,以及我需要验证证书的有效性.

解决方法:

通常,验证证书对于智能卡来说是一项艰苦的工作.这些证书的大小通常大于2KiB.虽然这是用于通用PC的花生,但它不适用于智能卡,其中高端卡通常仅包含8 KiB的RAM.这是在操作系统,加密协处理器APDU缓冲区和 – 当然 – 您的小程序之间共享的.

还有一个问题:通常智能卡不包含时钟.这使得证明证书在有效期内是一件棘手的事情;基本上你需要一些可靠的时间来保持时间.

然后,证书验证通常使用CRL或OCSP来检查证书的状态.您可能已经理解,对于这样一个有限的平台,执行OCSP查找甚至只是解析CRL并不容易.

如果您巧妙地编程,则可以通过证书验证CA的签名.但一般情况下使用Card Verifiable Certificates (CVC’s or CV-certificates).这些是“扁平”证书,具有更少的铃声和口哨声,更容易在智能卡中解析.

通过使用较新的,经过验证的证书的开始日期,您可以使用某种日期棘轮,其中使用证书本身中的日期更新时钟.但请注意,如果新证书暂时未经过验证,您仍然无法检测到过期证书. CV证书通常不使用CRL,因此您必须信任每个证书,或者如果它们被泄露,您可能需要将某些证书列入黑名单.

尽管Java Card Connected版本可能会有更多支持,但我认为这根本不会对您有所帮助,因为连接版本很少被发现.

CVC的原始规格可以在ISO/IEC 7816-8 standard: Identification cards — Integrated circuit cards — Part 8: Commands and mechanisms for security operations附录A和附件中找到. B.请注意,此标准是付费软件.

国际民航组织的电子机读旅行证件和BSI TR 03110文件也定义了这些类型的证书,因此如果你更喜欢免费软件,你最好根据它制定任何证书规范.

标签:java,certificate,x509certificate,javacard
来源: https://codeday.me/bug/20190527/1164073.html