<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://keepitlocked.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>KeepItLocked.net : Applets, Software Security</title><link>http://keepitlocked.net/archive/tags/Applets/Software+Security/default.aspx</link><description>Tags: Applets, Software Security</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP2 (Build: 20611.960)</generator><item><title>A Brief History of Applet Security</title><link>http://keepitlocked.net/archive/2007/10/10/a-brief-history-of-applet-security.aspx</link><pubDate>Wed, 10 Oct 2007 20:23:00 GMT</pubDate><guid isPermaLink="false">a3f75fb5-0505-4d35-9795-aaa2ed659a71:13</guid><dc:creator>Alex</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://keepitlocked.net/rsscomments.aspx?PostID=13</wfw:commentRss><comments>http://keepitlocked.net/archive/2007/10/10/a-brief-history-of-applet-security.aspx#comments</comments><description>&lt;p&gt;A vast amount of server-side development is J2EE. Huge, multi-national corporations run on it exclusively. But, it wasn't always that way….
&lt;/p&gt;
&lt;p&gt;Back in the early days of Java, the client-side Applet was king. The partnership with Netscape thrust the Java onto the world stage. &lt;a href="http://www.wired.com/wired/archive/3.12/java.saga.html" mce_href="http://www.wired.com/wired/archive/3.12/java.saga.html"&gt;Early&lt;/a&gt;
		&lt;a href="http://www.itworld.com/AppDev/716/swol-1195-java/" mce_href="http://www.itworld.com/AppDev/716/swol-1195-java/"&gt;press&lt;/a&gt;
		&lt;a href="http://www.news.com/JavaSoft-debuts-Java-1.0/2100-1001_3-202980.html?tag=item" mce_href="http://www.news.com/JavaSoft-debuts-Java-1.0/2100-1001_3-202980.html?tag=item"&gt;releases&lt;/a&gt; all focused on the web experience provided by Applets.
&lt;/p&gt;
&lt;p&gt;But there was this pesky security issue - due to the fact that Java Applets are distributed and run through a browser, they can encounter some nasty code on the web. In order to deal with evil code, Applets are run in a &lt;a href="http://en.wikipedia.org/wiki/Sandbox_%28computer_security%29" mce_href="http://en.wikipedia.org/wiki/Sandbox_(computer_security)"&gt;Sandbox&lt;/a&gt; with limited permission. However, Applet developers said that this Sandbox was too restrictive. No access to the file system, or the clipboard, or native code, or really anything useful.
&lt;/p&gt;
&lt;p&gt;So, in Java 1.1, you could digitally sign applets so that they were trusted. This would give the Applet full permission, and theoretically users would manage their own trusted key store.
&lt;/p&gt;
&lt;p&gt;In Java 2, Sun added Certificate Authorities to the Applet specification, so that anyone with enough money to pony up could create a universally trusted Applet. This was tempered by the fact that now the user could create a policy to restrict these signed Applets to a specific set of permissions. So signed Applets ask for permission to run, and are granted AllPermissions, unless there is a specific client-side policy for that Applet, which takes precedence. But no one likes configuring security policies, do they? Remember, this is the unwashed masses of browser users, and they don't know a Java policy file from a can of &lt;a href="http://en.wikipedia.org/wiki/Shinola" mce_href="http://en.wikipedia.org/wiki/Shinola"&gt;Shinola&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;Enter the Java Plugin, which now handles Applets for most browsers. In the previous 1.3 version of the Plugin, Applets signed with invalid certificates (self-signed or expired) would simply fail to load. If the signing certificate was valid, the user got a dialog box asking whether to run the Applet.
&lt;/p&gt;
&lt;p&gt;In the Java Plugin 1.4, the behavior was changed to load Applets even with invalid certificates. The only difference between Applets with valid signatures and invalid signatures is the warning messages.
&lt;/p&gt;
&lt;p&gt;Applets signed with an invalid certificate:
&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://keepitlocked.net/images/keepitlockednet/101007_2015_ABriefHisto1.png" mce_src="http://keepitlocked.net/images/keepitlockednet/101007_2015_ABriefHisto1.png" alt=""&gt;
	&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://keepitlocked.net/images/keepitlockednet/101007_2015_ABriefHisto2.png" mce_src="http://keepitlocked.net/images/keepitlockednet/101007_2015_ABriefHisto2.png" alt=""&gt;
	&lt;/p&gt;
