<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>On Science and Technology</title>
	<atom:link href="http://archimedesden.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://archimedesden.wordpress.com</link>
	<description>I&#039;ve figured it out, so hopefully you won&#039;t have to.</description>
	<lastBuildDate>Mon, 09 Jan 2012 18:14:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='archimedesden.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>On Science and Technology</title>
		<link>http://archimedesden.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://archimedesden.wordpress.com/osd.xml" title="On Science and Technology" />
	<atom:link rel='hub' href='http://archimedesden.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Startcraft + BWAPI + pybw</title>
		<link>http://archimedesden.wordpress.com/2011/11/30/startcraft-bwapi-pybw/</link>
		<comments>http://archimedesden.wordpress.com/2011/11/30/startcraft-bwapi-pybw/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 06:22:37 +0000</pubDate>
		<dc:creator>voline</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bwapi]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[starcraft]]></category>

		<guid isPermaLink="false">http://archimedesden.wordpress.com/?p=67</guid>
		<description><![CDATA[This post is meant to provide a quick way to get up and running with pybw and BWAPI 3.7, instead of spending a lot of time scouring the net for the prereqs. Prerequisites: StarCraft Broodwars and patch &#8212; this must be installed and patched to at least 1.16.1. VisualStudio 2008 express &#8212; You only need [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=archimedesden.wordpress.com&amp;blog=6884313&amp;post=67&amp;subd=archimedesden&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This post is meant to provide a quick way to get up and running with pybw and BWAPI 3.7, instead of spending a lot of time scouring the net for the prereqs.</p>
<p>Prerequisites:</p>
<ol>
<li><a href="http://us.blizzard.com/en-us/games/sc/">StarCraft Broodwars</a> and <a href="http://us.blizzard.com/support/article.xml?locale=en_US&amp;articleId=21149">patch</a> &#8212; this must be installed and patched to at least 1.16.1.</li>
<li><a href="go.microsoft.com/?linkid=9350817">VisualStudio 2008 express</a> &#8212; You only need to install the C++ portion.  Note, however, that VS 2010 currently _will not_ work. (not needed if none of the downloads are source that needs to be compiled).</li>
<li><a href="http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi">Python 2.6</a> &#8212; pybw should compile against any 2.6.  Python 2.7 may work, but is untested (the project build will need to be modified to include 2.7 instead of 2.6 headers).</li>
<li><a title="Chaoslauncher.zip" href="http://www.teamliquid.net/staff/Manifesto7/Chaoslauncher.zip">Chaoslauncher.zip</a> &#8212; The Chaoslauncher can be a little harder to find since the website hosting the project went down.</li>
<li><a href="http://bwapi.googlecode.com/files/BWAPI_3.7.7z">BWAPI</a> &#8212; If you wish you may compile this from source, but the binaries should work just as well</li>
<li><a href="https://github.com/crass/PyBW">pybw</a> &#8212; Checkout the source. <a href="http://code.google.com/p/pybw/">Upstream</a> currently only supports BWAPI up to version 3.2 Beta.  Or download <a href="https://github.com/downloads/crass/PyBW/pybw-20111129-7bd880a670-bwapi-3.7.7z">precompiled binaries</a>.</li>
<li><a href="http://bwapi.googlecode.com/files/vcredist_x86.exe">vcredist_x86.exe</a> &#8212; This may need to be installed.</li>
</ol>
<h4>Installation</h4>
<p>Install Starcraft with 1.16.1 patch.  Then follow <a href="http://code.google.com/p/bwapi/source/browse/trunk/Release_Binary/README#52">steps 1 &#8211; 4</a> (note the section is misnamed, &#8220;Build Instructions&#8221;) for setting up BWAPI to be injected into Starcraft using the Chaoslauncher.  If compiling pybw from source, follow the instructions from the <a href="https://github.com/crass/PyBW/blob/master/README.txt">README</a> file.  Otherwise, you may need to install vcredist_x86.exe and then you should be able to run pybwClient.exe from the binary distribution to start the example AI.  Keep in mind that an AI can not start once you&#8217;re in a game.  Starcraft should be started with the Chaoslauncher with BWAPI checked.  It will be obvious that the AI is connected at game start because there will be text on the screen indicating the revision of BWAPI being used at game start (not to mention that the workers should automatically start gathering minerals).</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/archimedesden.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/archimedesden.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/archimedesden.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/archimedesden.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/archimedesden.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/archimedesden.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/archimedesden.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/archimedesden.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/archimedesden.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/archimedesden.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/archimedesden.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/archimedesden.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/archimedesden.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/archimedesden.wordpress.com/67/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=archimedesden.wordpress.com&amp;blog=6884313&amp;post=67&amp;subd=archimedesden&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://archimedesden.wordpress.com/2011/11/30/startcraft-bwapi-pybw/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c51bab1cead711a7076c8d48355cf9de?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">voline</media:title>
		</media:content>
	</item>
		<item>
		<title>Windows hibernate&#8230; where did my bios options go?</title>
		<link>http://archimedesden.wordpress.com/2011/11/29/windows-hibernate-where-did-my-bios-options-go/</link>
		<comments>http://archimedesden.wordpress.com/2011/11/29/windows-hibernate-where-did-my-bios-options-go/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 02:04:02 +0000</pubDate>
		<dc:creator>voline</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://archimedesden.wordpress.com/?p=63</guid>
		<description><![CDATA[So a couple months ago I acquired a new laptop installed with Windows 7.  Of course, one of the first things I did was install linux on it.  But I did this by shrinking the win7 install to make space for linux.  I figured that it might come in handy one day to run windows, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=archimedesden.wordpress.com&amp;blog=6884313&amp;post=63&amp;subd=archimedesden&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So a couple months ago I acquired a new laptop installed with Windows 7.  Of course, one of the first things I did was install linux on it.  But I did this by shrinking the win7 install to make space for linux.  I figured that it might come in handy one day to run windows, and promptly left the win7 to gather dust.</p>
<p>Well I&#8217;ve recently been spending a lot of time back in windows playing with the BWAPI (the subject of a forth coming post).  Because I&#8217;ve been doing non-trivial things in windows, I want to hibernate the machine instead of just shutting it down.  To my consternation, I noticed that, after hibernating from windows and then restarting, the bios disabled access to the bios menu and bios boot menu and booted directly to the windows device.  Since I boot my linux from a usb but the windows install is on a harddisk, this is problematic.  Effectively hibernating to windows forces me to resume back to windows.  However, when I shutdown windows and boot back up, the bios menus are re-enabled.</p>
<p>After doing some googling around, i found others with the same problem, but no solution.  Now, I&#8217;ve been spending a lot of time learning about my Phoenix UEFI firmware and know that the boot menu can be modified from a UEFI booted machine by modifying the UEFI variables.  So, I could see how a UEFI booted OS could at hibernation change these variables to only boot the device which was being hibernated to and disabling all other firmware access.  The funny thing was that the OEM windows install booted from the MBR and not an EFI bootloader application.  Thus windows was not running under UEFI (actually it is running under UEFI, but in a BIOS compatibility mode) and accordingly could not modify the UEFI variables.</p>
<p>So I started thinking &#8220;how is the firmware being modified such that the firmware knows to disabled firmware access and boot directly to the windows hibernated device?&#8221;  The first thought I had, was that somehow this information is being stored in ACPI, which I knew only a little about.  After downloading the ACPI spec and reading about the various sleep states, I realized that the <strong>hibernate state, S4, does not fully turn off power to the machine</strong>.  Yes, the computer looks completely off, no lights or sounds, and even a firmware loading screen is presented on &#8220;power on&#8221;, but it is sucking tiny bit of energy (see ACPI spec v5 16.1.4).  Somewhere, maybe in some modified ACPI tables but I&#8217;m not sure, windows hibernate tells the firmware to just boot directly to the device window hibernated to.</p>
<p>Armed with this knowledge, I decided to see if cutting all power to the machine would change anything.  I hibernated windows, then disconnected AC power and the battery.  When turning the laptop back on the result was the same, no boot options.  Coincidentally, I had been reading my laptop&#8217;s service manual about how to replace core components and I remembered that the manual said to ensure that there was no residual power in the system before disassembling.  <strong>The manual said to ensure this by removing battery and power and then pushing power button waiting for a second and pushing the power button again, repeating several times</strong>.  That did the trick, the firmware booted back up and allowed me to select which device I wanted to boot from and get into the firmware setup menu.  It also has no effect (as far as I can tell) on the resumed windows, which resumes without issue.</p>
<p>Strangely, hibernating from linux (using the tux-on-ice kernel) does not exhibit this behavior.  I can think of two possible reasons for this.  One, linux or tux-on-ice specifically do not actually go to S4 on hibernate, but actually go to S5 (logical off).  Or two, it has to do with the fact that I&#8217;m hibernating from a running OS that was booted from a removable device.  Without further testing, I suspect the former more likely.  Anyone else have any ideas?</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/archimedesden.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/archimedesden.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/archimedesden.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/archimedesden.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/archimedesden.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/archimedesden.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/archimedesden.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/archimedesden.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/archimedesden.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/archimedesden.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/archimedesden.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/archimedesden.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/archimedesden.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/archimedesden.wordpress.com/63/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=archimedesden.wordpress.com&amp;blog=6884313&amp;post=63&amp;subd=archimedesden&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://archimedesden.wordpress.com/2011/11/29/windows-hibernate-where-did-my-bios-options-go/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c51bab1cead711a7076c8d48355cf9de?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">voline</media:title>
		</media:content>
	</item>
		<item>
		<title>Yet Another Full Disk Encryption with Ubuntu 11.10</title>
		<link>http://archimedesden.wordpress.com/2011/10/21/yet-another-full-disk-encryption-with-ubuntu-11-10/</link>
		<comments>http://archimedesden.wordpress.com/2011/10/21/yet-another-full-disk-encryption-with-ubuntu-11-10/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 10:58:55 +0000</pubDate>
		<dc:creator>voline</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://archimedesden.wordpress.com/?p=49</guid>
		<description><![CDATA[Why does the world need another full disk encryption (FDE) for ubuntu howto?  There are plenty of resources and posts about this issue.  Technically, I&#8217;ll be going over full volume encryption (FVE), but it can easily be modified to encrypt the whole disk (excepting the LUKS header at the beginning of the disk).  I have [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=archimedesden.wordpress.com&amp;blog=6884313&amp;post=49&amp;subd=archimedesden&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Why does the world need another full disk encryption (FDE) for ubuntu howto?  There are plenty of <a title="resources" href="https://help.ubuntu.com/community/EncryptedFilesystemLVMHowto" target="_blank">resources</a> and <a href="http://joernfranz.net/2011/01/20/installing-ubuntu-10-10-with-full-disk-encryption/" target="_blank">posts</a> about <a title="Arch: System_Encryption_with_LUKS" href="https://wiki.archlinux.org/index.php/System_Encryption_with_LUKS" target="_blank">this</a> issue.  Technically, I&#8217;ll be going over full volume encryption (FVE), but it can easily be modified to encrypt the whole disk (excepting the LUKS header at the beginning of the disk).  I have decided that the benefits to having a partition table outweigh the costs (I have the option to boot windows or other operating systems).   This post is not meant to be a definitive guide to FDE, but more to present ideas and implementations for when you&#8217;re actually setting up FDE (presumably with some other tutorial).</p>
<p>The ultimate solution would be to have the disk do the encryption itself, and you only feed it a key or password to unlock it at boot.  This could be much better performance-wise since the encryption would be all done by the processor on the drive.  There are now some SSDs which come with FDE (<a title="Intel's 320 series" href="http://www.intel.com/content/dam/doc/technology-brief/ssd-320-series-data-security-features-brief.pdf" target="_blank">Intel&#8217;s 320 series</a> and <a href="http://www.samsung.com/eu/business/semiconductor/products/ssd/Products_ssd.html" target="_blank">a samsung one</a>), however there are a few reasons to be cautious.  It appears as though the drive can be locked and unlocked with a password, but I have no reason to believe that the encryption key, which in Intel&#8217;s case is randomly generated, is encrypted with the password.  I suspect that the data encryption key is stored in the clear somewhere on the device.  Also, I&#8217;d like a way send an arbitrary (valid) data encryption key to the drive to be used for encryption and there should be a way to independently verify that the encryption key is being used.  Perhaps a way to request data before encryption/decryption.  The other issue is that there is in general only support for one encryption algorithm, whereas with software FDE there can be potentially limitless.  Since, I don&#8217;t have one of these drives and I&#8217;m not sure I trust them, I&#8217;m stuck with software FDE.  Now on with the show.</p>
<h2>The big picture</h2>
<p>What we want to end up with is Ubuntu residing on an FDE partition, booting from a USB stick.  There should be no way to boot the Ubuntu partition from the disk itself.  This will prevent determined attackers from installing a modified bootloader to grab your passwords or keys.  Also, we&#8217;d like to allow Ubuntu to hibernate to some encrypted space, so attackers can read the hibernation dump to get the master key which decrypts the partition.</p>
<h2>Installing Ubuntu FDE</h2>
<p>I won&#8217;t go into detail on how to do this, since there are <a href="https://help.ubuntu.com/community/EncryptedFilesystemLVMHowto" target="_blank">good resources</a> for doing this (<a href="http://joernfranz.net/2011/01/20/installing-ubuntu-10-10-with-full-disk-encryption/" target="_blank">this</a> seems better as it goes over installing boot onto usb).  However, I want to reiterate that you should <strong>not </strong>create an unencrypted boot partition.  I recommend creating a single lvm partition for the whole system, that includes /boot.  <em>But how can we boot if /boot is itself encrypted?</em>  Continue reading&#8230;</p>
<h2>The Bootloader</h2>
<p>There are two main ways to boot your encrypted volume from a USB stick: boot from an unencrypted initrd located on the usb and unlocking the luks partition from grub and then booting from the initrd in /boot (will need to compile latest grub2).  The former is the easiest to setup, but the latter more secure (in a probabilistic sense).</p>
<h3>Booting from initrd on usb stick</h3>
<p>Your usb should have a filesystem readable by grub (fat32 should work) with enough space to store the initrds and kernels (100Mb should work).  To install grub, mount the usb partition and do grub-install &#8211;no-floppy &#8211;boot-directory &lt;path/to/usb/mount&gt; &lt;usb device&gt;.  Now grub is installed, but we need to add a configuration file and the initrds and kernels.  The easiest way to do this is to copy /boot/grub/grub.cfg and /boot/{initrd,vmlinuz}* to the mounted usb partition (make sure the directory structure is the same, eg. &lt;usb mountdir&gt;/boot/grub/grub.cfg exists).  You should now have a bootable usb, which will appear to boot as if you have booted from the disk after a normal Ubuntu install.</p>
<p>However this still leaves much to be desired.  When you upgrade your kernel, you&#8217;ll have to manually copy over the files again.  Also, the initrd is stored unencrypted on the usb, so an attacker with access to the usb could easily modify it to capture your key or password.  Can we do better?  I&#8217;d argue we can, see next section.</p>
<h3>Booting from encrypted initrd</h3>
<p>This section requires that you have compiled a <a href="http://www.gnu.org/software/grub/grub-download.en.html" target="_blank">luks-enabled grub2</a> (you&#8217;ll need device mapper development files).  Support has been merged in to trunk, and I believe is included in the 1.99 release.  We will use this new grub to open the luks container to load the initrd from our encrypted boot.  Once you&#8217;ve got the newer grub compiled and usable, you can install the newer grub on the usb the same way you installed it in the previous section.  After, boot/grub/luks.mod and boot/grub/cryptodisk.mod should exist.  Since the grub config in /boot is automatically updated it should always be in sync with installed kernels, so we&#8217;ll have grub load this config.  Here&#8217;s a grub menu entry to do all this:</p>
<pre style="background:#404040;">menuentry 'Grub Cryptomount: Ubuntu 11.10 load grub.cfg' {
    insmod luks
    insmod lvm

    cryptomount -u 0123456789abcdef0123456789abcdef
    set root=(lvm/ubuntu-root)
    configfile /boot/grub/grub.cfg
}</pre>
<p>The cryptomount UUID and root device will need to be changed.  You can boot the new grub on the usb and enter the commandline to figure out these parameters.  Try manually unlocking the luks partition with cryptomount.  Also, as far as know, cryptomount can only unlock luks via a password, and not a key.</p>
<p>Once you&#8217;ve got this working, you&#8217;ll notice that you need to enter the password for your encrypted volume twice: once when grub need to get the initrd and again when the initrd needs to decrypt the volume.  You could modify the initrd to contain a keyfile and the key to the luks volume (luks allow for 8 slots of keys or passwords to decrypt the volume).  The key would be securely stored on the encrypted boot.</p>
<p>A note on security, assuming the most capable attacker this method isn&#8217;t any more secure than the first method.  The grub boot sector or grub.cfg could be hacked to load key logging code.  However, the number of people capable of this attack is orders of magnitude smaller than those that can install one in an initrd.</p>
<p>Thanks to <a href="http://xercestech.com/full-system-encryption-for-linux.geek" target="_blank">xercestech</a> for this luks grub idea.</p>
<h2>Hash verification</h2>
<p>You may wish to perform a hash check on critical data to detect if someone has been tampering with your device.  Of course, a successful hash check does not mean that this data has not been modified, since the hash checker could have been modified to always return true.  However, it can present an extra hurdle for a would be attack.  Also, there could be a real benefit to checking the hash of the luks header, to prevent an old comprimised header from being reinstalled.  Grub has a &#8220;sha256sum&#8221; command which has a &#8220;-c&#8221; option for doing a hash check of data against a list of signatures from a given file.  So you could store a hash signature file on the usb and have grub do the hash verification from that file.  One thing to note is that file names may contain grub block syntax.  So you could verify the hash of the first 4k of (hd0,1) with a hash file containing the line &#8220;&lt;&lt;HASH&gt;&gt; (hd0,1)+8&#8243;.</p>
<h2>Tux-on-ice encrypted hibernate</h2>
<p>I have found the tux-on-ice hibernation kernel patches to be superior to the mainline swsusp, so naturally I wanted to get hibernation with this kernel working on my encrypted system.  Now, I should say that I&#8217;m not sure its strictly necessary to add the resume parameter to the kernel when resuming from hibernation (this parameter tells the kernel where to look for the hibernation image).  Tux-on-ice might be able to automatically find it based on fstab, unless you&#8217;ve configured the hibernation image as a file.  Either way, I didn&#8217;t want to take any chances.  The easy way to have the resume parameter added to each kernel menu entry in the grub.cfg is to add the parameter to the GRUB_CMDLINE_LINUX variable in /etc/default/grub and then run update-grub.  If you&#8217;re using the unencrypted initrd&#8217;s, then you&#8217;ll need to change the grub.cfg on the usb manually.</p>
<h2>Can we do better?</h2>
<p><a href="https://wiki.recompile.se/wiki/Mandos">Mandos</a> is an interesting idea for getting servers with encrypted root file systems to reboot <em>unattended and/or remotely</em>.  Though, it would give us less security if configured with an unencrypted boot.  It could be installed in an initrd booted from a usb stick inserted by a person &#8220;trusted enough to put the usb in and boot, but not trusted enough to have a password for the encrypted volume.&#8221;</p>
<p><a href="http://www.death-zone.org/index.php?option=content&amp;task=category&amp;sectionid=2&amp;id=42&amp;Itemid=76&amp;limit=50&amp;limitstart=0">Lukstool</a> might be an good tool to integrate with the initrd, to try to thwart memory dumping attacks (it can open multiple &#8220;fake&#8221; crypt devices, so that there are multiple keys in memory.</p>
<p><a href="http://cube.dyndns.org/~rsnel/scubed/">Scubed</a> is steganography for your hard drive.  This tool would allow you to plausibly deny the existence of your encrypted system.  Unfortunately, it appears to be unmaintained (no changes in at least 4 years).  So it might take some effort to get it to work with the current device mapper.</p>
<p>For headless servers, an ssh daemon can be run from within the initrd so that a password or keyfile can be provided remotely.  There is documentation at /usr/share/doc/cryptsetup/README.remote.gz and many <a href="http://blog.nguyenvq.com/2011/09/12/remote-unlocking-luks-encrypted-lvm-using-dropbear-ssh-in-ubuntu/">posts</a> about this.  This would again necessitate an unencrypted initrd.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/archimedesden.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/archimedesden.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/archimedesden.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/archimedesden.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/archimedesden.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/archimedesden.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/archimedesden.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/archimedesden.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/archimedesden.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/archimedesden.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/archimedesden.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/archimedesden.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/archimedesden.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/archimedesden.wordpress.com/49/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=archimedesden.wordpress.com&amp;blog=6884313&amp;post=49&amp;subd=archimedesden&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://archimedesden.wordpress.com/2011/10/21/yet-another-full-disk-encryption-with-ubuntu-11-10/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c51bab1cead711a7076c8d48355cf9de?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">voline</media:title>
		</media:content>
	</item>
		<item>
		<title>Getting ZSNES to work on 64-bit Ubuntu</title>
		<link>http://archimedesden.wordpress.com/2011/09/13/getting-zsnes-to-work-on-64-bit-ubuntu/</link>
		<comments>http://archimedesden.wordpress.com/2011/09/13/getting-zsnes-to-work-on-64-bit-ubuntu/#comments</comments>
		<pubDate>Tue, 13 Sep 2011 11:02:16 +0000</pubDate>
		<dc:creator>voline</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://archimedesden.wordpress.com/?p=34</guid>
		<description><![CDATA[So I&#8217;ve been in the process of settling in to my new 64-bit home after a recent laptop purchase. On the old laptop I infrequently played the SNES emulator ZSNES, so I tried to install it through he ubuntu package manager. It turns out its not there. But how could the venerable ZSNES project not [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=archimedesden.wordpress.com&amp;blog=6884313&amp;post=34&amp;subd=archimedesden&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve been in the process of settling in to my new 64-bit home after a recent laptop purchase. On the old laptop I infrequently played the SNES emulator ZSNES, so I tried to install it through he ubuntu package manager. It turns out its not there. But how could the venerable ZSNES project not be provided at least in universe (which I knew was enabled)? A quick google confirmed that it was in universe, but wait&#8230; there&#8217;s only a 32-bit version, not 64-bit. Now I read some more and it seems like zsnes can not be compiled for 64-bit architectures, which upon reflection makes sense because I know a bit of it is in hand optimized assembly.</p>
<p>Now I&#8217;m trying to take the least hackish, but also least work approach. Apparently, the 32-bit deb can be modified to lie about its architecture to fool the package manager into installing it according to <a href="http://rohieb.wordpress.com/2010/10/06/zsnes-on-amd64-ubuntu/">this post</a>. I&#8217;ve taken a similar approach in a previous post, but its not really a long term solution.</p>
<p>In theory there&#8217;s 32-bit binaries should have no problem&#8217;s running on a 64-bit machine in compatibility code. So I figured there must be a way to <a href="http://askubuntu.com/questions/29665/apt-get-32-bit-package-on-amd64-ubuntu-installation">install the 32-bit packages via the 32-bit repositories</a>. Basically you setup a chrooted environment for installing a base 32-bit debian system and then install the package from inside there. I copied my source.list directly to the chroot so I didn&#8217;t need to recreate it.</p>
<p>After installing zsnes from the chroot, I decided to give it a test run.  I tried to run it from within the chroot, but zsnes kept dying saying that it could not setup the video mode. Using strace I saw a lot of failed ioctl&#8217;s to the frame buffer using the FBIOPUT_VSCREENINFO ioctl.  So then I tried running from outside the chroot, but I&#8217;d get a segfault.  I used ldd to verify that the binary was linking with the correct libraries (32-bit, not 64-bit), and it was.  So I googled and came across a <a href="http://board.zsnes.com/phpBB3/viewtopic.php?f=18&amp;t=12339">zsnes forum thread</a> giving a solution to the problem.  I slightly modified the instructions for my version of libao, which was using the plugins-4 directory.  I had noticed this when perusing the strace output.</p>
<p>This got zsnes up an running.  I&#8217;m a little curious as to why it was failing to run with in the chroot environment (the fb device was opened fine), and what could be done to get it to work.  And tangentially why I wasn&#8217;t able to run x11 programs from within the chroot either.</p>
<p>PS: Using strace with an x11 program from in the chroot, I see that it is connecting successfully to the unix domain socket successfully, but the X server sends &#8220;No protocol specified&#8221;.  Then it tried to connect to port 6000 on localhost, which fails because the X server is not configured to listen there.  So far google has found some answers, but none of them work in this case.  Maybe I&#8217;ll revisit this when/if I need it.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/archimedesden.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/archimedesden.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/archimedesden.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/archimedesden.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/archimedesden.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/archimedesden.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/archimedesden.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/archimedesden.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/archimedesden.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/archimedesden.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/archimedesden.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/archimedesden.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/archimedesden.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/archimedesden.wordpress.com/34/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=archimedesden.wordpress.com&amp;blog=6884313&amp;post=34&amp;subd=archimedesden&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://archimedesden.wordpress.com/2011/09/13/getting-zsnes-to-work-on-64-bit-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c51bab1cead711a7076c8d48355cf9de?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">voline</media:title>
		</media:content>
	</item>
		<item>
		<title>Changing package dependency info in Ubuntu</title>
		<link>http://archimedesden.wordpress.com/2009/06/22/changing-package-dependency-info-in-ubuntu/</link>
		<comments>http://archimedesden.wordpress.com/2009/06/22/changing-package-dependency-info-in-ubuntu/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 09:22:23 +0000</pubDate>
		<dc:creator>voline</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://archimedesden.wordpress.com/?p=27</guid>
		<description><![CDATA[Below I describe a general technique for modifying dependency info of a package to fool the package manager into allowing the package to be installed. I describe this technique using the specific example of installing firefox-3.5 from a third-party repository which contained the dependency problem I needed to resolve. Background Recently I wanted to test [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=archimedesden.wordpress.com&amp;blog=6884313&amp;post=27&amp;subd=archimedesden&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Below I describe a general technique for modifying dependency info of a package to fool the package manager into allowing the package to be installed.  I describe this technique using the specific example of installing firefox-3.5 from a third-party repository which contained the dependency problem I needed to resolve.</p>
<h3>Background</h3>
<p>Recently I wanted to test out the new firefox-3.5 on my Ubuntu 8.10 (Intrepid) and I didn&#8217;t want to upgrade (I don&#8217;t think its in jaunty anyway) due to a previous upgrade disaster to jaunty.  Googling around I found Ubuntu Mozilla Daily Build Team, which has an <a href="https://launchpad.net/~ubuntu-mozilla-daily/+archive/ppa">ubuntu repository</a> of the latest firefox builds, among other mozilla related stuff.</p>
<p>So I did the whole &#8220;add foreign repository&#8221; process, adding the repository and verification key.  Then I did did an update and tried to install the firefox-3.5 package through the synaptics gui.  It complained about not being able to satisfy dependencies and wouldn&#8217;t let me mark it for installation.</p>
<p>Upon further investigation, I concluded that the issue was that firefox-3.5 had a dependency for xulrunner-1.9.1 (&gt;= 1.9.1~rc2).  But the only version of xulrunner that the repository had was version 1.9.1~hg20090620r26001+nobinonly-0ubuntu1~umd1~intrepid.  Since the firefox-3.5 package was version 3.5~hg20090620r26001+nobinonly-0ubuntu1~umd1~intrepid, I assumed that was the correct version of the xulrunner-1.9.1.  I haven&#8217;t looked into it, but it must be that debian/ubuntu&#8217;s version comparison routine thinks that 1.9.1~rc2 &gt; 1.9.1~hg20090620r26001+nobinonly-0ubuntu1~umd1~intrepid, but the package maintainers actually thought that should be false.  Thus, I concluded that it should be safe to force the installation of the packages, even if I had to fool the package manager.</p>
<h3>Fooling the package manager</h3>
<p>Here&#8217;s what I did and I know there are other ways of achieving the same thing.  Since synaptics wouldn&#8217;t even let me mark the package for upgrade, I didn&#8217;t have the firefox-3.5 deb package in the package cache.  So to get synaptics to retrieve the deb, I first had to fool it into thinking the dependency could be met.  I did this by modifying the cached repository list for the packages, which in my cases was /var/lib/apt/lists/ppa.launchpad.net_ubuntu-mozilla-daily_ppa_ubuntu_dists_intrepid_main_binary-i386_Packages.  I searched for the line &#8220;Package: firefox-3.5&#8243;, which will get you to the section on that package.  In that section, there is dependency information about the package and I modified &#8220;xulrunner-1.9.1 (&gt;= 1.9.1~rc2)&#8221; to &#8220;xulrunner-1.9.1 (&gt;= 1.9.0)&#8221;, which I figured was sure to pass the version test.</p>
<p>I restarted synaptics and was able to mark the packages fro upgrade.  However, when I tried to then install the packages, they were downloaded but failed on installation.  This was the debian package management system,  which ubuntu is built on, has dependency information in the packages as well.  That makes sense, because one might want to install a package that didn&#8217;t come from a repository, but causes more work for me.</p>
<p>So I needed to now modify the dependency information inside the deb package file.  I went to the package cache directory, /var/cache/apt/archives, where the downloaded deb packages are stored.  The firefox-3.5 package was extracted with dpkg-deb -x &lt;deb file&gt; &lt;extracted archive dir&gt; <strong>and</strong> dpkg-deb -e &lt;deb file&gt; &lt;extracted archive dir&gt;/DEBIAN, the latter being needed to extract the dependency file.  The contents of &lt;extracted archive dir&gt;/DEBIAN/control look very similar to the firefox-3.5 section of the cached package listing file we modified earlier.  I changed the dependency to match the change in the cached package listing file and rebuilt the deb package with dpkg-deb -b.</p>
<p>Now, at this point I thought I would be good to go.  It turns out that now your package won&#8217;t match file verification values in the package listing (noticed the MD5sum and SHA1 lines?).  So I modified the size, md5, and sha1 values in the package listing.  Upon reinstalling firefox-3.5 from synaptics, everything installed with out a hitch and I now have a functioning firefox 3.5 to play with.</p>
<p><strong>NOTE</strong>: Make sure that in the last step of reinstalling firefox-3.5 from synaptics that you aren&#8217;t downloading any files.  If you are, then your size, md5, and/or sha1 values are probably not correct.  It definitely won&#8217;t work if you are downloading data because your modified package in the package cache will get overwritten with the original.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/archimedesden.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/archimedesden.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/archimedesden.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/archimedesden.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/archimedesden.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/archimedesden.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/archimedesden.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/archimedesden.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/archimedesden.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/archimedesden.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/archimedesden.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/archimedesden.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/archimedesden.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/archimedesden.wordpress.com/27/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=archimedesden.wordpress.com&amp;blog=6884313&amp;post=27&amp;subd=archimedesden&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://archimedesden.wordpress.com/2009/06/22/changing-package-dependency-info-in-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c51bab1cead711a7076c8d48355cf9de?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">voline</media:title>
		</media:content>
	</item>
		<item>
		<title>Spit user accounts for one domain between google and other hosts using postfix</title>
		<link>http://archimedesden.wordpress.com/2009/06/01/spit-user-accounts-for-one-domain-between-google-and-other-hosts-using-postfix/</link>
		<comments>http://archimedesden.wordpress.com/2009/06/01/spit-user-accounts-for-one-domain-between-google-and-other-hosts-using-postfix/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 16:48:24 +0000</pubDate>
		<dc:creator>voline</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[postfix]]></category>

		<guid isPermaLink="false">http://archimedesden.wordpress.com/?p=14</guid>
		<description><![CDATA[Here&#8217;s the situation. You own your own domain and have a postfix smtp server to configure. You&#8217;d like to host some of the email users for your domain on gmail because its easy to maintain and provides most of the features your average user wants. However you have some users that require some advanced features [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=archimedesden.wordpress.com&amp;blog=6884313&amp;post=14&amp;subd=archimedesden&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s the situation.  You own your own domain and have a postfix smtp server to configure.  You&#8217;d like to host some of the email users for your domain on gmail because its easy to maintain and provides most of the features your average user wants.  However you have some users that require some advanced features which google does not provide, so you want to have those email accounts hosted on a server you control.  How do you do setup postfix to send some accounts to gmail and some to your other email server?</p>
<h2>Conceptual Overview</h2>
<p>Suppose you have email address gmail@mydomain.com, which you want to have email sent to it end up on google&#8217;s gmail servers, and local@mydomain.com, which will go to your own servers.  All mail will be configured to route through your postfix server, which will be configured to send the mail to the appropriate places depending on the address.</p>
<h2>Implementation</h2>
<h3>Configuring google apps account</h3>
<p>First of all, hosting your email on gmail, such that you are using your domain, wouldn&#8217;t be possible without google&#8217;s relatively new google apps hosting feature.  You need to first <a href="http://www.google.com/a/cpanel/domain/new">get an apps account</a>, if yo don&#8217;t already have one.  I&#8217;ll assume you can figure out how to setup the google account.  Its pretty straight forward and nothing tricky about it, just follow the instructions.  Make sure you verify your domain, but <b>don&#8217;t</b> follow the instructions for activating email for the account.  Also make sure you create a user for each email account you want hosted on gmail.</p>
<h3>Configuring DNS</h3>
<p>Modify the instructions given by google in the process of activating email for your apps account such that instead of using your domain as instructed for configuring your MX records, use a subdomain of your domain.  For the purposes of this article, I will be using g.mydomain.org.  So for instance, your dns should be setup such that MX record for g.mydomain.org with priority 10 points to aspmx.l.google.com.  Have the MX records for the domain (mysite.com) point to your postfix server.  Also, gmail servers will not allow relaying, that is your smtp server sending email to it, unless the reverse DNS mapping for the IP of the smtp server corresponds to the domain given by postfix client to gmail smtp servers, which is controlled by the <code>myhostname</code> configuration parameter in main.cf.  So as far as I can tell, if you don&#8217;t control the reverse DNS record for your smtp server&#8217;s IP, this probably won&#8217;t work.</p>
<h3>Configuring Postfix</h3>
<p>I will not go into configuring your postfix server for delivering mail, since this is really specific to your setup and not the point of this article.  Assume that by default you already have postfix setup to deliver email to mydomain.com to some other default destination.  To tell postfix to route gmail@mydomain.com to gmail&#8217;s servers, use the following config snippets:</p>
<p><a href="http://www.postfix.org/postconf.5.html#virtual_alias_maps">/etc/postfix/main.cf</a>:</p>
<blockquote><p>
virtual_alias_maps = hash:/etc/postfix/virtual<br />
smtp_generic_maps = hash:/etc/postfix/generic
</p></blockquote>
<p><a href="http://www.postfix.org/virtual.5.html">/etc/postfix/virtual</a>:</p>
<blockquote><p>
gmail@mydomain.com gmail@g.mydomain.com
</p></blockquote>
<p><a href="http://www.postfix.org/generic.5.html">/etc/postfix/generic</a>:</p>
<blockquote><p>
gmail@g.mydomain.com gmail@mydomain.com
</p></blockquote>
<p>Of course, depending on your setup, the absolute paths here and how you store your virtual table may change.  When gmail@mydomain.com receives mail, she will <b>not</b> have a To header as g.mydomain.com.  Also when sending email, one <b>should not</b> send email to gmail@g.mydomain.org, as this mail will be rejected by gmail&#8217;s servers.</p>
<h2>Notes</h2>
<p>Using this setup you need to add a virtual alias for every user you want to have forwarded to gmail.  You can setup postfix to forward all accounts by default to gmail and selective route others to other destinations by modifying these instructions to by default send mail to gmail and change the subdomain MX records to point to the other destination (or if the destination is the local box only postfix need be modified).  This is left as an exercise to the reader.</p>
<p>If you are using sasl authentication, you should make sure, if you desire, that the authentication coincides with the gmail account.  Usually, when authing with gmail&#8217;s smtp servers to send outgoing mail, the username and password are the same for logging into the account via the web interface or imap.  If you already have an auth mechanism setup for the default delivery point, it won&#8217;t know about the gmail user credentials and so won&#8217;t be able to auth them.  You probably don&#8217;t want to just set your email clients outgoing smtp server to google&#8217;s because, then when you send an email to local@mydomain.com google thinks it should be the owner of that domain and see that that user does not exist and bounce your mail.  So to effectively send mail across the two delivery points, the mail must go through the postfix server.  Just make sure your auth mechanism knows about your gmail users and auths the correctly.</p>
<h4>References</h4>
<ul>
<li><a href="http://wp.dembowski.net/tag/postfix/">This appears to be an alternate solution to my problem, which is simpler.  However, I believe that the <b>To</b> field of received emails will have a domain of, in my case, g.mydomain.com. While this technically isn&#8217;t a problem since rarely do you do anything with the To field of received email, my goal is to achieve as much transparency as possible.</a>
<li><a href="http://www.google.com/support/a/bin/answer.py?answer=77182">Email routing through google, requires non-free account.</a>
<li><a href="http://www.google.com/support/a/bin/answer.py?answer=60730">Setup email gateway which routes to google using qmail.</a>
<li><a href="http://http://blog.twinklesprings.com/2008/03/27/remote-mail-delivery-for-google-apps-and-postfix-mail-server/">Setup postfix to relay a domain to google using transport</a>
<li><a href="http://behindmyscreen.newsvine.com/_news/2006/12/31/501615-configuringubuntu-postfix-and-gmail-in-101-easy-steps">Configure postfix to use gmail for outbound smtp</a>
<li><a href="http://souptonuts.sourceforge.net/postfix_tutorial.html">Simlar to above link, but looks like there&#8217;s more detail.</a>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/archimedesden.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/archimedesden.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/archimedesden.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/archimedesden.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/archimedesden.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/archimedesden.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/archimedesden.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/archimedesden.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/archimedesden.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/archimedesden.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/archimedesden.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/archimedesden.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/archimedesden.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/archimedesden.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=archimedesden.wordpress.com&amp;blog=6884313&amp;post=14&amp;subd=archimedesden&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://archimedesden.wordpress.com/2009/06/01/spit-user-accounts-for-one-domain-between-google-and-other-hosts-using-postfix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c51bab1cead711a7076c8d48355cf9de?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">voline</media:title>
		</media:content>
	</item>
		<item>
		<title>WARNING: Tor is dangerous for the unwary</title>
		<link>http://archimedesden.wordpress.com/2009/03/18/tor-is-dangerous-for-the-unwary/</link>
		<comments>http://archimedesden.wordpress.com/2009/03/18/tor-is-dangerous-for-the-unwary/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 03:32:50 +0000</pubDate>
		<dc:creator>voline</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://archimedesden.wordpress.com/?p=4</guid>
		<description><![CDATA[The short story is that Tor should be viewed as nothing more than an untrusted proxy server with the added feature that the proxy (theoretically) can not connect your ip to the traffic its handling. This means that all the normal problems of untrusted proxy servers accompany the use of Tor. For instance, a malicious [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=archimedesden.wordpress.com&amp;blog=6884313&amp;post=4&amp;subd=archimedesden&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The short story is that <a href="https://www.torproject.org/">Tor</a> should be viewed as nothing more than an untrusted proxy server with the added feature that the proxy (theoretically) can not connect your ip to the traffic its handling.</p>
<p>This means that all the normal problems of untrusted proxy servers accompany the use of Tor.  For instance, a malicious exit node can manipulate unencrypted traffic or steal sensitive data (read passwords).  Compound this with the fact that many secure sites send secure data unsecurely, even <a href="https://crypto.stanford.edu/forcehttps/forcehttps.pdf">google</a>.  The effect is that users may be <a href="http://www.cosic.esat.kuleuven.be/publications/article-896.pdf">better off not using Tor</a>.</p>
<p>Of course, Tor is an anonymizing tool not a privacy tool, so this is to be expected.  As <a href="http://www.schneier.com/blog/archives/2007/09/anonymity_and_t_1.html">Schneier points out</a>, &#8220;the price you pay for anonymity is exposing your traffic to shady people&#8221;.</p>
<p>However, all is not lost!  If there is end-to-end encryption to the website, no eavesdropping can occur.  Many sites don&#8217;t have https versions of their site, so this isn&#8217;t always possible.  Some sites that require a login perform that login over https, but then, after authentication, revert to http, allowing session cookies to be stolen and the account compromised.  Using the <a href="https://crypto.stanford.edu/forcehttps/">ForceHTTPS</a> firefox extension, one can enforce that a secure connection is always used after login.</p>
<p>Tangentially, an interesting idea I ran across was that since Tor exit nodes can manipulate unencrypted data however they wish, spammers could setup Tor exit nodes to <a href="http://www.computerdefense.org/2008/03/23/using-tor-users-to-solve-captchas/">crack captchas</a>.  What about manipulating the output of certain websites?  All google search results now point to a link which exploits the browsers.</p>
<p>Tor introduces a man-in-the-middle injection point.  What makes this worse than just using a direct connection, is that its easy to setup a Tor exit node.  With a direct connection one of the routers along the way has to be accessible by an attacker.  This is harder to obtain unless you obtain the assistance of the owner (ie not that hard for the government or telcoms themselves).  Tor does allow a whitelist of exit nodes to be used, which should alleviate much of this concern (but do you really trust them?).  You might setup your own Tor exit node and only use that one to be sure.  But as a Tor operator you could be more highly scrutinized, possibly leading to a &#8220;cure worse than the illness&#8221; situation.</p>
<p>So if you&#8217;re going to use Tor for webbrowsing be very careful.  Don&#8217;t sign in to sites without ForceHTTPS installed and protecting that site.  Never, EVER accept improperly signed ssl certificates.  Make sure you&#8217;re using the <a href="https://www.torproject.org/torbutton/index.html.en">torbutton</a> extension.  And be generally conscious about what you&#8217;re doing over an insecure connection.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/archimedesden.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/archimedesden.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/archimedesden.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/archimedesden.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/archimedesden.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/archimedesden.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/archimedesden.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/archimedesden.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/archimedesden.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/archimedesden.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/archimedesden.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/archimedesden.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/archimedesden.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/archimedesden.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=archimedesden.wordpress.com&amp;blog=6884313&amp;post=4&amp;subd=archimedesden&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://archimedesden.wordpress.com/2009/03/18/tor-is-dangerous-for-the-unwary/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c51bab1cead711a7076c8d48355cf9de?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">voline</media:title>
		</media:content>
	</item>
	</channel>
</rss>
