<?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</title>
	<atom:link href="http://javacard.vetilles.com/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, 19 Mar 2012 19:35:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Some people don&#8217;t like phone security</title>
		<link>http://javacard.vetilles.com/2012/03/19/some-people-dont-like-phone-security/</link>
		<comments>http://javacard.vetilles.com/2012/03/19/some-people-dont-like-phone-security/#comments</comments>
		<pubDate>Mon, 19 Mar 2012 19:35:50 +0000</pubDate>
		<dc:creator>Eric Vétillard</dc:creator>
				<category><![CDATA[Mobile Security]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=809</guid>
		<description><![CDATA[It seems that FBI isn&#8217;t able to perform smudge attacks very well. Apparently, they have been defeated by Android&#8217;s &#8220;pattern lock&#8221; on a Samsung phone. Well, my friends must be smarter than the FBI, because both of the guys who tried to defeat my pattern lock using a smudge attack succeeded. The fun part is [...]]]></description>
			<content:encoded><![CDATA[<p>It seems that FBI isn&#8217;t able to perform <a href="http://javacard.vetilles.com/2010/10/18/smudge-attacks-on-android/" class="liinternal">smudge attacks</a> very well. Apparently, <a href="http://www.wired.com/threatlevel/2012/03/fbi-android-phone-lock/" class="liexternal">they have been defeated</a> by Android&#8217;s &#8220;pattern lock&#8221; on a Samsung phone. Well, my friends must be smarter than the FBI, because both of the guys who tried to defeat my pattern lock using a smudge attack succeeded.</p>
<p>The fun part is of course that the FBI is now going after Google to find a solution to this problem, asking them plenty of information about the device and about the use that the bad guy did of it. Most of the things that they are requesting may indeed be in Google&#8217;s hands, if the bad guy is not very smart: e-mails, text messages, Web history, contacts, <em>etc</em>. Unless of course, the bad guy has been using non-default apps.</p>
<p>But it gets even more interesting when we get to the part asking for <em>“Verbal and/or written instructions for overriding the ‘pattern lock’ installed on the” phone</em>. Since this is a Samsung phone, does Google have this information? What if there is no way to override this? I am not sure that the people who design security protocols for Trusted Execution Environments and/or for Secure Elements actually include a backdoor everywhere. After all, in some cases, not having a backdoor makes security easier to enforce. Of course, in this particular case, the pattern lock can be overridden by the owner&#8217;s Google account, so I guess that Google has the information.</p>
<p>But, in a more general term, it brings us back to the question of the &#8220;right&#8221; security level. If there is an open market for TEE/SE applications, the &#8220;superlock&#8221; application definitely sounds like a good one. It will certainly benefit our privacy, and it will just as certainly annoy anybody who wants to violate someone&#8217;s privacy, with the same debates as usual regarding the limits of the law. I am not completely sure where I stand on this, since I don&#8217;t like the idea of letting police look at <em>my</em> information, but I don&#8217;t really like the idea that my wonderful security products are used by bad guys to protect their content from police Of course, we can trust most bad guys to be like regular guys and make blatant security mistakes, but sometimes, it just won&#8217;t work. Oh well, we&#8217;ll see, and it should be interesting.</p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2012/03/19/some-people-dont-like-phone-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Protecting your contactless card</title>
		<link>http://javacard.vetilles.com/2012/02/20/protecting-your-contactless-card/</link>
		<comments>http://javacard.vetilles.com/2012/02/20/protecting-your-contactless-card/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 08:35:11 +0000</pubDate>
		<dc:creator>Eric Vétillard</dc:creator>
				<category><![CDATA[Discussions]]></category>
		<category><![CDATA[Mobile Security]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[contactless]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=806</guid>
		<description><![CDATA[As I mentioned in NFC Payments 101, current contactless cards aren&#8217;t protected against the simple attack that consists in performing a transaction while your card is in your pocket. Since some models don&#8217;t require anything else than tapping the card, the attack is workable. Well, that may change. researchers for the University of Pittsburgh&#8217;s RFID [...]]]></description>
			<content:encoded><![CDATA[<p>As I mentioned in <a href="http://javacard.vetilles.com/2012/02/16/nfc-payments-101/" class="liinternal">NFC Payments 101</a>, current contactless cards aren&#8217;t protected against the simple attack that consists in performing a transaction while your card is in your pocket. Since some models don&#8217;t require anything else than tapping the card, the attack is workable.</p>
<p>Well, that may change. researchers for the University of Pittsburgh&#8217;s <a href="http://www.engr2.pitt.edu/SITE/RFID/" class="liexternal">RFID Center for Excellence</a> have invented a on/off switch for cards, that simply requires you to put your finger on a specific spot on a contactless card to allow it to work (see a picture <a href="http://venturebeat.com/2012/02/18/researchers-create-onoff-switch-for-credit-cards-to-prevent-rfid-theft/" class="liexternal">here</a>).</p>
<p>Comment on the various articles around the topic are quite typical, ranging from the &#8220;This is very dumb because it is unpractical&#8221; to the &#8220;You have to give up some practicality for security&#8221;, and all variants in the middle. I would have liked to see the inventors&#8217; arguments, but I haven&#8217;t found a reference to a paper/report.</p>
<p>From previous experience, user experience often wins, in particular when, like with contactless cards, practicality is a selling point of a technology.Also, since the idea is to protect your cards in your wallet, I would think that it is easier for security-conscious to use wallets that include some kind of wire mesh or other wave-blocking technology. Since the on/off switch requires you to actually get the card out of your wallet, it is more or less equivalent, and it only annoys security-conscious people. The other guys will still be able totap their wallet (until, of course, they start having several contactless cards in there, in which case this optimization may not work any more).</p>
<p>This invention does not look flexible enough. The threat of someone performing transactions without you knowing is not significant enough to justify this kind of generalized measure for payment cards. On the other hand, it sounds much better as privacy-protecting technology on ID cards, since an ID card. Ensuring that the data about your identity will not leak from your wallet is interesting, and since an ID card is typically pulled out of the wallet before to be used, the technology is not an annoyance any more. But of course, in research like in politics, the fears associated to credit card theft remain more powerful than those associated to privacy protection (although identity theft is gaining traction).</p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2012/02/20/protecting-your-contactless-card/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NFC Payments 101</title>
		<link>http://javacard.vetilles.com/2012/02/16/nfc-payments-101/</link>
		<comments>http://javacard.vetilles.com/2012/02/16/nfc-payments-101/#comments</comments>
		<pubDate>Thu, 16 Feb 2012 17:42:30 +0000</pubDate>
		<dc:creator>Eric Vétillard</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=794</guid>
		<description><![CDATA[I have been writing a few posts about NFC payments, and I am lacking a basic background post showing where I come from, so here it is: my own little NFC Payments 101. It may not be fully objective, not even fully correct (I haven&#8217;t directly worked on this topic for a while). You are [...]]]></description>
			<content:encoded><![CDATA[<p>I have been writing a few posts about NFC payments, and I am lacking a basic background post showing where I come from, so here it is: my own little <em>NFC Payments 101</em>. It may not be fully objective, not even fully correct (I haven&#8217;t directly worked on this topic for a while). You are welcome to help through comments and criticisms, and I will do my best to correct/improve things as needed. </p>
<p>First, let&#8217;s state what this is <strong>not</strong> about:</p>
<ul>
<li><strong>Mobile payment</strong>. NFC is one form of mobile payment, but not the only one. In particular, I will not address the kinds of payments that are solely mobile-based, rely on SMS, Internet, or whatever. Here, I will only be talking about contactless payment, using a secure element.</li>
<li><strong>Contactless cards</strong>. Contactless cards are fun, but here, I am using NFC in its restrictive meaning, which involves a mobile device.</li>
</ul>
<p>Next, let&#8217;s move into a few definitions (in alphabetical order):</p>
<ul>
<li><strong>Bank</strong>. The financial service provider who issues a payment application. Could be a bank like Citi or a credit card specialist like American Express.</li>
<li><strong>Device vendor</strong>. Whoever provides the device through which the payment will be performed.</li>
<li><strong>Embedded Secure Element (eSE)</strong>. A Secure Element that is soldered into the mobile device during production. See Secure Element.</li>
<li><strong>Merchant</strong>. Since we are considering in-person, whoever accepts to be paid through a NFC payment, and has access to the proper infrastructure to do so.</li>
<li><strong>MicroSD</strong>. A specific kind of MicroSD, which includes a Secure Element and a NFC antenna. It may be used as a NFC adapter on mobile devices that don&#8217;t natively support NFC. See Secure Element.</li>
<li><strong>Mobile device</strong>. A mobile device that includes a NFC interface, a Secure Element, as well as a Mobile Wallet, on which an end-user can perform mobile payments.</li>
<li><strong>Mobile Network Operator (MNO)</strong>. A company providing network access to the mobile device. If GSM is used, the mobile device contains a SIM, which is owned by the MNO.</li>
<li><strong>Mobile Wallet</strong>. A mobile application, running on the mobile device, that allows the end user to select the card to use for a particular transaction, to register a new card, or perform similar management operations.</li>
<li><strong>Payment Application</strong>. An application running on the Secure Element that can perform a payment, usually following the EMV specification.</li>
<li><strong>Payment Terminal</strong>. A device that is used by the merchant to process NFC payments (and possibly other kinds of payments).</li>
<li><strong>Secure Element (SE)</strong>. Some secure MCU, including a Java Card platform, supporting the required GlobalPlatform specifications, with the proper security certifications (Common Criteria, EMVCo, for instance). The Secure Element is used to run the Payment Applications, and possibly other applications.</li>
<li><strong>SIM</strong>. A Secure Element that includes the credentials for authenticating a device into the GSM network, provided by the MNO. See Secure Element.</li>
<li><strong>Trusted Services Manager (TSM)</strong>. An entity in charge of managing the assets on a Secure Element on behalf of the owner of these assets (which may be the owner of the Secure Element itself, or simply the owner of an application on the Secure Element).</li>
</ul>
<h2>Stakes and stakeholders</h2>
<p>In NFC payments, the stakes are rather high, since the idea is to move currency from one account to another. A single device (and in particular its Secure Element) will hold data pertaining to several payment cards in a single location. Some of this data (considered less sensitive) will be stored on the mobile device (card name, associated picture, partial number, <em>etc</em>. The more sensitive data, and in particular the end user PIN and associated counters, and the cryptographic keys used to authenticate the card, are stored and processed solely on the SE.</p>
<p>Another stakeholder is the owner of the SE. This owner depends on the kind of SE. A SIM is usually the property of a MNO, and an eSE would be expected to be the property of the device vendor (possibly transferred to another actor, like Google), and a NFC MicroSD is the property of whoever provided it to the end-user (possibly a bank, possibly another actor). In all cases, this SE owner is the one who holds the keys to the SE, and has the power to allow banks and other application providers to put their content/credentials on their SE.</p>
<p>Something interesting with NFC payment is that this is a significant departure from traditional cards. When deploying contactless cards, a bank selects card suppliers, verifies their credentials, tests the cards thoroughly, and then deploys the cards. The bank controls the entire process, even if most of it is outsourced to various suppliers.</p>
<p>With NFC, things are very different. The &#8220;card&#8221; (SIM, eSE, MicroSD) is selected by somebody else. Even worse, there may be several cards for different devices or different MNOs. Banks need to trust all these people to have done the right thing, and all that trust is not easy for them. I am not sure what the model is for applications, but it may also be similar. Is the wallet owner going to put a single copy of the Visa application, associated to one data set for each Visa bank, or is the wallet owner going to install (almost) the same code several times, to better isolate the assets of different banks? If banks need to share the same code, that will require a lot of trust.</p>
<p>How do you get that trust? Through a security certification. And because there are many things to evaluate and many banks to convince, the evaluation requirements need to be quite high. This leads to potential cost issues for vendors, which can become especially high if every mobile device/SE needs to be certified for every NFC payment model. Factoring these costs is going to be important; standard certification frameworks, such as Common Criteria, are the current solution, but these frameworks may lack the flexibility required for such deployments. We&#8217;ll see.</p>
<p>Things get really funny if we keep adding stakeholders in the picture. Consider for instance that other people may want to add applications in the SE. For instance, your company may want to put a VPN there, or I could try to sell you a very good password storage app. These applications are not sensitive (from a banker&#8217;s point of view), but bankers want to ensure that they won&#8217;t interfere with their own applications (after all, I have designed <a href="http://javacard.vetilles.com/2010/09/28/about-e-smart-java-card-attacks/" class="liinternal">logical attacks</a> in the past). Java Card provides some solutions, with the firewall that isolates applications, and the bytecode verifier that checks that the application isn&#8217;t malware. But most likely, this is not sufficient, and an extra step will be required to convince everybody that the application is innocuous to other applications.</p>
<h2>The infrastructure</h2>
<p>Before getting into an actual NFC payment, the credentials need to get to your mobile device. In some cases, the payment application may also need to get there. So, how does that work?</p>
<p>We can assume here that the wallet owner has control over the SE. This means that this entity is able to load new applications, instantiate them, delete them, and more. It may also authorize other entities to perform similar operations. For instance, on a SIM, the MNO will always be allowed to manage its SIM applications and whatever other applications are required for its telco operations.</p>
<p>Similarly, banks will be allowed to manage their own applications, or at least their own credentials. In GlobalPlatform jargon, this means that banks will have a Security Domain that represents them on the card, with the appropriate privileges. Each Security Domain has its own set of cryptographic keys, which allows it to perform secure operations independently of the other actors.</p>
<p>In a typical NFC deployment, the operation of Security Domains is delegated to specialized technical operators, Trusted Service Managers. There usually will be at least two types of TSMs:</p>
<ul>
<li><em>The bank TSM(s)</em>. Each bank has a TSM, in charge of managing its assets on the SE.</li>
<li><em>The wallet owner&#8217;s TSM</em>. This TSM manages the wallet-related applications (if any), and it is also in charge of creating Security Domains for the banks&#8217; TSMs.</li>
</ul>
<p>All exchanges between TSMs and between the TSMs and the SEs are standardized by GlobalPlatform, in various documents. This allows the ecosystem to work. Now, let&#8217;s imagine that a new bank wants to install a card in a user&#8217;s mobile wallet. Here are the operations that need to be performed:</p>
<ul>
<li><em>Loading the payment application</em>. Actually, this is optional, as several banks may use the same application, for instance a standard Visa or MasterCard application. When required, this is done by transmitting a CAP file (binary format for Java Card) to the SE.</li>
<li><em>Instantiating the payment application</em>. For a given bank, a new instance needs to be created, in order to store all the specific information. This is a simple operation, which does not involve any sensitive information.</li>
<li><em>Personalizing the payment application instance</em>. Once the instance is created, this step consists in populating it with the proper data, including highly sensitive data such as cryptographic keys. This operation is always performed by establishing a secure communication channel between the Secure Element and some kind of secure factory, in which the cryptographic keys are stored/generated. The fact that the SE is actually outside of the factory when it is personalized doesn&#8217;t change this.</li>
<li><em>Sending the non-sensitive information to the wallet</em>. Once the payment application instance is ready on the card, more information needs to be provided to the wallet in order to be able to use it. This typically includes a logo, a name, and a reference to the payment application instance&#8217;s identifier on the card (AID). This information is stored in the mobile wallet, on the device.</li>
</ul>
<p>This looks rather simple, but the devil is in the details. Since the information that circulates during this installation is highly sensitive, the security level of the secure channel is very important. Also, several actors need to collaborate in order to make all this happen, which makes it possible, at least in theory, to design all kinds of attacks, including social attacks on employees of the various TSMs involved. As of today, the ecosystem remains a bit small to attempt such things, but this may change in the future.</p>
<h2>What is a NFC transaction?</h2>
<p>There is no such thing as a standard NFC transaction, as there are many ways to perform a NFC payment. First, let&#8217;s consider a few typical requirements:</p>
<ul>
<li>The user must present a PIN for payments over 15 euros.</li>
<li>The user must present a PIN before performing a payment.</li>
<li>It must be possible to perform a small payment with the phone off.</li>
<li>The user must see the amount of the transaction on the phone after the transaction.</li>
<li>The user must be notified when a transaction is successful.</li>
</ul>
<p>If all of this looks obvious, then think again. All these requirements are contradictory or close to impossible to achieve in most payment schemes. I haven&#8217;t been involved in this topic for a while, so my scenarios may be incomplete. However, the objective is here to show a few issues related in particular to usability vs. security. So, let&#8217;s look at a few examples, and analyze where things can go wrong.</p>
<h3>Small transaction, no PIN required</h3>
<p>This sounds simple. Here is what somebody may expect:</p>
<ol>
<li>Bob takes the phone out of his pocket</li>
<li>Bob turns the screen on</li>
<li>Bob taps the phone on the payment terminal</li>
<li>The phone beeps/vibrates and displays the amount to confirm the transaction</li>
</ol>
<p>Steps 1 to 2 are correct. Turning the phone&#8217;s screen on also activates the NFC interface (which is deactivated to save energy), including card emulation mode. At this point, a payment is possible.</p>
<p>Step 3 may not work with all wallets. If I understand what <a href="http://www.google.com/wallet/how-it-works-security.html" class="liexternal">Google is saying</a> about their wallet, you would then need to launch the wallet application and enter your wallet PIN to do so.</p>
<p>Step 4 is more difficult, at least in the U.S. . Card transactions in the U.S. actually emulate a magstripe, optionally replacing the static authentication by a dynamic one. In this transaction, the payment terminal simply reads data from the card, and does not communicate the amount to the card. In fact, the card doesn&#8217;t even know if the transaction was successful. The interface remains the same with a NFC payment: the payment application doesn&#8217;t know the amount, and it doesn&#8217;t know what happened after it sent its information. So, even if everything went fine from the phone&#8217;s point of view, the transaction may still be rejected by the payment terminal. Some user friendliness to work on.</p>
<h3>Large transaction, PIN required (pre-authorization)</h3>
<p>Here is another simple one:</p>
<ol>
<li>Lisa takes the phone out of her pocket</li>
<li>Lisa turns on the phone and selects the mobile wallet</li>
<li>Lisa selects the card to use</li>
<li>Lisa enters this card&#8217;s PIN</li>
<li>Lisa taps the phone on the payment terminal</li>
<li>Lisa gets feedback through the payment terminal</li>
</ol>
<p>This sequence is correct, but other options are possible. Since a PIN needs to be entered before to perform a transaction, step 2 is mandatory, as Lisa needs to turn on the phone explicitly, and select the mobile wallet (a shortcut key may be used, though). Note that this selection may require the presentation of a mobile wallet PIN, just to unlock the wallet.</p>
<p>Step 3, on the other hand, is optional. It should be possible to define a default card, to make a typical transaction shorter.</p>
<p>Step 4 is here critical, as a PIN is entered. The nice thing, from a usability point of view, is that the user can enter the PIN wile waiting at the merchant&#8217;s counter, making the actual transaction a simple tap. The bad thing, from a security point of view, is how it differs from a typical PIN entry:</p>
<ul>
<li>In standard transactions, PINs are entered on a PIN Entry Device (PED). The payment industry has defined specific guidelines for the security of these devices, <a href="https://www.pcisecuritystandards.org/security_standards/ped/index.php" class="liexternal">PCI-PED</a>. These guidelines are not easy, and mobile phones just don&#8217;t make it. It is hard to protect the PIN on a phone, as it is entered, as it is (temporarily) stored, and even after it is entered, with our screen smudges. TEE vendors will claim to be better, but they can hardly claim to be at PCI-PED level.</li>
<li>The PIN is here entered before the transaction. In a &#8220;good&#8221; implementation, it will be presented to the card immediately, and erased from the mobile&#8217;s memory. However, the user most likely wants to approve a single $5 transaction at Starbucks in the next 2 minutes, and not a $2,000 transaction the next day. However, the SE doesn&#8217;t make the difference, because the SE doesn&#8217;t know about real-time. It is therefore the mobile device&#8217;s responsibility to clear the PIN status 1 or 2 minutes after it has been presented. And even then, during these few minutes, Lisa&#8217;s device is a prime candidate for an attacker, since any payment request has been preapproved.</li>
</ul>
<h3>Large transaction, PIN required (double tap)</h3>
<p>This is a similar model, in which the PIN entry is managed differently:</p>
<ol>
<li>Paul takes the phone out of his pocket</li>
<li>Paul turns the screen on</li>
<li>Paul taps the phone on the payment terminal</li>
<li>The phone beeps and asks for a PIN, because the amount is above 15 euros</li>
<li>Paul enters his PIN</li>
<li>Paul taps the phone again</li>
<li>The phone displays a recap of the transaction</li>
</ol>
<p>You may have guessed, at least from the subtle reference to euros, that this scenario is not very American. We are here using the version of the EMV protocol in which the card is involved in the risk management decisions, and therefore knows about the amount to be paid. The decision to ask for a PIN will most likely be taken by the terminal during step 3, but some information is still available when interacting with the user.</p>
<p>Also, note that, although I have here simplified step 2, there may still be a full wallet opening and card selection sequence before the actual payment; I have simply assumed here that there was a single or default card, which is common in Europe.</p>
<p>The interesting thing here is that there is no major difference in the PIN handling, and that both security remarks made above apply here. Because the second tap is an entirely new transaction, there is no real difference. The difference is more subtle and is related to liability issues, as the user presents the PIN while knowing the amount. That is discussed below.</p>
<h3>Small transaction with dead battery</h3>
<p>This last one is the &#8220;killer use case&#8221;. Cards don&#8217;t have batteries, so nobody worries about cards being out of juice. For phones, the problem is different, and issuers are afraid that users relying solely on their phones for payment may be stuck in a bad situation if they run out of battery. It would be nice for them to be able to at least make a small payment, for instance to buy the train ticket to go back home.</p>
<p>Actually, this can be addressed. First, contactless readers provide power to cards, so they can provide power to the SEs embedded in phones. Then, if this is not enough, it is quite likely that although the battery is not charged enough to power the entire phone, it has enough power for the NFC controller. So, basically, this can work (the MicroSD case is a bit more difficult, since their antenna is too small to get power from the reader, so they need to be fully powered from the mobile device). So, here is the (very simple) transaction:</p>
<ol>
<li>Ada takes the phone out of her pocket</li>
<li>Ada taps the phone on the reader</li>
<li>Ada gets feedback on the transaction from the payment terminal</li>
</ol>
<p>So, what has happened? The mobile wallet has been transformed into a single contactless card. There is no way to select a card, there is no way to present a PIN, there is no way to prevent a transaction from being made. Yes, a NFC phone with a dead battery becomes a simple piece of plastic with a SE.</p>
<p>In principle, this is OK. The user simply needs to select the default card to be used in such a situation, and to select the option that allows transactions to be performed with the phone off. However, in the case of a dying battery, this choice needs to be done while the phone still works.</p>
<p>In terms of security, this is not bad. Claiming that it is not sufficient is equivalent to claiming that the security of all contactless cards is not sufficient.</p>
<h2>PIN, PIN, or PIN?</h2>
<p>We have seen that the use of PINs is an interesting part of NFC payments. However, this same name covers a number of different mechanisms, or at least different uses. Here, we will consider three distinct uses:</p>
<ul>
<li><em>Unlock your wallet</em>. This particular PIN is a code that is used when first accessing the wallet, in order to &#8220;unlock&#8221; it. This PIN code is managed by the mobile wallet application (on the mobile device), although the PIN itself can be managed on the SE. More importantly, this PIN is provided before even choosing the payment card, which reduces its use as a &#8220;traditional&#8221; PIN.</li>
<li><em>Authenticate the user</em>. This use case happens when the end user can present the PIN before to actually perform a transaction, to unlock a particular card. The PIN is presented to the card, and it will authorize the next transaction for a limited time. Of course, the timing is enforced by the mobile device, since cards don&#8217;t have a real-time clock. Also, since this PIN is presented before the actual transaction, it cannot be considered as authenticating the transaction.</li>
<li><em>Authorize the transaction</em>. This use case is the traditional use of PIN, when it is entered on a PIN entry device, part of the payment terminal. In that case, the payment terminal first displays the amount to be paid, and then asks for the PIN. In that case, the PIN is more powerful, since it shows that the user has authenticated himself after looking at the transaction&#8217;s amount. In fact the PIN entry device security requirements are careful about protecting the PIN, and also about ensuring that the correct amount is displayed.</li>
</ul>
<p>Of course, the difference between these three types of PIN are subtle. The user, who enters a sequence of digits, may not realize the differences. However, in terms of liability, things are different, as we are moving into more and more responsibility for the user. For instance, the first kind of PIN (opening the wallet) does not even imply that the user wants to make a payment; the user may just want to adjust a setting on a card, or register a new card. On the opposite, after entering the last kind of PIN (on a payment terminal), the bank knows that the amount has been presented to the user before he entered the PIN, so it is more difficult for the user to make a &#8220;I didn&#8217;t know&#8221; claim.</p>
<h2>A few threats</h2>
<p>First, let&#8217;s not forget our starting point: a contactless card. If you have a contactless payment card, a few bad things may happen. Your card may be stolen and used by somebody else. If there is no PIN to present, this will just work. Or somebody can get close to you and make a transaction directly from your pocket. They may not even need to be that close, provided that they have a powerful enough field (they will just fry your brain a little as a bonus, but they may look suspicious with their big antenna).</p>
<p>If things go well, dynamic card authentication should be used, which means that each transaction uses a random challenge that the card need to encrypt to prove that it has the appropriate encryption key. In that case, the good news is that you don&#8217;t have to fear about someone copying your card.</p>
<p>Now, if you move the payment application to a mobile device, the same threats remain: somebody may steal your mobile and use it to pay for something, or some guy may just come by and perform a transaction from your pocket.</p>
<p>Well, not necessarily. On an Android phone, by default, the NFC interface is only activated when the screen is on. This means that you need to turn your screen on to perform a transaction, and it also means that your phone is safe in your pocket (actually, safer than your contactless card).</p>
<p>And if you are using a Google Wallet, it comes with a lock. You need to know a PIN to open the wallet. Even if this mechanism <a href="http://javacard.vetilles.com/2012/02/14/google-wallet-has-a-vulnerability-not-on-se/" class="liinternal">can be attacked</a>, it is still better than your traditional wallet, which usually doesn&#8217;t include a lock.</p>
<p>So, what&#8217;s new? Or more importantly, what&#8217;s worse? Well, the main thing is that your mobile device (and your SE) happen to be connected to Internet. This is not good, since this is a new origin for an attack. For instance, the famous <a href="http://www.lightbluetouchpaper.org/2008/01/09/relay-attacks-on-card-payment-vulnerabilities-and-defences/" class="liexternal">relay attack</a> can work very well there. This is not easy, of course, since it requires some mobile malware that has the privileges required to access the payment application. Still, it is possible on your phone, and not on your standard contactless card.</p>
<p>Naturally, everything that works on a contactless smart card also works on a Secure Element. So, expect power analysis and fault induction attacks to be around. However, unless something new happens, there is no big fear to have. And even if it does, the payment application on your mobile device is more likely to be upgraded as required than the one on your (not connected) contactless card.</p>
<p>Overall, I don&#8217;t see much differences so far in terms of threats. Of course, such statements are systematically proven wrong by attackers, so don&#8217;t forget to check regularly.</p>
<h2>Conclusion</h2>
<p>You may be more confused after reading it than before; if so, it may mean that you have been exposed to some of the complexity behind NFC payments.</p>
<p>All of this complexity is manageable, but not easily. Because some basic hypotheses from the previous models are broken, many stakeholders have problems adapting to the new situation. Some of these problems can be addressed by reasoning and adaptation, but it is likely that a few problems will require innovative solutions.</p>
<p>My personal opinion is that security certification is one of these issues that will require fresh thinking and new solutions. However, not everybody agrees with me, and the debate has already been going on for a number of years. So, there is more fun to come in this area.</p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2012/02/16/nfc-payments-101/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Wallet has a Vulnerability (not on SE)</title>
		<link>http://javacard.vetilles.com/2012/02/14/google-wallet-has-a-vulnerability-not-on-se/</link>
		<comments>http://javacard.vetilles.com/2012/02/14/google-wallet-has-a-vulnerability-not-on-se/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 21:31:11 +0000</pubDate>
		<dc:creator>Eric Vétillard</dc:creator>
				<category><![CDATA[Banking]]></category>
		<category><![CDATA[Mobile Security]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=791</guid>
		<description><![CDATA[The game has started for Google Wallet. Some guys are looking for vulnerabilities, and of course, finding some. You can read the papers to get all the details on this attack. Basically, they have been smart enough to use a salt before hashing the PIN value to avoid brute-force attacks. However, they haven&#8217;t been smart [...]]]></description>
			<content:encoded><![CDATA[<p>The game has started for Google Wallet. Some guys are <a href="http://viaforensics.com/mobile-security/forensics-security-analysis-google-wallet.html" class="liexternal">looking for vulnerabilities</a>, and of course, <a href="https://zvelo.com/blog/entry/google-wallet-security-pin-exposure-vulnerability" class="liexternal">finding some</a>.</p>
<p>You can read the papers to get all the details on this attack. Basically, they have been smart enough to use a salt before hashing the PIN value to avoid brute-force attacks. However, they haven&#8217;t been smart enough when they decided to store the salt just next to the hashed PIN value. Of course, with these two pieces of information, it takes at most 10,000 attempts to find the PIN (just check the video of the attack if you doubt that this is a very small number).</p>
<p>But hey, it&#8217;s just an attack/vulnerability. Maybe the first one, most likely not the last one. What surprises me most is that all these wallet programs insist on Common Criteria certifications of the Secure Elements, very complex certification programs for SE applications, and yet they leave behind this kind of basic vulberability in the mobile application, whose security does not seem to be formally evaluated by anyone. At least, the SIM/eSE security specialists should be able to sleep well for a while: they are unlikely to be the best target for real attackers, with such low-hanging fruit.</p>
<p>What really puzzled me from the zvelo guys is their analysis of what needs to be done. Their first step is correct: this PIN (which is used to open the wallet, not to validate a transaction) should be stored and verified in the Secure Element. Now, what surprises me more is their next statement:</p>
<blockquote><p>
Basically, by moving the PIN verification into the SE itself, this might constitute a “change of agency” responsible for keeping the PIN secure. The fear is that Google might no longer be responsible for the security of the PIN, but rather the banks themselves. If this is in fact the case, then the banks may need to follow their own policies and regulations regarding ATM PIN security which obviously, and rightly, receive a great deal of scrutiny.
</p></blockquote>
<p>Now, this doesn&#8217;t look good. First, about the ownership of the SE. I am not sure what the deal between Google and the phone vendors is, but I would say that the SE is owned either by Google or by the phone vendor. After all, they are the ones who control the SE&#8217;s master keys.</p>
<p>Even if we don&#8217;t consider that, Google would not store the PIN in somebody else&#8217;s application. I am sure that they have their own app in the SE, that they would use this app to manage their little PIN. This is very easy to do with Java Card, and I am sure that they can develop this addendum easily.</p>
<p>Finally, as mentioned above, this PIN is not an ATM PIN, because it is not linked to a specific transaction. When you enter the PIN, it opens the wallet, but it does not authorize a transaction. It is the digital equivalent to putting a four-digit combination lock on your wallet (which is exactly what Google is claiming).</p>
<p>Nevertheless, the story remains interesting, and it reminds us of the complex ecosystem behind NFC payments. For instance, did the banks consider the Google PIN in their risk analysis of the Google wallet? Well, if they did, the Google PIN is now a bit weaker. It is not broken, though: a combination of malware and physical access to the phone is still required to make a fraudulent transaction.</p>
<p>To conclude on a positive note, the end of <a href="https://zvelo.com/blog/entry/google-wallet-security-pin-exposure-vulnerability" class="liexternal">the zvelo article</a> is a good list of recommendations. If you keep your phone clean and locked, the bad guys will have to find a better vulnerability.</p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2012/02/14/google-wallet-has-a-vulnerability-not-on-se/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>E-smart becomes Chip-to-Cloud</title>
		<link>http://javacard.vetilles.com/2012/02/06/e-smart-becomes-chip-to-cloud/</link>
		<comments>http://javacard.vetilles.com/2012/02/06/e-smart-becomes-chip-to-cloud/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 09:47:54 +0000</pubDate>
		<dc:creator>Eric Vétillard</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[e-Smart]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=789</guid>
		<description><![CDATA[After over 10 years, e-Smart is changing its name to become the Chip-to-Cloud Security Forum (which will also replace the other conferences from the Smart Event). This looks like a welcome move from card-centered business to application-centered business, reflecting what is happening in the industry. The technology is now ready, and it has not evolved [...]]]></description>
			<content:encoded><![CDATA[<p>After over 10 years, e-Smart is changing its name to become the <a href="http://www.chip-to-cloud.com/" class="liexternal">Chip-to-Cloud Security Forum</a> (which will also replace the other conferences from the Smart Event). This looks like a welcome move from card-centered business to application-centered business, reflecting what is happening in the industry.</p>
<p>The technology is now ready, and it has not evolved greatly in the past few years. Java Card and GlobalPlatform are mature, widely deployed technologies; many companies are able to develop and deploy cards. Of course, there are a few technical challenges remaining, to keep engineers busy. One of the most challenging tasks is the establishment of trust between the various actors of the industry; today, formal security certification is at the heart of this, but something a bit more innovative will most likely be required here.</p>
<p>The new frontier for cards and secure elements are applications. This is much harder than implementing technology, and requires a lot of innovation. Will we be able to differentiate smart cards from tags? Will we find a room for card applications between basic SIM authentication and TEE applications? Will there at some point be a way to work on this? That&#8217;s the Chip-to-Cloud challenge, and I hope to get a few interesting answers next September.</p>
<p>The <a href="http://www.chip-to-cloud.com/call-for-papers" class="liexternal">Call for Papers</a> is out now, so go ahead, propose things. I am convinced that this conference will remain one of the places where academics, industrial R&#038;D, and technical marketing people are able to meet and exchange. See you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2012/02/06/e-smart-becomes-chip-to-cloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>No memory, no chocolate!</title>
		<link>http://javacard.vetilles.com/2012/01/19/no-memory-no-chocolate/</link>
		<comments>http://javacard.vetilles.com/2012/01/19/no-memory-no-chocolate/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 16:56:11 +0000</pubDate>
		<dc:creator>Eric Vétillard</dc:creator>
				<category><![CDATA[Discussions]]></category>
		<category><![CDATA[Mobile Security]]></category>
		<category><![CDATA[Open issues]]></category>
		<category><![CDATA[eSE]]></category>
		<category><![CDATA[TEE]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=786</guid>
		<description><![CDATA[There has been some excitement lately about the fact that more and more phones are now getting embedded SE&#8217;s (eSE&#8217;s), associated to a NFC interface. Some of this excitement came from the ability to manage third-party applications on this embedded SE, as enabled by a whole range of GlobalPlatform specifications, and by the emergence of [...]]]></description>
			<content:encoded><![CDATA[<p>There has been some excitement lately about the fact that more and more phones are now getting embedded SE&#8217;s (eSE&#8217;s), associated to a NFC interface. Some of this excitement came from the ability to manage third-party applications on this embedded SE, as enabled by a whole range of GlobalPlatform specifications, and by the emergence of TSM (Trusted Service Manager) offers.</p>
<p>Just imagine a world where a company can deploy its preferred network security application on all devices, while benefitting from SE-based security, or where innovative ccompanies ccan design security applications that rely on SE applications. Sounds good? Well, too good, because this is just not our world, at least not today.</p>
<p>There is an obvious reason for this: the &#8220;owners&#8221; of these eSE&#8217;s, whether they are phone vendors (Nokia, Samsung, &#8230;), wallet vendors (Google, Isis, &#8230;), or others, are not opening their devices. It is therefore very difficult to load applications on them. The most open environment that I know is in France, with <a href="http://www.afscm.org/en/" class="liexternal">AFSCM</a>, but as far as I know, this is an operator-dominated, SIM-based world, which has a long history of managing resource-constrained SIM cards.</p>
<p>So, why is it different with the relatively new players who own/manage embedded Secure Elements? My gut feeling is that memory limitations are part of the problem, if not the entire problem. If you think of an iPhone, memory is almost infinite: if you are missing memory, simply remove one or two songs out of the 2000 that your phone contains, and it fits. On an eSE, things are different: think of a 64k SE. If it already contains 4 applications, each using 15k of memory, there is no way to add a fifth one. The numbers are here very different, and the choices are much more limited. I don&#8217;t think that many iPhone users ever get to the point where they need to eliminate content that they really need to fit another content that they also really need. On a card, no such luck. And for a platform manager, this is very difficult to deal with, so their priority will be to get their applications on this, or at least the applications that can bring them immeddiate and/or obvious returns.</p>
<p>The problem is very different with a Trusted Execution Environment (TEE). Applications are here stored in the phone&#8217;s main memory, so there is no shortage of memory. This means that, for TEEs, it should not be too hard to actually use app stores or similar infrastructures. For eSE&#8217;s, we will need to work a bit more in order to achieve the same result.</p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2012/01/19/no-memory-no-chocolate/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Best wishes and post-holiday rant</title>
		<link>http://javacard.vetilles.com/2012/01/02/best-wishes-and-post-holiday-rant/</link>
		<comments>http://javacard.vetilles.com/2012/01/02/best-wishes-and-post-holiday-rant/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 09:05:46 +0000</pubDate>
		<dc:creator>Eric Vétillard</dc:creator>
				<category><![CDATA[Discussions]]></category>
		<category><![CDATA[VRM]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=779</guid>
		<description><![CDATA[First, since this is my first post of the year, let me wish you all the best for 2012, hoping that it will bring a lot of interesting things around mobile security, Java Card, and all these things. My first post will be a rant about something that is very-much holiday-related for me: package deliveries. [...]]]></description>
			<content:encoded><![CDATA[<p>First, since this is my first post of the year, let me wish you all the best for 2012, hoping that it will bring a lot of interesting things around mobile security, Java Card, and all these things.</p>
<p>My first post will be a rant about something that is very-much holiday-related for me: package deliveries. I am a big-time online shopper, which means that I often get deliveries. And of course, during the holiday season, I get a lot of deliveries, from many different vendors.</p>
<p>Until recently, My deliveries were all coming to the office, as this was a local tradition in our Trusted Logic office. However, now, I work in an office with much fewer people, and sometimes from home, so it is not as easy to organize deliveries at the office. So, this holiday season, I got everything shipped at home.</p>
<p>Of course, I live in a closed residence (some code is required to get in), and my postal address allows you to find my mailbox easily, but not necessarily my house (no street numbers). All of this makes me a perfect guinea pig for testing delivery services.</p>
<p>So far, the best service remains the basic Post Office service. They have the key to the mailbox, so they will use it for anything that fits in it. Just great. Of course, if it doesn&#8217;t fit, I have to run to the Post Office and stand in line for a while. Even their express service is worse, because they need a signature. So, if I&#8217;m not home, they will not leave the package, however small, and I&#8217;m back to the Post Office.</p>
<p>With other delivery companies, things get much worse. First, going to the Post Office is not an option, because their &#8220;regional center&#8221; is often 30 or 40 kilometers away. Then, they don&#8217;t have the key to my mailbox, so they won&#8217;t leave a package, however small.</p>
<p>And finally, they call you when they are blocked right in front of a locked gate, or waiting outside your door. Even for me who works close from home, this is not very easy to handle, because we are not always immediately available, and because the guy can&#8217;t wait indefinitely. In the end, the &#8220;express&#8221; package took 24 hours to rush from Hong Kong to Nice, and one full week to get delivered. Not efficient.</p>
<p>So, what&#8217;s missing? Let&#8217;s consider two things:</p>
<ul>
<li>I can&#8217;t manage the delivery. I can track the package, I can know that the delivery guy has started and will try delivering to an empty home, but I can&#8217;t do anything about it.</li>
<li>I can&#8217;t sign off for a delivery when I am not home. So, the guys won&#8217;t leave the package in my mailbox.</li>
</ul>
<p>Now, if we look at both issues, we easily find out that this is a trust issue: delivery companies are not sure of who I am, so they will not trust me. Why so? Because they are not able to associate me to my package when I am at home, in front of them.</p>
<p>This definitely looks like a problem that can be solved. Companies like <a href="https://www.trustfabric.com/connect/" class="liexternal">TrustFabric</a> already allow you to selectively share information with companies. They don&#8217;t support this yet, but there is definitely some information that I would like to share with delivery companies (possibly including a detailed map, GPS coordinates, or whatever may get them to me).</p>
<p>Having this link through a trusted third party also solves the other issue. If I simply associate my TrustFabric account to a public credential (OpenID or similar), I can now login to their site and update the directions for the delivery, to lead them to where I actually am, or to acknowledge the fact that I am allowing them to leave the package in my mailbox without a written signature (a digital one will do).</p>
<p>As TrustFabric and others are getting their offers ready, this is getting closer to reality. Let&#8217;s hope for this new year that they will cover this delivery nightmare, and I will not have to do the same rant.</p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2012/01/02/best-wishes-and-post-holiday-rant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google&#8217;s vision of Secure Elements</title>
		<link>http://javacard.vetilles.com/2011/12/30/googles-vision-of-secure-elements/</link>
		<comments>http://javacard.vetilles.com/2011/12/30/googles-vision-of-secure-elements/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 14:35:39 +0000</pubDate>
		<dc:creator>Eric Vétillard</dc:creator>
				<category><![CDATA[Mobile Security]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[mobile payment]]></category>
		<category><![CDATA[Secure Element]]></category>
		<category><![CDATA[wallet]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=776</guid>
		<description><![CDATA[Google has launched its Google Wallet service, which uses a secure element in the phone to provide some security. Of course, Java card is in every one of these secure elements, but it is not the point today. I have just stumbled upon the Google Wallet page. Initially, I was looking for information about how [...]]]></description>
			<content:encoded><![CDATA[<p>Google has launched its Google Wallet service, which uses a secure element in the phone to provide some security. Of course, Java card is in every one of these secure elements, but it is not the point today. I have just stumbled upon the <a href="http://www.google.com/wallet/" class="liexternal">Google Wallet page</a>. Initially, I was looking for information about how to load the Google Wallet on my Nexus S during a visit to the U.S. I haven&#8217;t found this information (if you know, I am interested). However, I have found how Google talks about its wallet&#8217;s security.</p>
<p>Here is the sentence that first drew my attention:</p>
<blockquote><p>
<strong>A wallet you can lock</strong>. Stay safe with the Google Wallet PIN and with secure underlying technology.
</p></blockquote>
<p>This started again my love/hate relationship with Google. A wallet you can lock? It&#8217;s just brilliant, far better than anything else I have seen on the same topic. Where do they find these things? Now, let&#8217;s see how the rest fares, from their <a href="http://www.google.com/wallet/how-it-works-security.html" class="liexternal">Security</a> section.</p>
<blockquote><p>Google Wallet stores your encrypted payment card credentials on a computer chip on your phone called the Secure Element.
</p></blockquote>
<p>Sounds good. The Secure Element is explicitly defined as a separate chip. I find it interesting that they feel the need to mention that the credentials are encrypted.</p>
<blockquote><p>Think of the Secure Element as a separate computer, capable of running programs and storing data. The Secure Element is separate from your Android phone&#8217;s memory.
</p></blockquote>
<p>Once again, all of this sounds good. Very nice way to describe a smart card.</p>
<blockquote><p>The chip is designed to only allow trusted programs on the Secure Element itself to access the payment credentials stored therein.
</p></blockquote>
<p>Uh oh! I really recognize my favorite Java Card firewall, isolating applications from each other. But I am a bit disappointed to read that the &#8220;chip&#8221; is designed to support that. Yes, the chip&#8217;s memory can only be accessed from the chip itself; but on the chip, the isolation is software-based.</p>
<p>Next step, the FAQ&#8217;s <a href="http://www.google.com/wallet/faq.html#security-and-privacy" class="liexternal">Security and Privacy</a> section. Among basic questions about lost phones, there are two good questions related to secure elements:</p>
<ul>
<li>What is the Secure Element and how secure is it?</li>
<li>Could a malicious application access my credit card on the Secure Element?</li>
</ul>
<p>You can read the complete answers there. However, here is what should be the most important sentence, since it ends the answers to both questions:</p>
<blockquote><p>
There are multiple levels of protection for data stored on the Secure Element and it is protected at the hardware level from snooping or tampering.
</p></blockquote>
<p>Of course, smart card specialists know about all the terrible attacks hidden behind the &#8220;snooping and tampering&#8221;, and how to protect from them. But the sole mention of data is a bit disappointing.</p>
<p>The answers also mention several times that only the Google Wallet (and other authorized programs) can access the Secure Element, and that this access control is strictly enforced. This is good, and we all like the fact that access control is present.</p>
<p>Now, what&#8217;s missing? You may have guessed it from my &#8220;data only&#8221; disappointment. There is no mention of the fact that the secure element can do more than payment. So, Google, if you are reading this, I will go as far as writing the missing FAQ piece:</p>
<blockquote><p>
<strong>Can I use my Secure Element for protecting other assets?</strong></p>
<p>Your Secure Element is a small but powerful chip, which runs its own applications to manage sensitive data. It can even host several applications, to provide different security-related services. Of course, since the access to the Secure Element is strictly controlled, only authorized developers can write applications for it. We have selected a limited number of partners, who provide applications that rely on the Secure Element to manage their security credentials. These offers include VPN application, secure authentication applications, and much more.
</p></blockquote>
<p>Hoping that it will become useful someday. And if you need more material on Java Card, just let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2011/12/30/googles-vision-of-secure-elements/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>My first week at Oracle</title>
		<link>http://javacard.vetilles.com/2011/11/09/my-first-week-at-oracle/</link>
		<comments>http://javacard.vetilles.com/2011/11/09/my-first-week-at-oracle/#comments</comments>
		<pubDate>Wed, 09 Nov 2011 22:12:38 +0000</pubDate>
		<dc:creator>Eric Vétillard</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=770</guid>
		<description><![CDATA[The break is over! After a month spent on various family activities, I am back to work. My new job is related to the Product Management of Java Card at Oracle. This is at the same time very close to what I did previously (Java Card has been close to the center of my activities [...]]]></description>
			<content:encoded><![CDATA[<p>The break is over! After a month spent on various family activities, I am back to work. My new job is related to the Product Management of <a href="http://www.oracle.com/technetwork/java/javacard/overview/index.html" class="liexternal">Java Card</a> at Oracle. This is at the same time very close to what I did previously (Java Card has been close to the center of my activities for the past 15 years), and a whole new job, as I am moving to a marketing position.</p>
<p>It is not the first time that I consider joining this team (considering all kinds of positions). It never worked out with Sun, but Oracle offered me the change that I was waiting for at this time. Also, I appreciate the challenge of joining one of the leading Silicon Valley companies, even if I am only remotely connected to the heart of the company.</p>
<p>There are many challenges to be faced. Java Card currently dominates open smart cards, with very high penetration rates. Of course, I will work to make this domination continue, to make Java Card’s success continue in the coming years, and more importantly, to make Java Card the best answer to the challenges faced by the digital security industry.</p>
<p>This should be rather easy, as I still believe after 15 years that the Java Card technology is the best choice for the industry. Those who know me already know that I need to truly believe in what I sell, push, or promote. In the case of Java Card, this definitely is true, so I look forward to my new job with great envy and energy.</p>
<p>I will naturally attend the Cartes show in Paris. So, if you plan to attend, see you there next week. I may be stuck in meeting rooms most of the time, but you can still reach me at firstname . lastname at oracle.com .</p>
<p>Last but not least, I will keep this blog open for now. My bias in favor of Java Card won&#8217;t be really worse than what it already was, and hopefully, I will gain some freedom on other topics, and the tutorial will make a comeback.</p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2011/11/09/my-first-week-at-oracle/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Java Card is 15 years old</title>
		<link>http://javacard.vetilles.com/2011/11/05/java-card-is-15-years-old/</link>
		<comments>http://javacard.vetilles.com/2011/11/05/java-card-is-15-years-old/#comments</comments>
		<pubDate>Sat, 05 Nov 2011 22:31:46 +0000</pubDate>
		<dc:creator>Eric Vétillard</dc:creator>
				<category><![CDATA[History]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Java Card]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=767</guid>
		<description><![CDATA[I just realized that I missed Java Card&#8217;s 15th birthday. This birthday was sometime in the end of October, 1996. I don&#8217;t have the exact date, because the only document I have is the Java Card API: Specification of the Java Virtual Machine and Application Programmer&#8217;s Interface, version 0.13, dated October 10, 1996. Although this [...]]]></description>
			<content:encoded><![CDATA[<p>I just realized that I missed Java Card&#8217;s 15th birthday. This birthday was sometime in the end of October, 1996. I don&#8217;t have the exact date, because the only document I have is the <em>Java Card API: Specification of the Java Virtual Machine and Application Programmer&#8217;s Interface</em>, version 0.13, dated October 10, 1996.</p>
<p>Although this draft was officially authored by Sun Microsystems, Schlumberger played an important role there. This is why I am quite sure that the spec was released at the end of the month, since one of Schlumberger&#8217;s main patents on the topic was filed on October 25, 19996. The main topic of <a href="http://www.google.com/patents?id=ZrsIAAAAEBAJ" class="liexternal">this patent</a> is to use a high-level language to program a microcontroller, and it claims in particular the transformation of a class file into a more optimized format. Quite a good idea, at least sufficient to include this patent in the <a href="http://www.scribd.com/doc/40113431/Gemalto-sues-Google-HTC-Samsung-and-Motorola" class="liexternal">suit against Google</a>&#8216;s Android (which may be a proof that Android is yet another derivative of Java Card).</p>
<p>Good idea, but everybody trying to fit something on a card was ddoing just the same. The really brilliant idea was not to generate an optimized format, but to believe that it would be possible to start from something as different as Java. This was brilliant at the time, especially since in 1996, Java was definitely not mainstream technology, and was often considered as too expensive or too slow even on a PC. Now, that&#8217;s something for which the guys in Schlumberger can be congratulated.</p>
<p>Of course, they were not the only ones to try fitting unlikely things into a smart card. Researchers in Gemplus were more focused on object oriented technology, in particular Corba. And naturally, they needed to think about optimization in order to fit this into a card. They were  using Forth as their base language for the Combo virtual machine. Even before that, as mentioned in this <a href="http://www.scribd.com/doc/61011453/59/A-Short-History-of-Byte-Code-Interpreters-on-Smart-Cards" class="liexternal">history of bytecode interpreters for smart cards</a>, researchers at RD2P designed a bytecode interpreter, as early as 1990 (I can&#8217;t even imagine the memory sizes of cards at that time; if somebody knows, please leave a comment).</p>
<p>Now, the interesting part is that a patent has been filed in France (sorry, <a href="http://fr.espacenet.com/publicationDetails/biblio?locale=fr_FR&#038;DB=fr.espacenet.com&#038;adjacent=true&#038;locale=fr_FR&#038;return=true&#038;FT=D&#038;date=19920327&#038;CC=FR&#038;NR=2667171A1&#038;KC=A1" class="liexternal">in French only</a>). And one of the key elements of this patent was the fact that the programs are later compiled for the specific embedded  virtual machine.</p>
<p>Not quite Java Card, though, because the patent only mentioned direct compilation from source code, not using an intermediary format (<em>a.k.a.</em> Java class file). The difference is slim, and I would be tempted to credit the French guys with the invention of optimized smart card code. However, there is something that the Schlumberger guys did much better: timing. The French patent, filed in 1990, was never extended into an international patent, whereas the American patent has been extended and mainained to this day.</p>
<p>As a final trivia note, did you smile when I mentioned that Android was a derivative of Java Card? Well, very indirectly, but somehow, a little bit. Java Card, after being initiated by Schlumberger, was maintained by Sun Microsystems. Sun&#8217;s Java Card team later convinced Sun to develop a slightly larger VM, the KVM, to address very small devices. This VM was then extended into MIDP, which became the leading platform for phones. And everybody knows that the Android team includes a number of ex-Sun employees who used to work on MIDP. So, yes, indeed, Android a a distant heir of Java Card.</p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2011/11/05/java-card-is-15-years-old/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

