home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_ietf_q_t / draft-ietf-spki-cert-structure-01.txt < prev    next >
Text File  |  1997-03-28  |  69KB  |  2,257 lines

  1.  
  2. Simple Public Key Certificate                            Carl M. Ellison
  3. INTERNET-DRAFT                                           CyberCash, Inc.
  4. Expires: 30 September 97
  5.                                                              Bill Frantz
  6.                                                               Periwinkle
  7.  
  8.                                                          Brian M. Thomas
  9.                                                        Southwestern Bell
  10.  
  11.                                                            25 March 1997
  12.  
  13.  
  14.  
  15.                      Simple Public Key Certificate
  16.                      ------ ------ --- -----------
  17.  
  18.  
  19.  
  20.  
  21. Status of This Document
  22.  
  23.    This document supersedes the draft filed under the name draft-ietf-
  24.    spki-cert-structure-00.txt and reflects changes in the structure to
  25.    prepare the way for merging the SPKI certificate structure of the
  26.    previous draft with the SDSI proposal of Rivest and Lampson.  The
  27.    primary change is the use of S-expression format for data objects
  28.    such as certificate bodies.
  29.  
  30.    A section giving the BNF of all data objects is given so this draft
  31.    is more complete than the previous one.  It has also been simplified
  32.    in a number of places.  The draft ends with a list of open questions
  33.    for group discussion.
  34.  
  35.    Distribution of this document is unlimited.  Comments should be sent
  36.    to the SPKI (Simple Public Key Infrastructure) Working Group mailing
  37.    list <spki@c2.org> or to the authors.
  38.  
  39.  
  40.  
  41.    This document is an Internet-Draft.  Internet-Drafts are working
  42.    documents of the Internet Engineering Task Force (IETF), its areas,
  43.    and its working groups.  Note that other groups may also distribute
  44.    working documents as Internet-Drafts.
  45.  
  46.    Internet-Drafts are draft documents valid for a maximum of six
  47.  
  48.  
  49.  
  50.  
  51. Ellison, Frantz, Thomas                                         [Page 1]
  52.  
  53.  
  54. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  55.  
  56.  
  57.    months.  Internet-Drafts may be updated, replaced, or obsoleted by
  58.    other documents at any time.  It is not appropriate to use Internet-
  59.    Drafts as reference material or to cite them other than as a
  60.    ``working draft'' or ``work in progress.''
  61.  
  62.    To learn the current status of any Internet-Draft, please check the
  63.    1id-abstracts.txt listing contained in the Internet-Drafts Shadow
  64.    Directories on ds.internic.net (East USA), ftp.isi.edu (West USA),
  65.    nic.nordu.net (North Europe), ftp.nis.garr.it (South Europe),
  66.    munnari.oz.au (Pacific Rim), or ftp.is.co.za (Africa).
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  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. Ellison, Frantz, Thomas                                         [Page 2]
  110.  
  111.  
  112. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  113.  
  114.  
  115. Abstract
  116.  
  117.    With the proliferation of public key cryptography on the Internet,
  118.    there arises a need for certification of keys.  In the literature,
  119.    the word "certificate" has been generally taken to mean "identity
  120.    certificate" -- a signed statement which binds a key to the name of
  121.    an individual and has the intended meaning of delegating authority
  122.    from that named individual to the public key. (See, for example, RFC
  123.    1422.)  This process is designed to transfer a relationship between
  124.    two entities from the physical world into the digital world.
  125.  
  126.    The Internet itself changed the world from the one in which identity
  127.    certificates were considered necessary.  As Internet use increases,
  128.    we increasingly interact with people or companies with whom we have
  129.    no relationship in the physical world.  A transfer of relationship
  130.    from the physical world to the digital world is meaningless in such
  131.    cases.  Instead, we need to establish relationships directly in the
  132.    digital world through an instrument which assigns attributes
  133.    (authority, permission, ...) to the digital principal.  We call that
  134.    an "authorization certificate".
  135.  
  136.    SPKI certificates were designed to perform that function by directly
  137.    specifying the <auth,key> binding which is of interest in the digital
  138.    world.
  139.  
  140.  
  141.  
  142. Acknowledgments
  143.  
  144.    Several independent contributions, published elsewhere on the net or
  145.    in print, worked in synergy with our effort.  Especially important to
  146.    our work were: [SDSI], [BFL] and [DNSSEC].  The inspiration we
  147.    received from the notion of CAPABILITY in its various forms (SDS-940,
  148.    Kerberos, DEC DSSA, [SRC-070], KeyKOS [HARDY]) can not be over-rated
  149.    and we must thank Butler Lampson for most of this inspiration.
  150.  
  151.    Significant contributions to this effort by the members of the SPKI
  152.    mailing list and especially the following persons (listed in
  153.    alphabetic order) are gratefully acknowledged: Steve Bellovin, Mark
  154.    Feldman, John Gilmore, Phill Hallam-Baker, Bob Jueneman, David Kemp,
  155.    Paul Lambert, Jon Lasser, Jeff Parrett, Ron Rivest, Bill Sommerfeld,
  156.    Simon Spero.
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167. Ellison, Frantz, Thomas                                         [Page 3]
  168.  
  169.  
  170. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  171.  
  172. Table of Contents
  173.  
  174.       Status of This Document....................................1
  175.  
  176.       Abstract...................................................3
  177.       Acknowledgments............................................3
  178.  
  179.       Table of Contents..........................................4
  180.  
  181.       1. Overview of Contents....................................6
  182.  
  183.       2. Scope Of This Effort....................................7
  184.       2.1 Charter of the SPKI group..............................7
  185.       2.2 Areas Covered And Not Covered..........................7
  186.       2.2.1 Key and certificate storage..........................7
  187.       2.2.2 Protocols to use public key authentication...........8
  188.       2.3 Other Certificate Formats..............................8
  189.       2.4 Goals of this effort...................................9
  190.       2.5 SPKI Certificates vs. Capabilities.....................9
  191.       2.6 Chosen standard format.................................9
  192.  
  193.       3. Assumptions, Definitions and Design Issues.............10
  194.       3.1 Background............................................10
  195.       3.2 Binding of key to principal...........................11
  196.       3.2.1 Protection of Private Keys..........................11
  197.       3.2.2 Definition of KEYHOLDER.............................12
  198.       3.3 Certificate Structure.................................13
  199.       3.3.1 5-tuple Reduction...................................13
  200.       3.3.2 Authority Loops.....................................14
  201.       3.3.3 Certificate Result Certificates.....................14
  202.       3.4 Policy Structures.....................................15
  203.       3.4.1 Equality of <auth>..................................16
  204.       3.4.2 Partial ordering of <auth>s.........................16
  205.       3.4.3 General <auth> fields...............................16
  206.       3.5 Certifying Identity with SPKI Certificates............16
  207.       3.6 Certificate validity periods..........................17
  208.       3.7 Unwanted Attributions.................................19
  209.       3.8 Secret Certificates...................................19
  210.       3.9 Blind Signatures......................................20
  211.  
  212.       4. Data Object Formats....................................21
  213.       4.1 BNF of SPKI Objects...................................21
  214.       4.1.1 Version.............................................24
  215.       4.1.2 Issuer..............................................24
  216.       4.1.3 Issuer-cert-loc.....................................24
  217.       4.1.4 Subject.............................................24
  218.       4.1.5 Subject-info-loc....................................25
  219.       4.1.6 May-delegate........................................25
  220.       4.1.7 Auth................................................25
  221.       4.1.7.1 Auth field reduction rules........................25
  222.  
  223.  
  224.  
  225. Ellison, Frantz, Thomas                                         [Page 4]
  226.  
  227.  
  228. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  229.  
  230.  
  231.       4.1.7.2 Auth global uniqueness............................26
  232.       4.1.8 Comment.............................................26
  233.       4.1.9 Not-after, Not-before...............................26
  234.       4.1.10 Online.............................................26
  235.       4.1.11 Signature..........................................27
  236.       4.1.12 Bundle.............................................27
  237.       4.1.13 <pub-key>..........................................27
  238.       4.1.14 Hash...............................................27
  239.       4.1.15 <secret-sig-key>...................................28
  240.       4.1.16 Fully-qualified-name...............................28
  241.       4.1.17 Ref................................................28
  242.       4.1.18 Date...............................................29
  243.       4.2 Primitives............................................29
  244.       4.2.1 byte-string.........................................29
  245.       4.2.1.1 token.............................................29
  246.       4.2.1.2 quoted string.....................................29
  247.       4.2.1.3 hex string........................................29
  248.       4.2.1.4 base64 string.....................................30
  249.       4.2.1.5 literal binary string.............................30
  250.       4.2.1.6 concatenation of strings..........................30
  251.       4.2.2 Display information.................................30
  252.       4.2.3 List counts.........................................31
  253.       4.3 Binary (canonical) form...............................31
  254.       4.3.1 Byte strings........................................31
  255.       4.3.2 List counts.........................................31
  256.       4.3.3 blanks..............................................31
  257.  
  258.       5. <auth> Field Examples..................................32
  259.       5.1 Member-of-issuer......................................32
  260.       5.2 Name..................................................32
  261.       5.3 Member................................................32
  262.       5.4 FTP...................................................33
  263.       5.5 HTTP..................................................33
  264.       5.6 TELNET................................................33
  265.       5.7 Public Key Protected File System......................33
  266.       5.8 Dating Service Bindings...............................34
  267.       5.9 Authority to spend money..............................34
  268.  
  269.       Issues....................................................35
  270.  
  271.       References................................................37
  272.  
  273.       Authors' Addresses........................................39
  274.       Expiration and File Name..................................39
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283. Ellison, Frantz, Thomas                                         [Page 5]
  284.  
  285.  
  286. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  287.  
  288.  
  289. 1. Overview of Contents
  290.  
  291.    This document contains the following sections:
  292.  
  293.    Section 2 describes the scope of both the SPKI working group and this
  294.    particular Internet Draft.
  295.  
  296.    Section 3 gives necessary background for understanding the SPKI
  297.    certificate structure.  It details assumptions, definitions and
  298.    design issues behind this structure design and is recommended reading
  299.    for anyone who did not follow the discussion on the working group
  300.    mailing list.
  301.  
  302.    Section 4 describes SPKI data object formats -- listing the fields in
  303.    a certificate and giving encoding details.
  304.  
  305.    Section 5 describes predefined SPKI <auth> fields.  These are the
  306.    meat of an SPKI certificate, since they carry the authority or other
  307.    information being bound to a subject public key.
  308.  
  309.    The Issues section gives a list of open questions to be resolved by
  310.    the SPKI working group.
  311.  
  312.    The References section lists all documents referred to in the text as
  313.    well as readings which might be of interest to anyone reading on this
  314.    topic.
  315.  
  316.    The Authors' Addresses section gives the addresses, telephone numbers
  317.    and e-mail addresses of the authors.
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341. Ellison, Frantz, Thomas                                         [Page 6]
  342.  
  343.  
  344. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  345.  
  346.  
  347. 2. Scope Of This Effort
  348.  
  349.  
  350.  
  351. 2.1 Charter of the SPKI group
  352.  
  353.    Many Internet protocols and applications which use the Internet
  354.    employ public key technology for security purposes and require a
  355.    public key infrastructure to manage public keys.
  356.  
  357.    The task of the working group will be to develop Internet standards
  358.    for an IETF sponsored public key certificate format, associated
  359.    signature and other formats, and key acquisition protocols.  The key
  360.    certificate format and associated protocols are to be simple to
  361.    understand, implement, and use. For purposes of the working group,
  362.    the resulting formats and protocols are to be known as the Simple
  363.    Public Key Infrastructure, or SPKI.
  364.  
  365.    The SPKI is intended to provide mechanisms to support security in a
  366.    wide range of Internet applications, including IPSEC protocols,
  367.    encrypted electronic mail and WWW documents, payment protocols, and
  368.    any other application which will require the use of public key
  369.    certificates and the ability to access them. It is intended that the
  370.    Simple Public Key Infrastructure will support a range of trust
  371.    models.
  372.  
  373.  
  374.  
  375. 2.2 Areas Covered And Not Covered
  376.  
  377.    This particular draft is concerned only with certificate and
  378.    signature formats, using the certificates defined here both for
  379.    verification of identity and for proof of authorization.  We do not
  380.    cover the other elements of a full public key infrastructure (PKI):
  381.    key/certificate storage and acquisition.  We also do not cover all
  382.    the applications or protocols which must be modified to employ public
  383.    key authentication or privacy.
  384.  
  385.  
  386.  
  387. 2.2.1 Key and certificate storage
  388.  
  389.    There are several independent efforts at this time to provide a
  390.    database of keys or certificates for the Internet.
  391.  
  392.    The DNS Security Working Group draft [DNSSEC], specifies an efficient
  393.    key storage and distribution mechanism.  It may be possible to store
  394.    an SPKI certificate in a KEY Resource Record (RR) or to create a new
  395.  
  396.  
  397.  
  398.  
  399. Ellison, Frantz, Thomas                                         [Page 7]
  400.  
  401.  
  402. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  403.  
  404.  
  405.    RR type for SPKI certificates, under the DNSSEC design, but that
  406.    effort has not been undertaken yet.
  407.  
  408.    The PGP key server at MIT operating both as a web page and as an e-
  409.    mail driven service provides another example of efficient certificate
  410.    storage and retrieval for the net at large.
  411.  
  412.    SDSI demonstrated certificate servers for individuals to run on their
  413.    own net-connected workstations, in response to the fact that more and
  414.    more individuals remain connected to the network permanently.
  415.  
  416.  
  417.  
  418. 2.2.2 Protocols to use public key authentication
  419.  
  420.    Proposals for modification of applications to employ public key
  421.    authentication are proceeding independently, e.g., [PKLOGIN].  We
  422.    encourage other developers to actively enter this area of design,
  423.    aided by SPKI certificates as a tool.
  424.  
  425.  
  426.  
  427. 2.3 Other Certificate Formats
  428.  
  429.    We are aware of a number of actual and proposed kinds of signed
  430.    records which, by some definition, qualify as certificates:
  431.  
  432.    1. PGP signed keys
  433.  
  434.    2. X.509 identity certificates, from a number of sources
  435.  
  436.    3. X.509 SET (Secure Electronic Transaction) certificates
  437.  
  438.    4. DNS Security Extension signed keys
  439.  
  440.    5. Signed PICS labels (from the W3C DSig effort)
  441.  
  442.  
  443.    It is not our intention to coerce these other certificate formats
  444.    into our mold, although they are welcome to switch over.  The
  445.    certificate structure defined below is flexible enough to accommodate
  446.    all of the above.
  447.  
  448.    However, we recognize that a real world system will involve some
  449.    mixture of SPKI and non-SPKI certificates as well as traditional
  450.    Access Control Lists (ACLs).  Our design accommodates these through
  451.    the Certificate Result Certificate process, allowing all these to be
  452.    merged into a single, simple format as far as application software is
  453.  
  454.  
  455.  
  456.  
  457. Ellison, Frantz, Thomas                                         [Page 8]
  458.  
  459.  
  460. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  461.  
  462.  
  463.    concerned.
  464.  
  465.  
  466.  
  467. 2.4 Goals of this effort
  468.  
  469.    In keeping with the design goals enumerated in section 3 of RFC1958,
  470.    it is our goal to keep the SPKI certificate pruned to the minimum
  471.    information necessary to accomplish the job at hand -- which is
  472.    secure authentication and authorization of access control and
  473.    confidentiality for the Internet.  We use well tested formats with a
  474.    long history of success and have chosen those which require the bare
  475.    minimum of tool software so that applications remain as small and
  476.    efficient as possible.  We offer the bare minimum of options, in
  477.    order to reduce program size and complexity.
  478.  
  479.    We also recognize that some kinds of certification (such as notarized
  480.    identity certification) can carry risks of invasion of privacy for
  481.    the individual.  We have therefore designed these certificates to
  482.    reveal the minimum information necessary to get the job done,
  483.    whatever that job happens to be.  In many cases, the user can remain
  484.    anonymous in the traditional sense while exercising strongly verified
  485.    authorization.
  486.  
  487.  
  488.  
  489. 2.5 SPKI Certificates vs. Capabilities
  490.  
  491.    An SPKI certificate is closer to a "capability" as defined by Butler
  492.    Lampson et al. than to an identity certificate.  There is the
  493.    difference that in a capability system, the capability itself is a
  494.    secret ticket, the possession of which grants some authority.  It is
  495.    anonymous (cash rather than a check).  Therefore, if you grant
  496.    authority to read a capability, you have delegated the ability to use
  497.    it.  An SPKI certificate identifies the specific individual or group
  498.    to whom it grants authority and therefore the ability to read the
  499.    certificate grants no authority and the certificate itself does not
  500.    need to be as tightly controlled.
  501.  
  502.  
  503.  
  504. 2.6 Chosen standard format
  505.  
  506.    In this draft, the standard format adopted is that developed by SDSI,
  507.    modified slightly.  Data objects are defined as S-expressions --
  508.    lists in which the first element is a token defining the data object.
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515. Ellison, Frantz, Thomas                                         [Page 9]
  516.  
  517.  
  518. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  519.  
  520.  
  521. 3. Assumptions, Definitions and Design Issues
  522.  
  523.    There were a number of discussion topics involved in the design of
  524.    the SPKI certificates and we summarize them here for the reader who
  525.    was not part of the SPKI discussion.  This section should at least be
  526.    skimmed by even the reader with a solid grounding in classical
  527.    (identity) certification.  Some of these might be new concepts.  Some
  528.    provide definitions for terms which traditional discussions of
  529.    certification frequently leave undefined.
  530.  
  531.  
  532.  
  533. 3.1 Background
  534.  
  535.    In the words of Butler Lampson, a public signature key "speaks for"
  536.    its owner:  a person or entity we call the "keyholder".  It is
  537.    primarily through such public key "speech" that one achieves security
  538.    on the inherently anonymous and spoofable Internet.
  539.  
  540.    There is a long standing effort to bind public keys to the "true
  541.    names" of their keyholders, in an attempt to identify the keyholder
  542.    and to permit the transfer of permissions or other attributes from
  543.    the physical world in which the keyholder lives into the digital
  544.    world.  This effort has produced identity certificates, such as
  545.    X.509, giving <name,key> bindings which needed to be combined with
  546.    certificates or ACL entries giving <auth,name>, to yield the
  547.    relationship <auth,key> which a computer needs to verify public-key
  548.    driven access attempts.  {<auth> here stands for authorization,
  549.    permission, etc.}
  550.  
  551.    The Internet has changed the world from the one in which identity
  552.    certificates were originally seen to be necessary.  In the new world
  553.    of the global Internet the entities which communicate are often not
  554.    known to each other in the physical world.  This trend is likely to
  555.    increase as time goes on.  Therefore a mechanism which transfers
  556.    attributes from the physical world to the digital world is
  557.    inappropriate.
  558.  
  559.    We also observed that <key> is a perfectly adequate name for a
  560.    keyholder, at least as far as a computer is concerned.  We therefore
  561.    set about declaring a certificate which would communicate <auth,key>
  562.    directly, leaving names out of the process except in the case where
  563.    the name is the item of interest (e.g., for secure e-mail).
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573. Ellison, Frantz, Thomas                                        [Page 10]
  574.  
  575.  
  576. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  577.  
  578.  
  579. 3.2 Binding of key to principal
  580.  
  581.    The most important issue is the notion of the binding of a key to a
  582.    principal.
  583.  
  584.  
  585.         By PRINCIPAL, we mean an entity (e.g., person, processor,
  586.         process, device (such as a printer), ...) which supplies a
  587.         service or requests action in a distributed computer system.
  588.  
  589.  
  590.    Discussions of certification frequently speak of binding of keys to
  591.    an "identity" (specifically, under X.509, to a Distinguished Name) as
  592.    if the "identity" were the same as the principal and as if the
  593.    identity certificate accomplished the binding of key to principal.
  594.  
  595.    We observe that the binding between a public key and a principal has
  596.    nothing to do with certificates.  Here we distinguish between a
  597.    principal and its name or "identity", however one defines that latter
  598.    term.
  599.  
  600.  
  601.  
  602. 3.2.1 Protection of Private Keys
  603.  
  604.    For any public key cryptosystem to work, it is essential that a
  605.    principal keep its private key to itself.  In the case of a human
  606.    being, this might involve keeping the private key encrypted under a
  607.    high-entropy passphrase and storing it only on the person's own
  608.    personal computer or floppy disks.  Some humans might even keep the
  609.    private key in a tamper-resistant PCMCIA card or SmartCard which will
  610.    never release it and will in fact destroy it after too many failed
  611.    attempts to gain access.  In the case of a network node, this might
  612.    involve keeping the private key in a tamper-resistant cryptographic
  613.    processor which generated it and which will destroy it if tampering
  614.    is attempted.
  615.  
  616.    If the principal does not keep the private key protected (that is, if
  617.    the private key gets out to others to use) then one can not know what
  618.    entity is using that key and no certificates will be able to restore
  619.    the resulting broken security.
  620.  
  621.    Therefore, we are forced to assume that all private keys are kept
  622.    private and bound tightly to the one principal to which they belong.
  623.    We will have to provide for methods of announcing the compromise of
  624.    such private keys whenever this assumption proves false, but we must
  625.    assume that unless such notification is delivered, each private key
  626.    is secure and attached to its owner.
  627.  
  628.  
  629.  
  630.  
  631. Ellison, Frantz, Thomas                                        [Page 11]
  632.  
  633.  
  634. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  635.  
  636.  
  637.         Note: We have specifically included the possibility for a holder
  638.         of authority to delegate that authority without appeal to some
  639.         certification authority, in order to reduce if not eliminate the
  640.         motivation for one principal to loan a private key to another.
  641.  
  642.  
  643.    We do not expect every person, process and device in the Internet to
  644.    employ true tamper resistance.  Many people will keep and use private
  645.    keys on an insecure personal computer or workstation.  However, we
  646.    are forced to assume protection of the private key or give up any
  647.    notion of cryptographically strong authentication and authorization.
  648.  
  649.  
  650.  
  651. 3.2.2 Definition of KEYHOLDER
  652.  
  653.    The keyholder has sole possession of the private key by definition
  654.    and could be identified by that key, but that key is secret.  There
  655.    is only one private key to match a given public key, so the keyholder
  656.    can be identified by the public key just as uniquely.  Similarly,
  657.    there is only one public key which hashes to a given secure hash (by
  658.    definition of "secure hash", assuming we are limited in computation
  659.    power), so the secure hash of a public key can also be used to
  660.    identify the keyholder.
  661.  
  662.  
  663.         DEFINITION: Keyholder -- a principal who holds a given private
  664.         key.  The private key is indicated by either its corresponding
  665.         public key or a secure hash of that public key.  Every key has a
  666.         keyholder, by definition.  There is no implication in the word
  667.         "keyholder" that anything else is known about this principal
  668.         except the fact that it holds the indicated private key.
  669.  
  670.  
  671.    Without certificates, we might not know anything else about the
  672.    principal (such as name, gender or even if the principal is a living
  673.    being) but we do know enough to link together separate messages from
  674.    the same principal.  For some purposes, that is sufficient
  675.    identification (for example, when a person is first encountered on-
  676.    line via signed messages and there is no intention of linking that
  677.    person to any physical being, only to his or her own other messages).
  678.    However, there are other applications for which the ability to link
  679.    together separate messages from an anonymous source is not adequate
  680.    and therefore for which certificates are required.
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689. Ellison, Frantz, Thomas                                        [Page 12]
  690.  
  691.  
  692. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  693.  
  694.  
  695. 3.3 Certificate Structure
  696.  
  697.    An SPKI certificate body has five groups of fields:
  698.  
  699.  
  700.    ISSUER: the public key of the issuing party or something reducible to
  701.         that public key, both as a means for verifying the certificate
  702.         signature and as a name for the issuing principal.
  703.  
  704.    SUBJECT: the object receiving authority via this certificate or
  705.         something reducible to that object (usually a key or the hash of
  706.         a key or a document).
  707.  
  708.    MODIFIERS: modifiers on the certificate.  At present the only one
  709.         defined is "May-delegate:" -- the permission to delegate the
  710.         authority presented in the certificate (or part of it) to some
  711.         other Subject.
  712.  
  713.    AUTHORITY: the specific authorization(s) being delegated in this
  714.         certificate.  Section 5 gives details about <auth> fields.
  715.  
  716.    VALIDITY: at least an expiration date but possibly a more complex
  717.         procedure for determining certificate validity.  Section 6 gives
  718.         details about validity fields.
  719.  
  720.  
  721.    A certificate is signed by the issuer and, optionally, by the
  722.    subject.  The dual signature is required for authorizations which
  723.    also imply responsibilities.  The issuer is granting an
  724.    authorization, but the subject is accepting responsibility.  Each of
  725.    those actions requires a signature.
  726.  
  727.    Section 7 gives details about signature blocks.
  728.  
  729.  
  730.  
  731. 3.3.1 5-tuple Reduction
  732.  
  733.    The authorization statement in a valid certificate can be represented
  734.    by five quantities:
  735.  
  736.    (I,S,D,A,V)
  737.  
  738.    A set of certificates can be reduced as follows:
  739.  
  740.    (I1,S1,D1,A1,V1) + (I2,S2,D2,A2,V2)
  741.  
  742.    becomes
  743.  
  744.  
  745.  
  746.  
  747. Ellison, Frantz, Thomas                                        [Page 13]
  748.  
  749.  
  750. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  751.  
  752.  
  753.    (I1,S2,D2,A,V)
  754.  
  755.    if S1=I2 (meaning that they are or resolve to the same public key)
  756.    and D1 > D2 (if delegation is integer) or D1 >= D2 (if delegation is
  757.    boolean)
  758.    and A = intersection(A1,A2)
  759.    and V = intersection(V1,V2)
  760.  
  761.  
  762.  
  763. 3.3.2 Authority Loops
  764.  
  765.    By 5-tuple reduction, some chains of certificates will be reduced to
  766.    the form:
  767.  
  768.    (Self,X,D,A,V)
  769.  
  770.    where "Self" represents the computer doing the verification, granting
  771.    access, etc.  Such a 5-tuple says "Self says that X has authority
  772.    (D,A) for validity period (or conditions) V".  In other words, it
  773.    tells Self what it can trust about X.
  774.  
  775.    Any certificate chain not reducing to a 5-tuple with Self as issuer
  776.    isn't relevant to decisions by Self.
  777.  
  778.    Therefore, any certificate chain which is to be used by Self to do
  779.    trust management must have Self as a root.  Since Self is doing this
  780.    chain reduction, that makes all useful authorization certificate
  781.    chains loops.
  782.  
  783.  
  784.  
  785. 3.3.3 Certificate Result Certificates
  786.  
  787.    If one has reduced a chain of certificate bodies down to the form:
  788.  
  789.    (Self,X,D,A,V)
  790.  
  791.    one can sign that generated body, using a private key of Self,
  792.    producing an SPKI certificate.  Such a certificate is the result of
  793.    5-tuple reduction (and possibly PolicyMaker execution) over one or
  794.    more certificates (which could be of various formats, including SPKI,
  795.    X.509, DNSSEC, ...).  This certificate result certificate, CRC, could
  796.    then be given back to the caller (protocol permitting) for that
  797.    caller to use throughout interval V.  Such a certificate should
  798.    reduce transmission and verification time.  The signature used by
  799.    Self could even employ a secret-key algorithm, on the assumption that
  800.    the issuer and verifier are the same entity.  Alternatively, one
  801.  
  802.  
  803.  
  804.  
  805. Ellison, Frantz, Thomas                                        [Page 14]
  806.  
  807.  
  808. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  809.  
  810.  
  811.    could use a public-key-signed CRC to enable a trusted server to
  812.    translate certificate formats from something difficult to deal with
  813.    (such as X.509) into SPKI.
  814.  
  815.  
  816.  
  817. 3.4 Policy Structures
  818.  
  819.    [BFL] introduces a language called PolicyMaker in which one can
  820.    express security policy statements -- the specific certificate
  821.    requirements by which a given action will be authorized.  The actual
  822.    requirements are written in a safe language which program is then
  823.    bound to a key or set of keys by an issuer's signature.
  824.  
  825.    PolicyMaker is likely to be used along with SPKI certificates in
  826.    three ways.
  827.  
  828.    1) It is believed possible to use the PolicyMaker language to
  829.       implement the 5-tuple reduction described in the previous section.
  830.       The code has not been written as of the time of this draft, but at
  831.       this point it looks possible.
  832.  
  833.    2) The default reduction rule is an operation on two certificate
  834.       bodies yielding a third.  For some policies, there are more than
  835.       two input bodies and therefore the reduction code needs to be more
  836.       general than the simple rules given in the section above.
  837.  
  838.    3) For some kinds of trust management, it will be necessary to
  839.       translate <auth> fields.  That is, the simple rule
  840.                             A=intersection(A1,A2)
  841.       makes it impossible for A to be greater than either A1 or A2.  For
  842.       example, if company policy is that a purchase order is good only
  843.       if signed by two vice presidents, A1a might be "signed by VP #1"
  844.       and A1b might be "signed by VP #2", while A=A2 might be "purchase
  845.       order is good".  Neither of the VPs has the authority to make a
  846.       purchase order good by himself or herself.  Therefore, A > A1a and
  847.       A > A1b.
  848.  
  849.  
  850.    The first case is a matter of coding convenience.  The others are
  851.    cases of logic of trust management.
  852.  
  853.    There must be machinery in the verifying engine which reduces
  854.    certificate bodies.  For everything but <auth> fields, this is
  855.    straight-forward.  Since every verifier of certificates is permitted
  856.    to define custom <auth> fields, with custom semantics, the simple
  857.    reduction rules given above might not suffice and full PolicyMaker
  858.    programs might be needed.
  859.  
  860.  
  861.  
  862.  
  863. Ellison, Frantz, Thomas                                        [Page 15]
  864.  
  865.  
  866. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  867.  
  868.  
  869.    Three forms of <auth> processing during 5-tuple reduction are
  870.    envisioned for the engine running in the verifier:
  871.  
  872.  
  873.  
  874. 3.4.1 Equality of <auth>
  875.  
  876.    This simplest of reduction operations applies when <auth> fields are
  877.    equal.  No logic is required to supplement the reduction operation.
  878.  
  879.  
  880.  
  881. 3.4.2 Partial ordering of <auth>s
  882.  
  883.    If the definer of the <auth> field specifies rules for partial
  884.    ordering of those fields, the engine which reduces them can choose
  885.    the lesser of A1 and A2 and choose that as A -- to perform the normal
  886.    reduction indicated above.
  887.  
  888.  
  889.  
  890. 3.4.3 General <auth> fields
  891.  
  892.    In the most general case, the definer of the <auth> field must
  893.    provide a program which reduces these fields.  That program is not
  894.    limited to taking two certificate bodies in and producing one on
  895.    output, as is true for the default rule.  It can take one or more
  896.    certificate bodies and produce one or more outputs (although a single
  897.    output is probably sufficient for our purposes).
  898.  
  899.  
  900.  
  901. 3.5 Certifying Identity with SPKI Certificates
  902.  
  903.    It is possible to certify identity with an SPKI certificate.  We
  904.    support the SDSI naming mechanism, since we recognize that all names
  905.    are local to some name-space -- even when that name-space desires to
  906.    be treated as global.
  907.  
  908.    [SDSI] recognized that all names are local, even those generated by
  909.    an allegedly global CA.  More importantly, for a name to be
  910.    meaningful, it must be known by the person or program using it (the
  911.    verifier) and unambiguously associated by that verifier with the
  912.    person or object (the subject) to which it refers.  In the case of a
  913.    person as verifier, this name space is inherently limited in size and
  914.    complexity by the capacity of a human memory.
  915.  
  916.    SDSI achieves a global name space by linking together local name
  917.  
  918.  
  919.  
  920.  
  921. Ellison, Frantz, Thomas                                        [Page 16]
  922.  
  923.  
  924. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  925.  
  926.  
  927.    spaces.  That is, two people, Alice and Bob, may each have a friend
  928.    they call Carol.  To each of them, the name (ref: carol) is used.  If
  929.    Ted knows both Alice and Bob, then Ted might have occasion to speak
  930.    with each of them about Carol.  Not necessarily having met Alice's or
  931.    Bob's Carol, Ted uses the names (FQN: K-ted alice carol) and (FQN: K-
  932.    ted bob carol).
  933.  
  934.    David might be able to tell that Alice and Bob know the same Carol by
  935.    inspecting the certificates issued by Alice and Bob for Carol:
  936.  
  937.    (K-alice,K1,D1,"(Name: carol)",V1)
  938.    (K-bob,K2,D2,"(Name: carol)",V2)
  939.  
  940.    If K1 = K2, then Alice and Bob both use the name Carol to refer to
  941.    the same person.  However, Alice and Bob are free to reorganize their
  942.    local name spaces at will, without notifying anyone who might have
  943.    learned name mappings, so this equality of keyholders can be
  944.    considered valid only for the shorter of the two certificate validity
  945.    periods.  After that period, Ted may have to get new certificates
  946.    from Alice and Bob to determine if they still refer to the same
  947.    person by the name Carol.  Of course, this is an academic exercise
  948.    since the names by which Alice and Bob know the keyholder of K1 is
  949.    probably of limited importance.
  950.  
  951.    Under SDSI, a name might be an individual or it might be a group.
  952.    One could think of an individual as a group of one member, in which
  953.    case all SDSI names can be thought of as groups.  The entity defining
  954.    that name is responsible for issuing certificates binding a <subject>
  955.    key to the name or declaring that the principal (the <subject> key)
  956.    is a member or not a member of the named group.
  957.  
  958.    SDSI names are defined with the <auth> fields: Name: and Member:
  959.    described later in this document.
  960.  
  961.  
  962.  
  963. 3.6 Certificate validity periods
  964.  
  965.    Our experience with credit cards has influenced the way we consider
  966.    validity periods of certificates.
  967.  
  968.    A credit card is issued with an expiration date 1 to 3 years later
  969.    than the date of issue, yet one can revoke a credit card and have
  970.    that revocation be effective within a day of the request.  That
  971.    credit card has a validity period of one day (or less) in spite of
  972.    its expiration date.
  973.  
  974.    At one time, credit card validity was verified at a checkout counter
  975.  
  976.  
  977.  
  978.  
  979. Ellison, Frantz, Thomas                                        [Page 17]
  980.  
  981.  
  982. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  983.  
  984.  
  985.    by looking the card number up in a book of revoked cards.  The
  986.    validity period of a card not listed in such a book was the time
  987.    until that book was updated and the card had to be looked up again.
  988.    This practice has migrated into the digital world through the CRL
  989.    (Certificate Revocation List) construct.
  990.  
  991.    Modern systems accepting credit cards perform an on-line validity
  992.    check, in which case the validity period can be very short and is
  993.    determined by the time it takes to make a database update from a
  994.    report of a lost or stolen card.
  995.  
  996.    An authorization certificate can be stored in read-write storage,
  997.    since it is protected from tampering by its digital signature(s).
  998.    Therefore, it has a third option for short-term validity checks.  It
  999.    can hold a guaranteed validity time which is re-written as needed
  1000.    during an on-line check, but can be trusted without the on-line check
  1001.    until that time.
  1002.  
  1003.    All of these methods of validity checking are functionally equivalent
  1004.    but they have different performance impacts.
  1005.  
  1006.    CRL:
  1007.         If one can afford to keep a copy of the CRL, there is the
  1008.         communications load of accepting periodic additions to the CRL
  1009.         (hopefully very small and relatively infrequent).  Each
  1010.         verification then requires a local memory reference.
  1011.  
  1012.         If the CRL must be delivered by the supplicant or fetched from
  1013.         an on-line source with each verification, then the
  1014.         communications load of CRL usage is proportional to CRL size and
  1015.         can become very high.
  1016.  
  1017.    On-line:
  1018.         The communications load for on-line checking is constant.
  1019.  
  1020.    Periodic-revalidation:
  1021.         If a certificate is used more than once during its validity
  1022.         period, periodic-revalidation provides a caching effect, saving
  1023.         the communications load for on-line checking.  It also permits
  1024.         the supplicant to perform the on-line check and distributes that
  1025.         load away from the verifier.
  1026.  
  1027.  
  1028.    Because of the time it takes to communicate and the need to allow for
  1029.    clock skew, a validity period can never go to zero.  The shorter the
  1030.    period, the less risk an issuer runs of having a withdrawn
  1031.    authorization active in the world.  The longer the period, the less
  1032.    communication and revalidation overhead is incurred.  Choice of
  1033.  
  1034.  
  1035.  
  1036.  
  1037. Ellison, Frantz, Thomas                                        [Page 18]
  1038.  
  1039.  
  1040. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  1041.  
  1042.  
  1043.    validity period is left up to the issuer of the certificate.
  1044.  
  1045.    The closest one can get to zero-length validity fields is an on-line
  1046.    check with random challenge response, so that it can not be replayed.
  1047.    Such a check can be considered valid only for that one transaction.
  1048.  
  1049.  
  1050.  
  1051. 3.7 Unwanted Attributions
  1052.  
  1053.    There is a potential problem that a certificate might be issued which
  1054.    the keyholder does not want.
  1055.  
  1056.    For example, a keyholder, Alice, has a signature key, K, being used
  1057.    to sign digital lab notebooks for later use in patent applications.
  1058.    That key is certified as hers by her company through an SPKI identity
  1059.    certificate with an EMPLOYEE <auth> field.
  1060.  
  1061.    Bob learns Alice's public key and builds a certificate using his own
  1062.    name and her key, getting it signed by some reputable commercial CA.
  1063.  
  1064.    Now when it comes time to dispute prior art on Alice's patent(s), Bob
  1065.    produces his certificate and claims that Alice had copied not only
  1066.    his work but his private signature key.
  1067.  
  1068.    For another example, Bob could give Alice read-write access to a
  1069.    directory structure Bob intends to corrupt, blaming that corruption
  1070.    on Alice.
  1071.  
  1072.    To resolve this, some certificates should be signed by the <subject>
  1073.    as well as by the <issuer>.  An identity certificate is one such.  It
  1074.    is an open issue whether we should require all certificates with keys
  1075.    for <subject>s to be signed by both <issuer> and <subject>.
  1076.  
  1077.  
  1078.  
  1079. 3.8 Secret Certificates
  1080.  
  1081.    Some certificates need to be kept secret (e.g., a certificate binding
  1082.    a name to a symmetric-algorithm signature key).  Such certificates
  1083.    can be encrypted in a key known only to the intended verifier.  In
  1084.    some cases, it is that verifier who issued the certificate and in
  1085.    that case it can be kept in protected storage at the verifier and
  1086.    never given out.
  1087.  
  1088.  
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095. Ellison, Frantz, Thomas                                        [Page 19]
  1096.  
  1097.  
  1098. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  1099.  
  1100.  
  1101. 3.9 Blind Signatures
  1102.  
  1103.    The issue of blind signatures was raised on the list.  As can be seen
  1104.    from the format of the Signature: object, normal blinding (e.g., of
  1105.    RSA by pre- and post- multiplication of a signature value) can be
  1106.    applied.  It is an open issue whether blinding of other algorithms
  1107.    can be accommodated as easily.
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.  
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153. Ellison, Frantz, Thomas                                        [Page 20]
  1154.  
  1155.  
  1156. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  1157.  
  1158.  
  1159. 4. Data Object Formats
  1160.  
  1161.    Borrowing heavily from the SDSI work, we define a certificate format
  1162.    using S-expressions.  An S-expression is a list whose first item is a
  1163.    token giving the name of the object (or identifying some program to
  1164.    run) while the remaining items are parameters.  These parameters can
  1165.    be positional and merely tokens or they can be lists whose first
  1166.    token is the name of the parameter.  In most cases we assume
  1167.    parameters are named and leave positional definitions as an option
  1168.    for those who create their own <auth> expressions.
  1169.  
  1170.    There is a set of rules for converting from S-expression to a minimal
  1171.    size binary format.  That is the form which is fed to a hash function
  1172.    when signing an object.  It is also available as a binary format for
  1173.    transmission into a device with small memory or slow interface (such
  1174.    as a SmartCard).  Those rules are given below, in section 4.3.
  1175.  
  1176.    It is our intention to provide C programs for converting between
  1177.    binary and S-expression formats.  We take as a rule that the thing
  1178.    signed is the binary of the thing transmitted, even if it is
  1179.    transmitted in S-expression format.  That is, the transmitted object
  1180.    specifies order and content of parameters.  The binary conversion
  1181.    provides space-saving and canonicalization.
  1182.  
  1183.  
  1184.  
  1185. 4.1 BNF of SPKI Objects
  1186.  
  1187.    The following defines an SPKI certificate and related objects,
  1188.    expressed here in pseudo-BNF -- with "*" meaning closure (0 or more
  1189.    occurrences) and "?" meaning optional (0 or 1 occurrence).  At the
  1190.    top level (not used internally in any other object) are the following
  1191.    three objects.  Other objects (such as <pub-key>) might also occur at
  1192.    a top level, to be hashed and referred to by hash.
  1193.  
  1194.    <cert-body>:: "(" <T_cert> <version>? <issuer> <issuer-loc>?
  1195.    <subject> <subject-loc>? <deleg> <auth> <comments> * <valid> ")" ;
  1196.  
  1197.    <sig>:: "(" <T_sig> <principal> <sobj> <sig-val> ")" ;
  1198.  
  1199.    <bundle>:: "(" <T_bundle> <s-expression> * ")" ;
  1200.  
  1201.    Note that the fields in a <cert-body> don't need to be in the order
  1202.    given by the BNF, because they are all self-identified, but we
  1203.    recommend that they be given in that order, for human readability.
  1204.  
  1205.    Defined below are the other elements of this BNF description.
  1206.  
  1207.  
  1208.  
  1209.  
  1210.  
  1211. Ellison, Frantz, Thomas                                        [Page 21]
  1212.  
  1213.  
  1214. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  1215.  
  1216.  
  1217.    <T_auth>:: "Auth:" | "A:" ;
  1218.  
  1219.    <T_bundle>:: "Bundle:" ;
  1220.  
  1221.    <T_cert>:: "Certificate:" | "C:" ;
  1222.  
  1223.    <T_deleg>:: "D:" | "May-delegate:" ;
  1224.  
  1225.    <T_fq_name>:: "FQN:" | "Fully-qualified-name:" ;
  1226.  
  1227.    <T_hash>:: "H:" | "Hash:" ;
  1228.  
  1229.    <T_iloc>:: "IL:" | "Issuer-cert-loc:" ;
  1230.  
  1231.    <T_issuer>:: "Issuer:" | "I:" ;
  1232.  
  1233.    <T_moi>::  "Member-of-issuer:" | "Moi:" ;
  1234.  
  1235.    <T_notafter>:: "Not-after:" | "NA:" ;
  1236.  
  1237.    <T_notbefore>:: "Not-before:" | NB:" ;
  1238.  
  1239.    <T_pubkey>:: "K:" | "Public-key:" ;
  1240.  
  1241.    <T_sig>:: "Signature:" | "Sig:" ;
  1242.  
  1243.    <T_sloc>:: "SL:" | "Subject-info-loc:" ;
  1244.  
  1245.    <T_subj>:: "Subject:" | "S:" ;
  1246.  
  1247.    <URI>:: byte-string ;
  1248.  
  1249.    <auth>:: "(" <T_auth> token <param> * ")" | <predefined-auths> ;
  1250.  
  1251.    <comments>::  "(" "Comment:" byte-string * ")" ;
  1252.  
  1253.    <deleg>:: "(" <T_deleg> <int> ")" ;
  1254.  
  1255.    <fq-name>:: "(" <T_fq_name> <principal> <names> ")" ;
  1256.  
  1257.    <hash-alg-name>:: "SHA1" | "MD5" | etc..... ;
  1258.  
  1259.    <hash-of-key>:: <hash> ;
  1260.  
  1261.    <hash-value>:: byte-string ;
  1262.  
  1263.    <hash>:: "(" <T_hash> <hash-alg-name> <hash-value> <URI>? ")" ;
  1264.  
  1265.  
  1266.  
  1267.  
  1268.  
  1269. Ellison, Frantz, Thomas                                        [Page 22]
  1270.  
  1271.  
  1272. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  1273.  
  1274.  
  1275.    <host-name>:: byte-string ;
  1276.  
  1277.    <int>:: byte-string ;
  1278.  
  1279.    <issuer-loc>:: "(" <T_iloc> <URI> <param> * ")"
  1280.  
  1281.    <issuer>:: "(" <T_issuer> <principal> ")" ;
  1282.  
  1283.    <login-name>:: byte-string ;
  1284.  
  1285.    <names>:: token | <names> token ;
  1286.  
  1287.    <not-after>:: "(" <T_notafter> <date> ")" ;
  1288.  
  1289.    <not-before>:: "(" <T_notbefore> <date> ")" ;
  1290.  
  1291.    <obj>:: "(" "Object:" byte-string ")" ;
  1292.  
  1293.    <online-test>:: "(" "Online:" <token> <URI> <param> * ")" ;
  1294.  
  1295.    <param>:: byte-string | <s-expression> ;
  1296.  
  1297.    <predefined-auths>:: "(" "FTP:" <host-name> <login-name> ")" | "("
  1298.    "HTTP:" <URI> ")" | "(" "Name:" token ")" | "(" "Member:" token ")" |
  1299.    "(" <T_moi> ")" | etc.... ;
  1300.  
  1301.    <principal>:: <pub-key> | <hash-of-key> | <fq-name> ;
  1302.  
  1303.    <pub-key>:: "(" <T_pubkey> <pub-sig-alg-and-key> ")" ;
  1304.  
  1305.    <pub-sig-alg-and-key>:: "(" "RSA-SHA1-PKCS1:" "(" "E:" <int> ")" "("
  1306.    "N:" <int> ")" ")" | "(" "RSA-SHA1-PKCS1:" <int> <int> ")" | etc....
  1307.    ;
  1308.  
  1309.    <relative-name>:: "(" "Ref:" <names> ")" ;
  1310.  
  1311.    <s-expression>:: "(" token <param> * ")" ;
  1312.  
  1313.    <secret-sig-key>:: "(" "HMAC-SHA1:" <int> <int> ")" | etc.... ;
  1314.  
  1315.    <sig-val>:: <param> ;
  1316.  
  1317.    <sobj>:: <hash> | <obj> ;
  1318.  
  1319.    <subj-obj>:: <principal> | <relative-name> | <hash> | <secret-sig-
  1320.    key> ;
  1321.  
  1322.    <subject-loc>:: "(" <T_sloc> <URI> <param> * ")" ;
  1323.  
  1324.  
  1325.  
  1326.  
  1327. Ellison, Frantz, Thomas                                        [Page 23]
  1328.  
  1329.  
  1330. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  1331.  
  1332.  
  1333.    <subject>:: "(" <T_subj> <subj-obj> ")" ;
  1334.  
  1335.    <valid>:: <not-before>? <not-after>? <online-test>? ;
  1336.  
  1337.    <version>:: "(" "Version:" <int> ")" ;
  1338.  
  1339.  
  1340.  
  1341.  
  1342. 4.1.1 Version
  1343.  
  1344.    If the version number is not specified, the version is 1.
  1345.  
  1346.  
  1347.  
  1348. 4.1.2 Issuer
  1349.  
  1350.    The issuer is a principal -- that is, a public key or something which
  1351.    can be reduced to a public key -- because it is used to sign
  1352.    certificates.
  1353.  
  1354.  
  1355.  
  1356. 4.1.3 Issuer-cert-loc
  1357.  
  1358.    The optional issuer certificate location field is for information
  1359.    only.  It gives a network address of a web page or server which can
  1360.    return the issuer's certificate authorizing the current certificate.
  1361.  
  1362.  
  1363.  
  1364. 4.1.4 Subject
  1365.  
  1366.    The subject is a principal or something reducible to one, in the
  1367.    normal case, but has been extended to also be a secret signature key
  1368.    or the hash of an object.
  1369.  
  1370.    1: principals include:
  1371.       a: a public key
  1372.       b: a fully qualified name
  1373.       c: a hash of a public key
  1374.       d: a relative name (anchored in the name-space of the issuer)
  1375.  
  1376.    2: secret signature key -- like a principal, but there is no public
  1377.       key which can be given out.  The certificate which defines a
  1378.       mapping to this secret key must itself be kept secret.  This
  1379.       certificate could define a name in the issuer's name-space as a
  1380.       name for that key and the name could be used elsewhere.
  1381.  
  1382.  
  1383.  
  1384.  
  1385. Ellison, Frantz, Thomas                                        [Page 24]
  1386.  
  1387.  
  1388. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  1389.  
  1390.  
  1391.    3: hash of an object -- in case one wants to assign attributes to an
  1392.       object.  E.g., a purchase order could be "signed by VP # 103",
  1393.       where that latter string is an <auth> field and the P.O. is the
  1394.       Subject of the certificate.
  1395.  
  1396.  
  1397.  
  1398.  
  1399. 4.1.5 Subject-info-loc
  1400.  
  1401.    The subject information location is an optional field which provides
  1402.    the location of a network resource where one can learn about the
  1403.    Subject -- e.g., find the subject public key, find the subject's home
  1404.    page, etc.
  1405.  
  1406.  
  1407.  
  1408. 4.1.6 May-delegate
  1409.  
  1410.    The May-delegate field is the only modifier defined on a certificate
  1411.    so far.  It is defined to take an integer parameter, currently, but
  1412.    that may be changed to a boolean.  This is an open issue.
  1413.  
  1414.  
  1415.  
  1416. 4.1.7 Auth
  1417.  
  1418.    The Auth field can be a pre-defined field, described in section 5, or
  1419.    a custom field defined by a developer who is programming a use of
  1420.    certificates.  The custom definitions are of the form:
  1421.  
  1422.                      "(" <T_auth> token <param> * ")"
  1423.  
  1424.    where the token is the developer's name for this <auth> and the
  1425.    optional list of parameters are as defined by that developer.  These
  1426.    parameters can be position sensitive or can be S-expressions of the
  1427.    form
  1428.  
  1429.                 "(" <parameter-name> <parameter-value> ")"
  1430.  
  1431.    at the developer's discretion.
  1432.  
  1433.  
  1434.  
  1435. 4.1.7.1 Auth field reduction rules
  1436.  
  1437.    When a developer defines a new <auth> field, he or she must also
  1438.    define how the new field is to be reduced.  By default, two
  1439.  
  1440.  
  1441.  
  1442.  
  1443. Ellison, Frantz, Thomas                                        [Page 25]
  1444.  
  1445.  
  1446. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  1447.  
  1448.  
  1449.    certificates which have identical <auth> fields will reduce provided
  1450.    the rest of the 5-tuple fields permit it.  If strict equality is not
  1451.    adequate, the developer can define partial ordering between <auth>
  1452.    fields (e.g., sorting rules over different parameters).  If partial
  1453.    ordering relationships aren't adequate to reduce the intended <auth>
  1454.    fields, then the developer can write a program to do that reduction
  1455.    (as described elsewhere, under the heading of PolicyMaker).
  1456.  
  1457.  
  1458.  
  1459. 4.1.7.2 Auth global uniqueness
  1460.  
  1461.    If a developer desires to have a unique name for his or her <auth>
  1462.    token in some global name-space, that name can have a true random
  1463.    string appended, with length of string chosen according to the risk
  1464.    of accidental duplication of name the developer is willing to
  1465.    tolerate.
  1466.  
  1467.  
  1468.  
  1469. 4.1.8 Comment
  1470.  
  1471.    A comment field may contain any text or other strings the author
  1472.    desires.  These strings may have display instructions.  The comment
  1473.    is included in the signature of a certificate, but is not expected to
  1474.    be read by any computer program.
  1475.  
  1476.  
  1477.  
  1478. 4.1.9 Not-after, Not-before
  1479.  
  1480.    The not-before and not-after dates are normal validity dates for a
  1481.    certificate.  In many cases, there is no other validity constraint
  1482.    needed.  However, for those other cases, the Online: directive is
  1483.    provided.
  1484.  
  1485.  
  1486.  
  1487. 4.1.10 Online
  1488.  
  1489.    The Online: validity option gives the location of a remote service
  1490.    which will pass judgment on the current validity of a certificate.
  1491.    Details of such a service have not been specified at the time of this
  1492.    draft.  There is an open issue about whether we should include
  1493.    specification of one or more such services beyond merely making room
  1494.    for such specifications in the certificate definition.
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500.  
  1501. Ellison, Frantz, Thomas                                        [Page 26]
  1502.  
  1503.  
  1504. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  1505.  
  1506.  
  1507. 4.1.11 Signature
  1508.  
  1509.    A signature expression can refer to anything, but typically a
  1510.    certificate body.  If the object hash is used (as expected), that
  1511.    hash must use the same hash algorithm specified in the signing key.
  1512.    In that case, the hash value given in the Signature expression is the
  1513.    one which is to be used to verify the signature.
  1514.  
  1515.  
  1516.  
  1517. 4.1.12 Bundle
  1518.  
  1519.    A bundle expression is provided only for convenience, in case someone
  1520.    wants to bundle a set of public keys and certificate bodies and
  1521.    signatures into one expression for communication.
  1522.  
  1523.  
  1524.  
  1525. 4.1.13 <pub-key>
  1526.  
  1527.    A public signature key expression, for example:
  1528.  
  1529.    (K: (RSA-SHA1-PKCS1: &03 =gJVtABwLSwwTVM0tg1QPgsOVUoA5EjPz-
  1530.    =UtNKU3PLElkMk0IAE0yhyy0zYuwVSnQzFEvM0hSns1OKzC08AO0SB84yUsDTgDnL-
  1531.    =fAyVYtRCHAyPlW0NTDPKcksSh9Tt9EwuQ1SsEgAtMy0XQAAKSxVtA4KODLkzjQzz-
  1532.    =VFIL00pUc9J= ) )
  1533.  
  1534.    defines a public key algorithm, a hash algorithm and a padding method
  1535.    (PKCS1 in this example).
  1536.  
  1537.    A public key can be transmitted at the top level of a communication.
  1538.    In that case, it is assumed that the key is referred to by hash in
  1539.    the body of one or more certificates in the same communication.
  1540.  
  1541.  
  1542.  
  1543. 4.1.14 Hash
  1544.  
  1545.    A hash expression, for example:
  1546.  
  1547.    (H: SHA1 =SxVtA4KODLkzjQzzVFIL00pUc9J= )
  1548.  
  1549.    or
  1550.  
  1551.    (H: SHA1 =SxVtA4KODLkzjQzzVFIL00pUc9J= http://ietf.org/ )
  1552.  
  1553.    gives a hash algorithm name and a hash value of some object.
  1554.    Optionally, the hash expression also gives a URI of that object.
  1555.  
  1556.  
  1557.  
  1558.  
  1559. Ellison, Frantz, Thomas                                        [Page 27]
  1560.  
  1561.  
  1562. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  1563.  
  1564.  
  1565. 4.1.15 <secret-sig-key>
  1566.  
  1567.    A secret signature key expression, for example:
  1568.  
  1569.    (HMAC-SHA1: &17fa34017c320401 &75e3391ac90d0a38 )
  1570.  
  1571.    gives the secret key values for computing a MAC, keyed hash or
  1572.    encrypted cookie, to permit a symmetric algorithm to be used for
  1573.    signatures.  This is expected to be faster than a public key
  1574.    algorithm, but is limited to cases where the signer and the verifier
  1575.    have mutual trust.
  1576.  
  1577.  
  1578.  
  1579. 4.1.16 Fully-qualified-name
  1580.  
  1581.    A fully qualified SDSI name, for example:
  1582.  
  1583.    (FQN: (H: SHA1 =SxVtA4KODLkzjQzzVFIL00pUc9J= ) fred sam )
  1584.  
  1585.    specifies a  key (and therefore its name space) for the first name in
  1586.    the list ("fred" in this example).  That first name can then be
  1587.    resolved to a key and the process recurses until the FQN is reduced
  1588.    to a key.  The example above might reduce to:
  1589.  
  1590.    (FQN: (H: SHA1 =yy0zYuwVSnQzFEvM0hSns1OKzC0= ) sam )
  1591.  
  1592.    etc.
  1593.  
  1594.  
  1595.  
  1596. 4.1.17 Ref
  1597.  
  1598.    A Ref expression is a relative name.  It is converted to a fully
  1599.    qualified SDSI name by using the Issuer of the certificate of which
  1600.    it is a part as the key defining the name-space.
  1601.  
  1602.    (Ref: joe fred sam)
  1603.  
  1604.    might become
  1605.  
  1606.    (FQN: (H: SHA1 =SxVtA4KODLkzjQzzVFIL00pUc9J= ) joe fred sam )
  1607.  
  1608.    for example.
  1609.  
  1610.  
  1611.  
  1612.  
  1613.  
  1614.  
  1615.  
  1616.  
  1617. Ellison, Frantz, Thomas                                        [Page 28]
  1618.  
  1619.  
  1620. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  1621.  
  1622.  
  1623. 4.1.18 Date
  1624.  
  1625.    A date field is an ASCII byte string of the form:
  1626.  
  1627.    YYYY-MM-DD_HH:MM:SS
  1628.  
  1629.    assumed to be UTC, with lower significance time fields optional and
  1630.    taken to be 0 if missing.  For internal use, it is treated as a
  1631.    normal byte string.  Dates are compared as byte string comparisons.
  1632.  
  1633.  
  1634.  
  1635. 4.2 Primitives
  1636.  
  1637.    Not defined in the BNF above are the primitives: byte-string and
  1638.    token.
  1639.  
  1640.  
  1641.  
  1642. 4.2.1 byte-string
  1643.  
  1644.    A byte string is the general atomic element of a list.  It can be
  1645.    expressed in a number of different ways, in ASCII S-expressions:
  1646.  
  1647.  
  1648.  
  1649. 4.2.1.1 token
  1650.  
  1651.    A token is a sequence of printable characters other than parentheses,
  1652.    braces, single or double quotes, square brackets, hash mark, equal
  1653.    sign or ampersand.  It may not start with a digit or end in a minus
  1654.    sign.  Such a token does not need to be quoted.
  1655.  
  1656.  
  1657.  
  1658. 4.2.1.2 quoted string
  1659.  
  1660.    A string not containing a double quote can be quoted in double
  1661.    quotes.  A string not containing a single quote can be quoted in
  1662.    single quotes.
  1663.  
  1664.  
  1665.  
  1666. 4.2.1.3 hex string
  1667.  
  1668.    A byte string can be represented in hex by preceding the hex
  1669.    characters with an ampersand, "&", and terminating it with a blank.
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675. Ellison, Frantz, Thomas                                        [Page 29]
  1676.  
  1677.  
  1678. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  1679.  
  1680.  
  1681. 4.2.1.4 base64 string
  1682.  
  1683.    A byte string can be represented in base64 by preceding it with an
  1684.    equal sign, "=", and terminating it with a blank.  The base64 string
  1685.    must be a multiple of 4 characters in length, although it may end
  1686.    with "=" character(s) to show that it is short 1 or 2 bytes of being
  1687.    a multiple of 3 bytes in binary.
  1688.  
  1689.  
  1690.  
  1691. 4.2.1.5 literal binary string
  1692.  
  1693.    A byte string can be represented as a literal string of binary bytes
  1694.    by prefixing it with a length and a colon, ":".  The length is
  1695.    expressed in base 256, prefixing each byte of the length with a hash
  1696.    mark, "#".
  1697.  
  1698.    If "\001" stands for the byte 0x01, also known as ^A, #\001:"
  1699.    represents a byte string of 1 byte holding the double quote
  1700.    character.  A length #A#B: would start a literal byte string of
  1701.    length 16706.
  1702.  
  1703.  
  1704.  
  1705. 4.2.1.6 concatenation of strings
  1706.  
  1707.    A byte string, in any of the forms above, can be continued by
  1708.    following it with the hyphen, "-", and then another byte string.  The
  1709.    two byte strings do not need to be encoded in the same style.  They
  1710.    are represented internally as a single string.
  1711.  
  1712.  
  1713.  
  1714. 4.2.2 Display information
  1715.  
  1716.    A byte string may be prefixed with an optional piece of display
  1717.    information.  This is in the form:
  1718.  
  1719.    <display-info>:: "[" <param> "]"
  1720.  
  1721.    The display information is assumed to give information about how to
  1722.    display the byte string.  For example, we envision strings like:
  1723.    [utc-8], [unicode], [jpeg], [gif], [wav], etc.  The content of the
  1724.    display info is allowed to be an S-expression, in case we encounter
  1725.    display commands which need parameters, but for now we expect it to
  1726.    be a simple name.
  1727.  
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733. Ellison, Frantz, Thomas                                        [Page 30]
  1734.  
  1735.  
  1736. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  1737.  
  1738.  
  1739. 4.2.3 List counts
  1740.  
  1741.    A list can be preceded by a count (of the form #<byte>#<byte> but
  1742.    with no ":").  This is for informational use -- primarily out of
  1743.    consideration for devices which want to allocate arrays to hold lists
  1744.    rather than store them as linked elements.
  1745.  
  1746.  
  1747.  
  1748. 4.3 Binary (canonical) form
  1749.  
  1750.    Any of these S-expressions which is hashed is to be converted to
  1751.    binary form prior to the hash.  This gives a canonical form and also
  1752.    reduces the size of the expression to save time in case the hash
  1753.    function is expensive.
  1754.  
  1755.    The binary form can also be used to transmit certificates whenever
  1756.    the communication rate into a device is limited or there is no reason
  1757.    to keep certificates human readable.
  1758.  
  1759.  
  1760.  
  1761. 4.3.1 Byte strings
  1762.  
  1763.    All byte strings are expressed as binary strings (preceded by length
  1764.    byte(s) and ":") and therefore there is no need for blanks to
  1765.    terminate strings.
  1766.  
  1767.    Continuation of byte strings is never used in binary form.
  1768.  
  1769.  
  1770.  
  1771. 4.3.2 List counts
  1772.  
  1773.    In packed binary form, for hash purposes, there are no list lengths.
  1774.  
  1775.  
  1776.  
  1777. 4.3.3 blanks
  1778.  
  1779.    In binary form, there are no blanks.
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789.  
  1790.  
  1791. Ellison, Frantz, Thomas                                        [Page 31]
  1792.  
  1793.  
  1794. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  1795.  
  1796.  
  1797. 5. <auth> Field Examples
  1798.  
  1799.    The <auth> fields listed here are not meant to be an exhaustive list
  1800.    of all possible <auth>s.  Such is not possible.  The final arbiter of
  1801.    what needs to be an <auth> and what parameters a particular <auth>
  1802.    needs is the designer of the code which verifies a certificate, e.g.,
  1803.    to grant access.  Listed here are <auth> fields we know to be useful.
  1804.    For cases we have not anticipated, there is a field "Auth:" to handle
  1805.    arbitrary new <auth> fields, described above in section 4.1.7.
  1806.  
  1807.  
  1808.  
  1809. 5.1 Member-of-issuer
  1810.  
  1811.    (Moi:)
  1812.  
  1813.    This <auth> grants the Subject all the authority of the Issuer.  It
  1814.    is anticipated that this <auth> will be used to delegate permissions
  1815.    to a temporary signing key or to indicate members of a group (where
  1816.    the Issuer is the group).
  1817.  
  1818.  
  1819.  
  1820. 5.2 Name
  1821.  
  1822.    (Name: fred)
  1823.  
  1824.    This <auth> defines a SDSI name in the Issuer's name-space, in this
  1825.    example "fred".  The Subject of the certificate is assumed to reduce
  1826.    to the key for that name and most likely to be that key.
  1827.  
  1828.  
  1829.  
  1830. 5.3 Member
  1831.  
  1832.    (Member: faculty)
  1833.  
  1834.    This <auth> declares that the Subject is a member of <group> where
  1835.    <group> is a name in the Issuer's name space.  This is a SDSI group
  1836.    definition, since SDSI groups had only names in some name-space.
  1837.    Native SPKI uses a public key as a group name and the (Moi:) <auth>
  1838.    for delegating privileges to group members.
  1839.  
  1840.  
  1841.  
  1842.  
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849. Ellison, Frantz, Thomas                                        [Page 32]
  1850.  
  1851.  
  1852. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  1853.  
  1854.  
  1855. 5.4 FTP
  1856.  
  1857.    (FTP: cybercash.com cme )
  1858.  
  1859.    This <auth> indicates that the Subject has permission to do FTP into
  1860.    host cybercash.com as user cme.
  1861.  
  1862.  
  1863.  
  1864. 5.5 HTTP
  1865.  
  1866.    (HTTP: http://acme.com/company-private/personnel/ )
  1867.  
  1868.    This <auth> gives the Subject permission to access web pages which
  1869.    start with the given URL.
  1870.  
  1871.  
  1872.  
  1873. 5.6 TELNET
  1874.  
  1875.    (TELNET: erols.com spinne )
  1876.  
  1877.    This <auth> gives the Subject permission to telnet into host
  1878.    erols.com as user spinne.
  1879.  
  1880.  
  1881.  
  1882. 5.7 Public Key Protected File System
  1883.  
  1884.    (PKPFS: //<hostname>/<path> <access> )
  1885.    (PKPFS: //<hostname>/<path>/ <access> )
  1886.  
  1887.    refers to a hypothetical distributed file system whose access is
  1888.    controlled by public key challenge/response.
  1889.  
  1890.    If <path> ends in "/" (as in the second example), access is to an
  1891.    entire subtree.  Otherwise, it is to an indicated file (or set of
  1892.    files via "*").
  1893.  
  1894.    <access> is a set of letters:
  1895.    R: for read
  1896.    W: for (over-)write
  1897.    A: for add to directory (or append to file)
  1898.    D: for delete
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.  
  1907. Ellison, Frantz, Thomas                                        [Page 33]
  1908.  
  1909.  
  1910. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  1911.  
  1912.  
  1913. 5.8 Dating Service Bindings
  1914.  
  1915.    There is some information which might be certified for a fee by a
  1916.    commercial on-line dating service:
  1917.  
  1918.    MARITAL-STATUS: <status>
  1919.  
  1920.    BIRTH-YEAR: <year>
  1921.  
  1922.    HEIGHT: <height>
  1923.  
  1924.    WEIGHT: <weight>
  1925.  
  1926.    PICTURE: <hash of image file>,<location of image file>
  1927.  
  1928.    This is specialized enough not to be pre-defined.  E.g., one might
  1929.    use:
  1930.  
  1931.    (Auth: Dating <params>)
  1932.  
  1933.  
  1934.  
  1935. 5.9 Authority to spend money
  1936.  
  1937.    (Auth: Spend <bank> <account> <amount> )
  1938.  
  1939.    indicates that the subject has authority to authorize spending up to
  1940.    <amount> per electronic check from <account> at <bank>.
  1941.  
  1942.    For reduction of two certificates with this <auth>, if any field is
  1943.    present in one and not the other, that field is copied to the <auth>
  1944.    of the result.  If present in both, <bank> and <account> must be
  1945.    equal.  The <amount> byte string is taken to be ASCII of a floating-
  1946.    point decimal number and if present in both <auth>s, the <amount> of
  1947.    the result is the minimum of the two input <amount>s.
  1948.  
  1949.  
  1950.  
  1951.  
  1952.  
  1953.  
  1954.  
  1955.  
  1956.  
  1957.  
  1958.  
  1959.  
  1960.  
  1961.  
  1962.  
  1963.  
  1964.  
  1965. Ellison, Frantz, Thomas                                        [Page 34]
  1966.  
  1967.  
  1968. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  1969.  
  1970.  
  1971. Issues
  1972.  
  1973.  
  1974.      1) Should we require that all certificates be signed by both Issuer
  1975.         and Subject, when the Subject reduces to a key?  [When the
  1976.         Subject is a non-key object, it can't sign.]
  1977.  
  1978.      2) Can the Signature: object support blind signatures with
  1979.         algorithms other than RSA?
  1980.  
  1981.      3) Should we keep the final ":" in field names?  These are always
  1982.         the first names in a list and the ":" seems to be a carry-over
  1983.         from RFC822 without a real purpose.
  1984.  
  1985.      4) Should we continue to lump public key algorithm, hash algorithm
  1986.         and padding algorithm together in one pub-key-name?  This could
  1987.         lead to an explosion of names.  Of course, on the other hand
  1988.         this might reduce the number of competing algorithm/hash/pad
  1989.         mixes and simplify code.
  1990.  
  1991.      5) Should the delegation parameter be integer or boolean?
  1992.  
  1993.      6) Are object names (e.g., "Issuer:") case sensitive?
  1994.  
  1995.      7) Should we allow multiple <auth>s in one cert?  It saves space
  1996.         and time, maybe, but could constitute a privacy threat and may
  1997.         complicate the cert reading code.
  1998.  
  1999.      8) How much can we specify the <online-test>?  Are there only a
  2000.         handful possible/desirable tests, that we can fully spell out,
  2001.         or do we need to leave that open for invention?
  2002.  
  2003.      9) How many pre-defined <auth>s should we bother defining?
  2004.  
  2005.     10) If the Subject is a hash of a Bundle of hashes of keys, does
  2006.         this mean that the cert applies to all keys in the bundle?
  2007.  
  2008.     11) If the Subject is a hash of a file and the file contains hashes
  2009.         of other things, does the cert apply to the other things?
  2010.  
  2011.     12) Do we want to include validity fields for private key dates, as
  2012.         was done with X.509v3?
  2013.  
  2014.     13) How do we want to name algorithms?  One possibility is to define
  2015.         a few common ones (ones we want to encourage everyone to use for
  2016.         interoperability reasons) and allow others to be defined as URIs
  2017.         pointing to the definition of the algorithm.
  2018.  
  2019.  
  2020.  
  2021.  
  2022.  
  2023. Ellison, Frantz, Thomas                                        [Page 35]
  2024.  
  2025.  
  2026. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  2027.  
  2028.  
  2029.     14) Should we restore the explanation of [ECR] and define a <valid>
  2030.         field option for it?  This was removed from this draft in the
  2031.         interest of simplification.
  2032.  
  2033.     15) Should we allow Object as an optional element of the Signature
  2034.         expression, or force that block to give the Object's hash?
  2035.  
  2036.     16) Should we define an RSA signature algorithm with no hash and no
  2037.         padding, to hold verbatim objects being signed (assuming they
  2038.         are small enough)?
  2039.  
  2040.     17) What is the difference between the Member: and Name: <auth>?
  2041.         Can they be combined into one?
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.  
  2052.  
  2053.  
  2054.  
  2055.  
  2056.  
  2057.  
  2058.  
  2059.  
  2060.  
  2061.  
  2062.  
  2063.  
  2064.  
  2065.  
  2066.  
  2067.  
  2068.  
  2069.  
  2070.  
  2071.  
  2072.  
  2073.  
  2074.  
  2075.  
  2076.  
  2077.  
  2078.  
  2079.  
  2080.  
  2081. Ellison, Frantz, Thomas                                        [Page 36]
  2082.  
  2083.  
  2084. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  2085.  
  2086.  
  2087. References
  2088.  
  2089.    [BFL] Matt Blaze, Joan Feigenbaum and Jack Lacy, "Distributed Trust
  2090.    Management", Proceedings 1996 IEEE Symposium on Security and Privacy.
  2091.  
  2092.    [DNSSEC] Donald Eastlake and Charles Kaufman, "Domain Name System
  2093.    Security Extensions", (working draft of the DNSSEC Working Group).
  2094.  
  2095.    [DvH] J. B. Dennis and E. C. Van Horn, "Programming Semantics for
  2096.    Multiprogrammed Computations", Communications of the ACM 9(3), March
  2097.    1966
  2098.  
  2099.    [ECR] Silvio Micali, "Efficient Certificate Revocation", manuscript,
  2100.    MIT LCS.
  2101.  
  2102.    [HARDY] Hardy, Norman, "THE KeyKOS Architecture", Operating Systems
  2103.    Review, v.19 n.4, October 1985. pp 8-25.
  2104.  
  2105.    [IDENT] Carl Ellison, "Establishing Identity Without Certification
  2106.    Authorities", USENIX Security Symposium, July 1996.
  2107.  
  2108.    [IWG] McConnell and Appel, ``Enabling Privacy, Commerce, Security and
  2109.    Public Safety in the Global Information Infrastructure'', report of
  2110.    the Interagency Working Group on Cryptography Policy, May 12, 1996;
  2111.    (quote from paragraph 5 of the Introduction)
  2112.  
  2113.    [KEYKOS] Bomberger, Alan, et al., "The KeyKOS(r) Nanokernel
  2114.    Architecture", Proceedings of the USENIX Workshop on Micro-Kernels
  2115.    and Other Kernel Architectures, USENIX Association, April 1992. pp
  2116.    95-112 (In addition, there are KeyKOS papers on the net available
  2117.    through http://www.cis.upenn.edu/~KeyKOS/#bibliography)
  2118.  
  2119.    [LANDAU] Landau, Charles, "Security in a Secure Capability-Based
  2120.    System", Operating Systems Review, Oct 1989 pp 2-4
  2121.  
  2122.    [LEVY] Henry M. Levy, "Capability-Based Computer Systems", Digital
  2123.    Press, 12 Crosby Dr., Bedford MA 01730, 1984
  2124.  
  2125.    [LINDEN] T. A. Linden, "Operating System Structures to Support
  2126.    Security and Reliable Software", Computing Surveys 8(4), December
  2127.    1976.
  2128.  
  2129.    [PKCS1] PKCS #1: RSA Encryption Standard, RSA Data Security, Inc., 3
  2130.    June 1991, Version 1.4.
  2131.  
  2132.    [PKLOGIN] David Kemp, "The Public Key Login Protocol", working draft,
  2133.    06/12/1996.
  2134.  
  2135.  
  2136.  
  2137.  
  2138.  
  2139. Ellison, Frantz, Thomas                                        [Page 37]
  2140.  
  2141.  
  2142. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  2143.  
  2144.  
  2145.    [RFC1321] The MD5 Message-Digest Algorithm, R. Rivest, April 16 1992.
  2146.  
  2147.    [SDSI] Ron Rivest and Butler Lampson, "SDSI - A Simple Distributed
  2148.    Security Infrastructure [SDSI]",
  2149.    http://theory.lcs.mit.edu/~rivest/...
  2150.  
  2151.    [SRC-070] Abadi, Burrows, Lampson and Plotkin, "A Calculus for Access
  2152.    Control in Distributed Systems", DEC SRC-070, revised August 28,
  2153.    1991.
  2154.  
  2155.  
  2156.  
  2157.  
  2158.  
  2159.  
  2160.  
  2161.  
  2162.  
  2163.  
  2164.  
  2165.  
  2166.  
  2167.  
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185.  
  2186.  
  2187.  
  2188.  
  2189.  
  2190.  
  2191.  
  2192.  
  2193.  
  2194.  
  2195.  
  2196.  
  2197. Ellison, Frantz, Thomas                                        [Page 38]
  2198.  
  2199.  
  2200. INTERNET-DRAFT        Simple Public Key Certificate          25 Mar 1997
  2201.  
  2202.  
  2203. Authors' Addresses
  2204.  
  2205.    Carl M. Ellison
  2206.    CyberCash, Inc.
  2207.    207 Grindall Street
  2208.    Baltimore MD 21230-4103 USA
  2209.  
  2210.    Telephone:   +1 410-727-4288
  2211.                 +1 410-727-4293(fax)
  2212.                 +1 703-620-4200(main office, Reston, Virginia, USA)
  2213.    EMail:       cme@cybercash.com
  2214.  
  2215.    Brian Thomas
  2216.    Southwestern Bell
  2217.    One Bell Center, Room 23Q1
  2218.    St. Louis MO 63101 USA
  2219.  
  2220.    Telephone:   +1 314-235-3141
  2221.                 +1 314-331-2755(fax)
  2222.    EMail:       bt0008@entropy.sbc.com
  2223.  
  2224.  
  2225.    Bill Frantz
  2226.    Periwinkle
  2227.    16345 Englewood Ave.
  2228.    Los Gatos, CA 95032
  2229.  
  2230.    Telephone:   +1 408-356-8506
  2231.    Email:       frantz@netcom.com
  2232.  
  2233.  
  2234.  
  2235. Expiration and File Name
  2236.  
  2237.    This draft expires 30 September 1997.
  2238.  
  2239.    Its file name is draft-ietf-spki-cert-structure-01.txt
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.  
  2249.  
  2250.  
  2251.  
  2252.  
  2253.  
  2254.  
  2255. Ellison, Frantz, Thomas                                        [Page 39]
  2256.  
  2257.