<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>_tnull.de</title>
		<description>ramblings about stuff</description>
		<link>https://www.tnull.de</link>
		
			<item>
				<title>Deriving Curve22519 public keys from a secret key with enacl</title>
				<description>&lt;p&gt;&lt;a href=&quot;https://nacl.cr.yp.to/&quot;&gt;djb’s nacl&lt;/a&gt; is a secure, fast and easy to use crypto library. &lt;a href=&quot;https://libsodium.org/&quot;&gt;libsodium&lt;/a&gt; is a more packageable fork of it. The &lt;a href=&quot;https://github.com/jlouis/enacl&quot;&gt;enacl project&lt;/a&gt; provides Erlang bindings for the basic API functions of the latter one, however, it does not cover libsodium’s &lt;code class=&quot;highlighter-rouge&quot;&gt;crypto_scalarmult_base()&lt;/code&gt; function to derive the adequate public key from a Curve22519 secret key.&lt;/p&gt;

&lt;p&gt;I may at some point work on a pull request to include this functionality in enacl. I however found a decent workaround: one could use the offered &lt;code class=&quot;highlighter-rouge&quot;&gt;enacl:curve25519_scalarmult(Secret, BasePoint)&lt;/code&gt; function. While the &lt;code class=&quot;highlighter-rouge&quot;&gt;Secret&lt;/code&gt; variable refers to the secret key, the &lt;code class=&quot;highlighter-rouge&quot;&gt;BasePoint&lt;/code&gt; was rather unclear at first. However, after some digging in the code and online I discovered that &lt;a href=&quot;https://cr.yp.to/ecdh.html&quot;&gt;this is a case&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;where the constant basepoint is 9 followed by all zeros:&lt;/p&gt;

  &lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;const unsigned char basepoint[32] = {9};&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This means that deriving a public key can be done with enacl this way:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-erlang&quot; data-lang=&quot;erlang&quot;&gt;&lt;span class=&quot;err&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;secret&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;Secret&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;enacl&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;box_keypair&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;().&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;Filler&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;binary&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;copy&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;31&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;BasePoint&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;Filler&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;binary&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;Public&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;enacl&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;curve25519_scalarmult&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;Secret&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;BasePoint&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

</description>
				<published>2016-07-29 00:00:00 +0200</published>
				<link>https://www.tnull.de/2016/07/29/deriving-curve22519-public-keys-from-a-secret-key-with-enacl.html</link>
			</item>
		
			<item>
				<title>Mocking IPv6 Addresses With Erlang</title>
				<description>&lt;p&gt;I started programming &lt;a href=&quot;http://www.erlang.org/&quot;&gt;Erlang&lt;/a&gt; some time ago. It is a great language and to dive into &lt;a href=&quot;https://en.wikipedia.org/wiki/Functional_programming&quot;&gt;functional programming&lt;/a&gt; is somewhat mindbending. I will from time post some code snippets here in order to remember them myself and as help for others.&lt;/p&gt;

