<?xml version="1.0"?>
<!-- name="generator" content="blojsom v3.2" -->
<rdf:RDF xmlns:wfw="http://wellformedweb.org/CommentAPI/"
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xmlns="http://purl.org/rss/1.0/">

	<channel rdf:about="http://blog.akkaya.de/jpabel">
		<title>Jürgen Pabel&#39;s Blog</title>
		<link>http://blog.akkaya.de/jpabel/</link>
		<description>This and that</description>
		<dc:publisher>Jürgen Pabel</dc:publisher>
		<dc:creator>jpabel@akkaya.de</dc:creator>
		<dc:date>2011-04-30T16:40:01+02:00</dc:date>
		<dc:language>en</dc:language>

        <items>
        <rdf:Seq>
                                <rdf:li rdf:resource="http://blog.akkaya.de/jpabel/thisandthat/2011/04/30/Thats-all-Folks" />
                                <rdf:li rdf:resource="http://blog.akkaya.de/jpabel/thisandthat/2011/03/25/TokenTube-presentation-at-GUUG-FFG" />
                                <rdf:li rdf:resource="http://blog.akkaya.de/jpabel/thisandthat/2011/01/31/Karma-bugs" />
                                <rdf:li rdf:resource="http://blog.akkaya.de/jpabel/thisandthat/2011/01/23/FFG-2011-TokenTube-presentation" />
                                <rdf:li rdf:resource="http://blog.akkaya.de/jpabel/thisandthat/2011/01/17/Android-unlock-pattern-insecurity" />
                                <rdf:li rdf:resource="http://blog.akkaya.de/jpabel/thisandthat/2011/01/07/Randomly-generated-PINs" />
                                <rdf:li rdf:resource="http://blog.akkaya.de/jpabel/thisandthat/2011/01/06/Self-induced-X-509-validity-issue-solved" />
                                <rdf:li rdf:resource="http://blog.akkaya.de/jpabel/thisandthat/2011/01/04/AXcrypt-for-Linux" />
                                <rdf:li rdf:resource="http://blog.akkaya.de/jpabel/thisandthat/2010/12/31/After-the-FrozenCache-presentation" />
                                <rdf:li rdf:resource="http://blog.akkaya.de/jpabel/thisandthat/2010/12/29/FrozenCache-at-27c3" />
                                <rdf:li rdf:resource="http://blog.akkaya.de/jpabel/thisandthat/2010/12/27/StressCon" />
                                <rdf:li rdf:resource="http://blog.akkaya.de/jpabel/thisandthat/2010/11/16/Hash-based-One-Time-Passwords" />
                                <rdf:li rdf:resource="http://blog.akkaya.de/jpabel/thisandthat/2010/10/23/The-transport-encryption-gap" />
                                <rdf:li rdf:resource="http://blog.akkaya.de/jpabel/thisandthat/2010/10/20/SELinux" />
                                <rdf:li rdf:resource="http://blog.akkaya.de/jpabel/thisandthat/2010/08/25/Secure-PIN-entry-and-cheap-RFID-readers" />
                </rdf:Seq>
        </items>
    </channel>

            <item rdf:about="http://blog.akkaya.de/jpabel/thisandthat/2011/04/30/Thats-all-Folks">
	    <title>That&#39;s all Folks!</title>
	    <link>http://blog.akkaya.de/jpabel/thisandthat/2011/04/30/Thats-all-Folks</link>
        <description>&lt;p&gt;It&#39;s been a fun ride but it&#39;s time to move on: after almost 10 years I am leaving Akkaya for some new challenges as of tomorrow. Thus, I will not continue this blog anymore. I hope you&#39;ve enjoyed reading my blog.&lt;/p&gt;

&lt;p&gt;The fate of this blog is not entirely decided as of yet: it&#39;ll probably remain online but be marked as &quot;archived&quot; shortly. No further comments would than be allowed - so take your chance now if you want to leave some last notes for me and others to see.&lt;/p&gt;

&lt;p&gt;I will start a personal blog at &lt;a href=&quot;http://juergen.pabel.net/blog/&quot;&gt;http://juergen.pabel.net/blog/&lt;/a&gt; shortly that will be very similar in spirit to this one.&lt;/p&gt;

&lt;p&gt;I would like to thank my now ex-colleagues at Akkaya for everything and wish them and you all the best.&lt;/p&gt;

