Simple Public Key Certificate Carl M. Ellison
INTERNET-DRAFT CyberCash, Inc.
Expires: 30 September 97
Bill Frantz
Periwinkle
Brian M. Thomas
Southwestern Bell
25 March 1997
Simple Public Key Certificate
------ ------ --- -----------
Status of This Document
This document supersedes the draft filed under the name draft-ietf-
spki-cert-structure-00.txt and reflects changes in the structure to
prepare the way for merging the SPKI certificate structure of the
previous draft with the SDSI proposal of Rivest and Lampson. The
primary change is the use of S-expression format for data objects
such as certificate bodies.
A section giving the BNF of all data objects is given so this draft
is more complete than the previous one. It has also been simplified
in a number of places. The draft ends with a list of open questions
for group discussion.
Distribution of this document is unlimited. Comments should be sent
to the SPKI (Simple Public Key Infrastructure) Working Group mailing
list <spki@c2.org> or to the authors.
This document is an Internet-Draft. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its areas,
and its working groups. Note that other groups may also distribute
working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six
Ellison, Frantz, Thomas [Page 1]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
months. Internet-Drafts may be updated, replaced, or obsoleted by
other documents at any time. It is not appropriate to use Internet-
Drafts as reference material or to cite them other than as a
``working draft'' or ``work in progress.''
To learn the current status of any Internet-Draft, please check the
1id-abstracts.txt listing contained in the Internet-Drafts Shadow
Directories on ds.internic.net (East USA), ftp.isi.edu (West USA),
nic.nordu.net (North Europe), ftp.nis.garr.it (South Europe),
munnari.oz.au (Pacific Rim), or ftp.is.co.za (Africa).
Ellison, Frantz, Thomas [Page 2]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
Abstract
With the proliferation of public key cryptography on the Internet,
there arises a need for certification of keys. In the literature,
the word "certificate" has been generally taken to mean "identity
certificate" -- a signed statement which binds a key to the name of
an individual and has the intended meaning of delegating authority
from that named individual to the public key. (See, for example, RFC
1422.) This process is designed to transfer a relationship between
two entities from the physical world into the digital world.
The Internet itself changed the world from the one in which identity
certificates were considered necessary. As Internet use increases,
we increasingly interact with people or companies with whom we have
no relationship in the physical world. A transfer of relationship
from the physical world to the digital world is meaningless in such
cases. Instead, we need to establish relationships directly in the
digital world through an instrument which assigns attributes
(authority, permission, ...) to the digital principal. We call that
an "authorization certificate".
SPKI certificates were designed to perform that function by directly
specifying the <auth,key> binding which is of interest in the digital
world.
Acknowledgments
Several independent contributions, published elsewhere on the net or
in print, worked in synergy with our effort. Especially important to
our work were: [SDSI], [BFL] and [DNSSEC]. The inspiration we
received from the notion of CAPABILITY in its various forms (SDS-940,
Kerberos, DEC DSSA, [SRC-070], KeyKOS [HARDY]) can not be over-rated
and we must thank Butler Lampson for most of this inspiration.
Significant contributions to this effort by the members of the SPKI
mailing list and especially the following persons (listed in
alphabetic order) are gratefully acknowledged: Steve Bellovin, Mark
Feldman, John Gilmore, Phill Hallam-Baker, Bob Jueneman, David Kemp,
Paul Lambert, Jon Lasser, Jeff Parrett, Ron Rivest, Bill Sommerfeld,
Simon Spero.
Ellison, Frantz, Thomas [Page 3]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
Table of Contents
Status of This Document....................................1
Abstract...................................................3
Acknowledgments............................................3
Table of Contents..........................................4
1. Overview of Contents....................................6
2. Scope Of This Effort....................................7
2.1 Charter of the SPKI group..............................7
2.2 Areas Covered And Not Covered..........................7
2.2.1 Key and certificate storage..........................7
2.2.2 Protocols to use public key authentication...........8
2.3 Other Certificate Formats..............................8
2.4 Goals of this effort...................................9
2.5 SPKI Certificates vs. Capabilities.....................9
2.6 Chosen standard format.................................9
3. Assumptions, Definitions and Design Issues.............10
3.1 Background............................................10
3.2 Binding of key to principal...........................11
3.2.1 Protection of Private Keys..........................11
3.2.2 Definition of KEYHOLDER.............................12
3.3 Certificate Structure.................................13
3.3.1 5-tuple Reduction...................................13
3.3.2 Authority Loops.....................................14
3.3.3 Certificate Result Certificates.....................14
3.4 Policy Structures.....................................15
3.4.1 Equality of <auth>..................................16
3.4.2 Partial ordering of <auth>s.........................16
3.4.3 General <auth> fields...............................16
3.5 Certifying Identity with SPKI Certificates............16
3.6 Certificate validity periods..........................17
3.7 Unwanted Attributions.................................19
3.8 Secret Certificates...................................19
3.9 Blind Signatures......................................20
4. Data Object Formats....................................21
4.1 BNF of SPKI Objects...................................21
4.1.1 Version.............................................24
4.1.2 Issuer..............................................24
4.1.3 Issuer-cert-loc.....................................24
4.1.4 Subject.............................................24
4.1.5 Subject-info-loc....................................25
4.1.6 May-delegate........................................25
4.1.7 Auth................................................25
4.1.7.1 Auth field reduction rules........................25
Ellison, Frantz, Thomas [Page 4]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
4.1.7.2 Auth global uniqueness............................26
4.1.8 Comment.............................................26
4.1.9 Not-after, Not-before...............................26
4.1.10 Online.............................................26
4.1.11 Signature..........................................27
4.1.12 Bundle.............................................27
4.1.13 <pub-key>..........................................27
4.1.14 Hash...............................................27
4.1.15 <secret-sig-key>...................................28
4.1.16 Fully-qualified-name...............................28
4.1.17 Ref................................................28
4.1.18 Date...............................................29
4.2 Primitives............................................29
4.2.1 byte-string.........................................29
4.2.1.1 token.............................................29
4.2.1.2 quoted string.....................................29
4.2.1.3 hex string........................................29
4.2.1.4 base64 string.....................................30
4.2.1.5 literal binary string.............................30
4.2.1.6 concatenation of strings..........................30
4.2.2 Display information.................................30
4.2.3 List counts.........................................31
4.3 Binary (canonical) form...............................31
4.3.1 Byte strings........................................31
4.3.2 List counts.........................................31
4.3.3 blanks..............................................31
5. <auth> Field Examples..................................32
5.1 Member-of-issuer......................................32
5.2 Name..................................................32
5.3 Member................................................32
5.4 FTP...................................................33
5.5 HTTP..................................................33
5.6 TELNET................................................33
5.7 Public Key Protected File System......................33
5.8 Dating Service Bindings...............................34
5.9 Authority to spend money..............................34
Issues....................................................35
References................................................37
Authors' Addresses........................................39
Expiration and File Name..................................39
Ellison, Frantz, Thomas [Page 5]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
1. Overview of Contents
This document contains the following sections:
Section 2 describes the scope of both the SPKI working group and this
particular Internet Draft.
Section 3 gives necessary background for understanding the SPKI
certificate structure. It details assumptions, definitions and
design issues behind this structure design and is recommended reading
for anyone who did not follow the discussion on the working group
mailing list.
Section 4 describes SPKI data object formats -- listing the fields in
a certificate and giving encoding details.
Section 5 describes predefined SPKI <auth> fields. These are the
meat of an SPKI certificate, since they carry the authority or other
information being bound to a subject public key.
The Issues section gives a list of open questions to be resolved by
the SPKI working group.
The References section lists all documents referred to in the text as
well as readings which might be of interest to anyone reading on this
topic.
The Authors' Addresses section gives the addresses, telephone numbers
and e-mail addresses of the authors.
Ellison, Frantz, Thomas [Page 6]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
2. Scope Of This Effort
2.1 Charter of the SPKI group
Many Internet protocols and applications which use the Internet
employ public key technology for security purposes and require a
public key infrastructure to manage public keys.
The task of the working group will be to develop Internet standards
for an IETF sponsored public key certificate format, associated
signature and other formats, and key acquisition protocols. The key
certificate format and associated protocols are to be simple to
understand, implement, and use. For purposes of the working group,
the resulting formats and protocols are to be known as the Simple
Public Key Infrastructure, or SPKI.
The SPKI is intended to provide mechanisms to support security in a
wide range of Internet applications, including IPSEC protocols,
encrypted electronic mail and WWW documents, payment protocols, and
any other application which will require the use of public key
certificates and the ability to access them. It is intended that the
Simple Public Key Infrastructure will support a range of trust
models.
2.2 Areas Covered And Not Covered
This particular draft is concerned only with certificate and
signature formats, using the certificates defined here both for
verification of identity and for proof of authorization. We do not
cover the other elements of a full public key infrastructure (PKI):
key/certificate storage and acquisition. We also do not cover all
the applications or protocols which must be modified to employ public
key authentication or privacy.
2.2.1 Key and certificate storage
There are several independent efforts at this time to provide a
database of keys or certificates for the Internet.
The DNS Security Working Group draft [DNSSEC], specifies an efficient
key storage and distribution mechanism. It may be possible to store
an SPKI certificate in a KEY Resource Record (RR) or to create a new
Ellison, Frantz, Thomas [Page 7]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
RR type for SPKI certificates, under the DNSSEC design, but that
effort has not been undertaken yet.
The PGP key server at MIT operating both as a web page and as an e-
mail driven service provides another example of efficient certificate
storage and retrieval for the net at large.
SDSI demonstrated certificate servers for individuals to run on their
own net-connected workstations, in response to the fact that more and
more individuals remain connected to the network permanently.
2.2.2 Protocols to use public key authentication
Proposals for modification of applications to employ public key
authentication are proceeding independently, e.g., [PKLOGIN]. We
encourage other developers to actively enter this area of design,
aided by SPKI certificates as a tool.
2.3 Other Certificate Formats
We are aware of a number of actual and proposed kinds of signed
records which, by some definition, qualify as certificates:
1. PGP signed keys
2. X.509 identity certificates, from a number of sources
3. X.509 SET (Secure Electronic Transaction) certificates
4. DNS Security Extension signed keys
5. Signed PICS labels (from the W3C DSig effort)
It is not our intention to coerce these other certificate formats
into our mold, although they are welcome to switch over. The
certificate structure defined below is flexible enough to accommodate
all of the above.
However, we recognize that a real world system will involve some
mixture of SPKI and non-SPKI certificates as well as traditional
Access Control Lists (ACLs). Our design accommodates these through
the Certificate Result Certificate process, allowing all these to be
merged into a single, simple format as far as application software is
Ellison, Frantz, Thomas [Page 8]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
concerned.
2.4 Goals of this effort
In keeping with the design goals enumerated in section 3 of RFC1958,
it is our goal to keep the SPKI certificate pruned to the minimum
information necessary to accomplish the job at hand -- which is
secure authentication and authorization of access control and
confidentiality for the Internet. We use well tested formats with a
long history of success and have chosen those which require the bare
minimum of tool software so that applications remain as small and
efficient as possible. We offer the bare minimum of options, in
order to reduce program size and complexity.
We also recognize that some kinds of certification (such as notarized
identity certification) can carry risks of invasion of privacy for
the individual. We have therefore designed these certificates to
reveal the minimum information necessary to get the job done,
whatever that job happens to be. In many cases, the user can remain
anonymous in the traditional sense while exercising strongly verified
authorization.
2.5 SPKI Certificates vs. Capabilities
An SPKI certificate is closer to a "capability" as defined by Butler
Lampson et al. than to an identity certificate. There is the
difference that in a capability system, the capability itself is a
secret ticket, the possession of which grants some authority. It is
anonymous (cash rather than a check). Therefore, if you grant
authority to read a capability, you have delegated the ability to use
it. An SPKI certificate identifies the specific individual or group
to whom it grants authority and therefore the ability to read the
certificate grants no authority and the certificate itself does not
need to be as tightly controlled.
2.6 Chosen standard format
In this draft, the standard format adopted is that developed by SDSI,
modified slightly. Data objects are defined as S-expressions --
lists in which the first element is a token defining the data object.
Ellison, Frantz, Thomas [Page 9]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
3. Assumptions, Definitions and Design Issues
There were a number of discussion topics involved in the design of
the SPKI certificates and we summarize them here for the reader who
was not part of the SPKI discussion. This section should at least be
skimmed by even the reader with a solid grounding in classical
(identity) certification. Some of these might be new concepts. Some
provide definitions for terms which traditional discussions of
certification frequently leave undefined.
3.1 Background
In the words of Butler Lampson, a public signature key "speaks for"
its owner: a person or entity we call the "keyholder". It is
primarily through such public key "speech" that one achieves security
on the inherently anonymous and spoofable Internet.
There is a long standing effort to bind public keys to the "true
names" of their keyholders, in an attempt to identify the keyholder
and to permit the transfer of permissions or other attributes from
the physical world in which the keyholder lives into the digital
world. This effort has produced identity certificates, such as
X.509, giving <name,key> bindings which needed to be combined with
certificates or ACL entries giving <auth,name>, to yield the
relationship <auth,key> which a computer needs to verify public-key
driven access attempts. {<auth> here stands for authorization,
permission, etc.}
The Internet has changed the world from the one in which identity
certificates were originally seen to be necessary. In the new world
of the global Internet the entities which communicate are often not
known to each other in the physical world. This trend is likely to
increase as time goes on. Therefore a mechanism which transfers
attributes from the physical world to the digital world is
inappropriate.
We also observed that <key> is a perfectly adequate name for a
keyholder, at least as far as a computer is concerned. We therefore
set about declaring a certificate which would communicate <auth,key>
directly, leaving names out of the process except in the case where
the name is the item of interest (e.g., for secure e-mail).
Ellison, Frantz, Thomas [Page 10]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
3.2 Binding of key to principal
The most important issue is the notion of the binding of a key to a
principal.
By PRINCIPAL, we mean an entity (e.g., person, processor,
process, device (such as a printer), ...) which supplies a
service or requests action in a distributed computer system.
Discussions of certification frequently speak of binding of keys to
an "identity" (specifically, under X.509, to a Distinguished Name) as
if the "identity" were the same as the principal and as if the
identity certificate accomplished the binding of key to principal.
We observe that the binding between a public key and a principal has
nothing to do with certificates. Here we distinguish between a
principal and its name or "identity", however one defines that latter
term.
3.2.1 Protection of Private Keys
For any public key cryptosystem to work, it is essential that a
principal keep its private key to itself. In the case of a human
being, this might involve keeping the private key encrypted under a
high-entropy passphrase and storing it only on the person's own
personal computer or floppy disks. Some humans might even keep the
private key in a tamper-resistant PCMCIA card or SmartCard which will
never release it and will in fact destroy it after too many failed
attempts to gain access. In the case of a network node, this might
involve keeping the private key in a tamper-resistant cryptographic
processor which generated it and which will destroy it if tampering
is attempted.
If the principal does not keep the private key protected (that is, if
the private key gets out to others to use) then one can not know what
entity is using that key and no certificates will be able to restore
the resulting broken security.
Therefore, we are forced to assume that all private keys are kept
private and bound tightly to the one principal to which they belong.
We will have to provide for methods of announcing the compromise of
such private keys whenever this assumption proves false, but we must
assume that unless such notification is delivered, each private key
is secure and attached to its owner.
Ellison, Frantz, Thomas [Page 11]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
Note: We have specifically included the possibility for a holder
of authority to delegate that authority without appeal to some
certification authority, in order to reduce if not eliminate the
motivation for one principal to loan a private key to another.
We do not expect every person, process and device in the Internet to
employ true tamper resistance. Many people will keep and use private
keys on an insecure personal computer or workstation. However, we
are forced to assume protection of the private key or give up any
notion of cryptographically strong authentication and authorization.
3.2.2 Definition of KEYHOLDER
The keyholder has sole possession of the private key by definition
and could be identified by that key, but that key is secret. There
is only one private key to match a given public key, so the keyholder
can be identified by the public key just as uniquely. Similarly,
there is only one public key which hashes to a given secure hash (by
definition of "secure hash", assuming we are limited in computation
power), so the secure hash of a public key can also be used to
identify the keyholder.
DEFINITION: Keyholder -- a principal who holds a given private
key. The private key is indicated by either its corresponding
public key or a secure hash of that public key. Every key has a
keyholder, by definition. There is no implication in the word
"keyholder" that anything else is known about this principal
except the fact that it holds the indicated private key.
Without certificates, we might not know anything else about the
principal (such as name, gender or even if the principal is a living
being) but we do know enough to link together separate messages from
the same principal. For some purposes, that is sufficient
identification (for example, when a person is first encountered on-
line via signed messages and there is no intention of linking that
person to any physical being, only to his or her own other messages).
However, there are other applications for which the ability to link
together separate messages from an anonymous source is not adequate
and therefore for which certificates are required.
Ellison, Frantz, Thomas [Page 12]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
3.3 Certificate Structure
An SPKI certificate body has five groups of fields:
ISSUER: the public key of the issuing party or something reducible to
that public key, both as a means for verifying the certificate
signature and as a name for the issuing principal.
SUBJECT: the object receiving authority via this certificate or
something reducible to that object (usually a key or the hash of
a key or a document).
MODIFIERS: modifiers on the certificate. At present the only one
defined is "May-delegate:" -- the permission to delegate the
authority presented in the certificate (or part of it) to some
other Subject.
AUTHORITY: the specific authorization(s) being delegated in this
certificate. Section 5 gives details about <auth> fields.
VALIDITY: at least an expiration date but possibly a more complex
procedure for determining certificate validity. Section 6 gives
details about validity fields.
A certificate is signed by the issuer and, optionally, by the
subject. The dual signature is required for authorizations which
also imply responsibilities. The issuer is granting an
authorization, but the subject is accepting responsibility. Each of
those actions requires a signature.
Section 7 gives details about signature blocks.
3.3.1 5-tuple Reduction
The authorization statement in a valid certificate can be represented
by five quantities:
(I,S,D,A,V)
A set of certificates can be reduced as follows:
(I1,S1,D1,A1,V1) + (I2,S2,D2,A2,V2)
becomes
Ellison, Frantz, Thomas [Page 13]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
(I1,S2,D2,A,V)
if S1=I2 (meaning that they are or resolve to the same public key)
and D1 > D2 (if delegation is integer) or D1 >= D2 (if delegation is
boolean)
and A = intersection(A1,A2)
and V = intersection(V1,V2)
3.3.2 Authority Loops
By 5-tuple reduction, some chains of certificates will be reduced to
the form:
(Self,X,D,A,V)
where "Self" represents the computer doing the verification, granting
access, etc. Such a 5-tuple says "Self says that X has authority
(D,A) for validity period (or conditions) V". In other words, it
tells Self what it can trust about X.
Any certificate chain not reducing to a 5-tuple with Self as issuer
isn't relevant to decisions by Self.
Therefore, any certificate chain which is to be used by Self to do
trust management must have Self as a root. Since Self is doing this
chain reduction, that makes all useful authorization certificate
chains loops.
3.3.3 Certificate Result Certificates
If one has reduced a chain of certificate bodies down to the form:
(Self,X,D,A,V)
one can sign that generated body, using a private key of Self,
producing an SPKI certificate. Such a certificate is the result of
5-tuple reduction (and possibly PolicyMaker execution) over one or
more certificates (which could be of various formats, including SPKI,
X.509, DNSSEC, ...). This certificate result certificate, CRC, could
then be given back to the caller (protocol permitting) for that
caller to use throughout interval V. Such a certificate should
reduce transmission and verification time. The signature used by
Self could even employ a secret-key algorithm, on the assumption that
the issuer and verifier are the same entity. Alternatively, one
Ellison, Frantz, Thomas [Page 14]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
could use a public-key-signed CRC to enable a trusted server to
translate certificate formats from something difficult to deal with
(such as X.509) into SPKI.
3.4 Policy Structures
[BFL] introduces a language called PolicyMaker in which one can
express security policy statements -- the specific certificate
requirements by which a given action will be authorized. The actual
requirements are written in a safe language which program is then
bound to a key or set of keys by an issuer's signature.
PolicyMaker is likely to be used along with SPKI certificates in
three ways.
1) It is believed possible to use the PolicyMaker language to
implement the 5-tuple reduction described in the previous section.
The code has not been written as of the time of this draft, but at
this point it looks possible.
2) The default reduction rule is an operation on two certificate
bodies yielding a third. For some policies, there are more than
two input bodies and therefore the reduction code needs to be more
general than the simple rules given in the section above.
3) For some kinds of trust management, it will be necessary to
translate <auth> fields. That is, the simple rule
A=intersection(A1,A2)
makes it impossible for A to be greater than either A1 or A2. For
example, if company policy is that a purchase order is good only
if signed by two vice presidents, A1a might be "signed by VP #1"
and A1b might be "signed by VP #2", while A=A2 might be "purchase
order is good". Neither of the VPs has the authority to make a
purchase order good by himself or herself. Therefore, A > A1a and
A > A1b.
The first case is a matter of coding convenience. The others are
cases of logic of trust management.
There must be machinery in the verifying engine which reduces
certificate bodies. For everything but <auth> fields, this is
straight-forward. Since every verifier of certificates is permitted
to define custom <auth> fields, with custom semantics, the simple
reduction rules given above might not suffice and full PolicyMaker
programs might be needed.
Ellison, Frantz, Thomas [Page 15]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
Three forms of <auth> processing during 5-tuple reduction are
envisioned for the engine running in the verifier:
3.4.1 Equality of <auth>
This simplest of reduction operations applies when <auth> fields are
equal. No logic is required to supplement the reduction operation.
3.4.2 Partial ordering of <auth>s
If the definer of the <auth> field specifies rules for partial
ordering of those fields, the engine which reduces them can choose
the lesser of A1 and A2 and choose that as A -- to perform the normal
reduction indicated above.
3.4.3 General <auth> fields
In the most general case, the definer of the <auth> field must
provide a program which reduces these fields. That program is not
limited to taking two certificate bodies in and producing one on
output, as is true for the default rule. It can take one or more
certificate bodies and produce one or more outputs (although a single
output is probably sufficient for our purposes).
3.5 Certifying Identity with SPKI Certificates
It is possible to certify identity with an SPKI certificate. We
support the SDSI naming mechanism, since we recognize that all names
are local to some name-space -- even when that name-space desires to
be treated as global.
[SDSI] recognized that all names are local, even those generated by
an allegedly global CA. More importantly, for a name to be
meaningful, it must be known by the person or program using it (the
verifier) and unambiguously associated by that verifier with the
person or object (the subject) to which it refers. In the case of a
person as verifier, this name space is inherently limited in size and
complexity by the capacity of a human memory.
SDSI achieves a global name space by linking together local name
Ellison, Frantz, Thomas [Page 16]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
spaces. That is, two people, Alice and Bob, may each have a friend
they call Carol. To each of them, the name (ref: carol) is used. If
Ted knows both Alice and Bob, then Ted might have occasion to speak
with each of them about Carol. Not necessarily having met Alice's or
Bob's Carol, Ted uses the names (FQN: K-ted alice carol) and (FQN: K-
ted bob carol).
David might be able to tell that Alice and Bob know the same Carol by
inspecting the certificates issued by Alice and Bob for Carol:
(K-alice,K1,D1,"(Name: carol)",V1)
(K-bob,K2,D2,"(Name: carol)",V2)
If K1 = K2, then Alice and Bob both use the name Carol to refer to
the same person. However, Alice and Bob are free to reorganize their
local name spaces at will, without notifying anyone who might have
learned name mappings, so this equality of keyholders can be
considered valid only for the shorter of the two certificate validity
periods. After that period, Ted may have to get new certificates
from Alice and Bob to determine if they still refer to the same
person by the name Carol. Of course, this is an academic exercise
since the names by which Alice and Bob know the keyholder of K1 is
probably of limited importance.
Under SDSI, a name might be an individual or it might be a group.
One could think of an individual as a group of one member, in which
case all SDSI names can be thought of as groups. The entity defining
that name is responsible for issuing certificates binding a <subject>
key to the name or declaring that the principal (the <subject> key)
is a member or not a member of the named group.
SDSI names are defined with the <auth> fields: Name: and Member:
described later in this document.
3.6 Certificate validity periods
Our experience with credit cards has influenced the way we consider
validity periods of certificates.
A credit card is issued with an expiration date 1 to 3 years later
than the date of issue, yet one can revoke a credit card and have
that revocation be effective within a day of the request. That
credit card has a validity period of one day (or less) in spite of
its expiration date.
At one time, credit card validity was verified at a checkout counter
Ellison, Frantz, Thomas [Page 17]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
by looking the card number up in a book of revoked cards. The
validity period of a card not listed in such a book was the time
until that book was updated and the card had to be looked up again.
This practice has migrated into the digital world through the CRL
(Certificate Revocation List) construct.
Modern systems accepting credit cards perform an on-line validity
check, in which case the validity period can be very short and is
determined by the time it takes to make a database update from a
report of a lost or stolen card.
An authorization certificate can be stored in read-write storage,
since it is protected from tampering by its digital signature(s).
Therefore, it has a third option for short-term validity checks. It
can hold a guaranteed validity time which is re-written as needed
during an on-line check, but can be trusted without the on-line check
until that time.
All of these methods of validity checking are functionally equivalent
but they have different performance impacts.
CRL:
If one can afford to keep a copy of the CRL, there is the
communications load of accepting periodic additions to the CRL
(hopefully very small and relatively infrequent). Each
verification then requires a local memory reference.
If the CRL must be delivered by the supplicant or fetched from
an on-line source with each verification, then the
communications load of CRL usage is proportional to CRL size and
can become very high.
On-line:
The communications load for on-line checking is constant.
Periodic-revalidation:
If a certificate is used more than once during its validity
period, periodic-revalidation provides a caching effect, saving
the communications load for on-line checking. It also permits
the supplicant to perform the on-line check and distributes that
load away from the verifier.
Because of the time it takes to communicate and the need to allow for
clock skew, a validity period can never go to zero. The shorter the
period, the less risk an issuer runs of having a withdrawn
authorization active in the world. The longer the period, the less
communication and revalidation overhead is incurred. Choice of
Ellison, Frantz, Thomas [Page 18]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
validity period is left up to the issuer of the certificate.
The closest one can get to zero-length validity fields is an on-line
check with random challenge response, so that it can not be replayed.
Such a check can be considered valid only for that one transaction.
3.7 Unwanted Attributions
There is a potential problem that a certificate might be issued which
the keyholder does not want.
For example, a keyholder, Alice, has a signature key, K, being used
to sign digital lab notebooks for later use in patent applications.
That key is certified as hers by her company through an SPKI identity
certificate with an EMPLOYEE <auth> field.
Bob learns Alice's public key and builds a certificate using his own
name and her key, getting it signed by some reputable commercial CA.
Now when it comes time to dispute prior art on Alice's patent(s), Bob
produces his certificate and claims that Alice had copied not only
his work but his private signature key.
For another example, Bob could give Alice read-write access to a
directory structure Bob intends to corrupt, blaming that corruption
on Alice.
To resolve this, some certificates should be signed by the <subject>
as well as by the <issuer>. An identity certificate is one such. It
is an open issue whether we should require all certificates with keys
for <subject>s to be signed by both <issuer> and <subject>.
3.8 Secret Certificates
Some certificates need to be kept secret (e.g., a certificate binding
a name to a symmetric-algorithm signature key). Such certificates
can be encrypted in a key known only to the intended verifier. In
some cases, it is that verifier who issued the certificate and in
that case it can be kept in protected storage at the verifier and
never given out.
Ellison, Frantz, Thomas [Page 19]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
3.9 Blind Signatures
The issue of blind signatures was raised on the list. As can be seen
from the format of the Signature: object, normal blinding (e.g., of
RSA by pre- and post- multiplication of a signature value) can be
applied. It is an open issue whether blinding of other algorithms
can be accommodated as easily.
Ellison, Frantz, Thomas [Page 20]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
4. Data Object Formats
Borrowing heavily from the SDSI work, we define a certificate format
using S-expressions. An S-expression is a list whose first item is a
token giving the name of the object (or identifying some program to
run) while the remaining items are parameters. These parameters can
be positional and merely tokens or they can be lists whose first
token is the name of the parameter. In most cases we assume
parameters are named and leave positional definitions as an option
for those who create their own <auth> expressions.
There is a set of rules for converting from S-expression to a minimal
size binary format. That is the form which is fed to a hash function
when signing an object. It is also available as a binary format for
transmission into a device with small memory or slow interface (such
as a SmartCard). Those rules are given below, in section 4.3.
It is our intention to provide C programs for converting between
binary and S-expression formats. We take as a rule that the thing
signed is the binary of the thing transmitted, even if it is
transmitted in S-expression format. That is, the transmitted object
specifies order and content of parameters. The binary conversion
provides space-saving and canonicalization.
4.1 BNF of SPKI Objects
The following defines an SPKI certificate and related objects,
expressed here in pseudo-BNF -- with "*" meaning closure (0 or more
occurrences) and "?" meaning optional (0 or 1 occurrence). At the
top level (not used internally in any other object) are the following
three objects. Other objects (such as <pub-key>) might also occur at
a top level, to be hashed and referred to by hash.
<cert-body>:: "(" <T_cert> <version>? <issuer> <issuer-loc>?
<subject> <subject-loc>? <deleg> <auth> <comments> * <valid> ")" ;
<sig>:: "(" <T_sig> <principal> <sobj> <sig-val> ")" ;
<bundle>:: "(" <T_bundle> <s-expression> * ")" ;
Note that the fields in a <cert-body> don't need to be in the order
given by the BNF, because they are all self-identified, but we
recommend that they be given in that order, for human readability.
Defined below are the other elements of this BNF description.
Ellison, Frantz, Thomas [Page 21]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
<T_auth>:: "Auth:" | "A:" ;
<T_bundle>:: "Bundle:" ;
<T_cert>:: "Certificate:" | "C:" ;
<T_deleg>:: "D:" | "May-delegate:" ;
<T_fq_name>:: "FQN:" | "Fully-qualified-name:" ;
<T_hash>:: "H:" | "Hash:" ;
<T_iloc>:: "IL:" | "Issuer-cert-loc:" ;
<T_issuer>:: "Issuer:" | "I:" ;
<T_moi>:: "Member-of-issuer:" | "Moi:" ;
<T_notafter>:: "Not-after:" | "NA:" ;
<T_notbefore>:: "Not-before:" | NB:" ;
<T_pubkey>:: "K:" | "Public-key:" ;
<T_sig>:: "Signature:" | "Sig:" ;
<T_sloc>:: "SL:" | "Subject-info-loc:" ;
<T_subj>:: "Subject:" | "S:" ;
<URI>:: byte-string ;
<auth>:: "(" <T_auth> token <param> * ")" | <predefined-auths> ;
<comments>:: "(" "Comment:" byte-string * ")" ;
<deleg>:: "(" <T_deleg> <int> ")" ;
<fq-name>:: "(" <T_fq_name> <principal> <names> ")" ;
<hash-alg-name>:: "SHA1" | "MD5" | etc..... ;
<hash-of-key>:: <hash> ;
<hash-value>:: byte-string ;
<hash>:: "(" <T_hash> <hash-alg-name> <hash-value> <URI>? ")" ;
Ellison, Frantz, Thomas [Page 22]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
<host-name>:: byte-string ;
<int>:: byte-string ;
<issuer-loc>:: "(" <T_iloc> <URI> <param> * ")"
<issuer>:: "(" <T_issuer> <principal> ")" ;
<login-name>:: byte-string ;
<names>:: token | <names> token ;
<not-after>:: "(" <T_notafter> <date> ")" ;
<not-before>:: "(" <T_notbefore> <date> ")" ;
<obj>:: "(" "Object:" byte-string ")" ;
<online-test>:: "(" "Online:" <token> <URI> <param> * ")" ;
<param>:: byte-string | <s-expression> ;
<predefined-auths>:: "(" "FTP:" <host-name> <login-name> ")" | "("
"HTTP:" <URI> ")" | "(" "Name:" token ")" | "(" "Member:" token ")" |
"(" <T_moi> ")" | etc.... ;
<principal>:: <pub-key> | <hash-of-key> | <fq-name> ;
<pub-key>:: "(" <T_pubkey> <pub-sig-alg-and-key> ")" ;
<pub-sig-alg-and-key>:: "(" "RSA-SHA1-PKCS1:" "(" "E:" <int> ")" "("
"N:" <int> ")" ")" | "(" "RSA-SHA1-PKCS1:" <int> <int> ")" | etc....
;
<relative-name>:: "(" "Ref:" <names> ")" ;
<s-expression>:: "(" token <param> * ")" ;
<secret-sig-key>:: "(" "HMAC-SHA1:" <int> <int> ")" | etc.... ;
<sig-val>:: <param> ;
<sobj>:: <hash> | <obj> ;
<subj-obj>:: <principal> | <relative-name> | <hash> | <secret-sig-
key> ;
<subject-loc>:: "(" <T_sloc> <URI> <param> * ")" ;
Ellison, Frantz, Thomas [Page 23]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
<subject>:: "(" <T_subj> <subj-obj> ")" ;
<valid>:: <not-before>? <not-after>? <online-test>? ;
<version>:: "(" "Version:" <int> ")" ;
4.1.1 Version
If the version number is not specified, the version is 1.
4.1.2 Issuer
The issuer is a principal -- that is, a public key or something which
can be reduced to a public key -- because it is used to sign
certificates.
4.1.3 Issuer-cert-loc
The optional issuer certificate location field is for information
only. It gives a network address of a web page or server which can
return the issuer's certificate authorizing the current certificate.
4.1.4 Subject
The subject is a principal or something reducible to one, in the
normal case, but has been extended to also be a secret signature key
or the hash of an object.
1: principals include:
a: a public key
b: a fully qualified name
c: a hash of a public key
d: a relative name (anchored in the name-space of the issuer)
2: secret signature key -- like a principal, but there is no public
key which can be given out. The certificate which defines a
mapping to this secret key must itself be kept secret. This
certificate could define a name in the issuer's name-space as a
name for that key and the name could be used elsewhere.
Ellison, Frantz, Thomas [Page 24]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
3: hash of an object -- in case one wants to assign attributes to an
object. E.g., a purchase order could be "signed by VP # 103",
where that latter string is an <auth> field and the P.O. is the
Subject of the certificate.
4.1.5 Subject-info-loc
The subject information location is an optional field which provides
the location of a network resource where one can learn about the
Subject -- e.g., find the subject public key, find the subject's home
page, etc.
4.1.6 May-delegate
The May-delegate field is the only modifier defined on a certificate
so far. It is defined to take an integer parameter, currently, but
that may be changed to a boolean. This is an open issue.
4.1.7 Auth
The Auth field can be a pre-defined field, described in section 5, or
a custom field defined by a developer who is programming a use of
certificates. The custom definitions are of the form:
"(" <T_auth> token <param> * ")"
where the token is the developer's name for this <auth> and the
optional list of parameters are as defined by that developer. These
parameters can be position sensitive or can be S-expressions of the
form
"(" <parameter-name> <parameter-value> ")"
at the developer's discretion.
4.1.7.1 Auth field reduction rules
When a developer defines a new <auth> field, he or she must also
define how the new field is to be reduced. By default, two
Ellison, Frantz, Thomas [Page 25]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
certificates which have identical <auth> fields will reduce provided
the rest of the 5-tuple fields permit it. If strict equality is not
adequate, the developer can define partial ordering between <auth>
fields (e.g., sorting rules over different parameters). If partial
ordering relationships aren't adequate to reduce the intended <auth>
fields, then the developer can write a program to do that reduction
(as described elsewhere, under the heading of PolicyMaker).
4.1.7.2 Auth global uniqueness
If a developer desires to have a unique name for his or her <auth>
token in some global name-space, that name can have a true random
string appended, with length of string chosen according to the risk
of accidental duplication of name the developer is willing to
tolerate.
4.1.8 Comment
A comment field may contain any text or other strings the author
desires. These strings may have display instructions. The comment
is included in the signature of a certificate, but is not expected to
be read by any computer program.
4.1.9 Not-after, Not-before
The not-before and not-after dates are normal validity dates for a
certificate. In many cases, there is no other validity constraint
needed. However, for those other cases, the Online: directive is
provided.
4.1.10 Online
The Online: validity option gives the location of a remote service
which will pass judgment on the current validity of a certificate.
Details of such a service have not been specified at the time of this
draft. There is an open issue about whether we should include
specification of one or more such services beyond merely making room
for such specifications in the certificate definition.
Ellison, Frantz, Thomas [Page 26]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
4.1.11 Signature
A signature expression can refer to anything, but typically a
certificate body. If the object hash is used (as expected), that
hash must use the same hash algorithm specified in the signing key.
In that case, the hash value given in the Signature expression is the
one which is to be used to verify the signature.
4.1.12 Bundle
A bundle expression is provided only for convenience, in case someone
wants to bundle a set of public keys and certificate bodies and
signatures into one expression for communication.
4.1.13 <pub-key>
A public signature key expression, for example:
(K: (RSA-SHA1-PKCS1: &03 =gJVtABwLSwwTVM0tg1QPgsOVUoA5EjPz-
=UtNKU3PLElkMk0IAE0yhyy0zYuwVSnQzFEvM0hSns1OKzC08AO0SB84yUsDTgDnL-
=fAyVYtRCHAyPlW0NTDPKcksSh9Tt9EwuQ1SsEgAtMy0XQAAKSxVtA4KODLkzjQzz-
=VFIL00pUc9J= ) )
defines a public key algorithm, a hash algorithm and a padding method
(PKCS1 in this example).
A public key can be transmitted at the top level of a communication.
In that case, it is assumed that the key is referred to by hash in
the body of one or more certificates in the same communication.
4.1.14 Hash
A hash expression, for example:
(H: SHA1 =SxVtA4KODLkzjQzzVFIL00pUc9J= )
or
(H: SHA1 =SxVtA4KODLkzjQzzVFIL00pUc9J= http://ietf.org/ )
gives a hash algorithm name and a hash value of some object.
Optionally, the hash expression also gives a URI of that object.
Ellison, Frantz, Thomas [Page 27]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
4.1.15 <secret-sig-key>
A secret signature key expression, for example:
(HMAC-SHA1: &17fa34017c320401 &75e3391ac90d0a38 )
gives the secret key values for computing a MAC, keyed hash or
encrypted cookie, to permit a symmetric algorithm to be used for
signatures. This is expected to be faster than a public key
algorithm, but is limited to cases where the signer and the verifier
have mutual trust.
4.1.16 Fully-qualified-name
A fully qualified SDSI name, for example:
(FQN: (H: SHA1 =SxVtA4KODLkzjQzzVFIL00pUc9J= ) fred sam )
specifies a key (and therefore its name space) for the first name in
the list ("fred" in this example). That first name can then be
resolved to a key and the process recurses until the FQN is reduced
to a key. The example above might reduce to:
(FQN: (H: SHA1 =yy0zYuwVSnQzFEvM0hSns1OKzC0= ) sam )
etc.
4.1.17 Ref
A Ref expression is a relative name. It is converted to a fully
qualified SDSI name by using the Issuer of the certificate of which
it is a part as the key defining the name-space.
(Ref: joe fred sam)
might become
(FQN: (H: SHA1 =SxVtA4KODLkzjQzzVFIL00pUc9J= ) joe fred sam )
for example.
Ellison, Frantz, Thomas [Page 28]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
4.1.18 Date
A date field is an ASCII byte string of the form:
YYYY-MM-DD_HH:MM:SS
assumed to be UTC, with lower significance time fields optional and
taken to be 0 if missing. For internal use, it is treated as a
normal byte string. Dates are compared as byte string comparisons.
4.2 Primitives
Not defined in the BNF above are the primitives: byte-string and
token.
4.2.1 byte-string
A byte string is the general atomic element of a list. It can be
expressed in a number of different ways, in ASCII S-expressions:
4.2.1.1 token
A token is a sequence of printable characters other than parentheses,
braces, single or double quotes, square brackets, hash mark, equal
sign or ampersand. It may not start with a digit or end in a minus
sign. Such a token does not need to be quoted.
4.2.1.2 quoted string
A string not containing a double quote can be quoted in double
quotes. A string not containing a single quote can be quoted in
single quotes.
4.2.1.3 hex string
A byte string can be represented in hex by preceding the hex
characters with an ampersand, "&", and terminating it with a blank.
Ellison, Frantz, Thomas [Page 29]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
4.2.1.4 base64 string
A byte string can be represented in base64 by preceding it with an
equal sign, "=", and terminating it with a blank. The base64 string
must be a multiple of 4 characters in length, although it may end
with "=" character(s) to show that it is short 1 or 2 bytes of being
a multiple of 3 bytes in binary.
4.2.1.5 literal binary string
A byte string can be represented as a literal string of binary bytes
by prefixing it with a length and a colon, ":". The length is
expressed in base 256, prefixing each byte of the length with a hash
mark, "#".
If "\001" stands for the byte 0x01, also known as ^A, #\001:"
represents a byte string of 1 byte holding the double quote
character. A length #A#B: would start a literal byte string of
length 16706.
4.2.1.6 concatenation of strings
A byte string, in any of the forms above, can be continued by
following it with the hyphen, "-", and then another byte string. The
two byte strings do not need to be encoded in the same style. They
are represented internally as a single string.
4.2.2 Display information
A byte string may be prefixed with an optional piece of display
information. This is in the form:
<display-info>:: "[" <param> "]"
The display information is assumed to give information about how to
display the byte string. For example, we envision strings like:
[utc-8], [unicode], [jpeg], [gif], [wav], etc. The content of the
display info is allowed to be an S-expression, in case we encounter
display commands which need parameters, but for now we expect it to
be a simple name.
Ellison, Frantz, Thomas [Page 30]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
4.2.3 List counts
A list can be preceded by a count (of the form #<byte>#<byte> but
with no ":"). This is for informational use -- primarily out of
consideration for devices which want to allocate arrays to hold lists
rather than store them as linked elements.
4.3 Binary (canonical) form
Any of these S-expressions which is hashed is to be converted to
binary form prior to the hash. This gives a canonical form and also
reduces the size of the expression to save time in case the hash
function is expensive.
The binary form can also be used to transmit certificates whenever
the communication rate into a device is limited or there is no reason
to keep certificates human readable.
4.3.1 Byte strings
All byte strings are expressed as binary strings (preceded by length
byte(s) and ":") and therefore there is no need for blanks to
terminate strings.
Continuation of byte strings is never used in binary form.
4.3.2 List counts
In packed binary form, for hash purposes, there are no list lengths.
4.3.3 blanks
In binary form, there are no blanks.
Ellison, Frantz, Thomas [Page 31]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
5. <auth> Field Examples
The <auth> fields listed here are not meant to be an exhaustive list
of all possible <auth>s. Such is not possible. The final arbiter of
what needs to be an <auth> and what parameters a particular <auth>
needs is the designer of the code which verifies a certificate, e.g.,
to grant access. Listed here are <auth> fields we know to be useful.
For cases we have not anticipated, there is a field "Auth:" to handle
arbitrary new <auth> fields, described above in section 4.1.7.
5.1 Member-of-issuer
(Moi:)
This <auth> grants the Subject all the authority of the Issuer. It
is anticipated that this <auth> will be used to delegate permissions
to a temporary signing key or to indicate members of a group (where
the Issuer is the group).
5.2 Name
(Name: fred)
This <auth> defines a SDSI name in the Issuer's name-space, in this
example "fred". The Subject of the certificate is assumed to reduce
to the key for that name and most likely to be that key.
5.3 Member
(Member: faculty)
This <auth> declares that the Subject is a member of <group> where
<group> is a name in the Issuer's name space. This is a SDSI group
definition, since SDSI groups had only names in some name-space.
Native SPKI uses a public key as a group name and the (Moi:) <auth>
for delegating privileges to group members.
Ellison, Frantz, Thomas [Page 32]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
5.4 FTP
(FTP: cybercash.com cme )
This <auth> indicates that the Subject has permission to do FTP into
host cybercash.com as user cme.
5.5 HTTP
(HTTP: http://acme.com/company-private/personnel/ )
This <auth> gives the Subject permission to access web pages which
start with the given URL.
5.6 TELNET
(TELNET: erols.com spinne )
This <auth> gives the Subject permission to telnet into host
erols.com as user spinne.
5.7 Public Key Protected File System
(PKPFS: //<hostname>/<path> <access> )
(PKPFS: //<hostname>/<path>/ <access> )
refers to a hypothetical distributed file system whose access is
controlled by public key challenge/response.
If <path> ends in "/" (as in the second example), access is to an
entire subtree. Otherwise, it is to an indicated file (or set of
files via "*").
<access> is a set of letters:
R: for read
W: for (over-)write
A: for add to directory (or append to file)
D: for delete
Ellison, Frantz, Thomas [Page 33]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
5.8 Dating Service Bindings
There is some information which might be certified for a fee by a
commercial on-line dating service:
MARITAL-STATUS: <status>
BIRTH-YEAR: <year>
HEIGHT: <height>
WEIGHT: <weight>
PICTURE: <hash of image file>,<location of image file>
This is specialized enough not to be pre-defined. E.g., one might
use:
(Auth: Dating <params>)
5.9 Authority to spend money
(Auth: Spend <bank> <account> <amount> )
indicates that the subject has authority to authorize spending up to
<amount> per electronic check from <account> at <bank>.
For reduction of two certificates with this <auth>, if any field is
present in one and not the other, that field is copied to the <auth>
of the result. If present in both, <bank> and <account> must be
equal. The <amount> byte string is taken to be ASCII of a floating-
point decimal number and if present in both <auth>s, the <amount> of
the result is the minimum of the two input <amount>s.
Ellison, Frantz, Thomas [Page 34]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
Issues
1) Should we require that all certificates be signed by both Issuer
and Subject, when the Subject reduces to a key? [When the
Subject is a non-key object, it can't sign.]
2) Can the Signature: object support blind signatures with
algorithms other than RSA?
3) Should we keep the final ":" in field names? These are always
the first names in a list and the ":" seems to be a carry-over
from RFC822 without a real purpose.
4) Should we continue to lump public key algorithm, hash algorithm
and padding algorithm together in one pub-key-name? This could
lead to an explosion of names. Of course, on the other hand
this might reduce the number of competing algorithm/hash/pad
mixes and simplify code.
5) Should the delegation parameter be integer or boolean?
6) Are object names (e.g., "Issuer:") case sensitive?
7) Should we allow multiple <auth>s in one cert? It saves space
and time, maybe, but could constitute a privacy threat and may
complicate the cert reading code.
8) How much can we specify the <online-test>? Are there only a
handful possible/desirable tests, that we can fully spell out,
or do we need to leave that open for invention?
9) How many pre-defined <auth>s should we bother defining?
10) If the Subject is a hash of a Bundle of hashes of keys, does
this mean that the cert applies to all keys in the bundle?
11) If the Subject is a hash of a file and the file contains hashes
of other things, does the cert apply to the other things?
12) Do we want to include validity fields for private key dates, as
was done with X.509v3?
13) How do we want to name algorithms? One possibility is to define
a few common ones (ones we want to encourage everyone to use for
interoperability reasons) and allow others to be defined as URIs
pointing to the definition of the algorithm.
Ellison, Frantz, Thomas [Page 35]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
14) Should we restore the explanation of [ECR] and define a <valid>
field option for it? This was removed from this draft in the
interest of simplification.
15) Should we allow Object as an optional element of the Signature
expression, or force that block to give the Object's hash?
16) Should we define an RSA signature algorithm with no hash and no
padding, to hold verbatim objects being signed (assuming they
are small enough)?
17) What is the difference between the Member: and Name: <auth>?
Can they be combined into one?
Ellison, Frantz, Thomas [Page 36]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
References
[BFL] Matt Blaze, Joan Feigenbaum and Jack Lacy, "Distributed Trust
Management", Proceedings 1996 IEEE Symposium on Security and Privacy.
[DNSSEC] Donald Eastlake and Charles Kaufman, "Domain Name System
Security Extensions", (working draft of the DNSSEC Working Group).
[DvH] J. B. Dennis and E. C. Van Horn, "Programming Semantics for
Multiprogrammed Computations", Communications of the ACM 9(3), March
1966
[ECR] Silvio Micali, "Efficient Certificate Revocation", manuscript,
MIT LCS.
[HARDY] Hardy, Norman, "THE KeyKOS Architecture", Operating Systems
Review, v.19 n.4, October 1985. pp 8-25.
[IDENT] Carl Ellison, "Establishing Identity Without Certification
Authorities", USENIX Security Symposium, July 1996.
[IWG] McConnell and Appel, ``Enabling Privacy, Commerce, Security and
Public Safety in the Global Information Infrastructure'', report of
the Interagency Working Group on Cryptography Policy, May 12, 1996;
(quote from paragraph 5 of the Introduction)
[KEYKOS] Bomberger, Alan, et al., "The KeyKOS(r) Nanokernel
Architecture", Proceedings of the USENIX Workshop on Micro-Kernels
and Other Kernel Architectures, USENIX Association, April 1992. pp
95-112 (In addition, there are KeyKOS papers on the net available
through http://www.cis.upenn.edu/~KeyKOS/#bibliography)
[LANDAU] Landau, Charles, "Security in a Secure Capability-Based
System", Operating Systems Review, Oct 1989 pp 2-4
[LEVY] Henry M. Levy, "Capability-Based Computer Systems", Digital
Press, 12 Crosby Dr., Bedford MA 01730, 1984
[LINDEN] T. A. Linden, "Operating System Structures to Support
Security and Reliable Software", Computing Surveys 8(4), December
1976.
[PKCS1] PKCS #1: RSA Encryption Standard, RSA Data Security, Inc., 3
June 1991, Version 1.4.
[PKLOGIN] David Kemp, "The Public Key Login Protocol", working draft,
06/12/1996.
Ellison, Frantz, Thomas [Page 37]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
[RFC1321] The MD5 Message-Digest Algorithm, R. Rivest, April 16 1992.
[SDSI] Ron Rivest and Butler Lampson, "SDSI - A Simple Distributed
Security Infrastructure [SDSI]",
http://theory.lcs.mit.edu/~rivest/...
[SRC-070] Abadi, Burrows, Lampson and Plotkin, "A Calculus for Access
Control in Distributed Systems", DEC SRC-070, revised August 28,
1991.
Ellison, Frantz, Thomas [Page 38]
INTERNET-DRAFT Simple Public Key Certificate 25 Mar 1997
Authors' Addresses
Carl M. Ellison
CyberCash, Inc.
207 Grindall Street
Baltimore MD 21230-4103 USA
Telephone: +1 410-727-4288
+1 410-727-4293(fax)
+1 703-620-4200(main office, Reston, Virginia, USA)
EMail: cme@cybercash.com
Brian Thomas
Southwestern Bell
One Bell Center, Room 23Q1
St. Louis MO 63101 USA
Telephone: +1 314-235-3141
+1 314-331-2755(fax)
EMail: bt0008@entropy.sbc.com
Bill Frantz
Periwinkle
16345 Englewood Ave.
Los Gatos, CA 95032
Telephone: +1 408-356-8506
Email: frantz@netcom.com
Expiration and File Name
This draft expires 30 September 1997.
Its file name is draft-ietf-spki-cert-structure-01.txt
Ellison, Frantz, Thomas [Page 39]