&lt;p&gt;In this case I’m building an Erlang module that will handle tuples &lt;code class=&quot;highlighter-rouge&quot;&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;Address,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;Port&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt; of ip addresses and ports of remote peers. While writing unit tests for it, I realized I wanted to mock some random generated addresses. Here is the code:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-erlang&quot; data-lang=&quot;erlang&quot;&gt;&lt;span class=&quot;nf&quot;&gt;random_peer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nv&quot;&gt;AllowedChars&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;sc&quot;&gt;$1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;sc&quot;&gt;$2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;sc&quot;&gt;$3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;sc&quot;&gt;$4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;sc&quot;&gt;$5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;sc&quot;&gt;$6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;sc&quot;&gt;$7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;sc&quot;&gt;$8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;sc&quot;&gt;$9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;sc&quot;&gt;$a&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;sc&quot;&gt;$b&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;sc&quot;&gt;$c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;sc&quot;&gt;$d&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;sc&quot;&gt;$e&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;sc&quot;&gt;$f&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
    &lt;span class=&quot;nv&quot;&gt;Random_char&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;fun&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt; 
      &lt;span class=&quot;nn&quot;&gt;lists&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;nth&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nn&quot;&gt;rand&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;uniform&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;AllowedChars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)),&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;AllowedChars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;nv&quot;&gt;Random_block&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;fun&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt; 
      &lt;span class=&quot;nn&quot;&gt;lists&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;fun&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(_)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;Random_char&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;lists&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;seq&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;nv&quot;&gt;List&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;lists&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sc&quot;&gt;$:&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;lists&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;fun&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(_)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt; 
      &lt;span class=&quot;nv&quot;&gt;Random_block&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;lists&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;seq&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))),&lt;/span&gt;
    &lt;span class=&quot;nv&quot;&gt;AddressString&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;lists&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;flatten&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;
    &lt;span class=&quot;nv&quot;&gt;Address&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;inet&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;parse_ipv6_address&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;AddressString&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;
    &lt;span class=&quot;nv&quot;&gt;Port&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;rand&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;uniform&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;65535&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;Address&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;Port&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}.&lt;/span&gt; &lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;The function does not exclude reserved address spaces and so on, it does however create a string which is accepted by &lt;code class=&quot;highlighter-rouge&quot;&gt;inet:parse_ipv6_address/1&lt;/code&gt;. This should be enough to use the mocked-up addresses for testing with EUnit.&lt;/p&gt;
</description>
				<published>2016-07-14 00:00:00 +0200</published>
				<link>https://www.tnull.de/2016/07/14/mocking-ipv6-addresses-with-erlang.html</link>
			</item>
		
			<item>
				<title>Forward Secrecy in BitTorrent Bleep</title>
				<description>&lt;p&gt;Over at the &lt;a href=&quot;http://engineering.bittorrent.com/2014/12/11/authentication-and-forward-secrecy-in-bleep/&quot;&gt;BitTorrent Engineering Blog&lt;/a&gt; they posted an article about how authentication works in &lt;a href=&quot;http://labs.bittorrent.com/bleep/&quot;&gt;Bleep&lt;/a&gt;. They explain Bleep supports Forward Secrecy, so no old messages can be decrypted by an attacker, even if the private key gets stolen. This is a nice thing to have, but given they &lt;a href=&quot;http://blog.bittorrent.com/2014/11/21/offline-messages-come-to-bleep/&quot;&gt;recently announced&lt;/a&gt; that Bleep will also support offline messaging, it will be interesting to see how they handle this together.&lt;/p&gt;

&lt;p&gt;Forward Secrecy relies on temporarily used keys which get discarded after use or regularly. The key negotiation can only happen while both parties are online, so keeping Forward Secrecy while introducing offline messages is normally a challenge. Over at OpenWhisperSystems they &lt;a href=&quot;https://whispersystems.org/blog/asynchronous-security/&quot;&gt;handled this problem&lt;/a&gt; for the TextSecure app by generating 100 key exchange messages and storing them on the centralized server:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;At registration time, the TextSecure client preemptively generates 100 signed key exchange messages and sends them to the server. We call these “prekeys.” A client that wishes to send a secure message to a user for the first time can now:&lt;/p&gt;

  &lt;ol&gt;
    &lt;li&gt;Connect to the server and request the destination’s next “prekey.”&lt;/li&gt;
    &lt;li&gt;Generate its own key exchange message half.&lt;/li&gt;
    &lt;li&gt;Calculate a shared secret with the prekey it received and its own key exchange half.&lt;/li&gt;
    &lt;li&gt;Use the shared secret to encrypt the message.&lt;/li&gt;
    &lt;li&gt;Package up the prekey id, the locally generated key exchange message, and the ciphertext.&lt;/li&gt;
    &lt;li&gt;Send it all in one bundle to the destination client.&lt;/li&gt;
  &lt;/ol&gt;

  &lt;p&gt;The user experience for the sender is ideal: they type a message, hit send, and an encrypted message is immediately sent.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I think this is a solid workaround.&lt;/p&gt;
