<?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; IdÃ©es reÃ§ues</title>
	<atom:link href="http://javacard.vetilles.com/category/discussions/idees-recues/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>It can&#8217;t happen here</title>
		<link>http://javacard.vetilles.com/2011/03/16/it-cant-happen-here/</link>
		<comments>http://javacard.vetilles.com/2011/03/16/it-cant-happen-here/#comments</comments>
		<pubDate>Wed, 16 Mar 2011 21:40:30 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[IdÃ©es reÃ§ues]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=710</guid>
		<description><![CDATA[The sentence It can&#8217;t happen here is the latest motto of the French government, to which they add because our nuclear plants are the safest in the world. My point is not here to discuss politics or nuclear engineering, but to focus on risk analysis. I only did a few risk analyses, but it taught [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>The sentence <em>It can&#8217;t happen here</em> is the latest motto of the French government, to which they add <em>because our nuclear plants are the safest in the world</em>.  My point is not here to discuss politics or nuclear engineering, but to focus on risk analysis.</p>
<p>I only did a few risk analyses, but it taught me at least one thing: <em>it can&#8217;t happen</em> is never a valid conclusion, because every risk analysis includes some hypotheses. These hypotheses usually seem very reasonable, but the probability that these hypotheses can be broken is never 0. This means that the actual conclusion is</p>
<blockquote><p>It can&#8217;t happen with the hypotheses considered in the present plan; however, in the unlikely case where these hypotheses are wrong, our analysis cannot give any guarantees</p></blockquote>
<p>It doesn&#8217;t sound as good as the simplistic <em>It can&#8217;t happen</em>, but it is the truth. The problem today with out leaders (and more generally without society) is that we love our plans, and this entials many bad behaviors:</p>
<ul>
<li><strong>Completeness assumption.</strong> When there is a plan, we have a tendency to assume that it covers all possible cases. We will also try to maintain this belief as long as possible, even after getting strong hints that our hypotheses are wrong.</li>
<li><strong>Irresponsibility outside the plan.</strong> When something happens outside of the plan, leaders fail to take responsibility for it. Statements like <em>It is an act of God</em>, or <em>It was impossible to predict</em> are typical examples of such irresponsibility. However, we would expect the exact contrary from a good leadership: we need them most when things go out of the plan. However, improvisation is hard, and nobody wants to try that.</li>
<li><strong>Reluctance to update the plan.</strong> The last point is that, even when the plan has been proven wrong, there is strong reluctance to update it. Engineers are not too bad here: nuclear engineers around the world will update their plans after the current disaster. Politicians are not as good: for instance, they failed to update the plan after the 2008 economic crisis, although it has proven that some of their hypotheses were wrong.</li>
</ul>
<p>What can se do about this? We are not going to solve the world&#8217;s big problems, but we can try to make opinions shift in the right direction. First, by getting information; I have recently heard on the radio a very good interview with <a href="http://www.patricklagadec.net/uk/" class="liexternal">Patrick Lagadec</a> (a risk management professor, who wrote <a href="http://www.patricklagadec.net/fr/pdf/Risks_and_Crises_in_Terra_Incognita_ENGLISH.pdf" class="lipdf">a recent paper</a> on these topics) who went much deeper than I did here and definitely helped me structure my thoughts. Let&#8217;s make sure that we share this information.</p>
<p>Then, we can apply it on our daily lives. This applies even more to the security community, where risk analyses are common. The point is that, beyond having a plan, we need to be prepared for action when facing a situation that is outside of the plan.</p>
<p>I can take one personal example, around Java Card. Java Card is perceived as a highly secure technology, and we have good plans in place to guarantee this, including Common Criteria evaluations, sharing of information regarding the latest attacks, <em>etc</em>. However, the plan doesn&#8217;t include any provision for the (unlikely) case that a Java Card weakness ends up exploited by attackers in a way that leads to major public exposure. Individual companies have plans for such situations, and they are likely to have crisis management procedures; however, the synchronization between the companies could be much harder to achieve. I will check on that in the coming months that the Java Card Forum can react safely in a crisis.</p>
<p>Finally, I would like to express my sympathy to people in Japan who read this, and my solidarity to all of those who are struggling through the currently unfolding crisis. </p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2011/03/16/it-cant-happen-here/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2011: The year of mobile malware? Nope.</title>
		<link>http://javacard.vetilles.com/2011/01/20/2011-the-year-of-mobile-malware-nope/</link>
		<comments>http://javacard.vetilles.com/2011/01/20/2011-the-year-of-mobile-malware-nope/#comments</comments>
		<pubDate>Thu, 20 Jan 2011 17:01:52 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[IdÃ©es reÃ§ues]]></category>
		<category><![CDATA[Mobile Security]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[static analysis]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=683</guid>
		<description><![CDATA[One of the discussion topics at this week&#8217;s Mobile Security Barcamp in Sophia Antipolis was mobile malware, with some people claiming that 2011 will be the year of mobile malware. I agree with them that, as mobile takes more and more power, and as platforms like iOS and Android become more and more common, they [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>One of the discussion topics at this week&#8217;s Mobile Security Barcamp in Sophia Antipolis was mobile malware, with some people claiming that 2011 will be the year of mobile malware. I agree with them that, as mobile takes more and more power, and as platforms like iOS and Android become more and more common, they become a prime target for malware developers. So yes, more mobile malware will be produced.</p>
<p>However, naming 2011 &#8220;The Year of Mobile Malware&#8221; also entails that this malware will have a real effect on users, and that &#8216;s where I am much less sure. The main reason for this doubt comes from the use of application stores as the dominant way to deploy applications. The fact that most mobile applications go through the same few filters (Apple&#8217;s App Store, Google&#8217;s Android Market, and a few more) is of great help against malware, for several reasons:</p>
<ul>
<li><strong>Application vetting</strong>. On an application store, applications are vetted against a policy. The process depends greatly on the store, with Apple&#8217;s process being the most well-known, mostly because the policy it enforces is not compleltely clear, and the process is fully opaque. In all cases, the existence of a vetting process provides a good place to attempt the identification and rejection of malware.</li>
<li><strong>Application banning</strong>. As soon as an application is recognized as malware, it can be banned from an application store, immediately stopping its distribution. This also allows application store managers to analyze the application and enhance their vetting process to better catch similar malware.</li>
<li><strong>Kill switches</strong>. That&#8217;s the extra mile after banning, which is (confirmed?) implemented in both Apple&#8217;s and Google&#8217;s application stores. Once an application is banned from the store, it can be removed or deactivated on all devicess, as soon as they connect to the store (usually to check for updates). This also will lead to a reduction of the impact of malware.</li>
<li><strong>Other enforcement means</strong>. Some people argue that automated kill switches are overkill. Alternatives are possible, which may show up if the amount of malware rises significantly. For instance, once an application is identified as malware, a popup could be used to warn the user and propose the deactivation/removal of the application.</li>
</ul>
<p>My background is on the vetting process, and more specifically, on the security analysis of mobile applications. At Trusted Labs, I have practiced several types of analysis of applications, including:</p>
<ul>
<li><strong>In-depth white-box evaluations</strong>. That&#8217;s the best kind of analysis, in which the evaluator has access to the application&#8217;s source code and related documentation, in addition to the running code. Hiding malware is possible, of course, but it requires significant effort, and it is very hard to use the same technique twice (at least with the same evaluator/lab). However, such evaluations are very expensive, they require the developer to provide source code, and they are basically used only for really sensitive applications, like payment applications.</li>
<li><strong>In-depth black-box evaluations</strong>. Here, the evaluator only gets a copy of the application (<em>i.e.</em>, binary code only), together with the user documentation. Usually, such an evaluation is performed in a fixed, limited time, and it relies heavily on the intuition of the evaluator. The process usually starts with some automated analysis of the application, at least a simple one. For instance, knowing which permissions are requested and in which APIs they are used already provides an interesting point of view on the application. For instance, it may help identify an application that requests access to Internet and read access to contact data, and combines them to dump its user&#8217;s contacts to a spam vendor. The costs are usually lower than for white-box evaluations, and all necessary information is available in application stores. However, such processes remain expensive, and should be reserved for some applications (for instance, suspicious applications, applications that require sensitive permissions, or high-profile applications.</li>
<li><strong>Shallow black-box evaluations</strong>. In that case, cost is the priority, and the process is likely to be mostly automated. Here, static code analysis is at the heart of the process. Here, the objective is to design an automated analysis with an extremely low rate of false negatives (applications that violate the policy and pass the evaluation), and the lowest possible rate of false positives (applications that follow the policy and are rejected by the evaluation). Of course, the policy must also be flexible enough to allow the most common behaviors to pass the evaluation. Here, the cost of the static analysis is very low, and the actual cost depends on the proportion of applications that need to undergo an in-depth evaluation.</li>
</ul>
<p>When we discussed malware at the Barcamp, I claimed (live and on Twitter) that static analysis could be effective, and it seems that not everybody agreed with me, in particular <a href="http://twitter.com/#!/heathcr" class="liexternal">Craig Heath</a>, although we reach similar conclusions about <a href="http://franklinheath.co.uk/2010/12/30/2011-not-the-year-of-mobile-malware/" class="liexternal">mobile malware in 2011</a>.</p>
<p>The basic reason for our disagreement may be the definition of static analysis, and what the target is. Here are a few things about static analysis:</p>
<ul>
<li>Static analysis is about analyzing <em>binary</em> code. We want to analyze the code that will actually run on the devices, so let&#8217;s not bother with source code analysis: source code analysis is a tool for developers, basically useless in application stores.</li>
<li>Static analysis is about <em>proving</em> properties on this binary code. The notion of proof is important, as we want to make sure that the applications that pass static analysis actually satisfy all policy rules.</li>
<li>Static analysis works much better on <em>structured</em> code, <em>i.e.</em>, on code on which we have some guarantees, like Java bytecode. We can do really interesting things on bytecode-based frameworks, because the technology is now ready. On native code, the problem is more difficult, because it is much more difficult to prove properties. Nevertheless, technology keeps evolving, and native code analysis is progressing.</li>
<li>Static analysis should not be <em>fully</em> automated. Instead, it should be complemented by other ways to verify what it wasn&#8217;t able to prove. Of course, the a good tool will reject few applications and require llittle human involvement, but it is always necessary to monitor the developer practices and manually approve or reject some applications.</li>
<li>Static analysis should <em>evolve</em>, or at least the policies it checks should evolve. Policies usually evolve by replacing a very restrictive policy by a less restrictive and more precise one. On the first evaluations I did, a typical rule was &#8220;The application should not connect to Internet&#8221;; it beecame &#8220;The application should only connect to its issuer&#8217;s domain&#8221;, and then to &#8220;The application should only connect to statically defined domains&#8221;, to basically no rule (although in practice the last one should be satisfied by most applications, which only connect to a few fixed sites). Such changes follows the current practice, as well as the evolution of trust between users/operators/distributors and developers.</li>
</ul>
<p>So, static analysis is a way to exploit the adapted <a href="http://en.wikipedia.org/wiki/Business_intelligence" rel="nofollow" class="liwikipedia">Business Intelligence</a> techniques that Craig Heath rightly favors. What I have noticed over several years of using static analysis tools in evaluations is that they greatly simplify the work of a human evaluator, but they have a hard time dealing with two things: very complex applications, and applications that are &#8220;borderline&#8221; with respect to the policy. Because of that, a human being needs to validate its results (at least, the rejections). As we know, borderline applications often are the disruptive ones, and it is not acceptable to reject them.</p>
<p>In 2011, we will see what kind of malware comes up, but at least on some platforms, static analysis will play a role in the application vetting process, making it much more efficient on the simple applications, and allowing evaluators to spend more time in the vetting of sensitive/complex applications. And in the end, the infrastructure is quite likely to win the fight with very limited impact on the end users. So, like in the past 10 years, we are not yet on the year of mobile malware. </p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2011/01/20/2011-the-year-of-mobile-malware-nope/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Java Card RMI is useless</title>
		<link>http://javacard.vetilles.com/2007/01/28/java-card-rmi-is-useless/</link>
		<comments>http://javacard.vetilles.com/2007/01/28/java-card-rmi-is-useless/#comments</comments>
		<pubDate>Sun, 28 Jan 2007 21:08:14 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[Framework]]></category>
		<category><![CDATA[IdÃ©es reÃ§ues]]></category>
		<category><![CDATA[Java Card 2.x]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/2007/01/28/java-card-rmi-is-useless/</guid>
		<description><![CDATA[When we first presented GemXpresso in 1997, it was made by a bunch of (Gemplus) researchers. We were all very happy, because it was a very nice card, and because it was very simple to program, thanks to Remote Method Invocation (RMI), which freed us from these damn APDU&#8217;s. It was possible to generate automatically [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>When we first presented GemXpresso in 1997, it was made by a bunch of (Gemplus) researchers. We were all very happy, because it was a very nice card, and because it was very simple to program, thanks to Remote Method Invocation (RMI), which freed us from these damn APDU&#8217;s. It was possible to generate automatically the code that interfaces the card application with its client application on the terminal.<br />
<span id="more-56"></span><br />
10 years later, RMI on Java Card has been a great success. It generated a few publications, got us to San Francisco and JavaOne a few times, and it was even incorporated in the Java Card 2.2 standard as a <em>mandatory</em> feature, a few years ago. Even better, it was mentioned in <a href="http://www.jcp.org/en/jsr/detail?id=177" title="Security and Trust Services for Java ME" class="liexternal">JSR-177</a> as one of the ways to communicate between a phone and a smart card. This made us all very proud.</p>
<p>But nobody ever used it. Nobody.</p>
<p>Why so? Because it solved the wrong problems. My passion at the time was to make developers&#8217; life easier, and this passion was shared by many other members of the original GemXpresso team. We believed that making smart card application development available to many developers in a simple way would necessarily generate the next &#8220;killer app&#8221;. Of course, it didn&#8217;t, because the problem is not with the developers.</p>
<p>A smart card is not the Internet, and the next killer app will come from somebody who has a great idea about a novel way to establish trust between two entities, or something like that. And that guy will then subcontract the development to one of the happy few guys in the world who know how to write good Java Card code, optimized and secure.</p>
<p>So now, Java Card RMI mostly represents a few kilobytes of dead code in every Java Card on the market. Maybe that one of your cards is able to do RMI and you don&#8217;t even know it. Don&#8217;t worry for the future, the designers of Java Card RMI are still very much involved in the design of Java Card 3. We will most likely make a few mistakes in our design, but not this one.</p>
<p>To end with a happy note, it has been said that Java Card 3 would be fully backward compatible with Java Card 2.x, and it most likely will be true. Java Card RMI will then lie dormant in many more cards of the next generation. And maybe someone will use it.</p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2007/01/28/java-card-rmi-is-useless/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>About security in evaluations</title>
		<link>http://javacard.vetilles.com/2006/11/10/about-security-in-evaluations/</link>
		<comments>http://javacard.vetilles.com/2006/11/10/about-security-in-evaluations/#comments</comments>
		<pubDate>Fri, 10 Nov 2006 21:03:07 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[Discussions]]></category>
		<category><![CDATA[IdÃ©es reÃ§ues]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/2006/11/10/about-security-in-evaluations/</guid>
		<description><![CDATA[A few days ago, the final verdict was published in the trial following a plane crash that killed 87 persons in 1992. Nobody was finally condemned, as the judge estimated that they had not committed any legal fault. However, an article in today&#8217;s &#8220;Le Monde&#8221; (in French) debates on the very usefulness of such trials. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>A few days ago, the final verdict was published in the trial following a plane crash that killed 87 persons in 1992. Nobody was finally condemned, as the judge estimated that they had not committed any legal fault. However, <a href="http://www.lemonde.fr/web/article/0,1-0,36-832674,0.html" class="liexternal">an article</a> in today&#8217;s &#8220;Le Monde&#8221; (in French) debates on the very usefulness of such trials. While reading the article, I found many similarities between this issue and the security evaluation of smart cards.</p>
<p>The article discusses the fact that, when a plane crash occurs (at least in France), two investigations take place: an administrative investigation, which focuses on the technical aspects of the crash, and a judiciary investigation, which focuses on the legal aspects. In that particular case, the administrative investigation lasted 2 years, and the legal one 14. The author, Jean Paries, who headed the administrative investigation, claims that the legal investigation did not identify any new element, because the administrative investigation was very thorough and left no element behind.</p>
<p>Of course, this point is open to discussion. However, it is not his major point here. His major issue is that that there is a systematic legal investigation, in parallel with the technical investigation, and that the prospect of legal consequences makes the parties involved more careful about following the rules than willling to really improve security.</p>
<p>The first issue he mentions applies mostly to legal investigations. The airline industry traditionnally tries to identify vulnerabilities in a proactive way, not waiting for an accident to take action. However, since there is always a delay between the detection of an issue and the corresponding action, companies expose themselves to the accusation of &#8220;You knew it, and you did nothing about it.&#8221; The temptation is therefore quite strong not to perform any proactive action.</p>
<p>Similar issues may occur in security evaluations. If a card manufacturer knows about a vulnerability, they may not be encouraged to do anything about it, because the laboratory (in particular in a white-box evaluation) may then identify the countermeasure, &#8220;reverse engineer&#8221; the attack, and apply it. In that case, the temptation is to keep newly identified vulnerabilities secret as long as possible, rather than include protections in products as soon as possible. The second issue applies more generally, and in particular in the context of security evaluations. Here is a rough translation of the argument:</p>
<blockquote><p>
In any complex, and therefore incertain, system, risk management is based on a principle of individual responsibility. We expect from each individual, proportionally to its competencies, an understanding of the situation and of the consequences of their actions, and decisions based on the ethics of security that is one of the foundations of their job. Making individual failures a legal issue is intended to increase the conscience of this responsibility. It has exactly the opposite effect. The priority of each individual is not to manage the risk professionally, but to minimize their personal risk of indictment. The personal responsibility is replaced by the responsibility toward law enforcement. The culture of security is undermined by self-protecting attitudes, generalized caution, dissimulation. And most of all, the inflation of regulation.
</p></blockquote>
<p>This is of course where similar issues occur in security evaluations. The overall objective of a security evaluation should be to regularly increase the overall security of systems. Instead, most evaluations are performed against a predetermined checklist. In such contexts, the creativity of evaluators is not encouraged. If an evaluated manufacturer want to discard a vulnerability, they will not claim that &#8220;this vulnerability is not significant, because it cannot be exploited.&#8221; Instead, they will claim that &#8220;this vulnerability is not included in the requirements document.&#8221; In such a case, we witness the same shift from an objective of security improvement to an objective of regulation enforcement.</p>
<p>The issue is of course that regulations cannot evolve as fast as the state-of-the-art attacks. The situation of the smart card industry is in that respect quite unique, because there is no notion of <em>full disclosure</em> in the industry, and it is therefore quite safe to rely on regulations that are not regularly updated. This may last for many more years, but it my also stop quite rapidly if attacks start occurring in the wild, and smart card attacks gather more interest from security professionals.</p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2006/11/10/about-security-in-evaluations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>There could be millions of Java Card applications</title>
		<link>http://javacard.vetilles.com/2006/10/22/millions-of-applications/</link>
		<comments>http://javacard.vetilles.com/2006/10/22/millions-of-applications/#comments</comments>
		<pubDate>Sun, 22 Oct 2006 19:39:09 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[IdÃ©es reÃ§ues]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/2006/10/22/millions-of-applications/</guid>
		<description><![CDATA[The Java Card platform is the most widely used application platform in the world, with around 2 billion cards deployed. However, it remains very different from the other platforms such as Windows or even MIDP. However, for interoperability reasons, most applications are heavily standardized (for instance in the banking and identity markets), which reduces even [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>The Java Card platform is the most widely used application platform in the world, with around 2 billion cards deployed. However, it remains very different from the other platforms such as Windows or even MIDP. However, for interoperability reasons, most applications are heavily standardized (for instance in the banking and identity markets), which reduces even further the variety.</p>
<p>In the GSM world, things are different, and there are many more applications: some operators have developed hundreds of applications. However, the number of applications remains very small. The main difference is of course that end users cannot choose the applications on their cards, that they cannot load applications freely, and of course that they cannot develop applications on their cards.</p>
<p>Such a market is extremely hostile to developers. Most applications are developed by the smart card manufacturers, rather than by independent software vendors. This means that the main motivation for these applications is to sell smart cards and associated services.  In addition, the teams thinking about new applications and business models are all from the same school of thinking, which does not help.</p>
<p>We can hope that the model will change in the future, at least with the next generation Java Card platforms. But we need to remember than it is not very useful to get Java Card closer to mainstream Java (and Java developers) if application deployment model is not accessible to these developers. In the meantime, don&#8217;t expect millions of Java Card applications. A few hundreds will do, and few people will know about them.</p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2006/10/22/millions-of-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Smart card security requirements are too high</title>
		<link>http://javacard.vetilles.com/2006/10/08/too-much-security/</link>
		<comments>http://javacard.vetilles.com/2006/10/08/too-much-security/#comments</comments>
		<pubDate>Sun, 08 Oct 2006 15:29:36 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[IdÃ©es reÃ§ues]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/2006/10/08/too-much-security/</guid>
		<description><![CDATA[As a security evaluator, I often hear vendors complaining that the security requirements are too high, and that they cost them a lot for nothing. These complaints are easy to dismiss on the grounds that they apply equally to all vendors, but there are other consequences, which are more difficult to dismiss: Issuers with higher [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>As a security evaluator, I often hear vendors complaining that the security requirements are too high, and that they cost them a lot for nothing. These complaints are easy to dismiss on the grounds that they apply equally to all vendors, but there are other consequences, which are more difficult to dismiss:</p>
<ul>
<li>Issuers with higher security requirements may have less choice, since fewer products meet their requirements. In addition, they can expect higher prices. If no attack occurs to support the requirements, the position is difficult to sustain business-wise.</li>
<li>High security requirements globally raise the price of smart cards, and may favor competing technologies</li>
</ul>
<p>The issue therefore becomes to figure out which level of security is required, which is not an easy task. It basically depends on the available vulnerabilities, and on the level of risk that is acceptable. We can consider the current situation in three vertical domains:</p>
<ul>
<li><strong>Pay-TV</strong>. In this field, the level of vulnerability is quite high, in particular because the cards are usually offline. The same content is broadcast to all customers, and the card is used to make this content available. The level of acceptable risk is quite high, since it only represents a loss of business. Nevertheless, the security requirements are high, most likely the highest in the smart card market. The reason is that the Pay-TV industry faces organized attackers, with a sound business model (make fake cards and sell them).</li>
<li><strong>Banking</strong>. In this field, the level of vulnerability is average, because the transactions performed with cards are verified in the backend. The level of acceptable risk is low, because banking card fraud usually implies stealing money from somebody. However, there have been very few actual attacks on banking smart cards, and it is therefore difficult to assess the profile of potential attackers. The level of security remains quite high, but it varies greatly from issuer to issuer.</li>
<li><strong>Telecom</strong>. For SIM cards, the level of vulnerability is quite low, because all cards are connected constantly, and many verifications are performed at the network level. In addition, the level of acceptable risk is quite high, since the main attack considered consist in using the network for free. The level of security for SIM cards is therefore quite low.</li>
</ul>
<p>This all looks quite nice and consistent: Pay-TV operators are paranoid because they are under constant attack; bankers don&#8217;t take risks; telecom operators favor performance until a problem occurs. The problem is that the situation may not remain like that forever, and smart cards are not like Windows: generally, no patching is possible after issuance. Banking cards are often issued for two years, but products can be issued two or three years after their initial certification: this means that the products must resist to attacks available four or five years after their certification. The issues are similar, or even worse in the other domains: SIM cards are usually never changed, unless you switch operator, and pay-TV operators are reluctant to change their cards because of the cost. Overall, it is reasonable to believe that smart card products should remain secure for at least five years. So let&#8217;s take a quick look at what the markets will look like five years from now:</p>
<ul>
<li><strong>Pay-TV</strong>. In this field, things may look a bit better. First, set-top boxes are more and more likely to be connected (think of all the people receiving TV through DSL), which means that controls are possible on the network. Then, there may be some diverification, for instance through Mobile TV, which is also connected. In both cases, the security requirements may go down. Of course, standard satellite/cable products may still be vistims of organized fraudsters.</li>
<li><strong>Banking</strong>. One reason why banking smart cards are not attacked is that it is so much easier to attack magstripe cards. Once the migration to EMV smart cards will be more general, there will be less magstripe cards to attack, and smart cards may become interesting targets. If attackers find good business models, they can hire the guys who used to crack Pay-TV cards and do some damage.</li>
<li><strong>Telecom</strong>. With convergence, SIM cards are becoming multiapplicative platforms, and they may host things like mobile payment or mobile TV applications. Of course, they will remain connected, but attackers may discover business models that use the SIM card without trying to make free calls, and this is likely to increase the level of risk.</li>
</ul>
<p>Overall, it is very difficult for issuers to figure out what level of security requirements is requirred, and it remains an individual decision. Every company has security guys rambling about upcoming catastrophies, and business guys rambling about useless security measures. However, very few take the time to frequently review their security requirements, and more importantly to confront them with their five-year business plan. So the definition of security requirements will remain a guessing game, and vendors will have to complain again. </p>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2006/10/08/too-much-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Card cards are less secure than native cards</title>
		<link>http://javacard.vetilles.com/2006/09/04/java-card-is-less-secure/</link>
		<comments>http://javacard.vetilles.com/2006/09/04/java-card-is-less-secure/#comments</comments>
		<pubDate>Mon, 04 Sep 2006 13:56:10 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[IdÃ©es reÃ§ues]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/2006/09/04/java-card-is-less-secure/</guid>
		<description><![CDATA[This argument is often used by Java Card foes, often in conjunction to the &#8220;Java Card is slow&#8221; argument. The statement is effective, because most people don&#8217;t even bother to look deeper into its meaning. Here, we do not look at detailed figures and analyses, but we do look at possible reasons why this statement [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>This argument is often used by Java Card foes, often in conjunction to the &#8220;Java Card is slow&#8221; argument. The statement is effective, because most people don&#8217;t even bother to look deeper into its meaning. Here, we do not look at detailed figures and analyses, but we do look at possible reasons why this statement may (or not) be true.</p>
<p><span id="more-4"></span>The main differences between Java Card and a native operating system are not related to Java, but to the its basic properties. A Java Card card is programmable, interoperable, and to a lesser extent, open, and the consequences of these properties are significant:</p>
<ul>
<li><span style="font-weight: bold">Programmable</span>. In Java Card, it is possible to load code into the card. There are other systems in which this is possible, including proprietary ones (a few years ago, it was possible to dynamically load SIM Toolkit applications in many proprietary SIM cards). Naturally, this ability includes a lot of risks, in particular since it allows attackers to load their own applications on the cards they attack.</li>
<li><span style="font-weight: bold">Interoperable</span>. A Java Card application is supposed to behave in the same way on all Java Card implementations. This property is interesting for issuers, and also for attackers, who may be able to reuse the same attack on different platforms.</li>
<li><span style="font-weight: bold">Open</span>. Java Card is not completely open, since the source of its reference implementation is not available to the general public. However, this reference implementation is available in binary form</li>
</ul>
<p>Then, there are a few additional properties of Java Card that may make it less secure:</p>
<ul>
<li><span style="font-weight: bold">Complex</span>. Java Card is complex, and complexity is not good for security. However, the core security measures in Java Card are not that complex, and the risks are mostly functional.</li>
<li><span style="font-weight: bold">Available</span>. For many vendors, it is far easier to buy a development kit for their Java Card implementation than for their proprietary cards. Attackers therefore have more opportnity to get cards to prepare their attacks.</li>
</ul>
<p>All these reasons seem to imply that Java Card cards are less secure than native cards. But of course, they also imply that a Java Card card offers many more possibilities to issuers, for instance post-issuance application loading, and a relative independence from the manufacturer. In addition, these reasons also imply some advantages:</p>
<ul>
<li><span style="font-weight: bold">Programmable</span>. With Java Card, applications can evolve independently of the platform. This may allow an application provider to strengthen the security of an application aftr its issuance. Even more easily, the deployed application can evolve at a rapid pace, without requiring new masks at each iteration.</li>
<li><span style="font-weight: bold">Interoperable</span>. Since application are portable, some countermeasures can be implemented at the application level. For instance, redundancy countermeasures are difficult to put in place. Developers are more likely to do it on portable code, because they can monitor the amount of work to be performed</li>
<li><span style="font-weight: bold">Open</span>. The Java Card specifications have been refined for years, and the core specifications now take into account minute details and minor security issues. These specifications have also been reviewed in great details by security researchers. Some issues were even identified while building a formal model of the Virtual Machine.</li>
<li><strong>Complex</strong>. The complexity of Java Card also means that subtle things are possible. For instance, the sharing model is complex, but it also make possible interesting collaboration schemes between applications, while keeping a high level of security.</li>
<li><strong>Available</strong>. The large availability of development kits does not apply only to attackers, but also to students, security researchers, <em>etc</em>. This openness is good for Java Card.</li>
</ul>
<p>The conclusion is that the above statement is not generally true. A card that includes Java Card also includes a few additional vulnerabilities, but they are well-known, and countermeasures exist for most of them. And in many cases, these vulnerabilities are balanced by the possibility to upgrade the application code more frequently.</p>
<p>I would therefore propose a few different statements:</p>
<ul>
<li><span style="font-style: italic">Programmable systems include more risks than closed systems.</span><br />
This is the one that Java Card foes use most, by confusing the general properties of programmable systems with the specific properties of Java Card.</li>
<li><span style="font-style: italic">In the long run, open systems are more secure than proprietary systems.</span><br />
This issue is not specific to smart cards. For security, openness, experience, and peer review do help.</li>
<li><span style="font-style: italic">Java Card is the most secure programmable system available for smart cards.</span><br />
This is of a personal opinion, most likely not shared by <a href="http://en.wikipedia.org/wiki/MULTOS" title="Multos on Wikipedia" rel="nofollow" class="liwikipedia">Multos</a> people. But I believe that the amount of work put in the develoment, securization, and evaluation of Java Card systems largely surpasses whatever its competitors, including Multos, have done.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://javacard.vetilles.com/2006/09/04/java-card-is-less-secure/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