Jürgen
</description>
	    <dc:date>2011-04-30T16:40:01+02:00</dc:date>
	                                <wfw:comment>http://blog.akkaya.de/blojsom/commentapi/jpabel/thisandthat/2011/04/30/Thats-all-Folks</wfw:comment>
            <wfw:commentRss>http://blog.akkaya.de/jpabel/thisandthat/2011/04/30/Thats-all-Folks?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blog.akkaya.de/jpabel/thisandthat/2011/03/25/TokenTube-presentation-at-GUUG-FFG">
	    <title>TokenTube presentation at GUUG FFG</title>
	    <link>http://blog.akkaya.de/jpabel/thisandthat/2011/03/25/TokenTube-presentation-at-GUUG-FFG</link>
        <description>&lt;p&gt;I just completed my presentation about &lt;a href=&quot;http://sf.net/projects/tokentube&quot;&gt;TokenTube&lt;/a&gt; at GUUG FFG 2011. Everything went well and interesting questions were asked. The slides are in german and can be downloaded &lt;a href=&quot;http://blog.akkaya.de/blojsom/resources/jpabel/FFG2011-Tokentube.pdf&quot;&gt;here&lt;/a&gt;&lt;/p&gt;
</description>
	    <dc:date>2011-03-25T15:54:47+01:00</dc:date>
	                                <wfw:comment>http://blog.akkaya.de/blojsom/commentapi/jpabel/thisandthat/2011/03/25/TokenTube-presentation-at-GUUG-FFG</wfw:comment>
            <wfw:commentRss>http://blog.akkaya.de/jpabel/thisandthat/2011/03/25/TokenTube-presentation-at-GUUG-FFG?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blog.akkaya.de/jpabel/thisandthat/2011/01/31/Karma-bugs">
	    <title>Karma bugs</title>
	    <link>http://blog.akkaya.de/jpabel/thisandthat/2011/01/31/Karma-bugs</link>
        <description>&lt;p&gt;Last week I brought an old institution back to life: &quot;karma bugs&quot;. Let me explain.&lt;/p&gt;

&lt;p&gt;Using a revisioning system is a good idea for any software development (ie: subversion, git or anything like that). Using a change management system is another (ie: bugzilla, mantis and others). Establishing procedures to track source code changes to bugs/change requests is even better. Simply said: every commit requires a (valid) issue number in the check-in comment.&lt;/p&gt;

&lt;p&gt;That procedure is easy to follow most of the time in software development. However, especially small things that need to be done shouldn&#39;t require developers to create an issue in the change management system in order to fix whatever little tidbit needs attention. Examples could be spelling errors in messages, documentation enhancements, additional unit tests and stuff like that. Noone wants to do these little things if the overhead for doing these is a burden (as creating a proper entry in a change management system usually is).&lt;/p&gt;

&lt;p&gt;The &quot;karma bug&quot; is a pre-created issue in the change management system that all developers can reference in their check-in messages for all these little good deeds (thus &quot;karma bug&quot;). At the end of the predefined validity perdiod of the karma bug (like a time period or a release target) all commits are evaluated and the developer with the highest score gets a reward. Just how the scoring is done is something that every project needs to determine theirselves. We&#39;ve used the number of changed lines as our scoring metric, but anything goes.&lt;/p&gt;

&lt;p&gt;I&#39;ve seen &quot;karma bugs&quot; work wonders for projects both in terms of developer acceptance (with respect to integrating revisioning and change management systems) and even code quality (because doing good deeds might yield rewards).&lt;/p&gt;
</description>
	    <dc:date>2011-01-31T00:47:41+01:00</dc:date>
	                                <wfw:comment>http://blog.akkaya.de/blojsom/commentapi/jpabel/thisandthat/2011/01/31/Karma-bugs</wfw:comment>
            <wfw:commentRss>http://blog.akkaya.de/jpabel/thisandthat/2011/01/31/Karma-bugs?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blog.akkaya.de/jpabel/thisandthat/2011/01/23/FFG-2011-TokenTube-presentation">
	    <title>FFG 2011 - TokenTube presentation</title>
	    <link>http://blog.akkaya.de/jpabel/thisandthat/2011/01/23/FFG-2011-TokenTube-presentation</link>
        <description>&lt;p&gt;My presentation about TokenTube has been accepted to the &lt;a href=&quot;http://www.guug.de/veranstaltungen/ffg2011/abstracts.html#4_5_1&quot;&gt;German Unix User Group&#39;s (aka &quot;GUUG&quot;) &quot;Frühjahrsfachgespräch&quot; (spring conference)&lt;/a&gt;. The event will take place in Weimar at the end of march.&lt;/p&gt;

&lt;p&gt;I agreed to submit a paper for the proceedings: yet another task on my to-do list.&lt;/p&gt;

