<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>blueblog - by Christian J. Dietrich</title>
    <link>http://blog.cj2s.de/</link>
    <description>on malware, botnets and the like by Christian J. Dietrich</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.5.5 - http://www.s9y.org/</generator>
    <pubDate>Thu, 15 Mar 2012 17:19:39 GMT</pubDate>

    <image>
        <url>http://blog.cj2s.de/templates/bulletproof/img/s9y_banner_small.png</url>
        <title>RSS: blueblog - by Christian J. Dietrich - on malware, botnets and the like by Christian J. Dietrich</title>
        <link>http://blog.cj2s.de/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Preventing ARP flux on Linux</title>
    <link>http://blog.cj2s.de/archives/29-Preventing-ARP-flux-on-Linux.html</link>
            <category>Securing Linux</category>
    
    <comments>http://blog.cj2s.de/archives/29-Preventing-ARP-flux-on-Linux.html#comments</comments>
    <wfw:comment>http://blog.cj2s.de/wfwcomment.php?cid=29</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.cj2s.de/rss.php?version=2.0&amp;type=comments&amp;cid=29</wfw:commentRss>
    

    <author>nospam@example.com (Christian J. Dietrich)</author>
    <content:encoded>
    ARP, the address resolution protocol, is used on an Ethernet network to map IP addresses to hardware (MAC) addresses. By default, a Linux box with several network interfaces will respond to ARP requests received on any interface for any of the IP addresses of its interfaces. Here is an example: Let&#039;s assume we have a box which is connected with two interfaces A (MAC 00:00:00:AA:AA:AA) and B (MAC 00:00:00:BB:BB:BB). Interface A is configured to the IP address 172.16.0.1 and B to 172.16.0.2. Thus, both interfaces point to the same segment.&lt;br /&gt;
&lt;br /&gt;
We use arping to query for the hardware address of the IP address 172.16.0.1 and expect to get the MAC address 00:00:00:AA:AA:AA of interface A in return.&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
[root@nugger]# arping -I eth0 172.16.0.1&lt;br /&gt;
ARPING 172.16.0.1 from 172.16.0.99 eth0&lt;br /&gt;
Unicast reply from 172.16.0.1 [00:00:00:AA:AA:AA]  7.889ms&lt;br /&gt;
Unicast reply from 172.16.0.1 [00:00:00:BB:BB:BB]  8.014ms&lt;br /&gt;
&lt;br /&gt;
[root@nugger]# arping -I eth0 172.16.0.2&lt;br /&gt;
ARPING 172.16.0.2 from 172.16.0.99 eth0&lt;br /&gt;
Unicast reply from 172.16.0.2 [00:00:00:AA:AA:AA]  6.612ms&lt;br /&gt;
Unicast reply from 172.16.0.2 [00:00:00:BB:BB:BB]  8.991ms&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
Instead, we get the MACs of A and B alternating. You can tune this behavior using arp_ignore and arp_announce sysctl properties:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
arp_ignore - INTEGER&lt;br /&gt;
Define different modes for sending replies in response to&lt;br /&gt;
received ARP requests that resolve local target IP addresses:&lt;br /&gt;
0 - (default): reply for any local target IP address, configured&lt;br /&gt;
on any interface&lt;br /&gt;
1 - reply only if the target IP address is local address&lt;br /&gt;
configured on the incoming interface&lt;br /&gt;
2 - reply only if the target IP address is local address&lt;br /&gt;
configured on the incoming interface and both with the&lt;br /&gt;
sender&#039;s IP address are part from same subnet on this interface&lt;br /&gt;
3 - do not reply for local addresses configured with scope host,&lt;br /&gt;
only resolutions for global and link addresses are replied&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
arp_announce - INTEGER&lt;br /&gt;
Define different restriction levels for announcing the local&lt;br /&gt;
source IP address from IP packets in ARP requests sent on&lt;br /&gt;
interface:&lt;br /&gt;
0 - (default) Use any local address, configured on any interface&lt;br /&gt;
...&lt;br /&gt;
2 - Always use the best local address for this target.&lt;br /&gt;
In this mode we ignore the source address in the IP packet&lt;br /&gt;
and try to select local address that we prefer for talks with&lt;br /&gt;
the target host. Such local address is selected by looking&lt;br /&gt;
for primary IP addresses on all our subnets on the outgoing&lt;br /&gt;
interface that include the target IP address. If no suitable&lt;br /&gt;
local address is found we select the first local address&lt;br /&gt;
we have on the outgoing interface or on all other interfaces,&lt;br /&gt;
with the hope we will receive reply for our request and&lt;br /&gt;
even sometimes no matter the source IP address we announce.&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Setting net.ipv4.conf.all.arp_ignore=1 and net.ipv4.conf.all.arp_announce=2 in /etc/sysctl.conf provides adequate settings. However, you should check whether these settings work in your network environment, especially if you depend on reaching an IP address from any other than the interface that it is configured on.&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
net.ipv4.conf.all.arp_ignore=1&lt;br /&gt;
net.ipv4.conf.all.arp_announce=2&lt;br /&gt;
&lt;/pre&gt; 
    </content:encoded>

    <pubDate>Tue, 13 Mar 2012 09:05:11 +0100</pubDate>
    <guid isPermaLink="false">http://blog.cj2s.de/archives/29-guid.html</guid>
    
</item>
<item>
    <title>Feederbot - a bot using DNS as carrier for its C&amp;C</title>
    <link>http://blog.cj2s.de/archives/28-Feederbot-a-bot-using-DNS-as-carrier-for-its-CC.html</link>
            <category>Botnets</category>
    
    <comments>http://blog.cj2s.de/archives/28-Feederbot-a-bot-using-DNS-as-carrier-for-its-CC.html#comments</comments>
    <wfw:comment>http://blog.cj2s.de/wfwcomment.php?cid=28</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.cj2s.de/rss.php?version=2.0&amp;type=comments&amp;cid=28</wfw:commentRss>
    

    <author>nospam@example.com (Christian J. Dietrich)</author>
    <content:encoded>
    DNS as carrier for botnet C&amp;C seems to be getting popular. Concerning its usage as botnet C&amp;C, DNS has not been seen so far. Additionally, in typical network environments, DNS (at least when destined for the preconfigured DNS resolvers) is usually one of the few protocols – if not the only one – that is allowed to pass without further ado. Thus, botnets using DNS as C&amp;C benefit from the fact that currently there is no specifically tailored detection mechanism, which in turn, raises the probability for the botnet to remain undetected. &lt;br /&gt;
&lt;br /&gt;
During our &lt;a href=&quot;http://blog.cj2s.de/archives/27-DNS-as-carrier-for-botnet-CC.html&quot; target=&quot;_blank&quot;&gt;work on covert communication of botnet command and control channels&lt;/a&gt;, we analyzed Feederbot in some detail and monitored it over the last year. In this post, I will provide some insight on the C&amp;C. &lt;br /&gt;
Not only Feederbot, but also &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.symantec.com/connect/blogs/morto-worm-sets-dns-record&#039;]);&quot;  href=&quot;http://www.symantec.com/connect/blogs/morto-worm-sets-dns-record&quot; target=&quot;_blank&quot;&gt;Morto&lt;/a&gt; seems to be using DNS as carrier for its command and control channel.&lt;br /&gt;
&lt;br /&gt;
But let us focus on Feederbot for now. Feederbot uses valid DNS syntax for its DNS messages. Messages from the C&amp;C server to the bot are transmitted in the rdata field of a TXT resource record. The DNS requests have the several different schemes for the question domain name (qname), similar to the following where [CHUNK-ID] is an int &gt;= 0, incremented by 1:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
[50 bytes].[CHUNK-ID].[qdparam].0.f2.[TLD].   IN   TXT&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
The DNS responses typically carry one TXT RR in the answer section (sometimes repeated in the authority section) with a 220 byte string that is base64 encoded. Here is an example:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
xMtwHYRyZu/z4QbhBKZIVWvPBfiuGn+jb1WQxtZN7PR9Wf0sfnAqxDOJD9LgmwfFaU&lt;br /&gt;
Go6fdtgZ0lIQyAx1VWJw+vzdHdxMpHu6xfMRq8sVSfqwPvI9TEIV8pkXw4P4TCSH05&lt;br /&gt;
BAO1LGPMQ+XD+TYLY2woxM1j06mCMhrNjWzI8WbmCBlj2/dpR73KBnDl/DRmheKWMJ&lt;br /&gt;
x2dUTp4iFMH4N9kXjeOYis&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
Once base64 decoded, the messages are still no real plaintext, because they are encrypted with RC4. Feederbot uses a variety of different RC4 encryption keys and even stacks RC4 encryption. A specific part of the DNS query domain name is used to transmit parameters for key derivation. As an example, one such parametrized key derivation function takes as input a substring of the query domain name, denoted as &#039;qdparam&#039; in the example above. The value of the substring &#039;qdparam&#039; is then RC4-encrypted with the (constant) string “feedme” (hence the name of the bot) and the result is used to initialize the RC4 decryption of the actual C&amp;C message chunks. The stream cipher is used in a stateful manner, so that if a message chunk gets lost, decryption of all subsequent message chunks will fail. In addition, Feederbot’s C&amp;C message chunks make use of cyclic redundancy checks to verify the decryption result. The CRC32 checksum preceeds message chunk payload and is not encrypted.&lt;br /&gt;
&lt;!-- s9ymdb:20 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;400&quot; height=&quot;172&quot;  src=&quot;http://blog.cj2s.de/uploads/feederbot-message-chunks.png&quot;  alt=&quot;Feederbot DNS message chunk&quot; /&gt;&lt;br /&gt;
The fact that CRC32 checksums are used makes it comfortable to know whether decryption works or not. Interestingly, we have seen ANY as resource record type in some of the queries, too. In order to perform the DNS requests, the bot relies on Windows DNSAPI.dll::DnsQuery_W.&lt;br /&gt;
&lt;br /&gt;
The following figure shows an important part of the disassembled RC4 initialization routine:&lt;br /&gt;
&lt;!-- s9ymdb:21 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;1122&quot; height=&quot;278&quot;  src=&quot;http://blog.cj2s.de/uploads/rc4init.assembler.png&quot;  alt=&quot;RC4 initialization routine&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Well, the drawback of encryption is that you need a key and you better choose one that is easy to remember, such as:&lt;br /&gt;
&lt;!-- s9ymdb:22 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;658&quot; height=&quot;207&quot;  src=&quot;http://blog.cj2s.de/uploads/beefdead.png&quot;  alt=&quot;&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
So, what is the lesson we learn from Feederbot? Watch your DNS traffic!&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Fri, 02 Sep 2011 18:05:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.cj2s.de/archives/28-guid.html</guid>
    