</description>
				<published>2014-12-12 11:05:28 +0100</published>
				<link>https://www.tnull.de/2014/12/12/forward-secrecy-in-bittorrent-bleep.html</link>
			</item>
		
			<item>
				<title>'Project Maelstrom' aims to make the Web distributed</title>
				<description>&lt;p&gt;BitTorrent wants to make the Web distributed. &lt;a href=&quot;http://blog.bittorrent.com/2014/12/10/project-maelstrom-the-internet-we-build-next/&quot;&gt;They announced&lt;/a&gt; they’ve been working on a Browser (and included server it seems) which is based on a distributed Peer-to-Peer architecture:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Project Maelstrom begins to answer that question with our first public release of a web browser that can power a new way for web content to be published, accessed and consumed. Truly an Internet powered by people, one that lowers barriers and denies gatekeepers their grip on our future.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is a great idea! Let’s hope they make this an open platform to build on, and open source so everyone can check what’s going on in the internals!&lt;/p&gt;

&lt;p&gt;They are looking for participants in ‘Project Maelstrom’, so if you are interested to have a look at it as an alpha tester, developer, researcher, agency, publisher or artist, &lt;a href=&quot;http://bit.ly/1ytada4&quot;&gt;sign up for their mailing list&lt;/a&gt;.&lt;/p&gt;

</description>
				<published>2014-12-11 13:03:14 +0100</published>
				<link>https://www.tnull.de/2014/12/11/project-maelstrom-distributed-web.html</link>
			</item>
		
			<item>
				<title>Collision on 32bit PGP key ids</title>
				<description>&lt;p&gt;Research shows that it takes only &lt;em&gt;4 seconds&lt;/em&gt; to create PGP keys with colliding 32bit key ids. This is presented on &lt;a href=&quot;https://evil32.com&quot;&gt;evil32.com&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;h2 id=&quot;stop-using-32bit-key-ids&quot;&gt;Stop using 32bit key ids&lt;/h2&gt;
  &lt;p&gt;It takes 4 seconds to generate a colliding 32bit key id on a GPU (using scallion). Key servers do little verification of uploaded keys and allow keys with colliding 32bit ids. Further, GPG uses 32bit key ids throughout its interface and does not warn you when an operation might apply to multiple keys.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With this it is relatively easy to fool a target into importing the wrong PGP key and therefore gain his/her trust.&lt;/p&gt;

&lt;p&gt;Solution: using the &lt;a href=&quot;https://en.wikipedia.org/wiki/Web_of_trust&quot;&gt;Web of Trust&lt;/a&gt; circumvents this. Also, checking fingerprints ensures you got the right key. But still, this seems like one more nail in the coffin of PGP: As its usability and distribution is getting worse and worse, everyone waits for a new solution to replace PGP once and for all. To &lt;a href=&quot;http://blog.cryptographyengineering.com/2014/08/whats-matter-with-pgp.html&quot;&gt;quote Matt Green&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;It’s time for PGP to die.&lt;/p&gt;
&lt;/blockquote&gt;
</description>
				<published>2014-12-03 10:31:45 +0100</published>
				<link>https://www.tnull.de/2014/12/03/collision-on-32bit-pgp-key-ids.html</link>
			</item>
		
			<item>
				<title>New Free CA 'Let's Encrypt'</title>
				<description>&lt;p&gt;There is a new Free CA: &lt;a href=&quot;https://www.letsencrypt.org/&quot;&gt;Let’s Encrypt&lt;/a&gt;, a collaboration project of Mozilla, Akamai, Cisco, EFF and IdenTrust (so far). On their blog they &lt;a href=&quot;https://letsencrypt.org/2014/11/18/announcing-lets-encrypt.html&quot;&gt;published their key principles&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;ul&gt;
    &lt;li&gt;Free: Anyone who owns a domain can get a certificate validated for that domain at zero cost.&lt;/li&gt;
    &lt;li&gt;Automatic: The entire enrollment process for certificates occurs painlessly during the server’s native installation or configuration process, while renewal occurs automatically in the background.&lt;/li&gt;
    &lt;li&gt;Secure: Let’s Encrypt will serve as a platform for implementing modern security techniques and best practices.&lt;/li&gt;
    &lt;li&gt;Transparent: All records of certificate issuance and revocation will be available to anyone who wishes to inspect them.&lt;/li&gt;
    &lt;li&gt;Open: The automated issuance and renewal protocol will be an open standard and as much of the software as possible will be open source.&lt;/li&gt;
    &lt;li&gt;Cooperative: Much like the underlying Internet protocols themselves, Let’s Encrypt is a joint effort to benefit the entire community, beyond the control of any one organization.&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;This will be great, if it just works as they advertise!!&lt;/p&gt;