</description>
	    <dc:date>2011-01-23T21:08:27+01:00</dc:date>
	                                <wfw:comment>http://blog.akkaya.de/blojsom/commentapi/jpabel/thisandthat/2011/01/23/FFG-2011-TokenTube-presentation</wfw:comment>
            <wfw:commentRss>http://blog.akkaya.de/jpabel/thisandthat/2011/01/23/FFG-2011-TokenTube-presentation?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blog.akkaya.de/jpabel/thisandthat/2011/01/17/Android-unlock-pattern-insecurity">
	    <title>Android unlock pattern insecurity</title>
	    <link>http://blog.akkaya.de/jpabel/thisandthat/2011/01/17/Android-unlock-pattern-insecurity</link>
        <description>&lt;p&gt;Last year a group from the University of Pennsylvania &lt;a href=&quot;http://www.csmonitor.com/Science/2010/0818/Smartphone-smudges-can-reveal-password-study-finds&quot;&gt;analyzed the security of Android&#39;s gesture unlock with respect to screen residue (&quot;smudges&quot;)&lt;/a&gt;. Their basic observation was that the fatty residues left behind by fingers are visible for long times and allow others to recover your unlock pattern just by looking at your mobile&#39;s touchscreen.&lt;/p&gt;

&lt;p&gt;One easy solution to this issue would be to add random start and finish points into the unlock pattern. Users would have to begin at a (randomly selected and highlighted) start position in the grid and draw (any) connection leading up their own pattern&#39;s starting position (&quot;prefix&quot;), draw their pattern and supplement it with (any) connection finishing at a (randomly selected and highlighted) finish position in the grid (&quot;suffix&quot;).&lt;/p&gt;

&lt;p&gt;Let me illustrate. The first image shows the &quot;original&quot; unlock pattern while the second image adds (rather trivial) &quot;prefix&quot; and &quot;suffix&quot; legs.&lt;/p&gt;
&lt;img src=&quot;http://blog.akkaya.de/blojsom/resources/jpabel/android_lock1.png&quot;/&gt; 
&lt;img src=&quot;http://blog.akkaya.de/blojsom/resources/jpabel/android_lock2.png&quot;/&gt;
&lt;p&gt;Picture 1: the &quot;original&quot; unlock pattern starts at (x=3,y=1), goes to (x=1,y=1) and finishes at (x=2,y=2).&lt;br/&gt;
Picture 2: the &quot;new&quot; unlock pattern starts at (x=3,y=2), goes to (x=3,y=1), continues to (x=1,y=1), over to (x=2,y=2) and finishes at (x=1,y=2).&lt;br/&gt;
Thus, the random start point in this example is (x=3,y=2) and the random finish point is (x=1,y=2). Obviously, most times randomly selected start and end points will make the effective unlock pattern a little more complex then in this example.&lt;/p&gt;

&lt;p&gt;Keep in mind though, that not only will the start and finish points be random: the user is entirely free to chose any path for either leg - as long as it ends up where it&#39;s supposed to. That should be enough to cause smudge mayhem and thus destroy any otherwise dominant smudges on the touchscreen.&lt;/p&gt;
</description>
	    <dc:date>2011-01-17T22:07:07+01:00</dc:date>
	                                <wfw:comment>http://blog.akkaya.de/blojsom/commentapi/jpabel/thisandthat/2011/01/17/Android-unlock-pattern-insecurity</wfw:comment>
            <wfw:commentRss>http://blog.akkaya.de/jpabel/thisandthat/2011/01/17/Android-unlock-pattern-insecurity?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blog.akkaya.de/jpabel/thisandthat/2011/01/07/Randomly-generated-PINs">
	    <title>Randomly generated PINs</title>
	    <link>http://blog.akkaya.de/jpabel/thisandthat/2011/01/07/Randomly-generated-PINs</link>
        <description>&lt;p&gt;I&#39;ve just got a new banking card (&quot;EC-Karte&quot;) and my new PIN. Surprise: my new &quot;randomly&quot; generated PIN is the same as the &quot;randomly&quot; generated PIN from one of my previous cards.&lt;/p&gt;

&lt;p&gt;I&#39;ve had quite a number of cards over the years (obviously, they don&#39;t like me sitting on them when they&#39;re in my wallet) and have observed this reoccurance of same PINs a few years ago. However, back than I didn&#39;t keep record of which card at which time had which PIN; it was more of a faint recollection like &quot;hey, didn&#39;t I already have this PIN in the past?&quot;.&lt;/p&gt;

&lt;p&gt;As of today I have proof (as in documentation) that the &quot;randomly&quot; generated PIN for my new card is the same as the &quot;randomly&quot; generated PIN from my card issued in 2007. Obviously, I&#39;ve already changed the PIN using the online banking system to something else.&lt;/p&gt;

