From wyllys@borg.SFBay.Sun.COM Fri Oct 10 12:12:03 2008
Received: from sunmail5.uk.sun.com (sunmail5.UK.Sun.COM [129.156.85.165])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9AJC23P029362
	for <psarc-ext@sac.sfbay.sun.com>; Fri, 10 Oct 2008 12:12:03 -0700 (PDT)
Received: from nwk-avmta-1.SFBay.Sun.COM (nwk-avmta-1.SFBay.Sun.COM [129.146.11.74])
	by sunmail5.uk.sun.com (8.13.8+Sun/8.13.8/ENSMAIL,v2.2) with ESMTP id m9AJC0rd020671
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@Sun.Com>; Fri, 10 Oct 2008 20:12:02 +0100 (BST)
Received: from pmxchannel-daemon.nwk-avmta-1.sfbay.Sun.COM by
 nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K8J00E07EO0L100@nwk-avmta-1.sfbay.Sun.COM> for PSARC-ext@Sun.Com
 (ORCPT PSARC-ext@Sun.Com); Fri, 10 Oct 2008 12:12:00 -0700 (PDT)
Received: from borg.SFBay.Sun.COM ([10.6.50.138]) by nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K8J006DFENZL620@nwk-avmta-1.sfbay.Sun.COM> for
 PSARC-ext@Sun.Com (ORCPT PSARC-ext@Sun.Com); Fri,
 10 Oct 2008 12:11:59 -0700 (PDT)
Received: from borg.SFBay.Sun.COM (localhost [127.0.0.1])
	by borg.SFBay.Sun.COM (8.14.3+Sun/8.14.3) with ESMTP id m9AJ4UYi028076; Fri,
 10 Oct 2008 12:04:30 -0700 (PDT)
Received: (from wyllys@localhost)
	by borg.SFBay.Sun.COM (8.14.3+Sun/8.14.3/Submit) id m9AJ4UJq028072; Fri,
 10 Oct 2008 12:04:30 -0700 (PDT)
Date: Fri, 10 Oct 2008 12:04:30 -0700 (PDT)
From: Wyllys Ingersoll <wyllys@borg.SFBay.Sun.COM>
Subject: Kerberos PKINIT [PSARC/2008/631 FastTrack timeout 10/17/2008]
To: PSARC-ext@sun.com
Cc: kerberos-discuss@opensolaris.org
Message-id: <200810101904.m9AJ4UJq028072@borg.SFBay.Sun.COM>
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
Status: RO
Content-Length: 22241


