home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_s_z / draft-simpson-photuris-11.txt < prev    next >
Text File  |  1996-06-14  |  156KB  |  4,349 lines

  1.  
  2.  
  3.  
  4.  
  5. Network Working Group                                             P Karn
  6. Internet Draft                                                  Qualcomm
  7.                                                              W A Simpson
  8.                                                               DayDreamer
  9. expires in six months                                          June 1996
  10.  
  11.  
  12.               The Photuris Session Key Management Protocol
  13.                      draft-simpson-photuris-11.txt                       |
  14.  
  15.  
  16. Status of this Memo
  17.  
  18.    Distribution of this memo is unlimited.
  19.  
  20.    This document is an Internet-Draft.  Internet Drafts are working doc-
  21.    uments of the Internet Engineering Task Force (IETF), its Areas, and
  22.    its Working Groups.  Note that other groups may also distribute work-
  23.    ing documents as Internet Drafts.
  24.  
  25.    Internet Drafts are draft documents valid for a maximum of six
  26.    months, and may be updated, replaced, or obsoleted by other documents
  27.    at any time.  It is not appropriate to use Internet Drafts as refer-
  28.    ence material, or to cite them other than as a ``working draft'' or
  29.    ``work in progress.''
  30.  
  31.    To learn the current status of any Internet-Draft, please check the
  32.    ``1id-abstracts.txt'' listing contained in the internet-drafts Shadow
  33.    Directories on:
  34.  
  35.       ftp.is.co.za (Africa)
  36.       nic.nordu.net (Europe)
  37.       ds.internic.net (US East Coast)
  38.       ftp.isi.edu (US West Coast)
  39.       munnari.oz.au (Pacific Rim)
  40.  
  41.  
  42. Abstract
  43.  
  44.    Photuris is an experimental session-key management protocol intended
  45.    for use with the IP Security Protocols (AH and ESP).
  46.  
  47. Applicability
  48.  
  49.    Photuris is intended for Internet nodes that frequently access or are
  50.    accessed by a large and unpredicatable number of other nodes.  It
  51.    features defense against resource clogging, perfect forward secrecy,
  52.    and (optional) privacy protection of the exchange parties.
  53.  
  54.  
  55.  
  56. Karn & Simpson            expires in six months                 [Page i]
  57. DRAFT                           Photuris                       June 1996
  58.  
  59.  
  60.    Photuris is primarily used for creating virtual private networks,
  61.    establishing sessions for mobile users and networks operating over
  62.    bandwidth-limited links, and short-lived sessions between numerous
  63.    clients and servers.
  64.  
  65.    Photuris is extensible.  A wide variety of authentication, compres-
  66.    sion, encryption, identification, and other operational types are
  67.    supported.
  68.  
  69.    Photuris is independent of any particular party identification method
  70.    or certificate format.  Support for symmetric key party identifica-
  71.    tion is required to be implemented, and asymmetric key party identi-
  72.    fication is optionally supported by extensions.
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111. Karn & Simpson            expires in six months                [Page ii]
  112. DRAFT                           Photuris                       June 1996
  113.  
  114.  
  115. 1.  Introduction
  116.  
  117.    The ultimate goal of Internet Security is to facilitate direct IP
  118.    connectivity between sensitive hosts and users across the Internet.
  119.    Users will rely on Internet Security to protect the confidentiality
  120.    of the traffic they send across the Internet and depend on it to
  121.    block unauthorized external access to their internal hosts and net-
  122.    works.
  123.  
  124.    Users must have confidence in every Internet Security component,
  125.    including key management.  Without this confidence, users may erect
  126.    barriers that impede legitimate use of the Internet, or forego the
  127.    Internet entirely.
  128.  
  129.    Internet Security does not place any significance on easily forged IP
  130.    Source addresses.  It relies instead on proof of possession of secret
  131.    knowledge: that is, a cryptographic key.
  132.  
  133.    However, secure manual distribution and maintainance of these keys is
  134.    often cumbersome and problematic.  User distribution often leads to
  135.    long-lived keys, with concommitant opportunity for compromise of the
  136.    keys.
  137.  
  138.    A fundamental role of this key management protocol is to verify the
  139.    values exchanged, while ensuring that the resulting key is not known
  140.    by another party.  It has been shown [DOW92] that key exchange must
  141.    be coupled to authentication.  Each party requires assurance that an
  142.    exchanged key is not shared with an imposter.
  143.  
  144.    Protecting sensitive data on the Internet against compromise --
  145.    either by interception or by unauthorized access -- is necessary, but
  146.    not sufficient.  The computing resources themselves must also be pro-
  147.    tected against malicious attack or sabotage.
  148.  
  149.    With these criteria in mind, Photuris [Firefly] is designed:
  150.  
  151.    A. for frequent exchange of limited lifetime individual session-keys,
  152.       with a minimum of configuration and effort.
  153.  
  154.    B. for associating security parameters with these session-keys.
  155.  
  156.    C. to support the use of a variety of authentication methods, and
  157.       facilitate the exchange of many identification types.
  158.  
  159.    D. to thwart certain types of denial of service attacks on host
  160.       resources.
  161.  
  162.  
  163.  
  164.  
  165.  
  166. Karn & Simpson            expires in six months                 [Page 1]
  167. DRAFT                           Photuris                       June 1996
  168.  
  169.  
  170.    E. to provide these services with minimal network activity, balanced
  171.       with computational efficiency.
  172.  
  173.    This document is primarily intended for implementing the Photuris
  174.    protocol.  It is not intended to detail service and application
  175.    interface definitions, although it does mention some basic policy
  176.    areas as required for the proper implementation and operation of the
  177.    protocol mechanisms.
  178.  
  179.  
  180. 1.1.  Terminology
  181.  
  182.  
  183.    exchange-value   The publically distributable value used to calculate
  184.                     a shared-secret.  As used in this document, refers
  185.                     to a Diffie-Hellman exchange, not the public part of
  186.                     a public/private key-pair.
  187.  
  188.    private-key      A value that is kept secret, and is part of an asym-
  189.                     metric public/private key-pair.
  190.  
  191.    public-key       A publically distributable value that is part of an
  192.                     asymmetric public/private key-pair.
  193.  
  194.    secret-key       A symmetric key that is not publically dis-
  195.                     tributable.  As used in this document, this is dis-
  196.                     tinguished from an asymmetric public/private key-
  197.                     pair.  An example is a user password.
  198.  
  199.    Security Association
  200.                     A collection of parameters describing the security
  201.                     relationship between two nodes.  These parameters
  202.                     include the identities of the parties, the transform
  203.                     (including algorithm and algorithm mode), the key(s)
  204.                     (such as a session-key, secret-key, or appropriate
  205.                     public/private key-pair), and possibly other infor-
  206.                     mation such as sensitivity labelling.  For further
  207.                     details, see [RFC-1825].
  208.  
  209.    Security Parameters Index (SPI)
  210.                     A number that indicates the Security Association.
  211.                     The number is relative to the IP Destination, which
  212.                     is the SPI Owner.
  213.  
  214.    session-key      A key that is independently derived from a shared-
  215.                     secret by the parties, and used for keying one
  216.                     direction of traffic.  This key is changed fre-
  217.                     quently.
  218.  
  219.  
  220.  
  221. Karn & Simpson            expires in six months                 [Page 2]
  222. DRAFT                           Photuris                       June 1996
  223.  
  224.  
  225.    shared-secret    As used in this document, the calculated result of
  226.                     the Photuris exchange.
  227.  
  228.    SPI Owner        The party that corresponds to the IP Destination;
  229.                     the receiver of the datagram.
  230.  
  231.    SPI User         The party that corresponds to the IP Source; the
  232.                     sender of the datagram.
  233.  
  234.    transform        A cryptographic manipulation of a particular set of
  235.                     data.  As used in this document, refers to certain
  236.                     well-specified methods (which are defined else-
  237.                     where).  For example, AH-MD5 [RFC-1828] transforms
  238.                     an IP datagram into a cryptographic hash, and ESP-
  239.                     DES-CBC [RFC-1829] transforms plaintext to cipher-
  240.                     text and back again.
  241.  
  242.    Implementors will find details of cryptographic hashing (such as
  243.    MD5), encryption algorithms and modes (such as DES), digital signa-
  244.    tures (such as DSS), and other algorithms in [Schneier95].
  245.  
  246.  
  247. 1.2.  Protocol Overview
  248.  
  249.    The Photuris protocol consists of several simple phases:
  250.  
  251.    1. A "Cookie" Exchange guards against simple flooding attacks sent
  252.       with bogus IP Sources or UDP Ports.  Each party passes a "cookie"
  253.       to the other.
  254.  
  255.       In addition, supported exchange-schemes are offered by the Respon-
  256.       der for calculating a shared-secret.
  257.  
  258.    2. A Value Exchange establishes a shared-secret between the parties.
  259.       Each party passes an Exchange-Value to the other.  These values
  260.       are used to establish a shared-secret between the parties.  The
  261.       Responder remains stateless until a shared-secret has been cre-
  262.       ated.
  263.  
  264.       In addition, supported attributes are offered by each party for
  265.       use in establishing new Security Associations.
  266.  
  267.    3. An Identification Exchange identifies the parties to each other,
  268.       and verifies the integrity of values sent in phases 1 and 2.
  269.  
  270.       In addition, the shared-secret provides a basis to generate sepa-
  271.       rate Security Association session-keys in each direction, which
  272.       are in turn used for conventional authentication or encryption.
  273.  
  274.  
  275.  
  276. Karn & Simpson            expires in six months                 [Page 3]
  277. DRAFT                           Photuris                       June 1996
  278.  
  279.  
  280.       Additional security attributes are also exchanged as needed.
  281.  
  282.       This exchange may also be encrypted for party privacy protection
  283.       using an exchange session-key based on the shared-secret.  This
  284.       protects the identities of the parties, hides the security parame-
  285.       ter values, and improves security for the exchange protocol and
  286.       security transforms.
  287.  
  288.    4. Additional messages may be exchanged to periodically change the
  289.       session-keys, and to establish new or revised security parameters.
  290.  
  291.       These exchanges may also be encrypted for party privacy protection
  292.       in the same fashion as above.
  293.  
  294.    The sequence of message types and their purposes are summarized in
  295.    the diagram below.  The first three phases (cookie, exchange, and
  296.    identification) must be carried out in their entirety before any
  297.    security association can be used.
  298.  
  299.    Initiator                            Responder
  300.    =========                            =========
  301.    Cookie_Request                 ->
  302.                                    <-   Cookie_Response
  303.                                            offer schemes
  304.    Value_Request                  ->
  305.       pick scheme
  306.       offer value
  307.       offer attributes
  308.                                    <-   Value_Response
  309.                                            offer value
  310.                                            offer attributes
  311.  
  312.              [generate shared-secret from exchanged values]
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331. Karn & Simpson            expires in six months                 [Page 4]
  332. DRAFT                           Photuris                       June 1996
  333.  
  334.  
  335.    Identity_Request               ->
  336.       make SPI
  337.       pick SPI attribute(s)
  338.       identify self
  339.       authenticate
  340.       (make protection key)
  341.       (encrypt message)
  342.                                    <-   Identity_Response
  343.                                            make SPI
  344.                                            pick SPI attribute(s)
  345.                                            identify self
  346.                                            authenticate
  347.                                            (make protection key)
  348.                                            (encrypt message)
  349.  
  350.                [make SPI session-keys in each direction]
  351.  
  352.  
  353.    SPI User                             SPI Owner
  354.    ========                             =========
  355.    SPI_Needed                     ->
  356.       list SPI attribute(s)
  357.       make integrity key
  358.       authenticate
  359.       (encrypt message)
  360.                                    <-   SPI_Update
  361.                                            make SPI
  362.                                            pick SPI attribute(s)
  363.                                            make SPI session-key(s)
  364.                                            make integrity key
  365.                                            authenticate
  366.                                            (encrypt message)
  367.  
  368.    Either party may initiate an exchange at any time.  For example, the
  369.    Initiator need not be a "caller" in a telephony link.
  370.  
  371.    The Initiator is responsible for recovering from all message losses
  372.    by retransmission.
  373.  
  374.    A Photuris exchange between two parties results in a pair of SPI val-
  375.    ues (one in each direction).  Each SPI is used in creating separate
  376.    session-key(s) in each direction.
  377.  
  378.    When both parties initiate Photuris exchanges concurrently, or one
  379.    party initiates more than one Photuris exchange, the Initiator Cook-
  380.    ies (and UDP Ports) keep the exchanges separate.  This results in
  381.    more than one initial SPI for each Destination.
  382.  
  383.  
  384.  
  385.  
  386. Karn & Simpson            expires in six months                 [Page 5]
  387. DRAFT                           Photuris                       June 1996
  388.  
  389.  
  390.    To create multiple Security Associations with different parameters,
  391.    the parties may also send SPI_Updates.
  392.  
  393.    There is no requirement that all such outstanding SPIs be used.  The
  394.    SPI User (sender) selects an appropriate SPI for each datagram trans-
  395.    mission.
  396.  
  397.  
  398. 1.3.  Clogging Defense
  399.  
  400.    To grant access to authorized users regardless of location, it must
  401.    be possible to cheaply detect and discard bogus datagrams.  Other-
  402.    wise, an attacker intent on sabotage might rapidly send datagrams to
  403.    exhaust the host's CPU or memory resources.
  404.  
  405.    Using Internet Security authentication facilities, when a datagram
  406.    does not pass an authentication check, it can be discarded without
  407.    further processing.  This is easily done with manual (null) key man-
  408.    agement between trusted hosts at relatively little cost, given the
  409.    speed of cryptographic hashing functions compared to public-key algo-
  410.    rithms.
  411.  
  412.    Unfortunately, such a trusted host will have only a fixed number of
  413.    keys available.  The keys will tend to have long lifetimes.  This
  414.    carries significant security risks.
  415.  
  416.    Automatic key management is necessary to generate keys between par-
  417.    ties without prior arrangement.  But, there is a potential Achilles
  418.    heel in the key management protocol.
  419.  
  420.    Because of their use of CPU-intensive operations such as modular
  421.    exponentiation, key management schemes based on public-key cryptogra-
  422.    phy are vulnerable to resource clogging attacks.  Although a complete
  423.    defense against such attacks is impossible, Photuris features make
  424.    them much more difficult.
  425.  
  426.  
  427. 1.3.1.  Cookie Exchange
  428.  
  429.    Photuris exchanges a pair of "cookies" based on the IP node addresses
  430.    before initiating any extensive computational operations.  This
  431.    cookie exchange provides a weak form of message origin authentication
  432.    and verifies the presence of network communications between the par-
  433.    ties, thwarting the saboteur from using random IP Source addresses.
  434.    The simple validation of these cookies uses the same level of
  435.    resources as other Internet Security authentication mechanisms.
  436.  
  437.    This forces the attacker to:
  438.  
  439.  
  440.  
  441. Karn & Simpson            expires in six months                 [Page 6]
  442. DRAFT                           Photuris                       June 1996
  443.  
  444.  
  445.    1) use its own valid IP address, or
  446.  
  447.    2) gain access to a physical transmission link and appropriate those
  448.       addresses, or
  449.  
  450.    3) subvert Internet routing for the same purpose.
  451.  
  452.    The first option allows the target to detect and filter out such
  453.    attacks, and significantly increases the likelihood of identifying
  454.    the attacker.  The latter two options are much more difficult than
  455.    merely sending large numbers of datagrams with randomly chosen IP
  456.    Source addresses from an arbitrary point on the Internet.
  457.  
  458.    The cookie exchange does not protect against an observer that can
  459.    copy a valid cookie, or an interceptor that can modify or substitute
  460.    another cookie.  These attacks are mitigated somewhat with time-
  461.    variant cookies.
  462.  
  463.  
  464. 1.3.2.  State Limitation
  465.  
  466.    There is a small amount of state associated with the Photuris
  467.    exchange itself.  This includes the Cookies, Exchange-Values, and the
  468.    computed shared-secret.
  469.  
  470.    During the initial Cookie Exchange, the Responder does not maintain
  471.    any state for the exchange.  This prevents memory resource exhaustion
  472.    from a simple flooding attack.
  473.  
  474.    Later exchange phases require saving of state to perform the key
  475.    establishment calculations and identity verification.  An attacker
  476.    that is willing to expose itself to a larger window of detection can
  477.    waste substantial resources by repeating the steps of the Photuris
  478.    process without using the results.
  479.  
  480.    The Responder combines time-variant cookies with a counter to limit
  481.    the number of multiple concurrent Photuris exchanges with the same
  482.    Internet nodes.  Initiators will not be issued additional cookies by
  483.    the Responder until their previous exchanges have concluded or
  484.    expired.  This combination also prevents an attack by hoarding valid
  485.    cookies, and then flooding the Responder with a large number of con-
  486.    current exchanges.
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496. Karn & Simpson            expires in six months                 [Page 7]
  497. DRAFT                           Photuris                       June 1996
  498.  
  499.  
  500. 1.3.3.  State Precomputation
  501.  
  502.    Prior to accepting Cookie_Requests, the Responder can precompute its
  503.    Exchange-Value.  Successive requests from multiple Initiators will
  504.    not require additional computation until the Identification Exchange.
  505.  
  506.    Once Photuris exchange state has been established between nodes,
  507.    repetitive exchanges can use many of the same previously computed
  508.    values.  This prevents an attacker with more CPU power from easily
  509.    exhausting the target.
  510.  
  511.  
  512. 1.3.4.  State Expiration
  513.  
  514.    During a Photuris exchange, the Responder Exchange TimeOut limits the
  515.    wait for the exchange to complete.  This includes the packet round
  516.    trips, and the time for completing the Identification Exchange calcu-
  517.    lations.  The time is bounded by both the maximum amount of calcula-
  518.    tion delay expected for the processing power of an unknown peer, and
  519.    the minimum user expectation for results (default 60 seconds).
  520.  
  521.    In addition, all retained exchange state of both parties has an asso-
  522.    ciated Exchange LifeTime, and is subject to periodic expiration.
  523.    This depends on the physical and logistical security of the machine,
  524.    and is typically in the range of 10 minutes to one day (default 30
  525.    minutes).
  526.  
  527.    When an Exchange-Value expires (or is replaced by a newer value), all
  528.    related exchange state is purged.  The periodic expiration and purge
  529.    of exchange state reduces the risk of compromise of keys and secrets,
  530.    and is an important consideration in attaining Perfect Forward
  531.    Secrecy.
  532.  
  533.    If an attacker has succeeded in overwhelming a target, the target
  534.    will eventually recover its resources as the expired state is purged.
  535.  
  536.    Implementation Notes:
  537.  
  538.       These Exchange LifeTimes and TimeOuts are implementation dependent
  539.       and are not disclosed in any Photuris message.  The paranoid oper-
  540.       ator will have a fairly short Exchange LifeTime, but it MUST NOT
  541.       be less than twice the Exchange TimeOut.
  542.  
  543.       To prevent synchronization between Photuris exchanges, the imple-
  544.       mentation SHOULD randomly vary each Exchange LifeTime within twice
  545.       the range of seconds that are required to calculate a new
  546.       Exchange-Value.  For example, if the Responder uses a base
  547.       Exchange LifeTime of 30 minutes, and takes 10 seconds to calculate
  548.  
  549.  
  550.  
  551. Karn & Simpson            expires in six months                 [Page 8]
  552. DRAFT                           Photuris                       June 1996
  553.  
  554.  
  555.       the new Exchange-Value, the equation might be (in milliseconds):
  556.  
  557.          1800000 + random(20000)
  558.  
  559.       The exchange-scheme, Exchange-Values, and resulting shared-secret
  560.       MAY be cached in short-term storage for the Exchange LifeTime.
  561.       When repetitive Photuris exchanges occur between the same parties,
  562.       and the Exchange-Values are discovered to be unchanged, the pre-
  563.       computed shared-secret can be used to rapidly generate new ses-
  564.       sion-keys.
  565.  
  566.  
  567. 1.4.  Perfect Forward Secrecy
  568.  
  569.    Many security breaches in cryptographic systems have been facilitated
  570.    by designs that generate traffic-encrypting keys (or their equiva-
  571.    lents) well before they are needed, and then keep them around longer
  572.    than necessary.  This creates many opportunities for compromise,
  573.    especially by insiders.  A carefully designed public-key system can
  574.    avoid this problem.
  575.  
  576.    The rule is to avoid using any long-lived keys (such as a RSA public-
  577.    private key-pair) to encrypt session-keys or actual traffic.  Such
  578.    keys should be used solely for identification (entity authentication)
  579.    purposes.
  580.  
  581.    All keys for traffic encryption should be randomly generated immedi-
  582.    ately before use, and then destroyed immediately after use, so that
  583.    they cannot be recovered.  The keys should not be based on the values
  584.    of any previous keys, or any other long-lived stored information.
  585.  
  586.    The Photuris exchange messages can provide perfect forward secrecy,
  587.    as defined by Diffie [Diffie90].  When the calculated shared-secret
  588.    is eventually destroyed, it is unrecoverable.
  589.  
  590.    Theft of the private/secret key used to sign the exchanges would
  591.    allow the thief to impersonate the party in future conversations, but
  592.    it would not decode any past traffic that might have been recorded.
  593.  
  594.  
  595. 1.5.  Security Parameters
  596.  
  597.    Photuris key management is used to determine a number of parameters
  598.    for each Security Association between the communicating parties.
  599.    This includes the particular authentication and/or encryption trans-
  600.    forms, and the key(s) used to authenticate, encrypt or decrypt the
  601.    payload.
  602.  
  603.  
  604.  
  605.  
  606. Karn & Simpson            expires in six months                 [Page 9]
  607. DRAFT                           Photuris                       June 1996
  608.  
  609.  
  610.    The key management implementation usually maintains a table or list
  611.    containing the several parameters for each concurrent Security Asso-
  612.    ciation.  The implementation needs to access that security parameter
  613.    table to determine how to process each datagram.  To indicate a par-
  614.    ticular table entry, a Security Parameters Index (SPI) is used.
  615.  
  616.    The SPI is assigned by the entity controlling the IP Destination: the
  617.    SPI Owner (the receiver).  The parties use the combination of SPI and
  618.    IP Destination to distinguish the correct association.
  619.  
  620.    Each SPI has an associated LifeTime, specified by the SPI owner
  621.    (receiver).  This SPI LifeTime is usually related to the speed of the
  622.    link (typically 30 seconds to 30 minutes).
  623.  
  624.    The SPI can also be deleted by the SPI Owner using the SPI_Update.
  625.    Once the SPI has expired or been deleted, the parties cease using the
  626.    SPI.
  627.  
  628.    Implementation Notes:
  629.  
  630.       The method used for SPI assignment is implementation dependent.
  631.       However, selection of a cryptographically random value can help
  632.       prevent attacks that depend on a predicatable sequence of values.
  633.  
  634.       To prevent synchronization between Photuris exchanges, the imple-
  635.       mentation SHOULD randomly vary each SPI LifeTime by a few seconds.
  636.  
  637.       To prevent resurrection of deleted or expired SPIs, implementa-
  638.       tions SHOULD remember those SPIs, but mark them as unusable until
  639.       the Photuris exchange shared-secret used to create them also
  640.       expires and purges the associated state.
  641.  
  642.       When more than one unexpired SPI is available for the same func-
  643.       tion, a common implementation technique is to select the SPI with
  644.       the greatest remaining LifeTime.  However, selecting randomly
  645.       among a large number of SPIs may provide some defense against
  646.       traffic analysis.
  647.  
  648.       When an implementation detects an incoming SPI that has recently
  649.       expired, but the associated state has not yet been purged, the
  650.       implementation MAY accept the SPI.  The length of time allowed is
  651.       highly dependent on clock drift and variable packet round trip
  652.       time, and is therefore implementation dependent.
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661. Karn & Simpson            expires in six months                [Page 10]
  662. DRAFT                           Photuris                       June 1996
  663.  
  664.  
  665. 1.6.  LifeTimes
  666.  
  667.    The Photuris exchange results in two kinds of state, each with sepa-
  668.    rate LifeTimes.
  669.  
  670.    1) The Exchange LifeTime of the small amount of state associated with
  671.       the Photuris exchange itself.  This state may be viewed as between
  672.       Internet nodes.
  673.  
  674.    2) The SPI LifeTimes of the multiple Security Associations that are
  675.       established.  This state may be viewed as between users and nodes.
  676.  
  677.    The SPI LifeTimes may be shorter or longer than the Exchange Life-
  678.    Time.  These LifeTimes are not required to be related to each other.
  679.  
  680.    When an Exchange-Value expires (or is replaced by a newer value), any
  681.    unexpired derived SPIs are not affected.  This is important to allow
  682.    traffic to continue without interruption during new Photuris
  683.    exchanges.
  684.  
  685.  
  686. 1.7.  Identification
  687.  
  688.    Every party requires its own Identification.  When the Photuris
  689.    exchange is node to node, such as single user personal computers or
  690.    unattended firewalls used in virtual private networks, the nodes
  691.    themselves may be viewed as the users.
  692.  
  693.    When required for secure multi-user environments, the Iden-
  694.    tity_Messages can be used to provide separate limited authentication
  695.    from each user of one node when communicating with another common
  696.    node.  To provide bi-directional user-oriented keying, the parties
  697.    can initiate multiple concurrent Photuris exchanges.  These may pro-
  698.    vide separate user Identification from the Initiator to the Responder
  699.    in each direction.
  700.  
  701.    Each secure multi-user operating system MUST be capable of separately
  702.    maintaining multiple Identification Exchange SPI values for each
  703.    Value Exchange calculated shared-secret.  It is the responsibility of
  704.    the Source to internally segregate the shared-secret and different
  705.    session-keys provided per Destination, and select an appropriate SPI
  706.    for each datagram transmission.
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716. Karn & Simpson            expires in six months                [Page 11]
  717. DRAFT                           Photuris                       June 1996
  718.  
  719.  
  720.    Design Notes:
  721.  
  722.       Successful use of user-oriented keying requires a significant
  723.       level of operating system support.  Use of multi-user segregated
  724.       exchanges likely requires added functionality in the transport API
  725.       of the implementation operating system.  Such mechanisms are out-
  726.       side the scope of this document.
  727.  
  728.       It has been suggested that the Photuris exchange could also be
  729.       established between particular application or transport processes
  730.       associated with a user of a node.  Such mechanisms are emphati-
  731.       cally outside the scope of this document.
  732.  
  733.  
  734. 1.8.  Multicast Support
  735.  
  736.    Key management is more difficult in a multicast environment.
  737.  
  738.    Senders to a multicast group may share common a Security Parameters
  739.    Index, if all communications are using the same security configura-
  740.    tion parameters.  In this case, the receiver only knows that the mes-
  741.    sage came from a node knowing the SPI for the group, and cannot
  742.    authenticate which member of the group sent the datagram.
  743.  
  744.    Multicast groups may also use a separate SPI value for each Source.
  745.    If each sender is keyed separately and asymmetric algorithms are
  746.    used, data origin authentication is also provided.
  747.  
  748.       A given Destination is not necessarily in control of the selection
  749.       process.  In the case of multicast groups, a single node or coop-
  750.       erating subset of the multicast group may work on behalf of the
  751.       entire group to set up a Security Association.
  752.  
  753.    It is anticipated that Photuris would be used first to establish a
  754.    distribution SPI and session-key, and that another orthogonal key
  755.    distribution mechanism will use that SPI to send the group keys.
  756.    This is a matter for future research.  Such mechanisms are outside
  757.    the scope of this document.
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771. Karn & Simpson            expires in six months                [Page 12]
  772. DRAFT                           Photuris                       June 1996
  773.  
  774.  
  775. 2.  Protocol Details
  776.  
  777.    The Initiator begins a Photuris exchange under several circumstances:
  778.  
  779.    -  The Initiator has a datagram that it wishes to send with privacy,
  780.       and has no current Photuris exchange state with the IP Destina-
  781.       tion.  This datagram is discarded, and a Cookie_Request is sent
  782.       instead.
  783.  
  784.    -  The Initiator has received the ICMP message [RFC-1812] Destination
  785.       Unreachable: Communication Administratively Prohibited (Type 3,
  786.       Code 13), and has no current Photuris exchange state with the ICMP
  787.       Source.
  788.  
  789.    -  The Initiator has received the ICMP message [RFC-xxxx] Security
  790.       Failures: Bad SPI (Type 40, Code 0), that matches current Photuris
  791.       exchange state with the ICMP Source.
  792.  
  793.    -  The Initiator has received the ICMP message [RFC-xxxx] Security
  794.       Failures: Need Authentication (Type 40, Code 4), and has no cur-
  795.       rent Photuris exchange state with the ICMP Source.
  796.  
  797.    -  The Initiator has received the ICMP message [RFC-xxxx] Security
  798.       Failures: Need Authorization (Type 40, Code 5), that matches cur-
  799.       rent Photuris exchange state with the ICMP Source.
  800.  
  801.    When the event is an ICMP message, special care MUST be taken that
  802.    the ICMP message actually includes information that matches a previ-
  803.    ously sent IP datagram.  Otherwise, this could provide an opportunity
  804.    for a clogging attack, by stimulating a new Photuris Exchange.
  805.  
  806.  
  807. 2.1.  UDP
  808.  
  809.    All Photuris messages use the User Datagram Protocol header
  810.    [RFC-768].  The Initiator sends to UDP Destination Port 468.
  811.  
  812.    When replying to the Initiator, the Responder swaps the IP Source and
  813.    Destination, and the UDP Source and Destination Ports.
  814.  
  815.    The UDP checksum MUST be correctly calculated when sent.  When a mes-
  816.    sage is received with an incorrect UDP checksum, it is silently dis-
  817.    carded.
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826. Karn & Simpson            expires in six months                [Page 13]
  827. DRAFT                           Photuris                       June 1996
  828.  
  829.  
  830.    Implementation Note:
  831.  
  832.       It is expected that installation of Photuris will ensure that UDP
  833.       checksum calculations are enabled for the computer operating sys-
  834.       tem and later disabling by operators is prevented.
  835.  
  836.  
  837. 2.2.  Header Format
  838.  
  839.    All of the messages have a format similar to the following, as trans-
  840.    mitted left to right in network order (most significant to least sig-
  841.    nificant):
  842.  
  843.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  844.    |                                                               |
  845.    ~                       Initiator-Cookie                        ~
  846.    |                                                               |
  847.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  848.    |                                                               |
  849.    ~                       Responder-Cookie                        ~
  850.    |                                                               |
  851.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  852.    |     Type      |
  853.    +-+-+-+-+-+-+-+-+
  854.  
  855.  
  856.    Initiator-Cookie 16 octets.
  857.  
  858.    Responder-Cookie 16 octets.
  859.  
  860.    Type             one octet.  Each message type has a unique value.
  861.                     Initial values are assigned as follows:
  862.  
  863.                         0  Cookie_Request
  864.                         1  Cookie_Response
  865.                         2  Value_Request
  866.                         3  Value_Response
  867.                         4  Identity_Request
  868.                         5  Secret_Response
  869.                         6  Secret_Request
  870.                         7  Identity_Response
  871.                         8  SPI_Needed
  872.                         9  SPI_Update
  873.                        10  Bad_Cookie
  874.                        11  Resource_Limit
  875.                        12  Verification_Failure
  876.                        13  (reserved)
  877.  
  878.  
  879.  
  880.  
  881. Karn & Simpson            expires in six months                [Page 14]
  882. DRAFT                           Photuris                       June 1996
  883.  
  884.  
  885.    Further details and differences are elaborated in the individual mes-
  886.    sages.
  887.  
  888.    Design Note:
  889.  
  890.       The fixed size of the cookies was chosen for convenience, based on
  891.       the output of commonly available cryptographic hashing functions.
  892.       It is anticipated that this size is likely to be more than suffi-
  893.       cient to protect against very high bit-rate flooding attacks.
  894.  
  895.  
  896. 2.3.  Variable Precision Numbers
  897.  
  898.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  899.    |             Size              |             Value ...
  900.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  901.  
  902.  
  903.    Size             two, four, or eight octets.  The number of signifi-
  904.                     cant bits used in the Value field.  Always transmit-
  905.                     ted most significant octet first.
  906.  
  907.                     When the Size is zero, no Value field is present;
  908.                     there are no significant bits.  This means "missing"
  909.                     or "null".  It should not be confused with the value
  910.                     zero, which includes an indication of the number of
  911.                     significant bits.
  912.  
  913.                     When the most significant octet is in the range 0
  914.                     through 254 (0xfe), the field is two octets.  Both
  915.                     octets are used to indicate the size of the Value
  916.                     field, which ranges from 1 to 65,279 significant
  917.                     bits (in 1 to 8,160 octets).
  918.  
  919.                     When the most significant octet is 255 (0xff), the
  920.                     field is four octets.  The remaining three octets
  921.                     are added to 65,280 to indicate the size of the
  922.                     Value field, which is limited to 16,776,959 signifi-
  923.                     cant bits (in 2,097,120 octets).
  924.  
  925.                     When the most significant two octets are 65,535
  926.                     (0xffff), the field is eight octets.  The remaining
  927.                     six octets are added to 16,776,960 to indicate the
  928.                     size of the Value field.  This is vastly too long
  929.                     for these UDP messages, but is included for com-
  930.                     pleteness.
  931.  
  932.  
  933.  
  934.  
  935.  
  936. Karn & Simpson            expires in six months                [Page 15]
  937. DRAFT                           Photuris                       June 1996
  938.  
  939.  
  940.    Value            Zero or more octets.  Always transmitted most sig-
  941.                     nificant octet first.
  942.  
  943.                     The bits used are right justified within octet
  944.                     boundaries; that is, any unused bits are in the most
  945.                     significant octet.  Unused bits are zero filled.
  946.  
  947.    Shortened forms SHOULD NOT be used when the Value includes a number
  948.    of leading zero significant bits.  The Size SHOULD indicate the cor-
  949.    rect number of significant bits.
  950.  
  951.    Design Notes:
  952.  
  953.       Some of the message fields require a value that may vary in the
  954.       number of bits.  These bits may not make up an integral number of
  955.       octets.
  956.  
  957.       The numbers are assumed to be unsigned.
  958.  
  959.       The emphasis on significant bits was based on concerns that cryp-
  960.       tographic lengths and strengths be readily determined.  This is in
  961.       contrast to the usual concern that each number have only one
  962.       unique (shortest) representation.
  963.  
  964.       When processing datagrams containing variable size values, the
  965.       length must be checked against the overall datagram length.  An
  966.       invalid size (too long or short) that causes a poorly coded
  967.       receiver to abort could be used as a denial of service attack.
  968.  
  969.  
  970. 2.4.  Exchange Schemes
  971.  
  972.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  973.    |            Scheme             |             Size              |
  974.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  975.    |             Value ...
  976.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  977.  
  978.  
  979.    Scheme           two octets.  A unique value indicating the exchange-
  980.                     scheme.  See the "Exchange Scheme List".
  981.  
  982.    Size             two octets, ranging from 0 to 65,279.  See "Variable |
  983.                     Precision Number".
  984.  
  985.    Value            Zero or more octets.  See "Variable Precision Num-   |
  986.                     ber".
  987.  
  988.  
  989.  
  990.  
  991. Karn & Simpson            expires in six months                [Page 16]
  992. DRAFT                           Photuris                       June 1996
  993.  
  994.  
  995.    Selection among several different exchange-schemes is needed to
  996.    enable experimental and proprietary extensions without affecting the
  997.    basic protocol.  The target of the exchange (Responder) specifies a
  998.    list of the schemes supported, and the Initiator chooses one that it
  999.    also supports.
  1000.  
  1001.    The scheme list includes alternative algorithms and distinguishing
  1002.    parameters.  These are mixed in the same list for simplicity.  The
  1003.    implementation can easily distinguish between the separate uses of
  1004.    each supported scheme.  These uses are indicated in the "Exchange
  1005.    Scheme List".
  1006.  
  1007.    Design Notes:
  1008.  
  1009.       Although exchange-schemes offer great flexibility, only a few
  1010.       well-chosen algorithms and parameters are specified.  This pro-
  1011.       vides opportunity for intensive review by the cryptographic commu-
  1012.       nity, reduces implementation complexity, and improves potential
  1013.       for interoperability.
  1014.  
  1015.       Only one exchange-scheme (#2) is required to be supported, and
  1016.       SHOULD be present in every Offered-Schemes list.
  1017.  
  1018.  
  1019. 2.5.  Attributes
  1020.  
  1021.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1022.    |     Type      |    Length     |  Value(s) ...
  1023.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1024.  
  1025.  
  1026.    Type             one octet.  A unique value indicating the kind of
  1027.                     attribute.  See the "Attribute List" for details.
  1028.  
  1029.                     When the Type is zero (padding), no Length field is
  1030.                     present (always zero).
  1031.  
  1032.    Length           one octet.  The size of the Value(s) field in
  1033.                     octets.
  1034.  
  1035.                     When the Length is zero, no Value(s) field is pre-
  1036.                     sent.
  1037.  
  1038.    Value(s)         Zero or more octets.  See the "Attribute List" for
  1039.                     details.
  1040.  
  1041.    Selection among several different security parameter attributes is
  1042.    needed to enable future implementation changes without affecting the
  1043.  
  1044.  
  1045.  
  1046. Karn & Simpson            expires in six months                [Page 17]
  1047. DRAFT                           Photuris                       June 1996
  1048.  
  1049.  
  1050.    basic protocol.  Each party (the sender) offers a list of the
  1051.    attributes supported and its peer (the receiver) selects from that
  1052.    list when making its incoming Security Associations.
  1053.  
  1054.    The attribute list includes authentication, compression, encryption,
  1055.    identification, and other operational types available for exchange
  1056.    between the parties.  These are mixed in the same number space for
  1057.    simplicity.  The implementation can easily distinguish between the
  1058.    separate uses of each supported attribute.  See the "Attribute List"
  1059.    for details.
  1060.  
  1061.    The Length MUST NOT be assumed to be constant for a particular Type.
  1062.    The same Type MAY be present in a list of attributes with varying
  1063.    Lengths.
  1064.  
  1065.    Design Notes:
  1066.  
  1067.       Although attributes offer great flexibility, only a few well-
  1068.       chosen algorithms are specified.  This provides opportunity for
  1069.       intensive review by the cryptographic community, reduces implemen-
  1070.       tation complexity, and improves potential for interoperability.
  1071.  
  1072.       The authentication, compression, encryption and identification
  1073.       mechanisms chosen, as well as the encapsulation modes (if any),
  1074.       need not be the same in both directions.
  1075.  
  1076.       When processing datagrams containing variable length values, the
  1077.       length must be checked against the overall datagram length.  An
  1078.       invalid length (too long or short) that causes a poorly coded
  1079.       receiver to abort could be used as a denial of service attack.
  1080.  
  1081.  
  1082. 2.5.1.  Authentication
  1083.  
  1084.    Authentication decisions are in the SPI Owner (receiver) direction.
  1085.    Only the receiver can determine that arriving traffic is authentic.
  1086.  
  1087.    Its need for authentication is indicated by choosing authentication
  1088.    attributes, and/or authenticated encryption attributes, when creating
  1089.    each SPI.  It enforces authentication through the simple expedient of
  1090.    dropping all datagrams with missing or invalid authentication, and
  1091.    sending an appropriate ICMP Security Failures message [RFC-xxxx],
  1092.    such as Need Authentication (Type 40, Code 4) or Need Authorization
  1093.    (Type 40, Code 5).
  1094.  
  1095.    Support is required for the "MD5-KDP" and "Simple MD5-DP Verifica-
  1096.    tion" Attributes, and they SHOULD be present in every Offered-
  1097.    Attributes list.
  1098.  
  1099.  
  1100.  
  1101. Karn & Simpson            expires in six months                [Page 18]
  1102. DRAFT                           Photuris                       June 1996
  1103.  
  1104.  
  1105.    If the potential SPI Owner (receiver) has not created any authentica-
  1106.    tion SPIs although Photuris exchange state has been established, but
  1107.    it sends ICMP Security Failures messages, the prospective SPI User
  1108.    (sender) is unable to provide authentication for its datagrams.  When
  1109.    this situation occurs, the prospective SPI User SHOULD log the occu-
  1110.    rance, and notify an operator as appropriate.
  1111.  
  1112.    Design Notes:
  1113.  
  1114.       This feature is particularly important for deployment and scaling.
  1115.       It cannot be expected that the prospective SPI User will be omni-
  1116.       scient about the upgrade status and policy of potential receivers.
  1117.       Instead, the datagram receiver indicates its authentication needs.
  1118.  
  1119.       The coupling of the ICMP message with the Cookie Exchange provides
  1120.       additional defense against clogging, at the expense of another
  1121.       round trip.
  1122.  
  1123.  
  1124. 2.5.2.  Encapsulation
  1125.  
  1126.    Encapsulation decisions are in the SPI User (sender) direction.  Only
  1127.    the sender can determine whether each datagram needs privacy protec-
  1128.    tion.  It uses an encryption SPI created by the SPI Owner (receiver),
  1129.    in addition to an authentication SPI (as needed).
  1130.  
  1131.    Since SPI creation is by the receiver, but privacy (and potentially
  1132.    other) decisions are made in the sending direction, a message is
  1133.    needed to stimulate the SPI creation.  When the prospective SPI User
  1134.    (sender) needs privacy protection for a datagram and Photuris
  1135.    exchange state has been established, but has no current privacy
  1136.    encapsulation SPI from the potential SPI Owner (receiver), an
  1137.    SPI_Needed message is sent by the prospective SPI User, listing pri-
  1138.    vacy attributes that both parties have previously offered.  The orig-
  1139.    inal datagram is discarded.
  1140.  
  1141.    Support is required for the "DES-CBC" Attribute, and it SHOULD be
  1142.    present in every Offered-Attributes list.  Where encryption is pro-
  1143.    hibited in a particular environment, the "DES-CBC" Attribute MAY be
  1144.    omitted.
  1145.  
  1146.    If either party has not offered any encryption attributes, the
  1147.    prospective SPI User (sender) is unable to provide privacy for its
  1148.    datagrams.  When this situation occurs, the prospective SPI User
  1149.    SHOULD log the occurance, and notify an operator as appropriate.
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156. Karn & Simpson            expires in six months                [Page 19]
  1157. DRAFT                           Photuris                       June 1996
  1158.  
  1159.  
  1160.    Implementation Notes:
  1161.  
  1162.       Typically, an encryption method is chosen for the primary
  1163.       attribute of the initial SPI in each direction.
  1164.  
  1165.       If integrity is needed, and there is no existing separate SPI that
  1166.       offers authentication, it is recommended that an authentication
  1167.       method be included as a secondary attribute in the initial SPI.
  1168.  
  1169.       When both authentication and encryption attributes are used for
  1170.       the same SPI, care must be exercised that there is no interaction
  1171.       between the algorithms that might reveal some portion of the ses-
  1172.       sion-key(s).  There is no known interaction between MD5 and DES-
  1173.       CBC.
  1174.  
  1175.  
  1176. 3.  Cookie Exchange
  1177.  
  1178.    Initiator                            Responder
  1179.    =========                            =========
  1180.    Cookie_Request                 ->
  1181.                                    <-   Cookie_Response
  1182.                                            offer schemes
  1183.  
  1184.  
  1185.  
  1186. 3.0.1.  Send Cookie_Request
  1187.  
  1188.    The Initiator initializes local state, and generates a "cookie".  The
  1189.    Initiator-Cookie MUST be different in each new Cookie_Request between
  1190.    the same parties.  See "Cookie Generation" for details.
  1191.  
  1192.    By default, the Responder-Cookie and Counter are set to zero.
  1193.  
  1194.    If the new Cookie_Request is in response to a message from a previous
  1195.    exchange in which this party was the Responder, the Responder-Cookie
  1196.    is set to the previous Initiator-Cookie, and the Counter is set to
  1197.    zero.
  1198.  
  1199.    Otherwise, the IP Destination for the Responder is examined.  If any
  1200.    previous exchange between the peer IP nodes has not expired, the
  1201.    Responder-Cookie is set to the most recent Responder-Cookie, and the
  1202.    request Counter is set to the corresponding Counter.
  1203.  
  1204.    The Initiator also starts a retransmission timer.  If no valid
  1205.    Cookie_Response arrives within the time limit, the same
  1206.    Cookie_Request is retransmitted for the remaining number of Retrans-
  1207.    missions.  The Initiator-Cookie value MUST be the same in each such
  1208.  
  1209.  
  1210.  
  1211. Karn & Simpson            expires in six months                [Page 20]
  1212. DRAFT                           Photuris                       June 1996
  1213.  
  1214.  
  1215.    retransmission to the same IP Destination and UDP Port.
  1216.  
  1217.    When Retransmissions have been exceeded, if a Bad_Cookie message has
  1218.    been received during the exchange, the Initiator SHOULD begin the
  1219.    Photuris exchange again by sending a new Cookie_Request.
  1220.  
  1221.  
  1222. 3.0.2.  Receive Cookie_Request
  1223.  
  1224.    On receipt of a Cookie_Request, the Responder determines whether
  1225.    there are sufficient resources to begin another Photuris exchange.
  1226.  
  1227.    -  When too many SPI values are already in use for this particular
  1228.       peer, or too many concurrent exchanges are in progress, or some
  1229.       other resource limit is reached, a Resource_Limit message is sent.
  1230.  
  1231.    -  When any previous exchange initiated by this particular peer has
  1232.       not exceeded the Exchange TimeOut, and the Responder-Cookie does
  1233.       not specify one of these previous exchanges, a Resource_Limit mes-
  1234.       sage is sent.
  1235.  
  1236.    Otherwise, the Responder returns a Cookie_Response.
  1237.  
  1238.    Note that the Responder creates no additional state at this time.
  1239.  
  1240.  
  1241. 3.0.3.  Send Cookie_Response
  1242.  
  1243.    The IP Source for the Initiator is examined.  If any previous
  1244.    exchange between the peer IP nodes has not expired, the response
  1245.    Counter is set to the most recent exchange Counter plus one (allowing
  1246.    for out of order retransmissions).  Otherwise, the response Counter
  1247.    is set to the request Counter plus one.  If the new value is zero
  1248.    (modulo 256), the value is set to one.
  1249.  
  1250.    The Responder generates a cookie.  The Responder-Cookie value in each
  1251.    successive response SHOULD be different.  See "Cookie Generation" for
  1252.    details.
  1253.  
  1254.    The exchange-schemes available between the peers are listed in the
  1255.    Offered-Schemes.
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264.  
  1265.  
  1266. Karn & Simpson            expires in six months                [Page 21]
  1267. DRAFT                           Photuris                       June 1996
  1268.  
  1269.  
  1270. 3.0.4.  Receive Cookie_Response
  1271.  
  1272.    The Initiator validates the Initiator-Cookie, and the Offered-
  1273.    Schemes.
  1274.  
  1275.    -  Whenever an invalid/expired Initiator-Cookie is detected, the mes-
  1276.       sage is silently discarded.
  1277.  
  1278.    -  Whenever the variable length Offered-Schemes do not match the UDP
  1279.       Length, or all Offered-Schemes are obviously defective and/or
  1280.       insufficient for the purposes intended, the message is silently
  1281.       discarded; the implementation SHOULD log the occurance, and notify
  1282.       an operator as appropriate.
  1283.  
  1284.    -  Once a valid message has been received, later Cookie_Responses
  1285.       with matching Initiator-Cookies are also silently discarded, until
  1286.       a new Cookie_Request is sent.
  1287.  
  1288.    When the message is valid, an exchange-scheme is chosen from the list
  1289.    of Offered-Schemes.
  1290.  
  1291.    This Scheme-Choice may affect the next Photuris message sent.  By
  1292.    default, the next Photuris message is a Value_Request.
  1293.  
  1294.    Design Notes:
  1295.  
  1296.       Having the scheme chosen by the Initiator allows the greatest pro-
  1297.       tocol flexibility, and follows the requirement that no state be
  1298.       kept by the Responder until the shared-secret is calculated.
  1299.       Unfortunately, this allows the weakest scheme to be chosen by an
  1300.       attacker.
  1301.  
  1302.       This is no worse than the alternative: to have the Responder
  1303.       choose from weak schemes offered by the attacker.
  1304.  
  1305.       Various proposals for extensions utilize the Scheme-Choice to
  1306.       indicate a different message sequence.  Such mechanisms are out-
  1307.       side the scope of this document.
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321. Karn & Simpson            expires in six months                [Page 22]
  1322. DRAFT                           Photuris                       June 1996
  1323.  
  1324.  
  1325. 3.1.  Cookie_Request
  1326.  
  1327.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1328.    |                                                               |
  1329.    ~                       Initiator-Cookie                        ~
  1330.    |                                                               |
  1331.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1332.    |                                                               |
  1333.    ~                       Responder-Cookie                        ~
  1334.    |                                                               |
  1335.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1336.    |     Type      |     Counter     |
  1337.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1338.  
  1339.  
  1340.    Initiator-Cookie 16 octets.  A randomized value that identifies the
  1341.                     exchange.  The value MUST NOT be zero.  See "Cookie
  1342.                     Generation" for details.
  1343.  
  1344.    Responder-Cookie 16 octets.  Identifies a specific previous exchange.
  1345.                     Copied from a previous Cookie_Response.
  1346.  
  1347.                     When zero, no previous exchange is specified.
  1348.  
  1349.                     When non-zero, and the Counter is zero, contains the
  1350.                     Initiator-Cookie of a previous exchange.  The speci-
  1351.                     fied party is requested to be the Responder in this
  1352.                     exchange, to retain previous party pairings.
  1353.  
  1354.                     When non-zero, and the Counter is also non-zero,
  1355.                     contains the Responder-Cookie of a previous
  1356.                     exchange.  The specified party is requested to be
  1357.                     the Responder in this exchange, to retain previous
  1358.                     party pairings.
  1359.  
  1360.                     Also, can be used for bidirectional User, Transport,
  1361.                     and Process oriented keying.  Such mechanisms are
  1362.                     outside the scope of this document.
  1363.  
  1364.    Type             0
  1365.  
  1366.    Counter          one octet.  Indicates the number of the current
  1367.                     exchange.  Copied from a previous Cookie_Response.
  1368.  
  1369.                     When zero, no previous Responder is specified.
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376. Karn & Simpson            expires in six months                [Page 23]
  1377. DRAFT                           Photuris                       June 1996
  1378.  
  1379.  
  1380. 3.2.  Cookie_Response
  1381.  
  1382.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1383.    |                                                               |
  1384.    ~                       Initiator-Cookie                        ~
  1385.    |                                                               |
  1386.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1387.    |                                                               |
  1388.    ~                       Responder-Cookie                        ~
  1389.    |                                                               |
  1390.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1391.    |     Type      |     Counter     |         Reserved            |
  1392.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1393.    |  Offered-Schemes ...
  1394.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1395.  
  1396.  
  1397.    Initiator-Cookie 16 octets.  Copied from the Cookie_Request.
  1398.  
  1399.    Responder-Cookie 16 octets.  A randomized value that identifies the
  1400.                     exchange.  The value MUST NOT be zero.  See "Cookie
  1401.                     Generation" for details.
  1402.  
  1403.    Type             1
  1404.  
  1405.    Counter          one octet.  Indicates the number of the current
  1406.                     exchange.  Must be greater than zero.
  1407.  
  1408.    Reserved         two octets.  For future use; MUST be set to zero
  1409.                     when transmitted, and MUST be ignored when received.
  1410.  
  1411.    Offered-Schemes  A list of one or more exchange-schemes supported by
  1412.                     the Responder, beginning with most preferred.
  1413.  
  1414.                     Each scheme is four or more octets (see "Exchange
  1415.                     Scheme List").  Only one of each kind of scheme may
  1416.                     be offered.  The end of the list is indicated by the
  1417.                     UDP Length.
  1418.  
  1419.  
  1420.  
  1421.  
  1422.  
  1423.  
  1424.  
  1425.  
  1426.  
  1427.  
  1428.  
  1429.  
  1430.  
  1431. Karn & Simpson            expires in six months                [Page 24]
  1432. DRAFT                           Photuris                       June 1996
  1433.  
  1434.  
  1435. 3.3.  Cookie Generation
  1436.  
  1437.    The exact technique by which a Photuris party generates a cookie is
  1438.    implementation dependent.  The method chosen must satisfy some basic
  1439.    requirements:
  1440.  
  1441.    1. The cookie MUST depend on the specific parties.  This prevents an
  1442.       attacker from obtaining a cookie using a real IP address and UDP
  1443.       port, and then using it to swamp the victim with requests from
  1444.       randomly chosen IP addresses or ports.
  1445.  
  1446.    2. It MUST NOT be possible for anyone other than the issuing entity
  1447.       to generate cookies that will be accepted by that entity.  This
  1448.       implies that the issuing entity will use local secret information
  1449.       in the generation and subsequent verification of a cookie.  It
  1450.       must not be possible to deduce this secret information from any
  1451.       particular cookie.
  1452.  
  1453.    3. The cookie generation and verification methods MUST be fast to
  1454.       thwart attacks intended to sabotage CPU resources.
  1455.  
  1456.    A recommended technique is to use a cryptographic hashing function
  1457.    (such as MD5).
  1458.  
  1459.    An incoming cookie can be verified at any time by regenerating it
  1460.    locally from values contained in the incoming datagram and the local
  1461.    secret random value.
  1462.  
  1463.  
  1464. 3.3.1.  Initiator Cookie
  1465.  
  1466.    The Initiator secret value that affects its cookie SHOULD change for
  1467.    each new Photuris exchange, and is thereafter internally cached on a
  1468.    per Responder basis.  This provides improved synchronization and pro-
  1469.    tection against replay attacks.
  1470.  
  1471.    An alternative is to cache the cookie instead of the secret value.
  1472.    Incoming cookies can be compared directly without the computational
  1473.    cost of regeneration.
  1474.  
  1475.    It is recommended that the cookie be calculated over the secret
  1476.    value, the IP Source and Destination addresses, and the UDP Source
  1477.    and Destination ports.
  1478.  
  1479.  
  1480.  
  1481.  
  1482.  
  1483.  
  1484.  
  1485.  
  1486. Karn & Simpson            expires in six months                [Page 25]
  1487. DRAFT                           Photuris                       June 1996
  1488.  
  1489.  
  1490. 3.3.2.  Responder Cookie
  1491.  
  1492.    The Responder secret value that affects its cookies MAY remain the
  1493.    same for many different Initiators.  However, this secret SHOULD be
  1494.    changed periodically to limit the time for use of its cookies (typi-
  1495.    cally each 60 seconds), and MUST be changed whenever any precalcu-
  1496.    lated Responder Exchange-Value is changed.
  1497.  
  1498.    The Responder-Cookie SHOULD include the Counter from the
  1499.    Cookie_Response.  This provides improved synchronization and protec-
  1500.    tion against replay attacks.
  1501.  
  1502.    It is recommended that the cookie be calculated over the secret
  1503.    value, the IP Source and Destination addresses, its own UDP Destina-
  1504.    tion port, the Counter, and the Initiator-Cookie.
  1505.  
  1506.    On receipt of a Value_Request, the Responder regenerates its cookie
  1507.    for validation.  The cookie is not cached per Initiator to avoid sav-
  1508.    ing state during the initial Cookie Exchange.
  1509.  
  1510.    Once the Value_Response is sent, both Initiator and Responder cookies
  1511.    are cached to identify the exchange.
  1512.  
  1513.  
  1514. 4.  Value Exchange
  1515.  
  1516.    Initiator                            Responder
  1517.    =========                            =========
  1518.    Value_Request                  ->
  1519.       pick scheme
  1520.       offer value
  1521.       offer attributes
  1522.                                    <-   Value_Response
  1523.                                            offer value
  1524.                                            offer attributes
  1525.  
  1526.              [generate shared-secret from exchanged values]
  1527.  
  1528.  
  1529.  
  1530. 4.0.1.  Send Value_Request
  1531.  
  1532.    The Initiator generates an appropriate Exchange-Value for the Scheme-
  1533.    Choice.  This Exchange-Value may be precalculated and used for multi-
  1534.    ple Responders.
  1535.  
  1536.    The IP Destination for the Responder is examined, and the attributes
  1537.    available between the parties are listed in the Offered-Attributes.
  1538.  
  1539.  
  1540.  
  1541. Karn & Simpson            expires in six months                [Page 26]
  1542. DRAFT                           Photuris                       June 1996
  1543.  
  1544.  
  1545.    The Initiator also starts a retransmission timer.  If no valid
  1546.    Value_Response arrives within the time limit, the same Value_Request
  1547.    is retransmitted for the remaining number of Retransmissions.
  1548.  
  1549.    When Retransmissions have been exceeded, if a Bad_Cookie message has
  1550.    been received during the exchange, the Initiator SHOULD begin the
  1551.    Photuris exchange again by sending a new Cookie_Request.
  1552.  
  1553.  
  1554. 4.0.2.  Receive Value_Request
  1555.  
  1556.    The Responder validates the Responder-Cookie, the Counter, the
  1557.    Scheme-Choice, the Exchange-Value, and the Offered-Attributes.
  1558.  
  1559.    -  Whenever an invalid/expired Responder-Cookie is detected, a
  1560.       Bad_Cookie message is sent.
  1561.  
  1562.    -  Whenever an invalid Scheme-Choice is detected, or the Exchange-
  1563.       Value is obviously defective, or the variable length Offered-
  1564.       Attributes do not match the UDP Length, the message is silently
  1565.       discarded; the implementation SHOULD log the occurance, and notify
  1566.       an operator as appropriate.
  1567.  
  1568.    When the message is valid, the Responder sets its Exchange timer to
  1569.    the Exchange TimeOut, and returns a Value_Response.
  1570.  
  1571.    The Responder keeps a copy of the incoming Value_Request cookie pair,
  1572.    and its Value_Response.  If a duplicate Value_Request is received, it
  1573.    merely resends its previous Value_Response, and takes no further
  1574.    action.
  1575.  
  1576.  
  1577. 4.0.3.  Send Value_Response
  1578.  
  1579.    The Responder generates an appropriate Exchange-Value for the Scheme-
  1580.    Choice.  This Exchange-Value may be precalculated and used for multi-
  1581.    ple Initiators.
  1582.  
  1583.    The IP Source for the Initiator is examined, and the attributes
  1584.    available between the parties are listed in the Offered-Attributes.
  1585.  
  1586.    Implementation Notes:
  1587.  
  1588.       At this time, the Responder begins calculation of the shared-
  1589.       secret.  Calculation of the shared-secret is executed in parallel
  1590.       to minimize delay.
  1591.  
  1592.       This may take a substantial amount of time.  The implementor
  1593.  
  1594.  
  1595.  
  1596. Karn & Simpson            expires in six months                [Page 27]
  1597. DRAFT                           Photuris                       June 1996
  1598.  
  1599.  
  1600.       should ensure that retransmission is not blocked by this calcula-
  1601.       tion.  This is not usually a problem, as retransmission timeouts
  1602.       typically exceed calculation time.
  1603.  
  1604.  
  1605. 4.0.4.  Receive Value_Response
  1606.  
  1607.    The Initiator validates the pair of Cookies, the Exchange-Value, and
  1608.    the Offered-Attributes.
  1609.  
  1610.    -  Whenever an invalid/expired cookie is detected, the message is
  1611.       silently discarded.
  1612.  
  1613.    -  Whenever the Exchange-Value is obviously defective, or the vari-
  1614.       able length Offered-Attributes do not match the UDP Length, the
  1615.       message is silently discarded; the implementation SHOULD log the
  1616.       occurance, and notify an operator as appropriate.
  1617.  
  1618.    -  Once a valid message has been received, later Value_Responses with
  1619.       both matching cookies are also silently discarded, until a new
  1620.       Cookie_Request is sent.
  1621.  
  1622.    When the message is valid, the Initiator begins its parallel computa-
  1623.    tion of the shared-secret.
  1624.  
  1625.    When the Initiator completes computation, it sends an Iden-
  1626.    tity_Request to the Responder.
  1627.  
  1628.  
  1629.  
  1630.  
  1631.  
  1632.  
  1633.  
  1634.  
  1635.  
  1636.  
  1637.  
  1638.  
  1639.  
  1640.  
  1641.  
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651. Karn & Simpson            expires in six months                [Page 28]
  1652. DRAFT                           Photuris                       June 1996
  1653.  
  1654.  
  1655. 4.1.  Value_Request
  1656.  
  1657.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1658.    |                                                               |
  1659.    ~                       Initiator-Cookie                        ~
  1660.    |                                                               |
  1661.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1662.    |                                                               |
  1663.    ~                       Responder-Cookie                        ~
  1664.    |                                                               |
  1665.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1666.    |     Type      |     Counter     |       Scheme-Choice         |
  1667.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1668.    |                                                               |
  1669.    ~                   Initiator-Exchange-Value                    ~
  1670.    |                                                               |
  1671.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1672.    |  Initiator-Offered-Attributes ...
  1673.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
  1674.  
  1675.  
  1676.    Initiator-Cookie 16 octets.  Copied from the Cookie_Response.
  1677.  
  1678.    Responder-Cookie 16 octets.  Copied from the Cookie_Response.
  1679.  
  1680.    Type             2
  1681.  
  1682.    Counter          one octet.  Copied from the Cookie_Response.
  1683.  
  1684.    Scheme-Choice    two octets.  A value selected by the Initiator from
  1685.                     the list of Offered-Schemes in the Cookie_Response.
  1686.  
  1687.                     Only the Scheme is specified; the size and value(s)
  1688.                     are implicit.
  1689.  
  1690.    Initiator-Exchange-Value
  1691.                     variable precision number.  Provided by the Initia-
  1692.                     tor for calculating a shared-secret between the par-
  1693.                     ties.  The Value format is indicated by the Scheme-
  1694.                     Choice.
  1695.  
  1696.                     The field may be any integral number of octets in
  1697.                     length, as indicated by its Size field.  It does not
  1698.                     require any particular alignment.  The 32-bit align-
  1699.                     ment shown is for convenience in the illustration.
  1700.  
  1701.    Initiator-Offered-Attributes
  1702.                     A list of Security Parameter attributes supported by
  1703.  
  1704.  
  1705.  
  1706. Karn & Simpson            expires in six months                [Page 29]
  1707. DRAFT                           Photuris                       June 1996
  1708.  
  1709.  
  1710.                     the Initiator.
  1711.  
  1712.                     The contents and usage of this list are further
  1713.                     described in "Offered Attributes List".  The end of
  1714.                     the list is indicated by the UDP Length.
  1715.  
  1716.  
  1717.  
  1718. 4.2.  Value_Response
  1719.  
  1720.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1721.    |                                                               |
  1722.    ~                       Initiator-Cookie                        ~
  1723.    |                                                               |
  1724.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1725.    |                                                               |
  1726.    ~                       Responder-Cookie                        ~
  1727.    |                                                               |
  1728.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1729.    |     Type      |                    Reserved                   |
  1730.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1731.    |                                                               |
  1732.    ~                   Responder-Exchange-Value                    ~
  1733.    |                                                               |
  1734.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1735.    |  Responder-Offered-Attributes ...
  1736.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
  1737.  
  1738.  
  1739.    Initiator-Cookie 16 octets.  Copied from the Value_Request.
  1740.  
  1741.    Responder-Cookie 16 octets.  Copied from the Value_Request.
  1742.  
  1743.    Type             3
  1744.  
  1745.    Reserved         Three octets.  For future use; MUST be set to zero
  1746.                     when transmitted, and MUST be ignored when received.
  1747.  
  1748.    Responder-Exchange-Value
  1749.                     variable precision number.  Provided by the Respon-
  1750.                     der for calculating a shared-secret between the par-
  1751.                     ties.  The Value format is indicated by the current
  1752.                     Scheme-Choice as indicated by the Value_Request.
  1753.  
  1754.                     The field may be any integral number of octets in
  1755.                     length, as indicated by its Size field.  It does not
  1756.                     require any particular alignment.  The 32-bit align-
  1757.                     ment shown is for convenience in the illustration.
  1758.  
  1759.  
  1760.  
  1761. Karn & Simpson            expires in six months                [Page 30]
  1762. DRAFT                           Photuris                       June 1996
  1763.  
  1764.  
  1765.    Responder-Offered-Attributes
  1766.                     A list of Security Parameter attributes supported by
  1767.                     the Responder.
  1768.  
  1769.                     The contents and usage of this list are further
  1770.                     described in "Offered Attributes List".  The end of
  1771.                     the list is indicated by the UDP Length.
  1772.  
  1773.  
  1774.  
  1775. 4.3.  Offered Attribute List
  1776.  
  1777.    This list includes those attributes supported by the party that are
  1778.    available to the other party.  The attribute formats are specified in
  1779.    the "Attribute List", where mandatory attributes are also specified.
  1780.  
  1781.    The list is composed of three sections: Identification-Attributes,
  1782.    Authentication-Attributes, and Encapsulation-Attributes.  Within each
  1783.    section, the attributes are listed from most to least preferable.
  1784.  
  1785.    The first section of the list includes methods of identification.  An
  1786.    Identity-Choice is selected from this list.
  1787.  
  1788.    The second section of the list begins with "AH-Attributes" (#1).  It
  1789.    includes methods of authentication, and other operational types.
  1790.  
  1791.    The third section of the list begins with "ESP-Attributes" (#2).  It
  1792.    includes methods of compression, encryption, and other operational
  1793.    types.
  1794.  
  1795.    Attribute-Choices are selected from the latter two sections of the
  1796.    list.
  1797.  
  1798.    Implementation Notes:
  1799.  
  1800.       Since the offer is made by the prospective SPI User (sender),
  1801.       order of preference likely reflects the capabilities and engineer-
  1802.       ing tradeoffs of a particular implementation.
  1803.  
  1804.       However, the critical processing bottlenecks are frequently in the
  1805.       receiver.  The SPI Owner (receiver) may express its needs by
  1806.       choosing a less preferable attribute.
  1807.  
  1808.       The order may also be affected by operational policy and requested
  1809.       services for an application.  Such considerations are outside the
  1810.       scope of this document.
  1811.  
  1812.  
  1813.  
  1814.  
  1815.  
  1816. Karn & Simpson            expires in six months                [Page 31]
  1817. DRAFT                           Photuris                       June 1996
  1818.  
  1819.  
  1820. 5.  Identification Exchange
  1821.  
  1822.    Initiator                            Responder
  1823.    =========                            =========
  1824.    Identity_Request               ->
  1825.       make SPI
  1826.       pick SPI attribute(s)
  1827.       identify self
  1828.       authenticate
  1829.       (make protection key)
  1830.       (encrypt message)
  1831.                                    <-   Identity_Response
  1832.                                            make SPI
  1833.                                            pick SPI attribute(s)
  1834.                                            identify self
  1835.                                            authenticate
  1836.                                            (make protection key)
  1837.                                            (encrypt message)
  1838.  
  1839.                [make SPI session-keys in each direction]
  1840.  
  1841.    The exchange of messages is ordered, although the formats and mean-
  1842.    ings of the messages are identical in each direction.  The messages
  1843.    are easily distinguished by the parties themselves, by examining the
  1844.    Type and Identification fields.
  1845.  
  1846.    Implementation Notes:
  1847.  
  1848.       The amount of time for the calculation may be dependent on the
  1849.       value of particular bits in secret values used in generating the
  1850.       shared-secret or identity verification.  To prevent analysis of
  1851.       these secret bits by recording the time for calculation, sending
  1852.       of the Identity_Messages SHOULD be delayed until the time expected
  1853.       for the longest calculation.  This will be different for different
  1854.       processor speeds, different algorithms, and different length vari-
  1855.       ables.  Therefore, the method for estimating time is implementa-
  1856.       tion dependent.
  1857.  
  1858.       Any authenticated and/or encrypted user datagrams received before
  1859.       the completion of identity verification can be placed on a queue
  1860.       pending completion of this step.  If verification succeeds, the
  1861.       queue is processed as though the datagrams had arrived subsequent
  1862.       to the verification.  If verification fails, the queue is dis-
  1863.       carded.
  1864.  
  1865.  
  1866.  
  1867.  
  1868.  
  1869.  
  1870.  
  1871. Karn & Simpson            expires in six months                [Page 32]
  1872. DRAFT                           Photuris                       June 1996
  1873.  
  1874.  
  1875. 5.0.1.  Send Identity_Request
  1876.  
  1877.    The Initiator chooses an appropriate Identification, an SPI and SPI
  1878.    LifeTime, a set of Attributes for the SPI, calculates the Verifica-
  1879.    tion, and optionally encrypts the message for party privacy protec-
  1880.    tion (when a Privacy-Method is indicated by the Scheme-Choice).
  1881.  
  1882.    The Initiator also starts a retransmission timer.  If no valid Iden-
  1883.    tity_Response arrives within the time limit, its previous Iden-
  1884.    tity_Request is retransmitted for the remaining number of Retransmis-
  1885.    sions.
  1886.  
  1887.    When Retransmissions have been exceeded, if a Bad_Cookie message has
  1888.    been received during the exchange, the Initiator SHOULD begin the
  1889.    Photuris exchange again by sending a new Cookie_Request.
  1890.  
  1891.  
  1892. 5.0.2.  Receive Identity_Request
  1893.  
  1894.    The Responder validates the pair of Cookies, the Identification, the
  1895.    Verification, and the Attribute-Choices.
  1896.  
  1897.    -  Whenever an invalid/expired cookie is detected, a Bad_Cookie mes-
  1898.       sage is sent.
  1899.  
  1900.    -  Whenever an invalid Identification is detected, or the message
  1901.       verification fails, a Verification_Failure message is sent.
  1902.  
  1903.    -  Whenever the variable length Attribute-Choices do not match the
  1904.       UDP Length, or the attributes are not a subset of those in the
  1905.       Offered-Attributes, the message is silently discarded.
  1906.  
  1907.    -  Whenever such a problem is detected, the Security Association is
  1908.       not established; the implementation SHOULD log the occurance, and
  1909.       notify an operator as appropriate.
  1910.  
  1911.    When the message is valid, the Responder sets its Exchange timer to
  1912.    the Exchange LifeTime (if this has not already been done for a previ-
  1913.    ous exchange).  When its parallel computation of the shared-secret is
  1914.    complete, the Responder returns an Identity_Response.
  1915.  
  1916.    The Responder keeps a copy of the incoming Identity_Request values,
  1917.    and its Identity_Response.  If a duplicate Identity_Request is
  1918.    received, it merely resends its previous Identity_Response, and takes
  1919.    no further action.
  1920.  
  1921.  
  1922.  
  1923.  
  1924.  
  1925.  
  1926. Karn & Simpson            expires in six months                [Page 33]
  1927. DRAFT                           Photuris                       June 1996
  1928.  
  1929.  
  1930. 5.0.3.  Send Identity_Response
  1931.  
  1932.    The Responder chooses an appropriate Identification, an SPI and SPI
  1933.    LifeTime, a set of Attributes for the SPI, calculates the Verifica-
  1934.    tion, and optionally encrypts the message for party privacy protec-
  1935.    tion (when a Privacy-Method is indicated by the Scheme-Choice).
  1936.  
  1937.    The Responder calculates the SPI session-keys in both directions.
  1938.  
  1939.    The Responder sets its Update timer to half the value of its SPI
  1940.    LifeTime.  If no new Photuris exchange occurs within the time limit,
  1941.    and the Exchange timer has not expired, an SPI_Update is sent to cre-
  1942.    ate another SPI.
  1943.  
  1944.    At this time, the Responder begins the authentication and/or encryp-
  1945.    tion of user datagrams.
  1946.  
  1947.  
  1948. 5.0.4.  Receive Identity_Response
  1949.  
  1950.    The Initiator validates the pair of Cookies, the Identification, the
  1951.    Verification, and the Attribute-Choices.
  1952.  
  1953.    -  Whenever an invalid/expired cookie is detected, the message is
  1954.       silently discarded.
  1955.  
  1956.    -  Whenever an invalid Identification is detected, or the message
  1957.       verification fails, a Verification_Failure message is sent.
  1958.  
  1959.    -  Whenever the variable length Attribute-Choices do not match the
  1960.       UDP Length, or the attributes are not a subset of those in the
  1961.       Offered-Attributes, the message is silently discarded.
  1962.  
  1963.    -  Whenever such a problem is detected, the Security Association is
  1964.       not established; the implementation SHOULD log the occurance, and
  1965.       notify an operator as appropriate.
  1966.  
  1967.    -  Once a valid message has been received, later Identity_Responses
  1968.       with both matching cookies are also silently discarded, until a
  1969.       new Cookie_Request is sent.
  1970.  
  1971.    When the message is valid, the Initiator sets its Exchange timer to
  1972.    the Exchange LifeTime (if this has not already been done for a previ-
  1973.    ous exchange).
  1974.  
  1975.    The Initiator calculates the SPI session-keys in both directions.
  1976.  
  1977.    The Initiator sets its Update timer to half the value of its SPI
  1978.  
  1979.  
  1980.  
  1981. Karn & Simpson            expires in six months                [Page 34]
  1982. DRAFT                           Photuris                       June 1996
  1983.  
  1984.  
  1985.    LifeTime.  If no new Photuris exchange occurs within the time limit,
  1986.    and the Exchange timer has not expired, an SPI_Update is sent to cre-
  1987.    ate another SPI.
  1988.  
  1989.    At this time, the Initiator begins the authentication and/or encryp-
  1990.    tion of user datagrams.
  1991.  
  1992.  
  1993. 5.1.  Identity_Messages
  1994.  
  1995.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1996.    |                                                               |
  1997.    ~                       Initiator-Cookie                        ~
  1998.    |                                                               |
  1999.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2000.    |                                                               |
  2001.    ~                       Responder-Cookie                        ~
  2002.    |                                                               |
  2003.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2004.    |     Type      |                    LifeTime                   |
  2005.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2006.    |                   Security-Parameter-Index                    |
  2007.    +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
  2008.    |        Identity-Choice        |                               |
  2009.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
  2010.    |                                                               |
  2011.    ~                        Identification                         ~
  2012.    |                                                               |
  2013.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2014.    |                                                               |
  2015.    ~                         Verification                          ~
  2016.    |                                                               |
  2017.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2018.    |  Attribute-Choices ...
  2019.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2020.                              ... Padding           |   PadLength   |     |
  2021.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2022.  
  2023.  
  2024.    Initiator-Cookie 16 octets.  Copied from the Value_Request.
  2025.  
  2026.    Responder-Cookie 16 octets.  Copied from the Value_Request.
  2027.  
  2028.    Type             4 (Request) or 7 (Response)
  2029.  
  2030.    LifeTime         three octets.  The number of seconds remaining
  2031.                     before the indicated SPI expires.  Must be greater
  2032.                     than zero.
  2033.  
  2034.  
  2035.  
  2036. Karn & Simpson            expires in six months                [Page 35]
  2037. DRAFT                           Photuris                       June 1996
  2038.  
  2039.  
  2040.    Security-Parameter-Index
  2041.                     four octets.  The SPI to be used for incoming commu-
  2042.                     nications.
  2043.  
  2044.                     When zero, indicates that no SPI is created in this
  2045.                     direction.
  2046.  
  2047.    Identity-Choice  An identity attribute is selected from the list of
  2048.                     Offered-Attributes sent by the peer, and is used to
  2049.                     calculate the Verification.
  2050.  
  2051.                     The field may be any integral number of octets in
  2052.                     length, as indicated by its Length field.  It does
  2053.                     not require any particular alignment.  The 16-bit
  2054.                     alignment shown is for convenience in the illustra-
  2055.                     tion.
  2056.  
  2057.    Identification   variable precision number, or alternative format
  2058.                     indicated by the Identity-Choice.  See the
  2059.                     "Attribute List" for details.
  2060.  
  2061.                     The field may be any integral number of octets in
  2062.                     length.  It does not require any particular align-
  2063.                     ment.  The 32-bit alignment shown is for convenience
  2064.                     in the illustration.
  2065.  
  2066.    Verification     variable precision number, or alternative format
  2067.                     indicated by the Identity-Choice.  The calculation
  2068.                     of the value is described in "Identity Verifica-
  2069.                     tion".
  2070.  
  2071.                     The field may be any integral number of octets in
  2072.                     length.  It does not require any particular align-
  2073.                     ment.  The 32-bit alignment shown is for convenience
  2074.                     in the illustration.
  2075.  
  2076.    Attribute-Choices
  2077.                     Zero or more octets.  A list of attributes for this
  2078.                     (non-zero) SPI, selected from the list of Offered-
  2079.                     Attributes supported by the peer.
  2080.  
  2081.                     The contents and usage of this list are further
  2082.                     described in "Attribute Choices List".  The end of
  2083.                     the list is indicated by the UDP Length after remov- |
  2084.                     ing the PadLength and Padding fields (UDP Length -   |
  2085.                     PadLength - 1).
  2086.  
  2087.  
  2088.  
  2089.  
  2090.  
  2091. Karn & Simpson            expires in six months                [Page 36]
  2092. DRAFT                           Photuris                       June 1996
  2093.  
  2094.  
  2095.    Padding          Zero or more octets.  Prior to (optional) encryp-
  2096.                     tion, it is filled to align the PadLength field at a |
  2097.                     boundary appropriate to the Privacy-Method indicated
  2098.                     by the current Scheme-Choice.  The padding values
  2099.                     begin with the value 0, and count up to the number   |
  2100.                     of padding octets (zero relative).  For example, if  |
  2101.                     the PadLength is 5, the padding values are 0, 1, 2,
  2102.                     3, 4.
  2103.  
  2104.                     After (optional) decryption, if the padding octets   |
  2105.                     are not the correct values for the PadLength, then
  2106.                     verification fails.
  2107.  
  2108.    PadLength        one octet.  The size of the Padding field in octets  |
  2109.                     (not including the PadLength field).  The value typ-
  2110.                     ically ranges from 0 to 7, but may be up to 255 to
  2111.                     permit hiding of the actual data length.
  2112.  
  2113.                     This field is always present, even when no Padding
  2114.                     is required.
  2115.  
  2116.    The portion of the message after the SPI MAY be encrypted for party
  2117.    privacy protection.  Such mechanisms are outside the scope of this
  2118.    document.
  2119.  
  2120.    The fields following the SPI are opaque.  That is, the values are set
  2121.    prior to (optional) encryption, and examined only after (optional)
  2122.    decryption.
  2123.  
  2124.  
  2125. 5.2.  Attribute Choices List
  2126.  
  2127.    This list specifies the attributes of a Security Association.  The
  2128.    attribute formats are specified in the "Attribute List".
  2129.  
  2130.    The list is composed of one or two sections: Authentication-
  2131.    Attributes, and/or Encapsulation-Attributes.
  2132.  
  2133.    When sending from the SPI User to the SPI Owner, the attributes are
  2134.    processed in the order listed.  For example,
  2135.  
  2136.       "ESP-Attributes",
  2137.       "DES-CBC",
  2138.       "AH-Attributes",
  2139.       "MD5-KDP",
  2140.  
  2141.    would result in ESP with encryption, and then AH authentication of
  2142.    the ESP payload.
  2143.  
  2144.  
  2145.  
  2146. Karn & Simpson            expires in six months                [Page 37]
  2147. DRAFT                           Photuris                       June 1996
  2148.  
  2149.  
  2150.    The SPI Owner will naturally process the datagram in the reverse
  2151.    order.
  2152.  
  2153.    This ordering also affects the order of key generation.  Both SPI
  2154.    Owner and SPI User generate the keys in the order listed.
  2155.  
  2156.    Implementation Notes:
  2157.  
  2158.       When choices are made from the list of Offered-Attributes, it is
  2159.       not required that any Security Association include every kind of
  2160.       offered attribute in any single SPI, or that a separate SPI be
  2161.       created for every offered attribute.
  2162.  
  2163.       Some analysts have recommended that the AH should always be out-
  2164.       side the ESP.  This is a matter for future research.
  2165.  
  2166.       Some kinds of attributes may be included more than once in a sin-
  2167.       gle SPI.  The set of allowable combinations of attributes are
  2168.       dependent on implementation and operational policy.  Such consid-
  2169.       erations are outside the scope of this document.
  2170.  
  2171.  
  2172. 5.3.  Shared-Secret
  2173.  
  2174.    The shared-secret is used in a number of calculations.  Regardless of
  2175.    the internal representation of the shared-secret, when used in calcu-
  2176.    lations it is in the same form as the Value part of a Variable Preci-
  2177.    sion Number:
  2178.  
  2179.     - most significant octet first.
  2180.     - bits used are right justified within octet boundaries.
  2181.     - any unused bits are in the most significant octet.
  2182.     - unused bits are zero filled.
  2183.  
  2184.  
  2185.  
  2186. 5.4.  Identity Verification
  2187.  
  2188.    This message is authenticated using the Identity-Choice.  The Verifi-
  2189.    cation value is calculated prior to (optional) encryption, and veri-
  2190.    fied after (optional) decryption.
  2191.  
  2192.    The Identity-Choice authentication function is supplied with two
  2193.    input values:
  2194.  
  2195.     - the computed shared-secret.
  2196.     - the data to be verified (as a concatenated sequence of octets).
  2197.  
  2198.  
  2199.  
  2200.  
  2201. Karn & Simpson            expires in six months                [Page 38]
  2202. DRAFT                           Photuris                       June 1996
  2203.  
  2204.  
  2205.    The resulting output value is stored in the Verification field.
  2206.  
  2207.    The Identity-Choice authentication function is calculated over the
  2208.    following concatenated data values:
  2209.  
  2210.     + the Initiator Cookie,
  2211.     + the Responder Cookie,
  2212.     + the Responder Offered-Schemes,
  2213.     + the SPI Owner Exchange-Value,
  2214.     + the SPI Owner Offered-Attributes,
  2215.     + the SPI Owner Identification,
  2216.     + the SPI Owner secret-key,
  2217.     + the SPI User Exchange-Value,
  2218.     + the SPI User Offered-Attributes,
  2219.     + the SPI User Identification (when known),
  2220.     + the SPI User secret-key (when known),
  2221.     + the message Type, LifeTime and SPI fields,
  2222.     + the Attribute-Choices following the Verification field,
  2223.     + the Padding (if any),
  2224.     + the PadLength.                                                     |
  2225.  
  2226.    Note that the order of the Exchange-Value and Offered-Attribute
  2227.    fields is different in each direction.  The Identification and SPI
  2228.    fields are also likely to be different in each direction.  Note also
  2229.    that the SPI User Identification and secret-key will be omitted in
  2230.    the Identity_Request.
  2231.  
  2232.    If the verification fails, the users are notified, and a Verifica-
  2233.    tion_Failure message is sent, without adding any Security Associa-
  2234.    tions.  On success, normal operation begins with the authentication
  2235.    and/or encryption of user datagrams.
  2236.  
  2237.    Implementation Notes:
  2238.  
  2239.       This is separate from any authentication method specified for
  2240.       Security Associations.
  2241.  
  2242.       The exact details of the Identification and secret-keys that are
  2243.       included in the Verification calculation are dependent on the
  2244.       Identity-Choice, as described in the "Attribute List".
  2245.  
  2246.       Each party may wish to keep their own trusted databases, such as
  2247.       the Pretty Good Privacy (PGP) web of trust, and accept only those
  2248.       identities found there.  Failure to find the Identification in
  2249.       either an internal or external database results in the same Veri-
  2250.       fication_Failure message as failure of the verification computa-
  2251.       tion.
  2252.  
  2253.  
  2254.  
  2255.  
  2256. Karn & Simpson            expires in six months                [Page 39]
  2257. DRAFT                           Photuris                       June 1996
  2258.  
  2259.  
  2260.       The hash of the Exchange-Value includes both the Size and Value
  2261.       fields.  The hash of the Offered-Attributes and Attribute-Choices
  2262.       includes the Type, Length and Value fields.
  2263.  
  2264.  
  2265. 5.5.  Session-Key Computation
  2266.  
  2267.    Each Security Association SPI has one or more session-keys.  These
  2268.    keys are generated based on the attributes of the Security Associa-
  2269.    tion.  See the "Attribute List" for details.
  2270.  
  2271.    The Attribute-Choice specified key generation cryptographic hash is
  2272.    used to create an SPI session-key for that particular attribute.
  2273.    This hash is calculated over the following concatenated values:
  2274.  
  2275.     + the Initiator Cookie,
  2276.     + the Responder Cookie,
  2277.     + the SPI Owner secret-key,
  2278.     + the SPI User secret-key,
  2279.     + the message Verification field,
  2280.     + the computed shared-secret.
  2281.  
  2282.    Since the message Verification field is likely to be different in
  2283.    each direction, and the order of the secret-keys is different in each
  2284.    direction, the resulting session-key will usually be different in
  2285.    each direction.
  2286.  
  2287.    When a larger number of keying-bits are needed than are available
  2288.    from the specified cryptographic hash, these keying-bits are gener-
  2289.    ated by duplicating the trailing shared-secret, and recalculating the
  2290.    hash.  That is, the first hash will have one trailing copy of the
  2291.    shared-secret, the second hash will have two trailing copies of the
  2292.    shared-secret, and so forth.
  2293.  
  2294.    Implementation Notes:
  2295.  
  2296.       Inclusion of the Verification field (dependent on the SPI),
  2297.       together with the party secret-keys, allows reuse of the same
  2298.       Exchange-Values and resulting shared-secret among several parties
  2299.       and multiple users of the same node without generating the same
  2300.       session-keys.
  2301.  
  2302.       The exact details of the Verification field and secret-keys that
  2303.       are included in the session-key calculation are dependent on the
  2304.       Identity-Choices, as described in the "Attribute List".
  2305.  
  2306.       To avoid keeping the secret-keys in memory after the initial veri-
  2307.       fication, it is often possible to precompute the hash of the
  2308.  
  2309.  
  2310.  
  2311. Karn & Simpson            expires in six months                [Page 40]
  2312. DRAFT                           Photuris                       June 1996
  2313.  
  2314.  
  2315.       initial octets of the concatenated data values for each direction.
  2316.  
  2317.       When both authentication and encryption attributes are used for
  2318.       the same SPI, there may be multiple session-keys associated with
  2319.       the same SPI.  These session-keys are generated in the order of
  2320.       the Attribute-Choices list.
  2321.  
  2322.  
  2323. 6.  SPI Messages
  2324.  
  2325.    SPI User                             SPI Owner
  2326.    ========                             =========
  2327.    SPI_Needed                     ->
  2328.       list SPI attribute(s)
  2329.       make integrity key
  2330.       authenticate
  2331.       (encrypt message)
  2332.                                    <-   SPI_Update
  2333.                                            make SPI
  2334.                                            pick SPI attribute(s)
  2335.                                            make SPI session-key(s)
  2336.                                            make integrity key
  2337.                                            authenticate
  2338.                                            (encrypt message)
  2339.  
  2340.    The exchange of messages is not related to the Initiator and Respon-
  2341.    der.  Instead, either party may send one of these messages at any
  2342.    time.  The messages are easily distinguished by the parties.
  2343.  
  2344.  
  2345. 6.0.1.  Send SPI_Needed
  2346.  
  2347.    At any time after completion of the Identification Exchange, either
  2348.    party can send an SPI_Needed.  This message is sent when a prospec-
  2349.    tive SPI User needs particular attributes for a datagram (such as
  2350.    privacy protection), and no current SPI has those attributes.
  2351.  
  2352.    The prospective SPI User selects from the intersection of attributes
  2353.    that both parties have previously offered, calculates the Verifica-
  2354.    tion, and optionally encrypts the message for party privacy protec-
  2355.    tion (when a Privacy-Method is indicated by the Scheme-Choice).
  2356.  
  2357.  
  2358.  
  2359.  
  2360.  
  2361.  
  2362.  
  2363.  
  2364.  
  2365.  
  2366. Karn & Simpson            expires in six months                [Page 41]
  2367. DRAFT                           Photuris                       June 1996
  2368.  
  2369.  
  2370. 6.0.2.  Receive SPI_Needed
  2371.  
  2372.    The potential SPI Owner validates the pair of Cookies, the Verifica-
  2373.    tion, and the Attributes-Needed.
  2374.  
  2375.    -  Whenever an invalid/expired cookie is detected, a Bad_Cookie mes-
  2376.       sage is sent.
  2377.  
  2378.    -  Whenever the message verification fails, a Verification_Failure
  2379.       message is sent.
  2380.  
  2381.    -  Whenever the variable length Attributes-Needed do not match the
  2382.       UDP Length, or the attributes are not a subset of those in the
  2383.       Offered-Attributes, the message is silently discarded.
  2384.  
  2385.    -  Whenever such a problem is detected, the Security Association is
  2386.       not established; the implementation SHOULD log the occurance, and
  2387.       notify an operator as appropriate.
  2388.  
  2389.    When the message is valid, the party SHOULD send an SPI_Update that
  2390.    includes the necessary attributes.
  2391.  
  2392.  
  2393. 6.0.3.  Send SPI_Update
  2394.  
  2395.    At any time after completion of the Identification Exchange, either
  2396.    party can send an SPI_Update.  This message has effect in only one
  2397.    direction, from the SPI Owner to the SPI User.
  2398.  
  2399.    The SPI Owner chooses an SPI and SPI LifeTime, a set of Attributes
  2400.    for the SPI, calculates the Verification, and optionally encrypts the
  2401.    message for party privacy protection (when a Privacy-Method is indi-
  2402.    cated by the Scheme-Choice).
  2403.  
  2404.  
  2405. 6.0.4.  Receive SPI_Update
  2406.  
  2407.    The prospective SPI User validates the pair of Cookies, the Verifica-
  2408.    tion, and the Attributes-Needed.
  2409.  
  2410.    -  Whenever an invalid/expired cookie is detected, a Bad_Cookie mes-
  2411.       sage is sent.
  2412.  
  2413.    -  Whenever the message verification fails, a Verification_Failure
  2414.       message is sent.
  2415.  
  2416.    -  Whenever the variable length Attribute-Choices do not match the
  2417.       UDP Length, or the attributes are not a subset of those in the
  2418.  
  2419.  
  2420.  
  2421. Karn & Simpson            expires in six months                [Page 42]
  2422. DRAFT                           Photuris                       June 1996
  2423.  
  2424.  
  2425.       Offered-Attributes, the message is silently discarded.
  2426.  
  2427.    -  Whenever such a problem is detected, the Security Association is
  2428.       not established; the implementation SHOULD log the occurance, and
  2429.       notify an operator as appropriate.
  2430.  
  2431.    When the message is valid, further actions are dependent on the value
  2432.    of the SPI LifeTime field, as described later.
  2433.  
  2434.  
  2435. 6.1.  SPI_Needed
  2436.  
  2437.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2438.    |                                                               |
  2439.    ~                       Initiator-Cookie                        ~
  2440.    |                                                               |
  2441.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2442.    |                                                               |
  2443.    ~                       Responder-Cookie                        ~
  2444.    |                                                               |
  2445.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2446.    |     Type      |                    Reserved                   |
  2447.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2448.    |                           Reserved                            |
  2449.    +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
  2450.    |                                                               |
  2451.    ~                         Verification                          ~
  2452.    |                                                               |
  2453.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2454.    |  Attributes-Needed ...
  2455.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2456.                              ... Padding           |   PadLength   |     |
  2457.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2458.  
  2459.  
  2460.    Initiator-Cookie 16 octets.  Copied from the Value_Request.
  2461.  
  2462.    Responder-Cookie 16 octets.  Copied from the Value_Request.
  2463.  
  2464.    Type             8
  2465.  
  2466.    Reserved         seven octets.  For future use; MUST be set to zero
  2467.                     when transmitted, and MUST be ignored when received.
  2468.  
  2469.    Verification     variable precision number, or other format indicated
  2470.                     by the Scheme-Choice.  The calculation of the value
  2471.                     is described in "Validity Verification".
  2472.  
  2473.  
  2474.  
  2475.  
  2476. Karn & Simpson            expires in six months                [Page 43]
  2477. DRAFT                           Photuris                       June 1996
  2478.  
  2479.  
  2480.                     The field may be any integral number of octets in
  2481.                     length.  It does not require any particular align-
  2482.                     ment.  The 32-bit alignment shown is for convenience
  2483.                     in the illustration.
  2484.  
  2485.    Attributes-Needed
  2486.                     Four or more octets.  A list of two or more
  2487.                     attributes, selected from the list of Offered-
  2488.                     Attributes supported by the peer.
  2489.  
  2490.                     The contents and usage of this list are as previ-
  2491.                     ously described in "Attribute Choices List".  The
  2492.                     end of the list is indicated by the UDP Length after |
  2493.                     removing the PadLength and Padding fields (UDP       |
  2494.                     Length - PadLength - 1).
  2495.  
  2496.    Padding          Zero or more octets.  Prior to (optional) encryp-
  2497.                     tion, it is filled to align the PadLength field at a |
  2498.                     boundary appropriate to the Privacy-Method indicated
  2499.                     by the current Scheme-Choice.  The padding values
  2500.                     begin with the value 0, and count up to the number   |
  2501.                     of padding octets (zero relative).  For example, if  |
  2502.                     the PadLength is 5, the padding values are 0, 1, 2,
  2503.                     3, 4.
  2504.  
  2505.                     After (optional) decryption, if the padding octets   |
  2506.                     are not the correct values for the PadLength, then
  2507.                     verification fails.
  2508.  
  2509.    PadLength        one octet.  The size of the Padding field in octets  |
  2510.                     (not including the PadLength field).  The value typ-
  2511.                     ically ranges from 0 to 7, but may be up to 255 to
  2512.                     permit hiding of the actual data length.
  2513.  
  2514.                     This field is always present, even when no Padding
  2515.                     is required.
  2516.  
  2517.    The portion of the message after the SPI MAY be encrypted for party
  2518.    privacy protection, in the same fashion specified for Iden-
  2519.    tity_Messages.
  2520.  
  2521.    The fields following the SPI are opaque.  That is, the values are set
  2522.    prior to (optional) encryption, and examined only after (optional)
  2523.    decryption.
  2524.  
  2525.  
  2526.  
  2527.  
  2528.  
  2529.  
  2530.  
  2531. Karn & Simpson            expires in six months                [Page 44]
  2532. DRAFT                           Photuris                       June 1996
  2533.  
  2534.  
  2535. 6.2.  SPI_Update
  2536.  
  2537.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2538.    |                                                               |
  2539.    ~                       Initiator-Cookie                        ~
  2540.    |                                                               |
  2541.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2542.    |                                                               |
  2543.    ~                       Responder-Cookie                        ~
  2544.    |                                                               |
  2545.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2546.    |     Type      |                    LifeTime                   |
  2547.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2548.    |                   Security-Parameter-Index                    |
  2549.    +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
  2550.    |                                                               |
  2551.    ~                         Verification                          ~
  2552.    |                                                               |
  2553.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2554.    |  Attribute-Choices ...
  2555.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2556.                              ... Padding           |   PadLength   |     |
  2557.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2558.  
  2559.  
  2560.    Initiator-Cookie 16 octets.  Copied from the Value_Request.
  2561.  
  2562.    Responder-Cookie 16 octets.  Copied from the Value_Request.
  2563.  
  2564.    Type             9
  2565.  
  2566.    LifeTime         three octets.  The number of seconds remaining
  2567.                     before the indicated SPI expires.  The value zero
  2568.                     indicates deletion of the indicated SPI.
  2569.  
  2570.    Security-Parameter-Index
  2571.                     four octets.  The SPI to be used for incoming commu-
  2572.                     nications.
  2573.  
  2574.                     This may be a new SPI value (for creation), or an
  2575.                     existing SPI value (for deletion).  The value zero
  2576.                     indicates all old SPIs for this IP Destination (used
  2577.                     for deletion).
  2578.  
  2579.    Verification     variable precision number, or other format indicated
  2580.                     by the Scheme-Choice.  The calculation of the value
  2581.                     is described in "Validity Verification".
  2582.  
  2583.  
  2584.  
  2585.  
  2586. Karn & Simpson            expires in six months                [Page 45]
  2587. DRAFT                           Photuris                       June 1996
  2588.  
  2589.  
  2590.                     The field may be any integral number of octets in
  2591.                     length.  It does not require any particular align-
  2592.                     ment.  The 32-bit alignment shown is for convenience
  2593.                     in the illustration.
  2594.  
  2595.    Attribute-Choices
  2596.                     Four or more octets.  A list of two or more
  2597.                     attributes for this SPI, selected from the list of
  2598.                     Offered-Attributes supported by the peer.
  2599.  
  2600.                     The contents and usage of this list are as previ-
  2601.                     ously described in "Attribute Choices List".  The
  2602.                     end of the list is indicated by the UDP Length after |
  2603.                     removing the PadLength and Padding fields (UDP       |
  2604.                     Length - PadLength - 1).
  2605.  
  2606.    Padding          Zero or more octets.  Prior to (optional) encryp-
  2607.                     tion, it is filled to align the PadLength field at a |
  2608.                     boundary appropriate to the Privacy-Method indicated
  2609.                     by the current Scheme-Choice.  The padding values
  2610.                     begin with the value 0, and count up to the number   |
  2611.                     of padding octets (zero relative).  For example, if  |
  2612.                     the PadLength is 5, the padding values are 0, 1, 2,
  2613.                     3, 4.
  2614.  
  2615.                     After (optional) decryption, if the padding octets   |
  2616.                     are not the correct values for the PadLength, then
  2617.                     verification fails.
  2618.  
  2619.    PadLength        one octet.  The size of the Padding field in octets  |
  2620.                     (not including the PadLength field).  The value typ-
  2621.                     ically ranges from 0 to 7, but may be up to 255 to
  2622.                     permit hiding of the actual data length.
  2623.  
  2624.                     This field is always present, even when no Padding
  2625.                     is required.
  2626.  
  2627.    The portion of the message after the SPI MAY be encrypted for party
  2628.    privacy protection, in the same fashion specified for Iden-
  2629.    tity_Messages.
  2630.  
  2631.    The fields following the SPI are opaque.  That is, the values are set
  2632.    prior to (optional) encryption, and examined only after (optional)
  2633.    decryption.
  2634.  
  2635.  
  2636.  
  2637.  
  2638.  
  2639.  
  2640.  
  2641. Karn & Simpson            expires in six months                [Page 46]
  2642. DRAFT                           Photuris                       June 1996
  2643.  
  2644.  
  2645. 6.2.1.  Creation
  2646.  
  2647.    When the SPI LifeTime is greater than zero, the SPI_Update can be
  2648.    used to create a new Security Association.  Frequently, this message
  2649.    is used to create replacement SPIs as the LifeTime of an earlier SPI
  2650.    approaches expiration.
  2651.  
  2652.    In addition, this message allows more rapid SPI creation for high
  2653.    bandwidth applications.  The messages flow in the opposite direction
  2654.    from the primary traffic flow.
  2655.  
  2656.    The new session-keys are calculated in the same fashion as the Iden-
  2657.    tity_Messages.  Since the SPI value is always different than any pre-
  2658.    vious SPI during the Exchange LifeTime of the shared-secret, the
  2659.    resulting session-keys will necessarily be different from all others
  2660.    used in the same direction.
  2661.  
  2662.    When the peer finds that too many SPI values are already in use for
  2663.    this party, or some other resource limit is reached, a Resource_Limit
  2664.    message is sent.
  2665.  
  2666.    No retransmission timer is necessary.  Success is indicated by the
  2667.    peer use of the new SPI.
  2668.  
  2669.    Should all creation attempts fail, eventually the peer will find that
  2670.    all existing SPIs have expired, and will begin the Photuris exchange
  2671.    again by sending a new Cookie_Request.  When appropriate, this
  2672.    Cookie_Request MAY include a Responder-Cookie to retain previous
  2673.    party pairings.
  2674.  
  2675.  
  2676. 6.2.2.  Deletion
  2677.  
  2678.    When the SPI LifeTime is zero, the SPI_Update can be used to delete
  2679.    existing Security Associations.  This is especially useful when the
  2680.    application that needed them terminates, to prevent another applica-
  2681.    tion from replaying the datagrams.
  2682.  
  2683.    No retransmission timer is necessary.  This message is advisory, to
  2684.    reduce the number of ICMP Security Failures messages.
  2685.  
  2686.    Should any deletion attempts fail, the peer will learn that the
  2687.    deleted SPIs are invalid through the normal ICMP Security Failures
  2688.    messages, and will initiate a Photuris exchange by sending a new
  2689.    Cookie_Request.
  2690.  
  2691.  
  2692.  
  2693.  
  2694.  
  2695.  
  2696. Karn & Simpson            expires in six months                [Page 47]
  2697. DRAFT                           Photuris                       June 1996
  2698.  
  2699.  
  2700. 6.2.3.  Modification
  2701.  
  2702.    The SPI_Update cannot be used to modify existing Security Associa-
  2703.    tions, such as lengthen an existing SPI LifeTime, resurrect an
  2704.    expired SPI, or add/remove an Attribute-Choice.
  2705.  
  2706.    On receipt, such an otherwise valid message is silently discarded.
  2707.  
  2708.  
  2709. 6.2.4.  Validity Verification
  2710.  
  2711.    This message is authenticated using the Validity-Method indicated by
  2712.    the current Scheme-Choice (see "Exchange Scheme List").  The Verifi-
  2713.    cation value is calculated prior to (optional) encryption, and veri-
  2714.    fied after (optional) decryption.
  2715.  
  2716.    The Validity-Method authentication function is supplied with two
  2717.    input values:
  2718.  
  2719.     - the computed shared-secret,
  2720.     - the data to be verified (as a concatenated sequence of octets).
  2721.  
  2722.    The resulting output value is stored in the Verification field.
  2723.  
  2724.    The Validity-Method authentication function is calculated over the
  2725.    following concatenated data values:
  2726.  
  2727.     + the Initiator Cookie,
  2728.     + the Responder Cookie,
  2729.     + the SPI Owner Identity Verification,
  2730.     + the SPI User Identity Verification,
  2731.     + the message Type, LifeTime and SPI fields,
  2732.     + the Attribute-Choices following the Verification field,
  2733.     + the Padding (if any),
  2734.     + the PadLength.                                                     |
  2735.  
  2736.    Note that the order of the Identity Verification fields (from the
  2737.    Identity_Messages) is different in each direction.
  2738.  
  2739.    If the verification fails, the users are notified, and a Verifica-
  2740.    tion_Failure message is sent, without adding or deleting any Security
  2741.    Associations.  On success, normal operation begins with the authenti-
  2742.    cation and/or encryption of user datagrams.
  2743.  
  2744.  
  2745.  
  2746.  
  2747.  
  2748.  
  2749.  
  2750.  
  2751. Karn & Simpson            expires in six months                [Page 48]
  2752. DRAFT                           Photuris                       June 1996
  2753.  
  2754.  
  2755.    Implementation Notes:
  2756.  
  2757.       This is separate from any authentication method specified for
  2758.       Security Associations.
  2759.  
  2760.       The hash of the Identity Verification includes both the Size and
  2761.       Value fields.  The hash of the Attribute-Choices includes the
  2762.       Type, Length and Value fields.
  2763.  
  2764.  
  2765. 7.  Error Messages
  2766.  
  2767.    Issued in response to Photuris state loss or other problems.  The
  2768.    message has effect in only one direction.  No retransmission timer is
  2769.    necessary.
  2770.  
  2771.    These messages are not encrypted for party privacy protection.
  2772.  
  2773.    The receiver checks the Cookies for validity.  Special care MUST be
  2774.    taken that the Cookie pair in the Error Message actually match a pair
  2775.    currently in use, and that the protocol is currently in a state where
  2776.    such an Error Message might be expected.  Otherwise, these messages
  2777.    could provide an opportunity for a denial of service attack.  Invalid
  2778.    messages are silently discarded.
  2779.  
  2780.  
  2781. 7.1.  Bad_Cookie
  2782.  
  2783.    For the format of the message, see "Header Format".  There are no
  2784.    additional fields.
  2785.  
  2786.    Initiator-Cookie 16 octets.  Copied from the offending message.
  2787.  
  2788.    Responder-Cookie 16 octets.  Copied from the offending message.
  2789.  
  2790.    Type             10
  2791.  
  2792.    This error message is sent when a Value_Request, Identity_Request,
  2793.    SPI_Needed, or SPI_Update is received, and the receiver's Cookie is
  2794.    invalid or the associated Exchange-Value has expired.
  2795.  
  2796.    During the Photuris exchange, when this error message is received, it
  2797.    has no immediate effect on the operation of the protocol phases.
  2798.    When Retransmissions have been exceeded, if this error message has
  2799.    been received, the Initiator SHOULD begin the Photuris exchange again
  2800.    by sending a new Cookie_Request.
  2801.  
  2802.    After the Photuris exchange has completed, when this error message is
  2803.  
  2804.  
  2805.  
  2806. Karn & Simpson            expires in six months                [Page 49]
  2807. DRAFT                           Photuris                       June 1996
  2808.  
  2809.  
  2810.    received in response to an SPI_Needed or SPI_Update, the party SHOULD
  2811.    initiate a Photuris exchange by sending a new Cookie_Request.
  2812.  
  2813.    However, existing SPIs are not deleted.  They expire normally, and
  2814.    are purged sometime later.
  2815.  
  2816.    Design Notes:
  2817.  
  2818.       This message will occur normally at any time after the
  2819.       Cookie_Response, whenever the Responder dynamically changes its
  2820.       local secret for cookie generation and the secret for generating
  2821.       its Exchange-Value, or either party expires its exchange state.
  2822.  
  2823.       On the other hand, an observer could attempt to use this message
  2824.       for denial of service by copying the valid cookies and sending it
  2825.       faster than the round-trip of the valid exchange peer.
  2826.  
  2827.       Therefore, the protocol gracefully recovers during the Value and
  2828.       Identification Exchanges by using the Retransmission TimeOut to
  2829.       give sufficient time for a valid exchange reply to arrive.  It
  2830.       recovers during the SPI Messages by using cached prior exchange
  2831.       values to eliminate the intensive calculations of a new Photuris
  2832.       exchange.
  2833.  
  2834.  
  2835. 7.2.  Resource_Limit
  2836.  
  2837.    For the format of the message, see "Header Format".  There are no
  2838.    additional fields.
  2839.  
  2840.    Initiator-Cookie 16 octets.  Copied from the offending message.
  2841.  
  2842.    Responder-Cookie 16 octets.  Copied from the offending message.
  2843.  
  2844.    Type             11
  2845.  
  2846.    This error message is sent when a Cookie_Request or SPI_Update is
  2847.    received, and too many SPI values are already in use for that peer,
  2848.    or some other Photuris resource is unavailable.
  2849.  
  2850.    During the Photuris exchange, when this error message is received in
  2851.    response to a Cookie_Request, the implementation SHOULD double the
  2852.    retransmission timeout for sending another Cookie_Request.
  2853.  
  2854.    After the Photuris exchange has completed, when this error message is
  2855.    received in response to an SPI_Update, the implementation SHOULD NOT
  2856.    send another SPI_Update until it has deleted an existing SPI, or
  2857.    waited for a cached SPI entry to expire.
  2858.  
  2859.  
  2860.  
  2861. Karn & Simpson            expires in six months                [Page 50]
  2862. DRAFT                           Photuris                       June 1996
  2863.  
  2864.  
  2865.    Design Notes:
  2866.  
  2867.       This message will occur normally instead of a Cookie_Response,
  2868.       during such events as server recovery after a power failure.  It   |
  2869.       also regulates overly aggressive SPI creation.
  2870.  
  2871.       Again, an observer could attempt to use this message for denial of
  2872.       service by copying the valid cookies and sending it faster than
  2873.       the round-trip of the valid exchange peer.
  2874.  
  2875.       Therefore, the protocol gracefully recovers during the Cookie
  2876.       Exchange by using the Retransmission TimeOut to give sufficient
  2877.       time for a valid exchange reply to arrive.  It recovers during the
  2878.       SPI Messages by the normal SPI expiration process.
  2879.  
  2880.  
  2881. 7.3.  Verification_Failure
  2882.  
  2883.    For the format of the message, see "Header Format".  There are no
  2884.    additional fields.
  2885.  
  2886.    Initiator-Cookie 16 octets.  Copied from the offending message.
  2887.  
  2888.    Responder-Cookie 16 octets.  Copied from the offending message.
  2889.  
  2890.    Type             12
  2891.  
  2892.    This error message is sent when an Identity_Message, SPI_Needed or
  2893.    SPI_Update is received, and verification fails.
  2894.  
  2895.    When this error message is received, the implementation SHOULD log
  2896.    the occurance, and notify an operator as appropriate.  However,
  2897.    receipt has no effect on the operation of the protocol.
  2898.  
  2899.    Design Notes:
  2900.  
  2901.       This message will not occur normally.  The message will notify an  |
  2902.       operator when the Identification used is not valid, or an inter-   |
  2903.       cepter has been sending faked exchange messages that failed final  |
  2904.       authentication.
  2905.  
  2906.       Again, an observer could attempt to use this message for denial of
  2907.       service by copying the valid cookies and sending it faster than
  2908.       the round-trip of the valid exchange peer.
  2909.  
  2910.       Therefore, the protocol gracefully recovers during the Identifica-
  2911.       tion Exchange by using the Retransmission TimeOut to give suffi-
  2912.       cient time for a valid exchange reply to arrive.  It recovers
  2913.  
  2914.  
  2915.  
  2916. Karn & Simpson            expires in six months                [Page 51]
  2917. DRAFT                           Photuris                       June 1996
  2918.  
  2919.  
  2920.       during the SPI Messages by using cached prior exchange values to
  2921.       eliminate the intensive calculations of a new Photuris exchange.
  2922.  
  2923.  
  2924.    8.  Public Value Exchanges
  2925.  
  2926.       Photuris is based in principle on public-key cryptography, specif-
  2927.       ically Diffie-Hellman key exchange.  Exchange of D-H Exchange-
  2928.       Values based on private/secret values results in a mutual shared-
  2929.       secret between the parties.  This shared-secret can be used on its
  2930.       own, or to generate a series of session-keys for authentication
  2931.       and encryption of subsequent traffic.
  2932.  
  2933.       Widespread deployment and use of an Internet Security protocol is
  2934.       possible without public-key cryptography.  For example, Kerberos
  2935.       [RFC-1510] can generate host-pair keys for use in Internet Secu-
  2936.       rity, much as it now generates session-keys for use by encrypted
  2937.       telnet and other "kerberized" applications.
  2938.  
  2939.       The Kerberos model has some widely recognized drawbacks.  Foremost
  2940.       is the requirement for a highly available on-line Key Distribution
  2941.       Center (KDC), with a database containing every principal's secret-
  2942.       key.  This carries significant security risks.
  2943.  
  2944.       Public-key cryptography enables decentralization.  Entities gener-
  2945.       ate session-keys without real-time communication with any other
  2946.       party.
  2947.  
  2948.       This draft assumes familiarity with the Diffie-Hellman public-key
  2949.       algorithm.  A good description can be found in [Schneier95].
  2950.  
  2951.  
  2952.    8.1.  Modular Exponentiation Groups
  2953.  
  2954.       The original Diffie-Hellman technique [DH76] specified modular
  2955.       exponentiation.  An Exchange-Value is generated using a generator
  2956.       (g), raised to a private/secret exponent (x), modulo a prime (p).
  2957.  
  2958.          (g**x) mod p
  2959.  
  2960.       When these public-values are exchanged between parties, the par-
  2961.       ties can calculate a shared-secret value between themselves.
  2962.  
  2963.          (g**xy) mod p
  2964.  
  2965.       The security depends on the relative difficulty of calculating
  2966.       discrete logarithms, compared to the ease of exponentiation in the
  2967.       same finite field.  The prime modulus MUST be sufficiently large
  2968.  
  2969.  
  2970.  
  2971. Karn & Simpson            expires in six months                [Page 52]
  2972. DRAFT                           Photuris                       June 1996
  2973.  
  2974.  
  2975.       to prevent calculation of its discrete logs within the lifetime of
  2976.       the protected data.
  2977.  
  2978.       When a strong prime modulus and generator pair are well chosen,
  2979.       the difficulty of a discrete log attack is maximized.  By choosing
  2980.       the pairs in advance, analysis of the pair characteristics is pos-
  2981.       sible.  This analysis can promote confidence in the security of
  2982.       the implementations.
  2983.  
  2984.       The generator (g) and modulus (p) are established by the Scheme-
  2985.       Choice (see "Exchange Scheme List" for details).  They are offered
  2986.       in the Cookie_Response, and one pair is chosen in the
  2987.       Value_Request.
  2988.  
  2989.       The exponents (x) and (y) are kept secret by the parties.  Only    |
  2990.       the public-value result of the modular exponentiation with (x) or
  2991.       (y) is sent as the Initiator and Responder Exchange-Value.         |
  2992.  
  2993.       These public-values are represented in single Variable Precision   |
  2994.       Numbers.  The Size of these Exchange-Values will match the Size of |
  2995.       the modulus (p).
  2996.  
  2997.  
  2998.    8.2.  Moduli Selection
  2999.  
  3000.       Each implementation proposes one or more moduli in its Offered-
  3001.       Schemes.  Every implementation MUST support up to 4096-bit moduli.
  3002.  
  3003.       For any particular Photuris node, these moduli need not change for
  3004.       significant periods of time; likely days or weeks.  A background
  3005.       process can periodically generate new moduli.
  3006.  
  3007.  
  3008.    8.2.1.  Strong Primes
  3009.  
  3010.       Ideally, each prime modulus (p) should have the property that both
  3011.       p and (p-1)/2 are prime.  This provides the strongest defense
  3012.       against factoring.
  3013.  
  3014.       Discovery of strong primes is extremely computationally intensive,
  3015.       and practically impossible for commercially available processors
  3016.       to find in a reasonable interactive time.  Complete verification
  3017.       can take hours or days.
  3018.  
  3019.  
  3020.  
  3021.  
  3022.  
  3023.  
  3024.  
  3025.  
  3026. Karn & Simpson            expires in six months                [Page 53]
  3027. DRAFT                           Photuris                       June 1996
  3028.  
  3029.  
  3030.    8.2.2.  Prime-Order Subgroups
  3031.  
  3032.       An alternative is the use of a large subgroup where q is a prime
  3033.       factor of (p-1).  This technique is described in [OW96], and based
  3034.       on [Schnorr91].
  3035.  
  3036.       Discovery of prime-order subgroups is less computationally inten-
  3037.       sive than verification of strong primes.  The computational cost
  3038.       of finding such a prime (p) with a prime divisor (q) is only a
  3039.       little more than finding any random prime.
  3040.  
  3041.  
  3042.    8.2.3.  Unstructured Primes
  3043.  
  3044.       A random unstructured prime (p), where (p-1) may have small prime
  3045.       factors, is subject to a Pohlig-Hellman attack.  Strong primes and
  3046.       prime-order subgroups prevent this attack.
  3047.  
  3048.       Discovery of random primes is the bulk of the computational pro-
  3049.       cessing of the previously described primes.  Therefore, they
  3050.       SHOULD be used instead of unstructured primes.
  3051.  
  3052.  
  3053.    8.2.4.  Non-Primes
  3054.  
  3055.       Technically, the modulus is not required to be prime.  Any suffi-
  3056.       ciently large modulus would be useful, and provide a minimal
  3057.       amount of security.
  3058.  
  3059.       To improve security, a potential modulus should be sieved to
  3060.       reject those with small prime factors (less than 1,000,000).
  3061.  
  3062.       However, the security of non-prime moduli is considered insuffi-
  3063.       cient for data of any long-term value.  These SHOULD NOT be used,
  3064.       except in the most ephemeral cases -- such as cellular telephones,
  3065.       and other low computational power devices.
  3066.  
  3067.  
  3068.    8.2.5.  Bootstrap Moduli
  3069.  
  3070.       Each implementation is likely to use a fixed modulus during its
  3071.       bootstrap, until it can generate another modulus in the back-
  3072.       ground.  As the bootstrap modulus will be widely distributed, and
  3073.       reused whenever the machine reinitializes, it SHOULD be a strong
  3074.       prime to provide the greatest long-term protection.
  3075.  
  3076.  
  3077.  
  3078.  
  3079.  
  3080.  
  3081. Karn & Simpson            expires in six months                [Page 54]
  3082. DRAFT                           Photuris                       June 1996
  3083.  
  3084.  
  3085.    8.2.6.  Learning Moduli
  3086.  
  3087.       As Photuris exchanges are initiated, new moduli will be learned
  3088.       from the Responder Offered-Schemes.  The Initiator MAY cache these
  3089.       moduli for its own use.
  3090.  
  3091.       Before offering any learned modulus, the implementation MUST per-
  3092.       form at least one iteration of probable primality verification.
  3093.       In this fashion, many processors will perform verification in par-
  3094.       allel as moduli are passed around.
  3095.  
  3096.       When primality verification failures are found, the failed moduli
  3097.       SHOULD be retained for some (implementation dependent) period of
  3098.       time, to avoid relearning and retesting after subsequent
  3099.       exchanges.
  3100.  
  3101.  
  3102.    8.3.  Generator Selection
  3103.  
  3104.       The generator (g) should be chosen such that the secret exponents
  3105.       will generate all possible public-values, evenly distributed
  3106.       throughout the range of the modulus (p), without cycling through a
  3107.       smaller subset.  Such a generator is called a "primitive root"
  3108.       (which is trivial to find when p is strong).
  3109.  
  3110.       Only one generator (2) is required to be supported.
  3111.  
  3112.       Implementation Notes:
  3113.  
  3114.          One useful technique is to select the generator, and then limit
  3115.          the modulus selection sieve to primes with that generator.
  3116.  
  3117.             2   when p (mod 24) = 11.
  3118.             3   when p (mod 12) = 5.
  3119.             5   when p (mod 10) = 3 or 7.
  3120.  
  3121.          The required generator (2) improves efficiency in multiplica-
  3122.          tion performance.  It is usable even when it is not a primitive
  3123.          root, as it still covers half of the space of possible
  3124.          residues.
  3125.  
  3126.  
  3127.    8.4.  Exponent Selection
  3128.  
  3129.       Each implementation generates a separate random secret exponent
  3130.       for each different modulus.  Then, a D-H Exchange-Value is calcu-
  3131.       lated for the given modulus, generator, and exponent.
  3132.  
  3133.  
  3134.  
  3135.  
  3136. Karn & Simpson            expires in six months                [Page 55]
  3137. DRAFT                           Photuris                       June 1996
  3138.  
  3139.  
  3140.       The exponent 0 will generate the public value 1, and exponent 1
  3141.       will generate the public value g mod p.  These exponents do not
  3142.       qualify as secret.
  3143.  
  3144.       Although the same exponent and Exchange-Value may be used with
  3145.       several parties whenever the same modulus and generator are used,
  3146.       the exponent SHOULD be changed at random intervals.  A background
  3147.       process can periodically destroy the old values, generate a new
  3148.       random secret exponent, and recalculate the Exchange-Value.  This
  3149.       limits the exposure of both the secret exponent and shared-secret,
  3150.       protecting earlier communications, as past secrets are not kept
  3151.       for possible discovery by a future intrusion.  Also, the secret
  3152.       exponent currently in use is less likely to be anticipated, as the
  3153.       element of random timing is introduced.
  3154.  
  3155.       Since these operations involve several time-consuming modular
  3156.       exponentiations, moving them to the "background" substantially
  3157.       improves the apparent execution speed of the Photuris protocol.
  3158.       It also reduces CPU loading sufficiently to allow a single pub-
  3159.       lic/private key-pair to be used in several closely spaced Photuris
  3160.       executions, when creating Security Associations with several dif-
  3161.       ferent nodes over a short period of time.
  3162.  
  3163.       Consideration should also be given to the speed versus security
  3164.       tradeoffs of modular exponentiation.  While an exponent may be
  3165.       used that is shorter than the modulus, the cryptologic literature
  3166.       is indeterminate as to the minimum proportionate size.  This spec-
  3167.       ification recommends that the exponent length be at least twice
  3168.       the desired cryptographic strength of the longest session-key
  3169.       needed by the strongest offered-attribute.
  3170.  
  3171.       Implementation Notes:
  3172.  
  3173.          The size of the exponent is entirely implementation dependent,
  3174.          is unknown to the other party, and can be easily changed.
  3175.  
  3176.          A single modular exponentiation on a 486-66DX2 processor using
  3177.          RSAREF and Borland C under MS-DOS took 20 seconds with a
  3178.          1024-bit prime modulus and a 1024-bit random exponent.  This
  3179.          dropped to about 1 to 1.5 seconds when the random exponent was
  3180.          shortened to 128 bits, with the same 1024-bit modulus.
  3181.  
  3182.          Other precomputation suggestions are described in [BGMW93] and
  3183.          [Rooij94].
  3184.  
  3185.  
  3186.  
  3187.  
  3188.  
  3189.  
  3190.  
  3191. Karn & Simpson            expires in six months                [Page 56]
  3192. DRAFT                           Photuris                       June 1996
  3193.  
  3194.  
  3195.    9.  Exchange Scheme List
  3196.  
  3197.       Initial values are assigned as follows:
  3198.  
  3199.       (0)   Reserved.
  3200.  
  3201.       (1)   Reserved.
  3202.  
  3203.       (2)   Implementation Required.  Any modulus (p) with a recommended
  3204.             generator (g) of 2.  The modulus is contained in the
  3205.             Exchange Scheme Value field in the list of Offered-Schemes.
  3206.  
  3207.             The "Identification Exchange" and "SPI Messages" Privacy-
  3208.             Method is "not protected".
  3209.  
  3210.             The "SPI Messages" Validity-Method is "MD5-DP".
  3211.  
  3212.       (3)   Exchange-Schemes 3 to 255 are intended for future well-known
  3213.             published schemes.
  3214.  
  3215.       (256) Exchange-Schemes 256 to 32767 are intended for vendor-
  3216.             specific unpublished schemes.  Implementors wishing a number
  3217.             MUST request the number from the authors.
  3218.  
  3219.       (32768)
  3220.             Exchange-Schemes 32768 to 65535 are available for cooperat-
  3221.             ing parties to indicate private schemes, regardless of ven-
  3222.             dor implementation.  These numbers are not reserved, and are
  3223.             subject to duplication.  Other criteria, such as the IP
  3224.             Source and Destination of the Cookie_Request, are used to
  3225.             differentiate the particular Exchange-Schemes available.
  3226.  
  3227.  
  3228.  
  3229.  
  3230.  
  3231.  
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.  
  3239.  
  3240.  
  3241.  
  3242.  
  3243.  
  3244.  
  3245.  
  3246. Karn & Simpson            expires in six months                [Page 57]
  3247. DRAFT                           Photuris                       June 1996
  3248.  
  3249.  
  3250.    10.  Validity Methods
  3251.    10.1.  MD5-DP
  3252.  
  3253.       As described in "Validity Verification", the MD5 [RFC-1321] hash
  3254.       is calculated over the concatenation of
  3255.  
  3256.          MD5( key, data, datafill, key, md5fill )
  3257.  
  3258.       The leading key is not padded to any particular alignment.
  3259.  
  3260.       The datafill uses the same pad-with-length technique defined for
  3261.       md5fill.  The length includes the leading key and data.
  3262.  
  3263.       The resulting Verification field is a 128-bit Variable Precision   |
  3264.       Number (18 octets including Size).
  3265.  
  3266.  
  3267.    11.  Attribute List
  3268.  
  3269.       Implementors wishing a number MUST request the number from the
  3270.       authors.  Initial values are assigned as follows:
  3271.  
  3272.         Use    Type
  3273.          -       0* padding
  3274.          -       1* AH-Attributes
  3275.          -       2* ESP-Attributes
  3276.          I       3* Simple MD5-DP Verification
  3277.          A       5* MD5-KDP
  3278.          E       8* DES-CBC
  3279.          X     255  Organizational
  3280.  
  3281.          A  AH Attribute-Choice
  3282.          E  ESP Attribute-Choice
  3283.          I  Identity-Choice
  3284.          X  dependent on list location
  3285.          *  feature must be supported (mandatory)
  3286.  
  3287.       Other attributes are specified in companion documents.
  3288.  
  3289.  
  3290.  
  3291.  
  3292.  
  3293.  
  3294.  
  3295.  
  3296.  
  3297.  
  3298.  
  3299.  
  3300.  
  3301. Karn & Simpson            expires in six months                [Page 58]
  3302. DRAFT                           Photuris                       June 1996
  3303.  
  3304.  
  3305.    11.1.  Padding
  3306.  
  3307.       +-+-+-+-+-+-+-+-+
  3308.       |     Type      |
  3309.       +-+-+-+-+-+-+-+-+
  3310.  
  3311.  
  3312.       Type             0
  3313.  
  3314.       Each attribute may have value fields that are multiple octets.  To
  3315.       facilitate processing efficiency, these fields are aligned on
  3316.       integral modulo 8 octet (64-bit) boundaries.
  3317.  
  3318.       Padding is accomplished by insertion of 1 to 7 Type 0 padding
  3319.       octets before the attribute that needs alignment.
  3320.  
  3321.       No padding is used after the final attribute in a list.
  3322.  
  3323.  
  3324.    11.2.  AH-Attributes
  3325.  
  3326.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  3327.       |     Type      |    Length     |
  3328.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  3329.  
  3330.  
  3331.       Type             1
  3332.  
  3333.       Length           0
  3334.  
  3335.       When a list of Attributes is specified, this Attribute begins the
  3336.       section of the list which applies to the Authentication Header
  3337.       (AH).
  3338.  
  3339.  
  3340.  
  3341.  
  3342.  
  3343.  
  3344.  
  3345.  
  3346.  
  3347.  
  3348.  
  3349.  
  3350.  
  3351.  
  3352.  
  3353.  
  3354.  
  3355.  
  3356. Karn & Simpson            expires in six months                [Page 59]
  3357. DRAFT                           Photuris                       June 1996
  3358.  
  3359.  
  3360.    11.3.  ESP-Attributes
  3361.  
  3362.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  3363.       |     Type      |    Length     |
  3364.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  3365.  
  3366.  
  3367.       Type             2
  3368.  
  3369.       Length           0
  3370.  
  3371.       When a list of Attributes is specified, this Attribute begins the
  3372.       section of the list which applies to the Encapsulating Security
  3373.       Payload (ESP).
  3374.  
  3375.  
  3376.    11.4.  Simple MD5-DP Verification
  3377.  
  3378.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  3379.       |     Type      |    Length     |
  3380.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  3381.  
  3382.  
  3383.       Type             3
  3384.  
  3385.       Length           0
  3386.  
  3387.       When selected as an Identity-Choice, the immediately following
  3388.       Identification field contains an unstructured Variable Precision   |
  3389.       Number.  Valid Identifications and symmetric secret-keys are pre-
  3390.       configured by the parties.
  3391.  
  3392.       There is no required format or content for the Identification
  3393.       value.  The value may be a number or string of any kind.
  3394.  
  3395.       Typically, the Identification is a user name, a Fully Qualified
  3396.       Domain Name, or an email address which contains a user name and a
  3397.       domain name.  Examples include:
  3398.  
  3399.          user
  3400.          node.site.
  3401.          user@node.site.
  3402.          rcmd@node.site.
  3403.          "Mundane Name" <user@node.site>                                 |
  3404.  
  3405.       There is no requirement that the domain name match any of the par-
  3406.       ticular IP addresses in use by the parties.
  3407.  
  3408.  
  3409.  
  3410.  
  3411. Karn & Simpson            expires in six months                [Page 60]
  3412. DRAFT                           Photuris                       June 1996
  3413.  
  3414.  
  3415.       The authentication symmetric secret-key (as specified) is selected
  3416.       based on the contents of the Identification field.  All implemen-
  3417.       tations must support at least 62 octets.  The selected symmetric
  3418.       secret-key SHOULD provide at least 64-bits of cryptographic
  3419.       strength.
  3420.  
  3421.       As described in "Identity Verification", the MD5 [RFC-1321] hash
  3422.       is calculated over the concatenation of:
  3423.  
  3424.          MD5( key, data, datafill, key, md5fill )
  3425.  
  3426.       The leading key is not padded to any particular alignment.
  3427.  
  3428.       The datafill uses the same pad-with-length technique defined for
  3429.       md5fill.  The length includes the leading key and data.
  3430.  
  3431.       The resulting Verification field is a 128-bit Variable Precision   |
  3432.       Number (18 octets including Size).
  3433.  
  3434.       For identity verification and session-key calculation, the authen-
  3435.       tication symmetric secret-key is also used as the calculation
  3436.       secret-key.
  3437.  
  3438.  
  3439.    11.5.  MD5-KDP
  3440.  
  3441.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  3442.       |     Type      |    Length     |
  3443.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  3444.  
  3445.  
  3446.       Type             5
  3447.  
  3448.       Length           0
  3449.  
  3450.       May be selected as an AH Attribute-Choice, pursuant to [RFC-1828]
  3451.       et sequitur.  The selected Exchange Scheme SHOULD provide at least
  3452.       64-bits of cryptographic strength.
  3453.  
  3454.       MD5 [RFC-1321] is used as the key generation cryptographic hash
  3455.       for generating the SPI session-key, as described in "Session-Key
  3456.       Computation".  The most significant 496-bits (62 octets) of the
  3457.       generated hashes are used for the key.
  3458.  
  3459.       The remaining least significant 16-bits (2 octets) of the last
  3460.       hash are discarded.  When combined with other uses of key genera-
  3461.       tion for the same SPI, the next such attribute will begin with a
  3462.       new hash.
  3463.  
  3464.  
  3465.  
  3466. Karn & Simpson            expires in six months                [Page 61]
  3467. DRAFT                           Photuris                       June 1996
  3468.  
  3469.  
  3470.       Profile:
  3471.  
  3472.          When negotiated with Photuris, the transform differs slightly
  3473.          from [RFC-1828].
  3474.  
  3475.          The form of the authenticated message is:
  3476.  
  3477.             MD5( key, keyfill, datagram, datafill, key, md5fill )
  3478.  
  3479.          The additional datafill protects against the attack described
  3480.          in [PO96].  This is also filled to the next 512-bit boundary,
  3481.          using the same pad-with-length technique defined for MD5.  The
  3482.          length includes the leading key and data.
  3483.  
  3484.  
  3485.    11.6.  DES-CBC
  3486.  
  3487.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  3488.       |     Type      |    Length     |
  3489.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  3490.  
  3491.  
  3492.       Type             8
  3493.  
  3494.       Length           0
  3495.  
  3496.       May be selected as an ESP Attribute-Choice, pursuant to [RFC-1829]
  3497.       et sequitur.  The selected Exchange Scheme SHOULD provide at least
  3498.       56-bits of cryptographic strength.
  3499.  
  3500.       MD5 [RFC-1321] is used as the key generation cryptographic hash
  3501.       for generating the SPI session-key, as described in "Session-Key
  3502.       Computation".  The most significant 64-bits (8 octets) of the gen- |
  3503.       erated hash are used for the key.  The least significant bit of
  3504.       each key octet is ignored (or set to parity when the implementa-
  3505.       tion requires).
  3506.  
  3507.       If the key matches any of the weak, semi-weak or possibly weak
  3508.       keys [Schneier95, pages 280-282], that key is discarded; the next
  3509.       64-bits of the generated hash are used instead, recursively.
  3510.  
  3511.       The remaining octets of the last hash are discarded.  When com-
  3512.       bined with other uses of key generation for the same SPI, the next
  3513.       such attribute will begin with a new hash.
  3514.  
  3515.  
  3516.  
  3517.  
  3518.  
  3519.  
  3520.  
  3521. Karn & Simpson            expires in six months                [Page 62]
  3522. DRAFT                           Photuris                       June 1996
  3523.  
  3524.  
  3525.       Profile:
  3526.  
  3527.          When negotiated with Photuris, the transform differs slightly
  3528.          from [RFC-1829].
  3529.  
  3530.          The IV is always 32-bits.
  3531.  
  3532.          The 64-bit IV is generated from the 32-bit SPI field followed
  3533.          by (concatenated with) the 32-bit IV field.  The bit-wise com-
  3534.          plement of the 32-bit IV value is XOR'd with the first 32-bits
  3535.          (SPI).
  3536.  
  3537.          The padding values begin with the value 0, and count up to the  |
  3538.          number of padding octets (zero relative).  For example, if the
  3539.          plaintext length is 41, the padding values are 0, 1, 2, 3, 4,   |
  3540.          and the following PadLength is 5.
  3541.  
  3542.          After decryption, if the padding octets are not the correct     |
  3543.          values for the PadLength, then the payload is discarded, and a
  3544.          "Decryption Failed" error is indicated, as described in [RFC-
  3545.          xxxx].
  3546.  
  3547.  
  3548.    11.7.  Organizational
  3549.  
  3550.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  3551.       |     Type      |    Length     |              OUI
  3552.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  3553.              ...      |     Kind      |  Value(s) ...
  3554.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  3555.  
  3556.  
  3557.       Type             255
  3558.  
  3559.       Length           >= 4
  3560.  
  3561.                        When the Length is four, no Value(s) field is
  3562.                        present.
  3563.  
  3564.       OUI              three octets.  The vendor's Organizationally
  3565.                        Unique Identifier, assigned by IEEE 802 (see
  3566.                        [RFC-1700] for contact details).  The bits within
  3567.                        the octet are in canonical order, and the most
  3568.                        significant octet is transmitted first.
  3569.  
  3570.       Kind             one octet.  Indicates a sub-type for the OUI.
  3571.                        There is no standardization for this field.  Each
  3572.                        OUI implements its own values.
  3573.  
  3574.  
  3575.  
  3576. Karn & Simpson            expires in six months                [Page 63]
  3577. DRAFT                           Photuris                       June 1996
  3578.  
  3579.  
  3580.       Value(s)         Zero or more octets.  The details are implementa-
  3581.                        tion specific.
  3582.  
  3583.       Some implementors might not need nor want to publish their propri- |
  3584.       etary algorithms and attributes.  This OUI mechanism is available
  3585.       to specify these without encumbering the authors with proprietary
  3586.       number requests.
  3587.  
  3588.  
  3589.  
  3590.  
  3591.  
  3592.  
  3593.  
  3594.  
  3595.  
  3596.  
  3597.  
  3598.  
  3599.  
  3600.  
  3601.  
  3602.  
  3603.  
  3604.  
  3605.  
  3606.  
  3607.  
  3608.  
  3609.  
  3610.  
  3611.  
  3612.  
  3613.  
  3614.  
  3615.  
  3616.  
  3617.  
  3618.  
  3619.  
  3620.  
  3621.  
  3622.  
  3623.  
  3624.  
  3625.  
  3626.  
  3627.  
  3628.  
  3629.  
  3630.  
  3631. Karn & Simpson            expires in six months                [Page 64]
  3632. DRAFT                           Photuris                       June 1996
  3633.  
  3634.  
  3635.    A.  Automaton
  3636.  
  3637.       An example automaton is provided to illustrate the operation of
  3638.       the protocol.  It is incomplete and non-deterministic; many of the |
  3639.       Good/Bad semantic decisions are policy-based or too difficult to   |
  3640.       represent in tabular form.  Where conflicts appear between this
  3641.       example and the text, the text takes precedence.
  3642.  
  3643.       The finite-state automaton is defined by events, actions and state
  3644.       transitions.  Events include reception of external commands such
  3645.       as expiration of a timer, and reception of datagrams from a peer.
  3646.       Actions include the starting of timers and transmission of data-
  3647.       grams to the peer.
  3648.  
  3649.       Events
  3650.  
  3651.       DU13 = Communication Administratively Prohibited
  3652.       SF0  = Bad SPI
  3653.       SF4  = Need Authentication
  3654.       SF5  = Need Authorization
  3655.       WP   = Want Privacy
  3656.  
  3657.       RCQ+ = Receive Cookie_Request (Good)
  3658.       RCQ- = Receive Cookie_Request (Bad)
  3659.       RCR+ = Receive Cookie_Response (Good)
  3660.       RCR- = Receive Cookie_Response (Bad)
  3661.  
  3662.       RVQ+ = Receive Value_Request (Good)
  3663.       RVQ- = Receive Value_Request (Bad)
  3664.       RVR+ = Receive Value_Response (Good)
  3665.       RVR- = Receive Value_Response (Bad)
  3666.  
  3667.       RIQ+ = Receive Identity_Request (Good)
  3668.       RIQ- = Receive Identity_Request (Bad)
  3669.       RIR+ = Receive Identity_Response (Good)
  3670.       RIR- = Receive Identity_Response (Bad)
  3671.  
  3672.       RUN+ = Receive SPI_Needed (Good)
  3673.       RUN- = Receive SPI_Needed (Bad)
  3674.       RUM+ = Receive SPI_Update (Good)
  3675.       RUM- = Receive SPI_Update (Bad)
  3676.  
  3677.       RBC  = Receive Bad Cookie
  3678.       RRL  = Receive Resource Limit
  3679.       RVF  = Receive Verification Failure
  3680.  
  3681.       TO+  = Timeout with counter > 0
  3682.       TO-  = Timeout with counter expired
  3683.  
  3684.  
  3685.  
  3686. Karn & Simpson            expires in six months                [Page 65]
  3687. DRAFT                           Photuris                       June 1996
  3688.  
  3689.  
  3690.       UTO  = Update TimeOut
  3691.       XTO  = Exchange TimeOut
  3692.  
  3693.  
  3694.       Actions
  3695.  
  3696.       scq  = Send Cookie_Request
  3697.       scr  = Send Cookie_Response
  3698.  
  3699.       svq  = Send Value_Request
  3700.       svr  = Send Value_Response
  3701.  
  3702.       siq  = Send Identity_Request
  3703.       sir  = Send Identity_Response
  3704.  
  3705.       sum  = Send SPI_Update
  3706.  
  3707.       se*  = Send error message (see text)
  3708.       sbc  = Send Bad Cookie
  3709.       srl  = Send Resource Limit
  3710.       svf  = Send Verification Failure
  3711.  
  3712.       brto = Backoff Retransmission TimeOut                              |
  3713.       buto = Backoff Update TimeOut
  3714.       rto  = Set Retransmission TimeOut                                  |
  3715.       uto  = Set Update TimeOut
  3716.       xto  = Set Exchange TimeOut
  3717.  
  3718.       log  = log operator message
  3719.  
  3720.  
  3721.    A.1.  State Transition Table
  3722.  
  3723.       States are indicated horizontally, and events are read vertically.
  3724.       State transitions and actions are represented in the form
  3725.       action/new-state.  Multiple actions are separated by commas, and
  3726.       may continue on succeeding lines as space requires; multiple
  3727.       actions may be implemented in any convenient order.  The state may
  3728.       be followed by a letter, which indicates an explanatory footnote.
  3729.       The dash ('-') indicates an illegal transition.
  3730.  
  3731.  
  3732.  
  3733.  
  3734.  
  3735.  
  3736.  
  3737.  
  3738.  
  3739.  
  3740.  
  3741. Karn & Simpson            expires in six months                [Page 66]
  3742. DRAFT                           Photuris                       June 1996
  3743.  
  3744.  
  3745.       Initiator
  3746.  
  3747.             |    0         1         2         3         4
  3748.             | Initial    Cookie  CookieBad   Value    ValueBad
  3749.       ------+--------------------------------------------------
  3750.        DU13 |rto,scq/1 rto,scq/1 rto,scq/1     3         4               |
  3751.        SF0  |rto,scq/1     1         2         3         4               |
  3752.        SF4  |rto,scq/1     1         2         3         4               |
  3753.        SF5  |rto,scq/1     1         2         3         4               |
  3754.        WP   |rto,scq/1     1         2         3         4               |
  3755.             |
  3756.        RCR+ |    -     rto,svq/3 rto,svq/3     3         4               |
  3757.        RCR- |    0         1         2         3         4
  3758.        RVR+ |    -         -         -     rto,siq/5 rto,siq/5           |
  3759.        RVR- |    0         1         2         3         4
  3760.        RIR+ |    -         -         -         -         -
  3761.        RIR- |    0         1         2         3         4
  3762.             |
  3763.        RUN+ |    -         -         -         -         -
  3764.        RUN- |  sbc/0     sbc/1     sbc/2     sbc/3     sbc/4
  3765.        RUM+ |    -         -         -         -         -
  3766.        RUM- |  sbc/0     sbc/1     sbc/2     sbc/3     sbc/4
  3767.             |
  3768.        RBC  |    -         2         2         4         4
  3769.        RRL  |    -       brto/1    brto/2      3         4               |
  3770.        RVF  |    -         -         -         -         -
  3771.             |
  3772.         TO+ |    -       scq/1     scq/2     svq/3     svq/4
  3773.         TO- |    -         0       scq/1       0       scq/1
  3774.        UTO  |    -         -         -         -         -
  3775.        XTO  |    -         0         0         0         0
  3776.  
  3777.  
  3778.  
  3779.  
  3780.  
  3781.  
  3782.  
  3783.  
  3784.  
  3785.  
  3786.  
  3787.  
  3788.  
  3789.  
  3790.  
  3791.  
  3792.  
  3793.  
  3794.  
  3795.  
  3796. Karn & Simpson            expires in six months                [Page 67]
  3797. DRAFT                           Photuris                       June 1996
  3798.  
  3799.  
  3800.       Initiator
  3801.  
  3802.             |    5         6         8
  3803.             |Identity IdentityBad  Update
  3804.       ------+-----------------------------
  3805.        DU13 |    5         6         8
  3806.        SF0  |    5         6     rto,scq/1                               |
  3807.        SF4  |    5         6     rto,scq/1                               |
  3808.        SF5  |    5         6     rto,scq/1                               |
  3809.        WP   |    5         6       sun/8
  3810.             |
  3811.        RCR+ |    5         6         8
  3812.        RCR- |    5         6         8
  3813.        RVR+ |    5         6         8
  3814.        RVR- |    5         6         8
  3815.        RIR+ |  uto/8     uto/8       8
  3816.        RIR- |  svf/5     svf/6       8
  3817.             |
  3818.        RUN+ |    -         -       sum/8
  3819.        RUN- |  sbc/5     sbc/6     se*/8
  3820.        RUM+ |    -         -         8
  3821.        RUM- |  sbc/5     sbc/6     se*/8
  3822.             |
  3823.        RBC  |    6         6     rto,scq/1                               |
  3824.        RRL  |    5         6       buto/8
  3825.        RVF  |  log/5     log/6     log/8
  3826.             |
  3827.         TO+ |  sim/5     sim/6       -
  3828.         TO- |    0       scq/1       -
  3829.        UTO  |    -         -       sum/8
  3830.        XTO  |    0         0         0
  3831.  
  3832.  
  3833.  
  3834.  
  3835.  
  3836.  
  3837.  
  3838.  
  3839.  
  3840.  
  3841.  
  3842.  
  3843.  
  3844.  
  3845.  
  3846.  
  3847.  
  3848.  
  3849.  
  3850.  
  3851. Karn & Simpson            expires in six months                [Page 68]
  3852. DRAFT                           Photuris                       June 1996
  3853.  
  3854.  
  3855.       Responder
  3856.  
  3857.             |    0         7         8
  3858.             | Initial    Ready     Update
  3859.       ------+-----------------------------
  3860.        WP   |    -         7       sun/8
  3861.             |
  3862.        RCQ+ |  scr/0     scr/7     scr/8
  3863.        RCQ- |  srl/0     srl/7     srl/8
  3864.        RVQ+ |xto,svr/7   svr/7     svr/8
  3865.        RVQ- |  sbc/0     sbc/7     sbc/8
  3866.        RIQ+ |    -     uto,sir/8   sir/8
  3867.        RIQ- |  sbc/0     se*/7     se*/8
  3868.             |
  3869.        RUN+ |    -         -       sum/8
  3870.        RUN- |  sbc/0     sbc/7     se*/8
  3871.        RUM+ |    -         -         8
  3872.        RUM- |  sbc/0     sbc/7     se*/8
  3873.             |
  3874.        RBC  |    -         7     rto,scq/1                               |
  3875.        RRL  |    -         -       buto/8
  3876.        RVF  |    -         -       log/8
  3877.             |
  3878.        UTO  |    -         -       sum/8
  3879.        XTO  |    -         0         0
  3880.  
  3881.  
  3882.  
  3883.    A.2.  States
  3884.  
  3885.       Following is a more detailed description of each automaton state.
  3886.  
  3887.       The "Bad" version of a state is to indicate that the Bad_Cookie
  3888.       message has been received.
  3889.  
  3890.  
  3891.    A.2.1.  Initial
  3892.  
  3893.       The Initial state is fictional, in that there is no state between
  3894.       the parties.
  3895.  
  3896.  
  3897.    A.2.2.  Cookie
  3898.  
  3899.       In the Cookie state, the Initiator has sent a Cookie_Request, and
  3900.       is waiting for a Cookie_Response.  Both the Restart and Exchange
  3901.       timers are running.
  3902.  
  3903.  
  3904.  
  3905.  
  3906. Karn & Simpson            expires in six months                [Page 69]
  3907. DRAFT                           Photuris                       June 1996
  3908.  
  3909.  
  3910.       Note that the Responder has no Cookie state.
  3911.  
  3912.  
  3913.    A.2.3.  Value
  3914.  
  3915.       In the Value state, the Initiator has sent its Exchange-Value, and
  3916.       is waiting for an Identity_Message.  Both the Restart and Exchange
  3917.       timers are running.
  3918.  
  3919.  
  3920.    A.2.4.  Identity
  3921.  
  3922.       In the Identity state, the Initiator has sent an Identity_Request,
  3923.       and is waiting for an Identity_Response in reply.  Both the
  3924.       Restart and Exchange timers are running.
  3925.  
  3926.  
  3927.    A.2.5.  Ready
  3928.  
  3929.       In the Ready state, the Responder has sent its Exchange-Value, and
  3930.       is waiting for an Identity_Message.  The Exchange timer is run-
  3931.       ning.
  3932.  
  3933.  
  3934.    A.2.6.  Update
  3935.  
  3936.       In the Update state, each party has concluded the Photuris
  3937.       exchange, and is unilaterally updating expiring SPIs until the
  3938.       Exchange LifeTime expires.  Both the Update and Exchange timers
  3939.       are running.
  3940.  
  3941.  
  3942.  
  3943.  
  3944.  
  3945.  
  3946.  
  3947.  
  3948.  
  3949.  
  3950.  
  3951.  
  3952.  
  3953.  
  3954.  
  3955.  
  3956.  
  3957.  
  3958.  
  3959.  
  3960.  
  3961. Karn & Simpson            expires in six months                [Page 70]
  3962. DRAFT                           Photuris                       June 1996
  3963.  
  3964.  
  3965.    B.  Example Bootstrap Moduli
  3966.  
  3967.       During the initial bootstrap of the implementation, there may not
  3968.       be sufficient time to generate a new modulus before a security
  3969.       association is needed.  These moduli are verified examples that
  3970.       may be used during this bootstrap period.
  3971.  
  3972.       (512-2)
  3973.          A 512-bit strong prime (p), expressed in hex:
  3974.  
  3975.             da58 3c16 d985 2289  d0e4 af75 6f4c ca92
  3976.             dd4b e533 b804 fb0f  ed94 ef9c 8a44 03ed
  3977.             5746 50d3 6999 db29  d776 276b a2d3 d412
  3978.             e218 f4dd 1e08 4cf6  d800 3e7c 4774 e833
  3979.  
  3980.          The recommended generator (g) for this prime is 2.
  3981.  
  3982.          This prime modulus was randomly generated by a freely available
  3983.          program written by Phil Karn, verified using the
  3984.          mpz_probab_prime() function Miller-Rabin test in the Gnu Math
  3985.          Package (GMP) version 1.3.2; as well as independently developed
  3986.          test libraries by Rich Schroeppel (complete Elliptic Curve
  3987.          test).
  3988.  
  3989.          Currently estimated to provide 64 (pessimistic) bit-equivalents
  3990.          of cryptographic strength.  Exponent lengths of 128 bits (or
  3991.          more) are recommended.
  3992.  
  3993.          Using current technology, calculation of the discrete loga-
  3994.          rithms is anticipated to take no more than a year.  This is
  3995.          insufficient for long-term use.
  3996.  
  3997.          A modulus of this size is only used with transforms (such as
  3998.          DES) that already provide less protection than the estimated
  3999.          strength, for ephemeral authentication with short-lived ses-    +
  4000.          sion-keys, and where rapid computation is of primary impor-
  4001.          tance.
  4002.  
  4003.       (1024-2)
  4004.          A 1024-bit strong prime (p), expressed in hex:
  4005.  
  4006.  
  4007.  
  4008.  
  4009.  
  4010.  
  4011.  
  4012.  
  4013.  
  4014.  
  4015.  
  4016. Karn & Simpson            expires in six months                [Page 71]
  4017. DRAFT                           Photuris                       June 1996
  4018.  
  4019.  
  4020.             97f6 4261 cab5 05dd  2828 e13f 1d68 b6d3
  4021.             dbd0 f313 047f 40e8  56da 58cb 13b8 a1bf
  4022.             2b78 3a4c 6d59 d5f9  2afc 6cff 3d69 3f78
  4023.             b23d 4f31 60a9 502e  3efa f7ab 5e1a d5a6
  4024.  
  4025.             5e55 4313 828d a83b  9ff2 d941 dee9 5689
  4026.             fada ea09 36ad df19  71fe 635b 20af 4703
  4027.             6460 3c2d e059 f54b  650a d8fa 0cf7 0121
  4028.             c747 99d7 5871 32be  9b99 9bb9 b787 e8ab
  4029.  
  4030.          The recommended generator (g) for this prime is 2.
  4031.  
  4032.          This prime modulus was randomly generated by a freely available
  4033.          program written by Phil Karn, verified using the
  4034.          mpz_probab_prime() function Miller-Rabin test in the Gnu Math
  4035.          Package (GMP) version 1.3.2; and also verified with GMP on
  4036.          other platforms by Wei Dai and Frank A Stevenson, as well as
  4037.          independently developed test libraries by Eric Young (Miller-
  4038.          Rabin test), and Rich Schroeppel (complete Elliptic Curve
  4039.          test).
  4040.  
  4041.          Currently estimated to provide 80 (pessimistic) through 98
  4042.          (optimistic) bit-equivalents of cryptographic strength.  Expo-
  4043.          nent lengths of 160 to 256 bits (or more) are recommended.
  4044.  
  4045.       Implementors are encouraged to generate their own bootstrap mod-
  4046.       uli, and to change bootstrap moduli in successive implementation
  4047.       releases.
  4048.  
  4049.  
  4050.    Operational Considerations
  4051.  
  4052.       The specification provides only a few configurable parameters,
  4053.       with defaults that should satisfy most situations.
  4054.  
  4055.       Retransmissions
  4056.          Default: 3.
  4057.  
  4058.       Initial Retransmission TimeOut (IRTO)
  4059.          Default: 10 seconds.
  4060.  
  4061.       Exchange TimeOut (ETO)
  4062.          Default: 60 seconds.  Minimum: Retransmissions * IRTO.
  4063.  
  4064.       Exchange LifeTime (ELT)
  4065.          Default: 30 minutes.  Minimum: 2 * ETO.
  4066.  
  4067.  
  4068.  
  4069.  
  4070.  
  4071. Karn & Simpson            expires in six months                [Page 72]
  4072. DRAFT                           Photuris                       June 1996
  4073.  
  4074.  
  4075.       SPI LifeTime (SPILT)
  4076.          Default: 5 minutes.  Minimum: 2 * ELT.
  4077.  
  4078.       In addition, each party configures local policy that determines
  4079.       what access (if any) is granted to the holder of a particular
  4080.       identity.  For example, the party might allow anonymous FTP, but
  4081.       prohibit Telnet.  Such considerations are outside the scope of
  4082.       this document.
  4083.  
  4084.  
  4085.    Security Considerations
  4086.  
  4087.       Photuris was based on currently available tools, by experienced
  4088.       network protocol designers with an interest in cryptography,
  4089.       rather than by cryptographers with an interest in network proto-
  4090.       cols.  This specification is intended to be readily implementable
  4091.       without requiring an extensive background in cryptology.
  4092.  
  4093.       Therefore, only minimal background cryptologic discussion and
  4094.       rationale is included in this document.  Although some review has
  4095.       been provided by the general cryptologic community, it is antici-
  4096.       pated that design decisions and tradeoffs will be thoroughly anal-
  4097.       ysed in subsequent dissertations and debated for many years to
  4098.       come.
  4099.  
  4100.       Cryptologic details are reserved for separate documents that may
  4101.       be more readily and timely updated with new analysis.
  4102.  
  4103.  
  4104.    Acknowledgements
  4105.  
  4106.          Thou shalt make no law restricting the size of integers that
  4107.          may be multiplied together, nor the number of times that an
  4108.          integer may be multiplied by itself, nor the modulus by which
  4109.          an integer may be reduced.  [Prime Commandment]
  4110.  
  4111.       Phil Karn was principally responsible for the design of the proto-
  4112.       col phases, particularly the clogging defense, and provided much
  4113.       of the design rationale text.
  4114.  
  4115.       William Simpson designed the packet formats and attributes, and
  4116.       additional message types, editing and formatting.  All such mis-
  4117.       takes are his responsibility.
  4118.  
  4119.       This protocol was later discovered to have many elements in common
  4120.       with the Station-To-Station authentication protocol [DOW92].
  4121.  
  4122.       Angelos Keromytis suggested the cookie exchange rate limitation
  4123.  
  4124.  
  4125.  
  4126. Karn & Simpson            expires in six months                [Page 73]
  4127. DRAFT                           Photuris                       June 1996
  4128.  
  4129.  
  4130.       counter, and developed the first complete independent implementa-
  4131.       tion.
  4132.  
  4133.       Paul C van Oorschot suggested signing both the public exponents
  4134.       and the shared-secret, to provide an authentication-only version
  4135.       of identity verification.  Also, he provided text regarding mod-
  4136.       uli, generator, and exponent selection.
  4137.  
  4138.       Bart Preneel and Paul C van Oorschot in [PO96] suggested adding
  4139.       padding between the data and trailing key when hashing for authen-
  4140.       tication.
  4141.  
  4142.       Hilarie Orman suggested adding secret "nonces" to session-key gen-
  4143.       eration, and provided extensive review of the protocol details.
  4144.  
  4145.       Bill Sommerfeld suggested using the Cookie values on successive
  4146.       exchanges to provide bi-directional user-oriented keying, and      |
  4147.       including the authentication secret-key in the session-key genera- |
  4148.       tion.
  4149.  
  4150.       Oliver Spatscheck developed a second independent implementation.
  4151.       International interoperability testing provided the impetus for
  4152.       many of the implementation notes herein.
  4153.  
  4154.       Randall Atkinson, Steven Bellovin, Wataru Hamada, James Hughes,    +
  4155.       Brian LaMacchia, Cheryl Madson, Perry Metzger, Bob Quinn, Ron      +
  4156.       Rivest, Rich Schroeppel, and Norman Shulman provided useful cri-   |
  4157.       tiques of earlier versions of this document.
  4158.  
  4159.  
  4160.    References
  4161.  
  4162.       [BGMW93] E. Brickell, D. Gordon, K. McCurley, and D. Wilson, "Fast
  4163.                Exponentiation with Precomputation (Extended Abstract)",
  4164.                Advances in Cryptology -- EUROCRYPT '92, Lecture Notes in
  4165.                Computer Science, 658 (1993), Springer-Verlag, 200-207.
  4166.  
  4167.                Also U.S. Patent #5,299,262, E.F. Brickell, D.M. Gordon,
  4168.                K.S. McCurley, "Method for exponentiating in crypto-
  4169.                graphic systems", 29 Mar 1994.
  4170.  
  4171.       [Diffie90]
  4172.                Whitfield Diffie, "Authenticated Key Exchange and Secure
  4173.                Interactive Communication", Northern Telecom, Securicom
  4174.                '90, Paris France, 16 March 1990.
  4175.  
  4176.       [DH76]   Diffie, W., and Hellman, H.E., "New Directions in Cryp-
  4177.                tography", IEEE Transactions on Information Theory, v
  4178.  
  4179.  
  4180.  
  4181. Karn & Simpson            expires in six months                [Page 74]
  4182. DRAFT                           Photuris                       June 1996
  4183.  
  4184.  
  4185.                IT-22 n 6 pp 644-654, November 1976.
  4186.  
  4187.       [DOW92]  Whitfield Diffie, Paul C van Oorshot, Michael J Wiener,
  4188.                "Authentication and Authenticated Key Exchanges",
  4189.                Designs, Codes and Cryptography, v 2 pp 107-125, Kluwer
  4190.                Academic Publishers, 1992.
  4191.  
  4192.       [Firefly]
  4193.                "Photuris" is the latin name for the firefly.  "Firefly"
  4194.                is in turn the name for the USA National Security Admin-
  4195.                istration's (classified) key exchange protocol for the
  4196.                STU-III secure telephone.  Informed speculation has it
  4197.                that Firefly is based on very similar design principles.
  4198.  
  4199.       [OW96]   Paul C van Oorshot, Michael J Weiner, "On Diffie-Hellman
  4200.                Key Agreement with Short Exponents", work in progress.
  4201.  
  4202.       [Prime Commandment]
  4203.                A derivation of an apocryphal quote from the usenet list
  4204.                sci.crypt.
  4205.  
  4206.       [PO96]   Bart Preneel, Paul C van Oorshot, "...Two MACs", work in
  4207.                progress.
  4208.  
  4209.       [RFC-768]
  4210.                Postel, J., "User Datagram Protocol", STD 6, August 1980.
  4211.  
  4212.       [RFC-1321]
  4213.                Rivest, R., "The MD5 Message-Digest Algorithm", RFC-1321,
  4214.                MIT Laboratory for Computer Science, April 1992.
  4215.  
  4216.       [RFC-1510]
  4217.                Kohl, J., Neuman, B., "The Kerberos Network Authentica-
  4218.                tion Service (V5)", September 1993.
  4219.  
  4220.       [RFC-1700]
  4221.                Reynolds, J., and Postel, J., "Assigned Numbers", STD 2,
  4222.                USC/Information Sciences Institute, October 1994.
  4223.  
  4224.       [RFC-1812]
  4225.                Baker, F., Editor, "Requirements for IP Version 4
  4226.                Routers", Cisco Systems, June 1995.
  4227.  
  4228.       [RFC-1825]
  4229.                Atkinson, R., "Security Architecture for the Internet
  4230.                Protocol", Naval Research Laboratory, July 1995.
  4231.  
  4232.  
  4233.  
  4234.  
  4235.  
  4236. Karn & Simpson            expires in six months                [Page 75]
  4237. DRAFT                           Photuris                       June 1996
  4238.  
  4239.  
  4240.       [RFC-1828]
  4241.                Metzger, P., Simpson, W., "IP Authentication using Keyed
  4242.                MD5", July 1995.
  4243.  
  4244.       [RFC-1829]
  4245.                Karn, P., Metzger, P., Simpson, W., "The ESP DES-CBC
  4246.                Transform", July 1995.
  4247.  
  4248.       [RFC-xxxx]
  4249.                Karn, P., and Simpson, W., "ICMP Security Failures Mes-
  4250.                sages", draft-ietf-ipsec-icmp-fail-01.txt, work in
  4251.                progress.
  4252.  
  4253.       [Rooij94]
  4254.                P. de Rooij, "Efficient exponentiation using precomputa-
  4255.                tion and vector addition chains", EUROCRYPT '94, pp
  4256.                403-415.
  4257.  
  4258.       [Schneier95]
  4259.                Schneier, B., "Applied Cryptography Second Edition", John
  4260.                Wiley & Sons, New York, NY, 1995.  ISBN 0-471-12845-7.
  4261.  
  4262.       [Schnorr91]
  4263.                Schnorr, C.P., "Efficient signature generation by smart
  4264.                cards", Cryptology, v 4 pp 161-174, 1991.
  4265.  
  4266.  
  4267.  
  4268.  
  4269.  
  4270.  
  4271.  
  4272.  
  4273.  
  4274.  
  4275.  
  4276.  
  4277.  
  4278.  
  4279.  
  4280.  
  4281.  
  4282.  
  4283.  
  4284.  
  4285.  
  4286.  
  4287.  
  4288.  
  4289.  
  4290.  
  4291. Karn & Simpson            expires in six months                [Page 76]
  4292. DRAFT                           Photuris                       June 1996
  4293.  
  4294.  
  4295.    Contacts                                                              -
  4296.  
  4297.       Comments about this document should be discussed on the pho-       |
  4298.       turis@majordomo.soscorp.com mailing list.
  4299.  
  4300.       Questions about this document can also be directed to:             |
  4301.  
  4302.          Phil Karn
  4303.          Qualcomm, Inc.
  4304.          6455 Lusk Blvd.
  4305.          San Diego, California  92121-2779
  4306.  
  4307.              karn@qualcomm.com
  4308.              karn@unix.ka9q.ampr.org (preferred)
  4309.  
  4310.  
  4311.          William Allen Simpson
  4312.          DayDreamer
  4313.          Computer Systems Consulting Services
  4314.          1384 Fontaine
  4315.          Madison Heights, Michigan  48071
  4316.  
  4317.              wsimpson@UMich.edu
  4318.              wsimpson@GreenDragon.com (preferred)
  4319.              bsimpson@MorningStar.com
  4320.  
  4321.  
  4322.  
  4323.  
  4324.  
  4325.  
  4326.  
  4327.  
  4328.  
  4329.  
  4330.  
  4331.  
  4332.  
  4333.  
  4334.  
  4335.  
  4336.  
  4337.  
  4338.  
  4339.  
  4340.  
  4341.  
  4342.  
  4343.  
  4344.  
  4345.  
  4346. Karn & Simpson            expires in six months                [Page 77]
  4347.  
  4348.  
  4349.