2017-03-02 59 views
0

我想在Linux機器上生成證書,將其傳輸到卡上並在此處對其進行加密。然後將其存儲並在稍後恢復。我不知道如何得到像卡上的4k RSA數據。它是否與APDU一起工作?JavaCard獲取卡上的數據

回答

1

證書一般不需要加密;它通常包含公共信息。您可以使用多個APDU命令將數據發送到卡。爲此,您可以使用命令鏈接:一個重複多次發送數據的命令。你也可以使用帶有偏移量的UPDATE BINARY。

無論是命令鏈接還是UPDATE BINARY都是在Java Card上實現的,因此您必須自己實現這些功能。規格在ISO/IEC 7816-4: "Identification cards -- Integrated circuit cards -- Part 4: Organization, security and commands for interchange"

Java Card本身包含對最大2^15 - 1字節大小的字節數組的支持。這大約是32K,不僅僅是一個通用的X509v3證書。你可以在其中存儲明文或密文。

所以,這種功能是可能的「與APDU」。由於APDU是大多數卡的唯一通用接口,因此在這裏應該有許多實現。至少那些我設計/實施過的。


Java卡可以還支持擴充長度APDU的(通過實施由applet的ExtendedLength接口)。但是,對於大多數(即使不是全部)卡,最大APDU緩衝區都低於4K。所以儘管你可以使用擴展長度的APDU來解決這個問題,但是你無法解決它的完整問題。

+0

不應該是2^15 - 1個字節嗎? (即作爲簽名短片給出的長度) –

+1

@MichaelRoland D'oh!謝謝,修復。 –