&lt;p&gt;All in all, I would say that with the ~10 cards I&#39;ve had over the last 15 years I&#39;ve only seen about 3 (at the most 4) different PINs assigned to me. I guess they&#39;ve adopted &lt;a href=&quot;http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-0166&quot;&gt;Debian&#39;s PRNG implementation&lt;/a&gt; long before even Debian did.&lt;/p&gt;
</description>
	    <dc:date>2011-01-07T17:20:58+01:00</dc:date>
	                                <wfw:comment>http://blog.akkaya.de/blojsom/commentapi/jpabel/thisandthat/2011/01/07/Randomly-generated-PINs</wfw:comment>
            <wfw:commentRss>http://blog.akkaya.de/jpabel/thisandthat/2011/01/07/Randomly-generated-PINs?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blog.akkaya.de/jpabel/thisandthat/2011/01/06/Self-induced-X-509-validity-issue-solved">
	    <title>Self-induced X.509 validity issue solved</title>
	    <link>http://blog.akkaya.de/jpabel/thisandthat/2011/01/06/Self-induced-X-509-validity-issue-solved</link>
        <description>&lt;p&gt;What happens if you have a CA hierachy and one of the intermediary certificates expires? With good planing, nothing should happen: one generates a new intermediary certificate and all future certificates are signed using that new intermediary certificate. Without good planing (and proper execution), it&#39;s a big mess. This is my story...&lt;/p&gt;

&lt;p&gt;For clarification, I&#39;ll refer to the (self-signed) root CA certificate as &quot;root&quot; (by X.509 extension, this certificate is marked as being capable of signing it&#39;s own sub-certificates and thus becomes a &quot;certification authority&quot;/&quot;CA&quot;). The &quot;root&quot; certificate is used to sign the &quot;intermediary&quot; CA certificate (this certificate is also &quot;marked&quot; as being capable of signing it&#39;s own sub-certificates). The &quot;intermediary&quot; CA signs any number of &quot;entity&quot; certificates (which lack the X.509 extension marker and are thus not capable of signing any sub-certificates).&lt;/p&gt;

&lt;p&gt;Proper certificate planing mandates that the validity of all involved certificates should be &quot;inclusive&quot;: the validity of the &quot;intermediary&quot; certificate is entirely within the validity of the &quot;root&quot; certificate and all &quot;entity&quot; certificates are created to be valid within the validity of the &quot;intermediary&quot; certificate only. However, adhering to this plan is not trivial: it requires a properly timed transition phase in which a successor &quot;intermediary&quot; certificate is created before the expiration of the current &quot;intermediary&quot; certificate. Also, all &quot;entity&quot; certificates need to be regenerated using the successor &quot;intermediary&quot; certificate. The deployment of those new certificates needs to occur before the expiration of the current &quot;intermediary&quot; certificate. Thus, the current and successor &quot;intermediary certificates need to overlap in their validity.&lt;/p&gt;

&lt;p&gt;What happens proper certificate planning didn&#39;t occur? A certificate hierarchy that is not &quot;inclusively&quot; valid leads to a situation in which the &quot;intermediary&quot; certificate expires while &quot;entity&quot; certificates are still valid. The issue is that certificate validation fails because the &quot;intermediary&quot; certificate has expired. Renewing the &quot;intermediary&quot; certificate is the correct solution, but: while a regular certificate renewal (not neccessarily but quite) commonly implies the continued use of the same &quot;intermediary&quot; key it slightly changes the identity of the &quot;intermediary&quot; certificate. While the certificate&#39;s subject (distinguished name) can - and should - remain unchanged, it&#39;s the certificate&#39;s serial number that changes. This wouldn&#39;t be an issue, if the &quot;entity&quot; certificate didn&#39;t include the serial number of its &quot;parent&quot; as part of the parent&#39;s identity in the &quot;Authority Key Identifier&quot; extension:&lt;/p&gt;

&lt;pre&gt;
[snip]
            X509v3 Authority Key Identifier: 
                keyid:D4:E6:B9:D9:FC:B4:9B:B2:FD:08:FB:A6:31:CC:88:FD:1E:30:1C:4F
                DirName:/C=DE/ST=NRW/L=Koeln/O=Akkaya Consulting/CN=intermediary/emailAddress=intermediary@akkaya.de
                serial:02
[snip]
&lt;/pre&gt;

&lt;p&gt;A &quot;standard&quot; renewal of the &quot;intermediary&quot; certificate implies a new serial number for the &quot;intermediary&quot; certificate and thus the validation of the &quot;entity&quot; certificate fails because either the (old) &quot;intermediary&quot; certificate has expired or the (new) &quot;intermediary&quot; certificate&#39;s serial number does not match the serial number specified in the &quot;entity&quot; certificate&#39;s &quot;Authority Key Identifier&quot;. Doh.&lt;/p&gt;

&lt;p&gt;The question is how to renew the &quot;intermediary&quot; certificate without issuing a new serial number. The solution is actually quite trivial (but not-so-trivial to find):&lt;/p&gt;

&lt;pre&gt;
openssl x509 -in intermediary_old-cert.pem -out intermediary_new-cert.pem \
             -CA root-cert.pem -CAkey root-key.pem \
             -CAcreateserial -CAserial /tmp/dummy-$$.srl -set_serial OLD_SERIAL \
             -days VALIDITY_IN_DAYS_FROM_NOW
&lt;/pre&gt;