</item>
<item>
    <title>DNS as carrier for botnet C&amp;C</title>
    <link>http://blog.cj2s.de/archives/27-DNS-as-carrier-for-botnet-CC.html</link>
            <category>Botnets</category>
    
    <comments>http://blog.cj2s.de/archives/27-DNS-as-carrier-for-botnet-CC.html#comments</comments>
    <wfw:comment>http://blog.cj2s.de/wfwcomment.php?cid=27</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.cj2s.de/rss.php?version=2.0&amp;type=comments&amp;cid=27</wfw:commentRss>
    

    <author>nospam@example.com (Christian J. Dietrich)</author>
    <content:encoded>
    Botnets have become one of the biggest security issues on the Internet imposing a variety of threats to Internet users. Advances in malware research have challenged botnet operators to improve the resilience of their C&amp;C traffic. Partly, this has been achieved by moving towards decentralized structures (like P2P) or by otherwise obfuscating and even encrypting communication. &lt;br /&gt;
&lt;br /&gt;
Recently, &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.christian-rossow.de&#039;]);&quot;  href=&quot;http://www.christian-rossow.de&quot; target=&quot;_blank&quot;&gt;Christian Rossow&lt;/a&gt; and me, we looked into what we term covert communication, that is command and control communication which is hidden in what seems to be regular Internet traffic. We discovered and reverse engineered Feederbot, a botnet that uses DNS as carrier for its command and control. Using k-Means clustering and a Euclidean Distance based classifier, we correctly classified more than 14 million DNS transactions of 42,143 malware samples concerning DNS C&amp;C usage. Interestingly, this analysis revealed yet another bot family with DNS C&amp;C. In addition, we correctly detected DNS C&amp;C in mixed office workstation network traffic.&lt;br /&gt;
&lt;br /&gt;
&lt;table style=&quot;margin-top:0px&quot; border=&quot;0&quot;&gt;&lt;br /&gt;
&lt;tr&gt;&lt;td&gt;&lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/2011.ec2nd.org/program/&#039;]);&quot;  href=&quot;http://2011.ec2nd.org/program/&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://2011.ec2nd.org/static/ec2nd.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;
&lt;td&gt;Our paper dealing with &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.cj2s.de/On-Botnets-that-use-DNS-for-Command-and-Control.pdf&#039;]);&quot;  href=&quot;http://www.cj2s.de/On-Botnets-that-use-DNS-for-Command-and-Control.pdf&quot; target=&quot;_blank&quot;&gt;DNS as carrier for botnet command and control channels&lt;/a&gt; got accepted at &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/2011.ec2nd.org/program/&#039;]);&quot;  href=&quot;http://2011.ec2nd.org/program/&quot; target=&quot;_blank&quot;&gt;this year&#039;s EC2ND conference&lt;/a&gt;. I will be presenting the results at EC2ND which is going to take place in Gothenburg, Sweden, September 6-7 at Chalmers University.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;br/&gt;&lt;br /&gt;
&lt;br/&gt; 
    </content:encoded>

    <pubDate>Mon, 22 Aug 2011 17:49:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.cj2s.de/archives/27-guid.html</guid>
    
</item>
<item>
    <title>Best practice: chrooted BIND on CentOS 5.6+ with DNSSEC aware resolution</title>
    <link>http://blog.cj2s.de/archives/25-Best-practice-chrooted-BIND-on-CentOS-5.6+-with-DNSSEC-aware-resolution.html</link>
            <category>Securing Linux</category>
    
    <comments>http://blog.cj2s.de/archives/25-Best-practice-chrooted-BIND-on-CentOS-5.6+-with-DNSSEC-aware-resolution.html#comments</comments>
    <wfw:comment>http://blog.cj2s.de/wfwcomment.php?cid=25</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.cj2s.de/rss.php?version=2.0&amp;type=comments&amp;cid=25</wfw:commentRss>
    

    <author>nospam@example.com (Christian J. Dietrich)</author>
    <content:encoded>
    BIND is the most prevalent DNS server software. Since CentOS 5.6, BIND is readily available in the more recent version 9.7.0 in the packages bind97*. Among others, a preconfigured chroot environment is provided. In order to use chrooted BIND, install the package bind97-chroot and make sure that ROOTDIR is correct in /etc/sysconfig/named:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
[us@ns ~]# grep ROOTDIR /etc/sysconfig/named&lt;br /&gt;
ROOTDIR=/var/named/chroot&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
Note that a service named restart is required in case BIND was running beforehand. &lt;br /&gt;
In order to provide the chroot environment, certain files and directories are (re)mounted under /var/named/chroot&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
/etc/named on /var/named/chroot/etc/named type none (rw,bind)&lt;br /&gt;
/var/named on /var/named/chroot/var/named type none (rw,bind)&lt;br /&gt;
/etc/named.conf on /var/named/chroot/etc/named.conf type none (rw,bind)&lt;br /&gt;
/etc/named.rfc1912.zones on /var/named/chroot/etc/named.rfc1912.zones type none (rw,bind)&lt;br /&gt;
/etc/rndc.conf on /var/named/chroot/etc/rndc.conf type none (rw,bind)&lt;br /&gt;
/etc/rndc.key on /var/named/chroot/etc/rndc.key type none (rw,bind)&lt;br /&gt;
/usr/lib/bind on /var/named/chroot/usr/lib/bind type none (rw,bind)&lt;br /&gt;
/etc/named.iscdlv.key on /var/named/chroot/etc/named.iscdlv.key type none (rw,bind)&lt;br /&gt;
/etc/named.root.key on /var/named/chroot/etc/named.root.key type none (rw,bind)&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
Thus, for example /etc/named.conf is actually made available to the chrooted BIND and you as the admin just have to take care of one file. Previously, there used to be two named.confs, one inside the chroot environment and one outside. If you do not have a named.conf yet, I suggest you start using the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.cymru.com/Documents/secure-bind-template.html&#039;]);&quot;  href=&quot;http://www.cymru.com/Documents/secure-bind-template.html&quot;&gt;named.conf template by Rob Thomas of Team Cymru&lt;/a&gt;.&lt;br /&gt;
Heading for DNSSEC validating resolution, the most important settings in named.conf are the following:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
    // ****** DNSSEC relevant settings ****** //&lt;br /&gt;
    // Since 9.5 the default value is dnssec-enable yes;.&lt;br /&gt;
    // This statement may be used in a view or global options clause.&lt;br /&gt;
    dnssec-enable yes;&lt;br /&gt;
    // indicates that a resolver (a caching or caching-only name server)&lt;br /&gt;
    // will attempt to validate replies from DNSSEC enabled (signed) zones.&lt;br /&gt;
    // To perform this task the server also needs either a valid trusted-&lt;br /&gt;
    // keys clause (containing one or more trusted-anchors or a managed-keys&lt;br /&gt;
    // clause. Since 9.5 the default value is dnssec-validation yes;&lt;br /&gt;
    dnssec-validation yes;&lt;br /&gt;
    dnssec-lookaside auto;&lt;br /&gt;
    /&lt;strong&gt; Path to ISC DLV key &lt;/strong&gt;/&lt;br /&gt;
    //bindkeys-file &quot;/etc/named.iscdlv.key&quot;;&lt;br /&gt;
    /&lt;strong&gt; Path to root DNSSEC key &lt;/strong&gt;/&lt;br /&gt;
    bindkeys-file &quot;/etc/named.root.key&quot;;&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
