OpenCrypto: Unchaining the JavaCard Ecosystem
dan.enigmabridge.com
dan.enigmabridge.com
If you're not very familiar with JavaCard and why this would be noteworthy, JavaCard is basically a very stripped-down version of Java that only bears some similarity to regular Java SE. Amongst these limitations is a very stripped down standard library (there is no java.lang.String for example), only a few types (byte, short and arrays of bytes, support for int is optional, no support for char, long, double, float, etc.) and no garbage collection (so everything is preallocated at program start, including exceptions).
Given these limitations, implementing newer crypto algorithms is quite a feat.
Or are SIM cards where this OpenCrypto would be most useful for makers/researchers?
I believe the "Secure Element" in iOS and other smartphone payment systems with the EMV wireless payment standard, all use this as their OS/ecosystem, as it's mandated by the payment industry. So it is widely used.
In terms of use, there's an additional complexity for using JavaCards. We try to solve that a) making the code easier to port and b) providing access to smartcards via TCP/IP where it makes sense to have them in a rack.
In general, they don't run out of battery and you can print your headshot and name on them.
In terms of "hardware" - all chip debit/credit cards use the same processors (actually they are a complete computers with EEPROM, RAM, co-processors).
Almost all payment chip cards (except in France) uses a worldwide standard called EMV
A quick check with the smart card list maintained by Ludovic Rousseau shows that the card I used (UOB Platinum Visa Card) is likely to an IBM JCOP (JavaCard Open Platform) 30 chip card.
The SGX enclave is totally unrelated to JavaCard.
"Another module is the Dynamic Application Loader (DAL), which consists of a Java virtual machine and set of preinstalled Java classes for cryptography, secure storage, etc."
Or the remark from Joanna Rutkowska,
https://twitter.com/rootkovska/status/728150127458684931
> @AviKivity ME's "Dynamically Loaded Applications", Java-based :)
That being said, there's Intel Platform Trust Technology and Intel Virtual Smart Card. I'm not quite sure what's up with them.
Anywhere you want the user's credential to have some intelligence (sign challenges under specific circumstances, credit and debit a balance without any central database in the loop, etc) but be highly resistant to data tampering/exfiltration (like inflating the balance or copying the key) by its bearer.
It was a real boon to the DC area technology consulting business. Timed well with stimulus in the post crash crisis as well. Lots of investment in this technology (reminiscent of the Secret History of Silicon Valley) and surprised it has taken this long to get to finance and other uses.
I think one problem is smart cards were timed with the take off of mobile. They weren't very mobile friendly and seemed kind of redundant, but I prefer them to a fingerprint scanner on the iphone or galaxy.
Excited to see where this goes.