&lt;p&gt;Problem solved and solution documented: yeay.&lt;/p&gt;
</description>
	    <dc:date>2011-01-06T18:09:27+01:00</dc:date>
	                                <wfw:comment>http://blog.akkaya.de/blojsom/commentapi/jpabel/thisandthat/2011/01/06/Self-induced-X-509-validity-issue-solved</wfw:comment>
            <wfw:commentRss>http://blog.akkaya.de/jpabel/thisandthat/2011/01/06/Self-induced-X-509-validity-issue-solved?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blog.akkaya.de/jpabel/thisandthat/2011/01/04/AXcrypt-for-Linux">
	    <title>AXcrypt for Linux</title>
	    <link>http://blog.akkaya.de/jpabel/thisandthat/2011/01/04/AXcrypt-for-Linux</link>
        <description>&lt;p&gt;A new year means new ideas for my todo-list: a Linux implementation for AXcrypt, complete with Nautilus integration and all.&lt;/p&gt;

&lt;p&gt;Unfortunately, it looks like porting the Windows implementation won&#39;t be easy since it makes use of some Visual C++ specific features and libraries.&lt;/p&gt;

</description>
	    <dc:date>2011-01-04T20:52:18+01:00</dc:date>
	                                <wfw:comment>http://blog.akkaya.de/blojsom/commentapi/jpabel/thisandthat/2011/01/04/AXcrypt-for-Linux</wfw:comment>
            <wfw:commentRss>http://blog.akkaya.de/jpabel/thisandthat/2011/01/04/AXcrypt-for-Linux?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blog.akkaya.de/jpabel/thisandthat/2010/12/31/After-the-FrozenCache-presentation">
	    <title>After the FrozenCache presentation</title>
	    <link>http://blog.akkaya.de/jpabel/thisandthat/2010/12/31/After-the-FrozenCache-presentation</link>
        <description>&lt;p&gt;A couple additional notes regarding to my presentation:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;I&#39;ve uploaded my slides to the &lt;a href=&quot;https://events.ccc.de/congress/2010/Fahrplan/events/4018.en.html&quot;&gt;presentation page&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Please &lt;a href=&quot;https://cccv.pentabarf.org/feedback/27C3/event/4018.en.html&quot;&gt;give some feedback&lt;/a&gt; if you attended or watched the presentation&lt;/li&gt;
	&lt;li&gt;I&#39;ve found a recording of the presentation&lt;/li&gt;
&lt;/ul&gt;

&lt;object width=&quot;640&quot; height=&quot;385&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/_CZacpbe36Y?fs=1&amp;amp;hl=en_US&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/_CZacpbe36Y?fs=1&amp;amp;hl=en_US&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;640&quot; height=&quot;385&quot;&gt;&lt;/embed&gt;&lt;/object&gt;

&lt;p&gt;I would like to thank everybody for the great questions during and after the event. Also, it was really interesting to talk to the &lt;a href=&quot;http://wiki.fukt.bsnet.se/wiki/Mandos&quot;&gt;Mandos&lt;/a&gt; guys afterwards - you guys are great and you&#39;re software is direly needed.
</description>
	    <dc:date>2010-12-31T15:58:54+01:00</dc:date>
	                                <wfw:comment>http://blog.akkaya.de/blojsom/commentapi/jpabel/thisandthat/2010/12/31/After-the-FrozenCache-presentation</wfw:comment>
            <wfw:commentRss>http://blog.akkaya.de/jpabel/thisandthat/2010/12/31/After-the-FrozenCache-presentation?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blog.akkaya.de/jpabel/thisandthat/2010/12/29/FrozenCache-at-27c3">
	    <title>FrozenCache at 27c3</title>
	    <link>http://blog.akkaya.de/jpabel/thisandthat/2010/12/29/FrozenCache-at-27c3</link>
        <description>&lt;p&gt;My talk has been prominently mentioned/described &lt;a href=&quot;http://events.ccc.de/2010/12/28/frozen-cache/&quot;&gt;on the CCC events page&lt;/a&gt;. Whether that means that resident hackers will skip out on hacker jeopardy (same timeslot) remains to be seen.&lt;/p&gt;

</description>
	    <dc:date>2010-12-29T03:10:12+01:00</dc:date>
	                                <wfw:comment>http://blog.akkaya.de/blojsom/commentapi/jpabel/thisandthat/2010/12/29/FrozenCache-at-27c3</wfw:comment>
            <wfw:commentRss>http://blog.akkaya.de/jpabel/thisandthat/2010/12/29/FrozenCache-at-27c3?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blog.akkaya.de/jpabel/thisandthat/2010/12/27/StressCon">
	    <title>StressCon</title>
	    <link>http://blog.akkaya.de/jpabel/thisandthat/2010/12/27/StressCon</link>
        <description>&lt;p&gt;My stress level has been continuously high over the course of the last months. Only for the last two days I&#39;ve been able to back off a little bit. At some point I&#39;ve jokingly coined the term &quot;StressCon&quot; to indicate my current stress level. StressCon is supposed to indicate the level of outstanding work in relation to its priority and deadline.&lt;/p&gt;

