如何验证 Java 卡上的证书有效性?
How to verify a certificate validity on a Java Card?
我知道如何使用 Java 验证证书,但由于 java 卡 API 的限制,我不知道如何在 java 卡上执行此操作(没有java.io/ 其他 类,仅 java 卡片 API + Object + Throwable 允许)。
我没有找到任何 java卡片兼容的证书库。我错过了什么吗?
我需要验证证书是否由 CA 签名,并且我需要验证证书的有效性。
通常验证证书对于智能卡来说是一项艰巨的工作。这些证书的大小通常大于 2KiB。虽然这对于通用 PC 来说是微不足道的,但对于智能卡来说却不是这样,因为智能卡中的高端卡通常只有 8 KiB 的 RAM。这在 OS、APDU 缓冲区的加密协处理器和 - 当然 - 你的小程序之间共享。
还有一个问题:智能卡一般不带时钟。这使得验证证书是否在有效期内成为一件棘手的事情;基本上你需要一些值得信赖的计时方式。
还有一个事实是,证书验证通常使用 CRL 或 OCSP 来检查证书的状态。正如您可能理解的那样,执行 OCSP 查找甚至只是解析 CRL 对于这样一个受限的平台来说并不容易。
验证 CA 在证书上的签名 当然是可能的,如果你巧妙地编程的话。不过一般都是用Card Verifiable Certificates (CVC's or CV-certificates)。这些是 "flattened" 没有花里胡哨的证书,更容易在智能卡中解析。
通过使用更新的、经过验证的证书的开始日期,您可以使用某种日期 ratchet,其中使用证书本身中的日期更新时钟。但请注意,如果新证书有一段时间没有经过验证,您仍然无法检测到过时的证书。 CV 证书通常不使用 CRL,因此您要么必须信任每个证书,要么可能需要在某些证书遭到破坏时将其列入黑名单。
尽管 Java Card Connected 版本可能有更多支持,但我认为这对您没有任何帮助,因为 connected 版本很少在野外发现。
CVC 的原始规范可以在 ISO/IEC 7816-8 standard: Identification cards — Integrated circuit cards — Part 8: Commands and mechanisms for security operations、附件 A 和 B 中找到。请注意,该标准是付费软件。
ICAO eMRTD 和 BSI TR 03110 文档也定义了这些类型的证书,因此如果您更喜欢免费软件,最好以任何证书规范为基础。
我知道如何使用 Java 验证证书,但由于 java 卡 API 的限制,我不知道如何在 java 卡上执行此操作(没有java.io/ 其他 类,仅 java 卡片 API + Object + Throwable 允许)。
我没有找到任何 java卡片兼容的证书库。我错过了什么吗?
我需要验证证书是否由 CA 签名,并且我需要验证证书的有效性。
通常验证证书对于智能卡来说是一项艰巨的工作。这些证书的大小通常大于 2KiB。虽然这对于通用 PC 来说是微不足道的,但对于智能卡来说却不是这样,因为智能卡中的高端卡通常只有 8 KiB 的 RAM。这在 OS、APDU 缓冲区的加密协处理器和 - 当然 - 你的小程序之间共享。
还有一个问题:智能卡一般不带时钟。这使得验证证书是否在有效期内成为一件棘手的事情;基本上你需要一些值得信赖的计时方式。
还有一个事实是,证书验证通常使用 CRL 或 OCSP 来检查证书的状态。正如您可能理解的那样,执行 OCSP 查找甚至只是解析 CRL 对于这样一个受限的平台来说并不容易。
验证 CA 在证书上的签名 当然是可能的,如果你巧妙地编程的话。不过一般都是用Card Verifiable Certificates (CVC's or CV-certificates)。这些是 "flattened" 没有花里胡哨的证书,更容易在智能卡中解析。
通过使用更新的、经过验证的证书的开始日期,您可以使用某种日期 ratchet,其中使用证书本身中的日期更新时钟。但请注意,如果新证书有一段时间没有经过验证,您仍然无法检测到过时的证书。 CV 证书通常不使用 CRL,因此您要么必须信任每个证书,要么可能需要在某些证书遭到破坏时将其列入黑名单。
尽管 Java Card Connected 版本可能有更多支持,但我认为这对您没有任何帮助,因为 connected 版本很少在野外发现。
CVC 的原始规范可以在 ISO/IEC 7816-8 standard: Identification cards — Integrated circuit cards — Part 8: Commands and mechanisms for security operations、附件 A 和 B 中找到。请注意,该标准是付费软件。
ICAO eMRTD 和 BSI TR 03110 文档也定义了这些类型的证书,因此如果您更喜欢免费软件,最好以任何证书规范为基础。