<?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>Tyler Oderkirk&#039;s Blog &#187; C/C++</title>
	<atom:link href="http://unsyncopated.com/blog/index.php/category/cc/feed/" rel="self" type="application/rss+xml" />
	<link>http://unsyncopated.com/blog</link>
	<description>&#34;Scared money don&#039;t[sic] make money&#34;</description>
	<lastBuildDate>Thu, 27 Jan 2011 05:02:58 +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>Creds101 v0.1 Release</title>
		<link>http://unsyncopated.com/blog/index.php/2010/02/20/creds101-v0-1-release/</link>
		<comments>http://unsyncopated.com/blog/index.php/2010/02/20/creds101-v0-1-release/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 14:38:45 +0000</pubDate>
		<dc:creator>Tyler</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Python programming]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Table of Contents]]></category>

		<guid isPermaLink="false">http://unsyncopated.com/blog/index.php/2010/02/20/creds101-v0-1-release/</guid>
		<description><![CDATA[I&#8217;m happy to announce the first release of a credentials (e.g. &#8220;usernames and passwords&#8221;) management system that I&#8217;ve been working on for the past few weeks. It&#8217;s called Creds101 and this excerpt from the documentation gives some more detail: Creds101 has 2 parts: Software that you run on your computer (the &#8220;host&#8221;) to send commands [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m happy to announce the first release of a credentials (e.g. &#8220;usernames and passwords&#8221;) management system that I&#8217;ve been working on for the past few weeks. It&#8217;s called Creds101 and this excerpt from <a href="http://unsyncopated.com/corral/creds101-0.1/index.html">the documentation</a> gives some more detail:</p>
<hr />Creds101 has 2 parts:</p>
<ol>
<li>Software that you run on your computer (the &#8220;host&#8221;) to send commands to&#8230;</li>
<li>A USB &#8220;token&#8221; which A) encrypts and stores credentials from the host and B) decrypts and displays them on its LCD.</li>
</ol>
<p>Creds101 serves the same purpose as traditional &#8220;password database&#8221; solutions but it is different in two fundamental ways:</p>
<ol>
<li>Credentials aren&#8217;t stored on the user&#8217;s computer &#8211; they&#8217;re stored on a USB &#8220;token&#8221;.</li>
<li>Sensitive credential data <em>cannot be read by malicious software on the user&#8217;s computer</em> &#8211; credentials can only be viewed on the token&#8217;s &#8220;trusted LCD display&#8221;.</li>
</ol>
<hr />
<span id="Contents"><h3>Contents</h3></span>
<div class='toc wptoc'>
<h2>Contents</h2>
<ol class='toc-odd level-1'>
	<li>
		<a href="#Contents">Contents</a>
	</li>
	<li>
		<a href="#Whats_in_v0.1">What's in v0.1?</a>
	</li>
	<li>
		<a href="#Whats_next">What's next?</a>
	</li>
	<li>
		<a href="#What_I_learned">What I learned</a>
	</li>
	<li>
		<a href="#Download__Quickstart">Download / Quickstart</a>
	</li>
	<li>
		<a href="#Further_reading">Further reading</a>
	</li>
</ol>
</ol>
</ol>
</div>
<div class='wptoc-end'>&nbsp;</div>
<span id="What8217s_in_v0.1"><h3>What&#8217;s in v0.1?</h3></span>
<ul>
<li><a href="http://www.methods.co.nz/asciidoc/">AsciiDoc</a>-based documentation including the &#8220;host-&gt;token&#8221; serial command protocol and data-flow diagrams illustrating how credentials are encrypted, stored, decrypted, and displayed by the token.</li>
<li>A <a href="http://docs.python.org/library/unittest.html">unittest</a> test suite which exercises each of the commands accepted by the token. Install <a href="http://twistedmatrix.com/trac/">Twisted</a> and try
<pre class="brush: bash;">PYTHONPATH=src trial src/TestSimulatorToken.py</pre>
</li>
<li>A cross-platform &#8220;token administration&#8221; GUI for storing and retrieving credentials. Try
<pre class="brush: bash;">bin/creds101-admin-gui --use-simulator</pre>
<p>or see screenshot 1.						<div class="flickr-gallery image none"><a href="http://www.flickr.com/photos/55502932@N00/4373389528"><img class="flickr small" title="Screenshot 1 - GUIs" alt="Screenshot 1 - GUIs" src="http://farm5.static.flickr.com/4066/4373389528_7f97d950e4_m.jpg" /></a></div>
					</li>
<li>A command-line &#8220;token administration&#8221; interface. Try
<pre class="brush: bash;">bin/creds101 --help</pre>
</li>
<li>A &#8220;token simulator&#8221; that allows us to 1) develop tests 2) iron out token design issues <em>before</em> coding in C for an embedded platform. Try
<pre class="brush: bash;">bin/creds101-simulator --gui</pre>
<p>or see screenshot 1.</li>
<li>						<div class="flickr-gallery image right"><a href="http://www.flickr.com/photos/55502932@N00/4372493561"><img class="flickr small" title="Photo 2 - Desoldering flash part" alt="Photo 2 - Desoldering flash part" src="http://farm3.static.flickr.com/2709/4372493561_13955be0f6_m.jpg" /></a></div>
					The beginnings of the code for an <a href="http://www.arduino.cc/en/Main/ArduinoBoardDuemilanove">Arduino</a>-based token. Take a look in `src/arduino`. This includes code for&#8230;
<ul>
<li>Receiving commands from the &#8220;host&#8221; via the Arduino&#8217;s FTDI serial-over-USB chip.</li>
<li>Reading and writing data to the 512 bytes of internal EEPROM or an attached SPI <a href="http://www.atmel.com/products/dataflash/default.asp">DataFlash</a> part. See photos 2 and 3.</li>
<li>Displaying text on a <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=9394">SparkFun SerLCD</a> LCD module.</li>
<li>Encrypting and decrypting data with 128-bit AES.</li>
</ul>
</li>
</ul>
<span id="What8217s_next"><h3>What&#8217;s next?</h3></span>
<ul>
<li>						<div class="flickr-gallery image right"><a href="http://www.flickr.com/photos/55502932@N00/4373266740"><img class="flickr small" title="Photo 3 - New leads" alt="Photo 3 - New leads" src="http://farm3.static.flickr.com/2706/4373266740_32369563b4_m.jpg" /></a></div>
					Completing the Arduino token implementation so that we have something that&#8217;s suitable for everyday use.</li>
<li>Completing a thumbdrive-sized token implementation &#8211; the ideal form factor.</li>
<li>The smaller tasks that can be found in the `TODO` file.</li>
</ul>
<span id="What_I_learned"><h3>What I learned</h3></span>
<ul>
<li>How to create slick, source-based docs with the AsciiDoc tool suite. As much as I like MoinMoin markup, the wiki engine itself isn&#8217;t amenable to being invoked from a build automation tool.</li>
<li>GUI design with <a href="http://glade.gnome.org/">Glade</a>, a slick <a href="http://en.wikipedia.org/wiki/Rapid_application_development">RAD</a> tool used by many free software projects.</li>
<li>GUI interaction with <a href="http://www.pygtk.org/">PyGTK</a>. I wrote a well-behaved worker thread that runs alongside the GTK main loop for the token simulator component.</li>
<li>The theory and implementation of &#8220;Secret Sharing&#8221; schemes especially Shamir&#8217;s Secret Sharing Scheme (SSSS). We discarded SSSS in favor of the current &#8220;store-the-key-on-the-host, store-the-ciphertext-on-the-token&#8221; design.</li>
<li>A handful of Python skills&#8230;
<ul>
<li>Finding a script&#8217;s location <em>from within the script</em>. Handy for using `bin/foo -&gt; src/foo.py` symlinks in conjunction with external (e.g. Glade XML) resources.</li>
<li>Python&#8217;s built-in <a href="http://docs.python.org/library/xmlrpclib.html">XML-RPC</a> library. Reconciling UNIX socket semantics with thread semantics gave me fits before I switched to this IPC mechanism.</li>
<li>Steven Bethard&#8217;s superior <a href="http://code.google.com/p/argparse/">argparse</a> module which makes handling subcommands and required positional arguments a breeze compared with Python&#8217;s standard optparse module.</li>
</ul>
</li>
</ul>
<span id="Download__Quickstart"><h3>Download / Quickstart</h3></span>
<p>Creds101 is licensed under the GPL.</p>
<p>Here are the steps to grab the v0.1 source tarball from <a href="http://unsyncopated.com/hg/creds101/">the hgweb interface</a> and take the GUIs for a test drive!</p>
<pre class="brush: bash;">
$ wget http://unsyncopated.com/hg/creds101/archive/0.1.tar.gz
$ tar xzf 0.1.tar.gz
$ cd creds101-0.1
$ bin/creds101-simulator --gui &amp;           # launch the token simulator
$ bin/creds101-admin-gui --use-simulator &amp; # connect to the simulator
</pre>
<span id="Further_reading"><h3>Further reading</h3></span>
<p>You can see our design notes, plans, and a list of similar projects at <a href="https://www.unsyncopated.com/wiki/Creds101">the wiki page</a> but beware the outdated Secret Sharing content.</p>
<p>I&#8217;m accumulating all the research papers, datasheets, and application notes I&#8217;ve encountered during this project in <a href="http://unsyncopated.com/hg/creds101-research_materials/file/tip">a &#8220;research materials&#8221; repository</a>. You might find the contents useful if you&#8217;re trying to choose an AES implementation for an AVR microcontroller or if your project falls into one of these categories: &#8220;cryptographic co-processor&#8221;, &#8220;hardware security module&#8221;, &#8220;embedded secret secret sharing&#8221;, &#8220;ubiquitous/pervasive computer security&#8221;, or &#8220;tamper evidence/proof&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://unsyncopated.com/blog/index.php/2010/02/20/creds101-v0-1-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hats off to cdparanoia&#8217;s UI</title>
		<link>http://unsyncopated.com/blog/index.php/2008/10/02/hats-off-to-cdparanoias-ui/</link>
		<comments>http://unsyncopated.com/blog/index.php/2008/10/02/hats-off-to-cdparanoias-ui/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 03:12:19 +0000</pubDate>
		<dc:creator>Tyler</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://unsyncopated.com/blog/index.php/2009/02/28/hats-off-to-cdparanoias-ui/</guid>
		<description><![CDATA[I recently decided to rip all of my music CDs to a more reliable medium: my hard drive. One of the software tools I&#8217;m using to do this is called cdparanoia. It&#8217;s a solid little app from the venerable Xiph.org multimedia project with an entertaining but informative console interface. An excerpt from `cdparanoia(1)`: OUTPUT SMILIES [...]]]></description>
			<content:encoded><![CDATA[<p>I recently decided to rip all of my music CDs to a more reliable medium: my hard drive.</p>
<p>One of the software tools I&#8217;m using to do this is called <a href="http://www.xiph.org/paranoia/">cdparanoia</a>. It&#8217;s a solid little app from the venerable <a href="http://www.xiph.org">Xiph.org multimedia project</a> with an entertaining but informative console interface. An excerpt from `cdparanoia(1)`:</p>
<pre style="padding-left: 30px;">OUTPUT SMILIES
:-)  Normal operation, low/no jitter
:-|  Normal operation, considerable jitter
:-/  Read drift
:-P  Unreported loss of streaming in atomic read operation
8-|  Finding read problems at same point during reread;
     hard to correct
:-0  SCSI/ATAPI transport error
:-(  Scratch detected
;-(  Gave up trying to perform a correction
8-X  Aborted read due to known, uncorrectable error
:^D  Finished extracting</pre>
<pre style="padding-left: 30px;">PROGRESS BAR SYMBOLS</pre>
<pre style="padding-left: 30px;">    No corrections needed
-   Jitter correction required
+   Unreported loss of streaming/other error in read
!   Errors  found  after stage 1 correction; the drive is
    making the same error through multiple re-reads, and
    cdparanoia is having trouble detecting them.
e   SCSI/ATAPI transport error (corrected)
V   Uncorrected error/skip</pre>
<p>The interface is a testament to the poor reliability of the little plastic discs. I&#8217;ve found, however, that I&#8217;d rather learn of a fatal scratch on some rare dub reggae disc from <em>it</em> rather than by a Zsh core dump message.</p>
<p>The UI also uses an interesting variation on the throbber/baton: <a href="http://www.google.com/codesearch/p?hl=en#JgMOjnoOaNs/cdparanoia-3.10+debian~pre0/main.c&amp;q=cdparanoia%20main.c&amp;l=510">main.c &#8211; cdparanoia-3.10+debian~pre0</a>.</p>
<p>Long live the console.</p>
]]></content:encoded>
			<wfw:commentRss>http://unsyncopated.com/blog/index.php/2008/10/02/hats-off-to-cdparanoias-ui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

