[vwrap] adding transport and capability auth types, removing MD5
Meadhbh Hamrick <ohmeadhbh@gmail.com> Wed, 07 July 2010 18:30 UTC
Return-Path: <ohmeadhbh@gmail.com>
X-Original-To: vwrap@core3.amsl.com
Delivered-To: vwrap@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix)
with ESMTP id 168AD3A68E0 for <vwrap@core3.amsl.com>;
Wed, 7 Jul 2010 11:30:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.857
X-Spam-Level:
X-Spam-Status: No, score=-0.857 tagged_above=-999 required=5 tests=[AWL=-1.743,
BAYES_50=0.001, HTML_FONT_FACE_BAD=0.884, HTML_MESSAGE=0.001]
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 FRz5uZLiVifQ for
<vwrap@core3.amsl.com>; Wed, 7 Jul 2010 11:30:24 -0700 (PDT)
Received: from mail-gw0-f44.google.com (mail-gw0-f44.google.com
[74.125.83.44]) by core3.amsl.com (Postfix) with ESMTP id D95123A67E5 for
<vwrap@ietf.org>; Wed, 7 Jul 2010 11:30:21 -0700 (PDT)
Received: by gwb10 with SMTP id 10so4169791gwb.31 for <vwrap@ietf.org>;
Wed, 07 Jul 2010 11:30:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
h=domainkey-signature:received:mime-version:received:from:date
:message-id:subject:to:content-type;
bh=XBKySKTfKIP0p+2HJz2O+zbmjlPZiLKUMJjYefapHAs=;
b=hpySogM0FvI4T2wxiz/++xyM3OHPtABKXM3MYbTKhGtjERiayULYBlWpTEyxlMIFxM
MWGPVNFPqFoWbmj9tyJJLB/xI3Z6Rh+lzNoC6y0+XRoh+AT010f8t4kfKvJZx610rg3d
YW6wxj1WqtN+DLNmiujUzXb8BxlenLgQplitw=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma;
h=mime-version:from:date:message-id:subject:to:content-type;
b=P6LKdTOeANyxy6Qs5+Iivngh3Rd6PexUPalL04p1j2Wf+cSo3lxN+K84ANEuE0SLRx
NjylXz62l4dCbydGUMxMtIqZZaq+Jb1PFKMVGtrhIa1gDSog1hoV3CyVF4gh/zxAlZG5
FAfOizaWcqFUrWIP9EZFvRNWPHwHHAZAftSRA=
Received: by 10.229.226.81 with SMTP id iv17mr4037174qcb.290.1278527406197;
Wed, 07 Jul 2010 11:30:06 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.229.185.73 with HTTP; Wed, 7 Jul 2010 11:29:46 -0700 (PDT)
From: Meadhbh Hamrick <ohmeadhbh@gmail.com>
Date: Wed, 7 Jul 2010 11:29:46 -0700
Message-ID: <AANLkTinL2XwNzGB8Cz2bfrZ0LhbFdDkpQF1Qr8CRbFhf@mail.gmail.com>
To: "Hurliman, John" <john.hurliman@intel.com>, vwrap@ietf.org
Content-Type: multipart/alternative; boundary=0016e65bba62e1e6f3048ad05b0e
Subject: [vwrap] adding transport and capability auth types, removing MD5
X-BeenThere: vwrap@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Virtual World Region Agent Protocol - IETF working group
<vwrap.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/vwrap>,
<mailto:vwrap-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/vwrap>
List-Post: <mailto:vwrap@ietf.org>
List-Help: <mailto:vwrap-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/vwrap>,
<mailto:vwrap-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 07 Jul 2010 18:30:27 -0000
so i made some quick mods to the auth draft to remove MD5 and add the
transport and capability authenticator types. sections 2.3, 2.10 and 4 have
changed, here's the new sections. changes are highlighted. does this look
about right to everyone else?
the new section 2.3
2.3. Inputs
2.3.1. Account Identifier
The account_name key in the credential provided to the authentication
service is used to identify the account. This is the opaque sequence
of octets used by the authentication service to identify the user.
2.3.2. Hashed Password Authenticator
*When a hashed password is used as an authenticator, the string '$1$'
is prepended to the UTF-8 encoding of the password and processed with
the SHA256 cryptographic hash function [sha256]. This revision of
the Virtual World Region Agent Protocol specification requires the
use of SHA256 with the hashed password authenticator. It also
requires the presence of the algorithm key, and that the value of
this key be the string 'sha256'. Note that future versions of this
specification may ALLOW or REQUIRE the use of other cryptographic
hash functions.*
2.3.3. Challenge-Response Authenticator
The Challenge-Response scheme allows the authentication service to
select a session specific "Salt" to be used in conjunction with the
user's password to generate an authenticator. In this scheme the
authenticator is the hash of the salt prepended to the hash of '$1$'
prepended to the password. This revision of the Virtual World Region
Agent Protocol specification requires the use of SHA256 with the
challenge-response authenticator. [sha256] It also requires the
presence of the algorithm key, and that the value of this key be the
string 'sha256'. Note that future versions of this specification may
ALLOW or REQUIRE the use of other cryptographic hash functions.
To retrieve a session specific salt for use with the Challenge-
Response authentication scheme from the authentication service, the
client application sends a login request with a Challenge-Response
authenticator without the secret item. If the agent domain supports
this authenticator, it MUST respond with a 'key' condition including
a salt and MAY include a duration in the response. If the duration
is present, it denotes the number of seconds for which the salt will
be valid.
2.3.4. PKCS#5 PBKDF2 Authenticator
The PKCS#5 PBKDF2 authenticator is an implementation of RSA Labs'
Public Key Cryptographic Standards #5 v2.1 Password Based Key
Derivation Function #2. [pkcs5] In this scheme, the string '$1$' is
prepended to the password is used in conjunction with a salt,
iteration count and hash function to generate an authenticator. This
revision of the Virtual World Region Agent Protocol specification
requires the use of SHA256 with the PKCS#5 PBKDS2 authenticator. It
also requires the presence of the algorithm key, and that the value
of this key be the string 'sha256'. Note that future versions of
this specification may ALLOW or REQUIRE the use of other
cryptographic hash functions.
As with the Challenge-Response authenticator, the authentication
service MUST include the salt and iteration count in its response to
an authentication request that is made without a secret item.
Conforming authentication services may include a duration in their
response indicating the number of seconds for which the salt and
iteration count will be valid.
*2.3.5. Capability Authenticator
The VWRAP Client Application Launch Message document
[I-D.ietf-vwrap-launch] describes a technique for using "web based"
authentication services such as OAuth [RFC5849] or OpenID [OPENID].
One technique for ensuring the security of the client application
launch message is for it to reference an agent_login resource on a
web capability. Because the address of the capability is
cryptographically unguessable, it is assumed that only the
authenticated client will know the resource's address.
In this use case, the client does not need to include proof of a
shared secret in the agent_login request itself. Knowledge of the
agent_login's address carries equivalent proof of the client's
authorization.
The "capability authenticator" is used in this use case.
Authentication services are to interpret it's presence in an
agent_login request as signaling the use of a previously established
web based authentication service. Authentication services that do
not offer web based authentication MUST return an authentication
failure response.
2.3.6. Transport Based Authenticator
Authentication messages may flow over transports that provide
authentication or authorization. HTTP Basic Authentication, Digest
Authentication [RFC2617] and TLS Client Certificates [RFC5246]are
popular techniques for authenticating one end of a network connection
at the transport level.Though the objective of VWRAP authetication is
to verify the origin integrity of an "application layer" entity, such
credentials sometimes span layers. In some environments, application
layer credentials are assumed to be available to the transport.
Guidelines for transport-based authentication are provided later in
this document. Conformant implementations wishing to use transport
layer authentication MUST signal their intent by including a
"transport" type authenticator in the agent_login message.
Note there are no map elements save the "type" indicator in the
transport based authenticator. This is because actual authentication
data is provided by the transport.*
the new section 2.10
2.10. Interface
The following text describes the interface description of the
agent_login messages.[I-D.ietf-vwrap-type-system]
; authenticators
; hashed password authenticator
&authenticator = {
type: 'hash', ; identifies this as "hashed" type
algorithm: '*sha256*', ;
secret: binary ; hash of salt prepended to the password;
; s = h( '$1$' | pw )
}
; challenge response style authenticator
&authenticator = {
type: 'challenge', ; identifies this as a "challenge response"
algorithm: 'sha256', ;
salt: binary, ; optional - default is 0x24, 0x31, 0x24
secret: binary ; hash of the salt prepended to password
; s = h( salt | h( '$1$' | pw ) )
}
; PKCS#5 PBKDF2 style authenticator
&authenticator = {
type: 'pkcs5pbkdf2', ; identifies authenticator as PKCS#5 PBKDF2
algorithm: string, ; identifier for hash ('sha256')
salt: binary, ; optional - default is 0x24, 0x31, 0x24
count: int, ; optional - 1 used if not present
secret: binary ; hash of the salt prepended to password
; s = pbkdf2( h('$1$' |pw),salt,count,128)
}
* ; Capability
&authenticator = {
type: 'capability' ; identifies "capability" authentication
}
; Transport
&authenticator = {
type: 'transport', ; identifies "transport based" auth
}*
; request
&credential = {
account_name: string,
authenticator: &authenticator ; 'hash' 'challenge' or 'pkcs5pbkdf2'
}
; response
; successful response
&response = {
condition: 'success',
agent_seed_capability: uri ; URL of the agent seed cap
}
; authentication failure
&response = {
condition: 'key',
salt: binary, ; optional - salt for challenge and PKCS5
count: int, ; optional - iteration count for PKCS5
duration: int ; optional - the duration of the validity
; period of salt and count values in
; seconds
}
; maintenance "non success"
&response = {
condition: 'maintenance',
maintenance_capability: uri, ; URL of the maintenance cap
completion: int ; estimate for maintenance duration
; (in seconds)
}
; administrative failure
&response = {
condition: 'intervention',
message: uri ; a URI with human-readable text
; explaining what the user must do to
; continue
}
; non-specific error
&response = {
condition: 'nonspecific',
message: string ; a string describing the failure
}
; resource definition
%% agent_login
-> &credential
<- &response
the new section 4
4. Security Considerations
RFC 3552 [RFC3552] describes several aspects to use when evaluating
the security of a specification or implementation. We believe most
common security concerns users of this specification will encounter
are more appropriately considered as transport, network or link layer
issues. However, the following "application security" issues should
be considered.
*A previous version of this document specified the use of the MD5
cryptographic hash function [RFC1321]. Its use has been deprecated
and MUST NOT be used with VWRAP agent_login requests.*
The use of the hashed password authenticator could result in a replay
attack if not used in conjunction with an appropriate confidentiality
preserving transport. Implementations using the hashed password
authenticator SHOULD utilize appropriate encryption schemes such as
TLS [RFC5246] or S/MIME [RFC3851].
-cheers
-meadhbh
--
meadhbh hamrick * it's pronounced "maeve"
@OhMeadhbh * http://meadhbh.org/ * OhMeadhbh@gmail.com
- [vwrap] adding transport and capability auth type… Meadhbh Hamrick
- Re: [vwrap] adding transport and capability auth … Robert G. Jakabosky
- Re: [vwrap] adding transport and capability auth … Meadhbh Hamrick