Re: [TLS] User Defined Key Pair

"OMAR HASSAN (RIT Student)" <omh1835@rit.edu> Tue, 25 June 2013 16:55 UTC

Return-Path: <omh1835@g.rit.edu>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id E398021F972E for <tls@ietfa.amsl.com>; Tue, 25 Jun 2013 09:55:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.077
X-Spam-Level:
X-Spam-Status: No, score=-0.077 tagged_above=-999 required=5 tests=[FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, MIME_8BIT_HEADER=0.3, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id rcWsLsZ7zoGl for <tls@ietfa.amsl.com>; Tue, 25 Jun 2013 09:55:52 -0700 (PDT)
Received: from sc3app27.rit.edu (sc3app27.rit.edu [129.21.35.56]) by ietfa.amsl.com (Postfix) with ESMTP id 23C5C21F91BC for <tls@ietf.org>; Tue, 25 Jun 2013 09:55:51 -0700 (PDT)
Received: from mail-ie0-f175.google.com (mail-ie0-f175.google.com [209.85.223.175]) by smtp-server.rit.edu (PMDF V6.3-x14 #31420) with ESMTPS id <0MOY00GICKD26Y@smtp-server.rit.edu> for tls@ietf.org; Tue, 25 Jun 2013 12:55:51 -0400 (EDT)
Received: by mail-ie0-f175.google.com with SMTP id a13so27236152iee.6 for <tls@ietf.org>; Tue, 25 Jun 2013 09:55:50 -0700 (PDT)
Received: by 10.43.115.3 with HTTP; Tue, 25 Jun 2013 09:55:49 -0700 (PDT)
X-Received: by 10.42.95.208 with SMTP id g16mr14393471icn.45.1372179350199; Tue, 25 Jun 2013 09:55:50 -0700 (PDT)
X-Received: by 10.42.95.208 with SMTP id g16mr14393460icn.45.1372179350068; Tue, 25 Jun 2013 09:55:50 -0700 (PDT)
Date: Tue, 25 Jun 2013 19:55:49 +0300
From: "OMAR HASSAN (RIT Student)" <omh1835@rit.edu>
In-reply-to: <2A0EFB9C05D0164E98F19BB0AF3708C711B251F1E5@USMBX1.msg.corp.akamai.com>
Sender: omh1835@rit.edu
To: "Salz, Rich" <rsalz@akamai.com>, Juho Vähä-Herttua <juhovh@iki.fi>, "Stephan T." <rheoli08@gmail.com>, Paras Shah <Paras.Shah@riverbed.com>
Message-id: <CALxQUYEeLRxGz=_CO8pMYc4u2rm8u+u6fTiYH_3UMev-pNFC4g@mail.gmail.com>
MIME-version: 1.0
Content-type: multipart/alternative; boundary="20cf303636fbbabf8a04dffd660d"
X-RIT-Received-From: 209.85.223.175
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :x-gm-message-state; bh=SDhWEPR6xYKbyDmEUfg5sBQe3LRsoMMmoaq0qv1L834=; b=XSeC6GhyWN07sL+jLTNkIyOei5yg+9AjDkyIqqU0i4mnnxNYnWCE+JSH0XfahJSLPr tRe7/vz8xOG+slyZTUUivucM6+T1wFXhZ9PKaDYGACYnaBrHQUyYwxzl0VsWq6T6pWxK SPgGgkQVHoeT36UAB5EdOYR7a+hi9/3xQ1tY76eVHdlp7koprdZ8fzVlk0+5GrbfLKfz t8gWPyupkraCvUeDenw9SKES0GwUd8kXAmZzPbm3tXzVuqrQsozpbGFz9AJOCC82n8nd SGjOaBXppWK7i23c/weRp5o7pwGXdSXUVnoVTXWWRAj6epBmjs/JVucmSIQHnG5DLbLE /SCQ==
X-Google-Sender-Auth: 8uxKhvt5yBxiWZ8vXcpZ4OY3BGY
X-Gm-Message-State: ALoCoQncpEiMyfJYoHjAg29dnlfMV2CWtls3kBBtzSeLYibmkjWRukXrB/iDLKiK8etKkDamkuVzK+amqqbrNsITRseHBTaiphQj3+R8Y+G0zduOIq5fXUgizB4j9rnbNnBhbKU5K7GQ
References: <CALxQUYGdagDHr+A4EKN5qPD1jZG+dH8PHwb0-fKJVUN_vC1MSg@mail.gmail.com> <2A0EFB9C05D0164E98F19BB0AF3708C711B251EE97@USMBX1.msg.corp.akamai.com> <CALxQUYGpcKPOAoZ8J56AoUGx8B3JhdmMche8MdQuqD_S=Y22ZQ@mail.gmail.com> <2A0EFB9C05D0164E98F19BB0AF3708C711B251EF0E@USMBX1.msg.corp.akamai.com> <CALxQUYF1=oFBk=WZFoey+28j7MV7YvSkAD-YzJSeQ0Dp7uXmEA@mail.gmail.com> <2A0EFB9C05D0164E98F19BB0AF3708C711B251EFFF@USMBX1.msg.corp.akamai.com> <CALxQUYH-4HR7sO2jfxQnbro6+xM5hD_hdW-K_a-Esd9yiZ+oug@mail.gmail.com> <2A0EFB9C05D0164E98F19BB0AF3708C711B251F1E5@USMBX1.msg.corp.akamai.com>
Cc: "tls@ietf.org" <tls@ietf.org>
Subject: Re: [TLS] User Defined Key Pair
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <tls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tls>, <mailto:tls-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/tls>
List-Post: <mailto:tls@ietf.org>
List-Help: <mailto:tls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 25 Jun 2013 16:56:01 -0000

Hi All

>Stephan:
>How you made sure that the user (client) is connected with the intended
server?
>Paras Shah:
>That is exactly the question I had. How is Server Authentication done with
this approach?
>Rich:
>I don’t see anything in your system that prevents this, either.  It seems
that replacing your system with self-signed client >certificates would be
equivalent.

>Robert:
>As the proposal has no server authentication, it is surely broken in that
respect i.e. the client could be lured to any bogus >website masquerading
as a legitimate one. How would the client know?

I would explain How is Server Authentication done with a practical example.
Let's name facebook as our website that we need to protect using that new
protocol.

When I go to facebook, I would receive a browser message telling me:
"Please use the UDKP protected access (Tools->UDKP Protected Access)!"
the user will go to the plugin interface, and provide the username,
password, password confirmation, the plugin will create a file with random
data stream in the user's usb, and then the user will click on the register
button.

At that point the plugin will create the key pair based on the random file,
username, and password. The public key will go to the server with the
username and a signed message, and the user will be redirected to the
facebook registration page to complete his registration.

Now the user profile is created on facebook and associated with the user
public key.

When the user tries to sign in later into facebook, and if he was deceived
to sign in into a fake website, the user will go to the browser plugin
interface, and provide the username, password, and select the file from his
usb. At that point the user will be expecting to see his facebook timeline
if he is really signing into the real facebook. Note that the user didn't
provide the credential information to the website but to the browser plugin
(Tools->UDKP Protected Access).

In our case, the fake website will only receive the username, the public
key, and the token (ServerHello.random ) signed with user private key, If
the attacker delivered this message to the facebook server, the server will
try to read and validate the token using the user public key. If it
succeeds, it will respond with the session key premaster encrypted by the
user public key. Because the user private key did not leave the browser,
the attacker will not be able to read the session key and hence will not be
able to monitor the traffic.

So if the user was successfully able to see his timeline, he would be sure
that he is communicating with the real facebook.

>Robert:
>Token = enc(ServerHello.random, PrivKey) : The concept of encrypting using
a private key seems pointless. Don't you mean >signing?

Yes Robert, I mean signing not encrypting. Actually someone told me before
about that mistake in the previous version, but unfortunately I forgot to
correct it in the new version. Hopefully in the next version it will be
corrected. Thank You.

>Juho Vähä-Herttua:
>The whole security of the system seems to be dependant on the security of
the "browser plugin" and its key generation and encryption algorithms

I preferred to make the generation of the key pair as a black box, so we
can focus our discussion on the idea itself, so the question is if we have
a key generation function that can generate key pair securely based on the
username, password, and the file selected, would the idea be a good one.

>What if someone detects this enrollment and sends a new public key for the
user before the user has time to fill all the fields? Sounds like a race
condition to me.

The key pair generation is done inside the browser plugin interface, not in
the website page, so there is no race condition, the communication with the
website will start after the creation of the key pair.

>I don't see how this is different from generating a self signed client
cert and verifying it with for example HMAC with username+password+question
derived secret. If you already need a custom >browser
>plugin to handle the login, you can put all your custom logic there and
use standard TLS for the rest.

You can look at the generated key pair as a client certificate, but I
preferred to make it as a key pair, so this key pair could be generated
based on different approaches: security question, file, smart card,
hardware token.

Additionally it's not only about custom sign in, it's also about
eliminating the dependence on the CA, so the session key must be encrypted
with the user public key not encrypted with a key that claims to be the
server public key.

>Rich:
>It’s great that you are trying to improve things; don’t get discouraged,
but this ain’t there yet.  And as a first step to replacing all of
SSL/TLS?  Nope.

I am not discouraged at all, but I am still insisting that the security of
my traffic to facebook must be the responsibility of me and facebook only,
and not anyone else. And I am doing my best to achieve that. The discussion
is very useful to me, may be after this discussion we can come out with a
new final solution to this issue.


On Tue, Jun 25, 2013 at 2:29 PM, Salz, Rich <rsalz@akamai.com> wrote:

> **Ø  **Self signed certificate is very dangerous because the user will
> not have a way to verify the identity of the certificate owner and he could
> be a victim to a man in the middle attack.****
>
> ** **
>
> I don’t see anything in your system that prevents this, either.  It seems
> that replacing your system with self-signed client certificates would be
> equivalent.****
>
> ** **
>
> It’s great that you are trying to improve things; don’t get discouraged,
> but this ain’t there yet.  And as a first step to replacing all of
> SSL/TLS?  Nope.****
>
> ** **
>
>                 /r$****
>
> ** **
>
> --  ****
>
> Principal Security Engineer****
>
> Akamai Technology****
>
> Cambridge, MA****
>
> ** **
>