</description>
				<published>2014-11-20 12:10:52 +0100</published>
				<link>https://www.tnull.de/2014/11/20/new-free-ca-lets-encrypt.html</link>
			</item>
		
			<item>
				<title>Recent attacks on Tor anonymity</title>
				<description>&lt;p&gt;After &lt;a href=&quot;https://en.wikipedia.org/wiki/Operation_Onymous&quot;&gt;Operation Onymous&lt;/a&gt; probably succeeded in deanonymizing Tor users, namely the guy behind SilkRoad 2.0, the Tor project &lt;a href=&quot;https://blog.torproject.org/blog/thoughts-and-concerns-about-operation-onymous&quot;&gt;is puzzled how they did it&lt;/a&gt;:
&amp;gt; ### How did they locate the hidden services?
&amp;gt;
&amp;gt; So we are left asking “How did they locate the hidden services?”. We don’t know. In liberal democracies, we should expect that when the time comes to prosecute some of the seventeen people who have been arrested, the police would have to explain to the judge how the suspects came to be suspects, and that as a side benefit of the operation of justice, Tor could learn if there are security flaws in hidden services or other critical internet-facing services. We know through recent leaks that the US DEA and others have constructed a system of organized and sanctioned perjury which they refer to as “parallel construction.”&lt;/p&gt;

&lt;p&gt;Naked Security had &lt;a href=&quot;https://nakedsecurity.sophos.com/2014/11/12/tor-project-puzzles-over-how-the-law-shredded-anonymity-in-operation-onymous/&quot;&gt;an article&lt;/a&gt; about it, too.&lt;/p&gt;

&lt;p&gt;There was an other claim about Tor security in the last days: Proffessor Sambuddho Chakravarty co-authored a paper called &lt;a href=&quot;https://mice.cs.columbia.edu/getTechreport.php?techreportID=1545&amp;amp;format=pdf&quot;&gt;“On the Effectiveness of Traffic Analysis Against Anonymity Networks Using Flow Records”&lt;/a&gt;, in which the authors claim to deanonymize Tor users at a high rate using data from Cisco’s NetFlow traffic analysis functionality.
However, Roger Dingledine of the Tor project &lt;a href=&quot;https://blog.torproject.org/blog/traffic-correlation-using-netflows&quot;&gt;responded at the Tor Blog&lt;/a&gt;, concluding:
&amp;gt; In summary, it’s great to see more research on traffic confirmation attacks, but a) traffic confirmation attacks are not a new area so don’t freak out without actually reading the papers, and b) this particular one, while kind of neat, doesn’t supercede all the previous papers.&lt;/p&gt;

&lt;p&gt;And in the &lt;a href=&quot;https://blog.torproject.org/blog/traffic-correlation-using-netflows#comment-78918&quot;&gt;comments Chakravarty clarified&lt;/a&gt;:
&amp;gt;I am here to myself clarify all misconceptions. Firslty, they have blow it a bit out of proportion by saying that “81% of Tor traffic”, which is not true. It was only 81.4% of our experiments, and we have spoken about this upfront in our paper. Secondly, its only a case of experimental validation and the challenges involved in it that is the highlight of the paper. In my thesis I have also tried to address how to solve this particular attack, which might work for other attacks as well…&lt;/p&gt;

