[OAUTH-WG] Thinking about our secrets for signatures

David Recordon <recordond@gmail.com> Thu, 11 March 2010 07:58 UTC

Return-Path: <recordond@gmail.com>
X-Original-To: oauth@core3.amsl.com
Delivered-To: oauth@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id EB8FB3A67E1 for <oauth@core3.amsl.com>; Wed, 10 Mar 2010 23:58:05 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id qpQ4lH-FIzhF for <oauth@core3.amsl.com>; Wed, 10 Mar 2010 23:58:05 -0800 (PST)
Received: from mail-iw0-f189.google.com (mail-iw0-f189.google.com [209.85.223.189]) by core3.amsl.com (Postfix) with ESMTP id 0555F3A6850 for <oauth@ietf.org>; Wed, 10 Mar 2010 23:58:04 -0800 (PST)
Received: by iwn27 with SMTP id 27so148123iwn.5 for <oauth@ietf.org>; Wed, 10 Mar 2010 23:58:07 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type; bh=dLdRfiKClh7scg6cPB1uHjaKhIc8XaWMz3Zb/IMVxKg=; b=qwagHJQZ4Ug1IBWwPGIuumueF/9ELQKW6X93kyq9oGhythy5KYqD7RCBCSe5tcQE19 MdWAwjaUbQACnABJAvRcTQW4bhNSbp5JlnGzcasn/fXxRUEA+XWAVIbStp9/xbQvSfJe /N9zTcXsKMSHpXNvjXYHzcUm1WR/CvvJa/sj4=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=t7a1KcebWCTbJxQ/fm7wUENzghsGd7ydaO+0VnJM4M/bCcA+/X/kl2maoqSogXFWgL Xq3NLjFXReQY0v+6sRCkNEIH6MUNPkbRsZTskw0e//AagfhdX+dFhFqB9J4/kW86sCWT gPncLRZDOmyzC+slAqt/pKO2HqPzSi11E51nk=
MIME-Version: 1.0
Received: by 10.231.156.65 with SMTP id v1mr43197ibw.67.1268294287827; Wed, 10 Mar 2010 23:58:07 -0800 (PST)
Date: Wed, 10 Mar 2010 23:58:07 -0800
Message-ID: <fd6741651003102358k151206c7u49fd40a875489868@mail.gmail.com>
From: David Recordon <recordond@gmail.com>
To: OAuth WG <oauth@ietf.org>
Content-Type: text/plain; charset="ISO-8859-1"
Subject: [OAUTH-WG] Thinking about our secrets for signatures
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/oauth>, <mailto:oauth-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/oauth>
List-Post: <mailto:oauth@ietf.org>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/oauth>, <mailto:oauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 11 Mar 2010 07:58:06 -0000

Has anyone else put some thought into what secrets are used within the
signature algorithm for OAuth 2.0?

OAuth 1.0 combines the client secret and the token secret with an
ampersand in the middle.  WRAP doesn't support signatures and relies
on the fact that access tokens should remain secret via SSL or are
extremely short lived and thus lower risk.

Here are the options as far as I'm aware (without making changes to
WRAP's assumptions):

1) Sign using the client secret.  Doesn't work because the access
token would be sent over the wire in plaintext and some servers will
make them long lived in 2.0.

2) Issue an access token secret if an optional parameter is specified
by the client during the authorization profile request(s).  Doesn't
work for the same reason as #1 assuming that the same access token can
be used via SSL.

3) Instead of adding an optional parameter to each authorization
profile, have the client immediately refresh the access token and
support an optional parameter to request an access token secret.  This
lessons the impact of supporting signatures on most implementors when
reading the spec and given that most signature use cases have longer
lived tokens, the overhead of the extra HTTP request should be
infrequent compared to the number of protected resource requests
you'll make with it.  Doesn't work for the same reason as #1 assuming
that the same access token can be used via SSL.

While I'm not a crypto expert, it seems impossible to treat the same
access token as potentially public when using signatures but secret
when using SSL.  I believe that authorization servers will need to
keep track of the access tokens that the client has requested a secret
for and from that point on only allow the use of that particular
access token 1) via signatures or 2) via SSL when the access token
secret is passed in as well.

Thoughts?

Thanks,
--David