<?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>toxicsoftware.com &#187; AquaticPrime</title>
	<atom:link href="http://toxicsoftware.com/tag/aquaticprime/feed/" rel="self" type="application/rss+xml" />
	<link>http://toxicsoftware.com</link>
	<description>RANDOMIZE USR 0</description>
	<lastBuildDate>Sun, 01 Aug 2010 17:49:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>AquaticPrime Aftermath</title>
		<link>http://toxicsoftware.com/aquaticprime-aftermath/</link>
		<comments>http://toxicsoftware.com/aquaticprime-aftermath/#comments</comments>
		<pubDate>Fri, 09 Jun 2006 02:36:07 +0000</pubDate>
		<dc:creator>schwa</dc:creator>
				<category><![CDATA[Default]]></category>
		<category><![CDATA[AquaticPrime]]></category>
		<category><![CDATA[Cracks]]></category>
		<category><![CDATA[MacSB]]></category>
		<category><![CDATA[Piracy]]></category>

		<guid isPermaLink="false">http://toxicsoftware.com/blog/aquaticprime-aftermath/</guid>
		<description><![CDATA[Well it turned out that my posting yesterday caused quite a storm in a teacup. The macsb mailing list has probably seen more activity in a day that it does in a month. I&#8217;ve learnt quite a few things from &#8230; <a href="http://toxicsoftware.com/aquaticprime-aftermath/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Well it turned out that my <a href="/aquaticprime-warning/">posting</a> yesterday caused quite a storm in a teacup. The macsb mailing list has probably seen more activity in a day that it does in a month.</p>

<p>I&#8217;ve learnt quite a few things from this:</p>

<p>AquaticPrime works just as intended. The flaw I highlighted yesterday isn&#8217;t a flaw because AquaticPrime wasn&#8217;t designed to defeat attacks of the kind described. Although nowhere on the AquaticPrime website or inside the documentation will you find any of this discussed. We can generously put this down to an innocent omission.</p>

<p>Even though this isn&#8217;t a flaw it seems great efforts are made in people&#8217;s code to prevent runtime attacks. Remember, it isn&#8217;t a flaw, it is a design decision.</p>

<p>Paradoxically, even though my posting failed to identify a flaw in AquaticPrime (so no harm done right?), several people are rather quite angry that I have discussed it in the open. Apparently openly criticising open source software is not allowed. In fact I have been called some very nasty names from one particular AquaticPrime supporter over this.</p>

<p>It seems that some developers have given up the fight with pirates over runtime/binary attacks. Granted this is a really tough fight to fight, but i find it very interesting that the recommended tactic is to just give up. I think this is wildly underestimating pirates and especially the more casual pirates. The argument seems to be that the casual pirates will not bother finding/installing/running runtime cracks. And that spending effort trying to defeat the hardcore pirate is a waste of time.</p>

<p>However, with all the file sharing sites/software available to anyone today, casual pirates will be able to find cracks rather easily. And casual pirates probably won&#8217;t have any problems running these cracks on their machines (after all they&#8217;re probably already running keygens for their stolen Adobe software). Giving this fight up seems to be giving up a little too easily.</p>

<p>So finally be really careful when claiming that the &#8220;emperor has no clothes&#8221;. Such claims will never be received in a positive manner, regardless of whether the emperor is indeed stark naked or in fact wearing the latest, most advanced, invisible wardrobe.</p>
]]></content:encoded>
			<wfw:commentRss>http://toxicsoftware.com/aquaticprime-aftermath/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>AquaticPrime Warning</title>
		<link>http://toxicsoftware.com/aquaticprime-warning/</link>
		<comments>http://toxicsoftware.com/aquaticprime-warning/#comments</comments>
		<pubDate>Thu, 08 Jun 2006 02:24:55 +0000</pubDate>
		<dc:creator>schwa</dc:creator>
				<category><![CDATA[Default]]></category>
		<category><![CDATA[AquaticPrime]]></category>
		<category><![CDATA[Cracks]]></category>
		<category><![CDATA[Cryptography]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Software Licensing]]></category>
		<category><![CDATA[Software Registration]]></category>

		<guid isPermaLink="false">http://toxicsoftware.com/blog/aquaticprime-warning/</guid>
		<description><![CDATA[AquaticPrime is a &#8220;secure registration method for your shareware applications, released as free open-source software&#8221;. AquaticPrime uses &#8220;RSA encryption to provide excellent security &#8211; the same that is used to protect government documents&#8221;. This makes it sound like AquaticPrime is &#8230; <a href="http://toxicsoftware.com/aquaticprime-warning/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.aquaticmac.com/">AquaticPrime</a> is a &#8220;secure registration method for your shareware applications, released as free open-source software&#8221;.</p>

<p>AquaticPrime uses &#8220;RSA encryption to provide excellent security &#8211; the same that is used to protect government documents&#8221;. This makes it sound like AquaticPrime is a great solution for Software Developers wanting to prevent piracy by adopting a software licensing scheme. A lot of <a href="http://groups.yahoo.com/group/macsb/">Macintosh Small Business</a> developers are using or are considering using AquaticPrime.</p>

<p>Unfortunately for them, AquaticPrime is incredibly easy to crack. I am not a <a href="http://en.wikipedia.org/wiki/Computer_security">computer security</a> expert and I am definitely not a <a href="http://en.wikipedia.org/wiki/Cracker_%28computing%29">software cracker</a>, but I was able to crack an application that used AquaticPrime in less than thirty minutes with almost no preparation time. In fact, I am pretty sure that my crack will work with almost all applications that use AquaticPrime.</p>

<p>Aquatic Prime uses a technique similar to one discussed by Allan Odgaard on his <a href="http://macromates.com/sigpipe/archives/2004/09/05/using-openssl-for-license-keys/#comment-82">blog</a>. <a href="http://en.wikipedia.org/wiki/Public_key_cryptography">Public Key cryptography</a> techniques are used to generate linked public and a private keys. The private key is kept by the software developer and the public key is shipped inside the application&#8217;s binary. When a user buys a copy of the software, a license file is signed using the private key. The software can then use its public key to verify that the license key was signed by the public key. Someone trying to steal a copy of the software would be unable to forge their own license files because the public key works with one and only one private key.</p>

<p>The technique I used to defeat AquaticPrime involved creating my own private and public keys (using the AquaticPrime utility itself) and then generating a fake license  key (registered to a &#8220;John Doe&#8221;) using the new private key. The trick then was cracking the test application and convincing it to use my public key instead of the real key.</p>

<p>To track the application, I needed a way of writing code that could be executed by the targeted application. Fortunately, there are a plethora of methods to do that on Mac OS X: <a href="http://www.unsanity.com/haxies/ape">Application Enhancer</a>, <a href="http://rentzsch.com/mach_inject/">MachInject</a>, <a href="http://www.cocoadev.com/index.pl?InputManager">InputManagers</a>, and <a href="http://culater.net/software/SIMBL/SIMBL.php">SIMBL</a> plugins are just some of the many ways of forcing third-party applications to run foreign code. I chose to use a SIMBL plugin because I had never used SIMBL before and wanted to learn a little about it. Creating a SIMBL plug-in turned out to be incredibly easy and I had my code running inside the targeted application in just a few minutes. In a couple of minutes more, I had created an object that was masquerading as an <a href="http://aquaticmac.com/guide/validate.php">AquaticPrime</a> object. The final step was to make my masquerading object ignore the application&#8217;s public key and use my fake public key instead. Once this was achieved I loaded my (or rather John Doe&#8217;s) fake license key into the application and found that I had cracked the application.</p>

<p>It really was as simple as that. Of course there were a few WTF moments and application crashes, but nothing unusual during development (especially development of this kind). The code currently only works with AquaticPrime&#8217;s Objective-C interface, but the same principles can be used for the pure C interface too. I have tried this technique on two shareware applications and it worked fine with both. I am reasonably confident that it should work with most AquaticPrime using applications.</p>

<p>The method used to defeat AquaticPrime isn&#8217;t particularly obscure, and in fact is just one of many methods that could be used to defeat it. However this method is particularly nice in that you&#8217;re not really hacking the application using a more brute force method. You&#8217;re merely providing it with bad data, which it then uses to validate your bad license (kind of like Garbage In, Garbage out), in all other ways AquaticPrime is working as normal and is blissfully unaware that it has been cracked. This means that some of the techniques that developers can use to find out if their software has been cracked are impossible.</p>

<p>AquaticPrime is a well written, documented and marketed piece of software. But it suffers from this huge design flaw. AquaticPrime is exceptionally easy to crack, either with this method or with a variety of other, possibly cruder methods. Many of these methods are equally applicable to other registration schemes, so it is somewhat unfair to single AquaticPrime out. But because AquaticPrime provides all the source code and headers to anyone, it makes it really easy for anyone to crack. Although hiding the source code would have been a form of &#8220;<a href="http://en.wikipedia.org/wiki/Security_through_obscurity">security through obscurity</a>&#8220;, this would have at least slowed me down considerable. As it was, I was handed everything I needed to crack this software on a plate. And if I can crack this software in less than 30 minutes, I am sure crackers who do this thing professionally would have had even less trouble.</p>

<p>Even more worrying, this technique doesn&#8217;t just work on a single application, it will work on all applications that use AquaticPrime. I don&#8217;t know how many applications out there use AquaticPrime, but each is vulnerable to the same crack and all would be cracked essentially &#8220;for free&#8221;. There are some things a developer could do to shore up this vulnerability, but in reality most solutions are probably just as easily cracked.</p>
]]></content:encoded>
			<wfw:commentRss>http://toxicsoftware.com/aquaticprime-warning/feed/</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
	</channel>
</rss>