As shown above, I changed the bindkeys-file statement to point to the root DNSSEC key instead of ISC&#039;s DLV root key. This is fine because by now there is a &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.isc.org/community/blog/201007/using-root-dnssec-key-bind-9-resolvers&#039;]);&quot;  href=&quot;http://www.isc.org/community/blog/201007/using-root-dnssec-key-bind-9-resolvers&quot; target=&quot;_blank&quot;&gt;verifiable path to validate ISC&#039;s DLV root key&lt;/a&gt; (signed root, signed .ORG and signed isc.org and dlv.isc.org zones). Thus, ISC&#039;s DLV key does not need to be included any longer.&lt;br /&gt;
&lt;br /&gt;
Please note that as of now (bind97-9.7.0-6.P2.el5_6.3), there is &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/bugzilla.redhat.com/show_bug.cgi?id=719855&#039;]);&quot;  href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=719855&quot; target=&quot;_blank&quot;&gt;a bug in the init script of bind97&lt;/a&gt; which has been acknowleged upstream. Basically, the root DNSSEC key is not mounted in the chroot environment. Until the bug will be fixed in the package, you should apply the fix (I also provided in the bug report):&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
# A possible fix is to include /etc/named.root.key in /etc/init.d/named, i.e.&lt;br /&gt;
# change the contents of the ROOTDIR_MOUNT variable in /etc/init.d/named from&lt;br /&gt;
&lt;br /&gt;
ROOTDIR_MOUNT=&#039;/etc/named /etc/pki/dnssec-keys /var/named /etc/named.conf&lt;br /&gt;
/etc/named.dnssec.keys /etc/named.rfc1912.zones /etc/rndc.conf /etc/rndc.key&lt;br /&gt;
/usr/lib64/bind /usr/lib/bind /etc/named.iscdlv.key&#039;&lt;br /&gt;
&lt;br /&gt;
# to&lt;br /&gt;
&lt;br /&gt;
ROOTDIR_MOUNT=&#039;/etc/named /etc/pki/dnssec-keys /var/named /etc/named.conf&lt;br /&gt;
/etc/named.dnssec.keys /etc/named.rfc1912.zones /etc/rndc.conf /etc/rndc.key&lt;br /&gt;
/usr/lib64/bind /usr/lib/bind /etc/named.iscdlv.key /etc/named.root.key&#039;&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Finally you should test with a domain that has authoritative DNSSEC information. The answer must contain the AD flag.&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
[us@ns ~]# dig +dnssec @127.0.0.1 gov. ns&lt;br /&gt;
; &lt;&lt;&gt;&gt; DiG 9.7.0-P2-RedHat-9.7.0-6.P2.el5_6.2 &lt;&lt;&gt;&gt; +dnssec @127.0.0.1 gov. ns&lt;br /&gt;
; (1 server found)&lt;br /&gt;
;; global options: +cmd&lt;br /&gt;
;; Got answer:&lt;br /&gt;
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 14572&lt;br /&gt;
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1&lt;br /&gt;
&lt;br /&gt;
;; OPT PSEUDOSECTION:&lt;br /&gt;
; EDNS: version: 0, flags: do; udp: 4096&lt;br /&gt;
;; QUESTION SECTION:&lt;br /&gt;
;gov.                           IN      NS&lt;br /&gt;
&lt;br /&gt;
;; ANSWER SECTION:&lt;br /&gt;
gov.                    172800  IN      NS      b.gov-servers.net.&lt;br /&gt;
gov.                    172800  IN      NS      a.gov-servers.net.&lt;br /&gt;
gov.                    172800  IN      RRSIG   NS 7 1 172800 20110609040023 &lt;br /&gt;
20110604040023 43879 gov. FnygljkPqlL9Q08CX5lixJ7O5bB6ysM...&lt;br /&gt;
&lt;/pre&gt; 
    </content:encoded>

    <pubDate>Sat, 02 Jul 2011 21:50:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.cj2s.de/archives/25-guid.html</guid>
    
</item>
<item>
    <title>Delegating IN-ADDR.ARPA domains for reverse DNS resolution (PTR: IP to hostname)</title>
    <link>http://blog.cj2s.de/archives/24-Delegating-IN-ADDR.ARPA-domains-for-reverse-DNS-resolution-PTR-IP-to-hostname.html</link>
            <category>Linux Hints</category>
    
    <comments>http://blog.cj2s.de/archives/24-Delegating-IN-ADDR.ARPA-domains-for-reverse-DNS-resolution-PTR-IP-to-hostname.html#comments</comments>
    <wfw:comment>http://blog.cj2s.de/wfwcomment.php?cid=24</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.cj2s.de/rss.php?version=2.0&amp;type=comments&amp;cid=24</wfw:commentRss>
    

    <author>nospam@example.com (Christian J. Dietrich)</author>
    <content:encoded>
    Part of a clean DNS configuration is to maintain a mapping from IP addresses to hostnames. Especially in email exchange, many mail servers require that the sender&#039;s IP address can be looked up in DNS and e.g. maps to a hostname. You can easily test this using the tool dig which is usually part of bind-utils:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
$  dig  -x 80.67.18.126&lt;br /&gt;
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 19989&lt;br /&gt;
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0&lt;br /&gt;
&lt;br /&gt;
;; QUESTION SECTION:&lt;br /&gt;
;126.18.67.80.in-addr.arpa.     IN      PTR&lt;br /&gt;
&lt;br /&gt;
;; ANSWER SECTION:&lt;br /&gt;
126.18.67.80.in-addr.arpa. 86400 IN     PTR     mxlb.ispgateway.de.&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
The listing shows the lookup for a PTR record of (one of) the mail server&#039;s IP address(es) of my domain. dig provides the -x flag which behind the scenes makes a query for 126.18.67.80.in-addr.arpa. of resource record type PTR. Equivalently, you can issue &#039;dig 126.18.67.80.in-addr.arpa. PTR&#039;. As we can see from the output above, the IP address &lt;strong&gt;80.67.18.126&lt;/strong&gt; maps to the hostname &lt;strong&gt;mxlb.ispgateway.de.&lt;/strong&gt; (which in turn maps to 80.67.18.126 when querying for an A RR type).&lt;br /&gt;
&lt;br /&gt;
In order to be able to provide reverse mappings for a set of IP addresses that have been assigned, there should be a delegation (or referral) from the authoritative entity which assigned the IP addresses. Usually you will want to have CIDR ranges of IPv4 addresses delegated. Thus, let&#039;s assume the upstream ISP takes care of the whole /24 network &lt;strong&gt;1.2.3.0/24&lt;/strong&gt; (i.e. 1.2.3.0-1.2.3.255) and the subnet IP address range &lt;strong&gt;1.2.3.32/27&lt;/strong&gt; (i.e. 1.2.3.32-1.2.3.63) should be delegated from the authoritative (upstream ISP) nameserver A to (your) nameserver B. The following configuration snippets provide an example configuration for BIND and illustrate the required steps.&lt;br /&gt;
&lt;br /&gt;
Thus, A needs to be configured to delegate the DNS entries concerning the IP addresses 1.2.3.32/27 to the nameserver B as follows:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
; depending on your style of zone files, you might not have an $ORIGIN in them at all&lt;br /&gt;
$ORIGIN 3.2.1.IN-ADDR.ARPA.&lt;br /&gt;
@            IN  SOA   ns1.A.com. dnsadmin.A.com. (&lt;br /&gt;
                              2011052501; serial number&lt;br /&gt;
                              1h             ; refresh after&lt;br /&gt;
                              1h             ; retry update after&lt;br /&gt;
                              2w             ; expire after&lt;br /&gt;
                              1h             ; negative caching TTL)&lt;br /&gt;
              IN  NS      ns1.A.com.&lt;br /&gt;
              IN  NS      ns2.A.com.&lt;br /&gt;
&lt;br /&gt;
; here go PTR records for the IP address range 1.2.3.0-.31 which is not delegated to B&lt;br /&gt;
1            IN  PTR   some.absolute.hostname.example.com.&lt;br /&gt;
...&lt;br /&gt;
31           IN  PTR   note.that.relative.names.dont.make.sense.here.&lt;br /&gt;
&lt;br /&gt;
; here goes the referral for the subnet 1.2.3.32/27 to B&#039;s name server(s)&lt;br /&gt;
32/27         IN  NS  ns1.B.com.&lt;br /&gt;
32/27         IN  NS  ns2.B.com.    ; in case B has a second NS&lt;br /&gt;
&lt;br /&gt;
; Now comes an important part. the above statement does not suffice to refer queries to B&#039;s name server.&lt;br /&gt;
; In addition, we also have to define CNAMEs for ALL IP addresses in the subnet and map them to&lt;br /&gt;
; the referred domain 32/27.&lt;br /&gt;
33            IN  CNAME   33.32/27.3.2.1.IN-ADDR.ARPA.&lt;br /&gt;
; or alternatively&lt;br /&gt;
33            IN  CNAME   33.32/27&lt;br /&gt;
....&lt;br /&gt;
62            IN  CNAME   62.32/27  ; keep going from 33 to 62...&lt;br /&gt;
; ...or alternatively use the $GENERATE macro of BIND 8.2+&lt;br /&gt;
$GENERATE 33-62 $ CNAME $.32/27&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
Note that we could have chosen ANY arbitrary name instead of 32/27 for the CNAME targets as well as the referral (one could even refer outside the in-addr.arpa tree). However, &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/tools.ietf.org/html/rfc2317&#039;]);&quot;  href=&quot;http://tools.ietf.org/html/rfc2317&quot; target=&quot;_blank&quot;&gt;RFC 2317&lt;/a&gt; recommends the above scheme (for good reason).&lt;br /&gt;
&lt;br /&gt;
On the &quot;target&quot; nameserver B, the zone looks similar to:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
$ORIGIN 32/27.3.2.1.IN-ADDR.ARPA.&lt;br /&gt;
@            IN  SOA   ns1.B.com. dnsadmin.B.com. ( ... )&lt;br /&gt;
              IN  NS      ns1.B.com.&lt;br /&gt;
              IN  NS      ns2.B.com.&lt;br /&gt;
&lt;br /&gt;
; provide the PTR mapping for the IP addresses 1.2.3.32-.63 (maybe omit first and &lt;br /&gt;
; last as they are network and broadcast addresses).&lt;br /&gt;
33            IN  PTR   host33.b.example.com.&lt;br /&gt;
....&lt;br /&gt;
62            IN  PTR   web.example.com.&lt;br /&gt;
&lt;br /&gt;
; alternatively use the $GENERATE macro of BIND 8.2+&lt;br /&gt;
$GENERATE 33-62 $ PTR host$.b.example.com.&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
The configuration of the zone on the nameserver B is something like:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
...&lt;br /&gt;
    zone &quot;32/27.3.2.1.in-addr.arpa&quot; in {&lt;br /&gt;
      type master;&lt;br /&gt;
      file &quot;data/1.2.3.32_27.reverse.zone&quot;;&lt;br /&gt;
    };&lt;br /&gt;
