Java Card: Difference between revisions

Content deleted Content added
Citation bot (talk | contribs)
Removed parameters. | Use this bot. Report bugs. | #UCB_CommandLine
OAbot (talk | contribs)
m Open access bot: url-access updated in citation with #oabot.
 
(6 intermediate revisions by 6 users not shown)
Line 4:
{{java platforms}}
 
'''Java Card''' is a software technology that allows [[Java platform|Java]]-based applications ([[applet]]s) to be run securely on [[smart card]]s and more generally on similar secure small [[memory footprint]] devices<ref name="Chen 2000">{{cite book | last=Chen | first=Z. | title=Java Card Technology for Smart Cards: Architecture and Programmer's Guide | publisher=Addison-Wesley | series=Addison-Wesley Java Series | year=2000 | isbn=978-0-201-70329-0 | url=https://archive.org/details/javacardtmtechno00zhiq | url-access=registration | access-date=9 April 2019 }}</ref> which are called "secure elements" (SE). Today, a Securesecure Elementelement is not limited to its smart cards and other removable cryptographic tokens form factors; embedded SEs soldered onto a device board and new security designs embedded into general purpose chips are also widely used. Java Card addresses this hardware fragmentation and specificities while retaining code portability brought forward by Java.
 
Java Card is the tiniest of Java platforms targeted for embedded devices. Java Card gives the user the ability to program the devices and make them application specific. It is widely used in different markets: wireless telecommunications within SIM cards and embedded SIM, payment within banking cards<ref>{{Citation|last=Oracle Learning Library|title=Developing Java Card Applications|date=2013-01-30|url=https://www.youtube.com/watch?v=khgT5dwKvOo |archive-url=https://ghostarchive.org/varchive/youtube/20211213/khgT5dwKvOo |archive-date=2021-12-13 |url-status=live|access-date=2019-04-18}}{{cbignore}}</ref> and NFC mobile payment and for identity cards, healthcare cards, and passports. Several IoT products like gateways are also using Java Card based products to secure communications with a cloud service for instance.
Line 10:
The first Java Card was introduced in 1996 by [[Schlumberger Limited|Schlumberger]]'s card division which later merged with [[Gemplus]] to form [[Gemalto]]. Java Card products are based on the specifications by [[Sun Microsystems]] (later a [[subsidiary]] of [[Oracle Corporation]]). Many Java card products also rely on the GlobalPlatform specifications for the secure management of applications on the card (download, installation, personalization, deletion).
 
The main design goals of the Java Card technology are portability, security and backward compatibility.<ref>{{cite journal |author1=Ahmed Patel |author2=Kenan Kalajdzic |author3=Laleh Golafshan |author4=Mona Taghavi | year = 2011 | title = Design and Implementation of a Zero-Knowledge Authentication Framework for Java Card | journal = International Journal of Information Security and Privacy | pages = 1–18 | volume = 5 | issue = 3 |publisher = IGI |doi=10.4018/ijisp.2011070101 | url = http://www.igi-global.com/article/international-journal-information-security-privacy/58979 | url-access = subscription }}</ref>
 
== Portability ==
Java Card aims at defining a standard [[smart card]] computing environment allowing the same Java Card applet to run on different smart cards, much like a Java applet runs on different computers. As in Java, this is accomplished using the combination of a virtual machine (the Java Card Virtual Machine), and a well-defined runtime library, which largely abstracts the applet from differences between smart cards. Portability remains mitigated by issues of memory size, performance, and runtime support (e.g. for communication protocols or cryptographic algorithms). Moreover, vendors often expose proprietary [[API]]s specific to their ecosystem, further limiting portability for applets that rely on such calls.
To address these limitations, [[Vasilios Mavroudis]] and [[Petr Svenda]] introduced JCMathLib, an open-source cryptographic wrapper library for Java Card, enabling low-level cryptographic computations not supported by the standard API.<ref>{{cite conference |last1=Mavroudis |first1=Vasilios |last2=Svenda |first2=Petr |title=JCMathLib: Wrapper Cryptographic Library for Transparent and Certifiable JavaCard Applets |book-title=2020 IEEE European Symposium on Security and Privacy Workshops (EuroS&PW) |publisher=IEEE |year=2020 |pages=383–390 |doi=10.1109/EuroSPW51379.2020.00056|arxiv=2008.11362 }}</ref><ref>{{cite web |title=JCMathLib |url=https://github.com/OpenCryptoProject/JCMathLib |website=GitHub |access-date=2025-04-12}}</ref><ref>{{cite web |title=OpenCrypto: Unchaining the JavaCard Ecosystem |url=https://www.youtube.com/watch?v=vd0-Uhx2OoQ |website=YouTube |access-date=2025-04-12}}</ref>
 
== Security ==