<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>On the road to Bandol &#187; Miscellaneous</title>
	<atom:link href="http://javacard.vetilles.com/category/miscellaneous/feed/" rel="self" type="application/rss+xml" />
	<link>http://javacard.vetilles.com</link>
	<description>A weblog on Java Card, security, and other things personal</description>
	<lastBuildDate>Mon, 18 Aug 2025 06:48:26 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.0.32</generator>
	<item>
		<title>The lowest hanging card</title>
		<link>http://javacard.vetilles.com/2016/12/06/the-lowest-hanging-card/</link>
		<comments>http://javacard.vetilles.com/2016/12/06/the-lowest-hanging-card/#comments</comments>
		<pubDate>Tue, 06 Dec 2016 13:45:13 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[Banking]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[attack]]></category>
		<category><![CDATA[payment]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=26314</guid>
		<description><![CDATA[The latest news on six second card hacking is very entertaining, and frankly, not reassuring. This thing is just as simple that it is stupid. The CVV2/CVC2 is a secret number computed by banks using a secret key, so they are validated by the issuing bank. Apparently, most (all?) of them have chosen not to [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>The latest news on <a href="http://www.theregister.co.uk/2016/12/05/undetectable_sixsecond_visa_carding_priceless/" class="liexternal">six second card hacking</a> is very entertaining, and frankly, not reassuring. This thing is just as simple that it is stupid. The CVV2/CVC2 is a secret number computed by banks using a secret key, so they are validated by the issuing bank. Apparently, most (all?) of them have chosen not to count failed validation attempts from different sources. So, once you obtain raw card data (with no CVV2), you only need one attempt on 1000 sites to find the 3-digit value (it gets worse, read a few articles on this).</p>
<p>So, until some &#8220;velocity checks&#8221; (counters) are added to CVV2 validators, this is the lowest hanging card. The funny thing is that, since it only takes 6 seconds, changing the CVV every hour doesn&#8217;t really work, here, so the new Motion Code is not a good countermeasure.</p>
<p>Smart card hardliners will tell you that this isn&#8217;t a smart card issue. Sure, but it&#8217;s related, mostly because however high, there is <em>always</em> a lowest hanging card. Smart cards (with EMV) have been quite efficient at curbing card-present fraud, because the chip computes a dynamic verification code for every transaction. During the EMV rollout, fraud was taking place in countries where smart cards were not used. As this rollout is getting closer to completion, this opportunity is slowly going away.</p>
<p>The new lowest hanging fruit is online transactions. EMV doesn&#8217;t work online, mostly because all attempts to introduce card readers on normal PC&#8217;s have failed, so our smart cards are useless here. And because consumers haven&#8217;t been used to use their cards&#8217; chips during online transactions, they won&#8217;t do it on mobile transactions either.</p>
<p>Sadly, commerce is moving online these days, so it is not good news to find the lowest hanging fruit there. The CVV2 check will be fixed, and more merchants will use 2-channel verification methods like &#8220;Verified by Visa&#8221;. Then, it is not obvious to know what will be the new lowest hanging fruit.</p>
<p>One solution is to use mobile payment, which offers a much better security these days. It works for in-person payments, and it is starting to work for online payments made on phones. I haven&#8217;t seen mobile payment used for to verify online transactions not made on a phone, but this would be very easy to do.</p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2016/12/06/the-lowest-hanging-card/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inside Java Card: From APDUs to CAP File and Interoperability</title>
		<link>http://javacard.vetilles.com/2016/05/12/inside-java-card-from-apdus-to-cap-file-and-interoperability/</link>
		<comments>http://javacard.vetilles.com/2016/05/12/inside-java-card-from-apdus-to-cap-file-and-interoperability/#comments</comments>
		<pubDate>Thu, 12 May 2016 11:26:55 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[History]]></category>
		<category><![CDATA[Java Card 2.x]]></category>
		<category><![CDATA[Java Card]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=25867</guid>
		<description><![CDATA[As promised in the previous post, here are a few Java Card stories. Over the almost 20 years of Java Card history, many design decisions have been taken on the product: some successful, some less successful. Here are a few stories of these discussions/decisions. API vs. APDU Before Java Card, a smart card specification consisted [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>As promised in the previous post, here are a few Java Card stories. Over the almost 20 years of Java Card history, many design decisions have been taken on the product: some successful, some less successful. Here are a few stories of these discussions/decisions.</p>
<h2>API vs. APDU</h2>
<p>Before Java Card, a smart card specification consisted in the definition of a set of APDU commands, with a precise syntax, and in most cases, a precise semantics associated to that syntax. With Java Card, for the first time, an API was designed to run inside the card.</p>
<p>At that time, some of us believed that this would lead rapidly to a paradigm shift in the card world, with the definition of card products shifting from the definition of APDUs (which are low-level communication protocol items) to a more noble definition of API, closer to a functional definition. That&#8217;s why we worked on the definition of the Java Card RMI protocol, whose objective was to allow the definition of interfaces to communicate with cards independently of protocols.</p>
<p>Well, we were wrong. Maybe not on the principles, but most definitely in practice. Nobody adopted the RMI protocol, and APDU protocols are still being defined today. In the world of smart cards, this makes sense, since low-level considerations remain a significant challenge (for instance, performance issues in some contactless transactions). In payment, mobile, and identity, APDU standards remain the norm everywhere.</p>
<p>Why did that happen? The answer is complex, but one major factor surely is the fact that Java Card is for obscure security specialists, and that the smart card protocols are only being exposed to a few developers. In such a context, there is no real need to simplify the interfaces exposed to developers.</p>
<p>What about new markets, though? Are there good reasons to define new APIs rather than new protocols? We can here consider two markets: Mobile TEE and IoT. In both cases, the market is sufficiently new to avoid compatibility issues. Even if standards like GlobalPlatform exist, they are not strong enough yet to be real obstacles.</p>
<p>Let&#8217;s start by the mobile TEE. The idea is here to isolate the security functionality of sensitive smartphone applications. By first looking at it, this looks like a fairly open model, where a developer would split an application into the security-sensitive part, which goes in the TEE, and the non-sensitive part, which runs on the &#8220;normal&#8221; OS. Well, that would work if  developers had a clue about how to do this, but it sure isn&#8217;t the case. That&#8217;s why TEE providers are targeting &#8220;security providers&#8221;, <em>i.e.</em> developers who are working on security products. However, when taking a closer look, the requirements are always the same: authenticating users, protecting stored data (including keys and other credentials), and getting access to a little crypto to implement proprietary protocols. Most developers do not need in any way a full-fledged TEE with applications and more. All they need is a piece of trusted software that they can leverage in their applications without having to dive too deep in the security part. This may sound good for a supporter of APIs, but I am not sure, as &#8220;normal&#8221; developers need a generic API for their apps. The way in which these APIs are implemented is not their problem, and it is quite likely that at least part of this implementation will be on the &#8220;normal&#8221; side. In the end, the usual suspects (security specialists) will be designing the interface between the normal applications and the TEE, and they may be tempted to &#8220;optimize&#8221; things with low-level protocols.</p>
<p>IoT is different, though. It is interesting for at least two reasons: (1) there is no history and backward compatibility requirements, so why bother with APDUs? and (2) there is a wide variety of devices and applications. In addition, in IoT, we are quite likely to see situations where there is no secure element, so new frameworks have to be designed. Not sure where this is going, but I will sure follow what my ex-colleagues from Oracle are doing with this.</p>
<h2>CAP file vs. class file</h2>
<p>This debate has been very active during the design of Java Card 3.0 Connected, in which the class file ended up being selected. I was against the decision then, and I am still against it today. The class file is very nice, but it has not been designed with smart card and other limited environments in mind, so it makes perfect sense to design a more optimized format for constrained environments: the CAP file.</p>
<p>Here are a few good reasons to do so:</p>
<ul>
<li>Optimization. That&#8217;s the obvious one. We can optimize on size by reducing overhead, and we can also optimize on loading and linking times, exploiting Java Card&#8217;s limitations on dynamicity.</li>
<li>Specialized instruction set. This may be considered as a special kind of optimization, but Java Card uses a specific instruction set, which includes in particular a few combined instructions that make programs smaller. This path has definitely not been fully exploited in Java Card.</li>
<li>Enhanced provability. Java binaries are verifiable, and Java Card could benefit from specific verifications, for instance related to the management of objects. However, Java Card has not exploited this at any point, and bytecode verification has remained more of an issue throughout the years.</li>
</ul>
<p>On the opposite, from my biased point of view, the only reason to use class files would be to use the same format as anybody else. But since we are not running the same programs, what is the point? Well, there is at least one: with class files, there wouldn&#8217;t be a debate about the suitability of bytecode verifiers, as no one  is discussing the fact that the Java bytecode verifier is correct.</p>
<p>So, I hope that in the future, the CAP file remains, and that it evolves to integrates more aggressive optimizations, as well as a more sophisticated set of analyses that leverage the specific nature of Java Card code.</p>
<h2>Interoperability vs.  differentiation</h2>
<p>This has been a recurrent discussion item at the Java Card Forum.  What should be standardized, and what should be left as differentiators between the actors. Here are a few interesting topics here:</p>
<ul>
<li><em>Basic functionality should be interoperable</em>. That&#8217;s been OK for a long time, and nobody dared going back on that one, at least officially. However, there have been some tensions there, in particular around SIM Toolkit. With proactive commands, it is possible to interrupt the execution of a SIM Toolkit routine while waiting for a response from the mobile, and during that time, other commands can be processed. This suspension mechanism, which is essential to the SIM Toolkit spec, has never been formalized in the Java Card platform, leaving an obvious interoperability gap.</li>
<li><em>Performance is for differentiation</em>. Another obvious one, although vendors have regularly stymied any effort to define a benchmark for Java Card, like the Mesure project. Performance is a differentiator, but it is better not to measure it correctly.</li>
<li><em>Size is for differentiation</em>. That sounds obvious too, but it has led to barrels of fun in real life. Obviously different platforms, even when running on the exact same chip, don&#8217;t occupy the same space, so the space left for applications and their data differs. Well, that&#8217;s expected, and totally static, so it can easily be considered. Things get more fun when we get to objects. Platforms use headers of different sizes, they don&#8217;t implement redundancy in the same way, the don&#8217;t manage memory in the same way. In the end, the same set of objects doesn&#8217;t occupy the same memory space on two different platforms, and this has been a great issue when cards are almost full.</li>
<li><em>Security is not much for differentiation</em>. At first, this looks like a good opportunity for differentiation, as vendors want to be able to claim that their products are &#8220;more secure&#8221; than their competitor&#8217;s products. As an evaluator, I noticed the wide differences in security features between the products, and implicitly supported this view. I now believe that standards are more important for security than differentiation. If we consider the mobile payment vertical, some people will claim that the combination of private platform certifications by Visa and others and of formal Common Criteria certifications bring the desired level of interoperability. Yet, in many cases, certification authorities want to see an application certified on every target platform, and rightly so, because the various platforms do not provide the same guarantees on individual functions; they globally achieve the desired global level of security, but they protect individual functions differently. In order to reduce this, I have pushed for security interoperability to be included in Java Card for many years, first by defining security annotations, and more recently by defining dedicated security APIs. The Protection Profile for Java Card 3.0.5 has not been released yet, so I can&#8217;t tell for sure, but I am afraid that the measures included in the latest specification will still not be sufficient to provide sufficient interoperability.</li>
</ul>
<p>Another interesting thing about interoperability, as we are moving to a world where Java Card may be used on very different platforms: When we defined the Connected Edition, it was very different from the Classic Edition, but we nevertheless stated very stringent interoperability requirements: All Classic applications must run on a Connected platform.</p>
<p>As we may be moving toward another split of Java Card platforms with the rise of RAM-based platforms, I would like to see less stringent requirements. If we consider that Java Card Next will include a Classic and a RAM edition, I would require the following:</p>
<ul>
<li>Java Card Next Classic is just the next version following Java Card 3.0.5 Classic. Therefore, backward compatibility must be strict: all Java Card 3.0.5 Classic applications must run unchanged on a Java Card Next Classic platform, even without a recompile.</li>
<li>Java Card Next RAM is a new platform. Applications developed specifically for this platform are only expected to run on that platform.</li>
<li>Java Card Next Classic and Java Card Next RAM must be interoperable. It must be possible to write an application that runs on all Java Card Next platforms (Classic and RAM).</li>
</ul>
<p>For an application provider, this would mean that the following options are available:</p>
<ul>
<li>Keep existing applications, and only support their deployment on Java Card Next Classic platforms (in addition to all previous Classic platforms). This could for instance make perfect sense for payment cards or identity cards, which will remain based on classical smart card chips.</li>
<li>Write new applications specifically for the RAM platform, and only run them on Java Card Next platforms. This is suitable for applications without a strong history, which need to leverage the specific features of RAM platforms, for instance on a mobile TEE.</li>
<li>Rewrite/write applications that work on both platforms. This is suitable for new applications that target a wide range of devices, like in IoT, where the same application coudl run on many different architectures.</li>
</ul>
<p>Interoperability discussions are among the most obscure and technical in the Java Card community. It is a bit like politics: it is very easy to make broad statements that sound definitive, but reality is closer to economics, very complex and requires a deep technical understanding (and like economics, it is not a hard science, so debates can be very long). I&#8217;ll miss these discussions.</p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2016/05/12/inside-java-card-from-apdus-to-cap-file-and-interoperability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Card, a farewell</title>
		<link>http://javacard.vetilles.com/2016/05/09/java-card-a-farewell/</link>
		<comments>http://javacard.vetilles.com/2016/05/09/java-card-a-farewell/#comments</comments>
		<pubDate>Mon, 09 May 2016 11:54:08 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[Discussions]]></category>
		<category><![CDATA[History]]></category>
		<category><![CDATA[Java Card 2.x]]></category>
		<category><![CDATA[Java Card Bandol]]></category>
		<category><![CDATA[Java Card]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=25865</guid>
		<description><![CDATA[My Oracle story has ended, and with it my Java Card story, at least for now. I started working on the technology in February 1997, and I have never been very far from the technology for almost 20 years. However, Java Card is not in the scope of my next job, as I will focus [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>My Oracle story has ended, and with it my Java Card story, at least for now. I started working on the technology in February 1997, and I have never been very far from the technology for almost 20 years. However, Java Card is not in the scope of my next job, as I will focus on embedded and IoT security. I can&#8217;t say that I will never work again on Java Card, but at least I will take a break.</p>
<p>These 20 years have been quite an interesting ride. Java Card is an amazing technology, just as successful as it is understated. Java Card has been deployed on over 15 billion devices since the first deployments in 2000, its deployment numbers have been growing steadily for 15 years. With the current movements in the SIM industry, it is hard to guarantee that this growth will be sustained over the next years, but Java Card is at least guaranteed to have a very fat and very long tail before it disappears.</p>
<p>I will publish a few entries on Java Card, starting here with a few comments on how improbable this success has been over the years.</p>
<h2>An immature technology for an immature industry</h2>
<p>Initial work on Java Card started in 1996 at Schlumberger&#8217;s research team (now part of Gemalto), as all card vendors were looking for solutions to run scripts on smart cards, mostly for supporting the SIM Toolkit framework. At the time, every major vendor had developed a proprietary solution, usually based on an existing programming framework.</p>
<p>In 1997, smart card issuers were starting to ask for interoperability between vendors. The Java Card Forum was founded in the spring as an answer, although few of its members were convinced that it was the way to go forward. Sun Microsystems was invited as owner of the Java technology, smart card vendors became Java Card licensees, and Sun Microsystems took the responsibility of managing the specification and related technologies (reference implementation and compliance kit). Sun didn&#8217;t have any experience about smart cards, and in the first meetings, their representatives clearly showed it. Sun then hired Integrity Arts (a Gemplus spin-off) as consultant, and rapidly acquired them, getting expertise in-house.</p>
<p>Java was not well suited to the smart cards available then. The language was easy to learn, but the virtual machine brought an overhead in both size and performance. At the time, it would have been possible to design a more suitable standard for programming smart cards, but the industry has not been able to organize in order to define such a standard.</p>
<p>Java Card became an API specification rapidly with version 2.0, but this version was short-lived, and quickly replaced by version 2.1, which also included a virtual machine specification, and allowed binary Interoperability between products. At about that time, the mobile operators became really interested, a SIM toolkit API was defined, and the deployment began around 2000.</p>
<p>15 years later, this adoption of a poorly adapted technology by an immature industry has become an asset. Because Java Card was a bit too ambitious at the time, and thanks to the continuing success of the Java language, Java Card has now become a mainstream technology, which in 2015, fits the needs of the smart card market, and is present on most open smart cards, and roughly half of the microprocessor cards sold worldwide. In the end, it pays to be inadapted.</p>
<h2>Mostly an ecosystem</h2>
<p>In the late 1990&#8217;s, the first marketing sentences for Java Card were directly taken from Java, like &#8220;Millions of developers&#8221;, or &#8220;Write once, run anywhere&#8221;. The one specific marketing argument was about &#8220;Running multiple applications on your card&#8221;. Fifteen years later, here is a factual status:</p>
<ul>
<li>Hundreds of developers (tens of expert developers), mostly working for smart card vendors or for a few specialized consulting firms.</li>
<li>Most applications written for a single card, or at least for a single issuer.</li>
<li>Most applications written by a card vendor, and running only on a single vendor&#8217;s cards.</li>
<li>Most cards running a single application.</li>
</ul>
<p>The next question is: why is Java Card still around if it is not used? Well, in fact, it is being used, just not in the ways that people initially planned. In fact, an essential factor in the success of Java Card has been the certification of cards. In many cases, once a card is deployed, there is no (efficient) procedure to update the card to fix a bug or a vulnerability. Therefore, cards are heavily tested before to be deployed, and most vendors require several levels of certification, including a functional certification and a security certification.</p>
<p>These certification processes are costly, both in developer resources and in laboratory fees. Over the years, efficient certification has become an essential aspect of card development, and Java Card facilitated this in several ways:</p>
<ul>
<li>A reference for core functionality. The Java Card specification defines a set of core functions which can then be used to develop applications (cryptography, I/O, storage, appication isolation and sharing). It then becomes possible to test separately these core functions (by evaluating a Java Card platform) and the application using them (by evaluating a Java Card applet). This can lead to economies of scale.</li>
<li>Reference applications. Some issuers and actors, notably Visa, have written reference versions of their applications, which have been thoroughly tested on compliant Java Card implementations. Vendors who use these reference implementations can simplify the certification process.</li>
<li>Building experience beyond developers. Laboratories, certification authorities, security consultants all have worked with many Java Card platforms and applications over the years, and now feel confident about their ability to use, test and certify such cards in different configurations. This is the ecosystem part.</li>
</ul>
<p>In the past few years, the strength of this ecosystem has been a key asset for Java Card, together with the fact that it remains today the dominant platform for defining APIs for smart cards, regardless of the target vertical (once again an ecosystem aspect).</p>
<h2>Not dead, not frozen, just slow and conservative</h2>
<p>Another striking feature of Java Card is its lack of evolution. The core features of the platform have remained vastly unchanged since release 2.1. Several attempts to make the platform evolve have failed over the years:</p>
<ul>
<li>Java Card RMI was introduced with Java Card 2.2, with the objective of making it easier to design new smart card applications, but it was never adopted by the community. Support of Java Card RMI has been optional in the latest releases, and it was close from being deprecated a few times.</li>
<li>Java Card 3.0 Connected was a bolder attempt at reaching new markets, this time arounod Smart Card Web Servers. This specification is very nice, and it defines a Web application model that can be implemented in half a megabyte, all included (OS, VM, Web container, content management, and a few apps). Yet, smart card web servers never caught, and this specification has never been implemented in a real product since its 2009 release.</li>
<li>An annotation framework for security interoperability was added recently, but the industry hasn&#8217;t been able to agree on a semantics for these annotations, and it has not been adopted.</li>
</ul>
<p>In the latest 3.0.5 release, we have attempted to add a few simple things, hoping that they will be adopted, but this will only happen in a while, because of another interesting specificity of Java Card. It takes around a year to develop a new platform after the release of a specification, at least another year to get a full certification (functional and security), and another year to sell, produce and deploy it. That&#8217;s about 3 years between the specification and the actual availability of products.</p>
<p>This development rate partly explains the slow evolution of Java Card. The smart card ecosystem globally evolves very slowly, and to observers who are used to Web-like evolution, it may look life completely frozen. However, it keeps evolving at its specific and very slow rate. Since 2009, Java Card has become much better adapted to contactless cards, it has adopted a number of cryptographic technologies, and a few other features have evolved to follow the evolution of smart card hardware. Such changes are invisible to the non-specialist, but they keep the Java Card framework in synch with smart card technology, and this is what really counts.</p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2016/05/09/java-card-a-farewell/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fashion statement</title>
		<link>http://javacard.vetilles.com/2015/11/19/fashion-statement/</link>
		<comments>http://javacard.vetilles.com/2015/11/19/fashion-statement/#comments</comments>
		<pubDate>Thu, 19 Nov 2015 18:02:00 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[Banking]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=25852</guid>
		<description><![CDATA[I am just out of the Cartes show. A bit depressing, mostly because of the current circumstances and the number of &#8220;Absent exhibitors&#8221;. However, there werea few interesting highlights. One of them came in the Wearable and IoT conference track, in a presentation from Oberthur&#8217;s Olga Titova Candel about Wearable Payments for Fashion. The main [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I am just out of the Cartes show. A bit depressing, mostly because of the current circumstances and the number of &#8220;Absent exhibitors&#8221;. However, there werea few interesting highlights. One of them came in the Wearable and IoT conference track, in a presentation from Oberthur&#8217;s Olga Titova Candel about <em>Wearable Payments for Fashion</em>.</p>
<p>The main message of this presentation is that payment in wearables is going beyond basic plastic bands and special watches. The new trend is now that payment is being integrated into <em>normal</em> fashion accessories, like the <a href="http://www.nfcworld.com/2015/10/14/338654/swatch-launches-nfc-payment-watch-in-china/" class="liexternal">Swatch</a> deployment in China, or the integration of payment in the latest <a href="https://jawbone.com/blog/introducing-up4/" class="liexternal">Jawbone UP4</a>. These deployments are linked to a payment scheme: China Union Pay for Swatch, and American Express for Jawbone. Still, it is exciting to see mobile payment integrated into generic devices that you mostly get for other things (like, you like the watch, or you like the fitness tracking features and band design. Here, payment is just an extra feature, which is likely not the main reason for selecting the object.</p>
<p>From a sales point of view, this looks important to me. If payment is successful in these first deployments, it could lead the way to many more similar objects. As a longtime user of vision glasses, my glasses would be the perfect object for payment, as I wear them in almost all circumstances (plus, the form factor is interesting for fitting an antenna).</p>
<p>This does raise a few security-related questions:</p>
<ul>
<li><strong>Transfer.</strong> Such devices all come with some kind of enrollment process, for instance through the UP mobile application for Jawbone. This is nice, but the life of the object continues beyond enrollment. A fitness tracker may be given or sold to another person, and it is reasonable to expect that the payment feature will need to be disabled, and potentially reenabled later (and again).</li>
<li><strong>Loan.</strong> A fitness tracker is very personal, a watch a bit less (my teenage daughter can borrow mine if she happens to like the design), and I am sure that some other payment-enabled wearables will be shared, at least in a limited community. I am happy to share my watch, but I want the payment feature to be disabled when that happens.</li>
<li><strong>Steal or lose.</strong> Here, the problem is that these payment-enabled objects become an extension of our wallet. Losing one is very much like losing a wallet, and this may become dangerous, especially for people who only use the payment feature very occasionally. Also, checking that the person using such an object is legit will be difficult or at least different.</li>
</ul>
<p>I don&#8217;t own any of these devices, so I don&#8217;t know how they handle that. Maybe that all these issues, and more, have already been sorted out technically. Yet, there is a human aspect to that will also need to be field-tested. The users need to be aware that they are wearing payment cards. Not much of an issue when you only have one payment-enabled object, but this could become a problem if we get more and more such objects.</p>
<p>But then, these are interesting problems, and I can&#8217;t wait to find my own payment-enabled fashion statement, and to see how this evolves in the near future.</p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2015/11/19/fashion-statement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Off-Card Bytecode Verifier is fine, thank you!</title>
		<link>http://javacard.vetilles.com/2013/11/21/the-off-card-byte-code-verifier-is-fine-thank-you/</link>
		<comments>http://javacard.vetilles.com/2013/11/21/the-off-card-byte-code-verifier-is-fine-thank-you/#comments</comments>
		<pubDate>Thu, 21 Nov 2013 13:42:50 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[Discussions]]></category>
		<category><![CDATA[Java Card 2.x]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[logical attack]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=877</guid>
		<description><![CDATA[REWRITTEN on 23 Nov. 2013. A few weeks ago, a friend sent me a link to the Cardis program, with the message &#8220;A bug in the verifier?&#8221;. Looking at the program, I saw a paper entitled Manipulating frame information with an Underflow attack undetected by the Off-Card Verifier, by Thales Communications and Security. This sounded [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>REWRITTEN on 23 Nov. 2013.</p>
<p>A few weeks ago, a friend sent me a link to the <a href="http://cardis.sec.t-labs.tu-berlin.de/program.html" class="liexternal">Cardis</a> program, with the message &#8220;A bug in the verifier?&#8221;. Looking at the program, I saw a paper entitled <em>Manipulating frame information with an Underflow attack undetected by the Off-Card Verifier</em>, by Thales Communications and Security. This sounded like bad news, so I got a copy of the paper and read it. </p>
<p>The good news is that there is no bug. Nevertheless, reading the paper made me unhappy. As a consequence, the first version of this blog post was a flame, in which I qualified the paper of &#8220;dishonest, not innovative, and misleading&#8221;.</p>
<p>Publishing the flame triggered some discussions, with people at Thalès and with other people, in particular with Jean-Louis Lanet of XLIM. They provided me their views on the topic, and I have decided to revise my original flame into a more mundane and constructive post.</p>
<h4>Dishonest, or just a bad title.</h4>
<p>As mentioned above, the paper&#8217;s title is&#8221;Manipulating frame information with an Underflow attack undetected by the Off-Card Verifier&#8221;. However, section 3.2 of the paper surprisingly starts with the sentence: &#8220;The standard Oracle bytecode verifier detects the underflow attack&#8221;. There is no other reference to a verifier that would not detect that attack, and that makes the title sound really dishonest, at least the &#8220;undetected&#8221; part of it.</p>
<p>More specifically, it seems that the objective of the paper is not to point to an issue in the off-card verifier, as the title seems to, but rather to point to the fact that there exist ways to bypass the verification. A revision of the title in the proceedings would do just fine.</p>
<h4>Not innovative, or not published.</h4>
<p>The paper describes an attack that uses the <code>dup_x</code> instruction to perform a stack underflow. This stack underflow allows the authors to access the content of a stack frame, including the current context, and to change it. The question is: is this a new attack? As a virtual machine implementer and evaluator, I would say no immediately. This attack very easily comes to mind as soon as you know the content of a stack frame (as an implementer does). This attack has therefore been in my &#8220;bag of tricks&#8221; when I was an evaluator, and was even quite a practical one.</p>
<p>Now, the smart card industry is secretive, and evaluators are even more secretive. Very few actual attacks have been described in scientific papers. It seems that the attack to mention stack underflow is the EMAN2 attack described by Bouffard <em>et al.</em> at Cardis in 2011. However, they only abuse the return address, labeling the current context &#8220;unknown value&#8221;. In that context, it seems that this paper describes something that has not been published before. For this one, my apologies, as I forgot the secrecy of the industry, and kudos for actually publishing this rather than keeping it secret.</p>
<p>So now, the community knows that, unverified bytecode can lead on some cards to allowing an attacker to run attacker-provided code in a chosen context. This is about as bad as it gets, and now, additional attacks will fall in my &#8220;tricks&#8221; category, in which an attacker/evaluator uses a new illegal bytecode combination because the previously known ones don&#8217;t work on a card. I hope that we won&#8217;t see more scientific papers about such tricks (see Jean-Louis Lanet&#8217;s second comment about this).</p>
<h4>Misleading, or missing its target.</h4>
<p>Of course, since the off-card verifier catches all of these logical attacks, they are not supposed to occur in real life, where bytecode verifiers are systematically used.</p>
<p>Let&#8217;s make a parallel between two typical components, RSA and a virtual machine. RSA is a crypto algorithm, a function <em>RSA(K,M)</em> that takes as input a key <em>K</em> and a message <em>M</em>, and produces a result. Similarly, a virtual machine is a function <em>VM(P,I)</em>, where <em>P</em> is a program (in bytecode) and <em>I</em> some input data, and produces a result. The RSA and VM functions share something important: the key <em>K</em> and the program <em>P</em> need to obey some properties. If the don&#8217;t, the algorithms don&#8217;t work. </p>
<p>If the RSA prime factors are not prime numbers, or if the program provided to the VM is not valid, their results may not be satisfactory: although they are functionally correct, they will not have the expected security properties. In order to avoid bad keys and bad programs, we use appropriate algorithms to perform primality checks, and to verify bytecode. Just as it is important to ensure that an attacker cannot tamper with the key generation scheme, it is important to ensure that bytecode is verified before to be executed. But is it sufficient?</p>
<p>Well, that may be sufficient if you run your VM or your RSA on a device that is physically protected from attackers. But on a smart card, it isn&#8217;t sufficient, at least for RSA. There have been many attacks published on smart card implementations of RSA, using fault induction, power analysis, and more. The VM is just as sensitive to these attacks; in particular, combined attacks can be used to dynamically create illegal code on a card, as mentioned in the paper.</p>
<p>If we continue the analogy, RSA is still used on cards, even though attacks exist. During security evaluations, the robustness of the implementation is verified by a lab, which ensures that well-known attacks don&#8217;t work. Naturally, the same thing must be done with the VM: a high-security implementation must include significant countermeasures against attacks on VM, such as combined attacks. The implementers have the choice of the countermeasures; they can include additional checks in the virtual machine, attempt to detect the faults, or both, or anything else, as long as it works.</p>
<p>According to my discussion with Thales, this is more or less the point that the paper tries to make, in particular in its last part. However, the paper insists on the malicious application rather than on the attacks, especially in its last sentence:</p>
<blockquote><p>
Finally, this paper shows that during open platform evaluations, it is necessary to take into account malicious applications, and make detailed analysis of each requirement included in the platform guidance.
</p></blockquote>
<p>I definitely agree on the platform guidance aspect. Requiring bytecode verification is not sufficient, as the management of the verification context is also important to avoid logical attacks. However, during evaluations, malicious applications are not the real issue, attacks on the virtual machine are. In that context, malicious applications are for now tied to combined attacks, where a fault triggers the logical attack. What the community often fails to understand is that, on a smart card, a virtual machine is a component like any other: it can be subject to physical attacks. And that&#8217;s the reason why specific countermeasures are required.</p>
<h4>So what?</h4>
<p>In Cardis, the proceedings are collected after the conference, so authors have an opportunity to revise their paper before publication. After our exchanges, I hope that some revisions will be made before publication, in particular on the title and on the last part (making a stronger point about evaluation requirements). And so, I replaced my flame with this. </p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2013/11/21/the-off-card-byte-code-verifier-is-fine-thank-you/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>POPWings is a cool business card, but where is the platform?</title>
		<link>http://javacard.vetilles.com/2013/01/31/popwings-is-a-cool-business-card-but-where-is-the-platform/</link>
		<comments>http://javacard.vetilles.com/2013/01/31/popwings-is-a-cool-business-card-but-where-is-the-platform/#comments</comments>
		<pubDate>Thu, 31 Jan 2013 17:50:54 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[NFC]]></category>
		<category><![CDATA[POPWings]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=850</guid>
		<description><![CDATA[UPDATED March 1st, 2013: See follow-up article. I have been quite happy to hear a few weeks ago that Gemalto finally decided to consider NFC as more than secure services, by launching their POPWings service. I immediately ordered one of their business cards, excited to get a new NFC service. So, I got a card [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>UPDATED March 1st, 2013: See <a href="http://javacard.vetilles.com/2013/03/01/popwings-again-after-mwc/" class="liinternal">follow-up article</a>.</p>
<p>I have been quite happy to hear a few weeks ago that Gemalto finally decided to consider NFC as more than secure services, by launching their <a href="http://www.popwings.me/" class="liexternal">POPWings</a> service. I immediately ordered one of their business cards, excited to get a new NFC service.</p>
<p>So, I got a card with my blogger identity, and I scanned it with my Nexus S. This opened my Popwings page in the browser, showing my information. I was even able to link directly to my blog, open Twitter on my feed, everything was fine for a Web part.</p>
<p>Next step: download the application from the Play store. I just did that, and I have to admit that the feeling was not the same. I expected the application to do more than the simple link, and as far as I know, it doesn&#8217;t. OK, it will store locally my POPWings contacts, instead of showing them one by one. But as soon as I open this application, I am stuck in POPWings world. <del datetime="2013-03-01T13:35:54+00:00">In particular, what hurts most is the inability to add this contact to my phone&#8217;s contacts. Let me be clear on this: it took me forever to get a contact database that will synchronize between my different accounts, and I definitely don&#8217;t want to change that</del>.</p>
<p><del datetime="2013-03-01T13:35:54+00:00">It looks that POPWings is trying to deal with customers the Apple way: first, you buy a product from us, and then you are stuck in our ecosystem. That kinda works for Apple: I just got an iPod that I love as a device, but I hate Apple&#8217;s dysfunctional Windows software (disclosure: I am an Amazon fanboy for music, including the cloud player, and the primary reason for getting an iPod is the ultra lightweight form factor).</del></p>
<p><del datetime="2013-03-01T13:35:54+00:00">The problem with Popwings is not in the application, but in the philosophy behind it: it limits me rather than empowering me. I bought a new-generation business card, and what I got is a contactless smart card with my name on it, that doesn&#8217;t even work as a standard business card, since my contacts can&#8217;t easily put its content in their list of contacts.</del></p>
<p>UPDATED: Although the application is more open than I initially experienced, it still attempts to create a new and private ecosystem, which doesn&#8217;t seem to be the way to go. More on this <a href="http://javacard.vetilles.com/2013/03/01/popwings-again-after-mwc/" class="liinternal">in the update</a>.</p>
<p>As you may have guessed, I wouldn&#8217;t bet on Popwings today, especially With the current application. Nevertheless, the idea remains good, and I would love to see it turn into a wildly successful ventures. Here are some suggestions:</p>
<ul>
<li><b>Market to the end-user.</b> Actually, Popwings got this one right: adoption will come to end-users, and the best way to force ourselves into making useful NFC applications is the need to convince them to buy our product.</li>
<li><b>Don&#8217;t lock the end-user.</b> This is where Popwings fails. It would be so much better if it allowed me to add a contact to my contact list, or to interface it with other applications: the more, the merrier.</li>
<li><b>Encourage new uses.</b> This is where Popwings can become a platform more than a mere application. By encouraging others to develop applications that leverage Popwings business cards or to integrate Popwings cards in their application, these NFC business cards can become a <em>de facto</em> standard, unlocking a huge market.</li>
<li><b>Focus on the platform, not the app.</b> A first-year student can write can write the Popwings app, but it takes slghtly more effort to build a platform that correctly manages NFC business cards or other cards for use in Web/mobile applications.</li>
</ul>
<p>My 2 cents.</p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2013/01/31/popwings-is-a-cool-business-card-but-where-is-the-platform/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Convenience vs. Security vs. (Perceived) Security</title>
		<link>http://javacard.vetilles.com/2012/11/28/convenience-vs-security-vs-perceived-security/</link>
		<comments>http://javacard.vetilles.com/2012/11/28/convenience-vs-security-vs-perceived-security/#comments</comments>
		<pubDate>Wed, 28 Nov 2012 08:59:02 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[Banking]]></category>
		<category><![CDATA[Mobile Security]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[mobile payment]]></category>
		<category><![CDATA[Passbook]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=842</guid>
		<description><![CDATA[Yesterday, @poulpita tweeted a link to a blog explaining that convenience keeps winning against security. The main argument in this blog is about iOS6&#8217;s Passbook, which can store credit card numbers, for your convienience. The reasoning goes on with a comparison of the security merits of a credit card number stored on Passbook and a [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Yesterday, <a href="https://twitter.com/poulpita" class="liexternal">@poulpita</a> tweeted a link to a blog explaining that <a href="http://www.infosecisland.com/blogview/22574-Convenience-vs-Security-Why-convenience-keeps-winning.html" class="liexternal">convenience keeps winning against security</a>. The main argument in this blog is about iOS6&#8217;s Passbook, which can store credit card numbers, <em>for your convienience</em>.</p>
<p>The reasoning goes on with a comparison of the security merits of a credit card number stored on Passbook and a real card. Read the paper for the details, but an obvious comparison is that a real card is easier to lose/steal (because we stick to our phone more than we stick to our wallet), and also easily accessible (the phone will be at least somehow encrypted, requiring some technical skillls to access the card numbers). In addition, credit cards are easily replaceable, and they usually entail a zero liability insurance for the end-user.</p>
<p>What surprised me is the conclusion: &#8220;convenience wins in the consumer mind&#8221;, and more specifically, &#8220;convenience may win out over a little risk&#8221;. From the risk analysis, my feeling is that using Passbook is actually less risky than carrying real cards, and even if one doesn&#8217;t agree with that, zero-liability means that, for the customer, the risk is the same: zero.</p>
<p>Although we agreee that security is a way to reduce risk globally, there are many different ways to reduce risk for every actor. For the end-user, in that specific case, the key aspect is the zero-liaility insurance offered by the credit card company. If there is a major security flaw in Passbook, there may be a problem between Apple and credit card companies, but end users should remain largely unaffected. The worst thing that could happen to them is to lose the convenience of Passbook if credit card companies deny to Apple the right to store card numbers in it.</p>
<p>Just another friendly reminder that our job as security providers is not just to randomly increase security of things, but to actually reduce the level of risk for an actor, which should be our customer. Banking smart cards are sold to banks, not to end users, and there is not reason to change this relationshp when the cards are dematerialized into software: our customers are the banks, and we need to reduce their risk (which, hopefully, can help them offer a zero-liability insurance to their customers at a better cost).</p>
<p>Disclosure: I just finished reading Brice Schneier&#8217;s <a href="http://www.amazon.fr/gp/product/1118143302/ref=as_li_ss_tl?ie=UTF8&#038;tag=lesvetilles-21&#038;linkCode=as2&#038;camp=1642&#038;creative=19458&#038;creativeASIN=1118143302" class="liexternal">Liars and Outliers: Enabling the Trust That Society Needs to Thrive</a><img src="http://www.assoc-amazon.fr/e/ir?t=lesvetilles-21&#038;l=as2&#038;o=8&#038;a=1118143302" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />, which may explain why I have this unusual high-level view of security. Good book, by the way.</p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2012/11/28/convenience-vs-security-vs-perceived-security/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Chip to Cloud, day 2: Automated analysis of Java Card applets</title>
		<link>http://javacard.vetilles.com/2012/09/20/chip-to-cloud-day-2-automated-analysis-of-java-card-applets/</link>
		<comments>http://javacard.vetilles.com/2012/09/20/chip-to-cloud-day-2-automated-analysis-of-java-card-applets/#comments</comments>
		<pubDate>Thu, 20 Sep 2012 13:31:17 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[Java Card 2.x]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Java Card]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/2012/09/20/chip-to-cloud-day-2-automated-analysis-of-java-card-applets/</guid>
		<description><![CDATA[This is a presentation by Jean-Baptiste Machemie, from the University of Limoges and a new project called Arya Security. The topic is automated analysis of Java Card applets, which is one of my favorite topics, and I am very happy to see interest from academia, as well as the emergence of companies who distribute such [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>This is a presentation by Jean-Baptiste Machemie, from the University of Limoges and a new project called <a href="http://www.arya-security.com/en/home.php" class="liexternal">Arya Security</a>. The topic is automated analysis of Java Card applets, which is one of my favorite topics, and I am very happy to see interest from academia, as well as the emergence of companies who distribute such tools.</p>
<p>The first question is to understand why automated analysis is required for NFC. One of the issues of NFC is the scalability of security evalution processes. There are good schemes forf so-called sensitive applets, which are relate to payment, identity, or other schemes that have strong certification requirements, usually requiring a full evaluation, incouding attacks.</p>
<p>The other applications, so called non-sensitive, are provided by security companies who do not require security certification. Some analysis is required, at least to make sure that they don&#8217;t interfere with the sensitive applications. Today, this analysis is performed manually by laboratories, which is error-prone, effort intensive, and not scalable.</p>
<p>Static analysis is a technology that allows us to completely automate this security analysis. This is done directly on the binary CAP file, without running the application, but simply by analyzing how the code could behave. It is possible to verify plenty of rules, including those defined by AFSCM or by GlobalPlatform. Luckily for Arya Security, these rules have been defined by people who were actually thinking about static analysis, and who made sure that the rules would be easy enough to analyze.</p>
<p>I strongly believe in static analysis, and I have written and talked about it multiple times. I am quite happy that some people get in this market and propose a tool for Java Card. I haven&#8217;t directly tried their tool, but I hope that its algorithms are good enough to avoid lost of false positives, and that they will be adopted.</p>
<p>The main barrier for them is actually NFC adoption. However, if it works, I am quite convinced that static analysis is the only way to go, because any non-automated techniques are not going to be scalable enough. Another company whose fate is linked to the success of NFC (in card emulation mode).</p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2012/09/20/chip-to-cloud-day-2-automated-analysis-of-java-card-applets/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Chip to Cloud, day 2: Java Card, 15 years later</title>
		<link>http://javacard.vetilles.com/2012/09/20/chip-to-cloud-day-2-java-card-15-years-later/</link>
		<comments>http://javacard.vetilles.com/2012/09/20/chip-to-cloud-day-2-java-card-15-years-later/#comments</comments>
		<pubDate>Thu, 20 Sep 2012 12:29:51 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[History]]></category>
		<category><![CDATA[Java Card 2.x]]></category>
		<category><![CDATA[Java Card]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/2012/09/20/chip-to-cloud-day-2-java-card-15-years-later/</guid>
		<description><![CDATA[Yes, this is my own session, so this is not really live. The idea is here to identify the most important events in the past 15 years of Java Card, and to take a look at the future. So, here are the selected events: 1996, Java on a smart card. That&#8217;s even more than 15 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Yes, this is my own session, so this is not really live. The idea is here to identify the most important events in the past 15 years of Java Card, and to take a look at the future. So, here are the selected events:</p>
<ul>
<li>1996, Java on a smart card. That&#8217;s even more than 15 years ago, and that&#8217;s when some maniacs at Schlumberger&#8217;s Austin lab came up with the crazy idea of putting a Java virtual machine on a microcontroller with under 1k of RAM. It worked, and that was Cyberflex.</li>
<li>1997: the industry organizes. The Java Card Forum is created in April, and the Java Card 2.0 is released, with two demos at Cartes, Cyberflex and GemXpresso. Cyberflex gets the Sesames award that they deserved. Also, Java Card becomes a bit more Java-like, with data stored in objects rather than files, applets, and a few more things.</li>
<li>1998: OpenPlatform is created. OpenPlatform has been created by Visa, as the first initiative from issuers to work on the management of multi-application cards. A spec is rapidly issued, which is the ancestor of today&#8217;s GlobalPlatform Card Specification.</li>
<li>1999: Java Card 2.1 and interoperability. We took more time to release 2.1, because this was <em>the</em> release. The new features include binary interoperability, with the definition of the CAP file, the finalization of the application model, including transient objects and sharing.</li>
<li>1999: The SIM Toolkit API is released. This is the first hit for Java Card, which has been essential to its success in the mobile industry, still present in billions of cards.</li>
<li>2001: SIM Alliance release Interoperability Stepping Stones. This is a major industry forum, representing vendors, issuing a document that removes them a potential differentiation. Interoperability is not just for geeks any more.</li>
<li>2002: Java Card and RMI. This has been a long story, starting with the 1997 Cartes demo by Gemplus. Five years later, RMI gets in the Java Card spec as a mandatory feature, allowing Java Card developers to go beyond APDUs. Or not.</li>
<li>2009: Java Card 3.0, Connected Edition. That&#8217;s the end of a cycle in which we add more and more features. Starting in 2002 from forecasts of 1Mb chips in 2006 and a big need for content on cards, we went to high-speed communication, better VM, and a Web server. In the end, we had an iPhone, and rather small chips. And enough new features to last for 10 years.</li>
<li>2001: The first CC certificate. The Vocable was a bit crazy. Launched in 2000, the idea was to get a Common Criteria certification for a Java smart card. It was highly experimental, training the evaluation lab Serma about Java software, even discussing principles with the certification authority. But it worked, and we got the certificate. Certification matters.</li>
<li>2003: The Java Card Protection Profile. This initiative has defined a common base for the certification of Java Card products, and one of the most commonly used PPs, even today. It has also helped us grow a security ecosystem around the security of Java Card.</li>
<li>2010: EMVCo certifies a Java Card platform. It took a long time to convince issuers that it was interesting to certify platforms as well as applications. What got them there is NFC, because they now have to share a platform selected by others. And this is a great move ahead, because it is a first step toward security interoperability. We are not there yet, but Java Card is slowly getting there.</li>
<li>2009: NFC wallets require Java Card. This is important, because NFC is the first market in which Java Card is an obvious choice. Nobody has discussed this choice, since interoperability and openness are key properties. A very strong use case for Java Card.</li>
<li>2012: Embedding the card. With M2M and NFC embedded secure elements, there are talks about embedding Java Card. Once again, this is a strong use case, as the ability to add or update applications is important in this context. In a riskier move, I can mention eUICC, although network operators don&#8217;t like this much. The big news about embedded? It changes the control of the secure element, giving more power to device vendors, and taking it away from issuers.</li>
<li>2015: The Internet of Things. That&#8217;s a natural step. Everybody is talking about these billions of connected devices. At least some of them will need security, and Java Card will be around to provide this. It is recognized, and not linked to a single technology.</li>
<li>2020 and beyond: The security subsystem. That&#8217;s a bit far to bet on form factors, and I don&#8217;t know if secure elements will still be around, if they will be integrated in the main chipsets, or if software only will be needed, but I am convinced that a security subsystem will be around, and Java Card is a good candidate to run on it. Why? Because Java Card is small and constrained, but it is also provable in many ways, and can be evaluated with high assurance levels. And in security terms, these things matter.</li>
</ul>
<p>To conclude, what is happening today? Well, Java Card security is drawing some interest from the research community, and we are seeing great results. For instance, Guillaume Barbu has done great work in his Ph.D. thesis about logical attacks and countermeasures. More work is happening at Limoges, Nijmegen, Royal Holloway, and more. Students who work on that then get jobs at evaluation labs, and we got presentations from Emilie Faugeron and Jean-Baptiste Machemie about new evaluation offers.</p>
<p>Of course, Java Card is everywhere around NFC, and it was present, explicitly or implicitly, in most presentations I saw from the NFC World Congress.</p>
<p>Finally, a personal note or this blog. I have been personnally involved almost full time on Java Card fornthe past 15 years, and I participated in a way or another to most of the events noted here, except of course the initial idea from the Schlumberger guys. I am very proud of everything we have achieved during these years, and I hope that many more people are just as proud of this  success. After all, over 10,000,000,000 cards with Java Card have been produced, and this is a big number. Actually, I don&#8217;t know of any application framework that can show such numbers. So thank you everybody, and let&#8217;s continue for 15 more years!</p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2012/09/20/chip-to-cloud-day-2-java-card-15-years-later/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Chip to Cloud, day 2: My personal attribute hub</title>
		<link>http://javacard.vetilles.com/2012/09/20/chip-to-cloud-day-2-my-personal-attribute-hub/</link>
		<comments>http://javacard.vetilles.com/2012/09/20/chip-to-cloud-day-2-my-personal-attribute-hub/#comments</comments>
		<pubDate>Thu, 20 Sep 2012 09:50:19 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[Identity]]></category>
		<category><![CDATA[authentication]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/2012/09/20/chip-to-cloud-day-2-my-personal-attribute-hub/</guid>
		<description><![CDATA[This is a talk by Annette Laube, from the University of Bern. It builds on Switzerland&#8217;s eID program, extending it for new uses. The idea of national eIDs is to provide electronic signatures, and to certify personal attributes taken from official documents like a passport. The SuisseID used in Switzerland is a tradtional one, in [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>This is a talk by Annette Laube, from the University of Bern. It builds on Switzerland&#8217;s eID program, extending it for new uses. The idea of national eIDs is to provide electronic signatures, and to certify personal attributes taken from official documents like a passport. The SuisseID used in Switzerland is a tradtional one, in which the attributes are restricted to data present on ID documents, built on a national certificate authority and associated claim assertion service. However, there is a possibility to add claim asserion services, envisioned as coming from other government entities or other official entities.</p>
<p>The motivation of myIDP is to reduce the amount of redundant data that we have to enter in various sites, especially related ot e-government, which is error-prone and leads to many validation problems. In the SuisseID, the idea is to add another claim assertion service. With myIDP, users can save data entered on e-forms that have been accepted by a service provider, for reuse in other circumstances. The idea behind it is that information that has already been accepted somewhere is more likely to be correct. Interestingly, the user has access to the recorded attributes, and can decide to remove some that she doesn&#8217;t want to be recorded.</p>
<p>MyIDP can function as an attribute provider or as a claim proxy . As an attribute provider, a service provider requests an attribute, MyIDP then asks the user to confirm the use of a recorded attribute, and signs it before to return it. As a claim proxy, the service provider request comes with a claim list request. MyIDP then returns the signed attribute together with a claim list URI, from which the service provider can download information about where the information has previously been accepted as valid, and use this information to decide how trustworthy the attribute is.</p>
<p>This project sounds really good, because once again, we are movng from hard identity to soft identity, where data is not 100% trusted but nevertheless more trusted than data entered manually. And of course, this model is very nice because, the more it is used, the more trustworthy it gets. The quality of attributes grows as they are getting used, and this is an important property.</p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2012/09/20/chip-to-cloud-day-2-my-personal-attribute-hub/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