...&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Testing the configuration&lt;/strong&gt;&lt;br /&gt;
Here are some commands using dig in order to test the configuration:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
; query one of the PTRs at B&#039;s nameserver&lt;br /&gt;
dig +norecurse  @[nameserver-of-B]  33.32/27.3.2.1.in-addr.arpa  PTR&lt;br /&gt;
&lt;br /&gt;
; query A&#039;s nameserver for the exact referral&lt;br /&gt;
dig +norecurse  @[nameserver-of-A]  32/27.3.2.1.in-addr.arpa  ANY&lt;br /&gt;
&lt;br /&gt;
; query A&#039;s nameserver for one of the PTRs&lt;br /&gt;
dig +norecurse  @[nameserver-of-A]  33.32/27.3.2.1.in-addr.arpa  PTR&lt;br /&gt;
dig +norecurse  @[nameserver-of-A]  33.3.2.1.in-addr.arpa  PTR&lt;br /&gt;
&lt;br /&gt;
; query one of the PTRs starting at the root&lt;br /&gt;
dig -x 1.2.3.33&lt;br /&gt;
dig +trace -x 1.2.3.33&lt;br /&gt;
&lt;/pre&gt; 
    </content:encoded>

    <pubDate>Wed, 01 Jun 2011 19:03:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.cj2s.de/archives/24-guid.html</guid>
    
</item>
<item>
    <title>Kryptotag - Transport Layer Security with RSA-PSK</title>
    <link>http://blog.cj2s.de/archives/23-Kryptotag-Transport-Layer-Security-with-RSA-PSK.html</link>
            <category>German ID card / nPA</category>
    
    <comments>http://blog.cj2s.de/archives/23-Kryptotag-Transport-Layer-Security-with-RSA-PSK.html#comments</comments>
    <wfw:comment>http://blog.cj2s.de/wfwcomment.php?cid=23</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.cj2s.de/rss.php?version=2.0&amp;type=comments&amp;cid=23</wfw:commentRss>
    

    <author>nospam@example.com (Christian J. Dietrich)</author>
    <content:encoded>
    Last week, &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www1.hgi.rub.de/kryptotag/&#039;]);&quot;  href=&quot;http://www1.hgi.rub.de/kryptotag/&quot; target=&quot;_blank&quot;&gt;Kryptotag&lt;/a&gt; and &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www1.hgi.rub.de/spring/&#039;]);&quot;  href=&quot;http://www1.hgi.rub.de/spring/&quot; target=&quot;_blank&quot;&gt;SPRING&lt;/a&gt; took place at &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.hgi.rub.de/&#039;]);&quot;  href=&quot;http://www.hgi.rub.de/&quot; target=&quot;_blank&quot;&gt;HGI&lt;/a&gt; in Bochum. It turned out to be a very interesting event, although unfortunately, I could not stay very long. My talk dealt with how Transport Layer Security with RSA-secured Pre-Shared Keys is used in the eID Online Authentication of the new German ID card. I provided a short recap on the default RSA key exchange and the plain Pre-Shared Key variant before outlining the difference to the RSA-PSK variant. My slides are available &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.cj2s.de/2011-11-21%20CJD%20-%20TLS-RSA-PSK.pdf&#039;]);&quot;  href=&quot;http://www.cj2s.de/2011-11-21%20CJD%20-%20TLS-RSA-PSK.pdf&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. 
    </content:encoded>

    <pubDate>Tue, 29 Mar 2011 21:35:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.cj2s.de/archives/23-guid.html</guid>
    
</item>
<item>
    <title>TLS-RSA-PSK Cipher Suites for OpenSSL</title>
    <link>http://blog.cj2s.de/archives/21-TLS-RSA-PSK-Cipher-Suites-for-OpenSSL.html</link>
            <category>German ID card / nPA</category>
    
    <comments>http://blog.cj2s.de/archives/21-TLS-RSA-PSK-Cipher-Suites-for-OpenSSL.html#comments</comments>
    <wfw:comment>http://blog.cj2s.de/wfwcomment.php?cid=21</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.cj2s.de/rss.php?version=2.0&amp;type=comments&amp;cid=21</wfw:commentRss>
    

    <author>nospam@example.com (Christian J. Dietrich)</author>
    <content:encoded>
    Since November 2010, the new German electronic ID card provides a facility to perform an online remote authentication of the ID card holder. This method is called eID online authentication and is defined in the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.bsi.bund.de/cln_165/ContentBSI/Publikationen/TechnischeRichtlinien/tr03110/index_htm.html&#039;]);&quot;  href=&quot;https://www.bsi.bund.de/cln_165/ContentBSI/Publikationen/TechnischeRichtlinien/tr03110/index_htm.html&quot; target=&quot;_blank&quot;&gt;Technical Guideline TR-03110&lt;/a&gt; of the Federal Office for Information Security. As part of the eID online authentication, personal data can be transmitted from the electronic ID card to its counterpart, the eID server. All data transmitted between the eletronic ID card and the eID server is supposed to be subject to secure messaging.&lt;br /&gt;
&lt;br /&gt;
As the eID online authentication is specifically tailored to be used in web applications, the secure messaging channel between the eID card and the eID server is mapped to the Security Assertion Markup Language (SAML) and uses several &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/tools.ietf.org/pdf/rfc5246.pdf&#039;]);&quot;  href=&quot;http://tools.ietf.org/pdf/rfc5246.pdf&quot; target=&quot;_blank&quot;&gt;TLS&lt;/a&gt; channels (&lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/tools.ietf.org/pdf/rfc5246.pdf&#039;]);&quot;  href=&quot;http://tools.ietf.org/pdf/rfc5246.pdf&quot; target=&quot;_blank&quot;&gt;Transport Layer Security, RFC 5246&lt;/a&gt;). In order to prevent man-in-the-middle attacks, the TLS channels are intertwined with the Terminal Authentication. This binding is realized by two aspects, one of them being the fact that special cipher suites are used which combine X.509 certificate based peer authentication with pre-shared keys. These cipher suites are termed &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/tools.ietf.org/pdf/rfc4279.pdf&#039;]);&quot;  href=&quot;http://tools.ietf.org/pdf/rfc4279.pdf&quot; target=&quot;_blank&quot;&gt;TLS-RSA-PSK and defined in RFC 4279&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I implemented one of the &lt;a href=&quot;http://blog.cj2s.de/openssl-1.0.0c.tls-rsa-psk.tar&quot; target=&quot;_blank&quot;&gt;TLS-RSA-PSK cipher suites as a patch&lt;/a&gt; to &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.openssl.org&#039;]);&quot;  href=&quot;http://www.openssl.org&quot; target=&quot;_blank&quot;&gt;openssl-1.0.0c&lt;/a&gt;. &lt;strong&gt;This patch is EXPERIMENTAL.&lt;/strong&gt; Apply it like so:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
tar xvzf openssl-1.0.0c.tar.gz&lt;br /&gt;
cd openssl-1.0.0c&lt;br /&gt;
patch -p1 -i ../openssl-1.0.0c.tls-rsa-psk.patch&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;strong&gt;IMPORTANT NOTE: This patch is provided &quot;as is&quot;. See LICENSE.txt for details.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Testing TLS-RSA-PSK&lt;/strong&gt;&lt;br /&gt;
You can test locally whether your openssl with TLS-RSA-PSK works as follows. Make sure that you actually call the currently generated openssl binary (in the apps directory):&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
# launching the server&lt;br /&gt;
openssl s_server \&lt;br /&gt;
    -psk c033f52671c61c8128f7f8a40be88038bcf2b07a6eb3095c36e3759f0cf40837 \&lt;br /&gt;
    -key privkey.pem \&lt;br /&gt;
    -cipher RSA-PSK-AES256-CBC-SHA \&lt;br /&gt;
    -debug -state&lt;br /&gt;
&lt;br /&gt;
# launch the client&lt;br /&gt;
openssl s_client -connect localhost:4433 \&lt;br /&gt;
    -psk c033f52671c61c8128f7f8a40be88038bcf2b07a6eb3095c36e3759f0cf40837 \&lt;br /&gt;
    -cipher RSA-PSK-AES256-CBC-SHA \&lt;br /&gt;
    -debug -state&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
You should then be able to pass data back and forth between the server and the client. Additionally, I have provided transscripts of what it looks like if it works. There is a &lt;a href=&quot;http://blog.cj2s.de/server.RSAPSK.log&quot; target=&quot;_blank&quot;&gt;server log&lt;/a&gt; and a &lt;a href=&quot;http://blog.cj2s.de/client.RSAPSK.log&quot; target=&quot;_blank&quot;&gt;client log&lt;/a&gt;. 
    </content:encoded>

    <pubDate>Fri, 25 Feb 2011 19:38:20 +0100</pubDate>
    <guid isPermaLink="false">http://blog.cj2s.de/archives/21-guid.html</guid>
    