&lt;p&gt;I was thinking of creating a website, widget and all those other goodies that you&#39;d expect. Unfortunately, stresscon.com is already taken (for an entirely different purpose).&lt;/p&gt;

&lt;p&gt;For now, there&#39;s another task on my immediate to-do list: my upcoming &lt;a href=&quot;http://events.ccc.de/congress/2010/Fahrplan/events/4018.en.html&quot;&gt;presentation at 27c3&lt;/a&gt; (and there&#39;s plenty of work left to do).&lt;/p&gt;
</description>
	    <dc:date>2010-12-27T00:39:05+01:00</dc:date>
	                                <wfw:comment>http://blog.akkaya.de/blojsom/commentapi/jpabel/thisandthat/2010/12/27/StressCon</wfw:comment>
            <wfw:commentRss>http://blog.akkaya.de/jpabel/thisandthat/2010/12/27/StressCon?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blog.akkaya.de/jpabel/thisandthat/2010/11/16/Hash-based-One-Time-Passwords">
	    <title>Hash based One-Time-Passwords</title>
	    <link>http://blog.akkaya.de/jpabel/thisandthat/2010/11/16/Hash-based-One-Time-Passwords</link>
        <description>&lt;p&gt;I keep getting asked about hash-based one-time-password mechanisms, so I decided to write-up a little blog entry.&lt;/p&gt;

&lt;p&gt;First, let&#39;s take a 10-mile-high look at hash functions, willingly ignoring all security-relevant aspects. One of the traits a cryptographic hash function should exhibit is that for an input value X an output value X&#39; is computed, which can not be used to deduce the original input value of X. For example, given the input value&lt;/p&gt;

&lt;pre&gt;X = 4711&lt;/pre&gt;

&lt;p&gt;then a pseudo-hash function could be to just add up all the number&#39;s digits. Thus, this pseudo-hash function would yield the result value&lt;/p&gt;

&lt;pre&gt;X&#39; = 13&lt;/pre&gt;

