home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_ietf_a_c / draft-ietf-cat-sesamemech-02.txt < prev    next >
Text File  |  1996-11-26  |  134KB  |  3,771 lines

  1.  
  2. Internet-Draft                                       ERIC BAIZE, BULL
  3. IETF Common Authentication Technology WG         STEPHEN FARRELL, SSE
  4.                                                       TOM PARKER, ICL
  5. <draft-ietf-cat-sesamemech-02.txt>                  November 22, 1996
  6.    
  7.    
  8.                     The SESAME V5 GSS-API Mechanism
  9.    
  10.    
  11. STATUS OF THIS MEMO
  12.    
  13. This specification is an Internet-Draft. Internet-Drafts are working
  14. documents of the Internet Engineering Task Force (IETF), its areas,
  15. and its working groups. Note that other groups may also distribute
  16. working documents as Internet-Drafts.
  17.    
  18. Internet-Drafts are draft documents valid for a maximum of six
  19. months and may be updated, replaced, or obsoleted by
  20. other documents at any time. It is inappropriate to use Internet-
  21. Drafts as reference material or to cite them other than as
  22. "work in progress."
  23.    
  24. To learn the current status of any Internet Draft, please check the
  25. "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
  26. Directories on ds.internic.net (US East Coast), nic.nordu.net
  27. (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific
  28. Rim).
  29.    
  30. Comments on this specification should be sent to "cat-ietf@mit.edu", the
  31. IETF Common Authentication Technology WG discussion list.
  32.    
  33.  
  34. ABSTRACT
  35.    
  36.    This specification defines protocols, data elements, and
  37.    conventions to be employed by peers implementing the Generic
  38.    Security Service Application Program Interface (as specified in
  39.    RFCs 1508 and 1509) when using the SESAME Version 5 Mechanism.
  40.    
  41. 1.  BACKGROUND
  42.    
  43.    Although the Kerberos Version 5 GSS-API mechanism [KRB5] is becoming
  44.    well-established in many environments, it is important in some
  45.    applications to have a GSS-API mechanism, which is able to support
  46.    privileges rather than only a single identity, which is scalable 
  47.    because it supports public key technology and which is flexible 
  48.    in a distributed environment due to its fine granularity delegation
  49.    properties.
  50.    
  51.    The mechanism described in this specification has been designed 
  52.    to provide the following features.
  53.   
  54.  
  55. Baize, Farrell, Parker     Document Expiration: 22 May 1997    [Page 1]
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63. internet-draft                                        November 22, 1996
  64.  
  65.       1)  SESAME allows both unilateral and mutual authentication
  66.           to be accomplished using loosely synchronous clocks. One key 
  67.           advantage of this feature is that, when unilateral 
  68.           authentication is used, no additional message (as in a 
  69.           challenge-response mechanism) is needed and thus it is
  70.           possible to concatenate in a single message, for example, 
  71.           an "init-sec token", a "wrapped token" and a "close token".
  72.    
  73.       2)  In addition to authentication, SESAME supports the 
  74.           transmission of the access control privileges of a user. 
  75.           These privileges are carried in a data structure called the 
  76.           PAC (Privileges Attribute Certificate). Privileges supported 
  77.           in SESAME V5 are group-memberships, roles and administration 
  78.           defined local types. In the future support for clearances or 
  79.           capabilities is envisaged. SESAME supports the "push model" 
  80.           where the privileges are pushed towards the target. This 
  81.           allows the principle of least privilege to be supported, 
  82.           where only the privileges that are necessary for performing 
  83.           an operation are presented and disclosed to the target.
  84.    
  85.       3)  Privileges are always directly guaranteed by the 
  86.           authority which originally vouched for them. This allows 
  87.           the concept of "direct trust" to be supported because no 
  88.           intermediate security domain is needed to translate the 
  89.           original guaranteed privileges when they are delegated, even 
  90.           across security domains. In practice, this is made possible 
  91.           because the privileges are placed in a data structure that is
  92.           signed by the issuing domain authority, and thus is directly 
  93.           verifiable.
  94.    
  95.       4)  The scheme used to transmit privileges is 
  96.           independent of the scheme used for key management. This 
  97.           allows several key management schemes and their extensions 
  98.           to be supported. In practice, SESAME allows each security 
  99.           domain manager to chose its own key management scheme. 
  100.           Cross-domain relationships can either be based on public 
  101.           key technology or on secret key technology. 
  102.    
  103.       5)  The control of delegation is a key feature of SESAME. This 
  104.           allows privileges to be transmitted and their use to be 
  105.           restricted to nominated targets or groups of targets.
  106.    
  107.       6)  The SESAME GSS-API protocols re-use data structures developed
  108.           in Kerberos V5 [Kerberos] and SPKM [SPKM] for key management 
  109.           and authentication. SESAME has merged these into a wider 
  110.           framework supporting distributed access control and 
  111.           delegation features.
  112.    
  113.    A more complete overview of SESAME is available in [SESOV].
  114.    
  115.  
  116. Baize, Farrell, Parker     Document Expiration: 22 May 1997    [Page 2]
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124. internet-draft                                        November 22, 1996
  125.  
  126. 1.1 Table of Contents
  127.    
  128. 1.  BACKGROUND                                                        1
  129. 2.  THE SESAME TECHNOLOGY                                             4
  130. 2.1.  Overview                                                        4
  131. 2.2.  SESAME Concepts                                                 5
  132. 2.2.1.  Access Control Concepts                                       5
  133. 2.2.1.1.  Domains                                                     5
  134. 2.2.1.2.  Identities                                                  5
  135. 2.2.1.3.  Privilege Attributes                                        5
  136. 2.2.1.4.  Delegation                                                  6
  137. 2.2.1.5.  Application Trust Groups (ATGs)                             6
  138. 2.2.2.  Target Access Enforcement Function (targetAEF)                6
  139. 2.2.3.  SESAME Key Distribution                                       7
  140. 2.2.3.1.  Basic keys and dialogue keys                                7
  141. 2.2.3.2.  Basic symmetric key distribution scheme (symmIntradomain)   7
  142. 2.2.3.3.  Hybrid key distribution scheme (hybridInterdomain)          8
  143. 2.2.3.4.  Full public key distribution scheme (asymmetric)            8
  144. 2.2.3.5.  Derivation of Dialogue Keys                                 8
  145. 2.2.4.  Use of Cryptography in SESAME                                 8
  146. 3.  GSS-API TOKEN FORMATS                                             9
  147. 3.1.  Token framings                                                  9
  148. 3.2.  InitialContextToken format                                     10
  149. 3.3.  TargetResultToken                                              14
  150. 3.4.  ErrorToken                                                     15
  151. 3.5.  Per Message Token formats                                      15
  152. 3.5.1.  MICToken                                                     17
  153. 3.5.2.  WrapToken                                                    17
  154. 3.6  ContextDeleteToken format                                       18
  155. 4.  DATA ELEMENT DEFINITIONS                                         18
  156. 4.1.  Access Control Data Elements                                   19
  157. 4.1.1.  Generalised certificate (GeneralisedCertificate)             19
  158. 4.1.1.1.  Common Contents fields (CommonContents)                    19
  159. 4.1.1.2.  PAC Specific Certificate Contents (PACSpecificContents)    20
  160. 4.1.1.3.  Check value (CheckValue)                                   21
  161. 4.1.2.  Security Attributes (SecurityAttribute)                      21
  162. 4.1.3.  Protection Methods                                           22
  163. 4.1.3.1.  "Control/Protection Values" protection method              22
  164. 4.1.3.2.  "Primary Principal Qualification" protection method        23
  165. 4.1.3.3.  "Target Qualification" protection method                   24
  166. 4.1.3.4.  "Delegate/Target Qualification" protection method          24
  167. 4.1.3.5.  Combining the methods                                      25
  168. 4.1.4.  External Control Values Construct (ECV)                      25
  169. 4.2. Basic Key Distribution                                          26
  170. 4.2.1.  Data elements for the Symmetric Intradomain kd-scheme        28
  171. 4.2.2.  Data elements for the Hybrid interdomain kd-scheme.          29
  172. 4.2.3.  Data elements for the asymmetric kd-scheme                   30
  173. 4.3.  Dialogue Key Block                                             30
  174. 4.4.  Attribute Definitions                                          31
  175. 4.4.1.  Privilege attributes                                         31
  176. 4.4.1.1.  Access Identity                                            31
  177. 4.4.1.2.  Group                                                      31
  178.  
  179. Baize, Farrell, Parker     Document Expiration: 22 May 1997    [Page 3]
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187. internet-draft                                        November 22, 1996
  188.  
  189. 4.4.1.3.  Primary group                                              32
  190. 4.4.1.4.  Role attribute                                             32
  191. 4.4.2.  Miscellaneous attributes                                     32
  192. 4.4.2.1.  Audit Identity                                             32
  193. 4.4.3.  Qualifier Attributes                                         32
  194. 4.4.3.1.  Target Attributes                                          32
  195. 4.4.3.2.  Application Trust Groups                                   32
  196. 5.  ALGORITHMS AND CIPHERTEXT FORMATS                                32
  197. 6.  SESAME MECHANISM NEGOTIATION                                     35
  198. 7.  NAME TYPES                                                       36
  199. 7.1.  Kerberos naming                                                36
  200. 7.2.  Directory Naming                                               37
  201. 8.  SECURITY CONSIDERATIONS                                          38
  202. 9.  PATENTS                                                          38
  203. 9.1.  BULL PATENT                                                    38
  204. 9.2.  ICL PATENTS                                                    39
  205. 9.2.1. PAC USE MONITOR (C1167 )                                      39
  206. 9.2.2. PROXY CONTROL (C1179)                                         39
  207. 10.  ACKNOWLEDGEMENTS                                                39
  208. 11.  REFERENCES                                                      40
  209. 12.  AUTHOR'S ADDRESSES                                              41
  210. APPENDIX A: ASN.1 MODULE DEFINITIONS                                 42
  211. A.1.  SESAME ASN.1 Definitions                                       42
  212. A.2.  Kerberos ASN.1 Definitions                                     51
  213. A.3.  SPKM ASN.1 Definitions                                         53
  214. APPENDIX B: Profiling of KD-schemes                                  57
  215. B.1.  Profile of Ticket as used in symmIntradomain scheme            57
  216. B.2.  Profile of PublicTicket as used in hybridInterdomain scheme    57
  217. B.3.  Profile of SPKM_REQ as used in asymmetric scheme               58
  218. APPENDIX C: ECMA BACKGROUND MATERIAL.                                60
  219.  
  220.  
  221.    
  222. 2.  THE SESAME TECHNOLOGY
  223.    
  224. 2.1.  Overview
  225.    
  226.    The tokens defined in SESAME are intended to be used by application
  227.    programs according to the GSS API "operational paradigm" (see
  228.    [RFC-1508] for further details):
  229.    
  230.       The operational paradigm in which GSS-API operates is as follows.
  231.       A typical GSS-API caller is itself a communications protocol [or
  232.       is an application program which uses a communications protocol],
  233.       calling on GSS-API in order to protect its communications with
  234.       authentication, integrity, and/or confidentiality security
  235.       services.  A GSS-API caller accepts tokens provided to it by its
  236.       local GSS-API implementation [i.e., its GSS-API mechanism] and
  237.       transfers the tokens to a peer on a remote system; that peer
  238.       passes the received tokens to its local GSS-API implementation for
  239.       processing.
  240.   
  241.  
  242. Baize, Farrell, Parker     Document Expiration: 22 May 1997    [Page 4]
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250. internet-draft                                        November 22, 1996
  251.  
  252.    Some extensions to the base GSS-API are required in order for
  253.    applications to take full advantage of the access control and
  254.    delegation capabilities of SESAME. As these extensions are
  255.    independent of the SESAME mechanism they are specified in a
  256.    separate draft [XGSSAPI].
  257.    
  258. 2.2.  SESAME Concepts
  259.    
  260. 2.2.1.  Access Control Concepts
  261.    
  262. 2.2.1.1.  Domains
  263.    
  264.    A `security domain' is a set of elements, a security authority
  265.    and a set of security relevant activities in which the set of
  266.    elements are subject to the security policy, administered by the
  267.    security authority, for the specified activities [ISO 10181-1].
  268.    A security domain must support at least, one authentication server
  269.    (AS), one privilege attribute server (PAS) and may need a key 
  270.    distribution server (KDS).
  271.    
  272. 2.2.1.2.  Identities
  273.    
  274. SESAME supports the three following types of identity:
  275.    
  276.    Authenticated Identity   which is the identity held in the PAS 
  277.                             ticket obtained from Authentication 
  278.                             Server. This is used to permit the
  279.                             release of Privilege Attributes for use in
  280.                             access control decisions.
  281.    
  282.    Access Identity          which is used in PACs as a Privilege 
  283.                             Attribute. This attribute reflects a value 
  284.                             given by the PAS administrator. Note that 
  285.                             the access identity does not need to be 
  286.                             always present within a PAC, because access
  287.                             can be granted using, for example, group-
  288.                             memberships or roles rather than 
  289.                             individual identities.
  290.  
  291.    Audit Identity           a value unique to an individual which is 
  292.                             used in PACs only for accountability 
  293.                             purposes. This is a separate field in the 
  294.                             PAC, which reflects a value given by the 
  295.                             PAS administrator.
  296.    
  297.    
  298. 2.2.1.3.  Privilege Attributes
  299.    
  300.    Standard Privilege Attribute types are defined so they can be 
  301.    independent of specific end-system representations but which can 
  302.    be mapped as appropriate in the receiving system. 
  303.   
  304.  
  305. Baize, Farrell, Parker     Document Expiration: 22 May 1997    [Page 5]
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313. internet-draft                                        November 22, 1996
  314.  
  315.    The privilege attributes which are supported in this specification are :
  316.    
  317.                  access identity
  318.                  primary group
  319.                  group
  320.                  role attribute
  321.                  Domain defined attributes (i.e. defined by the PAS 
  322.                                             administrator) 
  323.  
  324.    Together these provide for the support of a variety of formulations
  325.    of access control policy, for example Role Based Access Control.
  326.  
  327. 2.2.1.4.  Delegation
  328.    
  329.    An initiator may not wish to delegate all his rights, and may want 
  330.    to restrict the area within which the PAC may be used. For that 
  331.    purpose, PACs can be arranged to be valid only for specific 
  332.    nominated targets. A PAC may contain many target names or other 
  333.    target attributes (though in SESAME V5 the only attribute type 
  334.    supported is the Application Trust Group - see next).
  335.    
  336.    Mechanisms are also provided to prevent a PAC from being delegated
  337.    where this is appropriate. 
  338.    
  339. 2.2.1.5.  Application Trust Groups (ATGs)
  340.    
  341.    A PAC may contain one or more target or delegate application or
  342.    "Trust Group" names specifying which targets or delegate-targets
  343.    the PAC is valid for. A Trust Group name is simply the name of a
  344.    group of applications, defined by the security administrator,
  345.    that mutually trust each other not to spoof each others'
  346.    identities.
  347.    
  348.    In order to allow for a PAC which is usable at all targets a
  349.    special trust group is defined - the "universal" trust group. A
  350.    PAC targeted at the universal trust group can still be protected
  351.    using target controls (as in delegation) which means that such a
  352.    PAC still cannot be stolen.
  353.    
  354. 2.2.2.  Target Access Enforcement Function (targetAEF)
  355.    
  356.    In SESAME the security processing functionality on the target is
  357.    split between two different entities - the target application and
  358.    the target access enforcement function (targetAEF)(see ISO IEC
  359.    10181-3). This has a number of advantages:
  360.    
  361.     -  the number of long-term keys in the system can be reduced
  362.        since only the targetAEF need share a symmetric key with the
  363.        security server or possess an asymmetric key pair,
  364.    
  365.     -  the security critical code is isolated which makes security
  366.        evaluation simpler,
  367.  
  368. Baize, Farrell, Parker     Document Expiration: 22 May 1997    [Page 6]
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376. internet-draft                                        November 22, 1996
  377.  
  378.     -  administration is simplified as one targetAEF may "serve" many
  379.        target applications,
  380.    
  381.     -  different administrators can be responsible for the target
  382.        application and targetAEF,
  383.    
  384.     -  as the initiator establishes a key with the targetAEF (see
  385.        later) this keying information can be re-used whenever another
  386.        target served by the same AEF is accessed.
  387.    
  388. A patent from ICL applies to this method (see section 9).
  389.  
  390. 2.2.3.  SESAME Key Distribution
  391.    
  392.    There are different key distribution schemes in SESAME.
  393.    Each depends upon the existence of long term cryptographic keys
  394.    which held by targets AEFs and KDSs. These keys may be either
  395.    symmetric or asymmetric. In the case where the keys are symmetric
  396.    they are always shared between the targetAEF and its KDS.
  397.    
  398.    Initiators may also possess symmetric or asymmetric keys. In the
  399.    case where an initiator possesses a symmetric key it is a temporary 
  400.    key that will have been established as a result of an earlier 
  401.    authentication.
  402.    
  403. 2.2.3.1.  Basic keys and dialogue keys
  404.    
  405.    In SESAME, two separate symmetric keys are established between the
  406.    initiator and target for the purpose of application data protection.
  407.    These are known as the integrity and confidentiality dialogue keys.
  408.    
  409.    Another symmetric key, called the basic key, is established
  410.    between the initiator and targetAEF which is used in PAC
  411.    protection and to derive the dialogue keys.
  412.    
  413.    The basic key is transmitted from the initiator to the target in
  414.    a structure called a TargetKeyBlock. The information required to
  415.    derive the dialogue keys is transmitted in a structure called a
  416.    DialogueKeyPackage.
  417.    
  418. 2.2.3.2.  Basic symmetric key distribution scheme (symmIntradomain)
  419.    
  420.    In this scheme, the initiator shares a temporary secret key with 
  421.    the KDS and the target AEF shares a long term secret key with the 
  422.    same KDS.
  423.    
  424.    To establish a basic key between an initiator and a targetAEF,
  425.    the initiator KDS returns, as a result of an initiator request, a
  426.    targetKeyBlock containing a basic key encrypted under the
  427.    targetAEF's long term secret key. On receipt of the targetKeyBlock,
  428.    the targetAEF can extract the basic key directly from it.
  429.   
  430.  
  431. Baize, Farrell, Parker     Document Expiration: 22 May 1997    [Page 7]
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439. internet-draft                                       November 22, 1996
  440.  
  441.    An unmodified Kerberos TGS is used as the KDS in this case.
  442.    
  443. 2.2.3.3.  Hybrid key distribution scheme (hybridInterdomain)
  444.    
  445.    In this scheme, the initiator shares a temporary secret key with 
  446.    a KDS that is different from the KDS with which the targetAEF shares
  447.    its long term key. In addition, each KDS possesses an asymmetric key 
  448.    pair.
  449.    
  450.    To establish a basic key between an initiator and a targetAEF,
  451.    the initiator KDS returns, as a result of an initiator request, a
  452.    TargetKeyBlock containing a basic key encrypted under a temporary
  453.    key and the temporary key encrypted under the targetAEF KDS's
  454.    public key. The TargetKeyBlock is signed using the initiator
  455.    KDS's private key.
  456.    
  457.    On receipt of the TargetKeyBlock, the targetAEF transmits it to
  458.    its own KDS, and gets back the basic key encrypted under the long
  459.    term secret key it (the targetAEF) shares with its KDS.
  460.    
  461.    A modified Kerberos TGS can be used as the KDS in this case.
  462.    
  463. 2.2.3.4.  Full public key distribution scheme (asymmetric)
  464.    
  465.    In this scheme, neither the initiator nor the targetAEF uses a
  466.    KDS. Both the initiator and the targetAEF possesses a
  467.    private/public key pair.
  468.    
  469.    To establish a basic key with a targetAEF, the initiator
  470.    constructs a TargetKeyBlock containing a basic key encrypted
  471.    under the targetAEF's public key. The TargetKeyBlock is signed
  472.    using the initiator's private key.
  473.    
  474.    On receipt of the TargetKeyBlock, the targetAEF directly
  475.    establishes a basic key from it.
  476.    
  477.    Modified SPKM code can be used for this scheme.
  478.    
  479. 2.2.3.5.  Derivation of Dialogue Keys
  480.    
  481.    Once a basic key has been established between the initiator and
  482.    targetAEF, the derivation of the dialogue keys can take place.
  483.    The dialogue keys are derived using key offsetting - see the
  484.    description of the dialogue key package below.
  485.    
  486. 2.2.4.  Use of Cryptography in SESAME
  487.    
  488.    In several countries of the world the use of cryptography is
  489.    subject to government control, particularly in relation to the
  490.    hiding of information by enciphering it.
  491.   
  492.  
  493. Baize, Farrell, Parker     Document Expiration: 22 May 1997    [Page 8]
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501. internet-draft                                       November 22, 1996
  502.  
  503.    The SESAME architecture has been designed to address these
  504.    problems. The use of confidentiality is kept to a minimum. It is
  505.    provided only where it is an essential function (for example in
  506.    the SESAME key distribution protocols it is necessary to encipher
  507.    the basic key being distributed). PACs are cryptographically
  508.    signed, not enciphered. When encipherment of user and system data
  509.    is a requirement, SESAME allows the algorithms and keys used to
  510.    be separately specified, permitting them to have characteristics
  511.    acceptable to the prevailing political environment.
  512.    
  513. 3.  GSS-API TOKEN FORMATS
  514.    
  515. 3.1.  Token framings
  516.    
  517.    All tokens including context-establishment tokens, per-message 
  518.    tokens, and context-deletion token are enclosed within framing as 
  519.    follows:
  520.    
  521.    Token ::= [APPLICATION 0] IMPLICIT SEQUENCE {
  522.       thisMech      MechType, -- the OBJECT IDENTIFIER specified below
  523.       innerContextToken ANY DEFINED BY thisMech
  524.    }
  525.    
  526.    The SESAME mechanism type is identified by an OBJECT IDENTIFIER
  527.    with value:
  528.    
  529.    { generic-sesame-mech (v) (y) (z) }
  530.    
  531.    Where:
  532.    
  533.    generic-sesame-mech ::= OBJECT IDENTIFIER 
  534.  
  535.    iso.org.icd-ecma.technical-report.security-in-open-systems.
  536.    authentication-machanism {1.3.12.1.46.1}
  537.    
  538.    The value v represents the version of the mechanism. The current 
  539.    version is version 5. The current oid is therefore:
  540.    {1.3.12.1.46.1.5}
  541.    
  542.    The values of y and z represent architectural options and
  543.    cryptographic algorithm profiles which are specified in section 5.
  544.    These values are intended to be negotiated using a generic GSS-API
  545.    mechanism negotiation scheme like that given in [SNEGO].
  546.    
  547.    The innerContextToken field of context establishment tokens for
  548.    the SESAME GSS-API mechanism will consist of a SESAME token
  549.    (InitialContextToken, TargetResultToken, ErrorToken) containing a
  550.    token identifier (tokenId) field having the value 01 00 (hex) for
  551.    InitialContextToken, 02 00 (hex) for TargetResultToken, and 03 00
  552.    (hex) for ErrorToken. These are defined to be:
  553.   
  554.  
  555. Baize, Farrell, Parker     Document Expiration: 22 May 1997    [Page 9]
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563. internet-draft                                       November 22, 1996
  564.  
  565.    InitialContextToken   sent by the initiator to a target, to start
  566.                          the process of establishing a Security
  567.                          Association. Returned by the
  568.                          GSS_Init_sec_context call.
  569.    
  570.    TargetResultToken     sent to the initiator by the target
  571.                          following receipt of an Initial Context
  572.                          Token. Returned by the
  573.                          GSS_Accept_sec_context call.
  574.    
  575.    ErrorToken            sent by target on detection of an error
  576.                          during Security Association establishment.
  577.                          Returned by either the GSS_Init_sec_context
  578.                          call or the GSS_Accept_sec_context call.
  579.    
  580.    The innerContextToken field of context-deletion token for the
  581.    SESAME GSS-API mechanism will consist of a SESAME token
  582.    (ContextDeleteToken) containing a tokenId field having the value
  583.    01 02 (hex). This is defined to be:
  584.    
  585.    ContextDeleteToken    sent either by the initiator, or the target
  586.                          to release a Security Association. Returned
  587.                          by GSS_Delete_sec_context.
  588.    
  589.    The innerContextToken field of per-message tokens for the SESAME
  590.    GSS-API mechanism will consist of a token (MICToken, WrapToken) 
  591.    containing a tokenId field having the value 01 01 (hex) for 
  592.    MICToken, and 02 01 (hex) for WrapToken. These are defined to be:
  593.    
  594.    MICToken              sent either by the initiator or the target
  595.                          to verify the integrity of the user data
  596.                          sent separately. Returned by GSS_GetMIC.
  597.    
  598.    WrapToken             sent either by the initiator or the target.
  599.                          Encapsulates the input user data
  600.                          (optionally encrypted) along with integrity
  601.                          check values. Returned by GSS_Wrap.
  602.    
  603. 3.2.  InitialContextToken format
  604.    
  605.    InitialContextToken ::=  SEQUENCE{
  606.      ictContents    [0]   ICTContents,
  607.      ictSeal        [1]   Seal
  608.    }
  609.    
  610.    ictContents
  611.    Body of the initial context token
  612.    
  613.    ictSeal
  614.    Seal of ictContents computed with the integrity dialogue key.
  615.    Only the sealValue field of the Seal data structure is present.
  616.    The cryptographic algorithms that apply are specified by
  617.  
  618. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 10]
  619.  
  620.  
  621.  
  622.  
  623.  
  624.  
  625.  
  626. internet-draft                                       November 22, 1996
  627.  
  628.    integDKUseInfo in the dialogueKeyBlock field of the targetAEFPart 
  629.    from the initial context token.
  630.    
  631.    ICTContents ::=  SEQUENCE {
  632.      tokenId              [0]   INTEGER, -- shall contain X'0100'
  633.      SAId                 [1]   OCTET STRING,
  634.      targetAEFPart        [2]   TargetAEFPart,
  635.      targetAEFPartSeal    [3]   Seal,
  636.      contextFlags         [4]   BIT STRING {
  637.                                  delegation          (0),
  638.                                  mutual-auth         (1),
  639.                                  replay-detect       (2),
  640.                                  sequence            (3),
  641.                                  conf-avail          (4),
  642.                                  integ-avail         (5)
  643.                               }
  644.      utcTime              [5]   UTCTime       OPTIONAL,
  645.      usec                 [6]   INTEGER       OPTIONAL,
  646.      seq-number           [7]   INTEGER       OPTIONAL,
  647.      initiatorAddress     [8]   HostAddress   OPTIONAL,
  648.      targetAddress        [9]   HostAddress   OPTIONAL
  649.         -- imported from [Kerberos] and used as channel bindings
  650.    }
  651.    
  652.    tokenId
  653.    Identifies the initial-context token. Its value is 01 00 (hex)
  654.    
  655.    SAId
  656.    A  random number for identifying the Security Association being
  657.    formed; it is one which (with high probability) has not been used
  658.    previously. This random number is generated by the initiator GSS-
  659.    API implementation and processed by the target GSS-API
  660.    implementation as follows :
  661.    
  662.    -  If no targetResultToken is expected, the SAId value is taken
  663.        to be the identifier of the Security Association being
  664.        established (if this is unacceptable to the target, then an
  665.        error token with etContents value of
  666.        gss_ses_s_sg_sa_already_established must be generated).
  667.    
  668.    -  If a targetResultToken is expected, the target generates its
  669.        random number and concatenates it to the end on the
  670.        initiator's random number. The concatenated value is then
  671.        taken to be the identifier of the Security Association being
  672.        established.
  673.    
  674.    targetAEFPart
  675.    Part of the initial-context token to be passed to the target
  676.    access enforcement function.
  677.    
  678.    targetAEFPartSeal
  679.    Seal of the targetAEFPart computed with the basic key. Only the
  680.  
  681. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 11]
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689. internet-draft                                       November 22, 1996
  690.  
  691.    sealValue field of the Seal data structure is present. The
  692.    cryptographic algorithms that apply are specified by algorithm
  693.    profile in the SESAME mechanism option (see section 6).
  694.    
  695.    contextFlags
  696.    Combination of flags that indicates context-level functions
  697.    requested by the GSS-API initiator implementation.
  698.    
  699.    delegation        when set to 0, indicates that the initiator
  700.                      explicitly forbids delegation of the PAC in the
  701.                      targetAEFPart.
  702.    
  703.    mutual-auth       indicates that mutual authentication is
  704.                      requested.
  705.    
  706.    replay-detect     indicates that replay detection features are
  707.                      requested to be applied to messages transferred
  708.                      on the established Security Association.
  709.    
  710.    sequence          indicates that sequencing features are
  711.                      requested to be enforced to messages
  712.                      transferred on the established Security
  713.                      Association.
  714.    
  715.    conf-avail        indicates that a confidentiality service is
  716.                      available on the initiator side for the
  717.                      established Security Association.
  718.    
  719.    integ-avail      indicates that an integrity service is
  720.                      available on the initiator side for the
  721.                      established Security Association.
  722.    
  723.    utcTime
  724.    The initiator's UTC time.
  725.    
  726.    usec
  727.    Microsecond part of the initiator's time stamp. This field along
  728.    with utcTime are used together to avoid collision between tokens 
  729.    generated by two initiators at the same time. This field enables a 
  730.    simple scheme for replay detection of initial tokens to be 
  731.    supported. 
  732.    
  733.    seq-number
  734.    When present, specifies the initiator's initial sequence number.
  735.    Otherwise, the default value of 0 is to be used as an initial
  736.    sequence number.
  737.    
  738.    initiatorAddress
  739.    Initiator's network address part of the channel bindings. This
  740.    field is only present when channel bindings are transmitted by
  741.    the GSS-API caller to the SESAME GSS-API implementation.
  742.  
  743. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 12]
  744.  
  745.  
  746.  
  747.  
  748.  
  749.  
  750.  
  751. internet-draft                                       November 22, 1996
  752.  
  753.    
  754.    targetAddress
  755.    Target's network address part of the channel bindings. This field
  756.    is only present when channel bindings are transmitted by the GSS-
  757.    API caller to the SESAME GSS-API implementation.
  758.    
  759.    TargetAEFPart ::=  SEQUENCE {
  760.      pacAndCVs          [0]   SEQUENCE OF CertandECV OPTIONAL,
  761.      targetKeyBlock     [1]   TargetKeyBlock,
  762.      dialogueKeyBlock   [2]   DialogueKeyBlock,
  763.      targetIdentity     [3]   SecurityAttribute,
  764.      flags              [4]   BIT STRING   {
  765.                                 delegation         (0)
  766.                             }
  767.    }
  768.    
  769.          Note 1:  Individual PACs have validity of their own, thus 
  770.                   it is not sensible to have an overall separately 
  771.                   specified validity period for the whole context.
  772.    
  773.    pacAndCVs
  774.    The initiator's privileges and security attributes to be used for 
  775.    this Security Association. This field is not present when the 
  776.    association does not require initiator privileges or security 
  777.    attributes. This field contains the PAC together with associated 
  778.    PAC protection information. In this specification exactly one of 
  779.    these should be present.
  780.    
  781.    targetKeyBlock
  782.    The targetKeyBlock carrying the basic key to be used for the
  783.    Security Association being established.
  784.    
  785.    dialogueKeyBlock
  786.    A dialogue key block used by the targetAEF along with the basic
  787.    key to establish an integrity dialogue key and a confidentiality
  788.    dialogue key for per-message protection over the Security
  789.    Association being established.
  790.    
  791.    targetIdentity
  792.    The identity of the intended target of the Security Association.
  793.    Used by the targetAEF to validate the PAC. Can also be used by
  794.    the targetAEF to help protect the delivery of dialogue keys.
  795.    
  796.    flags
  797.    flags required by the Target AEF for its validation process. Only
  798.    contains a delegation flag, the value of which is the same as the
  799.    value of delegation flag in contextFlag field of ictContents.
  800.    When the flag is set, all ECVs sent in pacAndCVs are made
  801.    available to the target. Other bits are reserved for future use.
  802.    
  803.  
  804.    The Seal structure is used in this Token and other tokens.
  805.   
  806. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 13]
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814. internet-draft                                       November 22, 1996
  815.  
  816.    Seal ::=  SEQUENCE{
  817.      sealValue          [0]   BIT STRING,
  818.      symmetricAlgId     [1]   AlgorithmIdentifier        OPTIONAL,
  819.      hashAlgId          [2]   AlgorithmIdentifier        OPTIONAL,
  820.      targetName         [3]   SecurityAttribute          OPTIONAL,
  821.      keyId              [4]   INTEGER                    OPTIONAL
  822.    }
  823.    
  824.    sealValue
  825.    The value of the seal. It is the result of a symmetric encryption
  826.    of a hash value of a set of octets (which are the DER encoding of
  827.    some ASN.1 type)
  828.    
  829.    symmetricAlgId
  830.    An optional indicator of the sealing algorithm.
  831.    
  832.    hashAlgId
  833.    Only present if the symmetricAlgId does not specify which hashing
  834.    algorithm is used.
  835.    
  836.    targetName
  837.    This field identifies the targetAEF or target with which the
  838.    symmetric key used for the seal is shared.
  839.    
  840.    keyId
  841.    This serial number together with the targetName uniquely
  842.    identifies the symmetric key used in the seal.
  843.    
  844.    
  845. 3.3.  TargetResultToken
  846.    
  847.    This token is returned by the target if the mutual-req flag is set
  848.    in the Initial Context Token. It serves to authenticate the target
  849.    to the initiator, since only the genuine target could derive the
  850.    integrity dialogue key needed to seal the TargetResultToken.
  851.   
  852.    TargetResultToken ::=   SEQUENCE{
  853.      trtContents    [0] TRTContents,
  854.      trtSeal        [1] Seal
  855.    }
  856.    
  857.    TRTContents ::=  SEQUENCE {
  858.      tokenId        [0]   INTEGER,    -- shall contain X'0200'
  859.      SAId           [1]   OCTET STRING,
  860.      utcTime        [5]   UTCTime        OPTIONAL,
  861.      usec           [6]   INTEGER        OPTIONAL,
  862.      seq-number     [7]   INTEGER        OPTIONAL,
  863.    }
  864.    
  865.    trtContents
  866.    This contains only administrative fields, identifying the token
  867.    type, the context and providing exchange integrity.
  868.  
  869. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 14]
  870.  
  871.  
  872.  
  873.  
  874.  
  875.  
  876.  
  877. internet-draft                                       November 22, 1996
  878.  
  879.          seq-number
  880.          When present, specifies the target's initial sequence
  881.          number, otherwise, the default value of 0 is to be used as
  882.          an initial sequence number.
  883.          
  884.    The other administrative fields are as described in above.
  885.    
  886.    trtSeal
  887.    Seal of trtContents computed with the integrity dialogue key.
  888.    Only the sealValue field of the Seal data structure is present.
  889.    The cryptographic algorithms that apply are specified by
  890.    integDKUseInfo in the dialogueKeyBlock field of the targetAEFPart 
  891.    from the initial context token.
  892.    
  893. 3.4.  ErrorToken
  894.    
  895.    ErrorToken ::= SEQUENCE {
  896.       tokenType     [0]   OCTET STRING VALUE X'0300',
  897.       etContents    [1]   ErrorArgument,
  898.    }
  899.    
  900.    etContents
  901.    Contains the reason for the creation of the error token. The
  902.    different reasons are given as minor status return values.
  903.    
  904.    ErrorArgument ::=  ENUMERATED {
  905.      gss_ses_s_sg_server_sec_assoc_open               (1),
  906.      gss_ses_s_sg_incomp_cert_syntax                  (2),
  907.      gss_ses_s_sg_bad_cert_attributes                 (3),
  908.      gss_ses_s_sg_inval_time_for_attrib               (4),
  909.      gss_ses_s_sg_pac_restrictions_prob               (5),
  910.      gss_ses_s_sg_issuer_problem                      (6),
  911.      gss_ses_s_sg_cert_time_too_early                 (7),
  912.      gss_ses_s_sg_cert_time_expired                   (8),
  913.      gss_ses_s_sg_invalid_cert_prot                   (9),
  914.      gss_ses_s_sg_revoked_cert                        (10),
  915.      gss_ses_s_sg_key_constr_not_supp                 (11),
  916.      gss_ses_s_sg_init_kd_server_ unknown             (12),
  917.      gss_ses_s_sg_init_unknown                        (13),
  918.      gss_ses_s_sg_alg_problem_in_dialogue_key_block   (14),
  919.      gss_ses_s_sg_no_basic_key_for_dialogue_key_block (15),
  920.      gss_ses_s_sg_key_distrib_prob                    (16),
  921.      gss_ses_s_sg_invalid_user_cert_in_key_block      (17),
  922.      gss_ses_s_sg_unspecified                         (18),
  923.      gss_ses_s_g_unavail_qop                          (19),
  924.      gss_ses_s_sg_invalid_token_format                (20)
  925.    }
  926.    
  927. 3.5.  Per Message Token formats
  928.    
  929.    The syntax of the Per Message Token has the same general
  930.    structure for both MIC and Wrap tokens:
  931.   
  932. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 15]
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.  
  940. internet-draft                                       November 22, 1996
  941.  
  942.    PMToken ::=   SEQUENCE{
  943.      pmtContents    [0]   PMTContents,
  944.      pmtSeal        [1]   Seal
  945.         -- seal over the pmtContents being protected
  946.    }
  947.    
  948.    PMTContents ::=  SEQUENCE {
  949.      tokenId              [0]   INTEGER, -- shall contain X'0101' 
  950.                                          -- for a MIC token and 
  951.                                          -- X'0201' for a Wrap token.
  952.  
  953.      SAId                 [1]   OCTET STRING,
  954.      seq-number           [2]   INTEGER
  955.    OPTIONAL,
  956.      userData             [3]   CHOICE {
  957.                                 plaintext      OCTET STRING,
  958.                                 ciphertext     OCTET STRING
  959.                         }                              OPTIONAL,
  960.      directionIndicator   [4]   BOOLEAN                OPTIONAL
  961.    }
  962.    
  963.    pmtContents
  964.          
  965.          tokenId
  966.          SAId
  967.          See above for a description of these fields
  968.          
  969.          seq-number
  970.          This field must be present if replay detection or message
  971.          sequencing have been specified as being required at
  972.          Security Association initiation time. The field contains a
  973.          message sequence number whose value is incremented by one
  974.          for each message in a given direction, as specified by
  975.          directionIndicator. The first message sent by the initiator
  976.          following the InitialContextToken shall have the message
  977.          sequence number specified in that token, or if this is
  978.          missing, the value 0. The first message returned by the
  979.          target shall have the message sequence number specified in
  980.          the TargetReplyToken if present, or failing this, the value
  981.          0.
  982.          The receiver of the token will verify the sequence number
  983.          field by comparing the sequence number with the expected
  984.          sequence number and the direction indicator with the
  985.          expected direction indicator. If the sequence number in the
  986.          token is higher than the expected number, then the expected
  987.          sequence number is adjusted and GSS_S_GAP_TOKEN is
  988.          returned. If the token sequence number is lower than the
  989.          expected number, then the expected sequence number is not
  990.          adjusted and GSS_S_DUPLICATE_TOKEN or GSS_S_OLD_TOKEN is
  991.          returned, whichever is appropriate. If the direction
  992.          indicator is wrong, then the expected sequence number is
  993.          not adjusted and GSS_S_UNSEQ_TOKEN is returned
  994.  
  995. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 16]
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003. internet-draft                                       November 22, 1996
  1004.  
  1005.          
  1006.          userData
  1007.          See specific token type narratives below.
  1008.          
  1009.          directionIndicator
  1010.          FALSE indicates that the sender is the context initiator,
  1011.          TRUE that the sender is the target.
  1012.          
  1013.    pmtSeal
  1014.    See specific token type narratives below.
  1015.    
  1016. 3.5.1.  MICToken
  1017.    
  1018.    Use of the GSS_Get_MIC() call yields a per-message token,
  1019.    separate from the user data being protected, which can be used to
  1020.    verify the integrity of that data as received. The token and the
  1021.    data may be sent separately by the sending application and it is
  1022.    the receiving application's responsibility to associate the
  1023.    received data with the received token. The syntax of the token
  1024.    is:
  1025.    
  1026.       MICToken  ::=  PMToken
  1027.    
  1028.    The overall structure and field contents of the token are
  1029.    described above. Fields specific to the MICToken are:
  1030.    
  1031.    userData
  1032.    Not present for MIC Tokens.
  1033.    
  1034.    pmtSeal
  1035.    The Checksum is calculated over the DER encoding of the
  1036.    pmtContents field with the user data temporarily placed in the
  1037.    userData field. The userData field is not transmitted.
  1038.    
  1039.    
  1040. 3.5.2.  WrapToken
  1041.    
  1042.    Use of the GSS_Wrap() call yields a token which encapsulates the
  1043.    input user data (optionally encrypted) along with associated
  1044.    integrity check values. The token emitted by GSS_Wrap() consists
  1045.    of an integrity header followed by a body portion that contains
  1046.    either the plaintext data (if conf_alg == NULL) or encrypted data.
  1047.    The syntax of the token is:
  1048.    
  1049.       WrapToken  ::=    PMToken
  1050.    
  1051.    The overall structure and field contents of the token are
  1052.    described above. Fields specific to the WrapToken are:
  1053.    
  1054.    userData
  1055.    Present either in plain text form (the choice is plaintext), or
  1056.    encrypted (choice ciphertext). If the data is encrypted, it is
  1057.  
  1058. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 17]
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066. internet-draft                                       November 22, 1996
  1067.  
  1068.    performed using the Confidentiality Dialogue Key, and as in
  1069.    [Kerberos], an 8-byte random confounder is first prepended to the
  1070.    data to be encrypted.
  1071.    
  1072.    pmtSeal
  1073.    The Checksum is calculated over the pmtContents field, including
  1074.    the userData. However if the userData field is to be encrypted,
  1075.    the seal value is computed prior to the encryption.
  1076.    
  1077. 3.6  ContextDeleteToken format
  1078.    
  1079.    The ContextDeleteToken is issued by either the context initiator
  1080.    or the target to indicate to the other party that the context is
  1081.    to be deleted.
  1082.    
  1083.    ContextDeleteToken ::=   SEQUENCE {
  1084.      cdtContents  [0]   CDTContents,
  1085.      cdtSeal      [1]   Seal
  1086.                           -- seal over cdtContents, encrypted
  1087.                           -- under the Integrity Dialogue Key
  1088.                           -- contains only the sealValue field
  1089.    }
  1090.    
  1091.    CDTContents ::=  SEQUENCE {
  1092.      tokenType    [0]   OCTET STRING VALUE X'0301',
  1093.      SAId         [1]   OCTET STRING,
  1094.      utcTime      [2]   UTCTime OPTIONAL,
  1095.      usec         [3]   INTEGER OPTIONAL,
  1096.      seq-number   [4]   INTEGER OPTIONAL,
  1097.    }
  1098.    
  1099.    cdtContents
  1100.    This contains only administrative fields, identifying the token
  1101.    type, the context and providing exchange integrity.
  1102.    
  1103.          seq-number
  1104.          When present, this field contains a value one greater than
  1105.          that of the seq-number field of the last token issued from
  1106.          this issuer. 
  1107.  
  1108.          The other administrative fields are as described
  1109.          above.
  1110.          
  1111.    cdtSeal
  1112.    See above for a general description of the use of this construct.
  1113.    
  1114. 4.  DATA ELEMENT DEFINITIONS
  1115.    
  1116.    In this section we give the details of the structures which are
  1117.    present in the tokens defined above.
  1118.    
  1119.    These ASN.1 definitions represent the profile of the ASN.1 types
  1120.  
  1121. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 18]
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129. internet-draft                                       November 22, 1996
  1130.  
  1131.    defined in [ECMA-219] which are implemented in the SESAME
  1132.    project. In some cases CHOICEs and OPTIONAL fields which are
  1133.    defined by ECMA have been omitted as they are not supported in
  1134.    this version of SESAME. In order to retain compatibility this
  1135.    leads to a non-obvious numbering for tags.
  1136.    
  1137.    In this specification all of the type specifying object
  1138.    identifiers are below the arc:
  1139.    
  1140.    generic-sesame-mech ::=  OBJECT IDENTIFIER {1.3.12.1.46}
  1141.       -- top of the SESAME types arc
  1142.    
  1143.    
  1144. 4.1.  Access Control Data Elements
  1145.    
  1146.    The ASN.1 definitions for the PAC and related data structures. The full 
  1147.    ASN.1 specification can be found in [ECMA-219] and in Annex A.
  1148.    
  1149. 4.1.1.  Generalised certificate (GeneralisedCertificate)
  1150.    
  1151.    A Generalised Certificate (PAC) consists of a certificateBody and 
  1152.    checkValue, the latter containing a digital signature applied to 
  1153.    the former. The CertificateBody is formed of two parts: 
  1154.    a commonContents and a specificContents part.
  1155.    
  1156.    The "commonContents" fields collectively serve to provide
  1157.    generally required management and control over the use of the
  1158.    PAC.
  1159.    
  1160.    The "specificContents" fields are different for different types
  1161.    of certificate, and contain a type identifier to indicate the
  1162.    type. In this specification only one type is defined: the Privilege
  1163.    Attribute Certificate (PAC).
  1164.    
  1165.    The "checkValue" fields are used to guarantee the origin of the
  1166.    certificate.
  1167.  
  1168.    The next sections describe these three main structural components
  1169.    of the Generalised Certificate.
  1170.    
  1171. 4.1.1.1.  Common Contents fields (CommonContents)
  1172.    
  1173. The common contents field of the PAC is made of the following fields:
  1174.      
  1175.    comConSyntaxVersion
  1176.    Identifies the version of the syntax of the combination of the
  1177.    commonContents and the checkValue fields parts of the
  1178.    certificate.
  1179.    
  1180.    issuerDomain
  1181.    The security domain of the issuing authority. Not required if the
  1182.    form of issuerIdentity is a full distinguished name, but required
  1183.  
  1184. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 19]
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192. internet-draft                                       November 22, 1996
  1193.  
  1194.    if other forms of naming are in use, such as proprietary
  1195.    identifiers.
  1196.    
  1197.    issuerIdentity
  1198.    The identity of the issuing authority for the certificate.
  1199.    
  1200.    serialNumber
  1201.    The serial number of the certificate (PAC) as allocated by the
  1202.    issuing authority.
  1203.    
  1204.    creationTime
  1205.    The UTC time that the certificate was created, according to the
  1206.    authority that created it.
  1207.    
  1208.    validity
  1209.    A pair of start and end times within which the certificate is
  1210.    deemed to be valid.
  1211.    
  1212.    algId
  1213.    The identifier of the symmetric or of the asymmetric
  1214.    cryptographic algorithm used to seal or to sign the certificate.
  1215.    If there is a single identifier for both the encryption algorithm
  1216.    and the hash function, it appears in this field.
  1217.    
  1218.    hashAlgId
  1219.    The identifier of the hash algorithm used in the seal or in the
  1220.    signature.
  1221.    
  1222. 4.1.1.2.  PAC Specific Certificate Contents (PACSpecificContents)
  1223.    
  1224. The specific contents field of the PAC is made of the following fields:
  1225.    
  1226.    The pacSyntaxVersion is defaulted.
  1227.    
  1228.    protectionMethods
  1229.    A sequence of optional groups of Method fields used to protect the
  1230.    certificate from being stolen or misused. For a full description 
  1231.    see section 4.1.3.
  1232.    
  1233.       The pacType is defaulted.
  1234.    
  1235.    privileges
  1236.    Privilege Attributes of the principal in the form of security 
  1237.    attributes. For a full description ofsecurity attributes see 
  1238.    section 4.1.2.
  1239.   
  1240.    restrictions
  1241.    not supported in SESAME V5 - see [ECMA-219] for a full description.
  1242.  
  1243.    miscellaneousAtts
  1244.    Attributes that are neither privilege attributes nor restrictions. 
  1245.    Audit identity is one such attribute.
  1246.   
  1247. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 20]
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255. internet-draft                                       November 22, 1996
  1256.  
  1257.    TimePeriods
  1258.    further time period restriction over and above that specified in 
  1259.    commonContents.
  1260.  
  1261. 4.1.1.3.  Check value (CheckValue)
  1262.    
  1263.    In this specification a PAC is protected by being digitally
  1264.    signed by the issuer.
  1265.    
  1266.    A signature may be accompanied by information identifying the
  1267.    Certification Authority under which the signature can be
  1268.    verified, and with an optional convenient reference to or the
  1269.    actual value of the user certificate for the private key that the
  1270.    signing authority used to sign the certificate.
  1271.    
  1272. A signature is composed of the following fields:
  1273.    
  1274.    signatureValue
  1275.    The value of the signature. It is the result of an asymmetric
  1276.    encryption of a hash value of the certificateBody.
  1277.    
  1278.    issuerCAName
  1279.    The identity of the Certification Authority that has signed the
  1280.    user certificate corresponding to the private key used to sign
  1281.    this certificate.
  1282.    
  1283.    caCertInformation
  1284.    Contains either just a certificate serial number which together
  1285.    with the issuerCAName uniquely identifies the user certificate
  1286.    corresponding to the private key used to sign this certificate,
  1287.    or a full specification of a certification path via which the
  1288.    validity of the signature can be verified. The latter option
  1289.    follows the approach used in [ISO/IEC 9594-8].
  1290.    
  1291. 4.1.2.  Security Attributes (SecurityAttribute)
  1292.    
  1293.    The security attribute is a basic construct made up of :
  1294.    
  1295.    attributeType
  1296.    Defines the type of the attribute. Attributes of the same type
  1297.    have the same semantics when used in Access Decision Functions,
  1298.    though they may have different defining authorities.
  1299.    
  1300.    definingAuthority
  1301.    Indicates the authority responsible for defining the value 
  1302.    within the attribute type. Some policies demand that multiple 
  1303.    sources of values for a given attribute type be supported (e.g. a 
  1304.    policy accepting attribute values defined outside the security 
  1305.    domain), These policies give rise to a risk of value clashes. The 
  1306.    definingAuthority field is used to separate these values. When not 
  1307.    present, the value defaults to the name of the authority that
  1308.    issued the certificate containing the attribute.
  1309.  
  1310. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 21]
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318. internet-draft                                       November 22, 1996
  1319.  
  1320.    
  1321.    securityValue
  1322.    The value of the security attribute. Its syntax is can be either
  1323.    one of the basic syntaxes for attributes or a more complex one
  1324.    determined by the attribute type.
  1325.    
  1326. 4.1.3.  Protection Methods
  1327.    
  1328.    Protection methods are grouped in methodGroups. See section 4.1.3.5 
  1329.    for the significance of these groups. Protection methods are formed 
  1330.    as a combination of methodId and methodParams. The methodParams are 
  1331.    formed as a sequence of Mparm constructs. Each methodId determines
  1332.    a syntax for Mparm.
  1333.    
  1334.    methodId
  1335.    Identifies a protection method. Methods can be used in any 
  1336.    combination, and except where stated otherwise, multiple occurrences
  1337.    of the same method are permitted. The choice of methodId determines 
  1338.    the permitted choices of method parameters in the methodParams 
  1339.    construct .
  1340.    
  1341.    methodParams
  1342.    Parameters for a protection method formed as a sequence of 
  1343.    individual method parameter constructs (Mparm). 
  1344.    
  1345. There are four basic protection methods, as described below.
  1346.    
  1347. 4.1.3.1.  "Control/Protection Values" protection method
  1348.    
  1349.    This is known as the CV/PV method. A patent from Bull applies to 
  1350.    this method (see section 9).
  1351.    
  1352.    This method allows a PAC to be used by proxy while at the same time 
  1353.    preventing it from being stolen by an eavesdropper. The PAC can be 
  1354.    forwarded to any target or group of targets. The owner of the PAC 
  1355.    need not know in advance. But if this information is known, use of 
  1356.    the PAC can be confined to any nominated target or group of targets.
  1357.    Ownership of a PAC can be proven by presenting a CV value which 
  1358.    matches a public value contained in the PAC. The two values must 
  1359.    relate through the relationship: PV = OWF (CV), where OWF is a one 
  1360.    way collision resistant hash function. Unless otherwise specified, 
  1361.    the one-way function that is used for this method is MD5.
  1362.      
  1363.    The MethodId for this is: controlProtectionValues
  1364.    
  1365.    The syntax choice of Mparm for this method is: pValue.
  1366.  
  1367.    A maximum of one PV method is permitted in each method group. More 
  1368.    than one method group can be specified, each containing a PV.
  1369.    
  1370.    Associated with each PV is a certificate Control Value (CV)
  1371.  
  1372.  
  1373. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 22]
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381. internet-draft                                       November 22, 1996
  1382.  
  1383.    external to the certificate. The CVs are carried encrypted in the 
  1384.    ECV construct.
  1385.    
  1386.    When the client sends a PAC to a targetAEF, one or more CVs
  1387.    are also sent encrypted under the basic key used to communicate
  1388.    with the target AEF. The targetAEF knows the one-way function and 
  1389.    therefore is able to verify that the client knows a CV which 
  1390.    corresponds to a PV in the certificate. If the other controls in 
  1391.    the PV's method group are passed, the PAC is acceptable under this 
  1392.    method group.
  1393.    
  1394.    The targetAEF now knows the value of the CVs that have been sent
  1395.    to it, and can make available one or more of the values to the 
  1396.    infrastructure supporting that application for forwarding with the 
  1397.    certificate to other applications. By including target qualification
  1398.    controls in the method group, proxy can be confined to nominated 
  1399.    target applications. One use for this might be, for example, all of 
  1400.    the application servers in a distributed service.
  1401.    
  1402. 4.1.3.2.  "Primary Principal Qualification" protection method
  1403.    
  1404.    This is known as the PPID (Primary Principal IDentifier) method. 
  1405.    A patent from ICL applies to this method.
  1406.  
  1407.    The MethodId for this is: ppQualification
  1408.    
  1409.    This method protects the certificate from being stolen, by confining
  1410.    its use to be from one or more nominated "Primary Principals" as 
  1411.    defined in [ECMA-219]. In its most restrictive form it permits a 
  1412.    certificate to be used only from the Primary Principal of the client
  1413.    entity to which it was originally issued, preventing delegation of 
  1414.    the certificate. However it can also be used to permit delegation, 
  1415.    when the required attributes of the proxy application are precisely
  1416.    known in advance. The method by itself does not limit the number of 
  1417.    target applications at which a PAC might be accepted. However, by 
  1418.    including separate target qualification controls in the method 
  1419.    group, delegation can be confined to nominated target applications.
  1420.    
  1421.    The syntax choice of Mparm for this method is : securityAttribute
  1422.    
  1423.    A sequence of Mparm constructs is permissible, resulting in multiple
  1424.    nominated Primary Principals being capable of being permitted.
  1425.    
  1426.    At least one of these attributes must be possessed by any Primary 
  1427.    Principal from which this certificate is to be validly used if the 
  1428.    PAC is to be accepted under this method. When a targetAEF receives 
  1429.    such a certificate, it is responsible for comparing these attributes
  1430.    with attributes placed within the targetKeyBlock construct and 
  1431.    associated with the initiating Primary Principal.
  1432.    
  1433.    When a symmetric key distribution scheme is in use the attribute 
  1434.    values are placed in the target key block by the trusted server
  1435.  
  1436. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 23]
  1437.  
  1438.  
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444. internet-draft                                       November 22, 1996
  1445.  
  1446.    (the KDS) which created it. If there is no KDS, as in the case of 
  1447.    pure asymmetric key distribution, they are present in the public key
  1448.    certificate of the initiator that is sent with the PAC.
  1449.    
  1450.    The attribute value used here is termed the primary principal
  1451.    identifier (PPID) and takes one of two forms depending on the key
  1452.    distribution scheme used by the initiator. For the symmetric
  1453.    intradomain and hybrid interdomain schemes the PPID takes the
  1454.    form of a random bit string which is also sent in the authorization
  1455.    data field of the Kerberos ticket. For the asymmetric scheme the 
  1456.    PPID is constructed from the certificate serial number and the CA 
  1457.    name for the initiator's X.509 public key certificate.
  1458.    
  1459. 4.1.3.3.  "Target Qualification" protection method
  1460.      
  1461.    The MethodId for this is: targetQualification.
  1462.    
  1463.    This method protects the PAC from misuse by allowing its use only
  1464.    by one or more nominated target applications and at the same time 
  1465.    instructing the target AEF to prevent it from being forwarded.
  1466.    
  1467.    The syntax choice of Mparm for this method is : securityAttribute
  1468.    
  1469.    A sequence of Mparm constructs is permissible, resulting in
  1470.    multiple security attributes being present.
  1471.    
  1472.    Target AEFs receiving such PACs will compare the values found in
  1473.    the PAC with the attributes of the target application. If the
  1474.    target application possesses one of the attributes in one of the
  1475.    occurrences of this method that is present in a method group, the
  1476.    Certificate is deemed to be acceptable under this method in this
  1477.    group but the target AEF is expected not to allow the use of the
  1478.    certificate for access to further target applications.
  1479.    
  1480. 4.1.3.4.  "Delegate/Target Qualification" protection method
  1481.    
  1482.    The MethodId for this is: delegateTargetQualification
  1483.    
  1484.    This method protects the PAC from misuse by confining its validity
  1485.    to one or more nominated target applications and at the same time 
  1486.    instructing the target AEF to allow the PAC to be forwarded.
  1487.    
  1488.    The syntax choice of Mparm for this method is: securityAttribute
  1489.    
  1490.    A sequence of Mparm constructs is permissible, resulting in
  1491.    multiple security attributes being present.
  1492.    
  1493.    The target AEF makes the comparisons described in the previous 
  1494.    section, but if the checks are passed, the nominated target
  1495.    application(s) is/are acceptable as both an accessible target and 
  1496.    as a delegate. The attributes carried by the certificate are valid 
  1497.    at the target application(s) for authentication or access control
  1498.  
  1499. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 24]
  1500.  
  1501.  
  1502.  
  1503.  
  1504.  
  1505.  
  1506.  
  1507. internet-draft                                       November 22, 1996
  1508.  
  1509.    purposes and the target AEF will allow the PAC to be forwarded to
  1510.    further target applications.
  1511.    
  1512. 4.1.3.5.  Combining the methods
  1513.    
  1514.    The general rule for validating a PAC when received by a target AEF
  1515.    is as follows:
  1516.    
  1517.    If the PAC is properly signed by an authority recognised by this
  1518.    targetAEF and is within the valid time periods then the
  1519.    protection methods in each group are tested in turn as described
  1520.    below until one of the groups is passed or the PAC is declared
  1521.    invalid.
  1522.    
  1523.    A method group is passed if it is empty, or if:
  1524.          
  1525.          the PAC is for the nominated target application under any
  1526.          target or delegateTarget qualification method in this group
  1527.          
  1528.          and
  1529.          
  1530.          tests on any ppQualification or controlProtectionValues
  1531.          method in the group succeed. If more than one of these is
  1532.          present, at least one must be passed. If only one is
  1533.          present it must be passed. If none of them is present this
  1534.          last check is not required.
  1535.     
  1536.    If the group that has been passed only validates the certificate
  1537.    for its recipient being a target, then further groups are checked
  1538.    to see if the recipient is also valid as a delegate/target. If,
  1539.    following these additional checks, a recipient is still valid
  1540.    only as a target, the targetAEF is responsible for preventing its
  1541.    use for access to further target applications.
  1542.    
  1543. 4.1.4.  External Control Values Construct (ECV)
  1544.    
  1545.    Whenever the protection controlProtectionValues method is in
  1546.    place, when a PAC protected under that method is being presented
  1547.    as authorisation for an operation, it may be accompanied by one
  1548.    or more control values and indices to the method occurrences in
  1549.    the certificate to which they apply.
  1550.    
  1551.    crypAlgIdentifier
  1552.    This specifies the encryption algorithm of the control values.
  1553.    
  1554.    cValues
  1555.    An ECV construct contains in the encryptedCvalueList field a list 
  1556.    of control values encrypted under the basic key protecting the 
  1557.    operation. The whole list is encrypted in bulk, but the in-clear 
  1558.    contents of this field are expected to have the syntax CValues. 
  1559.    
  1560.    The CValues is composed of a sequence of tuples, each one being
  1561.  
  1562. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 25]
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570. internet-draft                                       November 22, 1996
  1571.  
  1572.    composed of an index of the method occurrence in the certificate, 
  1573.    starting at 1, and the value of the CV.
  1574.    
  1575.    
  1576. 4.2. Basic Key Distribution
  1577.    
  1578.    The TargetKeyBlock is structured as follows:
  1579.    
  1580.    -  an identifier (kdSchemeOID) for the key distribution scheme
  1581.       being used, which takes the form of an OBJECT IDENTIFIER,
  1582.    
  1583.    -  a part which, if present, the target AEF needs to pass on to
  1584.       its KDS (targetKDSPart - will be present only when the target
  1585.       AEF's KDS is different from the initiator's),
  1586.    
  1587.    -  a part which, if present, can be used directly by the target
  1588.       AEF (targetPart).
  1589.    
  1590.    When a targetAEF using a separate KDS receives the
  1591.    targetKeyBlock, it first checks whether it supports the key
  1592.    distribution scheme indicated in kdsSchemeOID. Two different
  1593.    cases need to be considered:
  1594.    
  1595.    1) Only the targetPart is present. The target AEF computes the
  1596.        basic key directly, using the information present in the
  1597.        TargetPart. The syntax of targetPart is scheme dependent.
  1598.        Expiry information can optionally be present in targetPart. If
  1599.        supported by the scheme, the Primary Principal attributes of
  1600.        the initiator will also be present for PAC protection under
  1601.        the Primary Principal Qualification method (see above).
  1602.    
  1603.    2) Only the targetKDSPart is present. The targetAEF forwards
  1604.        TargetKeyBlock to its KDS. In return it receives a scheme
  1605.        dependent data structure which by itself allows the target AEF
  1606.        to determine the basic key and, if supported by the scheme,
  1607.        the Primary Principal attributes of the initiator for PAC
  1608.        protection purposes. Expiry information can optionally be
  1609.        present in the targetKDSPart.
  1610.    
  1611.    The form of this information depends on the key distribution
  1612.    configuration in place.
  1613.    
  1614.    The TargetKeyBlock is composed of the following fields:
  1615.    
  1616.    kdSchemeOID
  1617.    Identifies the key distribution scheme used. Allows the targetAEF
  1618.    to determine rapidly whether or not the scheme is supported. It
  1619.    also allows for the easy addition of future schemes.
  1620.    
  1621.    targetKDSpart
  1622.    Part of the Target Key Block which is processable only by the KDS
  1623.    of the target AEF. This part is sent by the target AEF to its
  1624.  
  1625. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 26]
  1626.  
  1627.  
  1628.  
  1629.  
  1630.  
  1631.  
  1632.  
  1633. internet-draft                                       November 22, 1996
  1634.  
  1635.    local KDS, in order to get the basic key which is in it. It must
  1636.    always contain the name of a target "served" by the targetAEF in
  1637.    question. The mapping between the name of the application and the
  1638.    name of the target AEF is known to the target AEF's KDS which is
  1639.    able to authenticate which target AEF is issuing the request for
  1640.    translating the targetKDSpart. It can then verify that the AEF is
  1641.    one which is responsible for the application name contained in
  1642.    the targetKDSpart. If it is, the key is released and is sent
  1643.    protected back to the requesting AEF. The targetKDSpart 
  1644.    includes data that enables the KDS of the target AEF to
  1645.    authenticate the KDS of the initiator. When the "Primary
  1646.    Principal Qualification" protection method needs to be used for
  1647.    the PAC, unless there is an accompanying targetPart,
  1648.    targetKDSpart contains the appropriate primary principal
  1649.    security attributes.
  1650.    
  1651.    targetPart
  1652.    Part of the Target Key Block which is processed only by the target
  1653.    AEF. When there is no targetKDSpart it is processable directly;
  1654.    otherwise it can only be processed after the targetKDSpart has been
  1655.    processed by the KDS of the target AEF, and the appropriate Keying
  1656.    Information has been returned to the AEF. The targetPart construct
  1657.    should include data that enables the target AEF to authenticate the
  1658.    KDS of the initiator. When the "Primary Principal Qualification" 
  1659.    protection method needs to be used for the PAC, targetPart must 
  1660.    contain the primary principal security attributes.
  1661.    
  1662.    The following table shows the different syntaxes used for
  1663.    targetKDSpart and targetPart for the defined KD-schemes. "Missing" 
  1664.    in the tables means that the relevant construct is not supplied.
  1665.    
  1666.      KD-Scheme name        kdSchemeOID    targetKDSpart  targetPart
  1667.    
  1668.      symmIntradomain     {kd-schemes 1}      Missing       Ticket
  1669.      hybridInterdomain   {kd-schemes 3}   PublicTicket    Missing
  1670.      asymmetric          {kd-schemes 6}      Missing      SPKM_REQ
  1671.    
  1672.         Table 1 - Key Distribution Scheme OBJECT IDENTIFIERs
  1673.    
  1674.    The syntax of PublicTicket is given in appendix A.1, and the syntax
  1675.    of Ticket (copied from [Kerberos]) is given in appendix A.2. The
  1676.    syntax of SPKM_REQ (copied from [SPKM])is given in appendix A.3.
  1677.    
  1678.    The OBJECT IDENTIFIERs that are for use in the kdSchemeOID field
  1679.    of TargetKeyBlock are formally derived from the kd-schemes OBJECT
  1680.    IDENTIFIER
  1681.    
  1682.    The SPKM_REQ construct used in scheme 6 requires a sequence of key
  1683.    establishment algorithm identifier values to be inserted into the
  1684.    key_estb_set field. The OBJECT IDENTIFIER sesame-key-estb-alg is
  1685.    defined as the (single) key establishment "algorithm" for the 
  1686.    SESAME mechanism.
  1687.   
  1688. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 27]
  1689.  
  1690.  
  1691.  
  1692.  
  1693.  
  1694.  
  1695.  
  1696. internet-draft                                       November 22, 1996
  1697.  
  1698.    kd-schemes
  1699.    This OBJECT IDENTIFIER is the top of the arc of key distribution
  1700.    scheme OBJECT IDENTIFIERs defined in this specification.
  1701.    
  1702.    symmIntradomain
  1703.    This OBJECT IDENTIFIER indicates the basic symmetric key
  1704.    distribution scheme described in section 2.2.3.2. As indicated in
  1705.    the third column of Table 1, the targetKDSpart of the
  1706.    TargetKeyBlock is not supplied and the targetPart contains a
  1707.    Kerberos Ticket (see [Kerberos] and appendix A.2). The profile of
  1708.    the ticket that is supported this scheme can be found in Table 2.
  1709.    
  1710.    hybridInterdomain
  1711.    This OBJECT IDENTIFIER indicates the hybrid scheme described in
  1712.    section 2.2.3.3. The targetKDSpart contains a PublicTicket (defined
  1713.    in section 4.2.2). The targetPart field is not supplied. The
  1714.    PublicTicket contains a Kerberos Ticket. The profile supported in
  1715.    this scheme can be found in Table 3.
  1716.    
  1717.    asymmetric
  1718.    This OBJECT IDENTIFIER indicates the scheme described in section
  1719.    2.2.3.4. The targetKDSpart is not supplied and the targetPart
  1720.    contains an SPKM_REQ. The syntax of SPKM_REQ is given in
  1721.    appendix A.3. The profile of SPKM_REQ that is supported in this
  1722.    scheme is given in Table 4.
  1723.    
  1724.    sesame-key-estb-alg
  1725.    This AlgorithmIdentifier identifies the key establishment
  1726.    algorithm value to be used within the key_estb_set field of an
  1727.    SPKM_REQ data element as the one defined by SESAME.
  1728.    
  1729.    This algorithm is used to establish a symmetric key for use by
  1730.    both the initiator and the target AEF as part of the context
  1731.    establishment. The corresponding key_estb_req field of the
  1732.    SPKM_REQ will be a BIT STRING the content of which is a DER
  1733.    encoding of the KeyEstablishmentData element defined later.
  1734.    
  1735. 4.2.1.  Data elements for the Symmetric Intradomain kd-scheme
  1736.    
  1737.    The full ASN.1 for the Kerberos elements used by the SESAME GSS-
  1738.    API mechanism is given in appendix A.2. This section specifies
  1739.    the specific contents of the Kerberos Ticket's authorization_data
  1740.    field required by the SESAME GSS-API mechanism.
  1741.    
  1742.    Essentially this construct (SESAME-AUTHORIZATION-DATA) contains the
  1743.    PPID of the context initiator.
  1744.    
  1745.    ppidType
  1746.    Indicates the type of authorisation data as being SESAME 
  1747.    authorisation data.
  1748.   
  1749.  
  1750.  
  1751. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 28]
  1752.  
  1753.  
  1754.  
  1755.  
  1756.  
  1757.  
  1758.  
  1759. internet-draft                                       November 22, 1996
  1760.  
  1761.    ppidValue
  1762.    This value is used in the ppQualification PAC protection method
  1763.    as defined in section 4.1.3.2.
  1764.    
  1765. 4.2.2.  Data elements for the Hybrid interdomain kd-scheme. 
  1766.    
  1767.    The PublicTicket contains the following fields:
  1768.    
  1769.    krb5Ticket
  1770.    The Kerberos Ticket which contains the basic key. The encrypted
  1771.    part of this ticket is encrypted using the key found within the
  1772.    encryptedPlainKey field of the KeyEstablishmentData in the
  1773.    PublicKeyBlock.
  1774.    
  1775.    publicKeyBlock
  1776.    Contains the key used to protect the krb5Ticket encrypted using
  1777.    the public key of the recipient and signed by the encryptor (i.e.
  1778.    the context initiator's KD-Server).
  1779.    
  1780.          signedPKBPart
  1781.          The part of the publicKeyBlock which is signed. The
  1782.          keyEstablishmentData field contains the
  1783.          KeyEstablishementData (defined in section 4.2.4), i.e. the
  1784.          actual encrypted temporary key (see section 2.2.3). The
  1785.          encryptionMethod indicates the algorithm used to encrypt
  1786.          the encryptedKey. The issuingKDS is the name of the KD-
  1787.          Server who produced the PublicTicket. The uniqueNumber is a
  1788.          value (containing a timestamp and a random number) which
  1789.          prevents replay of the PublicTicket. validityTime specifies
  1790.          the times for which the PublicTicket is valid. creationTime
  1791.          contains the time at which the PublicTicket was created.
  1792.          
  1793.          signature
  1794.          Contains the signature calculated by the issuingKDS on the
  1795.          signedPKBPart field.
  1796.          
  1797.          certificate
  1798.          If present, contains the public key certificate of the
  1799.          issuing KDS.
  1800.          
  1801. The KeyEstablishmentData contains the following fields :
  1802.    
  1803.    encryptedPlainKey
  1804.    Contains the encrypted key. The BIT STRING contains the result of
  1805.    encrypting a PlainKey structure.
  1806.    
  1807.    targetName
  1808.    If present, contains the name of the target application. This is
  1809.    necessary for some of the SESAME KD-schemes.
  1810.    
  1811.    nameHashingAlg
  1812.    Specifies the algorithm which is used to calculate the hashedName
  1813.  
  1814. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 29]
  1815.  
  1816.  
  1817.  
  1818.  
  1819.  
  1820.  
  1821.  
  1822. internet-draft                                       November 22, 1996
  1823.  
  1824.    field of the PlainKey.
  1825.    
  1826.    hniPlainKey
  1827.    hniIssuingKDS
  1828.    Used as input to a hashing algorithm as a general means to
  1829.    prevent ciphertext stealing attacks.
  1830.    
  1831.    plainKey
  1832.    Contains the actual bits of the plaintext key which is to be
  1833.    established.
  1834.    
  1835.    hashedName
  1836.    A hash of the name of the encrypting KDS calculated using the
  1837.    plainkey and KDS name as input (within the HashedNameInput
  1838.    structure). The algorithm identified in nameHashingAlg is used to
  1839.    calculate this value.
  1840.    
  1841.    targetName
  1842.    If present, contains the name of the target for which the
  1843.    PublicTicket was originally produced. This may be different from
  1844.    the targetIdentity field of the initialContextToken if caching of
  1845.    PublicTickets has been implemented.
  1846.    
  1847. 4.2.3.  Data elements for the asymmetric kd-scheme
  1848.    
  1849.    The targetPart contains an SPKM_REQ. The syntax of SPKM_REQ is 
  1850.    given in appendix A.3. The profile of SPKM_REQ that is supported 
  1851.    in this scheme is given in Table 4.
  1852.    
  1853. 4.3.  Dialogue Key Block
  1854.    
  1855.    Dialogue Key Block constructs are used to specify how the
  1856.    integrity dialogue key and confidentiality dialogue key should be
  1857.    derived from the basic key, and specify the cryptographic
  1858.    algorithms with which the keys should be used. 
  1859.    
  1860.    The DialogueKeyBlock is composed of the following fields:
  1861.    
  1862.    integKeySeed
  1863.    A random number, optionally concatenated with a time value to
  1864.    ensure uniqueness, used as input to the one way function
  1865.    specified in integKeyDerivationInfo.
  1866.    
  1867.    confKeySeed
  1868.    A random number, optionally concatenated with a time value to
  1869.    ensure uniqueness, used as input to the one way function
  1870.    specified in confKeyDerivationInfo.
  1871.    
  1872.    integKeyDerivationInfo
  1873.    Key derivation information for the integrity dialogue key, as
  1874.    follows:
  1875.   
  1876.  
  1877. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 30]
  1878.  
  1879.  
  1880.  
  1881.  
  1882.  
  1883.  
  1884.  
  1885. internet-draft                                       November 22, 1996
  1886.  
  1887.          owfId
  1888.          The one way algorithm which takes the basic key XOR the
  1889.          seed as input, resulting in the integrity dialogue key.
  1890.          
  1891.          keySize
  1892.          The size of the key in bits. If the algorithm identified by
  1893.          owfId produces a larger key, it is reduced by masking to
  1894.          this length, losing its most significant end.
  1895.          
  1896.    confKeyDerivationInfo
  1897.    Key derivation information for the confidentiality dialogue key.
  1898.    The fields in this construct have the same meanings as defined
  1899.    above for the integrity dialogue key.
  1900.    
  1901.    Note:
  1902.    It may be insecure to specify the same derivation algorithms and
  1903.    seeds for both integrity and confidentiality dialogue keys,
  1904.    particularly if they are to be of different lengths.
  1905.    
  1906.    integDKuseInfo
  1907.    Information describing how the integrity dialogue key is to be
  1908.    used, as follows:
  1909.    
  1910.          useAlgId
  1911.          The symmetric or asymmetric reversible encryption algorithm
  1912.          with which the integrity dialogue key is to be used.
  1913.          
  1914.          useHashAlgId
  1915.          The one way function with which the integrity dialogue key
  1916.          is to be used. It is the hash produced by this algorithm on
  1917.          the data to be protected which is encrypted using useAlgId.
  1918.          
  1919.    confDKuseInfo
  1920.    Information describing how the confidentiality key is to be used.
  1921.    The useHashAlgId construct is not used here.
  1922.    
  1923. 4.4.  Attribute Definitions
  1924.    
  1925. 4.4.1.  Privilege attributes
  1926.    
  1927. 4.4.1.1.  Access Identity
  1928.      
  1929.    The access identity represents an identity that the principal is 
  1930.    permitted to use for access control purposes.
  1931.    
  1932. 4.4.1.2.  Group
  1933.      
  1934.    The group represents a characteristic common to several
  1935.    principals. A security context may contain more than one group
  1936.    for a given principal.
  1937.   
  1938.  
  1939.  
  1940. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 31]
  1941.  
  1942.  
  1943.  
  1944.  
  1945.  
  1946.  
  1947.  
  1948. internet-draft                                       November 22, 1996
  1949.  
  1950. 4.4.1.3.  Primary group
  1951.      
  1952.    The primary group represents a unique group to which a principal
  1953.    belongs. A security context must not contain more than one
  1954.    primary group for a given principal.
  1955.    
  1956. 4.4.1.4.  Role attribute
  1957.      
  1958.    The role attribute represents a principal's role as might be used 
  1959.    in a role based access control policy. For example it can represent 
  1960.    a job position an individual may have within a company.
  1961.    
  1962. 4.4.2.  Miscellaneous attributes
  1963.    
  1964. 4.4.2.1.  Audit Identity
  1965.    
  1966.    Audit identity represents an identity unique to principal to be 
  1967.    used for accountability purposes. 
  1968. 4.4.2.2 Other 
  1969.  
  1970. Other miscellaneous attributes are 
  1971. defined in ECMA-219 but are not currently supported in SESAME V5.
  1972.    
  1973. 4.4.3.  Qualifier Attributes
  1974.    
  1975.    When a targetQualifiication or delegateTargetQualification method
  1976.    is present in the PAC, the syntax used for the method parameters
  1977.    is securityAttribute. 
  1978.    
  1979. 4.4.3.1.  Target Attributes
  1980.      
  1981.    Within a PAC protection method, targets can be identified by name 
  1982.    or other attributes to indicate whether they are allowed to accept 
  1983.    or both accept and forward that PAC.
  1984.  
  1985. Other than name, the only target attribute supported in SESAME V5 is the 
  1986. Application Trust Group (see below)..
  1987.    
  1988. 4.4.3.2.  Application Trust Groups
  1989.    
  1990.    Within a PAC protection method, an application trust group name 
  1991.    specifies the name of a set of targets allowed to accept or both 
  1992.    accept and forward that PAC.
  1993.    
  1994.    The universal application trust group (see section 2) is specified 
  1995.    by using an empty string value. See also section 2.2.1.5.
  1996.    
  1997. 5.  ALGORITHMS AND CIPHERTEXT FORMATS
  1998.    
  1999.    Cryptographic and hashing algorithms are used for various
  2000.    purposes within the SESAME GSS-API mechanism. This section
  2001.    categorises these algorithms according to usage so that context
  2002.  
  2003. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 32]
  2004.  
  2005.  
  2006.  
  2007.  
  2008.  
  2009.  
  2010.  
  2011. internet-draft                                       November 22, 1996
  2012.  
  2013.    initiators and acceptors can more easily determine if they have
  2014.    the cryptographic support required to allow inter-operation. The
  2015.    categorisation is then refined into cryptographic profiles that
  2016.    can be incorporated into specific mechanism identifiers for the
  2017.    purpose of mechanism negotiation.
  2018.     
  2019.    The table below summarises the different uses to which algorithms
  2020.    are put within the SESAME GSS-API mechanism.
  2021.    
  2022.   Use            Description of use       Type of Algorithm
  2023.   Reference
  2024.   2              PAC protection           OWF + asymmetric
  2025.                  using signature          signature
  2026.   3              basic key usage          symmetric
  2027.                                           confidentiality and
  2028.                                           integrity
  2029.   4              integrity dialogue       OWF
  2030.                  key derivation
  2031.   5              integrity dialogue       symmetric integrity
  2032.                  key usage
  2033.   6              CA public keys           OWF + asymmetric
  2034.                                           signature
  2035.   7              encryption using         symmetric
  2036.                  shared long term         confidentiality.
  2037.                  symmetric key
  2038.   8              name hash to             OWF
  2039.                  prevent ciphertext
  2040.                  stealing
  2041.   9              asymmetric basic         asymmetric encryption
  2042.                  key distribution         and OWF + signature
  2043.   10             key estab. within        (fixed value)
  2044.                  SPKM_REQ
  2045.   11             confidentiality          OWF
  2046.                  dialogue key
  2047.                  derivation
  2048.   12             confidentiality          symmetric
  2049.                  dialogue key use         confidentiality
  2050.    
  2051.                 Table 5 - Summary of algorithm uses:
  2052.    
  2053.  
  2054.    The algorithms can now be further categorised into broader
  2055.    classes as follows:
  2056.    
  2057.    Class 1: symmetric for security of mechanism:
  2058.                Uses 3, 5, 7
  2059.    Class 2: all OWFs:
  2060.                Uses 2, 4, 6, 8, 11
  2061.    Class 3: internal mechanism asymmetric, encrypting:
  2062.                Use 9
  2063.    Class 4: internal mechanism asymmetric, non-encrypting:
  2064.                Use 2
  2065.  
  2066. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 33]
  2067.  
  2068.  
  2069.  
  2070.  
  2071.  
  2072.  
  2073.  
  2074. internet-draft                                       November 22, 1996
  2075.  
  2076.    Class 5: CA's asymmetric non-encrypting:
  2077.                Use 6
  2078.    Class 6: Data confidentiality, symmetric:
  2079.                Use  12
  2080.    
  2081.    Use 10 is a fixed value, and does not contribute to mechanism use
  2082.    options. The fixed value for this has already been defined above.
  2083.    
  2084.    Based on these classes, the following cryptographic algorithm
  2085.    usage profiles are defined. Other profiles are possible and can
  2086.    be defined as required. Note that symmetric algorithm key sizes
  2087.    are included in this profiling, thus DES/64 indicates DES with a
  2088.    64 bit key.
  2089.    
  2090.                        Profile 1:  Profile 2: Profile 3:  Profile 5:
  2091.                        Full        No user    Exportable  Defaulted
  2092.                                    data
  2093.                                    Confiden
  2094.                                    tiality
  2095.     Class 1            DES/64      DES/64     RC4/128     separately
  2096.                                                           agreed
  2097.                                                           default
  2098.     Class 2            MD5         MD5        MD5         separately
  2099.                                                           agreed
  2100.                                                           default
  2101.     Class 3            RSA         RSA        RSA         separately
  2102.                                                           agreed
  2103.                                                           default
  2104.     Classes 4 and 5    RSA         RSA        RSA         separately
  2105.                                                           agreed
  2106.                                                           default
  2107.     Class 6            DES/64      None       RC4/40      separately
  2108.                                                           agreed
  2109.                                                           default
  2110.                     Table 6 - Algorithm profiles
  2111.                                   
  2112.    Where:
  2113.    
  2114.    -  Profile 1 provides full security, using standard cryptographic
  2115.       algorithms with commonly accepted key sizes.
  2116.    
  2117.    -  Profile 2 is the same but without supporting any
  2118.       confidentiality of user data.
  2119.    
  2120.    -  Profile 3 is exportable under many countries' legislations,
  2121.    
  2122.    -  Profile 5 uses algorithms identified by a separately specified
  2123.       default. It is intended for use by organisations who wish to
  2124.       use their own proprietary or government algorithms by separate
  2125.       agreement or negotiation.
  2126.    
  2127.    The next section shows how these algorithm profiles can be used
  2128.  
  2129. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 34]
  2130.  
  2131.  
  2132.  
  2133.  
  2134.  
  2135.  
  2136.  
  2137. internet-draft                                       November 22, 1996
  2138.  
  2139.    to extend the architectural key distribution schemes to form
  2140.    negotiable SESAME mechanism choices.
  2141.    
  2142. 6.  SESAME MECHANISM NEGOTIATION
  2143.    
  2144.    Preceding sections have separately defined the alternatives
  2145.    allowed by the generic SESAME mechanism in terms of key
  2146.    distribution schemes and the use of cryptographic and hash
  2147.    algorithms within the data elements.
  2148.    
  2149.    This section brings these together by defining the specific
  2150.    SESAME mechanism identifiers which correspond to each combination
  2151.    of the available options under these headings. These specific
  2152.    mechanism identifiers are intended to be negotiable using a
  2153.    generic GSS-API negotiation scheme (like [SNEGO]).
  2154.    
  2155.    The approach is to use the key distribution schemes to form
  2156.    broad architectural mechanism options, as follows (more options
  2157.    are defined by ECMA, hence the numbering):
  2158.    
  2159.    Architectural  Description of         Key Distribution
  2160.    Mechanism      Mechanism Option       Scheme(s)
  2161.    Number
  2162.    2              Symmetric key          symmIntradomain
  2163.                   distribution
  2164.    3              Symmetric initiator    symmIntradomain;
  2165.                   and target;            hybridInterdomain
  2166.                   Asymmetric KD-
  2167.                   Servers;
  2168.    6              Asymmetric Initiator   asymmetric
  2169.                   and Target
  2170.                                   
  2171.             Table 7 - Key Distribution Mechanism Options
  2172.                                   
  2173.    Each of the security mechanism options described above represents
  2174.    a key distribution scheme.
  2175.    
  2176.    Generic GSS-API mechanism negotiation will be carried out on the
  2177.    basis of the generic SESAME mechanism OBJECT IDENTIFIER
  2178.    concatenated with an architectural mechanism number from table 7,
  2179.    and an algorithm profile reference number from table 6. Thus the
  2180.    form of a negotiable SESAME mechanism is:
  2181.    
  2182.    SESAME Mechanism OID ,   V   ,   Y    ,   Z
  2183.                             ^       ^       ^
  2184.                             |       |       |
  2185.                             |       |       +-- algorithm
  2186.                             |       |           profile
  2187.                             |       |
  2188.                             |       +---------- architectural option
  2189.                             |
  2190.                             +------------------ version
  2191.  
  2192. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 35]
  2193.  
  2194.  
  2195.  
  2196.  
  2197.  
  2198.  
  2199.  
  2200. internet-draft                                       November 22, 1996
  2201.  
  2202.   
  2203.    Thus a SESAME V5 mechanism using a fully symmetric key distribution
  2204.    scheme and an exportable cryptographic algorithm profile would
  2205.    have an OBJECT IDENTIFIER of:
  2206.    
  2207.         { generic-sesame-mech  (5)  (2)  (3) }
  2208.    
  2209.    A SESAME mechanism using a fully asymmetric initiator and target
  2210.    architectural scheme, and an algorithm profile not supporting
  2211.    user data confidentiality would have an OBJECT IDENTIFIER of:
  2212.    
  2213.         { generic-sesame-mech  (5)  (6)  (2) }
  2214.    
  2215.    Not all combinations of key distribution scheme and algorithm
  2216.    profile are meaningful, however, but those that are, are intended
  2217.    to be negotiable using a generic GSS-API negotiation scheme such
  2218.    as [SNEGO].
  2219.    
  2220.    Where information is returned from the target to the initiator as
  2221.    a result of negotiation then for the SESAME mechanism the
  2222.    information should contain the public key certificates required
  2223.    for the initiator to be able to use the selected KD-Scheme. For
  2224.    example, if the asymmetric KD-Scheme is to be used the target
  2225.    should return to the initiator the public key certificate of the
  2226.    targetAEF (containing the target's own name in the extensions
  2227.    field). The syntax of the mechanism specific information is the
  2228.    `Certificates' ASN.1 type defined in the AuthenticationFramework.
  2229.    (To allow multiple certificates to be passed to the initiator.)
  2230.    
  2231. 7.  NAME TYPES
  2232.    
  2233.    Because [Kerberos] does not support Directory Names (DNs), SESAME
  2234.    uses two distinct naming conventions, Kerberos and X.500.
  2235.    
  2236. 7.1.  Kerberos naming
  2237.    
  2238.    SESAME uses the Kerberos V5 Authentication Server protocol for
  2239.    password based authentication, so SESAME principals are given
  2240.    Kerberos principal names. Moreover, the SESAME security domain is
  2241.    equivalent to a Kerberos realm, so Kerberos realm names are used
  2242.    to identify SESAME security domains. In SESAME, an entity that
  2243.    uses the normal Kerberos V5 authentication via a password is
  2244.    given a printable Kerberos principal name of the form :
  2245.    
  2246.                  <principal_name>@<realm_name>
  2247.    Notes:
  2248.    1. Components of a name can be separated by `/`.
  2249.    2. The separator `@` signifies that the remainder of the string
  2250.    following the `@` is to be interpreted as a realm identifier. If
  2251.    no `@` is encountered, the name is interpreted in the context of
  2252.    the local realm. Once an `@` is encountered, a non-null realm
  2253.    name, with no embedded `/` separators, must follow. The `\`
  2254.  
  2255. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 36]
  2256.  
  2257.  
  2258.  
  2259.  
  2260.  
  2261.  
  2262.  
  2263. internet-draft                                       November 22, 1996
  2264.  
  2265.    character is used to quote the immediately-following character.
  2266.    
  2267.    SESAME reserves two specific Kerberos principal names for its own
  2268.    use:
  2269.    
  2270.    -  for the SESAME Security Server (containing the AS, PAS and KDS):
  2271.    
  2272.                  krbtgt/<realm_name>@<realm_name>
  2273.      
  2274.    -  for the SESAME PVF :
  2275.    
  2276.                  pvf/<host_name>/<realm_name>@<realm_name>
  2277.      
  2278.    The realm_name in each of these constructs is repeated for
  2279.    compatibility with Kerberos.
  2280.    
  2281.    Note that a <host_name> or a <realm_name> might take the form of
  2282.    an Internet Protocol domain name, and so a name like:
  2283.    
  2284.                  pvf/mybox.bull.fr/sesame.bull.fr@sesame.bull.fr
  2285.                  
  2286.    is a valid principal name for a SESAME PVF.
  2287.    
  2288.    When invoking gss_import_name, a Kerberos principal name type can
  2289.    be identified using either gss_ses_krb5_oid or
  2290.    GSS_KRB5_NT_PRINCIPAL_NAME symbolic names. A Kerberos service
  2291.    name type can be identified using either gss_ses_krb5_oid or
  2292.    GSS_KRB5_NT_HOSTBASED_ SERVICE_NAME symbolic names.
  2293.    
  2294. 7.2.  Directory Naming
  2295.    
  2296.    As described elsewhere, SESAME uses public key technology
  2297.    supported by Directory Certificates, so for this purpose SESAME
  2298.    entities are given DNs. Such names are built from components
  2299.    separated  by a semicolon. The standardised keywords supported by
  2300.    SESAME are :
  2301.    
  2302.                  CN (common-name).
  2303.                  S  (surname),
  2304.                  OU (organisational-unit),
  2305.                  O  (organisation),
  2306.                  C  (country),
  2307.                  
  2308.    So an example of a DN supported at SESAME is:
  2309.    
  2310.                  CN=Martin;OU=sesame;O=bull;C=fr
  2311.                  
  2312.    SESAME defines a set of reserved common-name parts for DNs for
  2313.    the core SESAME security components, as follows:
  2314.    
  2315.    the PAS:              CN=SesamePAS.<realm_name>[;...]
  2316.    the AS:               CN=SesameAS.<realm_name>[;...]
  2317.  
  2318. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 37]
  2319.  
  2320.  
  2321.  
  2322.  
  2323.  
  2324.  
  2325.  
  2326. internet-draft                                       November 22, 1996
  2327.  
  2328.    the KDS:              CN=SesameKDS.<realm_name>[;...]
  2329.    the PVF:              CN=pvf.<host_name>[;...]
  2330.    the security domain:  CN=SesameDomain.<realm_name>[;...]
  2331.                          where <realm_name> is the name of the Kerberos
  2332.                          realm to which the entity belongs.
  2333.    
  2334.    Note that there is no generic rule for mapping the Directory Name
  2335.    of a SESAME entity to its Kerberos principal name, so SESAME
  2336.    provides an explicit mapping in a principal's Directory
  2337.    Certificate, using the extensions field of the extended Directory
  2338.    Certificate syntax (version 3) to carry the principal's Kerberos
  2339.    name.
  2340.    
  2341.    Note also that in the case of a PVF's Directory Certificate, the
  2342.    names of the applications supported by the PVF are also held in
  2343.    this field, preceded by the Kerberos principal name of the PVF
  2344.    itself. In the absence of such a certificate (i.e. if the PVF
  2345.    does not have a key pair of its own) the list of application
  2346.    names can be held (e.g. in a file) in the KDS.
  2347.    
  2348.    In SESAME the syntax of the Login Name is imported from the
  2349.    Kerberos Version 5 GSS-API Mechanism. This form of name is
  2350.    referred to using the symbolic name: GSS_KRB5_NT_PRINCIPAL.
  2351.    Syntax details are given in [KRB5GSS].When a principal possesses
  2352.    a private key for authentication, the login name is also stored
  2353.    in an extension field of the principal's Directory Certificate so
  2354.    that it can be linked to the principal's Distinguished Name.
  2355.    
  2356. 8.  SECURITY CONSIDERATIONS
  2357.    
  2358.    Security issues are discussed throughout this memo.
  2359.    
  2360. 9.  PATENTS
  2361.    
  2362.    Three patents apply. One from Bull and two from ICL.
  2363.    
  2364. 9.1.  BULL PATENT
  2365.   
  2366.    A patent with the French number 2,662,007 and the French title 
  2367.    "Procedure d'obtention d'une attestation en clair securisee dans 
  2368.    un environnement de systeme informatique distribue " ( Method for 
  2369.    obtaining a securitized clear text attestation in a distributed 
  2370.    data processing system environment ) has been filed on May 10, 1990
  2371.    under the number 90.05829 and is also registered in the following 
  2372.    countries under the following numbers :
  2373.    
  2374.       - European Patent No 91401138.2 (designated states: Germany, 
  2375.         France, GB, Italy, Netherlands, and Sweden),
  2376.       - Canadian Patent No 2,041,761,
  2377.       - US Patent No 5,214,700.
  2378.     
  2379.    The inventors are : Philippe Caille and Denis Pinkas.
  2380.  
  2381. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 38]
  2382.  
  2383.  
  2384.  
  2385.  
  2386.  
  2387.  
  2388.  
  2389. internet-draft                                       November 22, 1996
  2390.  
  2391. 9.2.  ICL PATENTS
  2392.    
  2393. 9.2.1. PAC USE MONITOR (C1167 )
  2394.  
  2395.    A patent based on GB 9010603.0 with the title "Access Control in 
  2396.    a Distributed Computer System" has been filed on May 11, 1990 and 
  2397.    has also be registered in the following countries under the 
  2398.    following numbers :
  2399.  
  2400.      - Australia Patent No: 634653 granted: 25/02/93 
  2401.      - European Application No: 91303752.9 filed: 25/04/91 
  2402.        (Designated states: Germany, France, GB, Italy, Netherlands.)
  2403.      - United States Patent No: 5339403 granted: 16/08/94 
  2404.      - South Africa Patent No: 91/3322 granted: 12/12/91 
  2405.  
  2406. The inventor is : Parker T A.
  2407.  
  2408.    It uses the term "PAC use monitor" which corresponds to what is 
  2409.    called in this specification the "targetAEF".
  2410.  
  2411. 9.2.2. PROXY CONTROL (C1179)
  2412.  
  2413.    A patent based on GB 9104909.8 with the title "Access Control in 
  2414.    a Distributed Computer System" has been filed on August 3, 1991 and
  2415.    has also be registered in the following countries under the 
  2416.    following numbers :
  2417.  
  2418.      - Australia Patent No: 655960 granted: 19/01/95 
  2419.      - European Application No:92301081.3 filed: 19/02/92
  2420.        (Designated states: Belgium, Germany, France, GB, Italy)
  2421.      - Japan Application No 48618/1992 filed: 05/03/92
  2422.      - United States Patent No: 5220603 granted: 15/06/93 
  2423.      - South Africa Patent No: 92/1425 granted: 15/09/92 
  2424.    
  2425. The inventor is : Parker T A.
  2426.  
  2427.    It uses the term "Proxy control" which  corresponds to what is 
  2428.    called in this specification the PPID method.
  2429.  
  2430. 10.  ACKNOWLEDGEMENTS
  2431.    
  2432.    The SESAME project has been carried out by Bull SA, ICL and
  2433.    Siemens (SNI, Siemens ZFE and SSE) under part funding from the
  2434.    CEC as RACE project R2051.
  2435.    
  2436.    With apologies to those omitted, the following are amongst the
  2437.    people who have made significant contributions to the ECMA and
  2438.    SESAME work: Helmut Baumgaertner, John Cosgrove, Philippe Caille,
  2439.    Hiep Doan, Belinda Fairthorne, Peter Hartmann, Keith Howker, 
  2440.    Per Kaijser, Jacques Lebastard, Ronan Long, Piers McMahon, 
  2441.    Frank O'Dwyer, Denis Pinkas, Mike Roe, Laurent Rouilhac, Jean Louis
  2442.    Roule, Don Salmon, Asmund Skomedal and Mark Van DenWauver.
  2443.  
  2444. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 39]
  2445.  
  2446.  
  2447.  
  2448.  
  2449.  
  2450.  
  2451.  
  2452. internet-draft                                       November 22, 1996
  2453.  
  2454.  
  2455.    
  2456. 11.  REFERENCES
  2457.    
  2458.    ECMA-219      ECMA-219 Second Edition, March 1996, Authentication 
  2459.                  and Privilege Attribute Application with related key 
  2460.                  distribution functions. This standard is available 
  2461.                  free of charge from: ECMA 114 Rue du Rhone 
  2462.                  CH-1204 Geneva (Switzerland). 
  2463.                  Internet : helpdesk@ecma.ch
  2464.                  This standard can also be downloaded using one of the
  2465.                  following URLs: 
  2466.                     ftp://ftp.ecma.ch/ecma-st/e219-doc.exe ;
  2467.                     ftp://ftp.ecma.ch/ecma-st/e219-exp.txt ;
  2468.                     ftp://ftp.ecma.ch/ecma-st/e219-pdf.pdf ;
  2469.                     ftp://ftp.ecma.ch/ecma-st/e219-psc.exe .
  2470.    
  2471.    GSS-API       1.  Internet RFC 1508 Generic Security Service API
  2472.                      (J. Linn, September 1993)
  2473.                  2.  X/Open P308 Generic Security Service API
  2474.                      (GSS-API) Base
  2475.                  3.  Internet RFC 1509 "Generic Security Service API:
  2476.                      C-Bindings"
  2477.    
  2478.    Kerberos       Internet RFC 1510 The Kerberos Network
  2479.                   Authentication Service (V5) (J. Kohl and C.
  2480.                   Neumann, September 1993)
  2481.    
  2482.    ISO/IEC 9594-8 ISO/IEC 9594-8, Information Processing Systems -
  2483.                   Open Systems Interconnection - The Directory -
  2484.                   Part 8: Authentication Framework (X.509)
  2485.    
  2486.    KERB5GSS       Internet RFC 1964, The Kerberos Version 5
  2487.                   GSS-API Mechanism (J. Linn, June 1996)
  2488.    
  2489.    XGSSAPI        draft-ietf-cat-xgssapi-acc-cntrl-01.txt: Extended
  2490.                   Generic Security Service APIs: XGSS-APIs (Denis
  2491.                   Pinkas and Piers McMahon, July 1996)
  2492.    
  2493.    SESOV          SESAME Overview, Version 4, (Tom Parker and Denis
  2494.                   Pinkas, December 1995)
  2495.    
  2496.    SPKM           RFC 2025 The Simple Public-Key GSS-API Mechanism
  2497.                   (C. Adams, OCtober 1996)
  2498.    
  2499.    SNEGO          draft-ietf-cat-snego-01 Simple GSS-API
  2500.                   Negotiation Mechanism (Eric Baize and Denis
  2501.                   Pinkas, October 1996)
  2502.    
  2503.   
  2504.  
  2505.  
  2506.  
  2507. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 40]
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  
  2513.  
  2514.  
  2515. internet-draft                                       November 22, 1996
  2516.  
  2517.  
  2518.  
  2519. 12.  AUTHOR'S ADDRESSES
  2520.    
  2521.    Eric Baize,
  2522.    Bull HN - MA02/211S
  2523.    Technology Park
  2524.    Billerica, MA 01821,
  2525.    USA.
  2526.    
  2527.    email: E.Baize@ma02.bull.com
  2528.    
  2529.    Stephen Farrell
  2530.    Software and Systems Engineering Ltd.
  2531.    Fitzwilliam Court,
  2532.    Dublin 2,
  2533.    IRELAND.
  2534.    
  2535.    email: Stephen.Farrell@sse.ie
  2536.    
  2537.    Tom Parker,
  2538.    The Solution Centre,
  2539.    ICL,
  2540.    Lovelace Road,
  2541.    Bracknell,
  2542.    Berkshire   RG12 8SN
  2543.    UK
  2544.    
  2545.    
  2546.    email: t.a.parker@win0199.wins.icl.co.uk
  2547.    
  2548.  
  2549.  
  2550.  
  2551.  
  2552.  
  2553.  
  2554.  
  2555.  
  2556.  
  2557.  
  2558.  
  2559.  
  2560.  
  2561.  
  2562.  
  2563.  
  2564.  
  2565.  
  2566.  
  2567.  
  2568.  
  2569.  
  2570. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 41]
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578. internet-draft                                       November 22, 1996
  2579.  
  2580. APPENDIX A: ASN.1 MODULE DEFINITIONS
  2581.    
  2582. A.1.  SESAME ASN.1 Definitions
  2583.    
  2584.    SESAME-gss-api-types  { tbs }
  2585.    
  2586.    DEFINITIONS ::= 
  2587.    
  2588.    BEGIN
  2589.    
  2590.    -- exports everything
  2591.    
  2592.    IMPORTS
  2593.    
  2594.      Name
  2595.       FROM  InformationFramework
  2596.             {joint-iso-ccitt(2) ds(5) module(1)
  2597.             informationFramework(1) }
  2598.    
  2599.      Certificate, AlgorithmIdentifier, Validity,
  2600.      CertificationPath
  2601.       FROM  AuthenticationFramework
  2602.             {joint-iso-ccitt(2) ds(5) module(1)
  2603.             authenticationFramework(7) }
  2604.    
  2605.      HostAddress, Ticket
  2606.       FROM SESAME-Kerberos-Definitions { tbs }
  2607.    
  2608.      SPKM-REQ
  2609.       FROM SESAME-SPKM-Definitions { tbs };
  2610.    
  2611.    -- OBJECT IDENTIFIERS
  2612.    
  2613.    access-identity-privilege ::=  OBJECT IDENTIFIER
  2614.         { privilege-attribute 2 }
  2615.    
  2616.    audit-id-misc ::=  OBJECT IDENTIFIER { misc-attribute 2 }
  2617.    
  2618.    generic-sesame-mech ::= OBJECT IDENTIFIER {1.3.12.1.46.1}
  2619.    
  2620.    generic-sesame-oids ::=  OBJECT IDENTIFIER {1.3.12.1.46}
  2621.       -- top of the SESAME types arc
  2622.    
  2623.    group-privilege ::=  OBJECT IDENTIFIER { privilege-attribute 4 }
  2624.    
  2625.    kd-schemes   OBJECT IDENTIFIER ::=  { generic-sesame-oids 9}
  2626.       -- ECMA-defined arc for SESAME key distribution schemes
  2627.    symmIntradomain        OBJECT IDENTIFIER ::=  {kd-schemes 1}
  2628.    hybridInterdomain      OBJECT IDENTIFIER ::=  {kd-schemes 3}
  2629.    asymmetric             OBJECT IDENTIFIER ::=  {kd-schemes 6}
  2630.       -- supported key distribution schemes
  2631.  
  2632.  
  2633. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 42]
  2634.  
  2635.  
  2636.  
  2637.  
  2638.  
  2639.  
  2640.  
  2641. internet-draft                                       November 22, 1996
  2642.  
  2643.    
  2644.    misc-attribute   OBJECT IDENTIFIER ::= 
  2645.       {   generic-sesame-oids   misc-attribute(3) }
  2646.      -- OID below which miscellaneous attributes are defined
  2647.    
  2648.    primary-group-privilege ::=  OBJECT IDENTIFIER{privilege-attribute 3}
  2649.  
  2650.    
  2651.    privilege-attribute OBJECT IDENTIFIER ::= 
  2652.       {   generic-sesame-oids     privilege-attribute(4) }
  2653.      -- OID below which privilege attributes are defined
  2654.    
  2655.    qualifier-attribute  OBJECT IDENTIFIER ::= 
  2656.       {   generic-sesame-oids   qualifier-attribute (4) }
  2657.      -- OID below which qualifier attributes are defined
  2658.    
  2659.    role-privilege ::=  OBJECT IDENTIFIER { privilege-attribute 1 }
  2660.    
  2661.    sesame-key-estb-alg AlgorithmIdentifier ::=  {kd-schemes, NULL }
  2662.       -- indicates a SESAME key establishment structure within
  2663.       -- an SPKM_REQ structure
  2664.    
  2665.    target-name-qualifier OBJECT IDENTIFIER ::=  { qualifier-attribute 1 }
  2666.    
  2667.    trust-group-qualifier OBJECT IDENTIFIER ::=  { qualifier-attribute 2 }
  2668.    
  2669.    -- Types in alphabetical order
  2670.    
  2671.    AccessPrivilegeValueSyntax ::=  Identifier
  2672.    
  2673.    AuditIdValueSyntax ::=  Identifier
  2674.    
  2675.    CDTContents ::=  SEQUENCE {
  2676.      tokenType    [0]   OCTET STRING VALUE X'0301',
  2677.      SAId         [1]   OCTET STRING,
  2678.      utcTime      [2]   UTCTime OPTIONAL,
  2679.      usec         [3]   INTEGER OPTIONAL,
  2680.      seq-number   [4]   INTEGER OPTIONAL,
  2681.    }
  2682.    
  2683.    CertandECV ::=    SEQUENCE {
  2684.      certificate      [0]   GeneralisedCertificate,
  2685.      ecv              [1]   ECV,             OPTIONAL}
  2686.             -- ECV is defined in later
  2687.    
  2688.    CertificateBody ::=  CHOICE{
  2689.      encryptedBody    [0]   BIT STRING,
  2690.      normalBody       [1]   SEQUENCE{
  2691.                               commonContents  [0] CommonContents,
  2692.                               specificContents[1] SpecificContents
  2693.                             }
  2694.    }
  2695.   
  2696. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 43]
  2697.  
  2698.  
  2699.  
  2700.  
  2701.  
  2702.  
  2703.  
  2704. internet-draft                                       November 22, 1996
  2705.  
  2706.    CertificateId ::= SEQUENCE {
  2707.      issuerDomain   [0] Identifier                       OPTIONAL,
  2708.      issuerIdentity [1] Identifier,
  2709.      serialNumber   [2] INTEGER
  2710.    }
  2711.             -- serialNumber is the same as in [ISO/IEC 9594-8]
  2712.    
  2713.    CheckValue ::=  CHOICE{
  2714.      signature      [0]   Signature
  2715.         -- only signature supported here
  2716.    }
  2717.    
  2718.    CommonContents ::=  SEQUENCE{
  2719.    
  2720.      comConSyntaxVersion  [0]   INTEGER { version1 (1) }DEFAULT 1,
  2721.      issuerDomain         [1]   Identifier             OPTIONAL,
  2722.      issuerIdentity       [2]   Identifier,
  2723.      serialNumber         [3]   INTEGER,
  2724.      creationTime         [4]   UTCTime                OPTIONAL,
  2725.      validity             [5]   Validity,
  2726.      algId                [6]   AlgorithmIdentifier,
  2727.      hashAlgId            [7]   AlgorithmIdentifier    OPTIONAL
  2728.    }
  2729.    
  2730.    ContextDeleteToken ::=   SEQUENCE {
  2731.      cdtContents    [0]   CDTContents,
  2732.      cdtSeal        [1]   Seal
  2733.                           -- seal over cdtContents, encrypted
  2734.                           -- under the Integrity Dialogue Key
  2735.                           -- contains only the sealValue field
  2736.    }
  2737.    
  2738.    CValues ::=  SEQUENCE OF SEQUENCE {
  2739.      index          [0]   INTEGER,
  2740.      value          [1]   BIT STRING
  2741.    }
  2742.    
  2743.    DialogueKeyBlock   ::=    SEQUENCE {
  2744.       integKeySeed            [0]   SeedValue,
  2745.       confKeySeed             [1]   SeedValue,
  2746.       integKeyDerivationInfo  [2]   KeyDerivationInfo   OPTIONAL,
  2747.       confKeyDerivationInfo   [3]   KeyDerivationInfo   OPTIONAL,
  2748.       integDKuseInfo          [4]   DKuseInfo           OPTIONAL,
  2749.       confDKuseInfo           [5]   DKuseInfo           OPTIONAL
  2750.    }
  2751.    
  2752.    DKuseInfo    ::=  SEQUENCE {
  2753.       useAlgId        [0]   AlgorithmIdentifier,
  2754.       useHashAlgId    [1]   AlgorithmIdentifier            OPTIONAL
  2755.    }
  2756.   
  2757.  
  2758.  
  2759. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 44]
  2760.  
  2761.  
  2762.  
  2763.  
  2764.  
  2765.  
  2766.  
  2767. internet-draft                                       November 22, 1996
  2768.  
  2769.    ECV ::=  SEQUENCE {
  2770.      crypAlgIdentifier  [0]   AlgorithmIdentifier      OPTIONAL,
  2771.      cValues            [1]   CHOICE {
  2772.                               encryptedCvalueList  [0] BIT STRING,
  2773.                               individualCvalues        [1] CValues
  2774.                             }
  2775.    }
  2776.    
  2777.    ErrorArgument ::=  ENUMERATED {
  2778.      gss_ses_s_sg_server_sec_assoc_open                  (1),
  2779.      gss_ses_s_sg_incomp_cert_syntax                     (2),
  2780.      gss_ses_s_sg_bad_cert_attributes                    (3),
  2781.      gss_ses_s_sg_inval_time_for_attrib                  (4),
  2782.      gss_ses_s_sg_pac_restrictions_prob                  (5),
  2783.      gss_ses_s_sg_issuer_problem                         (6),
  2784.      gss_ses_s_sg_cert_time_too_early                    (7),
  2785.      gss_ses_s_sg_cert_time_expired                      (8),
  2786.      gss_ses_s_sg_invalid_cert_prot                      (9),
  2787.      gss_ses_s_sg_revoked_cert                          (10),
  2788.      gss_ses_s_sg_key_constr_not_supp                   (11),
  2789.      gss_ses_s_sg_init_kd_server_ unknown               (12),
  2790.      gss_ses_s_sg_init_unknown                          (13),
  2791.      gss_ses_s_sg_alg_problem_in_dialogue_key_block     (14),
  2792.      gss_ses_s_sg_no_basic_key_for_dialogue_key_block   (15),
  2793.      gss_ses_s_sg_key_distrib_prob                      (16),
  2794.      gss_ses_s_sg_invalid_user_cert_in_key_block        (17),
  2795.      gss_ses_s_sg_unspecified                           (18),
  2796.      gss_ses_s_g_unavail_qop                            (19),
  2797.      gss_ses_s_sg_invalid_token_format                  (20)
  2798.    }
  2799.    
  2800.    ErrorToken ::=    {
  2801.       tokenType     [0]   OCTET STRING VALUE X'0300',
  2802.       etContents    [1]   ErrorArgument,
  2803.    }
  2804.    
  2805.    GeneralisedCertificate ::=  SEQUENCE{
  2806.      certificateBody    [0]   CertificateBody,
  2807.      checkValue         [1]   CheckValue}
  2808.    
  2809.    GroupPrivilegeValueSyntax ::=  SEQUENCE OF Identifier
  2810.    
  2811.    HashedNameInput ::=  SEQUENCE {
  2812.       hniPlainKey       [0]   BIT STRING,-- the same value as plainKey
  2813.       hniIssuingKDS     [1]   Identifier
  2814.    }
  2815.    
  2816.    ICTContents ::=  SEQUENCE {
  2817.      tokenId              [0]   INTEGER, -- shall contain X'0100'
  2818.      SAId                 [1]   OCTET STRING,
  2819.      targetAEFPart        [2]   TargetAEFPart,
  2820.      targetAEFPartSeal    [3]   Seal,
  2821.  
  2822. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 45]
  2823.  
  2824.  
  2825.  
  2826.  
  2827.  
  2828.  
  2829.  
  2830. internet-draft                                       November 22, 1996
  2831.  
  2832.      contextFlags         [4]   BIT STRING {
  2833.                               delegation         (0),
  2834.                               mutual-auth        (1),
  2835.                               replay-detect       (2),
  2836.                               sequence           (3),
  2837.                               conf-avail         (4),
  2838.                               integ-avail        (5)
  2839.                               }
  2840.      utcTime              [5]   UTCTime       OPTIONAL,
  2841.      usec                 [6]   INTEGER       OPTIONAL,
  2842.      seq-number           [7]   INTEGER       OPTIONAL,
  2843.      initiatorAddress     [8]   HostAddress   OPTIONAL,
  2844.      targetAddress        [9]   HostAddress   OPTIONAL
  2845.         -- imported from [Kerberos] and used as channel bindings
  2846.    }
  2847.    
  2848.    Identifier ::=  CHOICE{
  2849.      objectId           [0]   OBJECT IDENTIFIER,
  2850.      directoryName      [1]   Name,
  2851.             -- imported from the Directory Standard
  2852.      printableName      [2]   PrintableString,
  2853.      octets             [3]   OCTET STRING,
  2854.      intVal             [4]   INTEGER,
  2855.    
  2856.      bits               [5]   BIT STRING,
  2857.      pairedName         [6]   SEQUENCE{
  2858.                                 printableName   [0] PrintableString,
  2859.                                 uniqueName     [1] OCTET STRING
  2860.                             }
  2861.    }
  2862.    
  2863.    InitialContextToken ::=   SEQUENCE{
  2864.      ictContents    [0]   ICTContents,
  2865.      ictSeal        [1]   Seal
  2866.    }
  2867.    
  2868.    KeyDerivationInfo::=  SEQUENCE {
  2869.       owfId         [0]   AlgorithmIdentifier,
  2870.       keySize       [1]   INTEGER
  2871.    }
  2872.    
  2873.    KeyEstablishmentData ::=  SEQUENCE {
  2874.       encryptedPlainKey [0]   BIT STRING,-- encrypted PlainKey
  2875.       targetName        [1]   SecurityAttribute            OPTIONAL,
  2876.       nameHashingAlg    [2]   AlgorithmIdentifier          OPTIONAL
  2877.    }
  2878.    
  2879.    Method ::=  SEQUENCE{
  2880.      methodId         [0] MethodId,
  2881.      methodParams     [1] SEQUENCE OF Mparm               OPTIONAL
  2882.    }
  2883.   
  2884.  
  2885. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 46]
  2886.  
  2887.  
  2888.  
  2889.  
  2890.  
  2891.  
  2892.  
  2893. internet-draft                                       November 22, 1996
  2894.  
  2895.    MethodGroup ::=  SEQUENCE OF Method
  2896.    
  2897.    MethodId ::=  CHOICE{
  2898.      predefinedMethod [0] ENUMERATED {
  2899.                                 controlProtectionValues      (1),
  2900.                                 ppQualification              (2),
  2901.                                 targetQualification          (3),
  2902.                                 delegateTargetQualification  (4)
  2903.                               }
  2904.    }
  2905.    
  2906.       MICToken  ::=    PMToken
  2907.    
  2908.    Mparm ::=  CHOICE{
  2909.      pValue                 [0]   PValue,
  2910.      securityAttribute      [1]   SecurityAttribute
  2911.    }
  2912.    
  2913.    PACSpecificContents ::=  SEQUENCE{
  2914.      pacSyntaxVersion   [0]   INTEGER{  version1 (1)}        DEFAULT 1,
  2915.      protectionMethods  [2]   SEQUENCE OF MethodGroup      OPTIONAL,
  2916.      pacType            [4]   ENUMERATED{
  2917.                                   primaryPrincipal       (1),
  2918.                                   temperedSecPrincipal   (2),
  2919.                                   untemperedSecPrincipal (3)
  2920.                             }                            DEFAULT 3,
  2921.      privileges         [5]   SEQUENCE OF PrivilegeAttribute,
  2922.      restrictions       [6]   SEQUENCE OF Restriction        OPTIONAL,
  2923.    
  2924.      miscellaneousAtts  [7]   SEQUENCE OF SecurityAttribute OPTIONAL,
  2925.      timePeriods        [8]   TimePeriods                OPTIONAL
  2926.    }
  2927.    
  2928.    PlainKey ::=  SEQUENCE {
  2929.      plainKey         [0]   BIT STRING,      -- The cleartext key
  2930.      hashedName       [1]   BIT STRING
  2931.    }
  2932.    
  2933.    PMTContents ::=  SEQUENCE {
  2934.      tokenId              [0]   INTEGER, -- shall contain X'0101' for a MIC
  2935.                                          -- token and X'0201' for a Wrap
  2936.                                          -- token.
  2937.  
  2938.      SAId                 [1]   OCTET STRING,
  2939.      seq-number           [2]   INTEGER                  OPTIONAL,
  2940.      userData             [3]   CHOICE {
  2941.                                 plaintextBIT STRING,
  2942.                                 ciphertext    OCTET STRING
  2943.                     }                            OPTIONAL,
  2944.      directionIndicator   [4]   BOOLEAN                OPTIONAL
  2945.    }
  2946.   
  2947.  
  2948. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 47]
  2949.  
  2950.  
  2951.  
  2952.  
  2953.  
  2954.  
  2955.  
  2956. internet-draft                                       November 22, 1996
  2957.  
  2958.    PMToken ::=   SEQUENCE{
  2959.      pmtContents    [0]   PMTContents,
  2960.      pmtSeal        [1]   Seal
  2961.         -- seal over the pmtContents being protected
  2962.    }
  2963.    
  2964.    PrimaryGroupValueSyntax ::=  Identifier
  2965.    
  2966.    PrivilegeAttribute ::=  SecurityAttribute
  2967.    
  2968.    PublicKeyBlock ::=  SEQUENCE{
  2969.      signedPKBPart  [0]   SignedPKBPart,
  2970.      signature      [1]   Signature OPTIONAL,
  2971.      certificate    [2]   Certificate OPTIONAL
  2972.    }
  2973.    
  2974.    PublicTicket ::=  SEQUENCE{
  2975.      krb5Ticket     [0]   Ticket,
  2976.      publicKeyBlock [1]   PublicKeyBlock}
  2977.    
  2978.    PValue ::=  SEQUENCE{
  2979.      pv                     [0]   BIT STRING,
  2980.      algorithmIdentifier    [1]   AlgorithmIdentifier           OPTIONAL
  2981.    }
  2982.    
  2983.    Restriction ::=  SEQUENCE {
  2984.      howDefined [0] CHOICE {
  2985.                 hashedExternal  [0] BIT STRING, -- the hash value
  2986.                 signedExternal  [1] BIT STRING, -- the public key
  2987.                 certExternal    [2] CertificateId, -- user certificate
  2988.                 included        [3] BIT STRING
  2989.                 },
  2990.                                 -- the actual restriction in a form
  2991.                                 -- undefined here
  2992.      algId      [1] AlgorithmIdentifier              OPTIONAL,
  2993.                           -- either identifies the hash algorithm
  2994.                           -- or the public key algorithm
  2995.                           -- for choices 1 or 2 above.
  2996.      type       [2] ENUMERATED  {
  2997.                       mandatory   (1),
  2998.                       optional    (2)}       DEFAULT mandatory,
  2999.      targets      [3] SEQUENCE OF SecurityAttribute    OPTIONAL
  3000.    }
  3001.                   -- applies to all targets if this is omitted
  3002.    
  3003.    RolePrivilegeValueSyntax ::=  Identifier
  3004.    
  3005.    Seal ::=  SEQUENCE{
  3006.      sealValue          [0]   BIT STRING,
  3007.      symmetricAlgId     [1]   AlgorithmIdentifier      OPTIONAL,
  3008.      hashAlgId          [2]   AlgorithmIdentifier      OPTIONAL,
  3009.      targetName         [3]   SecurityAttribute        OPTIONAL,
  3010.  
  3011. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 48]
  3012.  
  3013.  
  3014.  
  3015.  
  3016.  
  3017.  
  3018.  
  3019. internet-draft                                       November 22, 1996
  3020.  
  3021.      keyId              [4]   INTEGER                  OPTIONAL
  3022.    }
  3023.    
  3024.    SecurityAttribute ::=  SEQUENCE{
  3025.      attributeType    Identifier,
  3026.      attributeValue SET OF SEQUENCE {
  3027.                       definingAuthority  [0] Identifier    OPTIONAL,
  3028.                       securityValue      [1] SecurityValue
  3029.                     }
  3030.    }
  3031.       --  NOTE: SecurityAttribute is not tagged, for compatibility
  3032.       -- with the Directory Standard.
  3033.    
  3034.    SecurityValue ::=  CHOICE{
  3035.      directoryName      [0]   Name,
  3036.      printableName      [1]   PrintableString,
  3037.      octets             [2]   OCTET STRING,
  3038.      intVal             [3]   INTEGER,
  3039.      bits               [4]   BIT STRING,
  3040.      any                [5]   ANY -- defined by attributeType
  3041.    }
  3042.    
  3043.    SeedValue  ::=  SEQUENCE {
  3044.       timeStamp     [0]   UTCTime                    OPTIONAL,
  3045.       random        [1]   BIT STRING
  3046.    }
  3047.    
  3048.    SESAME-AUTHORISATION-DATA ::=  SEQUENCE {
  3049.      sesame-ad-type     [0] ENUMERATED  {
  3050.                             ppidType  (0)
  3051.                           },
  3052.      sesame-ad-value    [1] CHOICE  {
  3053.                             ppidValue [0]SecurityAttribute
  3054.                           }
  3055.    }
  3056.    
  3057.    SESAME-AUTHORISATION-DATA-TYPE ::=  INTEGER { SESAME-ADATA (65) }
  3058.    
  3059.    Signature ::=  SEQUENCE{
  3060.      signatureValue         [0]   BIT STRING,
  3061.    
  3062.      asymmetricAlgId        [1]   AlgorithmIdentifier       OPTIONAL,
  3063.      hashAlgId              [2]   AlgorithmIdentifier       OPTIONAL,
  3064.      issuerCAName           [3]   Identifier                OPTIONAL,
  3065.      caCertInformation      [4]   CHOICE {
  3066.             caCertSerialNumber    [0]    INTEGER,
  3067.             certificationPath     [1]    CertificationPath
  3068.      }                                                       OPTIONAL
  3069.    }
  3070.    --CertificationPath    is imported from [ISO/IEC 9594-8]
  3071.   
  3072.  
  3073.  
  3074. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 49]
  3075.  
  3076.  
  3077.  
  3078.  
  3079.  
  3080.  
  3081.  
  3082. internet-draft                                       November 22, 1996
  3083.  
  3084.    SignedPKBPart ::=  SEQUENCE{
  3085.      keyEstablishmentData [0]   KeyEstablishmentData,
  3086.      encryptionMethod     [1]   AlgorithmIdentifier        OPTIONAL,
  3087.      issuingKDS           [2]   Identifier,
  3088.      uniqueNumber         [3]   UniqueNumber,
  3089.      validityTime         [4]   TimePeriods,
  3090.      creationTime         [5]   UTCTime
  3091.    }
  3092.    
  3093.    SpecificContents ::=  CHOICE{
  3094.      pac                  [1]   PACSpecificContents
  3095.       -- only the PAC is used here
  3096.    }
  3097.    
  3098.    TargetAEFPart ::=  SEQUENCE {
  3099.      pacAndCVs          [0]   SEQUENCE OF CertandECV OPTIONAL,
  3100.      targetKeyBlock     [1]   TargetKeyBlock,
  3101.      dialogueKeyBlock   [2]   DialogueKeyBlock,
  3102.      targetIdentity     [3]   SecurityAttribute,
  3103.      flags              [4]   BIT STRING   {
  3104.                               delegation         (0)
  3105.                             }
  3106.    }
  3107.    
  3108.    TargetKeyBlock ::=  SEQUENCE {
  3109.       kdSchemeOID       [2]   OBJECT IDENTIFIER,
  3110.       targetKDSpart     [3]   ANY                OPTIONAL,
  3111.                                     -- depending on kdSchemeOID
  3112.       targetPart        [4]   ANY                OPTIONAL
  3113.                                     -- depending on kdSchemeOID
  3114.    }
  3115.    
  3116.    
  3117.    TargetResultToken ::=   SEQUENCE{
  3118.      trtContents    [0] TRTContents,
  3119.      trtSeal        [1] Seal
  3120.    }
  3121.    
  3122.    Token ::= 
  3123.      [APPLICATION 0] IMPLICIT SEQUENCE {
  3124.       thisMech      MechType, -- the OBJECT IDENTIFIER specified below
  3125.       innerContextToken ANY DEFINED BY thisMech
  3126.    }
  3127.    
  3128.    TRTContents ::=  SEQUENCE {
  3129.    
  3130.      tokenId        [0]   INTEGER,    -- shall contain X'0200'
  3131.      SAId           [1]   OCTET STRING,
  3132.      utcTime        [5]   UTCTime     OPTIONAL,
  3133.      usec           [6]   INTEGER     OPTIONAL,
  3134.      seq-number     [7]   INTEGER     OPTIONAL,
  3135.    }
  3136.   
  3137. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 50]
  3138.  
  3139.  
  3140.  
  3141.  
  3142.  
  3143.  
  3144.  
  3145. internet-draft                                       November 22, 1996
  3146.  
  3147.    TrustGroupValueSyntax ::=  Identifier
  3148.    
  3149.    UniqueNumber ::=  SEQUENCE{
  3150.      timeStamp        [0] UTCTime,
  3151.      random           [1] BIT STRING
  3152.    }
  3153.    
  3154.    Validity ::= SEQUENCE {
  3155.             notBefore     UTCTime,
  3156.             notAfter      UTCTime
  3157.    } -- as in [ISO/IEC 9594-8]
  3158.    -- Note: Validity is not tagged, for compatibility with the
  3159.    -- Directory Standard.
  3160.    
  3161.    WrapToken  ::=    PMToken
  3162.    
  3163.    END
  3164.    
  3165.    
  3166. A.2.  Kerberos ASN.1 Definitions
  3167.    
  3168.    The SESAME GSS-API mechanism re-uses the HostAddress and Ticket
  3169.    types from [Kerberos]. These are reproduced here for ease of
  3170.    reference.
  3171.    
  3172.    SESAME-Kerberos-Definitions   {tbs }
  3173.    
  3174.    DEFINITIONS ::= 
  3175.    
  3176.    BEGIN
  3177.    
  3178.    -- exports everything
  3179.    
  3180.    IMPORTS
  3181.    
  3182.    -- imports nothing
  3183.    
  3184.    -- data types
  3185.    
  3186.    AuthorizationData ::=  SEQUENCE OF SEQUENCE {
  3187.      ad-type    [0]   INTEGER,
  3188.      ad-data    [1]   OCTET STRING}
  3189.    
  3190.    EncryptedData ::=  SEQUENCE {
  3191.      etype    [0]   INTEGER,      -- EncryptionType
  3192.      kvno     [1]   INTEGER          OPTIONAL,
  3193.      cipher   [2]   OCTET STRING  -- ciphertext}
  3194.    
  3195.    EncryptionKey ::=  SEQUENCE {
  3196.    
  3197.      keytype  [0]   INTEGER,
  3198.      keyvalue [1]   OCTET STRING}
  3199.   
  3200. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 51]
  3201.  
  3202.  
  3203.  
  3204.  
  3205.  
  3206.  
  3207.  
  3208. internet-draft                                       November 22, 1996
  3209.  
  3210.    EncTicketPart ::=  [APPLICATION 3] SEQUENCE {
  3211.      flags                [0]   TicketFlags,
  3212.      key                  [1]    EncryptionKey,
  3213.      crealm               [2]   Realm,
  3214.      cname                [3]   PrincipalName,
  3215.      transited            [4]   TransitedEncoding,
  3216.      authtime             [5]   KerberosTime,
  3217.      starttime            [6]   KerberosTime OPTIONAL,
  3218.      endtime              [7]   KerberosTime,
  3219.      renew-till           [8]   KerberosTime OPTIONAL,
  3220.      caddr                [9]   HostAddresses OPTIONAL,
  3221.      authorization-data   [10]  AuthorizationData OPTIONAL}
  3222.    
  3223.    HostAddress ::=  SEQUENCE {
  3224.      addr-type        [0]   INTEGER,
  3225.      address          [1]   OCTET STRING}
  3226.    
  3227.    HostAddresses ::=  SEQUENCE OF SEQUENCE {
  3228.      addr-type        [0]   INTEGER,
  3229.      address          [1]   OCTET STRING}
  3230.    
  3231.    KerberosTime ::=  GeneralizedTime
  3232.       -- Specifying UTC time zone (Z)
  3233.    
  3234.    PrincipalName ::=  SEQUENCE {
  3235.      name-type          [0]   INTEGER,
  3236.      name-string        [1]   SEQUENCE OF GeneralString}
  3237.    
  3238.    Realm ::=  GeneralString
  3239.    
  3240.    Ticket ::=  [APPLICATION 1] SEQUENCE {
  3241.      tkt-vno          [0]   INTEGER,
  3242.      realm            [1]   Realm,
  3243.      sname            [2]   PrincipalName,
  3244.      enc-part         [3]   EncryptedData} -- decrypts to
  3245.    EncTicketPart
  3246.    
  3247.    TicketFlags ::=  BIT STRING {
  3248.      reserved         (0),  -- not supported in the SESAME mechanism
  3249.      forwardable      (1),  -- not supported in the SESAME mechanism
  3250.      forwarded        (2),  -- not supported in the SESAME mechanism
  3251.      proxiable        (3),  -- not supported in the SESAME mechanism
  3252.      proxy            (4),  -- not supported in the SESAME mechanism
  3253.      may-postdate     (5),  -- not supported in the SESAME mechanism
  3254.      postdated        (6),
  3255.      invalid          (7),  -- not supported in the SESAME mechanism
  3256.      renewable        (8),  -- not supported in the SESAME mechanism
  3257.      initial          (9),  -- not supported in the SESAME mechanism
  3258.      pre-authent      (10),
  3259.      hw-authent       (11)}
  3260.   
  3261.  
  3262.  
  3263. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 52]
  3264.  
  3265.  
  3266.  
  3267.  
  3268.  
  3269.  
  3270.  
  3271. internet-draft                                       November 22, 1996
  3272.  
  3273.    TransitedEncoding ::=  SEQUENCE {
  3274.    
  3275.      tr-type          [0]   INTEGER, -- must be registered
  3276.      contents         [1]   OCTET STRING}
  3277.         -- the TransitedEncoding construct is not used in the SESAME
  3278.         -- mechanism.
  3279.    
  3280.    END
  3281.    
  3282. A.3.  SPKM ASN.1 Definitions
  3283.    
  3284.    The SESAME GSS-API mechanism re-uses the SPKM-REQ type from
  3285.    [SPKM]. These are reproduced here for ease of reference.
  3286.    
  3287.    SESAME-SPKM-Definitions   {tbs }
  3288.    
  3289.    DEFINITIONS ::= 
  3290.    
  3291.    BEGIN
  3292.    
  3293.    -- exports everything
  3294.    
  3295.    IMPORTS
  3296.    
  3297.      AuthorizationData
  3298.       FROM SESAME-Kerberos-Defintions   { tbs }
  3299.    
  3300.      AlgorithmIdentifier, Certificate, CertificateList,
  3301.    CertificatePair, CertificatePath
  3302.       FROM AuthenticationFramework {
  3303.                 joint-iso-ccitt ds(5) modules(1)
  3304.    authenticationFramework(7) }
  3305.    
  3306.      Name
  3307.       FROM InformationFramework {
  3308.                 joint-iso-ccitt ds(5) modules(1)
  3309.    informationFramework(1) }
  3310.    
  3311.    -- data types
  3312.    
  3313.    CertificationData ::=  SEQUENCE {
  3314.      certificationPath            [0] CertificationPath    OPTIONAL,
  3315.      certificateRevocationList    [1] CertificateList      OPTIONAL
  3316.    } -- at least one of the above shall be present
  3317.    
  3318.    CertificationPath ::=  SEQUENCE {
  3319.      userKeyId        [0]   OCTET STRING   OPTIONAL,
  3320.                             -- identifier for user's public key
  3321.      userCertif       [1]   Certificate    OPTIONAL,
  3322.                             -- certificate containing user's public key
  3323.      verifKeyId       [2]   OCTET STRING   OPTIONAL,
  3324.                             -- identifier for user's public
  3325.  
  3326. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 53]
  3327.  
  3328.  
  3329.  
  3330.  
  3331.  
  3332.  
  3333.  
  3334. internet-draft                                       November 22, 1996
  3335.  
  3336.                             -- verification key
  3337.    
  3338.      userVerifCertif    [3]   Certificate   OPTIONAL,
  3339.                             -- certificate containing user's public
  3340.                             -- verification key
  3341.      theCACertificates  [4]   SEQUENCE OF CertificatePair   OPTIONAL
  3342.                             -- certification path from target to source
  3343.    }
  3344.    
  3345.    ChannelId ::=  OCTET STRING
  3346.    
  3347.    Conf_Algs ::=  CHOICE {
  3348.      SEQUENCE OF AlgorithmIdentifier,
  3349.      NULL                     -- used when conf. is not available
  3350.                               -- over context
  3351.                   }           -- for C-ALG
  3352.    
  3353.    Context_Data ::=  SEQUENCE {
  3354.      channelId      ChannelId,               -- channel bindings
  3355.      seq_number     INTEGER OPTIONAL,        -- sequence number
  3356.      options        Options,
  3357.      conf_alg       Conf_Algs,               -- confidentiality. algs.
  3358.      intg_alg       Intg_Algs                -- integrity algorithm
  3359.    }
  3360.    
  3361.    ENCRYPTED MACRO ::= 
  3362.    BEGIN
  3363.    TYPE NOTATION  ::=  type(ToBeEnciphered)
  3364.    VALUE NOTATION ::=  value(VALUE BIT STRING)
  3365.    END     -- of ENCRYPTED
  3366.    
  3367.    HASHED MACRO ::= 
  3368.    BEGIN
  3369.      TYPE  NOTATION ::=  type    ( ToBeHashed )
  3370.      VALUE NOTATION ::=  value   ( VALUE OCTET STRING )
  3371.    END -- hash used is the one specified for the MANDATORY I-ALG
  3372.    
  3373.    Intg_Algs ::=  SEQUENCE OF AlgorithmIdentifier  -- for I-ALG
  3374.    
  3375.    Key_Estb_Algs ::=  SEQUENCE OF AlgorithmIdentifier  -- to allow
  3376.    negotiation of K-ALG
  3377.    
  3378.    MAC MACRO ::= 
  3379.    BEGIN
  3380.      TYPE  NOTATION ::=  type  ( ToBeMACed )
  3381.      VALUE NOTATION ::=  value ( VALUE
  3382.               SEQUENCE  {
  3383.                   algId   AlgorithmIdentifier,
  3384.                   mac   BIT STRING
  3385.                         }
  3386.                         )
  3387.    END
  3388.   
  3389. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 54]
  3390.  
  3391.  
  3392.  
  3393.  
  3394.  
  3395.  
  3396.  
  3397. internet-draft                                       November 22, 1996
  3398.  
  3399.    Options ::=  BIT STRING {
  3400.      delegation_state         (0),
  3401.    
  3402.      mutual_state                 (1),
  3403.      replay_det_state             (2),   -- used for replay det. 
  3404.                                          -- during context
  3405.      sequence_state               (3),   -- used for sequencing 
  3406.                                          -- during context
  3407.      conf_avail                   (4),
  3408.      integ_avail                  (5),
  3409.      target_certif_data_required  (6)   -- used to request 
  3410.                                         -- targ's certif. data
  3411.                   }
  3412.    
  3413.    Random_Integer ::=  BIT STRING
  3414.    
  3415.    Req_Integrity ::=  CHOICE {
  3416.      sig_integ    [0] SIGNATURE REQ_TOKEN,
  3417.      mac_integ    [1] MAC REQ_TOKEN
  3418.                     }
  3419.    
  3420.    REQ_TOKEN ::=  SEQUENCE {
  3421.      tok_id         INTEGER,          -- shall contain 0100 (hex)
  3422.      context_id     Random_Integer,
  3423.      pvno           BIT STRING,       -- protocol version number
  3424.      timestamp      UTCTime                  OPTIONAL,
  3425.                                       -- mandatory for SPKM-2
  3426.      randSrc        Random_Integer,
  3427.      targ_name      Name,
  3428.      src_name       Name,             -- may be a value indicating
  3429.                                       -- "anonymous"
  3430.      req_data     Context_Data,
  3431.      validity     [0] Validity       OPTIONAL,
  3432.                                       -- validity interval for key 
  3433.                                       -- (may be used in the
  3434.                                       -- computation of security 
  3435.                                       -- context lifetime)
  3436.      key_estb_set [1] Key_Estb_Algs,  -- specifies set of key 
  3437.                                       -- establishment algorithms
  3438.      key_estb_req   BIT STRING       OPTIONAL,
  3439.              -- key estb. parameter corresponding to first K-ALG in set
  3440.              -- (not used if initiator is unable or unwilling to
  3441.              -- generate and securely transmit key material to target).
  3442.              -- Established key must be sufficiently long to be used
  3443.              -- with any of the offered confidentiality algorithms.
  3444.      key_src_bind   HASHED SEQUENCE {
  3445.                   src_name    Name,
  3446.                   symm_key    BIT STRING}OPTIONAL
  3447.                    -- used to bind the source name to the symmetric key
  3448.                    -- (i.e., the unprotected version of what is
  3449.                    -- transmitted in key_estb_req).
  3450.      }
  3451.  
  3452. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 55]
  3453.  
  3454.  
  3455.  
  3456.  
  3457.  
  3458.  
  3459.  
  3460. internet-draft                                       November 22, 1996
  3461.  
  3462.    
  3463.    SIGNATURE MACRO ::= 
  3464.    BEGIN
  3465.    TYPE NOTATION   ::=  type (OfSignature)
  3466.    VALUE NOTATION  ::=  value(VALUE
  3467.      SEQUENCE {
  3468.         AlgorithmIdentifier,
  3469.         ENCRYPTED OCTET STRING
  3470.               }
  3471.                       )
  3472.    END
  3473.    
  3474.    SPKM_REQ ::=  SEQUENCE {
  3475.      requestToken           REQ_TOKEN,
  3476.      req_integrity          Req_Integrity,
  3477.      certif_data      [2]   CertificationData OPTIONAL,
  3478.      auth_data        [3]   AuthorizationData OPTIONAL
  3479.       -- see [Kerberos] for a discussion of authorization data
  3480.    }
  3481.    
  3482.    Validity ::=  SEQUENCE {
  3483.             notBefore     UTCTime,
  3484.             notAfter      UTCTime }
  3485.    
  3486.    END
  3487.    
  3488.  
  3489.  
  3490.  
  3491.  
  3492.  
  3493.  
  3494.  
  3495.  
  3496.  
  3497.  
  3498.  
  3499.  
  3500.  
  3501.  
  3502.  
  3503.  
  3504.  
  3505.  
  3506.  
  3507.  
  3508.  
  3509.  
  3510.  
  3511.  
  3512.  
  3513.  
  3514.  
  3515. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 56]
  3516.  
  3517.  
  3518.  
  3519.  
  3520.  
  3521.  
  3522.  
  3523. internet-draft                                       November 22, 1996
  3524.  
  3525. APPENDIX B: Profiling of KD-schemes
  3526.    
  3527.    The following tables provide profiling information for the data
  3528.    elements defined above and in appendices A.1 and A.2. The tables
  3529.    indicate which optional fields must be present for each of the 
  3530.    KD-Schemes and indicate the values which are required to be present
  3531.    in all fields.
  3532.    
  3533. B.1.  Profile of Ticket as used in symmIntradomain scheme
  3534.    
  3535.     Field                 Value/Constraint
  3536.     -----                 ----------------
  3537.     tkt-vno               5
  3538.     realm                 ticket issuer's domain name in Kerberos realm
  3539.                           name form
  3540.     sname                 target application name including the realm of
  3541.                           the target
  3542.     - EncTicketPart       encrypted with long term key of target AEF
  3543.        -- flags           only bits 6, 10 and 11 can be meaningful in
  3544.                           the context of the SESAME mechanism, the rest
  3545.                           are ignored
  3546.        -- key             the basic key
  3547.        -- crealm          initiator domain name in Kerberos realm name
  3548.                           form
  3549.        -- cname           principal name of the initiator (in the case
  3550.                           of delegation the cname will be that of the
  3551.                           delegate)
  3552.        -- transited       not used
  3553.        -- authtime        the time at which the initiator was
  3554.                           authenticated
  3555.        -- starttime       not used
  3556.        -- endtime         the time at which the ticket becomes invalid
  3557.        -- renew-till      not used
  3558.        -- caddr           not used
  3559.        -- authorization-  contains the PPID corresponding to cname
  3560.           data
  3561.                                   
  3562.              Table 2 - Kerberos ticket fields supported
  3563.                                   
  3564. B.2.  Profile of PublicTicket as used in hybridInterdomain scheme
  3565.    
  3566.      Field                  Value/Constraint
  3567.      -----                  ----------------
  3568.      krb5Ticket             
  3569.      - tkt-vno              5
  3570.      - realm                initiator domain name in Kerberos realm name
  3571.                             form
  3572.      - sname                target application name including the realm
  3573.                             of the target
  3574.      -- EncTicketPart       encrypted with temporary key (which is in
  3575.                             turn encrypted within the
  3576.                             keyEstablishmentData field)
  3577.  
  3578. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 57]
  3579.  
  3580.  
  3581.  
  3582.  
  3583.  
  3584.  
  3585.  
  3586. internet-draft                                       November 22, 1996
  3587.  
  3588.      --- flags              only bits 6, 10 and 11 can be meaningful in
  3589.                             the context of the SESAME mechanism, the
  3590.                             rest are ignored
  3591.      --- key                the basic key
  3592.      --- crealm             initiator domain name in Kerberos realm name
  3593.                             form
  3594.      --- cname              principal name of the initiator (in the case
  3595.                             of delegation the cname will be that of the
  3596.                             delegate)
  3597.      --- transited          not used
  3598.      --- authtime           the time at which the initiator was
  3599.                             authenticated
  3600.      --- starttime          not used
  3601.      --- endtime            the time at which the ticket becomes invalid
  3602.      --- renew-till         not used
  3603.      --- caddr              not used
  3604.      --- authorization-     contains the PPID corresponding to cname
  3605.                             data publicKeyBlock
  3606.       - signedPKBPart       
  3607.        -- encryptedKey      KeyEstablishmentData structure
  3608.        -- encryptionMethod  sesame-key-estb-alg
  3609.        -- issuingKDS        X.500 name of initiator's KDS (the signer)
  3610.        -- uniqueNumber      creation time of publicKeyBlock plus a
  3611.                             random bit string
  3612.        -- validityTime      only one period allowed
  3613.        -- creationTime      creation time of publicKeyBlock
  3614.       - signature           contains all the signing information as well
  3615.                             as the actual signature bits
  3616.       - certificate         optional
  3617.                                   
  3618.                Table 3 - PublicTicket fields supported
  3619.                                   
  3620. B.3.  Profile of SPKM_REQ as used in asymmetric scheme
  3621.          
  3622.      
  3623.      Field                  Value/Constraint
  3624.      -----                  ----------------
  3625.      requestToken           
  3626.       - tok_id              not used - fixed value of `0'
  3627.       - context_id          not used - fixed value of bit string
  3628.                             containing one zero bit
  3629.       - pvno                not used - fixed value of bit string
  3630.                             containing one zero bit
  3631.       - timestamp           creation time of SPKM_REQ - required
  3632.       - randSrc             random bit string
  3633.       - targ_name           X.500 Name of target AEF
  3634.       - src_name            X.500 Name of initiator
  3635.       - req_data            
  3636.        -- channelId         not used - octet string of length one value
  3637.                             `00'H
  3638.  
  3639.  
  3640.  
  3641. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 58]
  3642.  
  3643.  
  3644.  
  3645.  
  3646.  
  3647.  
  3648.  
  3649. internet-draft                                       November 22, 1996
  3650.  
  3651.        -- seq_number        missing
  3652.        -- options           not used - all bits set to zero
  3653.        -- conf_alg          not used - use NULL CHOICE
  3654.        -- intg_alg          not used - use a SEQUENCE OF with zero
  3655.                             elements
  3656.       - validity            mandatory
  3657.       - key_estb_set        only one element supplied containing sesame-
  3658.                             -key-estb-alg
  3659.      - key_estb_req         contains KeyEstablishmentData with
  3660.                             targetApplication field missing
  3661.       - key_src_bind        missing
  3662.      req_integrity          sig_integ mandatory
  3663.      certif_data            only userCertificate field supported
  3664.      auth_data              missing
  3665.                                   
  3666.                  Table 4 - SPKM_REQ fields supported
  3667.    
  3668.  
  3669.  
  3670.  
  3671.  
  3672.  
  3673.  
  3674.  
  3675.  
  3676.  
  3677.  
  3678.  
  3679.  
  3680.  
  3681.  
  3682.  
  3683.  
  3684.  
  3685.  
  3686.  
  3687.  
  3688.  
  3689.  
  3690.  
  3691.  
  3692.  
  3693.  
  3694.  
  3695.  
  3696.  
  3697.  
  3698.  
  3699.  
  3700.  
  3701.  
  3702.  
  3703.  
  3704. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 59]
  3705.  
  3706.  
  3707.  
  3708.  
  3709.  
  3710.  
  3711.  
  3712. internet-draft                                       November 22, 1996
  3713.  
  3714.  
  3715. APPENDIX C: ECMA BACKGROUND MATERIAL.
  3716.    
  3717.    ECMA's work was based on the OSI Architecture [ISO 7498-2], and
  3718.    the series of Security Frameworks developed in ISO/IEC JTC1 [ISO
  3719.    10181]. A Technical Report, [ECMA TR/46] published in 1988,
  3720.    concentrates on the application layer and describes a security
  3721.    framework in terms of application functions necessary to build
  3722.    secure open systems. The continuation of this report, [ECMA-138],
  3723.    defines the abstract security services for use in a distributed
  3724.    system. A parallel standard, [ECMA-206], describes a model for
  3725.    establishing secure relationships between applications in a
  3726.    distributed system. ECMA has recently completed work to define
  3727.    the functionality and the protocols for a distributed security
  3728.    service in charge of authenticating and distributing access
  3729.    rights to human and application principals, along with supportive
  3730.    key distribution functions. The ECMA standard which is the result
  3731.    of that work is called ECMA-219 [ECMA-219]. It was approved by
  3732.    the ECMA General Assembly in December 1994 and released in
  3733.    January 1995.
  3734.    
  3735.  
  3736.  
  3737.  
  3738.  
  3739.  
  3740.  
  3741.  
  3742.  
  3743.  
  3744.  
  3745.  
  3746.  
  3747.  
  3748.  
  3749.  
  3750.  
  3751.  
  3752.  
  3753.  
  3754.  
  3755.  
  3756.  
  3757.  
  3758.  
  3759.  
  3760.  
  3761.  
  3762.  
  3763.  
  3764.  
  3765.  
  3766.  
  3767. Baize, Farrell, Parker     Document Expiration: 22 May 1997   [Page 60]
  3768.  
  3769.  
  3770.  
  3771.