<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[Eccentric Authentication]]></title>
  <link href="http://eccentric-authentication.nl//atom.xml" rel="self"/>
  <link href="http://eccentric-authentication.nl//"/>
  <updated>2015-05-03T22:20:36+02:00</updated>
  <id>http://eccentric-authentication.nl//</id>
  <author>
    <name><![CDATA[Guido Witmond]]></name>
    <email><![CDATA[guido@witmond.nl]]></email>
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Spot the Differences - Adult version]]></title>
    <link href="http://eccentric-authentication.nl//blog/2014/11/30/spot-the-differences.html"/>
    <updated>2014-11-30T21:00:00+01:00</updated>
    <id>http://eccentric-authentication.nl//blog/2014/11/30/spot-the-differences</id>
    <content type="html"><![CDATA[<p>As a child I liked to do puzzles. One of these was called &#8220;Spot
the Differences.&#8221;</p>

<p><img src="http://eccentric-authentication.nl//images/Spot_the_difference.png" title="Get all 15 differences correct and you may win a prize." ></p>

<p>There is an adult version of this game. It&#8217;s much more challenging:</p>

<ol>
<li><p>It is more difficult: Only one picture is shown at a time. Players
have to rely on memory to recall the differences;</p></li>
<li><p>It&#8217;s played by millions of people every day, yet many don&#8217;t know
they are playing;</p></li>
<li><p>The stakes are higher: If you fail to spot any differences
you might lose all the money in your bank account.</p></li>
</ol>


<blockquote><p>This game is also known as Internet Banking.</p></blockquote>

<h2>The Toxic Combination</h2>

<p>The problem is not restricted to banking. The general issue is twofold:</p>

<ol>
<li><p>People need to validate the authenticity of a site before typing in
their password;</p></li>
<li><p>The password gets transmitted to the other party.</p></li>
</ol>


<p>Most people assume that if it looks like their bank and the
address bar is green then it should be safe. Regrettably, it&#8217;s
not. Criminals obtain valid certificates using stolen creditcards and
passports. The true method for authenticating a site requires
verification of server certificate fingerprints. And if you don&#8217;t know
what that means, you&#8217;re playing the game: you have to spot the
spelling errors, the differences in layout and other mistakes to
detect the scammers. Good luck!</p>

<p>The second part is just as problematic: The password must remain
secret, yet it must be transmitted to the other side to log in.</p>

<p>This is the Toxic Combination. One failure to detect a scammer&#8217;s site
and the password is compromised. The scammers can do everything that
you can do with the password.</p>

<h2>A Way Forward</h2>

<p>We present our protocol to eliminate this toxic combination.</p>

<p>We eliminate the need for people to validate a site, the protocol provides
sufficient data so that the browser can do the validation for the
user. We also eliminate the password and replace it with client
certificates. Again the browser will do the work for the user. Making security usable.</p>

<p>How it works is described in our paper: <a href="http://eccentric-authentication.nl//Usable-Security.pdf">Usable-Security.pdf</a></p>

<p>Image Credits:
Image by <a href="http://ja.wikipedia.org/wiki/user:Muband">Muband</a> from <a href="http://en.wikipedia.org/wiki/Spot_the_difference">Wikipedia - Spot the Difference</a>, Creative Commons Attribution-Share Alike 3.0 Unported.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Talk at ICANN]]></title>
    <link href="http://eccentric-authentication.nl//blog/2014/06/25/talk-for-icann.html"/>
    <updated>2014-06-25T09:00:00+02:00</updated>
    <id>http://eccentric-authentication.nl//blog/2014/06/25/talk-for-icann</id>
    <content type="html"><![CDATA[<p>Today I&#8217;ll be presenting a short talk at the ICANN DNSSEC Workshop in London.</p>

<p>It&#8217;s about how to get your computer to protect you against phishers.</p>

<p>The presentation shows how DNSSEC and DANE form the basis on which
this can be built. All it takes is a user agent that does the work for
you. The presentation describes how to reach that goal.</p>

<p><a href="http://eccentric-authentication.nl//Icann-talk-phishing-protection-4.pdf">presentation</a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Making Crypto Invisible]]></title>
    <link href="http://eccentric-authentication.nl//blog/2014/05/01/making-crypto-invisible.html"/>
    <updated>2014-05-01T00:00:00+02:00</updated>
    <id>http://eccentric-authentication.nl//blog/2014/05/01/making-crypto-invisible</id>
    <content type="html"><![CDATA[<pre><code>Q. What good is a tool that requires complicated rituals such as key
signing parties, or fingerprint verification? 
</code></pre>

<p>A. Instant loss of security and privacy properties.</p>

<pre><code>Q. What good is a tool that uses encryption in a network of plain-text
connections? 
</code></pre>

<p>A. Instant suspicion.</p>

<pre><code>Q. What good is a tool for circumventing censorship in a country that
forbids it? 
</code></pre>

<p>A. Instant confession.</p>

<h2>Our proposal</h2>

<p>Eccentric Authentication is a protocol that weaves cryptography into
the normal workflow of the net. It hides all cryptography from view,
yet performs its duties at every moment.</p>

<p>People would interact with web sites just like they do now except that
they get:
- easier account creation, log-in and log-out handling; no more passwords;
- full pseudonymity, users have a different identity at each site;
- private messages that only the intended recipient can read;</p>

<p>Users (ie, the people) won&#8217;t notice any cryptography at all. They find
that the protocol offers:</p>

<ul>
<li><p>fully automatic identity management;</p></li>
<li><p>their computer remembers their accounts for them;</p></li>
<li><p>no more impossible to answer security or trust questions;</p></li>
<li><p>their computer detects and blocks phishing attempts for them, keeping them safe;</p></li>
<li><p>users stay in control of their privacy;</p></li>
</ul>


<p>Site operators will have to set up their servers in a slightly
different way than they do currently:</p>

<ul>
<li><p>replace passwords for client certificates;</p></li>
<li><p>run https-only;</p></li>
<li><p>run their own fully automated certificate signer; this does all the
hard work for the site-operator; (fully automated, so easy to
outsource to a hosting provider without losing its security and
privacy properties)</p></li>
</ul>


<h2>Passing the Greenwald-test</h2>

<p>Site operators can go further. When setting up a newspaper, a blog or
a comment section, they can let people post signed messages, (fully
automated by the user agent).</p>

<p>This offers journalists the option to sign their articles with their
private key, which is no more dufficult than pressing the button at
the user agent.</p>

<p>Over time there will be a large corpus of articles, all signed using
that key. When someone reads an article, their user agent verifies the
necessary cryptographic properties. If it validates, the reader can
use the key to encrypt messages to the journalist. If there is a
validation error, the agent refuses to let people to get into
situations where a crypto-problem could lead to inadvertent disclosure
of identity or confidentiality.</p>

<p>In other words: The readers of that newspaper have to determine
whether or not they trust that journalist with their message, the
protocol keeps it confidential. Without either party having to think
about cryptography.</p>

<p>This same mechanisms works between bloggers and commenters. When a
blogger posts a signed message and your user agent has validated its
signature to be correct, you can use it to write a private message to
that blogger, however he/she is in real life.</p>

<p><em>When you want to write a private message, the system makes it
 possible.</em> Again, without any need to know cryptography.</p>

<h2>Village square</h2>

<p>What we have done so far create a way for strangers to exchange public
keys between them. The only thing they need is a way to find each
other. That&#8217;s the role of the web site. It&#8217;s like the village square
where people meet and engage in public discussion or private
chat. However, it will leave a trail of pseudonyms who meets whom at
the square.</p>

<p>To protect the people from too much traffic analysis, the protocol
offers people to do the equivalent of exchanging telephone numbers at
the square, only more secure.</p>

<p>Once two people have met on a site and their agents have validated
their keys, they can set up a private communication channel between
them. This channel is independent of the site where they met, it goes
directly between their computers. The site cannot learn of anything
that these two people do once they&#8217;ve set up their independent
channel. The only metadata leak we have is network traffic analysis
but for that we have Tor which is also easy to automate at this point.</p>

<p>What this channel entails is upto them. It could be a VOIP-telephone
like connection, a shared document editing platform, or one has
invited the other to an existing community. All secure and
private. There are many good crypto-projects to let people communicate
either in private or in a a community. This project lets people find
others to join them. The other projects makes sure it happens. For
example: LEAP to mail to people, Ostel to talk, Jitsi to chat,
Secushare to collaborate with others.</p>

<h2>Conclusion</h2>

<p>We make it possible for normal people to be safe and secure on the
internet. Each person runs a user agent that handles all the key
management tasks for them.</p>

<p>It makes privacy the default on the net. Every whistleblower can reach
every journalist of their choice, the system keeps their communication
confidential.</p>

<p>It&#8217;s backwards compatible with the current web. People without the
user agent can still read all the public posted messages of
everyone. It doesn&#8217;t exclude anyone from reading. And people who don&#8217;t
have the user agent installed might still be able to participate in
public discussions, albeit anonymously. They cannot create private
channels, nor enjoy confidentiality.</p>

<p>It can slowly grow in momentum until there is a critical mass where
it becomes a must have.</p>

<p>It uses ubiquitous encryption, every connection is encrypted so
Tor-traffic doesn&#8217;t stand out amongst the &#8216;normal&#8217; traffic. On the
contrary, it is advisable to use Tor or GnuNET every time. However,
that&#8217;s a decision that everyone has to make for themselves.</p>

<p>The project aims to let people discover others and join their
communities. The cryptography keeps them safe against warrantless
spying or snooping. The weaving of crypto into the net makes this
available to the common people, without requiring them to learn how to
use it. (That&#8217;s the programmer&#8217;s job).</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[How to design a Distributed Client Certificate Verification service]]></title>
    <link href="http://eccentric-authentication.nl//blog/2014/03/26/how-to-design-a-distributed-client-certificate-verification-service.html"/>
    <updated>2014-03-26T00:00:00+01:00</updated>
    <id>http://eccentric-authentication.nl//blog/2014/03/26/how-to-design-a-distributed-client-certificate-verification-service</id>
    <content type="html"><![CDATA[<p>With Eccentric Authentication, the goal is to make sure that each
client certificate has a globally unique, human memorable name. In
other words: there are no two certificates (with different public
keys) bearing the same CN.</p>

<p>With unique CN&#8217;s, people can trust that each signed message must have
been signed by the holder of the corresponding private key. This ties
human memorable names to public keys. When we make it globally unique,
we have squared Zooko&#8217;s Triangle.</p>

<p>To make sure that each CN is unique, we create a Client Certificate
Validation Service.</p>

<p>The main tasks of the Client Certificate Verification Service are:</p>

<ol>
<li>Validate that each client certificate has a unique CN;</li>
<li>Raise an alarm when a violation is detected.</li>
</ol>


<p>CN&#8217;s are a tuple of (nickname, sitename), for example:
user@domain. Each site signs the client certificates for its
clients. Client certificates contain no identifying data other than
the nick name and the user&#8217;s public key. This makes client
certificates pseudonyms for their owners. People have at least one,
perhaps more different pseudonyms for each site they&#8217;ve signed up for.</p>

<p>To make sure that only the site itself can sign certificates for that
domain, each site runs its own RootCA. That CA is specified in
DANE/DNSSEC, making the domain name point to a globally unique Root CA
public key. (Site identity).</p>

<p>The risk is that a site signs multiple certificates bearing the same
CN. This would enable the site to perform a MitM-attack on its users.</p>

<p>To counter that treat, people submit their client certificates to the
verification service. The service makes it <em>detectable</em> when there is
a violation. That&#8217;s sufficient for our purposes.</p>

<p>More requirements:</p>

<ul>
<li>The CCVS must not refuse to add any valid certificate to its list;</li>
</ul>


<p>This requirement is to ensure that when a duplicate certificate for a
CN is detected by someone, it will be added to the CCVS, so others can
learn about this incident.</p>

<ul>
<li>The CCVS must not be able to withhold a certificate when queried for a CN.</li>
</ul>


<p>The CCVS must answer truthfully. It may not be able to withhold
certificates that match a given CN. It must report them all. If not,
it could collude with the site&#8217;s CA to attempt a MitM attack.</p>

<h1>The challenge</h1>

<p>The challenge is to find protocol that fits these requirements. Bonus
points if it is scalable, distributable .</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[End User Trust Model]]></title>
    <link href="http://eccentric-authentication.nl//blog/2013/11/24/end-user-trust-model.html"/>
    <updated>2013-11-24T12:00:00+01:00</updated>
    <id>http://eccentric-authentication.nl//blog/2013/11/24/end-user-trust-model</id>
    <content type="html"><![CDATA[<p>There is a huge gap between the way the current deployed crypto-tools
work and the requirements of the normal end user.</p>

<blockquote><p>End User Trust Model</p></blockquote>

<p>The common user has these requirements:</p>

<ol>
<li>Don&#8217;t think, just click.</li>
<li>Someone else must protect me.</li>
<li>For free.</li>
</ol>


<p>On 1: Users don&#8217;t want to be bothered with anything that stands in the
  way of what they want to do. It won&#8217;t work.</p>

<p>On 2: Users assume that their computer keeps them safe from all
  harm. Or their virus scanner. Or their ISP, or faceboogle, or their
  government. But at the same time, these appointed chaperones must
  respect the privacy of their entrusted appointees.</p>

<p>On 3: Of course, users don&#8217;t want to pay for anything.</p>

<p>One might call it unfair of these users, however, I don&#8217;t blame
them. It&#8217;s what has been promised time after time, albeit never
delivered. It&#8217;s time we are going to deliver that: /No-Brain Security and Privacy./</p>

<blockquote><p>End User Trust Decisions</p></blockquote>

<ol>
<li><p>Trust is binary. When people visit a website, either <em>they</em> trust
it sufficiently to post their identifying details, or they don&#8217;t and
refrain from using that site. Most likely, they click away to search for some site
they do find sufficiently trustworthy.</p></li>
<li><p>Trust decisions can change at any time. It can be friends, family,
or the local system administrator who is able to change a user&#8217;s trust
decision. Or it can be an error on the screen to spark distrust. Or
it&#8217;a s learned behaviour: &#8220;There is this green bar, so it is OK.&#8221; There is no
rational thought process behind it.</p></li>
<li><p>When trust is given, security and privacy are expected. A user at a
forum who sends a private message to another forum user expects that
only that person can read it. The user might feel violated when that
message gets leaked out by the forum administrators, or get spied upon
by unexpected advertisers.</p></li>
<li><p>People have learned to distrust anyone on the net. A business that
promised not to sell the customers&#8217; email addresses to spammers, might
sell it the moment the customer cancels the service. &#8220;They are not a
customer anymore.&#8221; As most people don&#8217;t have easy access to throw-away
email addresses, they are reluctant to sign up.</p></li>
</ol>


<blockquote><p>Current cryptography tools violate the End User Trust Model and the Trust Decisions.</p></blockquote>

<ul>
<li><p>GPG requires people to refrain from sending a message until they are
sure of a trusted path through the web of trust. In reality, what
happens is that people don&#8217;t use GPG.</p></li>
<li><p>S/MIME requires people to prove their <em>Identity</em> to a supposedly
trusted third party before being able to communicate. It severely
violates privacy and you have to pay for it through the nose every
year. No wonder no one uses it.</p></li>
<li><p>Global Trutsted CA-authenticated TLS fails the no-brain
solution too. Even the green bar is not a guarantee that the site is the
correct one. If there comes a warning, there is nothing that users
can do to resolve the situation. In fact, clicking away the error
makes it &#8216;work&#8217; but</p></li>
<li><p>Duck-validation: &#8220;If it looks like an email from the bank, it must
be an email from the bank. I better log in to prevent that big
deduction from going to happen.&#8221; Now banks are teaching people to
trust an untrustable CA-infrastructure to protect their accounts. An
infrastructure that cannot prevent harm. And with the secret
services, all bets are off.</p></li>
</ul>


<blockquote><p>Solution</p></blockquote>

<p>It is time we are going to deliver such an End User Trust Model where
each of the End User Trust Decisions get addressed.</p>

<p>The system we are describing is Eccentric Authentication.</p>

<p>It uses pseudonymous client certificates. One for each account a at
each site. The certificate does not contain any identifying
information. Hence users are only known by their (chosen)
nickname. There is a user agent at the user&#8217;s computer that does all
the cryptographic work.</p>

<blockquote><p>Sign up</p></blockquote>

<p>The typical scenario for signup is like this:</p>

<ol>
<li>User learns about a site, perhaps via a search engine;</li>
<li>User browses site, reads a bit on it; decides to sign up;</li>
<li>User directs the agent to request a client certificate with a user
chosen nickname (a different nickname for each site); it sounds
complicated but is just a single click;</li>
<li>Site signs the certificate. The certificate bears the chosen nickname and the sitename.</li>
</ol>


<p>The trust decision happens in step 2. It&#8217;s a typical users&#8217; decision:
&#8220;I like it, and want to sign up.&#8221;</p>

<p>The Eccentric Authentication protocol keeps the user secure and
anonymous. Nowhere is the user asked to provide any identifying
information. No names, no email address at all. This gives the user
the trust that they can sign up without giving it a thought.</p>

<p>In fact, a site asking for any personal identifying information is
ranking lower on trustworthyness than a site that does not ask these
details. Extra benefit, it&#8217;s easier to sign up anonymously than having
to provide details.</p>

<blockquote><p>Private messaging</p></blockquote>

<p>Another aspect of Eccentric Authentication is that public messages,
such as postings in a forum are signed by their writers&#8217; private
key. The signature is posted alongside the message.</p>

<p>This serves two functions. First, the poster can verify that their message
get posted under their own pseudonym. It shows to the poster that the
site is not performing a MitM attack against them.</p>

<p>The second purpose of the signature is to tie the posters public key
(and certificate) to the message. This allows for truely private
messaging to total strangers.</p>

<p>When a user (with a client certificate) wants to send a private
message to some other user at the site, this will be the typical scenario:</p>

<ol>
<li>User browses the site;</li>
<li>User comes across a message from someone; igniting the urge to send a private message;</li>
<li>User presses the &#8216;Compose Private Message&#8217;-button that the site provides;</li>
<li>Site specifies the account name and the other users&#8217; certificate;</li>
<li>User agent verifies the certificate; Validating the embedded public key;</li>
<li>User writes the message and presses &#8216;send&#8217;;</li>
<li>Users&#8217; user agent encrypts the message with the other users&#8217; public key and hands it off to the site for delivery; The site only receives the encryted data;</li>
<li>Other user gets the message and decrypt it with their private key;</li>
</ol>


<p>As the message is encrypted with the other users&#8217; public key, only the
intended recipient can decrypt and read the message. Not even the site
operator cannot read the contents of the message. All they know is
that one user sends a message to another. If those users did not
provide their real name at signup, the users stay anonymous.</p>

<p>Here there is no trust needed. The user agent verifies that there is
only one certifcate in the world that bears the nickname of the
intended recipient. That&#8217;s easy to do with a PGP-like keystore. When
there is no double detected, it must be that of the poster.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Talk for BruCON]]></title>
    <link href="http://eccentric-authentication.nl//blog/2013/09/28/talk-for-brucon.html"/>
    <updated>2013-09-28T22:00:00+02:00</updated>
    <id>http://eccentric-authentication.nl//blog/2013/09/28/talk-for-brucon</id>
    <content type="html"><![CDATA[<p>Last week the 5th BruCON was held in Ghent, Belgium. It&#8217;s a small (and
friendly) security conference. Their motto is: &#8220;Hacking for
b33r&#8221;. Topics ranged from a workshop on breaking old crypto algorithms to
pinpointing GSM locations and how to make the compliance process less
headache inducing. I heard that there was no beer brewing workshop
this year due to pregnancy of the brewer. (Yes, women can brew beer
just as well.)</p>

<p>I was one of the recipients of a grant to work on an open source
security project in their 5by5 program. It helped to keep me going
with this Eccentric Authentication stuff. And they invited me to the
conference to present the things I did.</p>

<p>I&#8217;ve made a small presentation on what I think is the tip of the
iceberg of what you can do with client certificates. Here is the
<a href="http://eccentric-authentication.nl//Brucon-Eccentric.pdf">presentation</a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Crypto Renaissance]]></title>
    <link href="http://eccentric-authentication.nl//blog/2013/09/21/crypto-renaissance.html"/>
    <updated>2013-09-21T14:00:00+02:00</updated>
    <id>http://eccentric-authentication.nl//blog/2013/09/21/crypto-renaissance</id>
    <content type="html"><![CDATA[<p>With  &#8216;CryptoGate&#8217; in full action, many people are trying to come
up with a solution. Some good, many bad.</p>

<p>Many people focus on the security aspect of cryptography. Although
necessary, it is not sufficient.</p>

<p>The thing most people take for granted is how to authenticate the
other end of your communication channel. With PGP/GPG you need a web
of trust to validate. WebID/FOAF tries to replicate that in
HTTPS. These trust connections are public knowledge. There is no
anonymity. And if you are not part of that network, you don&#8217;t have a
way to validate any of the keys.</p>

<p>X509 server certificates from the global certificate authorities are a
scam (due to the missing X500 directory that matches end point
identities to certificate authorities). Try to answer this one: Who is
the certificate authority of your bank&#8217;s web site?</p>

<p>End user client certificates from these same certificate authorities
are akin to digital passports, tying all use of it to one&#8217;s true
identity, for life. Besides they still suffer from the missing x500
directory. One can&#8217;t tell from the certificate, if Guido Witmond&#8217;s
certificate signed by Verisign is mine, a forgery, or someone else
with the same name.</p>

<h3>Validate keys of total strangers</h3>

<p>I&#8217;ve came up with my way of doing things. I believe the answer lies in
the fact that we need a way to exchange public keys between total
strangers, reliably. In a way that is backwards compatible with the
current web, as that&#8217;s what people are used to.</p>

<p>I call that effort Eccentric Authentication.</p>

<p>The central idea is that each website signs the client certificates for all
it&#8217;s customers. The site runs its own CA. The only (and utmost
important) requirement is that the user-chosen account name is unique
for the site. Users don&#8217;t have to provide email address, passwords, or
other identifying details. Certificates are anonymous. Especially when
Tor is used. Users will have a different identity at each site,
sometimes more than one at a single site.</p>

<p>The second thing is that whenever people write a blog or leave
comments, these messages are signed with their private key.
Other visitors at the site can recognize the message signature by the
fact that the CA is the one from the site.</p>

<p>This ties the message to the person holding the private key. But a
public key is not a human friendly identifier. The chosen
account name (as Common Name) in the signature is human friendly.</p>

<p>To protect against MitM attacks, we need a way to verify that the
site&#8217;s CA signs each account name only once. I propose we use a
central registry like CMU&#8217;s Perspectives but for client
certificates. Whenever a person signs up for a client certificate they
submit their certificate to this registry. Every once in a while
people look up to see if theirs is (still) the only one for their
account name at the site. The most important requirement for this
registry is that it cannot fake the answers, once a certificate has
been submitted, it cannot deny it has received it. It&#8217;s best if it is
set up as a distributed service.</p>

<p>These two ingredients, Local CAs that sign only their own clients and
the global registry, are sufficient to let total strangers communicate
privately and anonymously.</p>

<p>If a reader of this signed blog wants to, they can write an encrypted
message to the author of the blog using the public key in the
signature on the blog. A quick lookup at the registry will tell if
theirs is still the only certificate for the {account name, site name}
tuple.</p>

<h3>Authenticated anonymously</h3>

<p>Once they&#8217;ve exchanged the first messages between them, and they
checked that both their account name and that of the other party have
the expected certificate at the registry, they&#8217;ve authenticated each
others public keys!</p>

<p>Two total strangers, who have never met, have been introduced by a
third party (the site) that also doesn&#8217;t know anything about the two.</p>

<p>The site disappears from the picture. Once authenticated, the people
can send a message (encrypted of course) with a delivery end point
that is independent from the site.</p>

<h3>Global unique names</h3>

<p>As we have a way to validate the account-name sitename tuple, we can
distribute public keys by just writing down this name.  One can
introduce one other by telling this name. The recipient can look up and
see that the name points to one certificate. Here is the seed for a
web of connections. No nasty fingerprints to validate.</p>

<h3>There is more.</h3>

<p>With the site&#8217;s server certificate signed by the site&#8217;s own CA,
clients can match the client certificates for the site against the
site&#8217;s server certificate. This makes the CA&#8217;s root certificate the
<em>identity</em> of the site. This protects against phishing, as the
phishers cannot fake the CA&#8217;s root key. It won&#8217;t match.</p>

<p>It also creates censorship resistance. The site can change names, go
dark on onion sites. When the site owner creates a new certificate
with the same Root CA, the new site assumes the old identity. People can log in
again with their existing certificates.</p>

<p>I use DNSSEC and DANE to make sure that new people can find the
correct site. In combination with the registry, people can validate
that the DNS registries have not been manipulated.</p>

<h3>It doesn&#8217;t take much.</h3>

<p>All that&#8217;s needed to bootstrap this is a browser plug-in that does the
crypto work. As proof of concept, I made a web proxy to show how easy the user interface can be.</p>

<p>Please find it at <a href="http://eccentric-authentication.org/blog/2013/06/07/run-it-yourself.html">Run it Yourself</a></p>

<p>If you have any questions, I&#8217;d happy to clarify. Just use <a href="http://eccentric-authentication.nl//contact.html">plain email</a> for now.</p>

<p>With Regards, Guido Witmond.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[A Subversive Idea]]></title>
    <link href="http://eccentric-authentication.nl//blog/2013/09/05/a-subversive-idea.html"/>
    <updated>2013-09-05T15:00:00+02:00</updated>
    <id>http://eccentric-authentication.nl//blog/2013/09/05/a-subversive-idea</id>
    <content type="html"><![CDATA[<p>In the previous blog <a href="http://eccentric-authentication.nl//blog/2013/08/31/the-holy-grail-of-cryptography.html">The Holy Grail of Cryptography</a>,
we&#8217;ve shown how you can validate keys when you know the person. Once
validated, that key enables the use of the secure channel.</p>

<p>We&#8217;ve also shown how we can create a web site that lets total
strangers communicate securely between each other.  The web site acts
as introducer, letting strangers exchange keys and provides the transport
for the messages.</p>

<h2>Separate identity from transport</h2>

<blockquote><p>Philosphically speaking, the secure channel is an abstract channel.</p></blockquote>

<p>The secure channel is an abstract channel. It comes into existence at
the moment the public keys become validated to belong to the other person.</p>

<p>The channel is not tied to a single transport mechanism. Although you
need a concrete transport to <em>use</em> the channel, it is not tied to that
channel. The channel can be manifest in severel different forms.</p>

<p>The first form is the channel that the web site offers. It offers to
transmit a message from one to the other. The sender encrypts the
message with the public key of the recipient so the site cannot learn
of the contents of the message. It can only forward the message to the
recipient. We are going to use that channel to create another one.</p>

<blockquote><p>A dating site</p></blockquote>

<p>Suppose we run a dating site. Bob has seen Alice&#8217;s profile and they
have sent some private messages back and forth via the site. Bob
decides he wants to take it a step further and wants to talk to
her. He opens a ZRTP-listener on his own computer. It&#8217;s a protocol for
encrypted (confidential) voice and video chat. He does three things:</p>

<ol>
<li><p>He configures it that it only accepts connections that are
identified with the certificate of Alice. Thus, only Alice can call,
all others are rejected.</p></li>
<li><p>He configures it with his dating-site certificate and private key,
so Alice can verify it&#8217;s that Bob from our dating site.</p></li>
<li><p>He sends Alice an encrypted message through the dating site in
which he specifies the ZRTP-endpoint, inviting her to place the call.</p></li>
</ol>


<p>Then he waits until Alice places the call. (If she decides to do so).
When he receives a call, it can only be Alice as she&#8217;s the only one
with the private key that matches her certificate.</p>

<p>Now they can talk in private. Not even the dating site learns that
they are calling. The site is not involved anymore. The call goes
direct from Alice&#8217;s computer to Bobs&#8217;..</p>

<p>What we have done here is to use the dating site as <em>introducer</em> between
two strangers so they can exchange public keys without ever having met
before.</p>

<p>All it takes is a <em>public</em> forum, a dating site, blog site or a comments
section at a newspaper to introduce strangers to each other so they can
communicate <em>privately</em> via different concrete channels.</p>

<blockquote><p>A single message is all it takes</p></blockquote>

<p>A single message is all it takes to create a new secure channel when
you have an existing secure channel.</p>

<p>Suppose the dating site went broke just before Bob wanted to invite
Alice for his call. The concrete transport that they&#8217;ve used so far is
gone. Bob doesn&#8217;t have to despair. The abstract channel is still in
place as both still have each others public keys.</p>

<p>All Bob needs to do is to try to create a new concrete channel by
getting the invitation across to Alice.  Most likely there will be
some blogging sites that write about the demise of this dating
site. Bob can write a public comment at that blog that reads:</p>

<pre><code> Dear Alice, I would love to get in contact with you. 
 Please call me at &lt;endpoint&gt;, you can recognize me 
 by my certificate.

 In anticipation, Bob
 &lt;signed with Bob's dating site-certificate&gt;
</code></pre>

<p>He then plasters this message everywhere he expects her to see it. (It
helps Bob a lot if they&#8217;ve talked about hobbies and such.)  When Alice
eventually finds the message, she sees that the signature is from the
same Bob as the one on the dating site. If she wants, she can place
the call.</p>

<p>What happened is that &#8212; at the moment Alice has verified the signature on
Bobs public announcement &#8212; the secure channel manifested itself.</p>

<h2>The power of client certificates</h2>

<p>The real power of client certificates is that they don&#8217;t get
invalidated when the website and its CA disappear.  You may lose a
concrete channel but when you have enough <em>independent</em> other
channels, you won&#8217;t lose contact.</p>

<p>The Eccentric protocol makes it easy to create these introducers, so
there is not a single identity to block.</p>

<p>The rest of this web site is devoted to make this dream come true.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[The Holy Grail of Cryptography]]></title>
    <link href="http://eccentric-authentication.nl//blog/2013/08/31/the-holy-grail-of-cryptography.html"/>
    <updated>2013-08-31T22:13:00+02:00</updated>
    <id>http://eccentric-authentication.nl//blog/2013/08/31/the-holy-grail-of-cryptography</id>
    <content type="html"><![CDATA[<blockquote><p>&#8230; is to create a secure channel in an insecure environment.</p></blockquote>

<p>A secure channel is where you can communicate with <em>someone</em> knowing
that no one else can <em>impersonate</em> your communication partner.</p>

<p>Knowing <em>whom</em> you talk to the is <em>the most important</em>
aspect of all cryptography protocols. Even more than keeping the
message confidential, or preventing people from learning who you
communicate with. (Don&#8217;t get me wrong, these are very important.)</p>

<p>Many great security protocols take it for granted that you <em>already
know</em> who you want to talk to, so these designers focus on the
confidentiality and anonymity aspects.</p>

<p>However, there is no easy way to communicate securely with the strangers
you meet on a web site. You can communicate, for sure, but there is no
way of knowing that you talk to the same person next time. Only when
you can <em>verify</em> that you are indeed talking to the same person, you
have a <em>secure channel</em>.</p>

<p>Getting that secure channel, that&#8217;s our <em>Quest</em>.</p>

<h2>Shared secret</h2>

<p>When you meet with someone in person, you can agree on a secret
password to encrypt future communication. As long as you keep the
password secure, you have your secure channel.</p>

<p>If you&#8217;ve never met in person, you obviously can&#8217;t establish a shared
secret. We need something else. It&#8217;s called Public Key cryptography.</p>

<h2>Public keys</h2>

<p>A very short primer on public keys. Both of you (independently) create
a <em>key pair</em>. It consists of a private key and a public key. Both of you keep
your private key private. Tell it to no one. The public key gets to travel the world.</p>

<p>There are two things you can do with the key pairs:</p>

<ol>
<li><p>You can encrypt a message with someones&#8217; public key. Only the owner
of the matching private key can read it with that private key. You
have a one-way secure channel. The recipient uses your public key to
encrypt the response to you. As you are the sole proprietor of your
private key, only you can decrypt it. That is the return channel.</p></li>
<li><p>A private key can sign a message.  Everyone can validate
(with the public key) that is was <em>that</em> private key that signed it.
This signature is the proof that a message is actually send by the
other party, not by someone else. It establishes the identity of the
other party.</p>

<pre><code>In simple terms, when you can exchange your public keys, 
you have created a secure channel between the two of you. 
</code></pre></li>
</ol>


<p>The not so simple part is to exchange your public keys. You need to
make sure that the public key really comes from the person you expect
it to be. If not, you are encrypting your secret message to someone
else.</p>

<pre><code>  We need to make sure we get the correct key from our partner. 
  We need a secure channel for that. Ouch.
</code></pre>

<h2>Authenticating relatives</h2>

<p>If you know the person and don&#8217;t mind the traffic analysis, send them
your public key by insecure email. Ask for their public key in
return. When you have exchanged keys, you need to validate these keys.</p>

<p>To do so, set up an encrypted voice and video chat channel that uses
these keys to secure the connection. You use your private key and
their public key on your end. They use their private key and your
public key at their end. When you have established a connection and
you recognize each other, presto. Keys validated. You have a secure
channel from now on.</p>

<p>The reason it works is that if one of you have gotten a wrong key, the
connection would not get established, as it does not match the other
end&#8217;s private key.</p>

<p>(There is a small chance that you might get tricked by a Man in the
Middle-attack. You have to do a little more work than just described,
but that&#8217;s easy.)</p>

<h2>Authenticating strangers</h2>

<p>The problem is more difficult when you want to communicate with
strangers. You can&#8217;t rely on voice recognition, nor meet in person. If
you could meet in person, just exchange the public keys like you did
with the password.</p>

<p>As public keys are just big (somehow random) numbers, they
don&#8217;t have any identifying properties. We need to attach a name to a
public key. What we need are Certificates.</p>

<h2>Certificates</h2>

<p>A certificate is quite simple. It&#8217;s a name attached to a public
key. That combination is then signed with the private key of the Certificate Signer.</p>

<p>As you remember, a signature from a private key can be validated against the
corresponding public key.</p>

<p>The private key that signs the certificate belongs to a Certificate
Authority (CA). That private key the most important asset of any CA. It binds
names and public keys together in a signed statement.</p>

<p>That&#8217;s the whole task of CA, binding names and public keys
together. It means that if you can trust the CA, you can trust that
the public key belongs to the name.</p>

<p>In other words, the name becomes the human readable identity of the public key.</p>

<blockquote><p>We&#8217;ve split the the problem of creating a secure channel into two sub-problems:</p>

<ol>
<li>to recognize the names;</li>
<li>the finding a way to trust the certificate authority.</li>
</ol>
</blockquote>

<p>There are several  attempts at solving these problems.</p>

<h2>Classic Trusted Third Parties</h2>

<p>Classic Certificate Authorities solve the problems by requiring you to
prove your identity to them with your passport. Once they are
satisfied of your identity (and you paid them) they create a
certificate that contains your name and your public key. It proves to
the world that you own that public (and matching private) keys.</p>

<p>But you lose all anonymity. The certificate is like a digital passport.</p>

<p>The Trusted Third Party CAs solve the problem of identifying Public
Well-Known people. For example, a mayor could get a certificate
stating that he is the mayor of a city. It would be signed by the CA
that signs all certificates for civil servants.</p>

<p>It allows you to send your complaint about your neighbours&#8217; fence to
the correct person, (the mayor) and not a major newspaper editor who
bears the same name. Whose certificate is signed by that of the journalists union.</p>

<p>These digital passports are not a good idea to use on the broad
internet, as they tie every action you do with your true life identity
for ever.</p>

<p>We need a different solution.</p>

<h2>Eccentric Authentication</h2>

<p>So far, in this blog, we established a way to create a secure channel
between two (strangers) who meet in person. They just exchange the
public keys and they&#8217;re done.</p>

<p>We established away to create a secure channel between two relatives:
thay exchange the keys in an insecure way and validate the keys by
setting up an encrypted voice and video chat. When they recognize each
other, the keys have reached their correct destinations. (With some
extra work to prevent a MitM).</p>

<p>We&#8217;ve also shown a way to esablish a secure channel with a publicly
known person. They need to get a certificate from a well-known Trusted
CA to proof you have the correct public key. That allows anyone to
validate that the key belongs to the person.</p>

<p>To sumarize: In all these cases, you need to know the <em>identity</em> of the person you
want to communicate with. Once you&#8217;ve confirmed the identity of the
person, you&#8217;ve validated the public key. Then you can use the key to
use the secure channel.</p>

<blockquote><p>The identity of the person confirms the identity of the public key.
The key becomes the substitute identity of the person.</p></blockquote>

<p>The key is the substitute identity of the person. The key <em>is</em> an identity.</p>

<h2>Turning identity management upside down</h2>

<p>We have to ask ourselves this question:</p>

<blockquote><p>Question: Why would two strangers want to create a secure channel?</p>

<p>Answer: They don&#8217;t.</p></blockquote>

<p>They don&#8217;t have any reason to communicate with each other. They&#8217;re
strangers to each other. They stay that way unless they would meet each other.</p>

<p>That&#8217;s what we are going to do, we are going to create a site as a way
to introduce people to each other. Say, a blog site. It will certainly
attract people. Most of them strangers to each other.</p>

<p>Our blog site lets people start a blog on a topic. And it offers both
public visible comments as well as private messages. Just like any
other blog or forum software.</p>

<p>Our site is different in the way we authenticate people. We don&#8217;t ask
for email addresses, nor passwords. We use certificates to let people
log in. Remember that cerficates bind a name and a public key? That&#8217;s
all that people need to provide when they sign up for an
account. People come up with the nickname, it&#8217;s how they want to be
known on our web site. It will be the name under which they write their
blogs and comments.</p>

<p>Make sure that you create a nickname when you sign up, not your real
name.</p>

<blockquote><p>Our own CA.</p></blockquote>

<p>We run our own CA to sign the certificates for our visitors. It signs
client certificates. Our web site only accepts our client certificates
signed by our own CA.</p>

<p>There is one more difference. When people post a blog or a
comment. Their computer <em>signs</em> the message with their private
key. This signature is placed together with the message on the blog.</p>

<p>When you read the message, your computer verifies the signature. It
uses the certificate to do so.  It means that if you want to write
a private message, you already have correct certificate (with the
validated public key) to encrypt a message.  Hand it to the site for
delivery and wait for the reply.  As the message is encrypted, not
even the site-operators can read the message. How&#8217;s that for private
messaging?</p>

<p>With this design we have solved the dual problem of recognizing the
names and trusting the CA.</p>

<blockquote><p>The site has become the introducer.</p></blockquote>

<p>The site has become the introducer of both the people, and their public keys.</p>

<p>This is the biggest benefit of the Eccentric Authentication design. It
enables people to exchange cryptographic keys in the most easy
way. Just by signing up for a web site and blogging, you distribute
your public key. By reading the messages and responding, you exchange
keys.</p>

<p>The public key becomes the identity of the person behind it. Although
you don&#8217;t know the person, you have their key validated through their
use of the site.</p>

<blockquote><p>Proper authentication is the key to anonymous connections.</p></blockquote>

<p>We left out the part of making sure that the site is not performing a
Man in the Middle attack on its users. See the section on
 <a href="http://eccentric-authentication.nl//eccentric-authentication/global_registry_of_dishonesty.html">Global registry</a>.
It deals with that part.</p>

<p>Read our next blog <a href="http://eccentric-authentication.nl//blog/2013/09/05/a-subversive-idea.html">A subversive idea</a>
on why we call identity management a secure channel.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[A Five Minute Overview]]></title>
    <link href="http://eccentric-authentication.nl//blog/2013/07/24/a-five-min-overview.html"/>
    <updated>2013-07-24T00:00:00+02:00</updated>
    <id>http://eccentric-authentication.nl//blog/2013/07/24/a-five-min-overview</id>
    <content type="html"><![CDATA[<p>To prepare for a Lightning Talk at a security conference I&#8217;ve tried to
condense the central ideas of Eccentric Authentication into a 5 minute presentation.</p>

<p>You can see my slide-like summary here: <a href="http://eccentric-authentication.nl//eccentric-authentication/five-minute-overview.html">5 minute overview</a></p>

<p>I&#8217;d love to see your comments. Please mail at guido @ witmond.nl.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[A walkthough of the dating site]]></title>
    <link href="http://eccentric-authentication.nl//blog/2013/06/12/walkthrough-datingsite.html"/>
    <updated>2013-06-12T00:00:00+02:00</updated>
    <id>http://eccentric-authentication.nl//blog/2013/06/12/walkthrough-datingsite</id>
    <content type="html"><![CDATA[<p>This blog gives a simple walk through &#8220;The world&#8217;s mode secure dating site&#8221;.</p>

<p>It&#8217;s full of technobabble talk of how the security system
operates. Feel free to ignore that at first reading.</p>

<p>We assume that you&#8217;ve installed the
<a href="http://eccentric-authentication.org/blog/2013/06/07/run-it-yourself.html">ecca-proxy</a>
as described. If not, you&#8217;ll see some <em>Don&#8217;t panic</em> messages. We
describe those later.</p>

<h2>Home page</h2>

<p>This is the url for the dating site.</p>

<pre><code>http://dating.wtmnd.nl:10443/
</code></pre>

<p>If you enter this into your browser you&#8217;ll see this page.</p>

<p><img src="http://eccentric-authentication.nl//images/dating-home.png" title="Home page of the dating site" ></p>

<p>It&#8217;s a bit boring, just some plain text, no images. However, the proxy
has done a lot of work already.</p>

<p>It uses DNSSEC to resolve the hostname (dating.wtmnd.nl) in the
IP-address (either 37.59.38.18 or 2001:41d0:8:4d12::90). Yes, we use
this alien IPv6 protocol. IPv4 is for earthlings.</p>

<p>It also uses a DANE, an extension protocol to lookup the
TLS-certificate of the server. Every connection from the ecca-proxy to
the site uses https under the hood. We have to deserve the claim
<em>&#8216;most secure&#8217;</em> somehow.</p>

<p>Now click on the button &#8216;The aliens&#8221;.</p>

<h2>The aliens</h2>

<p><img src="http://eccentric-authentication.nl//images/dating-aliens.png" title="The available aliens" ></p>

<p>Here is the list of aliens. This page is visible without logging in
yet. Click one of the aliens and you see the detail page. It doen&#8217;t
have much details, as we want to showcase the technology behind
eccntric authentication. The most important thing is the &#8220;Compose a
Poem&#8221; button.</p>

<p>If you have an account you can send encrypted messages to other
participants. And you can receive messages too. To create an account,
press the &#8216;Your profile&#8217; button at the top.</p>

<h2>signing up</h2>

<p>Here it turns ugly. Although only the page layout. What we get is a
page generated by the Ecca-proxy user agent. It is your computer that
asks you what to do. The dating site just waits until we return with a
valid account. It tells us with the <em>401 - Eccentric Authentication
required</em> that it wants an anonymous client certificate, signed by
it&#8217;s own CA. See <a href="http://eccentric-authentication.org/eccentric-authentication/anonymous_logins.html">Anonymous Logins</a>.</p>

<p><img src="http://eccentric-authentication.nl//images/dating-signup.png" title="Signup with an identity" ></p>

<p>There are three options on the page.</p>

<p>The first option the proxy offers me (the user) to log in with my
existing account (guidow). Pressing that button tells the proxyt that
we want all subsequent connection to the dating site with that
account. Behind that account, the proxy logs in with the client
certificate.</p>

<p>The second option allows me to sign up for a new account. I come up
with a nickname and press the &#8216;Register&#8217; button. The proxy (running on
my own computer) will create a new private key, and registers the
public key at the site&#8217;s own Certificate Authority.  It checks if the
nickname is unique and signs it. Our proxy receives the certificate
and uses that to log in at the site.</p>

<p>Notice there are two components: The site itself and the Local Certificate Authority.</p>

<p>Finally, there is a third option to register anonymously. My proxy
will come up with a unique name &#8216;anon-<number>&#8217; and registers an
account with that name at the Local CA.</p>

<p>We take that third - anonymous - option.</p>

<h2>signed up - manage profile</h2>

<p>With a second or two, we are back at the dating site. And the proxy has logged me in.</p>

<p><img src="http://eccentric-authentication.nl//images/dating-logged-in.png" title="Logged in" ></p>

<p>The top part of the browser window is the part of the Ecca proxy. It shows that I&#8217;m logged in at the dating site, with the account it has created for me. There is also a log out button  and a link to the proxy&#8217;s management page where we can see all accounts we have for all sites where we have accounts.</p>

<p>The blue part of the page is the dating site. It shows the typical questions to create a profile. Select some at will and press Engage. That sets the profile at the dating site. Now we are ready to comminicate.</p>

<h2>sending messages</h2>

<p>Click on the &#8216;Aliens&#8217; button, select one of them to whom you want to
write a Vogon Poem. Click on the name to get to the details
page. There, click &#8216;Compose a Poem&#8217;.</p>

<p><img src="http://eccentric-authentication.nl//images/dating-compose-poem.png" title="Composing a poem" ></p>

<p>Here we are at another simple looking but interesting screen. It&#8217;s just a textbox and a Deliver-button. All the interesting things happen - invisible - inside the ecca-proxy.</p>

<p>It&#8217;s the ecca-proxy that receives the message and two hidden parameters that the dating site put there. (The site and the proxy work together on this.)</p>

<pre><code>&lt;form method="POST"&gt;
  &lt;input type="hidden" name="encrypt" value="required"&gt;
  &lt;input type="hidden" name="certificate_url" 
     value="https://register-dating.wtmnd.nl:10444/get-certificate?nickname=guidow%40%40dating.wtmnd.nl"&gt;
  &lt;br&gt;
  &lt;textarea name="cleartext" rows="8" cols="80"&gt;I love the size of your ... ehm ... spaceship. Wanna dance?&lt;/textarea&gt;&lt;br&gt;
  &lt;input type="submit" name="submit" value="Deliver"&gt;
&lt;/form&gt;
</code></pre>

<p>This tells the proxy to encrypt the data in the form with the public
key it can find in the in the certificate at the given URL.  The proxy
fetches the certificate, encrypts the data with it and submits it to
the dating site.</p>

<p>The dating site receives the encrypted text! It cannot read the
contents of the message. Only the recipient can.  Now we wait for the
recipient to read our message and reply&#8230;.</p>

<p>&#8230; and wait &#8230;</p>

<p>Oh, wait, as I control both accounts, both the anonymous and the guidow-account,
I&#8217;ve effectively sent a message to myself. We have to switch the
account.</p>

<h2>manage accounts</h2>

<p>First press the logout-button in the top part. You get to the Eccentric Authentication Handler.</p>

<p><img src="http://eccentric-authentication.nl//images/dating-manage.png" title="Manage Accounts" ></p>

<p>As you can see, I have seven accounts at three sites.</p>

<h2>receiving encrypted message</h2>

<p>Click on the dating.wtmnd.nl link. You get back to the home page. Now
press the &#8216;Read messages&#8217; button.</p>

<p>The site will want to know as whom we want to log in. The proxy offers
our two accounts for this site, not the accounts we have at the
other two sites.</p>

<p>Now we click &#8216;guidow&#8217;, to log in with that identity. The site receives
our certificate with the name, looks up the messages and presents what
it has for us. It looks like this:</p>

<p><img src="http://eccentric-authentication.nl//images/dating-ciphertext.png" title="Ciphertext message" ></p>

<p>That gibberish is what the dating site received from the ecca-proxy of
the sender. It looks like a Vogon Poem indeed.</p>

<p>Below it is the link to decode. Press it and it will tell the
ecca-proxy to decode the message with the private key is has for my
guidow-account. Then the proxy shows me what it has decoded.</p>

<p><img src="http://eccentric-authentication.nl//images/dating-cleartext.png" title="Cleartext message" ></p>

<p>Just what we expected.</p>

<h2>conclusion</h2>

<p>At no point has the dating site asked for an email address, real names
or identities. When it would be paid service, it can do so for listing
the account name in the list of aliens. Or it could require payment
for the alien-to-alien communication.</p>

<p>The user stays completely anonymous.</p>

<p>Here we&#8217;ve shown a way to create client certificates to log in to a
web site. All the hard work is done by the Ecca-proxy. The user specifies the actions and the accounts to use.</p>

<p>How could it be more user friendly?</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Run it Yourself]]></title>
    <link href="http://eccentric-authentication.nl//blog/2013/06/07/run-it-yourself.html"/>
    <updated>2013-06-07T00:00:00+02:00</updated>
    <id>http://eccentric-authentication.nl//blog/2013/06/07/run-it-yourself</id>
    <content type="html"><![CDATA[<blockquote><p>Safe, secure and as anonymous as you want.</p></blockquote>

<p>It was already possible to test drive the Eccenric Authentication
Proxy. But it required you to compile software. Now we&#8217;ve flattend that
hurdle (a bit).</p>

<p>As of today we can offer the first download of our client software for
Debian GNU/Linux. It might even work at other linux-distributions.</p>

<p>The software is a local proxy service. It sits on your computer,
receiving requests from your brower. It does all cryptographic
operations that browsers are bad at.</p>

<p>Here is a walkthrough of what you can expect when you run it: <a href="http://eccentric-authentication.nl//blog/2013/06/12/walkthrough-datingsite.html">walkthrough</a>.</p>

<h2>download</h2>

<p>You can download the ecca-proxy software here: <a href="http://eccentric-authentication.nl//download/ecca-proxy.tgz">ecca-proxy.tgz</a></p>

<p>Notice that this is a 64-bit executable. (linux only).</p>

<h2>run it</h2>

<p>To run it, perform these steps:</p>

<pre><code>apt get install libunbound2 libsqlite3 openssl
tar xzvf ecca-proxy.tgz

./ecca-proxy
</code></pre>

<h2>configure your browser</h2>

<p>You need to configure your brower to send all requests to the ecca-proxy. Here is how to do that:</p>

<pre><code>start your browser (iceweasel/firefox)
click on Edit -&gt; Preferences -&gt; Advanced -&gt; Network -&gt; Settings
</code></pre>

<p>You should see this:</p>

<p><img src="http://eccentric-authentication.nl//images/iceweasel-proxy-preferences.png" title="Iceweasel Proxy Preferences" ></p>

<p> Click <em>&#8216;Manual&#8230;&#8217;</em> and fill in <em>127.0.0.1</em> and port <em>8000</em> at the HTTP Proxy setting and press Ok -> Close</p>

<p>Now you&#8217;re ready to play with it. We have two websites that offer Eccentric Authentication:</p>

<h3>1. The worlds&#8217; most secure dating site</h3>

<p>It looks a bit like a dating site. You can get a list of aliens (as we
call humans that use this service). You can create your own
profile. And you can send encrypted messages. The proxy is handling
encryption and decryption. The dating site only sees the unreadable
bits (ciphertext).</p>

<p>To see the messaging in action, get a friend to sign up too and send
encrypted messages to each other. It&#8217;s free!</p>

<pre><code>http://dating.wtmnd.nl:10443/
</code></pre>

<h3>2. The cryptoblog</h3>

<p>It&#8217;s a rudimentary blogging site. You can create a blog or comment on
other peoples&#8217; blogs. The demo showcases how one can exchange keys
with strangers - correctly - without any dificult prodedures. Instead,
just click.</p>

<pre><code>http://cryptoblog.wtmnd.nl:10500/
</code></pre>

<h2>Free software</h2>

<p>This is all Free Software with open source code. The source code of the ecca-proxy is at:
<a href="https://github.com/gwitmond/ecca-proxy">github.com/gwitmond/ecca-proxy</a>.
The dating site is based at <a href="https://github.com/gwitmond/ecca-datingsite">github.com/gwitmond/ecca-datingsite</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[An end run around Zooko's triangle]]></title>
    <link href="http://eccentric-authentication.nl//blog/2013/06/02/an-end-run-around-zookos-triangle.html"/>
    <updated>2013-06-02T00:00:00+02:00</updated>
    <id>http://eccentric-authentication.nl//blog/2013/06/02/an-end-run-around-zookos-triangle</id>
    <content type="html"><![CDATA[<p><em>An end run around Zooko&#8217;s triangle</em></p>

<p><a href="https://en.wikipedia.org/wiki/Zooko%27s_triangle">Zooko&#8217;s Triangle</a>
describes three properties of naming systems. Zooko states that you
can choose any combination of two properties but you lose the third.</p>

<p>Zooko may be entirely right that a single system cannot overcome this
limitation.  However, using Eccentric Authentication in combination
with other cryptographic systems we can do an end run around
it. This way we overcome the limitations of a single system and reach
our ulimate goal of: 1: Secure, 2: Decentralized and 3:
Human-meaningful names on the internet.</p>

<p>This blog (tries) to explain how we can reach that goal.</p>

<p><em>The triangle</em></p>

<p>Zooko&#8217;s triangle states that there are three properties of
naming-systems, of which you can choose only two. The properties are:</p>

<ol>
<li><p>Unique: each name maps to one unique value; (Zooko calls this one
&#8216;Secure&#8217;)</p></li>
<li><p>Decentralized: There is no central authority on the names;</p></li>
<li><p>Human meaningful: you can read the name on the side of a bus and
type it in at home.</p></li>
</ol>


<p>Examples:</p>

<ul>
<li><p>Decentralized and human meaningful: &#8220;Mom&#8221; and &#8220;Dad&#8221;. Each one of us has
their own &#8216;values&#8217; for the names &#8220;Mom&#8221; and &#8220;Dad&#8221;; You lose uniqueness;</p></li>
<li><p>Unique and human meaningful: google.com, apple.com or piratebay.org. These names
would point to the same well known identities for most of the worlds&#8217;
population. But it requires central control to map the names to
IP-addresses for their web servers. This central control can take away the names at will;</p></li>
<li><p>Unique and decentralized: This would be the totally unreadable names
of your documents in Google Docs with their unpronouncable long
character strings. Not something to put on the side of a bus to be
remembered correctly later that evening.</p></li>
</ul>


<p>The triangle specifies the holy grail of naming systems: to create a
world wide mapping between human readable names and values without
relying on a third party that can take away names at will.</p>

<blockquote><p>In human terms: To make sure that the same name always point to the same thing. All the time, everywhere.</p></blockquote>

<p>With Eccentric Authentication we use a two-level approach.</p>

<p>The first level is the uniqueness requirement for the local CAs. Each
name that a CA signs must be used only once at each CA. Whenever
someone signs up for a certificate at a local CA, he publishes that
certificate with the username@@sitename at the Global Registry of
Dis(honesty). It allows the world to verify that the CA doesn&#8217;t create
duplicates.</p>

<p>The second level comes from tying the CAs into DNSSEC. This makes
domain names point to only one CA at every point in time. No one can
change a domain name without the whole world to notice it.</p>

<p>Together with the Registry, we can validate that all the certificates
that bear a certain domain name are signed by the same CA-root. The
DNSSEC and the Registry work together to detect deviations from the
uniqueness requirement.</p>

<blockquote><p>once signed, no way to take back</p></blockquote>

<p>Once you have a certificate from a CA, there is no way anyone can take
it back. As soon as you&#8217;ve got the certificate, it&#8217;s set in stone. If
the CA signs another public key with the same name, it will be
detected at the Registry. This single act of singing will taint the
whole CA as untrustworthy. It means than no one will use that CA
anymore.</p>

<p>Even though the CA becomes dishonest. A certificate that you already
use to communicate with others is still usefull. Every party you
communicate with <em>remembers</em> your certificate. And your computer
remembers the certificates of the people you communicate with. Once
you&#8217;ve exchanged the certificates, there is no need to look them up
again. The Registy is there to help people validate certificates at
<em>introduction</em>.  Once introduced they stay valid. Only once in a while,
you&#8217;d check out the registry to see if any of the CAs has gotten
dishonest.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[We need better computers]]></title>
    <link href="http://eccentric-authentication.nl//blog/2013/06/01/we-need-better-computers.html"/>
    <updated>2013-06-01T00:00:00+02:00</updated>
    <id>http://eccentric-authentication.nl//blog/2013/06/01/we-need-better-computers</id>
    <content type="html"><![CDATA[<p>On the mailing list (libertationtech@lists.stanford.edu) Seth David Schoen wrote:</p>

<blockquote><p>Arvind Narayanan has just pushed a two-part paper in <em>IEEE Security&amp;
Privacy</em> about exactly this point:</p>

<p>http://randomwalker.info/publications/crypto-dream-part1.pdf
http://randomwalker.info/publications/crypto-dream-part2.pdf</p>

<p>Narayanan argues that &#8220;a mis-alignment of incentives frequently occurs&#8221;
to discourage the use of cryptography to protect privacy (particularly
in the strongest end-to-end sense) and that there is minimal demand for
protecting data against intermediaries and service providers.</p>

<p>(I find this paper extremely depressing, but it does describe actual
events.  If I were writing this paper, I would continue to ask how
we can increase demand for cryptographic privacy mechanisms rather
than declaring defeat.)</p></blockquote>

<p>The point he refers to is that the world has progressed cryptography
to secure communications against tampering so we can have safe
electronic banking but there has hardly any progress with respect to
improving privacy.</p>

<p>Here is my reply to that list:</p>

<p>I&#8217;m not so depressed by it. In fact the paper clearly outlines the problems and the way out.</p>

<p>But there is the crypto-trap, it must be perfect or it is useless.  It
doesn&#8217;t have to be that way. Here is a simple way to start. We won&#8217;t
start to solve the privacy problem. We attack other simpler problems
with crypto. From there we can venture into more privacy.</p>

<p>Here&#8217;s how.</p>

<p>With anonymous client certificates, we can solve the password problem
when people sign up for an account. It eases the usability of websites
(no more hassle with passwords or email addresses) and it makes site
building easier as client side crypto is already part of every mature
web server.</p>

<p>By making it easier, time will come that passwords are considered more
expensive than client certificates. The push comes from companies that
need to pinch money.</p>

<p>Once we&#8217;ve replaced password authentication, the same client
certificates can be used to write authenticated messages. At first, it
could be used by banks to communicate with their clients. By using
client certificates as third-level authentication (in addition to
pin-based TAN-generators) it can defeat most phishing attempts. Even
if the customer falls for it and tries to log in at the phishers&#8217;
site, the bank detects it and blocks the account.</p>

<p>Here the demand for crypto comes from the financial pressure on banks to solve the phishing problem.</p>

<p>The end user, although he has a wish to protect him/herself against
advertisment networks, neighbours doesn&#8217;t have a clue on how to get
that protection. He doesn&#8217;t need it. He needs computers that do the
protection for him. The system above to end the password problem and
phising problem is aligned with the financial pressure.</p>

<p>The things we need to get there are pointed out by Arvind Narayanan in his papers too:</p>

<ol>
<li><p>We need completely automated key management, invisible to the user;</p></li>
<li><p>We need computers that are trustworthy.</p></li>
</ol>


<p>The good news, is: there is light at the end of the tunnel.</p>

<p>I&#8217;ve been working on the first part with my eccentric-authentication
&#8216;protocol&#8217;. It shows what we can do with anonymous client
certificates.</p>

<p>And there are plenty of people working on the trustworthy
computers. Just like the drive to virtualisation on the server is a
drive to compartmentalization, we see a rise of operating systems that
bring that to client computers: genode.org, coyotos.org, qubes-os.org.</p>

<p>With the high speed of replacement in the mobile and tablet markets,
it offers opportunities that better not be wasted.</p>

<h2>example</h2>

<p>Here is an example of how two current trends might help to align the
security and privacy alignment.</p>

<blockquote><ul>
<li>To pick up on Narayanan&#8217;s argument, even if this kind of service is
 legal and even if carriers thought it was a reasonable service for
 them to offer, we might expect problems with demand for it.  One
 problem for the level of demand for blinded e-cash payments for
 telecommunications services is that if users lose their mobile
 devices and don&#8217;t have suitable backups, they lose all of their
 prepaid account value (because it existed only in the form of e-cash
 on the devices).</li>
</ul>
</blockquote>

<p>To answer this with another current development: real time synchronization.</p>

<p>Many people already use dropbox to synchronize their phone with their
PC. Combine that with a fingerprint scanner (and pincode) at the phone
to identify yourself to the phone and the loss/theft of the phone
won&#8217;t mean the loss of data nor e-cash.</p>

<p>[1]. http://eccentric-authentication.org/</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Cryptographic Same Origin Policy]]></title>
    <link href="http://eccentric-authentication.nl//blog/2013/03/23/Cryptographic-same-origin-policy.html"/>
    <updated>2013-03-23T00:00:00+01:00</updated>
    <id>http://eccentric-authentication.nl//blog/2013/03/23/Cryptographic-same-origin-policy</id>
    <content type="html"><![CDATA[<blockquote><p>Using DNSSEC/DANE to protect your Javascript application against the
  threat of CSRF and CSS.</p></blockquote>

<h2>Old fashioned Same Origin Policy</h2>

<p>Currently, browsers use the protocol, domain name and port number as a
way to tell origins apart.  It is used to tell browsers that some
disjount group of servers belong to the same trust domain.</p>

<p>In simple language: It tells the browser which servers belong to my
web site and all other servers are &#8216;some one else&#8217;. The browser can
tell which javascript is served by me and which is not. The browser
can decide to treat these two classes with different trust levels. It
can run my javascript and disallow that from other trust domains.</p>

<p>But it is based upon domain names. And these have been proven to be
unreliable.</p>

<p>The Cryptograhic Same Origin Policy has the same goal, to tell trust
domains apart but it deploys DSNSEC with DANE and web server
certificates to do so.</p>

<h2>Cryptograhic Same Origin Policy</h2>

<p>The Cryptograhic Same Origin Policy (CSOP) uses the new DNSSEC and
DANE protocol. It also uses server certificates (HTTPS). However,
these certificates are not signed by the current bunch of global
CAs.</p>

<p>Instead the server certificates are signed by the site&#8217;s own
CA. This is called First Party CA. (FPCA).</p>

<h3>First Party CA</h3>

<p>The site owner runs his own Certificate Authority. He signs all the
server certificates of the servers that are under his direct control,
i.e. where he has the say over the contents of the sites.</p>

<p>He MUST <em>only</em> sign his own server certificates. It MUST NOT sign any other
server certificate.</p>

<p>The Root Certificate of the FPCA is what the server certificates have
in common. This root certicate has become the <em>identity</em> of the servers.</p>

<p>It allows browser to validate the root certificates of each resource
on the page and assign trust domains on the root certificates. Notice:
Browsers MUST only trust First Party CAs. Browsers MUST NOT assume a
trust domain for server certificates signed by global CAs. We solve
that with DANE.</p>

<h3>DANE and DNSSEC</h3>

<p><a href="http://tools.ietf.org/html/draft-ietf-dane-protocol-23">DANE</a> is the
protocol that allows us to specify server certificates in DNS.</p>

<p>The site owner specifies the Root Certificate of his FPCA in a
DANE-TLSA record in DNS. As all servers are signed by that same FPCA,
all TLSA-records contain the same data.</p>

<p>The TLSA-record must specify Usage selector 2. That states the Trust
Anchor for the server. Other usage selector values cannot be used for
CSOP.</p>

<p>The DNS zone with the server records MUST be signed according to the
DNSSEC standard.</p>

<h3>Browser</h3>

<p>When the browser is requested &#8211; by the user &#8211; to retrieve a URL and
render it, it follows this procedure to determine which of the
resources are from the same origin.</p>

<ol>
<li><p>The browser resolves and validates the DNSSEC/DANE TLSA record and
takes it that this is the <em>Origin</em> of the page. If there is any
validation error, the browser displays an error and refuses to render
this page.</p></li>
<li><p>The browser resolves the IP-address, connects and validates that
the server certificate matches the TLSA record. If there is any
validation error, the browser displays an error and refuses to render
the page.</p></li>
<li><p>The browser downloads every resource (image, javascript) that it
can retrieve from this connection and labels these resources to belong
to the Origin. (It comes from the same server).</p></li>
<li><p>For every resource specified in the html that are on different
servers, the browser performs steps 1 to determine the <em>Origin of that
resource</em>. Then it performs step 2 to retrieve it. When there is any
validation error, the browser discards this resource and displays the
appropriate error in the page. Ie, broken image symbol.</p></li>
<li><p>The browser has established the origins of each resource. It COULD
treat all resources labeled with the Same value of Origin at the same
trust level. It MUST treat all resources with different Origin values
at a different trust level.</p></li>
</ol>


<p>It&#8217;s up to the browser how much trust to give these trust domains.</p>

<p>For example, we can distribute a javascript application over serveral
servers, even cdn-hosted servers. For example, a web mail or photo
manipulation app. The browser can run our javascript while it forbids
the hostile code from a spying or hacked advertisement platform.</p>

<p>Notice: To prevent any trust where none should be granted, the
browser checks that the record has TLSA usage selector 2 and that the
Certificate specified is not a sub Certificate of any of the known
global CAs. They don&#8217;t deliver trust, they just establish a domain name)</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Why we still use passwords]]></title>
    <link href="http://eccentric-authentication.nl//blog/2012/11/21/why-we-still-use-passwords.html"/>
    <updated>2012-11-21T11:58:00+01:00</updated>
    <id>http://eccentric-authentication.nl//blog/2012/11/21/why-we-still-use-passwords</id>
    <content type="html"><![CDATA[<p><em>Why we still use passwords</em></p>

<p>Most articles about security and passwords make the trade off between
security and convenience. The authors state that you can have it
secure or convenient but not both.</p>

<p>There is actually another trade off to make: <strong>the trade off between
security and privacy.</strong></p>

<p>The world of cryptography knows of server certificates and client
certificates. Server certificates allow users to verify that they are
connected to the right servers and not to a man-in-the-middle attacker. I&#8217;ll
leave out the problems like Diginotar that undermine this security.</p>

<p>Client certificates identify users to servers. To make it work, a user
needs to have his credentials (ie. passport) validated against his
person and when the Certificate Authority is satisfied, they sign a
certificate. The problem is that the certificate binds the full -real
world- identity of the user. To use the certificate means to fully
identify yourself at every internet login, with every message. It
obliterates all privacy you have.</p>

<p>Obliterating privacy is a too high a price for most people to gain
some extra security. On top of that, you have to pay a lot to get this
privacy-smashing certificate.</p>

<p>I believe that this trade off is the reason we still use passwords. It
offers the right balance between convenience and privacy, but at an
alarming price for security.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Asimovs Laws for security]]></title>
    <link href="http://eccentric-authentication.nl//blog/2012/11/09/asimovs-laws-for-security.html"/>
    <updated>2012-11-09T20:31:00+01:00</updated>
    <id>http://eccentric-authentication.nl//blog/2012/11/09/asimovs-laws-for-security</id>
    <content type="html"><![CDATA[<p>For any computer security to work effectively, you need to be able to
trust your computer to put <em>your</em> interests above those of anyone
else. If your cleaning lady can access any data on it while you are
absent, it fails basic security.</p>

<p>If you browse the web and it falls victim to a drive-by download and
installs spyware, you&#8217;re hosed as well.</p>

<p>If your computer detects that you do something that would jeopardize
the security and privacy of your data on it, your computer should
prevent you from doing it. If you really insist, of course it must
comply.</p>

<p>It&#8217;s like Asimovs&#8217; Law of Robotics but for security systems:</p>

<ol>
<li>Your computer obeys you, and only you;</li>
<li>Your computer protects you from any harm to your data on it;</li>
<li>Your computer destroys all the data on it when it cannot fulfill
the requirements for rule 1 and 2.</li>
</ol>


<p>On 1. Your computer obeys you, and only you.</p>

<p>We take this for granted but it is far from reality. In fact, you may
not even be the real boss. If you have an iPhone, you live in the
&#8216;gilded cage&#8217; that Apple has set up for you. They decide what you can
do with your phone. If you have an Amazon Kindle, they may revoke your
license to any &#8216;books&#8217; you have &#8216;bought&#8217; and remotely (from their
offices) delete those &#8216;books&#8217; from your device. Search for &#8216;Amazon
deletes 1984&#8217;.</p>

<p>On 2. Your computer protects you from any harm to your data on it;</p>

<p>Whatever you do with your computer, which website you visit, or what
games and screen savers you might download, these cannot touch your
data, at all.</p>

<p>Each app gets run from a sandbox that prevents it from accessing any
data you have. The app doesn&#8217;t get access to the file system, let
alone any hardware, such as the modem to dial numbers or the GPS. It
doesn&#8217;t even get access to the website where it was downloaded from.</p>

<p>It cannot list a single phone number on your phone.</p>

<p>If the app needs anything, it can ask your computer for it. If the app
is a screen saver, you tell your computer that it is a screen
saver. Your computer knows it can start it after some idle
period. Your computer gives it a screen buffer to fill and some
cpu-time to do the work and your computer displays the screen buffer
on behalf of the screen saver. This will continue until you press a
button. The screen saver app will be killed and that&#8217;s it.</p>

<p>If the screen saver ever tries to access the phone book, your computer
will abort the screen saver with a message to you stating that it
discovered the screen saver in the cookie jar. (Rule 2).</p>

<p>You can start the screen saver again and again (rule 1) but that app
will never get to your phone book. (Rule 2). Of course you have the
option to give your phone book to the screen saver app (Rule 1) but
the consequences are yours, especially if the screen saver then asks
for internet access to CIA.gov or facebook.com.</p>

<p>A screen saver is very simple. It just needs a display buffer and some
cpu-time. It&#8217;s a good example to show the rules. Now we exand to a
more complicated app. A photo manipulation app.</p>

<p><em>A photo manipulation app</em></p>

<p>Once we&#8217;ve learned the basic security requirements for a screen saver
we can make it more complicated. We download an instagram-like-app.</p>

<p>It allows to manipulate an image, either from the phone&#8217;s memory or
taken fresh from the camera. When we are finished with our
editing we send it along to someone or some site.</p>

<p>If you want to take a picture to edit, you press the
take-picture on the app. It ask your computer to take a picture and
deliver it to the app. Your computer starts the camera-software, tells
you that the instagram-app asked for it and lets you take a picture
that it delevers to the app. At any time you can abort this operation
(Rule 1). And you are sure that the instagram app only gets the
picture just taken. (Rule 2).</p>

<p>If you wish to edit a previously taken picture, press the button for
that in in the app, it will ask your operating system for the
pictures. Your operating system will ask you for some pictures for the
app and delivers only the one(s) you&#8217;ve selected to the app. (Rule
1). The app doesn&#8217;t even know there might be more photos. It only
knows what you give it. This is called a powerbox in Capability design.</p>

<p>To manipulate the picture, the app needs: the picture, screen space to
show you the results, read user input to know what photo manipulations
you want to do. It also needs some storage space to stow the
intermediate and final results. Your computer provides it with
that. (Rule 1).</p>

<p>The storage space is dedicated to the app. Only this app can reach
this storage space and only as long as the app runs. Whenever the app
finishes the storage space is given back to you. And you can select it
next time you run the app. Or you delete it. (Rule 1).</p>

<p>When you are satisfied with the results of your photo-editing it is
time to send the image along. You press the publish-button in the
app. The app asks your computer to publish the image for it. Your
computer asks you where you want to have it published and does so. It
can also ask you to remember these details to automatically publish
any updates you make to the picture at any later date. (Rule 1).
Notice, the instagram app never gets to know to whom you&#8217;ve sent the
picture.</p>

<p>On 3. Your computer destroys all the data on it when it cannot fulfill
   the requirements for rule 1 and 2.</p>

<p>If you ever lose the computer (laptop/tablet/phone) in the train. It
will be found by someone. If it is found by the train employees you
can pick it up at the depot, for a small fee.</p>

<p>If someone else takes it and who hasn&#8217;t the intent to call your
telephone number you&#8217;ve attached to the back. It still obeys rules 1
and 2. It only obeys you and it protects your data. The &#8216;thief&#8217; won&#8217;t
get to control it. Remember the screensaver, your computer requires
your password/pincode and perhaps your image in front of the camera
before it allows access to the content.</p>

<p>As you have synchronised the device with your other devices, these
other ones already have all your latest photo edits. When you discover
the loss of your device, you order it to destroy all data on it. As
soon as the thief lets the device connect to the internet, your device
wipes all the data on it ceases all operation. It really makes the
theft usesless as all the thief has is a dead device. Only you can
revive the thing from the group of other devices it belonged to.</p>

<p>That&#8217;s what I call secure computing.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[A blog site]]></title>
    <link href="http://eccentric-authentication.nl//blog/2012/10/23/a-blog-site.html"/>
    <updated>2012-10-23T21:17:00+02:00</updated>
    <id>http://eccentric-authentication.nl//blog/2012/10/23/a-blog-site</id>
    <content type="html"><![CDATA[<p><em>A blog site</em></p>

<p>This blog specifies how Eccentric Authentication can be used to design
a blog site. The most impressive aspect is that we can create a blog
site that allows anyone to blog using a pseudonym. Even the site
operators cannot learn the real identity of the blogger.</p>

<p>Commenters can write either anonymous or under a pseudonym.</p>

<p>And we show how participants can write private message to each other,
again without any third party being able to read the contents of the
messages.</p>

<p>We will address how to deal with trolls, spammers and other abuse.</p>

<p><em>Sign up for a blog</em></p>

<p>People can sign up for our blog site with an Ecca-account. As with
every Ecca-account, you choose your username. Your browser generates a
private key for the account and requests a certificate. When your
chosen username is still available at the site, you get the
certificate that binds the username to your public key. The signature
from the site binds it to the blog site.</p>

<p>The certificate is used by the site to control access to your blog. It
means, only you can write at your blog.</p>

<p><em>Writing your blog entries</em></p>

<p>Unless ordinary blog sites, this only publishes cryptographically
signed data. When you want to write a blog entry, you start your web
browser, type your text and have your browser sign it with your
private key. Then you send it to our blog site for publication.</p>

<p>The site verifies your signature and if that succeeds, it adds your
message and it&#8217;s signature to the blog. Under the hood it looks like
this:</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
</pre></td><td class='code'><pre><code class='xml'><span class='line'><span class="nt">&lt;blog_entry&gt;&lt;title&gt;</span>A sunny afternoon<span class="nt">&lt;/title&gt;</span>
</span><span class='line'>   <span class="nt">&lt;body&gt;</span>It was a sunny afternoon, time for a beer when .... happend.
</span><span class='line'>         I loved it.<span class="nt">&lt;/body&gt;</span>
</span><span class='line'>   <span class="nt">&lt;signature</span> <span class="na">id=</span><span class="s">&quot;your-username&quot;</span> <span class="na">algorithm=</span><span class="s">&quot;sha256&quot;</span><span class="nt">&gt;</span>[long hexadecimal string
</span><span class='line'>     representing the cryptographic signature of above message, signed
</span><span class='line'>     with your private key]<span class="nt">&lt;/signature&gt;</span>
</span><span class='line'><span class="nt">&lt;/blog_entry&gt;</span>
</span></code></pre></td></tr></table></div></figure>


<p>The readers will &#8211; of course &#8211; see a nicely formatted blog entry
with the signature string hidden, thanks to the wonders that is CSS.</p>

<p>Your readers&#8217; browser on the other hand will check the signature. They
fetch your certificate from the site and actually validate the
signature against your private key in the certificate.</p>

<p><em>Writing comments</em></p>

<p>Readers can leave comments. It&#8217;s a blog, so comments are
expected. There are two kinds of comments:</p>

<ul>
<li>anonymous comments;</li>
<li>pseudonymous comments.</li>
</ul>


<p>The anonymous comments are written by people that love to read your
blog but don&#8217;t want to leave any identity when responding.</p>

<p>The anonymous comments can be held back for publishing until you
approve them. Or you can allow them up front and you delete them when
you disapprove. How these comments are dealt with it totally up to
you. It&#8217;s your blog. If you disagree with an already published
anonymous comment you can delete it any time.</p>

<p>To write a pseudonymous responses requires an Ecca-account. When a
reader wants to write a comment under a pseudonym, he registers for an
Ecca account at our blog site before he can write.  Then his browser
signs the comments with his private key and delivers it at the blog
site. The site validates your message signature against your
certificate and posts the comment at the blog.</p>

<p>As the comments are signed with the commenters&#8217; private key, just like
blog entries are, it allows the other blog readers to validate the
signature. When that signature is valid, the readers have linked your
public key and your ecca-identity to the message.</p>

<p>When writing under a pseudonym you can establish a reputation where
others may recognise your nickname. Even though they don&#8217;t know your
real name.</p>

<p><em>Scoring</em></p>

<p>There is a difference between anonymous and pseudonymous
commenters. Anonymous commenters know their status. Their messages
need approval upfront and face deletion any time.</p>

<p>The blog-site keeps track of a reputation score. For every comment you
write that gets published, you score a reputation point. At first,
your messages are held back for vetting by the blog owner.</p>

<p>When you acquire a certain number, say 5 points, your future messages
will be published without pre-approval of the blog owner, while still
scoring points.</p>

<p>When your messages gets flagged as spam by the blog owner, you lose
half your points. It&#8217;s the electronic version of trust that comes by
foot and leaves by horse. It&#8217;s more difficult to gain trust than it is
to lose it.</p>

<p>With a reputation management scheme, such as this we can keep the
spammers and trolls at bay.</p>

<p><em>Private messaging</em></p>

<p>What we do differently than other sites is that we publish your
message together with the signature and a way to obtain the
certificate. It allows your browser to validate the signature and it
ties your public key to the message.</p>

<p>With the public key, people can encrypt a message that only your
matching private key can decrypt. This is the basis for truly secure
private messaging.</p>

<p>Here&#8217;s how it works: A commenter writes a message in his browser, when
he&#8217;s finished writing, his browser signs it with his private key and
encrypts it with your public key. Then the browser drops the message
at our sites&#8217; drop box for delivery. Next time you log in, you receive
the message. Your browser decrypts it with your private key and you
can read it. As the message is signed, you can validate its signature,
and when that succeeds, you have the correct public key of the person
who wrote the message. That key also validates every other message
written by the person, you now know the persons&#8217; &#8220;history&#8221;.</p>

<p>Using the same method, you can respond to the person.</p>

<p>Now that you&#8217;ve exchanged keys you can bootstrap any other security
protocol between you and the other.</p>

<p><em>Trust considerations</em></p>

<p>The trust requirements for this blog application are quite low. The
impact it has is quite large.</p>

<p>Anyone can read any blog and comment without having to log in.  Anyone
can comment anonymously. Anyone can validate the blog entries against
the sites CA-certificate.</p>

<p>Once you decide to open a blog, you implicitly decide that you trust
the site to run their Certificate Signer correctly. Still, you can
sign up without providing any personal details.</p>

<p>By writing the blog signed entries you spread your public key and
certificate around. Other people can link that key to your
writings. At the same time, you can connect the public keys of people
that comment on your blog to their username and to their writings.</p>

<p>With the blog site providing the link between people&#8217;s writings and
their public keys, you can send encrypted messages to the other
people, knowing it can only be read by that person.</p>

<p>Effectively, the blog site acts as an intermediate to introduce
strangers to each other. All it needs to do is to check that usernames
are unique and publish signed messages.</p>

<p>If you are a blogger with your own blog at the site but you want to
blog under a different pseudonym on someone else&#8217;s blog, just create a
second, or third/fourth ecca-identity. Let your browser do the hard part of
making it easy for you to switch identities.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[The worlds most private dating site]]></title>
    <link href="http://eccentric-authentication.nl//blog/2012/10/22/the-worlds-most-private-dating-site.html"/>
    <updated>2012-10-22T16:23:00+02:00</updated>
    <id>http://eccentric-authentication.nl//blog/2012/10/22/the-worlds-most-private-dating-site</id>
    <content type="html"><![CDATA[<p><em>The worlds most private dating site</em></p>

<p>With Eccentric Authentication we can design the worlds most private
dating site. Ecca gives us benefits that other authentication
mechanisms cannot provide. Namely: <strong>Completely anonymous and fully
secure</strong>.</p>

<p><em>Similarities</em></p>

<p>Like any other dating site, ours allows you to create a profile and
search for other peoples&#8217; profiles. When you&#8217;ve found a
Profile-of-Interest, you can write messages to the person behind the
profile.</p>

<p>The similarities end here. See what we do diffently.</p>

<p><em>Sign up</em></p>

<p>We require our users to sign up with an Ecca account. As with every
ecca-account you choose your nickname. It&#8217;s how you wish to be known on the
site. Names can be anything, say &#8220;Beer Belly&#8221; or &#8220;Biker Babe&#8221;.</p>

<p>When you&#8217;ve chosen your username, your browser creates the account for
you:</p>

<ul>
<li>it creates a private and public key;</li>
<li>it offers the username and public key to the site for signing;</li>
<li>it receives the certificate;</li>
<li>it keeps the private key secure.</li>
</ul>


<p>The certificate allows you to log in and create your profile.</p>

<p>After you&#8217;ve paid the membership fee, our site lists your profile.
Now you can browse profiles and other members can view yours.</p>

<p><em>Private messaging</em></p>

<p>Say you have registerd under the name Beer Belly. You find the profile
of Biker Babe interesting to start a private conversation with
her. Would you use a conventional dating site, you only have their promise
that they won&#8217;t read your message. Or at least that they have the &#8216;decency&#8217; not to
tell you that they do read your messages.</p>

<p>With Ecca, you don&#8217;t have that worry. No one except Biker Babe can
read your message. Here&#8217;s how that works.</p>

<p>You press the &#8216;private-message&#8217; button on your browser. It fetches the
certificate of Biker Babe. In the certificate is her public key.</p>

<p>You type your message, your browser encrypts it with Biker Babes&#8217;
public key. That makes the message only readable to her. Now you sign
it with your private key. Then you hand it over to our dating site for
delivery.</p>

<p>When Biker Babe logs in, your message will be delivered. She fetches
your certificate from the site. That allows her to: 1. verify that you
are a member of the site; 2. send messages back to you.</p>

<p><em>Going further</em></p>

<p>When the two of you like your conversation so much you can take it up a
notch and do a voice chat.</p>

<p>Each of you feeds the certificate of the other into your (privacy
preserving) voice chat application and the systems will set up a
encrypted voice channel, ready to talk <strike>dirty</strike>.</p>

<p>This chat application is not connected to the dating site. It doesn&#8217;t
need to be. All that it needs is the the certificate of the other
party and your private key. Technically, it also needs a common ground
where the two programs can find each other before they validate the
certificates and set up the audio channel but that&#8217;s out of the scope
of this blog post.</p>

<p><em>Abuse handling</em></p>

<p>Suppose one of the BB&#8217;s is too liberal with the private channels and
behaves too inappropriate to the other BB&#8217;s opinion. Let&#8217;s say that
BB1 finds the message of BB2 inappropriate.</p>

<p>BB1 has now several options:</p>

<ol>
<li><p>Block all messages signed by BB2;</p></li>
<li><p>Report the messages to the dating site staff; If they agree that
BB2 went out of line, they close the account. BB1 cannot falsely
accuse BB2. The messages are signed with BB2&#8217;s private key, so
there&#8217;s the proof.</p></li>
</ol>


<p>In both cases BB2 now needs create a new account and pay the
membership fee again to be able to contact BB1 ever again.</p>

<p><em>Closing an account</em></p>

<p>Our dating site doesn&#8217;t have to do much to close the account. It just
blacklists your public key from login in and refuse to accept your
messages to other members.</p>

<p>There is no need for a CRL or other crypto revocation
protocols. We keep it simple but effective. Eventually the certificate
expires and we can clean up our blacklist.</p>

<p><em>Wipe your trail</em></p>

<p>When your subscription to our dating site expires, it
would be in your best interest to delete your private key.</p>

<p>Would you ever use that private key to sign a message and you somehow
you would need to public with your real world identity, it allows your
dating partner to match these messages and publish your love letters,
fully attributed to you. Although embarassing at best, it could be
worse if you where the one so rude that the site closed your account.</p>

<p>The Ecca protocol almost makes that problem a non-issue because it
generates a new private key for every account you create and your
browser handles all the crypto-bits.</p>

<p><em>Trust considerations</em></p>

<p>When you decided to sign up for our dating service and pay the fee,
you made a trust decision. Your decision is most likely based upon
recommendations from people that you trust.</p>

<p>You wouldn&#8217;t make that decision because some global CA has signed a
server certificate that made the address bar green.</p>

<p>It&#8217;s the other way around. By trusting our site enough to sign up, you trust
us to have our cryptography in order so you can communicate
privately with the other members of the site.</p>

<p>If we don&#8217;t have our crypto in order, or we turn out to be
crooks, you&#8217;ve only lost some money. You never gave us your real
world identity. (And you did pay in bitcoin, didn&#8217;t you?)</p>

<p><em>Deployment</em></p>

<p>The bad news: To deploy this we need to improve our web browsers. The
good news, we can start with just three &#8211; not too complicated &#8211;
browser plug ins to get things going. That&#8217;s for another blog.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Announcing Eccentric Authentication]]></title>
    <link href="http://eccentric-authentication.nl//blog/2012/10/22/announcing-eccentric-authentication.html"/>
    <updated>2012-10-22T10:58:00+02:00</updated>
    <id>http://eccentric-authentication.nl//blog/2012/10/22/announcing-eccentric-authentication</id>
    <content type="html"><![CDATA[<p><em>Eccentric Authentication</em></p>

<p>Eccentric Authentication (Ecca) is a protocol to replace password
authentication with client certificates. By doing so we can:</p>

<ul>
<li>make it easier to login and log out of web sites;</li>
<li>make it anonymous; you can sign up to site without providing any
details that would tie the account to your person;</li>
<li>make communication more secure; you can exchange encrypted
messages securely without revealing your identity to anyone.</li>
</ul>


<p>It&#8217;s <em>ideal</em> for a dating site. Once you&#8217;ve exchanged a message,
you can use the cryptographic keys in
the message to set up an encrypted VOIP-telephone call, or an
encrypted video-chat. Until the moment you see and hear each other,
you don&#8217;t know who it will be. But you can be sure that it is the
person from the message and no one else. The cryptography behind Ecca
guarantees that.</p>

<p><em>How it works.</em></p>

<p>We install a Certificate Signer at our web site. We don&#8217;t use the
certificates from the global Certificate Authorities. Our website
accepts only the certificates that its own Certificate Signer signed.
And we don&#8217;t expect other sites to accept our certificates.</p>

<p>When you sign up at our web site, you specify the username you want
to have. If the chosen username is still available, our Certificate
Signer signs a certificate with your username and hands it to you.</p>

<p>You now have a certificate that allows you to log in at our site with
your chosen username. No one else can use this username at our
site. Just like email addresses are unique.</p>

<p>Your web browser takes care of all the cryptography details such as
creating a private key and most important, keeping it secret.</p>

<p><em>Why? Privacy!</em></p>

<p>The Ecca protocol allows users to benefit from the power of
certificates without losing privacy, as is the case with certificates
from Global certificate Authorities.</p>

<p>When you request certificate from a Global Certificate Authority, they
verify your real identity by validating your passport. Once the Global
CA has sufficient proof that you are who you claim to be they sign a
certificate that bears your real name. It allows you to identify you
to banks, shops and other places that you show your certificate.</p>

<p>It means, that <em>every time</em> you use this global certificate, it tags
your digital actions with your real life identity. No denial
possible. Every email you sign with this certificate will tie it to
your person. For many people this is too high a price to pay. For
example, you might not get that dream job if your future boss finds
out that in your blog you support a different political party than him. And
there in no denial that it&#8217;s you who wrote it. As you have only one
global certificate, you would have to use it to log in to the blog
site and sign your job application.</p>

<p>Ecca-certificates work the same as a global Certificate but it doesn&#8217;t
carry your full identity. On the contrary, it only contains your
chosen username. It is no more than a digital pseudonym. The
ecca-protocol does not even need an email address. So you have more
privacy with an ecca-certificate than with a username, password and
email address that most sites ask for.</p>

<p>And why stop with a single pseudonym, if you were to blog on several
subjects, create a certificate (with different usernames) for each
topic. You can have as many certificates for our site as you wish, they are free.</p>

<p><em>Private messages</em></p>

<p>But with Ecca-certificates, we can do more. Our site allows you to
look up other peoples&#8217; certificates by just specifying their
username. The certificate you retrieve contains the users&#8217; public
key.</p>

<p>With that public key you can encrypt a message so that only the
owner of that account can read it. When you sign your messages with
your private key, the recipient can validate that the message is from
another user at our site.</p>

<p>Inside the message is also your
certificate. Now your recipient has all the data he needs to send you
an encrypted reply that only you can read. Not even, us the site
operators can read these private messages.</p>

<p>This allows us to design <a href="http://eccentric-authentication.nl//blog/2012/10/22/the-worlds-most-private-dating-site.html">the worlds most private dating site</a>.</p>

<p>Or we can design <a href="http://eccentric-authentication.nl//blog/2012/10/23/a-blog-site.html">a blog site</a>.</p>

<p><em>Read More</em></p>

<p>I&#8217;ve a made single page flyer with most of the characteristics of Eccentric Auhtentication. Feel free to download it: <a href="http://eccentric-authentication.nl//Eccentric-Authentication-flyer.pdf">Eccentric-Authentication-flyer.pdf</a>.</p>
]]></content>
  </entry>
  
</feed>