&lt;p&gt;because 4+7+1+1 equals 13. However, given the result value 13 one can not deduce the original input precisely (other input values will also yield 13 but we&#39;ll ignore this aspect for now). This computation is employed recursively in hash-based one-time-password algorithms: given a passwort of&lt;/p&gt;

&lt;pre&gt;X = 74117101114103101110809798101108&lt;/pre&gt;

&lt;p&gt;than the first iteration yields&lt;/p&gt;

&lt;pre&gt;X&#39; = 88&lt;/pre&gt;

&lt;p&gt;and the second iteration produces&lt;/p&gt;

&lt;pre&gt;X&#39;&#39; = 16&lt;/pre

&lt;p&gt;while the third iteration returns&lt;/p&gt;

&lt;pre&gt;X&#39;&#39;&#39; = Y = 7&lt;/pre&gt;

&lt;p&gt;and we&#39;ll stop here for the demonstration purposes (and because we can not proceed in a meaningful manner with a single digit value).&lt;/p&gt;

&lt;p&gt;Now, let&#39;s construct our one-time-password mechanism using our pseudo-hash function: the user enrolls by providing the n&#39;th hash of his password to the server. For our example, let n be 3; hence, our user enrolls by submitting n=3 and Y=7 to the server. The user is subsequently able to authenticate by sending n=2 and X=16 to the server: the server validates that the hash value of X (-&gt; 16) equals to the stored value of Y (-&gt; 7) and since that is correct it now stores n=2 and Y=16 in its database. The next user authentication would send n=1 and X=88 to the server and the validation would pass once again. However, at this point our one-time password logic has reached it&#39;s practical limits because n would be 0 next and thus the original password would have to be sent to the server (which we don&#39;t want to do).&lt;/p&gt;

&lt;p&gt;Real one-time-password implementations commonly use values of 500 or even 5000 for n. Therefore, they allow a feasible number of successful authentications before requiring a password change. A beneficial trait of real cryptographic hash functions is that they (usually) produce results of a constant length. Thus, the length of the inputs and outputs remain constant (whereas our cross-summing approach requires ever increasing numbers for every increase in n).&lt;/p&gt;

&lt;p&gt;Last - but definitively not least - we must also realize that cross-summing lacks (at least) two important security and cryptographic traits:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;it&#39;s not collision free: for any given Y a (rather random but) valid X is easily computed and that number could (fraudulently) be used for authentication,&lt;/li&gt;
&lt;li&gt;it&#39;s enumerable/brute-forceable (unless X is reaalllly large and n is reallly small and thus impractical to handle).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That&#39;s it - well, not really: many other security aspects need to be addressed, but an entirely different blog entry.&lt;/p&gt;
</description>
	    <dc:date>2010-11-16T01:47:41+01:00</dc:date>
	                                <wfw:comment>http://blog.akkaya.de/blojsom/commentapi/jpabel/thisandthat/2010/11/16/Hash-based-One-Time-Passwords</wfw:comment>
            <wfw:commentRss>http://blog.akkaya.de/jpabel/thisandthat/2010/11/16/Hash-based-One-Time-Passwords?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blog.akkaya.de/jpabel/thisandthat/2010/10/23/The-transport-encryption-gap">
	    <title>The transport encryption gap</title>
	    <link>http://blog.akkaya.de/jpabel/thisandthat/2010/10/23/The-transport-encryption-gap</link>
        <description>&lt;p&gt;Although I initially had my reservations about the increased use of client-side Javascript in Webpages (which is in fact a significant security risk as with XSS injections) there&#39;re new opportunities for additional architectural security &quot;features&quot; that websites can implement. What I am talking about is the ability to use client-side computational capabilities to establish an additional cryptographic security layer. For example, take the &quot;traditional&quot; (albeit mostly outdated) website architecture:&lt;/p&gt;

&lt;img src=&quot;http://blog.akkaya.de/blojsom/resources/jpabel/ssl1.png&quot; alt=&quot;SSL 1/5&quot; /&gt;

&lt;p&gt;This scenario implies that any employed transport security (HTTPS -&gt; SSL/TLS) provides an end-to-end protection for any data users submit to the website because the webserver in effect would terminate the SSL/TLS connection and process the data itself (ignoring any security issues relating to persistance). However, because SSL/TLS termination is computationally expensive most major websites deployed dedicated systems to terminate the SSL/TLS connection in order to offload the cryptographic operations to a dedicated (usually proprietary) systems:&lt;/p&gt;

&lt;img src=&quot;http://blog.akkaya.de/blojsom/resources/jpabel/ssl2.png&quot; alt=&quot;SSL 2/5&quot; /&gt;

&lt;p&gt;However, most often websites implement a multi-tier architecture in which the webserver is separate from the application-server (which runs the business logic) like so:&lt;/p&gt;

&lt;img src=&quot;http://blog.akkaya.de/blojsom/resources/jpabel/ssl3.png&quot; alt=&quot;SSL 3/5&quot; /&gt;

&lt;p&gt;While the use of SSL/TLS terminators and application-servers makes perfect sense from a system-architectural perspective it introduces an additional security issue - the &quot;encryption gap&quot;:&lt;/p&gt;

&lt;img src=&quot;http://blog.akkaya.de/blojsom/resources/jpabel/ssl4.png&quot; alt=&quot;SSL 4/5&quot; /&gt;
 
&lt;p&gt;This might not seem like a significant issue because the prime purpose of SSL/TLS is usually to provide protection for communications spanning insecure networks (ie: the Internet). However, even &quot;internal&quot; networks are more often than not rather not-too-secure because many different parties might obtain access to the network communications between the SSL Terminator and webservers as well as the network segments between the webservers and the application-servers.&lt;/p&gt;

&lt;p&gt;The aforementioned opportunity for improving security is that the presumed client-side computational capabilities (Javascript) can be employed to implement an additional cryptographic layer in order to provide an effective end-to-end protection for data transferred between the client and the application-server:&lt;/p&gt;

&lt;img src=&quot;http://blog.akkaya.de/blojsom/resources/jpabel/ssl5.png&quot; alt=&quot;SSL 5/5&quot; /&gt;
&lt;p&gt;Naturally, this assumes that the application-server implements sufficient safeguards for protecting the data it processes - but that&#39;s an entirely different story. What&#39;s surprising is that this additional security layer is virtually never deployed, although ready-to-use implementations (libraries) exist. My assumption is that this is because they aren&#39;t bundled in major application frameworks just yet and most application architects are unaware of the possibilities.&lt;/p&gt;

&lt;p&gt;I think I&#39;ve established the conceptual issue at hand - let&#39;s get to the practical part: what ready-to-use implementations was I referring to? The underlying and (cryptographically) established protocol is the &quot;&lt;a href=&quot;http://srp.stanford.edu/&quot;&gt;Secure Remote Password&lt;/a&gt;&quot; (SRP) protocol. Implementing SRP requires a change as to how one approaches user authentication: usually the submitted password is matched against a record in the application&#39;s database (which is hopefully a salted and hashed representation of the user&#39;s password) in order to evaluate the validity of the submitted user credentials. The SRP&#39;s core paradigm is to shift away from this compare-and-decide approach and towards a cryptographic proof-of-knowledge approach. The benefit to this approach is that a by-product of this cryptographic verification can be used to establish a shared secret know only to the client and the application-server. This shared secret can than be used to encrypt any sensitive data within the SSL/TLS layer in order to prevent interception in between the SSL/TLS Terminator and the application-server - thus closing the &quot;encryption gap&quot;.&lt;/p&gt;

&lt;p&gt;An exceptional &lt;a href=&quot;http://srp.stanford.edu/demo/demo.html&quot;&gt;demo page&lt;/a&gt; is provided on the SRP&#39;s homepage. It requires Java but is well worth the effort since it neatly details the involved computational steps. Lastly, let me point you to the promised ready-to-use implementations:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://srp.stanford.edu/links.html&quot;&gt;SRP&#39;s &quot;links&quot; page&lt;/a&gt; lists several implementation by programming language&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.denksoft.com/wordpress/?page_id=26&quot;&gt;Denksoft&#39;s PHP implementation&lt;/a&gt; (I really don&#39;t know why it isn&#39;t listed on the SRP&#39;s link page)&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
</description>
	    <dc:date>2010-10-23T02:26:55+02:00</dc:date>
	                                <wfw:comment>http://blog.akkaya.de/blojsom/commentapi/jpabel/thisandthat/2010/10/23/The-transport-encryption-gap</wfw:comment>
            <wfw:commentRss>http://blog.akkaya.de/jpabel/thisandthat/2010/10/23/The-transport-encryption-gap?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blog.akkaya.de/jpabel/thisandthat/2010/10/20/SELinux">
	    <title>SELinux</title>
	    <link>http://blog.akkaya.de/jpabel/thisandthat/2010/10/20/SELinux</link>
        <description>&lt;p&gt;I&#39;ve come across a great resource for SELinux: &lt;a href=&quot;http://selinux-mac.blogspot.com/&quot;&gt;http://selinux-mac.blogspot.com/&lt;/a&gt;. Especially the 10 part SELinux tutorial is recommended for anyone new to SELinux: &lt;a href=&quot;http://selinux-mac.blogspot.com/2009/06/selinux-lockdown-part-one-confined.html&quot;&gt;http://selinux-mac.blogspot.com/2009/06/selinux-lockdown-part-one-confined.html&lt;/a&gt;.&lt;/p&gt;
</description>
	    <dc:date>2010-10-20T19:24:34+02:00</dc:date>
	                                <wfw:comment>http://blog.akkaya.de/blojsom/commentapi/jpabel/thisandthat/2010/10/20/SELinux</wfw:comment>
            <wfw:commentRss>http://blog.akkaya.de/jpabel/thisandthat/2010/10/20/SELinux?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blog.akkaya.de/jpabel/thisandthat/2010/08/25/Secure-PIN-entry-and-cheap-RFID-readers">
	    <title>Secure PIN entry and cheap RFID readers</title>
	    <link>http://blog.akkaya.de/jpabel/thisandthat/2010/08/25/Secure-PIN-entry-and-cheap-RFID-readers</link>
        <description>&lt;p&gt;The German government will start issuing national ID cards equipped with RFID chips later on this year. One of the proclaimed scenarios is to use it with a RFID reader for identification and/or age verification on the Internet. To promote adoption the government will distribute one million USB reader devices for free upon request. One catch is that these reader devices are simple RFID reader devices - they lack essential security features like a build-in keypad for secure PIN entry. Rather, the PIN is entered into a software running on the computer via computer&#39;s keyboard and relayed into the RFID card reader. Any computer security expert will tell you that this is a fairly risky endeavour: the PIN might be intercepted during entry on the computer if malware is present on the computer.&lt;/p&gt;

&lt;p&gt;Obviously, the question to ask is how can such reader devices be designed to be more secure and still be manufactured cheaply? Here&#39;s an idea: embed a USB host port and a simple microcontroller on the RFID reader device and connect your USB keyboard (assuming a non-laptop computer) to the reader device (instead of the computer&#39;s USB port). In normal operation mode, the reader device would relay all input from its attached keyboard to the computer&#39;s USB port; thus, the reader will act as a simple data relay. However, any time an application issues a request to the ID card and the user is asked to authenticate by entering their PIN than the reader device could choose to not relay key input to the computer but rather re-route (for lack of a better term) it to the RFID interface for authentication to the ID card.&lt;/p&gt;

&lt;p&gt;I&#39;m not going to delve into technical details right now, but I&#39;m sure such a design would be resistant against PIN interception if implemented correctly. Leave some comments and I&#39;ll detail this idea further (multiple USB device classes, driver implementation aspects, etc) - I won&#39;t bother otherwise.&lt;/p&gt;
</description>
	    <dc:date>2010-08-25T00:14:12+02:00</dc:date>
	                                <wfw:comment>http://blog.akkaya.de/blojsom/commentapi/jpabel/thisandthat/2010/08/25/Secure-PIN-entry-and-cheap-RFID-readers</wfw:comment>
            <wfw:commentRss>http://blog.akkaya.de/jpabel/thisandthat/2010/08/25/Secure-PIN-entry-and-cheap-RFID-readers?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
    
</rdf:RDF>