</item>
<item>
    <title>Expert Comments on Possible Web Fraud</title>
    <link>http://blog.cj2s.de/archives/22-Expert-Comments-on-Possible-Web-Fraud.html</link>
            <category>TV</category>
    
    <comments>http://blog.cj2s.de/archives/22-Expert-Comments-on-Possible-Web-Fraud.html#comments</comments>
    <wfw:comment>http://blog.cj2s.de/wfwcomment.php?cid=22</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.cj2s.de/rss.php?version=2.0&amp;type=comments&amp;cid=22</wfw:commentRss>
    

    <author>nospam@example.com (Christian J. Dietrich)</author>
    <content:encoded>
    I gave a short interview to Sat.1 today about the technical skills needed in order to implement a system for online bets. The interview was broadcast as part of a short report on a case where maybe online fraud was involved, though this is still to be clarified.&lt;br /&gt;
The video interview can be found online here: &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.sat1nrw.de/Archiv/Illegales-Gluecksspiel/441d2794/&#039;]);&quot;  href=&quot;http://www.sat1nrw.de/Archiv/Illegales-Gluecksspiel/441d2794/&quot; target=&quot;_blank&quot;&gt;http://www.sat1nrw.de/Archiv/Illegales-Gluecksspiel/441d2794/&lt;/a&gt;.&lt;br /&gt;
&lt;!-- s9ymdb:19 --&gt;&lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.sat1nrw.de/Archiv/Illegales-Gluecksspiel/441d2794/&#039;]);&quot;  href=&quot;http://www.sat1nrw.de/Archiv/Illegales-Gluecksspiel/441d2794/&quot; target=&quot;_blank&quot;&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;450&quot; height=&quot;253&quot;  src=&quot;http://blog.cj2s.de/uploads/2011-02-christian-j.-dietrich.sat1.serendipityThumb.png&quot; title=&quot;2011-02-christian-j.-dietrich.sat1.png&quot; alt=&quot;Christian J. Dietrich, SAT.1 interview&quot; /&gt;&lt;/a&gt; 
    </content:encoded>

    <pubDate>Mon, 14 Feb 2011 16:19:00 +0100</pubDate>
    <guid isPermaLink="false">http://blog.cj2s.de/archives/22-guid.html</guid>
    
</item>
<item>
    <title>LaTeX Editing on Windows</title>
    <link>http://blog.cj2s.de/archives/20-LaTeX-Editing-on-Windows.html</link>
    
    <comments>http://blog.cj2s.de/archives/20-LaTeX-Editing-on-Windows.html#comments</comments>
    <wfw:comment>http://blog.cj2s.de/wfwcomment.php?cid=20</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.cj2s.de/rss.php?version=2.0&amp;type=comments&amp;cid=20</wfw:commentRss>
    

    <author>nospam@example.com (Christian J. Dietrich)</author>
    <content:encoded>
    Yes, Windows is far from being an enjoyable LaTeX editing base. However, every once in a while, you will find yourself urged to edit LaTeX under Windows. Thus, I compiled a few steps in order to have a somewhat usable LaTeX editing environment. I use &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.miktex.org/&#039;]);&quot;  href=&quot;http://www.miktex.org/&quot;&gt;MiKTEX&lt;/a&gt; in combination with &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.xm1math.net/texmaker/&#039;]);&quot;  href=&quot;http://www.xm1math.net/texmaker/&quot;&gt;Texmaker&lt;/a&gt; (both free). Texmaker has a builtin PDF viewer and an IDE-style builtin compile initiator. As often, it is the small details that make the difference. I dislike using an external program as PDF viewer that locks the .pdf-file and prevents from successful re-compilation. As a consequence you have to close the PDF viewer manually before each and every compile. Texmaker&#039;s builtin PDF viewer does not lock the pdf-file and thus re-compilation works like a charm. Furthermore, the -synctex=1 option to pdflatex enables the PDF viewer to jump to the right position in the LaTeX source upon a right-click. Even if you have your own special series of commands for compilation, you can recreate them in the options of Texmaker. I use the following user-defined quick build command in the options (remove line breaks, leave the pipes):&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
bibtex %|&lt;br /&gt;
pdflatex -synctex=1 -interaction=nonstopmode %.tex|&lt;br /&gt;
pdflatex -synctex=1 -interaction=nonstopmode %.tex|&lt;br /&gt;
&quot;C:/Program Files/Adobe/Reader 9.0/Reader/AcroRd32.exe&quot; %.pdf&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
Note that Texmaker uses the internal PDF viewer even though Acrobat&#039;s Reader is supposed to be called as last step (bug? feature?). All in all, in my eyes, Texmaker is a great LaTeX editor. 
    </content:encoded>

    <pubDate>Sat, 05 Feb 2011 15:09:00 +0100</pubDate>
    <guid isPermaLink="false">http://blog.cj2s.de/archives/20-guid.html</guid>
    
</item>
<item>
    <title>Compiling Gnuplot 4.4.2 on CentOS 5.5</title>
    <link>http://blog.cj2s.de/archives/19-Compiling-Gnuplot-4.4.2-on-CentOS-5.5.html</link>
            <category>Linux Hints</category>
    
    <comments>http://blog.cj2s.de/archives/19-Compiling-Gnuplot-4.4.2-on-CentOS-5.5.html#comments</comments>
    <wfw:comment>http://blog.cj2s.de/wfwcomment.php?cid=19</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.cj2s.de/rss.php?version=2.0&amp;type=comments&amp;cid=19</wfw:commentRss>
    

    <author>nospam@example.com (Christian J. Dietrich)</author>
    <content:encoded>
    CentOS is a really fine platform for professional Linux servers which is - among others - characterized by stable software releases. However, especially in a research environment every once in a while you need a recent version of a software. CentOS ships with Gnuplot 4.0.0 but I need Gnuplot &gt;=4.4. In case others need this, too, here are my compile instructions:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
# make sure your system is uptodate&lt;br /&gt;
yum clean all&lt;br /&gt;
yum check-update&lt;br /&gt;
yum update&lt;br /&gt;
&lt;br /&gt;
# based on a minimal installation, you need some packages in order to compile, I suggest&lt;br /&gt;
yum install gcc gcc-c++ make libX11 xauth&lt;br /&gt;
yum install cairo-devel pango-devel freetype-devel gd-devel&lt;br /&gt;
&lt;br /&gt;
cd /usr/local/src/&lt;br /&gt;
wget http://sourceforge.net/projects/gnuplot/files/gnuplot/4.4.2/gnuplot-4.4.2.tar.gz/download&lt;br /&gt;
tar xzf gnuplot-4.4.2.tar.gz &lt;br /&gt;
cd gnuplot-4.4.2&lt;br /&gt;
less INSTALL&lt;br /&gt;
&lt;br /&gt;
# start compiling. I usually install self-compiled stuff at /opt/[PKG-NAME]&lt;br /&gt;
./configure --prefix=/opt/gnuplot442&lt;br /&gt;
make&lt;br /&gt;
# make sure the shipped version of gnuplot is removed (this is probably not necessary but prevents version mix-up)&lt;br /&gt;
yum remove gnuplot&lt;br /&gt;
make install&lt;br /&gt;
&lt;br /&gt;
# you might want to add a symlink&lt;br /&gt;
ln -s /opt/gnuplot442/bin/gnuplot /usr/bin/gnuplot&lt;br /&gt;
&lt;/pre&gt; 
    </content:encoded>

    <pubDate>Wed, 01 Dec 2010 19:25:00 +0100</pubDate>
    <guid isPermaLink="false">http://blog.cj2s.de/archives/19-guid.html</guid>
    
</item>
<item>
    <title>neuer Personalausweis (nPA) - analysis of remaining risks</title>
    <link>http://blog.cj2s.de/archives/18-neuer-Personalausweis-nPA-analysis-of-remaining-risks.html</link>
            <category>German ID card / nPA</category>
    
    <comments>http://blog.cj2s.de/archives/18-neuer-Personalausweis-nPA-analysis-of-remaining-risks.html#comments</comments>
    <wfw:comment>http://blog.cj2s.de/wfwcomment.php?cid=18</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.cj2s.de/rss.php?version=2.0&amp;type=comments&amp;cid=18</wfw:commentRss>
    

    <author>nospam@example.com (Christian J. Dietrich)</author>
    <content:encoded>
    As posted before, we have done an analysis of the remaining risks of the new German ID card (neuer Personalausweis, nPA) conducted by the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.bmi.bund.de/cln_174/SharedDocs/Pressemitteilungen/DE/2010/mitMarginalspalte/10/npa.html&#039;]);&quot;  href=&quot;http://www.bmi.bund.de/cln_174/SharedDocs/Pressemitteilungen/DE/2010/mitMarginalspalte/10/npa.html&quot; target=&quot;_blank&quot;&gt;German Federal Ministry of the Interior (Bundesinnenministerium)&lt;/a&gt;. In mid October 2010, we published &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.internet-sicherheit.de/fileadmin/docs/elektronischer-personalausweis/Studie-Restrisiken%20eID-Funktion%20nPA%20AusweisApp.2010.pdf&#039;]);&quot;  href=&quot;http://www.internet-sicherheit.de/fileadmin/docs/elektronischer-personalausweis/Studie-Restrisiken%20eID-Funktion%20nPA%20AusweisApp.2010.pdf&quot; target=&quot;_blank&quot;&gt;the summary of our study&lt;/a&gt;, presenting the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.internet-sicherheit.de/aktuelles/mitteilungen/nachricht/nachricht-detail/restrisiken-der-eid-funktion-des-neuen-personalaus/&#039;]);&quot;  href=&quot;http://www.internet-sicherheit.de/aktuelles/mitteilungen/nachricht/nachricht-detail/restrisiken-der-eid-funktion-des-neuen-personalaus/&quot; target=&quot;_blank&quot;&gt;key findings of the remaining risks (in German)&lt;/a&gt; when using the eID functionality via the Internet. &lt;br /&gt;