&lt;p&gt;So it seems the results of the paper aren’t news. Still, traffic analysis is something to keep in mind.&lt;/p&gt;
</description>
				<published>2014-11-20 11:44:09 +0100</published>
				<link>https://www.tnull.de/2014/11/20/recent-attacks-on-tor-anonymity.html</link>
			</item>
		
			<item>
				<title>'Wirelurker' explained</title>
				<description>&lt;p&gt;Jonathan Zdziarski &lt;a href=&quot;http://www.zdziarski.com/blog/?p=4140&quot;&gt;takes a look at the recent ‘WireLurker’ malware for OS X / iOS&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;WireLurker is a trojan that has reportedly been circulated in a number of Chinese pirated software (warez) distributions. It targets 64-bit Mac OS X machines, as there doesn’t appear to be a 32-bit slice. When the user installs or runs the pirated software, WireLurker waits until it has root, and then gets installed into the operating system as a system daemon. The daemon uses libimobiledevice. It sits and waits for an iOS device to be connected to the desktop, and then abuses the trusted pairing relationship your desktop has with it to read its serial number, phone number, iTunes store identifier, and other identifying information, which it then sends to a remote server. It also attempts to install malicious copies of otherwise benign looking apps onto the device itself. If the device is jailbroken and has afc2 enabled, a much more malicious piece of software gets installed onto the device, which reads and extracts identifying information from your iMessage history, address book, and other files on the device.&lt;/p&gt;
&lt;/blockquote&gt;
</description>
				<published>2014-11-07 16:48:42 +0100</published>
				<link>https://www.tnull.de/2014/11/07/wirelurker-explained.html</link>
			</item>
		
			<item>
				<title>'notogotofail' network security testing tool released</title>
				<description>&lt;p&gt;&lt;a href=&quot;http://googleonlinesecurity.blogspot.de/2014/11/introducing-nogotofaila-network-traffic.html&quot;&gt;Google released&lt;/a&gt; &lt;a href=&quot;https://github.com/google/nogotofail&quot;&gt;&lt;em&gt;nogotofail&lt;/em&gt;&lt;/a&gt;, a network security tool:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Nogotofail is a network security testing tool designed to help developers and security researchers spot and fix weak TLS/SSL connections and sensitive cleartext traffic on devices and applications in a flexible, scalable, powerful way. It includes testing for common SSL certificate verification issues, HTTPS and TLS/SSL library bugs, SSL and STARTTLS stripping issues, cleartext issues, and more.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
				<published>2014-11-05 18:11:16 +0100</published>
				<link>https://www.tnull.de/2014/11/05/notogotofail-network-security-testing-tool-released.html</link>
			</item>
		
			<item>
				<title>Secure Messaging Scorecard</title>
				<description>&lt;p&gt;The &lt;a href=&quot;https://www.eff.org&quot;&gt;Electronic Frontier Foundation&lt;/a&gt; created a new project: the &lt;a href=&quot;https://www.eff.org/secure-messaging-scorecard&quot;&gt;Secure Messaging Scorecard&lt;/a&gt; - a really nice security- and privacy-focused overview of messaging apps:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;In the face of widespread Internet surveillance, we need a secure and practical means of talking to each other from our phones and computers. Many companies offer “secure messaging” products—but are these systems actually secure? We decided to find out, in the first phase of a new EFF Campaign for Secure &amp;amp; Usable Crypto.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Have a look!&lt;/p&gt;
</description>
				<published>2014-11-04 22:34:52 +0100</published>
				<link>https://www.tnull.de/2014/11/04/secure-messaging-scorecard.html</link>
			</item>
		
	</channel>
</rss>
