5

We are developing a JavaCard-based security sensitive application. Our goal is to allow client code communicating with a GlobaPlatform 2.2+ based JavaCard applet to convince itself that it's actually talking to a specific (and verifiable) version of the JavaCard applet it needs to talk to. In other words, we are looking for a "platform integrity" mechanism to be sure there's no possibility that the JavaCard applet code was substituted/modified by "insiders" (e.g. even us who developed the applet).

At first we were hoping to use an Installation Receipt mechanism as described in the GP specification, but we were advised that this doesn't apply in that case.

So is there a way for client code to query the card about the authenticity (e.g. a simple hash) of the applet codebase (i.e. the installed .cap file) without having to query and trust the JavaCard applet itself?

Alex Kravets
  • 524
  • 4
  • 12
  • Not that I know of. But maybe you could include a public / private key pair for each applet and then sign the public key during "personalization". Then the other party can verify the signature over the public key and perform a challenge-response to make sure the applet contains the private key. – Maarten Bodewes Jan 28 '17 at 12:53
  • 2
    The important property we are trying to achieve is to allow an attestation of the code running on the card by a party other than ourselves. i.e. either the hardware manufacturer or some kind of middle layer framework hosting the applet. While a conspiracy between us and such a 3rd party is possible, a system relying on such attestation should be more secure than just us self certifying ourselves. This is akin to multi-sig. – Alex Kravets Jan 29 '17 at 04:24
  • 2
    There is Global Platform DAP verification. But I'm not sure that this will meet your expectations as it is only performed while loading the applet onto the card. – Maarten Bodewes Feb 06 '17 at 21:37

0 Answers0