&lt;p&gt;Applets signed with a valid certificate:
&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://keepitlocked.net/images/keepitlockednet/101007_2015_ABriefHisto3.png" mce_src="http://keepitlocked.net/images/keepitlockednet/101007_2015_ABriefHisto3.png" alt=""&gt;
	&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://keepitlocked.net/images/keepitlockednet/101007_2015_ABriefHisto4.png" mce_src="http://keepitlocked.net/images/keepitlockednet/101007_2015_ABriefHisto4.png" alt=""&gt;
	&lt;/p&gt;
&lt;p&gt;To me, this represents a tremendous over-simplification. Signed Applets now basically use the same, all-or-nothing security model as standard executables!
&lt;/p&gt;
&lt;p&gt;The error message for an unsigned .exe file (in IE7):
&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://keepitlocked.net/images/keepitlockednet/101007_2015_ABriefHisto5.png" mce_src="http://keepitlocked.net/images/keepitlockednet/101007_2015_ABriefHisto5.png" alt=""&gt;
	&lt;/p&gt;
&lt;p&gt;At least this has a red shield (bad) rather than an orange shield (maybe bad)!
&lt;/p&gt;
&lt;p&gt;Nowadays, in addition to the huge amount of server-side Java development, there is Java on mobile devices, smart cards, and entire operating systems in Java. But the original thing that made Java tick – the Applet – is becoming less and less relevant every day, and I can't help thinking it's due to the fatally flawed security model which has now almost completely lost its teeth.
&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;References
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Java Technology: The Early Years: &lt;a href="http://java.sun.com/features/1998/05/birthday.html" mce_href="http://java.sun.com/features/1998/05/birthday.html"&gt;http://java.sun.com/features/1998/05/birthday.html&lt;/a&gt;
	&lt;/p&gt;
&lt;p&gt;Java 2 Platform Security: &lt;a href="http://www.informit.com/articles/article.aspx?p=433382&amp;amp;seqNum=2" mce_href="http://www.informit.com/articles/article.aspx?p=433382&amp;amp;seqNum=2"&gt;http://www.informit.com/articles/article.aspx?p=433382&amp;amp;seqNum=2&lt;/a&gt;
	&lt;/p&gt;
&lt;p&gt;Using JDK 1.1 Signed Applets with Java Plugin: &lt;a href="http://java.sun.com/products/plugin/1.2/docs/signed.html" mce_href="http://java.sun.com/products/plugin/1.2/docs/signed.html"&gt;http://java.sun.com/products/plugin/1.2/docs/signed.html&lt;/a&gt;
	&lt;/p&gt;
&lt;p&gt;Java Security, Evolution and Concepts: &lt;a href="http://java.sun.com/products/plugin/1.2/docs/signed.html" mce_href="http://java.sun.com/products/plugin/1.2/docs/signed.html"&gt;http://java.sun.com/products/plugin/1.2/docs/signed.html&lt;/a&gt;
	&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://keepitlocked.net/archive/2007/10/10/a-brief-history-of-applet-security.aspx&amp;amp;;subject=A+Brief+History+of+Applet+Security" target="_blank" title = "Post http://keepitlocked.net/archive/2007/10/10/a-brief-history-of-applet-security.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://keepitlocked.net/archive/2007/10/10/a-brief-history-of-applet-security.aspx&amp;amp;;title=A+Brief+History+of+Applet+Security" target="_blank" title = "Post http://keepitlocked.net/archive/2007/10/10/a-brief-history-of-applet-security.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://keepitlocked.net/archive/2007/10/10/a-brief-history-of-applet-security.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://keepitlocked.net/archive/2007/10/10/a-brief-history-of-applet-security.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://keepitlocked.net/archive/2007/10/10/a-brief-history-of-applet-security.aspx&amp;amp;title=A+Brief+History+of+Applet+Security" target="_blank" title = "Post http://keepitlocked.net/archive/2007/10/10/a-brief-history-of-applet-security.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://keepitlocked.net/archive/2007/10/10/a-brief-history-of-applet-security.aspx&amp;amp;;title=A+Brief+History+of+Applet+Security" target="_blank" title = "Post http://keepitlocked.net/archive/2007/10/10/a-brief-history-of-applet-security.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://keepitlocked.net/archive/2007/10/10/a-brief-history-of-applet-security.aspx&amp;amp;;title=A+Brief+History+of+Applet+Security&amp;amp;;top=1" target="_blank" title = "Post http://keepitlocked.net/archive/2007/10/10/a-brief-history-of-applet-security.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://keepitlocked.net/aggbug.aspx?PostID=13" width="1" height="1"&gt;</description><category domain="http://keepitlocked.net/archive/tags/Software+Security/default.aspx">Software Security</category><category domain="http://keepitlocked.net/archive/tags/Java/default.aspx">Java</category><category domain="http://keepitlocked.net/archive/tags/Applets/default.aspx">Applets</category></item></channel></rss>