&lt;br /&gt;
As the summary is only available in German, I will try to sum up the key findings in English here. First of all, we have to state that we analyzed the eID functionality only (neither the sovereign identification with biometry etc. nor the signature function). Thus, you may compare the target of the eID function to what usually is achieved using username and password authentication today. However, the eID function has mutual authentication builtin. This is one of the biggest advantages compared to &quot;classic&quot; username/password authentication where the server side is - if at all - only authenticated by its SSL/TLS certificate (ever heard of phishing?). Furthermore, the nPA requires a secret PIN before it can be used which effectively turns it into a two-factor-authentication mechanism. Thus, the security level of the eID function can be regarded much higher than classic username/password authentication.&lt;br /&gt;
&lt;br /&gt;
There is always two faces of the same coin, so what ARE the remaining risks? We found that the card reader category B (Basisleser) poses a certain threat: Malware on the user&#039;s computer may - under certain circumstances - misuse the eID function of an nPA. As the secret PIN must be entered via the computer&#039;s keyboard when using Cat-B card readers, a keylogger may easily catch the PIN. Note that this only works with Cat-B card readers, not with the higher class card readers Cat-S (Standardleser) or Cat-K (Komfortleser). For more details, see our &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.internet-sicherheit.de/fileadmin/docs/elektronischer-personalausweis/Studie-Restrisiken%20eID-Funktion%20nPA%20AusweisApp.2010.pdf&#039;]);&quot;  href=&quot;http://www.internet-sicherheit.de/fileadmin/docs/elektronischer-personalausweis/Studie-Restrisiken%20eID-Funktion%20nPA%20AusweisApp.2010.pdf&quot; target=&quot;_blank&quot;&gt;summary&lt;/a&gt;. A &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.ccepa.de/public/kartenleser.htm&#039;]);&quot;  href=&quot;http://www.ccepa.de/public/kartenleser.htm&quot; target=&quot;_blank&quot;&gt;list of certified card readers&lt;/a&gt; is available online. 
    </content:encoded>

    <pubDate>Tue, 02 Nov 2010 22:22:00 +0100</pubDate>
    <guid isPermaLink="false">http://blog.cj2s.de/archives/18-guid.html</guid>
    
</item>
<item>
    <title>Can keyloggers reveal secret PIN of the new German ID card &quot;neuer Personalausweis&quot; (nPA)?</title>
    <link>http://blog.cj2s.de/archives/17-Can-keyloggers-reveal-secret-PIN-of-the-new-German-ID-card-neuer-Personalausweis-nPA.html</link>
            <category>German ID card / nPA</category>
    
    <comments>http://blog.cj2s.de/archives/17-Can-keyloggers-reveal-secret-PIN-of-the-new-German-ID-card-neuer-Personalausweis-nPA.html#comments</comments>
    <wfw:comment>http://blog.cj2s.de/wfwcomment.php?cid=17</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.cj2s.de/rss.php?version=2.0&amp;type=comments&amp;cid=17</wfw:commentRss>
    

    <author>nospam@example.com (Christian J. Dietrich)</author>
    <content:encoded>
    On 24th of August, the German TV program ARD plusminus announced that in cooperation with Chaos Computer Club, security flaws were found in the Online Authentication functionality of the new German ID card to be issued in November 2010. This caught some media attention and people now wonder: what is the impact? &lt;br /&gt;