Template Version: @(#)sac_nextcase %I% %G% SMI
This information is Copyright 2008 Sun Microsystems
1. Introduction
    1.1. Project/Component Working Name:
	 Kerberos PKINIT
    1.2. Name of Document Author/Supplier:
	 Author:  Glenn Barry
    1.3  Date of This Document:
	10 October, 2008
4. Technical Description
1. Introduction
    1.1. Project/Component Working Name:
         MIT Kerberos 1.6.3 resync (PKINIT)
    1.2. Name of Document Author/Supplier:
         Author:  Glenn Barry
    1.3  Date of This Document:
         Oct, 2008
4. Technical Description

ABSTRACT
--------

This case will define the new interfaces in the MIT Kerberos V5 1.6.3
that will become part of OpenSolaris are part of the resync with MIT
Kerberos code base.

The main new features include a pre-authentication plugin framework
and a plugin module for that framework for Public Key Cryptography for
Initial Authentication in Kerberos (PKINIT).  PKINIT allows the user to
use an existing Public Key Infrastructure (PKI) to acquire the
Kerberos Ticket Granting Ticket (TGT).



BACKGROUND
----------

OpenSolaris Kerberos is based on MIT Kerberos V5 and is currently fully
synced fully with 1.4 and parts of 1.6 (see
http://opensolaris.org/os/project/kerberos/).

The current release of MIT Kerberos is 1.6.3 and the new features
include a pre-authentication plugin framework and an OpenSSL/PKCS11
PKINIT module for that framework.

The traditional password-based Kerberos V pre-authentication method
("encrypted timestamp," where the encryption key is derived from the
client user's password) is subject to offline dictionary attack.
Eavesdroppers can mount an offline dictionary attack on AS-REQ/AS-REP
messages used to obtain initial tickets (e.g., TGTs).

PKINIT prevents this offline dictionary attack by introducing an
alternative pre-authentication method based on public key
certificates instead of passwords.

PKINIT is an extension to Kerberos defined in RFC 4556.  It states:

   In the AS exchange, the KDC reply contains the ticket session key,
   among other items, that is encrypted using a key (the AS reply key)
   shared between the client and the KDC.  The AS reply key is typically
   derived from the client's password for human users.  Therefore, for
   human users, the attack resistance strength of the Kerberos protocol
   is no stronger than the strength of their passwords.

   The use of asymmetric cryptography in the form of X.509 certificates
   [RFC 3280] is popular for facilitating data origin authentication and
   perfect secrecy.  An established Public Key Infrastructure (PKI)
   provides key management and key distribution mechanisms that can be
   used to establish authentication and secure communication.  Adding
   public-key cryptography to Kerberos provides a nice congruence to
   public-key protocols, obviates the human users' burden to manage
   strong passwords, and allows Kerberized applications to take
   advantage of existing key services and identity management.

   The advantage afforded by the Kerberos TGT is that the client exposes
   his long-term secrets only once.  The TGT and its associated session
   key can then be used for any subsequent service ticket requests.  One
   result of this is that all further authentication is independent of
   the method by which the initial authentication was performed.
   Consequently, initial authentication provides a convenient place to
   integrate public-key cryptography into Kerberos authentication.  In
   addition, the use of symmetric cryptography after the initial
   exchange is preferred for performance.


* See Also
  
  Open Solaris Kerberos Project
  http://opensolaris.org/os/project/kerberos/
  
  MIT Kerberos V5
  http://web.mit.edu/Kerberos/

  PKINIT IETF RFC
  http://www.rfc-archive.org/getrfc.php?rfc=4556

  UMich Citi Smartcard Setup
  http://www.citi.umich.edu/projects/pkinit/smartcard_setup.html



PROPOSAL
--------

In MIT Kerberos 1.6 a new pre-authentication plug-in framework is
introduced and will be added to OpenSolaris.  The current
pre-authentication types such as PA-ENC-TIMESTAMP are still supported
in non-plug-in form.  PKINIT will be the first pre-authentication
plug-in supported in OpenSolaris.

The PKINIT plug-in supports X509 certificates using the OpenSSL API
and smartcards/softtokens using the PKCS11 API.
        
* New pkinit pre-auth plug-in shared object located at:

  usr/lib/krb5/plugins/preauth/pkinit.so

  It is used by the KDC and the client.

* We propose the following new interfaces (these are taken straight
  from the MIT Kerberos 1.6.3 doc):


  * New kinit(1) options:

     -X attribute[=value]
          specify a pre-authentication attribute and value to  be
          passed  to  pre-authentication plugins.  The acceptable
          attribute and value values vary from pre-authentication
          plugin  to plugin.  This option may be specified multi-
          ple times to specify multiple attributes.  If no  value
          is specified, it is assumed to be "yes".

          The following attributes are recognized by the OpenSSL pkinit
          pre-authentication mechanism:
             X509_user_identity=URI
                Specify where to find user's X509 identity information.

		Valid URI types are FILE, DIR, PKCS11, PKCS12, and ENV.
		See PKINIT URI Types section for more details.

             X509_anchors=URI
                Specify where to find trusted X509 anchor information.

		Valid URI types are FILE and DIR.
		See PKINIT URI Types section for more details.

             flag_RSA_PROTOCOL[=yes]
                Specify use of RSA, rather than the default
                Diffie-Hellman protocol.


  * New krb5.conf(4) options:

     
The following are pkinit-specific options.  Note that these values may
be specified in `[libdefaults]' as global defaults, or within a
realm-specific subsection of `[libdefaults]', or may be specified as
realm-specific values in the `[realms]' section.  Also note that a
realm-specific value over-rides, does not add to, a generic
`[libdefaults]' specification.  The search order is:

  1. realm-specific subsection of `[libdefaults]'
          [libdefaults]
              EXAMPLE.COM = {
                  pkinit_anchors = FILE:/usr/local/example.com.crt
              }

  2. realm-specific value in the `[realms]' section,
          [realms]
              OTHERREALM.ORG = {
                  pkinit_anchors = FILE:/usr/local/otherrealm.org.crt
              }

  3. generic value in the `[libdefaults]' section.
          [libdefaults]
              pkinit_anchors = DIR:/usr/local/generic_trusted_cas/

The syntax for specifying Public Key identity, trust, and revocation
information for pkinit is as follows:


pkinit_identities = URI
     Specifies the location(s) to be used to find the user's X.509
     identity information.  This option may be specified multiple times.
     Each value is attempted in order until identity information is
     found and authentication is attempted.  Note that these values are
     not used if the user specifies X509_user_identity on the command
     line.

     Valid URI types are FILE, DIR, PKCS11, PKCS12, and ENV.
     See PKINIT URI section for more details.

pkinit_anchors = URI
     Specifies the location of trusted anchor (root) certificates which
     the client trusts to sign KDC certificates.  This option may be
     specified multiple times.  These values from the config file are
     not used if the user specifies X509_anchors on the command line.

     Valid URI types are FILE and DIR.
     See PKINIT URI section for more details.

pkinit_pool = URI
     Specifies the location of intermediate certificates which may be
     used by the client to complete the trust chain between a KDC
     certificate and a trusted anchor.  This option may be specified
     multiple times.

     Valid URI types are FILE and DIR.
     See PKINIT URI section for more details.


pkinit_revoke = URI
     Specifies the location of Certificate Revocation List (CRL)
     information to be used by the client when verifying the validity
     of the KDC certificate presented.  This option may be specified
     multiple times.

     Valid URI types is DIR.
     See PKINIT URI section for more details.


pkinit_require_crl_checking = value
     The default certificate verification process will always check the
     available revocation information to see if a certificate has been
     revoked.  If a match is found for the certificate in a CRL,
     verification fails.  If the certificate being verified is not
     listed in a CRL, or there is no CRL present for its issuing CA,
     and `pkinit_require_crl_checking' is `false', then verification
     succeeds.

     However, if `pkinit_require_crl_checking' is `true' and there is
     no CRL information available for the issuing CA, then verification
     fails.

     `pkinit_require_crl_checking' should be set to `true' if the
     policy is such that up-to-date CRLs must be present for every CA.

pkinit_dh_min_bits = value
     Specifies the size of the Diffie-Hellman key the client will
     attempt to use.  The acceptable values are currently 1024, 2048,
     and 4096.  The default is 2048.

pkinit_win2k = value
     This flag specifies whether the target realm is assumed to support
     only the old, pre-RFC version of the protocol.  The default is
     false.

pkinit_win2k_require_binding = value
     If this flag is set to true, it expects that the target KDC is
     patched to return a reply with a checksum rather than a nonce.
     The default is false.


pkinit_eku_checking = value
     This option specifies what Extended Key Usage value the KDC
     certificate presented to the client must contain.  (Note that if
     the KDC certificate has the pkinit SubjectAlternativeName encoded
     as the Kerberos TGS name, EKU checking is not necessary since the
     issuing CA has certified this as a KDC certificate.)  The values
     recognized in the `krb5.conf' file are:
    kpKDC
          This is the default value and specifies that the KDC must
          have the id-pkinit-KPKdc EKU as defined in RFC4556.

    kpServerAuth
          If `kpServerAuth' is specified, a KDC certificate with the
          id-kp-serverAuth EKU as used by Microsoft will be accepted.

	  Using this value implies kpKDC.

    none
          If `none' is specified, then the KDC certificate will not be
          checked to verify it has an acceptable EKU.  The use of this
          option is not recommended.

pkinit_kdc_hostname = value
     The presense of this option indicates that the client is willing to
     accept a KDC certificate with a dNSName SAN (Subject Alternative
     Name) rather than requiring the id-pkinit-san as defined in
     RFC4556.  This option may be specified multiple times.  Its value
     should contain the acceptable hostname for the KDC (as contained
     in its certificate).

pkinit_cert_match = rule
     Specifies matching rules that the client certificate must match
     before it is used to attempt pkinit authentication.  If a user has
     multiple certificates available (on a smart card, or via other
     media), there must be exactly one certificate chosen before
     attempting pkinit authentication.  This option may be specified
     multiple times.  All the available certificates are checked
     against each rule in order until there is a match of exactly one
     certificate.

     The Subject and Issuer comparison strings are the RFC2253 string
     representations from the certificate Subject DN and Issuer DN
     values.

    The syntax of the matching rules is:

          [relation-operator]component-rule `...'

    where

    relation-operator
          can be either `&&', meaning all component rules must match,
          or `||', meaning only one component rule must match.  The
          default is `&&' if not specified.

    component-rule
          can be one of the following.  Note that there is no
          punctuation or whitespace between component rules.
         `<SUBJECT>'regular-expression

         `<ISSUER>'regular-expression

         `<SAN>'regular-expression

         `<EKU>'extended-key-usage-list
               where extended-key-usage-list is a comma-separated list
               of required Extended Key Usage values.  All values in
               the list must be present in the certificate.
                    `pkinit'
                    `msScLogin'
                    `clientAuth'
                    `emailProtection'

         `<KU>'key-usage-list
               where key-usage-list is a comma-separated list of
               required Key Usage values.  All values in the list must
               be present in the certificate.
                    `digitalSignature'
                    `keyEncipherment'
Examples:
          pkinit_cert_match = ||<SUBJECT>.*DoE.*<SAN>.*@EXAMPLE.COM
          pkinit_cert_match = &&<EKU>msScLogin,clientAuth<ISSUER>.*DoE.*
          pkinit_cert_match = <EKU>msScLogin,clientAuth<KU>digitalSignature


  * New kdc.conf(4) options:

The following are pkinit-specific options.  Note that these values may
be specified in `[kdcdefaults]' as global defaults, or within a
realm-specific subsection of `[realms]'.  Also note that a
realm-specific value over-rides, does not add to, a generic
`[kdcdefaults]' specification.  The search order is:
  1. realm-specific subsection of `[realms]'
          [realms]
              EXAMPLE.COM = {
                  pkinit_anchors = FILE:/usr/local/example.com.crt
              }


 2. generic value in the `[kdcdefaults]' section.
          [kdcdefaults]
              pkinit_anchors = DIR:/usr/local/generic_trusted_cas/


pkinit_identity = URI
     Specifies the location of the KDC's X.509 identity information.
     This option is required if pkinit is to be supported by the KDC.

     Valid URI types are FILE, DIR, PKCS11, PKCS12, and ENV.
     See PKINIT URI section for more details.

pkinit_anchors = URI
     Specifies the location of trusted anchor (root) certificates which
     the KDC trusts to sign client certificates.  This option is
     required if pkinit is to be supported by the KDC.  This option may
     be specified multiple times.

     Valid URI types are FILE and DIR.
     See PKINIT URI section for more details.


pkinit_pool = URI
     Specifies the location of intermediate certificates which may be
     used by the KDC to complete the trust chain between a client's
     certificate and a trusted anchor.  This option may be specified
     multiple times.

     Valid URI types are FILE and DIR.
     See PKINIT URI section for more details.


pkinit_revoke = URI
     Specifies the location of Certificate Revocation List (CRL)
     information to be used by the KDC when verifying the validity of
     client certificates.  This option may be specified multiple times.

   The default certificate verification process will always check the
     available revocation information to see if a certificate has been
     revoked.  If a match is found for the certificate in a CRL,
     verification fails.  If the certificate being verified is not
     listed in a CRL, or there is no CRL present for its issuing CA,
     and `pkinit_require_crl_checking' is `false', then verification
     succeeds.

     However, if `pkinit_require_crl_checking' is `true' and there is
     no CRL information available for the issuing CA, then verification
     fails.

     `pkinit_require_crl_checking' should be set to `true' if the
     policy is such that up-to-date CRLs must be present for every CA.

     Valid URI types is DIR.
     See PKINIT URI section for more details.

pkinit_dh_min_bits
     Specifies the minimum number of bits the KDC is willing to accept
     for a client's Diffie-Hellman key.  The default is 2048.

pkinit_allow_upn
     Specifies that the KDC is willing to accept client certificates
     with the Microsoft UserPrincipalName (UPN) Subject Alternative Name
     (SAN).  This means the KDC accepts the binding of the UPN in the
     certificate to the Kerberos principal name.

  The default is false.

     Without this option, the KDC will only accept certificates with
     the id-pkinit-san as defined in RFC4556.  There is currently no
     option to disable SAN checking in the KDC.

pkinit_eku_checking
     This option specifies what Extended Key Usage (EKU) values the KDC
     is willing to accept in client certificates.  The values
     recognized in the `kdc.conf' file are:
    kpClientAuth
          This is the default value and specifies that client
          certificates must have the id-pkinit-KPClientAuth EKU as
          defined in RFC4556.

    scLogin
          If `scLogin' is specified, client certificates with the
          Microsoft Smart Card Login EKU (id-ms-kp-sc-logon) will be
          accepted...

  * PKINIT URI Types

FILE:file-name[,key-file-name]
     This option has context-specific behavior.

    X509_user_identity
    pkinit_identity
    pkinit_identities
          file-name specifies the name of a PEM-format file containing
          the user's certificate.  If key-file-name is not specified,
          the user's private key is expected to be in file-name as
          well.  Otherwise, key-file-name is the name of the file
          containing the private key.

    X509_anchors
    pkinit_anchors
    pkinit_pool
          file-name is assumed to be the name of an OpenSSL-style
          ca-bundle file.  The ca-bundle file should be base-64 encoded.

DIR:directory-name
     This option has context-specific behavior.

    X509_user_identity
    pkinit_identity
    pkinit_identities
          directory-name specifies a directory with files named `*.crt'
          and `*.key', where the first part of the file name is the
          same for matching pairs of certificate and private key files.
          When a file with a name ending with `.crt' is found, a
          matching file ending with `.key' is assumed to contain the
          private key.  If no such file is found, then the certificate
          in the `.crt' is not used.

    X509_anchors
    pkinit_anchors
    pkinit_pool
          directory-name is assumed to be an OpenSSL-style hashed CA
          directory where each CA cert is stored in a file named
          hash-of-ca-cert.#.  This infrastructure is encouraged, but
          all files in the directory will be examined and if they
          contain certificates (in PEM format), they will be used.

   pkinit_revoke
          directory-name is assumed to be an OpenSSL-style hashed CA
          directory where each revocation list is stored in a file
          named hash-of-ca-cert.r#.  This infrastructure is encouraged,
          but all files in the directory will be examined and if they
          contain a revocation list (in PEM format), they will be used.

PKCS12:pkcs12-file-name
     pkcs12-file-name is the name of a `PKCS #12' format file,
     containing the user's certificate and private key.

PKCS11:[slotid=slot-id][:token=token-label][:certid=cert-id][:certlabel=cert-label]

     All keyword/values are optional.  PKCS11 modules (for example,
     opensc-pkcs11.so) must be installed as a crypto provider under
     libpkcs11(3LIB).  slotid= and/or token= may be specified to force
     the use of a particular smard card reader or token if there is
     more than one available.  certid= and/or certlabel= may be
     specified to force the selection of a particular certificate on
     the device.  See the `pkinit_cert_match' configuration option for
     more ways to select a particular certificate to use for pkinit.

     Notes:

     * The slotid and certid keywords are controversial as some Sun
       Engineers believe they are a bad idea as there is no guaranteed
       ordering of slots returned from C_GetSlotList (for slotid).  The
       MIT distro developers responded with (and I quote):

         The problem with using slot labels is that some devices will
         have multiple slots all with the same label but different
         IDs.  OpenSC does this for example.  The only way to
         distinguish them is by slotid.  Same is true of token labels.
         Also, I'm not sure labels are required by pkcs11, but IDs
         are.

	 What it really comes down to is that I've seen the spec
	 violated by several implementations in very creative ways,
	 and I thought it best to have as many different ways to
	 identify objects as possible.  Maybe this should be
	 documented.
	 (end of quote)

    As these keywords are optional (and the Stability level is
    Volatile) the Solaris Kerberos project team will keep these (and
    document the potential problems) the same as the MIT distro for
    now.

ENV:environment-variable-name
     environment-variable-name specifies the name of an environment
     variable which has been set to a value conforming to one of the
     previous values.  For example, `ENV:X509_PROXY', where environment
     variable `X509_PROXY' has been set to `FILE:/tmp/my_proxy.pem'.

     
NOTES
-----

* The MIT Kerberos plugin framework API will not be exposed at this time.
* pam_krb5(5) support for PKINIT will be added in a future project.
* RFC4557 (PKINIT with OCSP) is not in the MIT Kerberos PKINIT module and
  won't be delivered with this project

DOCUMENTATION
-------------

* Man page updates will be given for kinit(1), krb5.conf(4), and kdc.conf(4).
* http://docs.sun.com the Kerberos chapter will also be updated.


INTERFACE STABILITY AND RELEASE BINDINGS
----------------------------------------

Interface		Stability		Release Binding

new krb5.conf options	Volatile		Minor/Patch
new kdc.conf options	Volatile		Minor/Patch
new kinit args		Volatile		Minor/Patch
pkinit.so file path	-/Private		Minor/Patch


6. Resources and Schedule
    6.4. Steering Committee requested information
        6.4.1. Consolidation C-team Name:
                ON
    6.5. ARC review type: FastTrack

6. Resources and Schedule
    6.4. Steering Committee requested information
   	6.4.1. Consolidation C-team Name:
		ON
    6.5. ARC review type: FastTrack
    6.6. ARC Exposure: open


From wyllys.ingersoll@sun.com Fri Oct 10 12:15:55 2008
Received: from sunmail4.singapore.sun.com (sunmail4.Singapore.Sun.COM [129.158.71.19])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9AJFsde029455
	for <psarc-ext@sac.sfbay.Sun.COM>; Fri, 10 Oct 2008 12:15:55 -0700 (PDT)
Received: from nwk-avmta-1.SFBay.Sun.COM (nwk-avmta-1.SFBay.Sun.COM [129.146.11.74])
	by sunmail4.singapore.sun.com (8.13.4+Sun/8.13.3/ENSMAIL,v2.2) with ESMTP id m9AJFqt1001296
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Sat, 11 Oct 2008 03:15:53 +0800 (SGT)
Received: from pmxchannel-daemon.nwk-avmta-1.sfbay.Sun.COM by
 nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K8J00F03EUF2B00@nwk-avmta-1.sfbay.Sun.COM> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Fri, 10 Oct 2008 12:15:51 -0700 (PDT)
Received: from jurassic-x4600.sfbay.sun.com ([129.146.17.59])
 by nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K8J006AVEUFL240@nwk-avmta-1.sfbay.Sun.COM> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Fri,
 10 Oct 2008 12:15:51 -0700 (PDT)
Received: from [10.7.251.182] (punchin-wyllys.SFBay.Sun.COM [10.7.251.182])
	by jurassic-x4600.sfbay.sun.com (8.14.3+Sun/8.14.3)
 with ESMTP id m9AJFnbZ288644
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri,
 10 Oct 2008 12:15:50 -0700 (PDT)
Date: Fri, 10 Oct 2008 15:15:49 -0400
From: Wyllys Ingersoll <wyllys.ingersoll@sun.com>
Subject: Re: Kerberos PKINIT [PSARC/2008/631 FastTrack timeout 10/17/2008]
In-reply-to: <200810101904.m9AJ4UJq028072@borg.SFBay.Sun.COM>
To: Wyllys Ingersoll <wyllys@borg.SFBay.Sun.COM>
Cc: PSARC-ext@sun.com, kerberos-discuss@opensolaris.org
Message-id: <48EFA9E5.4020807@sun.com>
MIME-version: 1.0
Content-type: text/plain; charset=ISO-8859-1; format=flowed
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
References: <200810101904.m9AJ4UJq028072@borg.SFBay.Sun.COM>
User-Agent: Thunderbird 2.0.0.14 (X11/20080728)
Status: RO
Content-Length: 99


The updated man pages for this case are in the case directory under the 
"man" sub-dir.

-Wyllys


From Kais.Belgaied@sun.com Mon Oct 13 18:11:38 2008
Received: from sunmail4.singapore.sun.com (sunmail4.Singapore.Sun.COM [129.158.71.19])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9E1Bb2r013760
	for <psarc-ext@sac.sfbay.Sun.COM>; Mon, 13 Oct 2008 18:11:38 -0700 (PDT)
Received: from nwk-avmta-2.sfbay.sun.com (nwk-avmta-2.SFBay.Sun.COM [129.145.155.6])
	by sunmail4.singapore.sun.com (8.13.4+Sun/8.13.3/ENSMAIL,v2.2) with ESMTP id m9E1BSdb019260
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@Sun.COM>; Tue, 14 Oct 2008 09:11:36 +0800 (SGT)
Received: from pmxchannel-daemon.nwk-avmta-2.sfbay.sun.com by
 nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K8P00103FB96200@nwk-avmta-2.sfbay.sun.com> for PSARC-ext@Sun.COM
 (ORCPT PSARC-ext@Sun.COM); Mon, 13 Oct 2008 18:11:33 -0700 (PDT)
Received: from jurassic-x4600.sfbay.sun.com ([129.146.17.63])
 by nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K8P00ISMFB8YL70@nwk-avmta-2.sfbay.sun.com> for
 PSARC-ext@Sun.COM (ORCPT PSARC-ext@Sun.COM); Mon,
 13 Oct 2008 18:11:32 -0700 (PDT)
Received: from [129.146.11.145]
 (sr1-jurassic-02.SFBay.Sun.COM [129.146.11.145])	by
 jurassic-x4600.sfbay.sun.com (8.14.3+Sun/8.14.3) with ESMTP id m9E1BWRv912896;
 Mon, 13 Oct 2008 18:11:32 -0700 (PDT)
Date: Mon, 13 Oct 2008 18:11:32 -0700
From: Kais Belgaied <Kais.Belgaied@sun.com>
Subject: Re: Kerberos PKINIT [PSARC/2008/631 FastTrack timeout 10/17/2008]
In-reply-to: <200810101904.m9AJ4UJq028072@borg.SFBay.Sun.COM>
To: Wyllys Ingersoll <wyllys@borg.SFBay.Sun.COM>
Cc: PSARC-ext@sun.com, kerberos-discuss@opensolaris.org
Reply-to: Kais.Belgaied@sun.com
Message-id: <48F3F1C4.5020203@Sun.COM>
MIME-version: 1.0
Content-type: text/plain; charset=ISO-8859-1; format=flowed
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
References: <200810101904.m9AJ4UJq028072@borg.SFBay.Sun.COM>
User-Agent: Thunderbird 2.0.0.14 (X11/20080505)
Status: RO
Content-Length: 1405


>
>   * New kinit(1) options:
>
>      -X attribute[=value]
>           specify a pre-authentication attribute and value to  be
>           passed  to  pre-authentication plugins.  The acceptable
>           attribute and value values vary from pre-authentication
>           plugin  to plugin.  This option may be specified multi-
>           ple times to specify multiple attributes.  If no  value
>           is specified, it is assumed to be "yes".
>
>           The following attributes are recognized by the OpenSSL pkinit
>           pre-authentication mechanism:
>              X509_user_identity=URI
>                 Specify where to find user's X509 identity information.
>
> 		Valid URI types are FILE, DIR, PKCS11, PKCS12, and ENV.
> 		See PKINIT URI Types section for more details.
>
>              X509_anchors=URI
>                 Specify where to find trusted X509 anchor information.
>
> 		Valid URI types are FILE and DIR.
> 		See PKINIT URI Types section for more details.
>
>              flag_RSA_PROTOCOL[=yes]
>                 Specify use of RSA, rather than the default
>                 Diffie-Hellman protocol.
>   
Does OpenSolaris have any latitude in changing the attributes or do they 
need to be kept verbatim as
they come from MIT code drops?
If we do, then the choice of  boolean flag_RSA_PROTOCOL[=yes] excluded other
key exchange algorithms, such as ECC.

    Kais


From Mark.Phalan@sun.com Wed Oct 15 06:48:37 2008
Received: from sunmail3mpk.sfbay.sun.com (sunmail3mpk.SFBay.Sun.COM [129.146.11.52])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9FDmbAo008784
	for <psarc-ext@sac.sfbay.sun.com>; Wed, 15 Oct 2008 06:48:37 -0700 (PDT)
Received: from brm-avmta-1.central.sun.com (brm-avmta-1.Central.Sun.COM [129.147.4.11])
	by sunmail3mpk.sfbay.sun.com (8.13.7+Sun/8.13.7/ENSMAIL,v2.2) with ESMTP id m9FDmXx6022779
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Wed, 15 Oct 2008 06:48:37 -0700 (PDT)
Received: from pmxchannel-daemon.brm-avmta-1.central.sun.com by
 brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K8S0060J90YW500@brm-avmta-1.central.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Wed, 15 Oct 2008 07:48:34 -0600 (MDT)
Received: from gmp-eb-inf-2.sun.com ([192.18.6.24])
 by brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K8S002TW90W6TB0@brm-avmta-1.central.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Wed,
 15 Oct 2008 07:48:33 -0600 (MDT)
Received: from fe-emea-09.sun.com (gmp-eb-lb-1-fe3.eu.sun.com [192.18.6.10])
	by gmp-eb-inf-2.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m9FDmWkt013355	for
 <PSARC-ext@sun.com>; Wed, 15 Oct 2008 13:48:32 +0000 (GMT)
Received: from conversion-daemon.fe-emea-09.sun.com by fe-emea-09.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 id <0K8S00E017JN2Z00@fe-emea-09.sun.com>
 (original mail from Mark.Phalan@Sun.COM)
 for PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Wed,
 15 Oct 2008 14:48:32 +0100 (BST)
Received: from [129.157.20.176] by fe-emea-09.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 with ESMTPSA id <0K8S00IIP90UHL80@fe-emea-09.sun.com>; Wed,
 15 Oct 2008 14:48:31 +0100 (BST)
Date: Wed, 15 Oct 2008 15:48:21 +0200
From: Mark Phalan <Mark.Phalan@sun.com>
Subject: Re: Kerberos PKINIT [PSARC/2008/631 FastTrack timeout 10/17/2008]
In-reply-to: <48F3F1C4.5020203@Sun.COM>
Sender: Mark.Phalan@sun.com
To: Kais.Belgaied@sun.com
Cc: Wyllys Ingersoll <wyllys@borg.SFBay.Sun.COM>, PSARC-ext@sun.com,
        kerberos-discuss@opensolaris.org, Glenn.Barry@sun.com
Message-id: <1224078501.1877.114.camel@localhost>
MIME-version: 1.0
X-Mailer: Evolution 2.23.92
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
References: <200810101904.m9AJ4UJq028072@borg.SFBay.Sun.COM>
 <48F3F1C4.5020203@Sun.COM>
Status: RO
Content-Length: 1841

On Mon, 2008-10-13 at 18:11 -0700, Kais Belgaied wrote:
> >
> >   * New kinit(1) options:
> >
> >      -X attribute[=value]
> >           specify a pre-authentication attribute and value to  be
> >           passed  to  pre-authentication plugins.  The acceptable
> >           attribute and value values vary from pre-authentication
> >           plugin  to plugin.  This option may be specified multi-
> >           ple times to specify multiple attributes.  If no  value
> >           is specified, it is assumed to be "yes".
> >
> >           The following attributes are recognized by the OpenSSL pkinit
> >           pre-authentication mechanism:
> >              X509_user_identity=URI
> >                 Specify where to find user's X509 identity information.
> >
> > 		Valid URI types are FILE, DIR, PKCS11, PKCS12, and ENV.
> > 		See PKINIT URI Types section for more details.
> >
> >              X509_anchors=URI
> >                 Specify where to find trusted X509 anchor information.
> >
> > 		Valid URI types are FILE and DIR.
> > 		See PKINIT URI Types section for more details.
> >
> >              flag_RSA_PROTOCOL[=yes]
> >                 Specify use of RSA, rather than the default
> >                 Diffie-Hellman protocol.
> >   
> Does OpenSolaris have any latitude in changing the attributes or do they 
> need to be kept verbatim as
> they come from MIT code drops?

We have latitude but generally we like to remain as compatible with
upstream as possible.

> If we do, then the choice of  boolean flag_RSA_PROTOCOL[=yes] excluded other
> key exchange algorithms, such as ECC.

As PKINIT (RFC 4556) doesn't support ECC key exchange I don't see an
immediate need for this and is not worth (in my opinion) breaking MIT
compatibility for it now. I should note that this config file option is
"Volatile".

-Mark


From wyllys.ingersoll@sun.com Mon Oct 20 08:11:22 2008
Received: from sunmail2sca.sfbay.sun.com (sunmail2sca.SFBay.Sun.COM [129.145.155.234])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9KFBMXM011995
	for <psarc-ext@sac.sfbay.sun.com>; Mon, 20 Oct 2008 08:11:22 -0700 (PDT)
Received: from nwk-avmta-2.sfbay.sun.com (nwk-avmta-2.SFBay.Sun.COM [129.145.155.6])
	by sunmail2sca.sfbay.sun.com (8.13.7+Sun/8.13.7/ENSMAIL,v2.2) with ESMTP id m9KFBM0K009050
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Mon, 20 Oct 2008 08:11:22 -0700 (PDT)
Received: from pmxchannel-daemon.nwk-avmta-2.sfbay.sun.com by
 nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K9100B0FM6YP300@nwk-avmta-2.sfbay.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Mon, 20 Oct 2008 08:11:22 -0700 (PDT)
Received: from jurassic-x4600.sfbay.sun.com ([129.146.17.63])
 by nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K91004W6M6WF1B0@nwk-avmta-2.sfbay.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Mon,
 20 Oct 2008 08:11:20 -0700 (PDT)
Received: from [10.7.251.182] (punchin-wyllys.SFBay.Sun.COM [10.7.251.182])
	by jurassic-x4600.sfbay.sun.com (8.14.3+Sun/8.14.3)
 with ESMTP id m9KFBItP152671
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon,
 20 Oct 2008 08:11:20 -0700 (PDT)
Date: Mon, 20 Oct 2008 11:11:18 -0400
From: Wyllys Ingersoll <wyllys.ingersoll@sun.com>
Subject: PSARC 2008/631 - Kerberos PKINIT
To: PSARC-ext@sun.com, kerberos-discuss@opensolaris.org
Message-id: <48FC9F96.3020405@sun.com>
MIME-version: 1.0
Content-type: text/plain; charset=ISO-8859-1; format=flowed
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
User-Agent: Thunderbird 2.0.0.14 (X11/20080728)
Status: RO
Content-Length: 140


The timer has expired and there haven't been any further comments, so I'm
marking the Kerberos PKINT case as approved.

-Wyllys Ingersoll


From Nicolas.Williams@sun.com Mon Oct 20 08:56:04 2008
Received: from newsunmail1brm.central.sun.com (newsunmail1brm.Central.Sun.COM [129.147.62.245])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m9KFu4vC013031
	for <psarc-ext@sac.sfbay.sun.com>; Mon, 20 Oct 2008 08:56:04 -0700 (PDT)
Received: from nwk-avmta-2.sfbay.sun.com (nwk-avmta-2.SFBay.Sun.COM [129.145.155.6])
	by newsunmail1brm.central.sun.com (8.13.7+Sun/8.13.7/ENSMAIL,v2.2) with ESMTP id m9KFu1j2031054;
	Mon, 20 Oct 2008 09:56:01 -0600 (MDT)
Received: from pmxchannel-daemon.nwk-avmta-2.sfbay.sun.com by
 nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K9100D0WO9D3P00@nwk-avmta-2.sfbay.sun.com>; Mon,
 20 Oct 2008 08:56:01 -0700 (PDT)
Received: from binky.Central.Sun.COM ([129.153.128.104])
 by nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K91004SDO8VELC0@nwk-avmta-2.sfbay.sun.com>; Mon,
 20 Oct 2008 08:55:44 -0700 (PDT)
Received: from binky.Central.Sun.COM (localhost [127.0.0.1])
	by binky.Central.Sun.COM (8.14.3+Sun/8.14.3) with ESMTP id m9KFllEV017423;
 Mon, 20 Oct 2008 10:47:47 -0500 (CDT)
Received: (from nw141292@localhost)
	by binky.Central.Sun.COM (8.14.3+Sun/8.14.3/Submit) id m9KFllD7017422; Mon,
 20 Oct 2008 10:47:47 -0500 (CDT)
Date: Mon, 20 Oct 2008 10:47:47 -0500
From: Nicolas Williams <Nicolas.Williams@sun.com>
Subject: Re: [kerberos-discuss] Kerberos PKINIT [PSARC/2008/631 FastTrack
 timeout 10/17/2008]
In-reply-to: <1224078501.1877.114.camel@localhost>
To: Mark Phalan <Mark.Phalan@sun.com>
Cc: Kais.Belgaied@sun.com, Glenn.Barry@sun.com, PSARC-ext@sun.com,
        Wyllys Ingersoll <wyllys@borg.SFBay.Sun.COM>,
        kerberos-discuss@opensolaris.org
Message-id: <20081020154747.GO8906@Sun.COM>
MIME-version: 1.0
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7BIT
Content-disposition: inline
X-PMX-Version: 5.4.1.325704
References: <200810101904.m9AJ4UJq028072@borg.SFBay.Sun.COM>
 <48F3F1C4.5020203@Sun.COM> <1224078501.1877.114.camel@localhost>
X-Authentication-warning: binky.Central.Sun.COM: nw141292 set sender to
 Nicolas.Williams@sun.com using -f
User-Agent: Mutt/1.5.7i
Status: RO
Content-Length: 1222

On Wed, Oct 15, 2008 at 03:48:21PM +0200, Mark Phalan wrote:
> > Does OpenSolaris have any latitude in changing the attributes or do they 
> > need to be kept verbatim as
> > they come from MIT code drops?
> 
> We have latitude but generally we like to remain as compatible with
> upstream as possible.

Right.  Differing from MIT -> more merge/sync work down the line (and/or
more work to do to get Solaris' differences integrated into MIT krb5).

> > If we do, then the choice of  boolean flag_RSA_PROTOCOL[=yes] excluded other
> > key exchange algorithms, such as ECC.
> 
> As PKINIT (RFC 4556) doesn't support ECC key exchange I don't see an
> immediate need for this and is not worth (in my opinion) breaking MIT
> compatibility for it now. I should note that this config file option is
> "Volatile".

FYI, RFC5349 adds ECDH support for PKINIT.

Note though that flag_RSA_PROTOCOL does not preclude any ECC
enhancements.  It merely enables one key exchange method (RSA key
transport) for PKINIT.

One supposes that that means that we can expect more boolean
flag_<key_exch_method>_PROTOCOL parameters.

The "flag_" prefix is annoying (read: redundant), but I'll live.

IOW, this parameter is not a problem.

Nico
-- 

