home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / rfc / rfc2093 < prev    next >
Text File  |  1997-07-01  |  49KB  |  1,292 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                          H. Harney
  8. Request for Comments: 2093                                 C. Muckenhirn
  9. Category: Experimental                                      SPARTA, Inc.
  10.                                                                July 1997
  11.  
  12.  
  13.            Group Key Management Protocol (GKMP) Specification
  14.  
  15. Status of this Memo
  16.  
  17.    This memo defines an Experimental Protocol for the Internet
  18.    community.  This memo does not specify an Internet standard of any
  19.    kind.  Discussion and suggestions for improvement are requested.
  20.    Distribution of this memo is unlimited.
  21.  
  22. Table of Contents
  23.  
  24.    1. Background..................................................... 1
  25.    2. Overview:  GKMP Roles.......................................... 3
  26.    3. Data Item primitives........................................... 4
  27.    4. Message definitions............................................ 6
  28.    5. State definitions.............................................. 9
  29.    6. Functional Definitions--Group Key Management Protocol.......... 13
  30.    7. Security Considerations........................................ 23
  31.    8. Author's Address............................................... 23
  32.  
  33. Abstract
  34.  
  35.    This specification proposes a protocol to create grouped symmetric
  36.    keys and distribute them amongst communicating peers. This protocol
  37.    has the following advantages: 1) virtually invisible to operator, 2)
  38.    no central key distribution site is needed, 3) only group members
  39.    have the key, 4) sender or receiver oriented operation, 5) can make
  40.    use of multicast communications protocols.
  41.  
  42. 1 Background
  43.  
  44.    Traditional key management distribution has mimicked the military
  45.    paper based key accounting system.  Key was distributed, ordered, and
  46.    accounted physically leading to large lead times and expensive
  47.    operations.
  48.  
  49.    Cooperative key management algorithms exist that allow pairwise keys
  50.    to be generated between two equipment's.  This gives the a quicker
  51.    more reliable key management structure capable of supporting large
  52.    numbers of secure communications.  Unfortunately, only pairwise keys
  53.    are supported using these methods today.
  54.  
  55.  
  56.  
  57.  
  58. Harney & Muckenhirn           Experimental                      [Page 1]
  59.  
  60. RFC 2093                   GKMP Specification                  July 1997
  61.  
  62.  
  63.    This document describes a protocol for establishing and rekeying
  64.    groups of cryptographic keys (more than two) on the internet.  We
  65.    refer to the approach as the Group Key Management Protocol (GKMP).
  66.  
  67. 1.1 Protocol Overview
  68.  
  69.    The GKMP creates key for cryptographic groups, distributes key to the
  70.    group members, ensures (via peer to peer reviews) rule based access
  71.    control of keys, denies access to known compromised hosts, and allow
  72.    hierarchical control of group actions.
  73.  
  74.    The key generation concept used by the GKMP is cooperative generation
  75.    between two protocol entities.  There are several key generation
  76.    algorithms viable for use in the GKMP (i.e., RSA, Diffe-Hellman,
  77.    elliptic curves).  All these algorithms use asymmetric key technology
  78.    to pass information between two entities to create a single
  79.    cryptographic key.
  80.  
  81.    The GKMP then distributes the group keys to qualified GKMP entities.
  82.    This distribution process is a mutually suspicious process (all
  83.    actions and identities must be verified).
  84.  
  85.    The GKMP provides a peer to peer review process.  Protocol entities
  86.    pass permission certificates (PC) as part of the group key
  87.    distribution process.  The PCs contain access control information
  88.    about a particular site.  This access control information is assigned
  89.    by a higher authority which then signs the PC. Therefor each entity
  90.    can verify the permissions of any other GKMP entity but can modify
  91.    none.  Each protocol entity checks the permissions and compares them
  92.    the level of service requested.  If the permissions do not exceed or
  93.    equal the request, the service is denied.
  94.  
  95.    The GKMP supports compromise recovery.  A list of compromised GKMP
  96.    entities is distributed to group members during key management
  97.    actions.  In essence, a Compromise Recovery List (CRL) allows group
  98.    members to drop connections with compromised entities.  The GKMP
  99.    delegates control of groups to specific group controllers so it will
  100.    be somewhat easier to distribute the CRL to the most important GKMP
  101.    entities.  During each key management action the CRL version number
  102.    is passed, when a CRL update is detected it is downloaded and
  103.    verified (it is signed by a higher authority).
  104.  
  105.    The GKMP allows control of group actions.  In certain networks it is
  106.    desirable for a higher authority to strictly control the generation
  107.    of groups.  These networks usually have a central network operations
  108.    authority.  The GKMP allows these authorities to remotely order group
  109.    actions.  These orders are signed by that authority and verified by
  110.    all entities involved with the group.
  111.  
  112.  
  113.  
  114. Harney & Muckenhirn           Experimental                      [Page 2]
  115.  
  116. RFC 2093                   GKMP Specification                  July 1997
  117.  
  118.  
  119.    The GKMP is an application layer protocol.  It's independent of the
  120.    underlying communication protocol.  However, if multicast service is
  121.    available it will speed the rekey of the cryptographic groups.
  122.    Hence, the GKMP does use multicast services if they are available.
  123.  
  124. 2 Overview:  GKMP Roles
  125.  
  126.    Creation and distribution of grouped key require assignment of roles.
  127.    These identify what functions the individual hosts perform in the
  128.    protocol.  The two primary roles are those of key distributor and
  129.    member.  The controller initiates the creation of the key, forms the
  130.    key distribution messages, and collects acknowledgment of key receipt
  131.    from the receivers.  The members wait for a distribution message,
  132.    decrypt, validate, and acknowledge the receipt of new key.
  133.  
  134. 2.1 Group controller
  135.  
  136.    The group controller (GC) is the a group member with authority to
  137.    perform critical protocol actions (i.e., create key, distribute key,
  138.    create group rekey messages, and report on the progress of these
  139.    actions).  All group members have the capability to be a GC and could
  140.    assume this duty upon assignment.
  141.  
  142.    The GC helps the cryptographic group reach and maintain key
  143.    synchronization.  A group must operate on the same symmetric
  144.    cryptographic key.  If part of the group loses or inappropriately
  145.    changes it's key, it will not be able to send or receive data to
  146.    another host operating on the correct key.  Therefor, it is important
  147.    that those operations that create or change key are unambiguous and
  148.    controlled (i.e., it would not be appropriate for multiple hosts to
  149.    try to rekey a net simultaneously).  Hence, someone has to be in
  150.    charge -- that is the controller.
  151.  
  152. 2.2 Group member
  153.  
  154.    Simply stated a group member is any group host who is not acting as
  155.    the controller.  The group members will:  assist the controller in
  156.    creating key, validate the controller authorization to perform
  157.    actions, accept key from the controller, request key from the
  158.    controller, maintain local CRL lists, perform peer review of key
  159.    management actions, and manage local key.
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170. Harney & Muckenhirn           Experimental                      [Page 3]
  171.  
  172. RFC 2093                   GKMP Specification                  July 1997
  173.  
  174.  
  175. 3 Data Item primitives
  176.  
  177. 3.1 Group members list:
  178.  
  179.    In a sender oriented group, the GC must be given a list of net
  180.    members.  The controller will then initiate contact with these net
  181.    members and create the group.
  182.  
  183. 3.2 Group Token:
  184.  
  185.    The group token is created by the authority which commands a group.
  186.    The Token contains information the net members need to ensure a
  187.    controller is authorized to create a group and exactly what
  188.    constrains are intended to be places on the group.  The group token
  189.    contains the following fields:  Group identification,
  190.  
  191.    o  GC ID,
  192.  
  193.    o  Group action (create, rekey, delete),
  194.  
  195.    o  Group permissions (rules to guide access control),
  196.  
  197.    o  Rekey interval (life span of group key),
  198.  
  199.    o  Token version (identifier to identify current token),
  200.  
  201.    o  Token signature (asymmetric signature using the group
  202.       commanders private key),
  203.  
  204.    o  Group commanders public key (this public key is itself signed by
  205.       the network security manager to bind the public to a specific net
  206.       member ID).
  207.  
  208. 3.3 Grp ID:
  209.  
  210.    The group must be uniquely identified to allow for several different
  211.    groups to coexist on a network.
  212.  
  213. 3.4 GTEK ID:
  214.  
  215.    Unique identifier of GTEK (can include state information).
  216.  
  217. 3.5 GKEK ID:
  218.  
  219.    Unique identifier of GKEK (can include state information).
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226. Harney & Muckenhirn           Experimental                      [Page 4]
  227.  
  228. RFC 2093                   GKMP Specification                  July 1997
  229.  
  230.  
  231. 3.6 GTEK creation field:
  232.  
  233.    In a cooperative key creation protocol each party contributes some
  234.    field used to create the key.
  235.  
  236. 3.7 GKEK creation field:
  237.  
  238.    In a cooperative key creation protocol each party contributes some
  239.    field used to create the key.
  240.  
  241. 3.8 Distributor signature:
  242.  
  243.    Asymmetric signature using the GCs private key.
  244.  
  245. 3.9 Distributor public key:
  246.  
  247.    Public half of the GCs signature key pair.  (this public key is
  248.    itself signed by the network security manager to bind the public to a
  249.    specific net member ID.
  250.  
  251. 3.10 Member signature:
  252.  
  253.    Asymmetric signature using the selected members private key.
  254.  
  255. 3.11 Member public:
  256.  
  257.    Public half of the selected members signature key pair.  (this public
  258.    key is itself signed by the network security manager to bind the
  259.    public to a specific net member ID.
  260.  
  261. 3.12 Controller permissions:
  262.  
  263.    Controller permissions are assigned by the security manager.  The
  264.    security managers signature will bind the permissions to the
  265.    controller ID.
  266.  
  267. 3.13 SKEK ID:
  268.  
  269.    This field identifies exactly which SKEK is being created.  This
  270.    allows multiple groups to interoperate on a net simultaneously.
  271.  
  272. 3.14 SKEK creation field:
  273.  
  274.    This field contains the information contributed for use in the KEK
  275.    creation process.
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282. Harney & Muckenhirn           Experimental                      [Page 5]
  283.  
  284. RFC 2093                   GKMP Specification                  July 1997
  285.  
  286.  
  287. 3.15 Member permissions:
  288.  
  289.    Member permissions are assigned by the security manager.  The
  290.    security managers signature will bind the permissions to the
  291.    controller ID.
  292.  
  293. 3.16 Encrypted Grp Keys:
  294.  
  295.    This data item is encrypted in the KEK (session or group) created for
  296.    the download of keys.  It is the GTEK and GKEK created for a group.
  297.    A checksum is also encrypted.  This ensures the confidentiality and
  298.    data integrity of the GTEK and GKEK.
  299.  
  300. 3.17 Confirmation of decryption:
  301.  
  302.    This is a short (byte) field indicating decryption of the message and
  303.    exactly what type of message was decrypted.
  304.  
  305. 3.18 Request:
  306.  
  307.    A request field contains the specific request one net member may make
  308.    to another.  The requests range from (group join, CRL update,
  309.    pairwise TEK generation, detection, group creation, status).
  310.  
  311.    Member delete list:
  312.  
  313.    A list of group members being administratively deleted from the
  314.    group.
  315.  
  316. 4 Message definitions
  317.  
  318. 4.1 Command_Create Group:
  319.  
  320.    This message contains the following data item primitives (Group
  321.    members, Grp ID, Grp controller ID, Grp action, Grp permissions,
  322.    Rekey interval, Token version, Token signature, Token public key).
  323.    This message may be confidential due to the group permissions field.
  324.    In sensitive systems it will need encryption prior to transmission.
  325.  
  326. 4.2 Create Grp Keys_1:
  327.  
  328.    This message passes the information needed to create the group keys
  329.    from the GC to the selected net member.  This message contains (Grp
  330.    ID, Request, GTEK ID, GKEK ID, GTEK creation field, GKEK creation
  331.    field, Grp token, Controller signature, Controller public)
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338. Harney & Muckenhirn           Experimental                      [Page 6]
  339.  
  340. RFC 2093                   GKMP Specification                  July 1997
  341.  
  342.  
  343. 4.3 Create Grp Keys_2:
  344.  
  345.    This message passes the information needed to create the group keys
  346.    from the selected net member to the GC. This message contains:  (Grp
  347.    ID, GTEK ID, GKEK ID, GTEK creation field, GKEK creation field,
  348.    member signature, member public)
  349.  
  350. 4.4 Negotiate Grp Keys_1:
  351.  
  352.    This message passes the group token and GCs permissions to the
  353.    selected net member.  This information can be sensitive and needs to
  354.    be protected.  Therefor, this message is encrypted in the GTEK just
  355.    created.  This encryption includes the appropriate data integrity
  356.    checks.  This message1 contains:  (Grp ID, TEK ID, KEK ID, Group
  357.    token, Controller permissions)
  358.  
  359. 4.5 Negotiate Grp Keys_2:
  360.  
  361.    This message passes the selected net members permissions to the GC.
  362.    This message1 contains:  (Grp ID, GTEK ID, GKEK ID, Member
  363.    permissions).  This information can be sensitive and needs to be
  364.    protected.  Therefor, this message is encrypted in the GTEK just
  365.    created.  This encryption includes the appropriate data integrity
  366.    checks.
  367.  
  368. 4.6 Create Session KEK_1:
  369.  
  370.    This message sends information to create a KEK for one time use
  371.    between the GC and selected net member.
  372.  
  373. 4.7 Create Session KEK_2:
  374.  
  375.    This message sends information to create a KEK for one time use
  376.    between the selected net member and GC.
  377.  
  378. 4.8 Negotiate Session Keys_1:
  379.  
  380.    This message passes the group ID, SKEK ID, CRL version number, Group
  381.    token and GCs permissions to the selected net member.  This
  382.    information can be sensitive and needs to be protected.  Therefor,
  383.    this message is encrypted.  If an appropriate pairwise key is
  384.    available then that key should be used.  If not the KEK just created
  385.    could be used to encrypt the message.
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394. Harney & Muckenhirn           Experimental                      [Page 7]
  395.  
  396. RFC 2093                   GKMP Specification                  July 1997
  397.  
  398.  
  399. 4.9 Negotiate Session Keys_2:
  400.  
  401.    This message identifies the group, SKEK, CRL version number and the
  402.    member permissions.  This information can also be sensitive and needs
  403.    protection.
  404.  
  405. 4.10 Download Grp Keys:
  406.  
  407.    This message includes a GRP ID and Encrypted Grp Keys data items.
  408.  
  409. 4.11 Key download ack:
  410.  
  411.    This message contains the GRP ID and Confirmation_decryption data
  412.    items.  It confirms the receipt and verified decryption of the GTEK
  413.    and GKEK.
  414.  
  415. 4.12 Rekey _Multicast:
  416.  
  417.    This message contains:  Grp ID, GTEK ID, GKEK ID, Group token,
  418.    Controller permissions.  The rekey message is encrypted in the GKEK
  419.    already resident in all the group member sites.  This leads to a
  420.    single message capable of being accepted by all group members.
  421.  
  422. 4.13 Request_Group_Join:
  423.  
  424.    This message contains Request, Grp ID, Member Signature, Member
  425.    Public.
  426.  
  427. 4.14 Delete_Group_Keys:
  428.  
  429.    This message contains:  grp ID, Request, Member delete list,
  430.    Controller signature, Controllers public.
  431.  
  432. 4.15 Grp_Keys_Deleted_Ack:
  433.  
  434.    This message contains (grp ID, member ID, member signature, member
  435.    public.
  436.  
  437. 4.16 Delete_Group_Keys:
  438.  
  439.    This message contains (grp ID, request, member delete list,
  440.    controller signature, controller public).
  441.  
  442. 4.17 Grp_Keys_Deleted_Ack:
  443.  
  444.    This message contains (grp ID, member ID, member signature, member
  445.    public)
  446.  
  447.  
  448.  
  449.  
  450. Harney & Muckenhirn           Experimental                      [Page 8]
  451.  
  452. RFC 2093                   GKMP Specification                  July 1997
  453.  
  454.  
  455. 5 State definitions
  456.  
  457.    There are thirteen separate states the in the protocol.  They are
  458.    described below:
  459.  
  460. 5.1 State 1:
  461.  
  462.    The source address is checked to ensure it is not on the CRL.
  463.  
  464.    The token field is validated with the public key of the source.
  465.  
  466.    The token version number is checked to ensure this token is current.
  467.  
  468.    The group ID is checked to see if this group exists.
  469.  
  470.    The controller ID field is then read.  If the receiver is listed as
  471.    the GC, the receiver assumes the role of controller.  If not, the
  472.    role assumed is that of receiver.
  473.  
  474.    The GC reads the group permission field in the group token.  It then
  475.    verifies that its' personnel permissions exceed or equal those of the
  476.    group.
  477.  
  478.    The GC will creates its' portion of the key creation message.
  479.  
  480.    The Create Grp Keys_1 message is completed and transmitted.
  481.  
  482. 5.2 State 2:
  483.  
  484.    The source signature field is validated using the public key of the
  485.    source.
  486.  
  487.    The source ID field is compared against the local CRL. If the source
  488.    is on the CRL the association is terminated.
  489.  
  490.    The request field is read.  The local contributions to the group keys
  491.    are created.
  492.  
  493.    The Group keys are created and stored pending negotiation.
  494.  
  495.    The key table is updated to show the group key pending negotiation.
  496.  
  497. 5.3 State 3:
  498.  
  499.    The permission certificate is retrieved and validated using the
  500.    security managers public key.  The permissions of the message source
  501.    are checked to verify they meet or exceed those of the group.
  502.  
  503.  
  504.  
  505.  
  506. Harney & Muckenhirn           Experimental                      [Page 9]
  507.  
  508. RFC 2093                   GKMP Specification                  July 1997
  509.  
  510.  
  511.    The group token is retrieved and validated using the appropriate
  512.    public key.
  513.  
  514.    The token version number is checked to ensure the token is current.
  515.  
  516.    The group ID specified in the token is compared with the actual group
  517.    ID. If they are different the exchange is terminated.
  518.  
  519.    The controller ID specified in the token is compared with the GC ID.
  520.    If they do not match the exchange is terminated.
  521.  
  522.    The local permissions are compared to the permissions specified for
  523.    the group.  If they do not meet or exceed the group permissions the
  524.    exchange is terminated and a report is generated.
  525.  
  526.    The rekey interval specified in the token is stored locally.
  527.  
  528.    The key table is updated to reflect the key permissions, rekey
  529.    interval, group ID and current time.
  530.  
  531. 5.4 State 4:
  532.  
  533.    The permission certificate is retrieved and validated using the
  534.    security members public key.  The permissions of the message source
  535.    are checked to verify they meet or exceed those of the group.
  536.  
  537.    The key table is updated to reflect the key permissions, rekey
  538.    interval, group ID and current time.
  539.  
  540. 5.5 State 5:
  541.  
  542.    The source signature field is validated using the public key of the
  543.    source.
  544.  
  545.    The source ID field is compared against the local CRL. If the source
  546.    is on the CRL, the association is terminated.
  547.  
  548.    The request field is read.  The local contribution to the SKEK are
  549.    created.  The SKEK is created and stored pending negotiation.
  550.  
  551.    The key table is updated to show the SKEK pending negotiation.
  552.  
  553. 5.6 State 6:
  554.  
  555.    The permission certificate is retrieved and validated using the
  556.    security managers public key.  The permissions of the message source
  557.    are checked to verify they meet or exceed those of the group.
  558.  
  559.  
  560.  
  561.  
  562. Harney & Muckenhirn           Experimental                     [Page 10]
  563.  
  564. RFC 2093                   GKMP Specification                  July 1997
  565.  
  566.  
  567.    The group token is retrieved and validated using the appropriate
  568.    public key.
  569.  
  570.    The token version number is checked to ensure the token is current.
  571.  
  572.    The group ID specified in the token is stored.
  573.  
  574.    The controller ID specified in the token is compared with the GC ID.
  575.    If they do not match the exchange is terminated.
  576.  
  577.    The local permissions are compared to the permissions specified for
  578.    the group.  If they do not meet or exceed the group permissions the
  579.    exchange is terminated and a report is generated.
  580.  
  581.    The rekey interval specified in the token is stored locally.
  582.  
  583.    The key table is updated to reflect the key permissions, rekey
  584.    interval, group ID and current time.
  585.  
  586. 5.7 State 7:
  587.  
  588.    The permission certificate is retrieved and validated using the
  589.    security managers public key.  The permissions of the message source
  590.    are checked to verify they meet or exceed those of the group.
  591.  
  592.    The key table is updated.
  593.  
  594. 5.8 State 8:
  595.  
  596.    The group ID is checked.
  597.  
  598.    The group keys are decrypted using the SKEK. Data integrity checks
  599.    are validated to ensure proper decryption.
  600.  
  601.    The key table is updated to reflect the new group keys, key
  602.    permissions, rekey interval, group ID and current time.
  603.  
  604. 5.9 State 9:
  605.  
  606.    Update group management log.
  607.  
  608. 5.10 State 10:
  609.  
  610.    The permission certificate is retrieved and validated using the
  611.    security managers public key.  The permissions of the message source
  612.    are checked to verify they meet or exceed those of the group.
  613.  
  614.  
  615.  
  616.  
  617.  
  618. Harney & Muckenhirn           Experimental                     [Page 11]
  619.  
  620. RFC 2093                   GKMP Specification                  July 1997
  621.  
  622.  
  623.    The group token is retrieved and validated using the appropriate
  624.    public key.
  625.  
  626.    The token version number is checked to ensure the token is current.
  627.  
  628.    The group ID specified in the token is checked.
  629.  
  630.    The controller ID specified in the token is compared with the GC ID.
  631.    If they do not match the exchange is terminated.
  632.  
  633.    The local permissions are compared to the permissions specified for
  634.    the group.  If they do not meet or exceed the group permissions the
  635.    exchange is terminated and a report is generated.
  636.  
  637.    The rekey interval specified in the token is stored locally.
  638.  
  639.    The new group keys are decrypted with the current GKEK. The data
  640.    integrity field is checked to ensure proper decryption.
  641.  
  642.    The key table is updated to reflect the key permissions, rekey
  643.    interval, group ID and current time.
  644.  
  645. 5.11 State 11:
  646.  
  647.    Validate signature using sources public key.
  648.  
  649.    Check to see if member initiated group join is available.  If not,
  650.    ignore.  If so begin distribution of group keys.
  651.  
  652. 5.12 State 12:
  653.  
  654.    Validate signature using GCs public.
  655.  
  656.    Retrieve delete list.  Check to see if on delete list, if so
  657.    continue.
  658.  
  659.    Create Grp_Keys_Deleted_Ack
  660.  
  661.    Delete group keys
  662.  
  663. 5.13 State 13:
  664.  
  665.    Validate signature using GCs public.
  666.  
  667.    Retrieve delete list.  If list is global delete, verify alternative
  668.    key.
  669.  
  670.    Switch group operations to alternative key.
  671.  
  672.  
  673.  
  674. Harney & Muckenhirn           Experimental                     [Page 12]
  675.  
  676. RFC 2093                   GKMP Specification                  July 1997
  677.  
  678.  
  679.    Create Grp_Keys_Deleted_Ack.
  680.  
  681.    Delete group keys.
  682.  
  683. 6 Functional Definitions--Group Key Management Protocol
  684.  
  685.    The GKMP consists of multiple functions necessary to create,
  686.    distribute, rekey and manage groups of symmetric keys.  These
  687.    functions are:
  688.  
  689.    o  Group creation (sender initiated group)
  690.  
  691.  
  692.        --  Create Group keys
  693.  
  694.        --  Distribute Group keys
  695.  
  696.    o  Group rekey
  697.  
  698.  
  699.        --  Create Group keys
  700.  
  701.        --  Rekey Group
  702.  
  703.  
  704.    o  Member initiated join
  705.  
  706.    o  Group member delete
  707.  
  708.    The following sections will describe each function, including data
  709.    primitives and message constructs.  The associated diagrams will
  710.    represent the specifics (sequence, location and communications
  711.    sources and destinations) of the messages and processes necessary.
  712.  
  713. 6.1 Group creation
  714.  
  715.    Member initialization is a three-step function that involves
  716.    commanding the creation of the group, creation of the group keys and
  717.    then distribution of those keys to "other" group members.  Messages
  718.    between the GC and the first member generate two keys for future
  719.    group actions:  the group traffic encryption key (GTEK) and the group
  720.    key encryption key (GKEK). Messages between the GC and the other
  721.    members are for the purpose of distributing the keys.  These
  722.    functions are described in the following sections.
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730. Harney & Muckenhirn           Experimental                     [Page 13]
  731.  
  732. RFC 2093                   GKMP Specification                  July 1997
  733.  
  734.  
  735. 6.1.1 Group command
  736.  
  737.    The very first action is for some entity to command the group.  This
  738.    command is sent to the GC.
  739.  
  740. 6.1.2 Create group keys
  741.  
  742.    The first member must cooperate with the GC to create future group
  743.    keys.  Reliance on two separate hosts to create group keys maximizes
  744.    the probability that the resulting key will have the appropriate
  745.    cryptographic properties.  A single host could create the key if the
  746.    randomization function were robust and trusted.  Unfortunately this
  747.    usually requires specialized hardware not available at most host
  748.    sites.  The intent of this protocol was to utilize generic hardware
  749.    to enhance the extendibility of the GKMP. Hence, cooperative key
  750.    generation mechanisms are used.
  751.  
  752.    To facilitate a well ordered group creation, management information
  753.    must be passed between the controller and the group members.  This
  754.    information uniquely identifies the GC identity, it's permissions,
  755.    authorization to create keys, the future groups permissions, current
  756.    state of the compromise list, and management information pertaining
  757.    to the keys being created.  All this information is protected from
  758.    forgery by asymmetric signature technologies.  The public key used to
  759.    verify net wide parameters (e.g., individual host permissions) are
  760.    widely held.  The public key to verify locally generated information,
  761.    like peer identity, is sent with the messages.  This alleviates the
  762.    hosts public key storage requirements.
  763.  
  764.    The goals of the key creation process are:
  765.  
  766.    o  cooperatively generate a GTEK and GKEK,
  767.  
  768.    o  allow the key creators to verify the identity of the key
  769.       creation partner by verifying the messages signatures.
  770.  
  771.    o  share public keys
  772.  
  773.    o  allow validation of the GC, by signing the group
  774.       identification, GC identification, and group permissions.
  775.  
  776.    o  send the group identity, GC identity, group member identities,
  777.       group permissions, and group rekey interval to the first member,
  778.       signed by the group commander (when the group was remotely
  779.       commanded).
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786. Harney & Muckenhirn           Experimental                     [Page 14]
  787.  
  788. RFC 2093                   GKMP Specification                  July 1997
  789.  
  790.  
  791.    This function consists of four messages between the GC and the first
  792.    member.  The initial messages are for the establishment of the GTEK
  793.    and GKEK. This is accomplished by the GC sending a signed
  794.    Create_Group_Keys_1 message to the first member.  This message
  795.    contains two random values necessary to generate the GTEK and GKEK.
  796.    This message also contains the public key of the GC.
  797.  
  798.    The first member validates the signed Create_Group_Keys_1 message,
  799.    builds and sends a signed Create_Group_Keys_2 message to the GC. He
  800.    generates the GTEK and GKEK, and stores the received public key.  The
  801.    Create_Group_Keys_2 message contains the random values necessary for
  802.    the GC to generate the GTEK and GKEK. This message also contains the
  803.    public key of the first member.
  804.  
  805.    The GC validates the signed Create_Group_Keys_2 message, generates
  806.    the GTEK and GKEK, builds the Negotiate_Group_Keys_1 message for
  807.    transmission to the first member, and stores the received public key.
  808.  
  809.    The GC sends the Negotiate_Group_Keys_1 message to the first member
  810.    encrypted in the GTEK that was just generated.
  811.  
  812. |___Net_Controller___|__________Messages__________|____Net_Member_B____|
  813. |The Create Group    |<---- Command-Create Group  |                    |
  814. |command is          |                            |                    |
  815. |received by net     |                            |                    |
  816. |member A.           |                            |                    |
  817. |State 1             |                            |                    |
  818. |                    |Create Grp Keys_1---->      |                    |
  819. |                    |                            |State 2             |
  820. |                    |<-----Create Grp Keys_2     |                    |
  821. |State 2             |                            |                    |
  822. |                    |Negotiate Grp Keys_1------> |                    |
  823. |                    |                            |State 3             |
  824. |                    |<-----Negotiate Grp Keys_2  |                    |
  825. |State 4             |                            |                    |
  826.               Figure 1:  State Diagram:  Create Group Keys
  827.  
  828.  
  829.    The first member decrypts the Negotiate_Group_Keys_1 message and
  830.    extracts the group identification, GC identification, group members,
  831.    group permissions, key rekey interval, CRL version number, and
  832.    certifying authority signature.  The group identification, GC
  833.    identification, and group permissions fields are validated based on
  834.    the extracted group commanders signature (if this is a remotely
  835.    commanded group this signature identifies the remote host).  If these
  836.    fields validate, the first members internal structures are updated.
  837.  
  838.  
  839.  
  840.  
  841.  
  842. Harney & Muckenhirn           Experimental                     [Page 15]
  843.  
  844. RFC 2093                   GKMP Specification                  July 1997
  845.  
  846.  
  847. 6.1.3 Distributing Group Keys to Other Members
  848.  
  849.    The other group members must get the group keys before the group is
  850.    fully operational.  The purpose of other group member initialization
  851.    is as follows:
  852.  
  853.    o  cooperatively generate a session key encryption key (SKEK) for the
  854.       transmission of the GTEK and GKEK from the GC,
  855.  
  856.    o  allow each member to verify the identify of the controller and
  857.       visa versa,
  858.  
  859.    o  allow each member to verify the controllers authorization to
  860.       create the group,
  861.  
  862.    o  send the key packet (KP) (consisting of the GTEK, GKEK), group
  863.       identity, GC identity, group member identities, group permissions,
  864.       and group rekey interval to the other members,
  865.  
  866.    This function consists of six messages between the GC and the other
  867.    members.  The initial messages are for the establishment of a SKEK.
  868.    This is accomplished by the GC sending a signed Create_Session_KEK_1
  869.    message to the other member.  This message contains the random value
  870.    necessary for the other member to generate the SKEK. This message
  871.    also contains the public key of the GC.
  872.  
  873.    The other member validates the Create_Session_KEK_1 message, builds
  874.    and sends a Create_Session_KEK_2 message to the GC, generates the
  875.    SKEK, and stores the received public key.  The Create_Session_KEK_2
  876.    message contains the random value necessary for the GC to generate
  877.    the SKEK.  This message also contains the public key of the other
  878.    member.
  879.  
  880.    The GC validates the Create_Session_KEK_2 message, generates the
  881.    SKEK, builds the Negotiate_Session_ KEK_1 message for transmission to
  882.    the other member, and stores the received public key.
  883.  
  884.    The GC sends the Negotiate_Session_KEK_1 message to the other member
  885.    encrypted in the SKEK that was just generated.  The
  886.    Negotiate_Session_KEK_1 message includes the group ID, group token,
  887.    controller permissions, and CRL version number.
  888.  
  889.    The other member decrypts the Negotiate_Session_KEK_1 message,
  890.    verifies the authority and identification of the controller, ensures
  891.    the local CRL is up to date, and builds a Negotiate_Session_KEK_2
  892.    message for transmission to the GC.
  893.  
  894.  
  895.  
  896.  
  897.  
  898. Harney & Muckenhirn           Experimental                     [Page 16]
  899.  
  900. RFC 2093                   GKMP Specification                  July 1997
  901.  
  902.  
  903.    The GC receives the Negotiate_Session_KEK_2 message and builds a
  904.    Download_Grp_Keys message for transmission to the other member.
  905.  
  906.    The GC sends the Download_Grp_Keys message to the other member
  907.    encrypted in the SKEK that was just generated.  (note:  the key used
  908.    to encrypt the negotiation messages can be combined differently to
  909.    create the KEK.)
  910.  
  911.    The other members decrypts the Download_Grp_Keys message and extracts
  912.    the KP, group identification, GC identification, group members, group
  913.    permissions, key rekey interval, and group commanders signature.  The
  914.    group identification, GC identification, and group permissions fields
  915.    are validated based on the signature.  If these fields validate, the
  916.    other members internal key storage tables are updated with the new
  917.    keys.
  918.  
  919. 6.2 Group Rekey
  920.  
  921.    Rekey is a two-step function that involves message exchange between
  922.    the GC and a "first member" and "other members." Messages between the
  923.    GC and the first member are exactly as described for group creation.
  924.    Messages between the GC and the other members are for the purpose of
  925.    distributing the new GTEK and the new GKEK. These functions are
  926.  
  927. |___Net_Controller___|__________Messages________|Net_members,individual|
  928. |                    |Create Session KEK_1---->  |                     |
  929. |                    |                           |State 5              |
  930. |                    |<-----Create Session KEK_2 |                     |
  931. |State 5             |                           |                     |
  932. |                    |Negotiate ess. Keys_1----->|                     |
  933. |                    |                           |State 6              |
  934. |                    |<-----NegotiateSess. Keys_2|                     |
  935. |State 7             |                           |                     |
  936. |                    |Download Grp Keys--------> |                     |
  937. |                    |                           |State 8              |
  938. |                    |<----- Key download ack    |                     |
  939. |State 9             |                           |                     |
  940.                Figure 2:  State Diagram:  Distribute Keys
  941.  
  942.    described in the following sections.
  943.  
  944. 6.2.1 Create Group Keys
  945.  
  946.    The first member function for a rekey operation is the same as that
  947.    for key initialization.  Please refer to the group creation section
  948.    entitled "2.1 Create group keys".
  949.  
  950.  
  951.  
  952.  
  953.  
  954. Harney & Muckenhirn           Experimental                     [Page 17]
  955.  
  956. RFC 2093                   GKMP Specification                  July 1997
  957.  
  958.  
  959. 6.2.2 Rekey
  960.  
  961.    The purpose of rekey is as follows:
  962.  
  963.    o  send the new GTEK and new GKEK to the other members,
  964.  
  965.    o  allow each member to verify the identify of the controller,
  966.  
  967.    o  allow each member to verify the controllers authorization to
  968.       rekey the group, group identification, and GC identification,
  969.  
  970.    o  send the group identity, GC identity, group member identities,
  971.       group permissions, and group rekey interval to the other members,
  972.  
  973.    The messages to create and negotiate the group keys are the same as
  974.    stated during group creation.  As such they have been omitted here.
  975.  
  976.    The rekey portion of this function consists of one message between
  977.    the GC and the other members.  The GC builds a signed Rekey_Multicast
  978.    message for transmission to the other member.  As the name implies
  979.    this
  980.  
  981. |___Net_Controller___|__________Messages________|Net_members,individual|
  982. |The Create Group    |<---- Command-Create Group |                     |
  983. |command is          |                           |                     |
  984. |received by net     |                           |                     |
  985. |member A.           |                           |                     |
  986. |State 1             |                           |                     |
  987. |                    |Create Grp Keys_1---->     |                     |
  988. |                    |                           |State 2              |
  989. |                    |<-----Create Grp Keys_2    |                     |
  990. |State 2             |                           |                     |
  991. |                    |Negotiate Grp Keys_1------>|                     |
  992. |                    |                           |State 3              |
  993. |                    |<-----Negotiate Grp Keys_2 |                     |
  994. |State 4             |                           |                     |
  995. |                    |Rekey _Multicast------->   |                     |
  996. |                    |                           |State 10             |
  997.                     Figure 3:  State Diagram:  Rekey
  998.  
  999.    message can be multicast to the entire group.  The GC sends the
  1000.    signed Rekey_Multicast message to the other members encrypted in the
  1001.    current GKEK.
  1002.  
  1003.    The other members decrypt and validate the signed Rekey_Multicast
  1004.    message and extract the new KP, group identification, GC
  1005.    identification, group members, group permissions, key rekey interval,
  1006.    and rekey command signature.  The group identification, GC
  1007.  
  1008.  
  1009.  
  1010. Harney & Muckenhirn           Experimental                     [Page 18]
  1011.  
  1012. RFC 2093                   GKMP Specification                  July 1997
  1013.  
  1014.  
  1015.    identification, and group permissions fields are validated based on
  1016.    the extracted rekey command signature.  If these fields validate, the
  1017.    key database tables are updated.
  1018.  
  1019. 6.3 Member Initiated Join
  1020.  
  1021.    The GKMP will support member initiated joins to the group.  This type
  1022.    of service is most attractive when the group initiator does not need
  1023.    to control group membership other than to verify that all members of
  1024.    the group conform to some previously agreed upon rules.
  1025.  
  1026.    One example of this type of group is corporations job vacancies.  A
  1027.    corporation may want to keep its job vacancies confidential and may
  1028.    decide to encrypt the announcements.  The group creator doesn't care
  1029.    who gets the announcements as long as they are in the corporation.
  1030.    When an employee tries to access the information the GC looks at the
  1031.    employees permissions (signed by some higher authority).  If they
  1032.    indicate the employee is part of the corporation the controller
  1033.    allows access to the group.
  1034.  
  1035.    Before a potential group member can join group operations, they must
  1036.    request the key from the GC, unambiguously identify themselves, pass
  1037.    their permissions, and receive the keys.  These require several
  1038.    messages to pass between GC and the joining member.  The purpose of
  1039.    these messages are as follows:
  1040.  
  1041.    o  Request group join from controller
  1042.  
  1043.    o  cooperatively generate a SKEK for the transmission of the group
  1044.       traffic encryption and GKEK from the GC,
  1045.  
  1046.    o  allow each member to verify the identify of the controller and
  1047.       visa versa,
  1048.  
  1049.    o  allow each member to verify the controllers authorization to
  1050.       create the group,
  1051.  
  1052.    o  send the KP, group identity, GC identity, group member identities,
  1053.       group permissions, and group rekey interval to the other members,
  1054.  
  1055.    The series of messages for a member initiated join is very similar to
  1056.    the series of messages to distribute group keys during group
  1057.    creation.  In fact, the series are identical except for the addition
  1058.    of a request to join message sent from the joining member to the
  1059.    controller when the join is member initiated.  This message should
  1060.    not require encryption since it probably does not contain sensitive
  1061.    information.  However, in some military systems the fact that a
  1062.    member wants to join a group maybe sensitive from a traffic analysis
  1063.  
  1064.  
  1065.  
  1066. Harney & Muckenhirn           Experimental                     [Page 19]
  1067.  
  1068. RFC 2093                   GKMP Specification                  July 1997
  1069.  
  1070.  
  1071.    viewpoint.  In these specialized instances, a pairwise TEK may be
  1072.    created, if one does not already exist, to hide the service request.
  1073.  
  1074.    This function consists of seven messages between the GC and the
  1075.    joining member.  The first message is created by the joining member
  1076.    and sent to the GC. It simply request membership in the group from
  1077.    the controller.  The controller makes the decision whether to respond
  1078.    to the request based on the group parameters - membership limits,
  1079.    membership lists.
  1080.  
  1081.    The next messages are for the establishment of a SKEK. This is
  1082.    accomplished by the GC sending a signed Create_Session_KEK_1 message
  1083.    to the other member.  This message contains the random value
  1084.    necessary for the other member to generate the SKEK. This message
  1085.    also contains the public key of the GC.
  1086.  
  1087.    The other member validates the Create_Session_KEK_1 message, builds
  1088.    and sends a Create_Session_KEK_2 message to the GC, generates the
  1089.    SKEK, and stores the received public key.  The Create_Session_KEK_2
  1090.    message contains the random value necessary for the GC to generate
  1091.    the SKEK.  This message also contains the public key of the other
  1092.    member.
  1093.  
  1094.    The GC validates the Create_Session_KEK_2 message, generates the
  1095.    SKEK,
  1096.  
  1097. |___Net_Controller___|__________Messages________|Net_Members,individual|
  1098. |                    |<------ Request_Group_Join |                     |
  1099. |State 11            |                           |                     |
  1100. |                    |Create Session KEK_1---->  |                     |
  1101. |                    |                           |State 5              |
  1102. |                    |<-----Create Session KEK_2 |                     |
  1103. |State 5             |                           |                     |
  1104. |                    |NegotiateSess. Keys_1----->|                     |
  1105. |                    |                           |State 6              |
  1106. |                    |<-----NegotiateSess. Keys_2|                     |
  1107. |State 7             |                           |                     |
  1108. |                    |Download Grp Keys--------> |                     |
  1109. |                    |                           |State 8              |
  1110. |                    |<----- Key download ack    |                     |
  1111. |State 9             |                           |                     |
  1112.                  Figure 4:  State Diagram:  Member Join
  1113.  
  1114.    builds the Negotiate_Session_ KEK_1 message for transmission to the
  1115.    other member, and stores the received public key.
  1116.  
  1117.    The GC sends the Negotiate_Session_KEK_1 message to the other member
  1118.    encrypted in the SKEK that was just generated.
  1119.  
  1120.  
  1121.  
  1122. Harney & Muckenhirn           Experimental                     [Page 20]
  1123.  
  1124. RFC 2093                   GKMP Specification                  July 1997
  1125.  
  1126.  
  1127.    The other member decrypts the Negotiate_Session_KEK_1 message and
  1128.    builds a Negotiate_Session_KEK_2 message for transmission to the GC.
  1129.  
  1130.    The GC receives the Negotiate_Session_KEK_2 message and builds a
  1131.    Download_Grp_Keys message for transmission to the other member.
  1132.  
  1133.    The GC sends theDownload_Grp_Keys message to the other member
  1134.    encrypted in the SKEK that was just generated.  (note:  the key used
  1135.    to encrypt the negotiation messages can be combined differently to
  1136.    create the KEK.)
  1137.  
  1138.    The other members decrypts theDownload_Grp_Keys message and extracts
  1139.    the KP, group identification, GC identification, group members, group
  1140.    permissions, key rekey interval, and group commanders signature.  The
  1141.    group identification, GC identification, and group permissions fields
  1142.    are validated based on the signature.  If these fields validate, the
  1143.    other members internal key storage tables are updated with the new
  1144.    keys.
  1145.  
  1146. 6.4 Member Deletion
  1147.  
  1148.    There are two types of member deletion scenarios - cooperative and
  1149.    hostile.  The cooperative deletion scenarios is the removal of a
  1150.    trusted group member for some management reason (i.e., reduce group
  1151.    size, prepare the member for a move).  The hostile deletion usually
  1152.    results in
  1153.  
  1154. |___Net_Controller___|__________Messages__________|_____Net_Members_____|
  1155. |                    |Delete_Group_Keys ------>   |                    |
  1156. |                    |                            |State 12            |
  1157. |                    |<------ Grp_Keys_Deleted_Ack|                    |
  1158. |State 9             |                            |                    |
  1159.              Figure 5:  State Diagram:  Cooperative Delete
  1160.  
  1161.    a loss of secure state at the members site (i.e., compromise,
  1162.    equipment breakage).
  1163.  
  1164.    The two scenarios present different challenges to the network.
  1165.    Minimization of network impact is paramount in the cooperative
  1166.    scenario.  We would like to leave the key group intact and have
  1167.    confidence that removing the cooperative group member will have no
  1168.    impact on the security of future group operations.  In the case of a
  1169.    hostile deletion, the goal is to return to a secure operating state
  1170.    as fast as possible.  In fact there is a trade-off.  We could
  1171.    eliminate the compromised group as soon as the compromise is
  1172.    discovered, but this may cripple an important asset.  So security
  1173.    concerns need to be balanced with operational concerns.
  1174.  
  1175.  
  1176.  
  1177.  
  1178. Harney & Muckenhirn           Experimental                     [Page 21]
  1179.  
  1180. RFC 2093                   GKMP Specification                  July 1997
  1181.  
  1182.  
  1183. 6.4.1 Cooperative Deletion
  1184.  
  1185.    The cooperative deletion function occurs between a trusted member and
  1186.    the GC. It results in a reliable deletion of the group key encryption
  1187.    and GTEKs at the deleted member.  This deletion is intended to be an
  1188.    administrative function.
  1189.  
  1190.    This function consists of two messages between the GC and the member.
  1191.    The GC sends the Delete_Group_ Keys message to the group, encrypted
  1192.    in the GTEK. The message identifies the member(s) that need to delete
  1193.    the group keys.  The member(s) decrypt the Delete_Group_Keys message,
  1194.    extract the group identification, check the deleted member list,
  1195.    deletes the group traffic and key encryption keys for that group, and
  1196.    build the Group_Keys_Deleted_Ack message for transmission to the GC.
  1197.  
  1198.    The Grp_Keys_Deleted_Ack message is encrypted in the group traffic
  1199.    key.  The GC receives the Grp_Keys_Deleted_Ack message, decrypts it,
  1200.    and updates the group definition.
  1201.  
  1202. |___Net_Controller___|__________Messages____________|_____Net_Members__|
  1203. |                    |Delete_Group_Keys ------>     |                  |
  1204. |                    |                              |State 13          |
  1205.                Figure 6:  State Diagram:  Hostile Delete
  1206.  
  1207. 6.4.2 Hostile Deletion (Compromise)
  1208.  
  1209.    Hostile deletion occurs when a the group losses trust in a member.
  1210.    We assume that all keys resident at the members site have been lost.
  1211.    We also assume the member will not cooperate.  Therefor, we must
  1212.    essentially create another group, minus the untrusted member, and
  1213.    transfer group operations to that new group.  When the group losses
  1214.    trust in the controller, another controller must be appointed and
  1215.    then the hostile deletion process can proceed.
  1216.  
  1217.    There are some security and operational management issues surrounding
  1218.    compromise recovery.  The essence of the issues involve a tradeoff
  1219.    between operational continuity and security vulnerability.  If a
  1220.    member is found to be bad, from a security point of view all traffic
  1221.    on the network should stop.  However, if that traffic is supporting a
  1222.    critical operation, the group may prefer to live with the security
  1223.    leak rather than interrupt the group communication.
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234. Harney & Muckenhirn           Experimental                     [Page 22]
  1235.  
  1236. RFC 2093                   GKMP Specification                  July 1997
  1237.  
  1238.  
  1239.    The GKMP provides two mechanisms to help restrict access of
  1240.    compromised members.  First, it implements a Certificate Revocation
  1241.    List (CRL) which is checked during the group creation process.  Thus
  1242.    it will not allow a compromised member to be included in a new group.
  1243.    Second, the GKMP facilitates the creation of another group (minus the
  1244.    compromised member(s)).  However, it does not dictate whether or not
  1245.    the group may continue to operate with a compromised member.
  1246.  
  1247.    The mechanism the GKMP uses to remove a compromised member is to key
  1248.    that member out.  This entails creating a new group, without the
  1249.    compromised member, and switching group operations.  The old group is
  1250.    canceled by several multicasts of a group delete message.
  1251.  
  1252.    This function consists of one message from the GC to all members.
  1253.    The GC sends the Delete_Group message to all members encrypted in the
  1254.    GTEK. This results in the deletion of the group traffic and key
  1255.    encryption keys in all group members.  All members decrypt the
  1256.    received Delete_Group message, validate the authorization, extracts
  1257.    the group identification, and delete the group traffic and key
  1258.    encryption keys.
  1259.  
  1260.  
  1261. 7 Security Conditions
  1262.  
  1263.    This document, in entirety, concerns security.
  1264.  
  1265. 8 Addresses of Authors
  1266.  
  1267.    Hugh Harney
  1268.    SPARTA, Inc.
  1269.    Secure Systems Engineering Division
  1270.    9861 Broken Land Parkway, Suite 300
  1271.    Columbia, MD 21046-1170
  1272.    United States
  1273.    Phone:        +1 410 381 9400 (ext.  203)
  1274.    EMail:  hh@columbia.sparta.com
  1275.  
  1276.    Carl Muckenhirn
  1277.    SPARTA, Inc.
  1278.    Secure Systems Engineering Division
  1279.    9861 Broken Land Parkway, Suite 300
  1280.    Columbia, MD 21046-1170
  1281.    United States
  1282.    Phone:        +1 410 381 9400 (ext.  208)
  1283.    EMail:  cfm@columbia.sparta.com
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290. Harney & Muckenhirn           Experimental                     [Page 23]
  1291.  
  1292.