&lt;br /&gt;
First of all, let me clarify some aspects on the usage of the new German ID card (nPA). The nPA combines 3 distinct functionalities in one card. First, the sovereign function of the ID card, i.e. the authentication of a person in question is what people know from the current ID card. The nPA contains biometrics features in form of fingerprints to support this and only the sovereign function. Second, the online authentication serves as a means to communicate personal data from the chip to a service provider. This makes it possible to open a bank account or register a vehicle online, without the need for additional offline authentication. The third functionality is optional and provides digital signatures according to the German Signaturgesetz.&lt;br /&gt;
&lt;br /&gt;
The security flaw referenced above targets the online authentication function in combination with a specific card reader of class CAT-B according to &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03119/BSI-TR-03119_V1_pdf.pdf?__blob=publicationFile&#039;]);&quot;  href=&quot;https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03119/BSI-TR-03119_V1_pdf.pdf?__blob=publicationFile&quot; target=&quot;_blank&quot;&gt;BSI TR 03119&lt;/a&gt;, the standard document for categories of card readers for the nPA. Due to the fact that the user has to enter the secret PIN via the computer keyboard when using CAT-B card readers, malware such as keylogging trojans can intercept the PIN. We found this in experiments ourselves. Knowing the PIN, the trojan might then remote control the nPA (which must be on or near the card reader) and perform an online authentication in the background, possibly without the user&#039;s notice. However, the personal data that is transmitted as part of the online authentication is not subject to interception. &lt;br /&gt;
&lt;br /&gt;
Possible means to prevent this kind of flaw is to use a card reader of higher categories, such as Cat-S or Cat-K (according to &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03119/BSI-TR-03119_V1_pdf.pdf?__blob=publicationFile&#039;]);&quot;  href=&quot;https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03119/BSI-TR-03119_V1_pdf.pdf?__blob=publicationFile&quot; target=&quot;_blank&quot;&gt;BSI TR 03119&lt;/a&gt;). Those card readers have a pinpad to enter the PIN and keyloggers on the host computer do not interfere with these pinpads. Furthermore, even Cat-B card readers might be provided with visual or aural indicators that tell the user whenever an online authentication starts. &lt;br /&gt;
&lt;br /&gt;
For more information on the German ID card, see my &lt;a href=&quot;http://blog.cj2s.de/categories/5-German-ID-card-nPA&quot; target=&quot;_blank&quot;&gt;blog category&lt;/a&gt;. For news and statements in German, see also &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.internet-sicherheit.de&#039;]);&quot;  href=&quot;https://www.internet-sicherheit.de&quot; target=&quot;_blank&quot;&gt;https://www.internet-sicherheit.de&lt;/a&gt;. 
    </content:encoded>

    <pubDate>Thu, 26 Aug 2010 09:50:08 +0200</pubDate>
    <guid isPermaLink="false">http://blog.cj2s.de/archives/17-guid.html</guid>
    
</item>
<item>
    <title>Compiling libsvm with OpenMP support on CentOS 5.5</title>
    <link>http://blog.cj2s.de/archives/16-Compiling-libsvm-with-OpenMP-support-on-CentOS-5.5.html</link>
    
    <comments>http://blog.cj2s.de/archives/16-Compiling-libsvm-with-OpenMP-support-on-CentOS-5.5.html#comments</comments>
    <wfw:comment>http://blog.cj2s.de/wfwcomment.php?cid=16</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.cj2s.de/rss.php?version=2.0&amp;type=comments&amp;cid=16</wfw:commentRss>
    

    <author>nospam@example.com (Christian J. Dietrich)</author>
    <content:encoded>
    &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.csie.ntu.edu.tw/~cjlin/libsvm/&#039;]);&quot;  target=&quot;_blank&quot; href=&quot;http://www.csie.ntu.edu.tw/~cjlin/libsvm/&quot;&gt;libsvm&lt;/a&gt; is one of the most famous SVM implementations. It can be used with OpenMP in order to parallelize computation (see &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#f432&#039;]);&quot;  target=&quot;_blank&quot; href=&quot;http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#f432&quot;&gt; its FAQ&lt;/a&gt;). Using CentOS 5.5 and libsvm2.91, this is how to do it:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
# make sure the necessary packages are installed&lt;br /&gt;
yum install gcc44 gcc44-c++ gmp libstdc++44-devel glibc-devel&lt;br /&gt;
cd /usr/local/src&lt;br /&gt;
wget libsvm-2.91.... # from its website&lt;br /&gt;
tar xvzf libsvm-2.91.tar.gz&lt;br /&gt;
cd libsvm-2.91&lt;br /&gt;
&lt;br /&gt;
# adapt the Makefile as follows&lt;br /&gt;
diff -crB Makefile Makefile.orig&lt;br /&gt;
**&lt;strong&gt; Makefile    2010-07-21 11:09:47.000000000 +0200&lt;br /&gt;
--- Makefile.orig       2010-07-21 11:09:42.000000000 +0200&lt;br /&gt;
**************&lt;/strong&gt;&lt;br /&gt;
**&lt;strong&gt; 1,5 ****&lt;br /&gt;
! CXX = g++44&lt;br /&gt;
! CFLAGS = -Wall -Wconversion -O3 -fPIC -fopenmp&lt;br /&gt;
  SHVER = 1&lt;br /&gt;
&lt;br /&gt;
  all: svm-train svm-predict svm-scale&lt;br /&gt;
--- 1,5 ----&lt;br /&gt;
! CXX ?= g++&lt;br /&gt;
! CFLAGS = -Wall -Wconversion -O3 -fPIC&lt;br /&gt;
  SHVER = 1&lt;br /&gt;
&lt;br /&gt;
  all: svm-train svm-predict svm-scale&lt;br /&gt;
&lt;br /&gt;
# adapt svm.cpp as follows&lt;br /&gt;
diff -crB svm.cpp svm.cpp.orig&lt;br /&gt;
**&lt;/strong&gt; svm.cpp     2010-07-21 10:58:22.000000000 +0200&lt;br /&gt;
--- svm.cpp.orig        2010-07-21 10:55:25.000000000 +0200&lt;br /&gt;
**************&lt;strong&gt;&lt;br /&gt;
**&lt;/strong&gt; 1267,1273 ****&lt;br /&gt;
                int start, j;&lt;br /&gt;
                if((start = cache-&gt;get_data(i,&amp;data,len)) &lt; len)&lt;br /&gt;
                {&lt;br /&gt;
- #pragma omp parallel for private(j)&lt;br /&gt;
                        for(j=start;j&lt;len;j++)&lt;br /&gt;
                                data[j] = (Qfloat)(y[i]*y[j]*(this-&gt;*kernel_function)(i,j));&lt;br /&gt;
                }&lt;br /&gt;
--- 1267,1272 ----&lt;br /&gt;
**************&lt;strong&gt;&lt;br /&gt;
**&lt;/strong&gt; 2487,2493 ****&lt;br /&gt;
                int l = model-&gt;l;&lt;br /&gt;
&lt;br /&gt;
                double *kvalue = Malloc(double,l);&lt;br /&gt;
- #pragma omp parallel for private(i)&lt;br /&gt;
                for(i=0;i&lt;l;i++)&lt;br /&gt;
                        kvalue[i] = Kernel::k_function(x,model-&gt;SV[i],model-&gt;param);&lt;br /&gt;
&lt;br /&gt;
--- 2486,2491 ----&lt;br /&gt;
&lt;br /&gt;
# compile&lt;br /&gt;
make&lt;br /&gt;
# install&lt;br /&gt;
cp svm-train svm-predict svm-scale /usr/local/bin/&lt;br /&gt;
&lt;br /&gt;
# set environment variable (exact syntax depends on the shell used), e.g. on a 4 core system&lt;br /&gt;
export OMP_NUM_THREADS 4&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
...and run libsvm as usual. 
    </content:encoded>

    <pubDate>Wed, 21 Jul 2010 11:13:28 +0200</pubDate>
    <guid isPermaLink="false">http://blog.cj2s.de/archives/16-guid.html</guid>
    
</item>
<item>
    <title>Lohse yourself updated</title>
    <link>http://blog.cj2s.de/archives/15-Lohse-yourself-updated.html</link>
            <category>Arts</category>
    
    <comments>http://blog.cj2s.de/archives/15-Lohse-yourself-updated.html#comments</comments>
    <wfw:comment>http://blog.cj2s.de/wfwcomment.php?cid=15</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.cj2s.de/rss.php?version=2.0&amp;type=comments&amp;cid=15</wfw:commentRss>
    

    <author>nospam@example.com (Christian J. Dietrich)</author>
    <content:encoded>
    I updated my App on Richard Paul Lohse&#039;s work &quot;15 Farbreihen&quot; which is available on my homepage at &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.cj2s.de/lose-yourself/&#039;]);&quot;  href=&quot;http://www.cj2s.de/lose-yourself/&quot; target=&quot;_blank&quot;&gt;http://www.cj2s.de/lose-yourself/&lt;/a&gt;. The tooltip help texts have been translated into English and I released my &lt;a href=&quot;http://blog.cj2s.de/lose-yourself/christian%20j.%20dietrich%20-%20junge%20nacht%202009%20-%20farbflaechenbilder%20-%20richard%20paul%20lohse.pdf&quot; target=&quot;_blank&quot;&gt;thesis titled &#039;farbflaechenbilder&#039;&lt;/a&gt; on that matter (unfortunately only in German). The thesis was written as part of the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.jungenacht.de&#039;]);&quot;  href=&quot;http://www.jungenacht.de&quot; target=&quot;_blank&quot;&gt;Junge Nacht&lt;/a&gt; (young night) of museum kunstpalast in Düsseldorf where I worked as a guide through the exhibition on color field paintings. &lt;br /&gt;
Have spare time? Want some distraction? Just open my &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.cj2s.de/lose-yourself/&#039;]);&quot;  href=&quot;http://www.cj2s.de/lose-yourself/&quot; target=&quot;_blank&quot;&gt;Lohse-Yourself App&lt;/a&gt; and click an the button &#039;random&#039; to see some inspiring color combinations. Enjoy!&lt;br /&gt;
&lt;br /&gt;
&lt;a class=&quot;serendipity_image_link&quot; title=&quot;Richard Paul Lohse Generator&quot; href=&#039;http://blog.cj2s.de/uploads/richard-paul-lohse-4-2-0.jpg&#039; onclick=&quot;F1 = window.open(&#039;/uploads/richard-paul-lohse-4-2-0.jpg&#039;,&#039;Zoom&#039;,&#039;height=587,width=587,top=239,left=554,toolbar=no,menubar=no,location=no,resize=1,resizable=1,scrollbars=yes&#039;); return false;&quot;&gt;&lt;!-- s9ymdb:18 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;450&quot; height=&quot;450&quot;  src=&quot;http://blog.cj2s.de/uploads/richard-paul-lohse-4-2-0.serendipityThumb.jpg&quot; title=&quot;Richard Paul Lohse Generator&quot; alt=&quot;Richard Paul Lohse Generator&quot; /&gt;&lt;/a&gt; 
    </content:encoded>

    <pubDate>Sun, 20 Jun 2010 13:46:23 +0200</pubDate>
    <guid isPermaLink="false">http://blog.cj2s.de/archives/15-guid.html</guid>
    
</item>
<item>
    <title>Published my Master Thesis: eID Online Authentication mit dem neuen elektronischen Personalausweis nPA</title>
    <link>http://blog.cj2s.de/archives/14-Published-my-Master-Thesis-eID-Online-Authentication-mit-dem-neuen-elektronischen-Personalausweis-nPA.html</link>
            <category>German ID card / nPA</category>
    
    <comments>http://blog.cj2s.de/archives/14-Published-my-Master-Thesis-eID-Online-Authentication-mit-dem-neuen-elektronischen-Personalausweis-nPA.html#comments</comments>
    <wfw:comment>http://blog.cj2s.de/wfwcomment.php?cid=14</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.cj2s.de/rss.php?version=2.0&amp;type=comments&amp;cid=14</wfw:commentRss>
    

    <author>nospam@example.com (Christian J. Dietrich)</author>
    <content:encoded>
    On popular demand, I published my (German) Master Thesis titled &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.internet-sicherheit.de/forschung/publikationen/dokumente-2010/dokument-detail/online-authentisierung-mit-dem-elektronischen-personalausweis-epanpa/&#039;]);&quot;  href=&quot;http://www.internet-sicherheit.de/forschung/publikationen/dokumente-2010/dokument-detail/online-authentisierung-mit-dem-elektronischen-personalausweis-epanpa/&quot; target=&quot;_blank&quot;&gt;&#039;eID Online Authentisierung mit dem neuen elektronischen Personalausweis nPA&#039;&lt;/a&gt;. It deals with the electronic identification functionality which will be implemented in the new German ID card that will be issued from November 1st, 2010 onwards. As the thesis was conducted by the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.bmi.bund.de&#039;]);&quot;  href=&quot;http://www.bmi.bund.de&quot; target=&quot;_blank&quot;&gt;German Ministry of the Interior&lt;/a&gt;, parts of it are still classified and thus not included in the public version of the thesis. However, it should give fairly detailed insights into the overall technology, major algorithms used as well as security contexts. Below you will find a summary of the thesis (unfortunately only in German). Please note that the thesis was written in 2008, thus some technical guidelines, especially concerning &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.internet-sicherheit.de/service/glossar/eintrag/eintrag-detail/extended-access-control/&#039;]);&quot;  href=&quot;http://www.internet-sicherheit.de/service/glossar/eintrag/eintrag-detail/extended-access-control/&quot; target=&quot;_blank&quot;&gt;EAC&lt;/a&gt;, have changed since then (some changes even due to my thesis&#039; results).&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Zusammenfassung/Summary&lt;/strong&gt;&lt;br /&gt;
Zunächst soll diese Master Thesis die Notwendigkeit und die Vergleichbarkeit des Sicherheitsniveaus zwischen dem physikalischen und dem &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.internet-sicherheit.de/service/glossar/eintrag/eintrag-detail/elektronischer-personalausweis/&#039;]);&quot;  href=&quot;http://www.internet-sicherheit.de/service/glossar/eintrag/eintrag-detail/elektronischer-personalausweis/&quot; target=&quot;_blank&quot;&gt;elektronischen Ausweisdokument&lt;/a&gt; aufzeigen. Darüber hinaus soll eine Implementierung der Authentisierungsfunktion bzw. Online-Authentisierung des nPA für die Anwendung über das Internet – die erste ihrer Art – ihre Machbarkeit demonstrieren. Im Rahmen der Arbeit werden also sowohl die notwendigen Komponenten aller teilnehmenden Parteien (eID Authentication Server, &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.internet-sicherheit.de/service/glossar/eintrag/eintrag-detail/buergerclient/&#039;]);&quot;  href=&quot;http://www.internet-sicherheit.de/service/glossar/eintrag/eintrag-detail/buergerclient/&quot; target=&quot;_blank&quot;&gt;Bürgerclient&lt;/a&gt; etc.) vorgestellt, die für eine Realisierung benötigt werden als auch tatsächliche Implementierungen dieser Komponenten beschrieben und gefertigt. Der Ablauf der Online-Authentisierung soll zusätzlich aus der Perspektive des Anwenders dokumentiert werden. Hierbei sind wichtige Schritte detailliert zu beschreiben. &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Notwendigkeit eines elektronischen Personalausweises&lt;/strong&gt;&lt;br /&gt;
Grundsätzlich wird in diesem Kontext die Frage nach der Notwendigkeit eines neuen, elektronischen Personalausweises aufgeworfen. Es läge nahe, die Notwendigkeit mit mangelnder Fälschungssicherheit des bisherigen Personalausweises zu begründen. Betrachtet man dies jedoch im Detail, so ist keine mangelnde Fälschungssicherheit feststellbar. Im Gegenteil – die deutschen Ausweisdokumente, also sowohl der Reisepass als auch der Personalausweis gehören weltweit zu den am schwersten fälschbaren Dokumenten.&lt;br /&gt;
Betrachtet man jedoch die Möglichkeiten, die derzeit für eine Identifikation und eine Authentisierung anhand von Ausweisdokumenten über das Internet zur Verfügung stehen, so wird klar, dass hier keine sichere Lösung existiert. Der elektronische Personalausweis soll diese Lücke mit Hilfe der sog. Authentisierungsfunktion nun schließen und eine sichere Authentisierung über das Internet ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Die Online-Authentisierung des nPA&lt;/strong&gt;&lt;br /&gt;
Die Authentisierungsfunktion ermöglicht eine sichere Übertragung von Daten, die auf dem Ausweis gespeichert sind an einen Dritten. Während die Identifikation mit Hilfe von biometrischen Merkmalen (und somit auch der Zugriff auf diese) lediglich für den hoheitlichen Anwendungsbereich vorgesehen ist, soll die Authentisierungsfunktion sowohl für eBusiness als auch eGovernment verfügbar sein. Spezielle Teilfunktionen der Authentisierungsfunktion sind die Altersverifikation sowie ein sektorspezifischer Identifikator. Die Altersverifikation kann als Jugendschutzfunktion eingesetzt werden und der sektorspezifische Identifikator bietet ein eindeutiges Benutzerkennzeichen.&lt;br /&gt;
Mit Hilfe der Authentisierungsfunktion können also auf sichere Art und Weise, Attribute an einen Dienstanbieter übermittelt werden. Die Bezeichnung Attribute umfasst dabei nicht notwendigerweise ausschließlich explizite personenbezogene Angaben wie Vor- und Nachname, sondern auch relative Aussagen, wie z.B. &quot;die Person ist älter als 18 Jahre&quot;. Im Rahmen der Registierung in einem Webshop ist vorstellbar, dass anstelle der manuellen Eingabe der personenbezogenen Daten, z.B. der volle Name und die Adresse, diese mit der Authentisierungsfunktion aus dem nPA ausgelesen werden. Der Dienstanbieter hat dann die Gewissheit, dass die Daten authentisch und integer sind.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Implementierung der Online-Authentisierung&lt;/strong&gt;&lt;br /&gt;
Die Authentisierungsfunktion baut auf dem erweiterten Zugriffsschutzmechanismus Extended Access Control (EAC) auf. Das vom Bundesamt für Sicherheit in der Informationstechnik (BSI) spezifizierte Verfahren EAC sichert die Authentizität und Integrität der Daten sowohl in gespeicherter Form als auch während der Übertragung. Es besteht aus den 3 Protokollen &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.internet-sicherheit.de/service/glossar/eintrag/eintrag-detail/password-authenticated-connection-establishment-pace/&#039;]);&quot;  href=&quot;http://www.internet-sicherheit.de/service/glossar/eintrag/eintrag-detail/password-authenticated-connection-establishment-pace/&quot; target=&quot;_blank&quot;&gt;Password Authenticated Connection Establishment (PACE)&lt;/a&gt;, &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.internet-sicherheit.de/service/glossar/eintrag/eintrag-detail/terminal-authentication/&#039;]);&quot;  href=&quot;http://www.internet-sicherheit.de/service/glossar/eintrag/eintrag-detail/terminal-authentication/&quot; target=&quot;_blank&quot;&gt;Terminal Authentication&lt;/a&gt; und &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.internet-sicherheit.de/service/glossar/eintrag/eintrag-detail/chip-authentication/&#039;]);&quot;  href=&quot;http://www.internet-sicherheit.de/service/glossar/eintrag/eintrag-detail/chip-authentication/&quot; target=&quot;_blank&quot;&gt;Chip Authentication&lt;/a&gt;. Kernbestandteile von Extended Access Control sind symmetrische und asymmetrische (Elliptische-Kurven-)Kryptographie, eine globale Public Key Infrastruktur sowie die Verwendung von abstreitbaren Challenge-Response-Verfahren.&lt;br /&gt;
&lt;br /&gt;
PACE ist ein Verfahren zur Freischaltung des Chips durch ein Lesegerät. Mit Hilfe einer sechsstelligen PIN, die als Passwort fungiert, wird einem Lesegerät der Zugriff auf den Funkkanal zu einem Chip, z.B. dem nPA, gestattet. Aus kryptographischer Perspektive handelt es sich dabei um eine verschlüsselte Diffie-Hellman-Schlüsseleinigung. Im Rahmen der sog. Terminal Authentication prüft der Chip mit Hilfe eines Challenge-Response-Verfahrens die Zugriffsberechtigungen des Lesegeräts (Terminal). Die Chip Authentication ist ein Verfahren, das genutzt wird, um die Authentizität des Chips zu prüfen. Hierbei werden implizit die Daten, die ein Chip liefert authentisiert. Aus kryptographischer Sicht handelt es sich um eine Diffie-Hellman-Schlüsseleinigung mit statischem Chip-Schlüssel. Nach Abschluss der Chip Authentication ist ein verschlüsselter Ende-zu-Ende-Kanal etabliert.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Berechtigungszertifikat oder Terminal Certificate&lt;/strong&gt;&lt;br /&gt;
Das Terminal Certificate ist ein wichtiger Bestandteil der Authentisierung zwischen nPA und EAS. Es enthält neben dem öffentlichen Schlüssel des EAS die Berechtigung des EAS. Die Berechtigung gibt an, welche Felder des nPA durch den EAS ausgelesen werden dürfen. Das Terminal Certificate muss durch einen gültigen Document Verifier signiert worden sein. Auf diese Weise kann ein nPA sicherstellen, dass nur die Inhalte der Datenfelder an den EAS gesendet werden müssen, für die der EAS auch tatsächlich authentifiziert ist. Im Rahmen der Terminal Authentication wird dem Benutzer ein Dialog angezeigt, der die Kenndaten des Terminal Certificate visualisiert. Dieser Dialog zeigt den Zertifikatsinhaber, die Gültigkeit des Zertifikats, die Zugriffsberechtigungen auf die auszulesenden Attribute, einen Verweis auf die zuständige Datenschutzaufsichtsbehörde sowie den Verwendungszweck.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Schwachstellen und Angriffe&lt;/strong&gt;&lt;br /&gt;
Angriffe auf die Online-Authentisierung des nPA, bei denen Kernkomponenten durch bösartige Instanzen ausgetauscht werden scheitern in der Regel. Da eine beidseitige Authentikation in den Endpunkten stattfindet, kann eine bösartige Komponenten entlarvt werden und das Auslesen der Daten aus dem nPA scheitert. Auch ein Angriff auf die Transportverschlüsselung und -integrität wird üblicherweise erfolglos verlaufen, da hier stabile Kryptographie – wie z.B. AES und Elliptische-Kurven-Kryptographie (ECDSA und ECDH) – zum Einsatz kommt. &lt;br /&gt;
Verbleibende Ansatzpunkte für Angriffe sind&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;die Verifikation des Terminal Certificate durch den nPA&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Man in the Middle Angriffe   sowie&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;das An-/Abwählen von Attributen im Dialog des Berechtigungszertifikats.&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
Die Verifikation des Terminal Certificate erfolgt im nPA. Der nPA hat eine logische Uhr, die anhand von erfolgreichen Verifikationen in der Vergangenheit synchronisiert wird. Je seltener ein nPA benutzt wird (konkreter: erfolgreich authentisiert), umso größer die Abweichung der logischen Uhr des nPA von der Realzeit. Sobald das Schlüsselmaterial eines vormals legitimen EAS sowie ein in Bezug auf die Realzeit abgelaufenes Terminal Certificate für einen Angreifer verfügbar wird, könnte ein nPA mit hoher Abweichung seiner logischen Uhr den Zugriff eventuell fälschlicherweise zulassen. Auch die Abfrage von Sperrlisten kann nicht verlässlich implementiert werden, da Socket-Operationen Teil des Betriebssystems des Clients und nicht des nPA sind. In der Konsequenz könnte der Gültigkeitszeitraum von Terminal Certificates sehr kurz ausfallen, z.B. lediglich 24 Stunden. Sobald Missbrauch festgestellt wird, kann auf diese Weise durch eine Verhinderung der Neuausstellung eines Zertifikats reagiert werden. Trotzdem gilt: Je häufiger ein nPA zur Authentisierung genutzt wird (und je geringer damit die Abweichung von Realzeit und logischer Uhr sind), umso geringer ist das Erfolgsrisiko für einen solchen Angriff. Beschreibungen zu den restlichen Ansatzpunkten sind ebenfalls Teil der Master Thesis.&lt;br /&gt;
&lt;br /&gt;
See the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.internet-sicherheit.de/forschung/publikationen/dokumente-2010/dokument-detail/online-authentisierung-mit-dem-elektronischen-personalausweis-epanpa/&#039;]);&quot;  href=&quot;http://www.internet-sicherheit.de/forschung/publikationen/dokumente-2010/dokument-detail/online-authentisierung-mit-dem-elektronischen-personalausweis-epanpa/&quot; target=&quot;_blank&quot;&gt;full thesis&lt;/a&gt; for details. 
    </content:encoded>

    <pubDate>Sat, 19 Jun 2010 13:53:36 +0200</pubDate>
    <guid isPermaLink="false">http://blog.cj2s.de/archives/14-guid.html</guid>
    
</item>

</channel>
</rss>
