W3C WD-DSIG-arch-961026

Proposed Digital Signature Architecture

W3C Working Draft 26-October-96

This document is obsolete. For the the latest information on DSIG, please consult http://www.w3.org/pub/WWW/Security/DSig/Group/.

This version:
http://www.w3.org/pub/WWW/TR/WD-DSIG-arch-961026.html
Previous versions:
http://www.w3.org/pub/WWW/TR/WD-DSIG-arch-961025.html
http://www.w3.org/pub/WWW/TR/WD-DSIG-arch-961024.html
http://www.w3.org/pub/WWW/TR/WD-DSIG-arch-961017.html
Latest version:
http://www.w3.org/pub/WWW/TR/WD-DSIG-arch.html
Author:
Rohit Khare <khare@w3.org>

Status of this memo

This is a W3C Working Draft for review by W3C members and other interested parties. It is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to use W3C Working Drafts as reference material or to cite them as other than "work in progress". A list of current W3C working drafts can be found at: http://www.w3.org/pub/WWW/TR.

Note: since working drafts are subject to frequent change, you are advised to reference the above URL, rather than the URLs for working drafts themselves.


Table of Contents


DSIG Project Objectives

W3C's current Digital Signature Initiative (DSig) began with the assertion that it is important that end users have a reliable mechanism that allows them to decide what Web content they can trust. Such trust can be established by attaching digital signatures to on-line documents. These signatures serve to identify the origin of a document -- the identity of the signer. For many uses, however, there is additional information required to make these trust decisions. This typically takes the form of requiring endorsements by parties trusted by the users. For example, software execution authority may be based on statements from PC Week or may be permitted only by endorsement of an MIS office.

There are four major objectives for DSig:

  1. Automatable Signature Semantics. There must be a systematic means for specifying the semantics of the signature, i.e. a way of specifying a general statement X believes Y about Z where the entity X is given some level of trust, the predicate Y might be authorship, publication, or some level of testing of a given piece of code, and the object Z is a document or program found on the Web
  2. Common Signature Block. There must be a common format for a signature block that supports either enclosing the signed data or referencing it, and also allows for categorization of what is being signed and streamed processing where applicable (PKCS#7 should be considered for this purpose, but it is more than just a signature block and involves ASN.1 encoding and wrapping. SDSI is also relevant as it provides a new signature block syntax, as is IBM's Cryptolope).
  3. Cryptography-Independent. The solution must permit multiple cryptographic techniques multiple approaches to identity certification (including multiple certification hierarchies).
  4. Multiple Signature Transmission Modes. The signature must be able to be transported in three different ways

Proposed Solution: Signature Labels

We propose to extend PICS labels to become the standard signature block A digitally signed PICS label can serve as a signature on the document itself bound together with machine-readable semantics. A well designed signature extension block for PICS can address crytpographic and certification flexibility, and PICS labels themselves already provide the transmission modes. The new PICS Signature Block presented here is such a solution.

Stepping back, though, let's consider the overall architecture of separate signatures (as opposed to the security community's traditional wrapping and enveloping approaches).

As a result, a signed PICS label neatly bundles up these elements to address the DSig objectives. The resulting trustable assertion is:

Labeler of rating-service says resource-named-by-URI with document-hash at last-modified-date had rating within rating-system at last-rated-date.

Labeler's digital signature allows us to believe the whole assertion, including the association to the document at hand. Of course, the label itself is a document allowing others to rate the ratings and sign the signers.

We aim to create a new signature block including an assertion layer, but the current PICS-1.1 language is limited. By extending the semantics of PICS, it can be used as a 'universal' document signature block. The following diagram of an abstract signature block recaps how an extension can easily provide the necessary link between a document, its signer and the assertion that the signer is making.

Where Element Rationale
Label Self-description URL provides a link to the rating system, the policy file, etc.
Label Rating the endorsement ; what labeler is attesting to
Label Rating System the system defines the axes and meaning of the rating.
Sig Labeler's Key (+ Algorithm) who is making the assertion.
Can we assume keys are algorithm-specific, hence implying the labeler's cryptographic technique?
Sig Labeler's Identity Hints about the labeler's well-known identity, for querying directory services
Sig Labeler's Certificate identity certificates that vouch for the labeler's identity. Can be transmitted immediately or indirectly through a certificate URI
Label Document-URI name of the information resource at hand
Label or Sig? Document Hash (+ Algorithm) used to unambiguously and unforgeably associate a document with its label
Label Document Last-Modified delimits the version of the document which was examined
Sig Label-Hash (+Algorithm) used to unambiguously and unforgeably associate a label with its signature
need to specify which extensions are included in the hash and which are not
Label Label Date (+ Expiration) delimits the freshness of the rating
Sig Signature for each cryptographic technique, the signature data itself. For example, the RSA public exponent and signature itself.
Sig Signature Date (+ Expiration) delimits the freshness of the signature (may be superceded by revocation of an identity certificate, though)

The current PICS label syntax has an extension field which can accommodate all of the above. See Appendix A for a detailed proposal.

Using Signature Labels

There are two ways to use signatures as embedded in this block format:

We need to explore using this signature strategy in relation to:

Deploying Signature Labels

Of course, signature labels inherit all of the transmission vectors of PICS labels:

  1. Embedded within a document - for those document types which can be extended to support this. Examples include HTML's Meta tag, Java's extensible JARchive format, OLE Structured Storage, etc.
  2. Attached to the document in HTTP message headers using PEP.
  3. Detached and vended by any third party through a label bureau. Allows for signature-on-demand, delegation, and independent review.

Additionally, we can have new document formats built around signatures and associated metainformation. The HTML ERB is already involved with proposals for including signatures and other metainfo within HTML files. As a result, a bookmarks or table-of-contents-file can include PICS ratings, DSIG endorsements, certificates, and more (this kind of facility was once referred to as 'sitemap').

application/pics-labellist is already one such format - and a specific query is the only way we can 'name' labels today. Is that sufficient? It should be possible to replace any reference to a PICS label with a pointer - a URI - to a singleton labellist. We could also use a hypothtical data:<base64> immediate format too (for ease of embedding).


Trust Management on the Web

The Digital Signature Initiative is not about cryptography for cryptography's sake, though. The fundamental aim is:

To help users decide what to trust on the Web

Cryptography is one way to establish identity and ownership, but the goal above highlights the need to understand users' problems in a trust management context - what does this signature mean? What should be done about this information resource?

Indeed, a wide variety of trust decisions can be made more automatable with PICS ratings and signature labels - intellectual property rights management, executable content evaluation, working with public documents, and more. From W3C's perspective, we have a series of interlocking goals for DSIG, arranged in a bull's-eye:

  1. Cryptographic Format. The center, the baseline, the most tangible product of DSIG will be some converged digital signature format from the organizations involved. This is the overt purpose of DSIG and the biggest single 'win' for preventing industry fragmentation.
  2. Awareness of Trust Issues. Organizations participating in DSIG have an opportunity to scale the learning curve of several interlocking application areas: trusting applets, fonts, press releases, identity certificates, etc. Recognizing that all of these problems are similar, rather than 'just cryptographic protection' helps greatly. Internally, it sets the stage for organizations to build a reusable approach to these problems.
  3. Common Trust Management Environment. The largest target is having a shared, industry-wide trust management infrastructure which allows users and administrators to create trust policies across the range of Web tools. As discussed below, W3C and AT&T are working alongside DSIG on just such an system, tailored to the semantics of signature labels.

Though DSIG has its roots in the 'hot-button' issue of mobile code-signing, we expect the tools and formats developed by DSIG will be the foundation for addressing many new Web challenges in the next 12-18 months.

W3C/AT&T Position Statement on REFEREE

[This section was authored in part by Paul Resnick and reflects the position of the REFEREE authors]

What is Missing

Digital signatures alone are not sufficient for code signing and other applications: signatures can solve the problem of authentication, but not security or trust. For code signing, users need a way to describe their security policies (under what conditions do they trust the code, and what do they trust the code to do) and an environment for evaluating their policies. We believe that code signing and other digital signature applications will benefit from a simple language that can describe most common user policies and can be extended to handled more complex policies.

Proposal

We will propose a profiles language that describes policies in terms of what PICS labels are needed in order to authorize operations. Mechanically, policies are programs that can fetch and process PICS labels in order to determine whether a requested operation is permitted. In the course of execution, they can call other programs/policies, for example to check signatures to determine the authenticity of labels. This group need only come to agreement about signature formats and algorithms, then make a new signature checking program available; the rest of the trust management infrastructure, including the profiles language, need not be updated.

For example, here is a sample policy written in the profile language. The call to invoke-with-tagged-append calls a subroutine that retrieves PICS labels for THE-URL from some set of known sources (label bureaus, or perhaps a local label repository on CD-ROM). The second line (match) searches among all the retrieved labels for labels that (a) use the "http://www.rsac.org/" rating system, and (b) rate THE-URL in category "s" with a value less than 2.

(invoke "load-label" INITIAL-STATEMENT-LIST THE-URL)
(match
 (("load-label" ...) 
  (... (PICS-1.1 ... "service" "http://www.rsac.org/" ... (ratings (< s 2))))))
 INITIAL-STATEMENT-LIST)

We will also propose an underlying kernel on which to build an interpreter for the profiles language. The kernel, called REFEREE (Rule-controlled Environment For Evaluating Rules and Everything Else), offers several advantages for implementers of the profiles language:

  1. Ease of understanding: the underlying kernel provides a simple execution model for the profiles language.
  2. Ease of implementation: the underlying kernel suggests a modular implementation of an interpreter for the profiles language.
  3. Ease of extension: as people experiment with writing profiles, they are likely to find security policies that are desirable but difficult to express in the profiles language. As new constructs are added to the profiles language, interpreters based on the underlying kernel will be easy to upgrade.

The trust management kernel maintains a database of programs that are trusted to run. All compliant programs accept the same required arguments, and may accept additional optional arguments. All compliant programs have the same return type. A trusted program can invoke other programs (delegate trust) or install and uninstall other new programs in the database. A few built-in programs (policies) are supplied initially for bootstrapping.

W3C and AT&T Labs have been actively working on the design of the profiles language and the trust management kernel. The kernel is based loosely on principles gleaned from the PolicyMaker system developed at AT&T Labs by Blaze, Feigenbaum, and Lacy.

Browser Architecture

The initial application of DSIG, though, remains executable-content approval. We've spent the most time thinking about that scenario, and how it fits into today's client models.


Today, in Authenticode™ and similar systems, only one kind of check is being made, namely identity verification. The main trust problem is managing the trusted roots of an identity certification tree. In addition, clients might also check for endorsements written into an identity certificate, such as Authenticode's 'commercial software provider' switch.

With signature labels, though, behind the scenes clients may be manipulating induction chains of identity and endorsement: 'run this code because Joe says it's three out of five stars and I trust it's Joe because it's his key and it's his key because I have an identity document rated A1 by Bonded Investigators, Inc and I trust it's BII because they have a VeriCert…'. Of course, building effective user interfaces to this is a challenge for software developers, but some discussion of a common model could jumpstart thinking. This section is reseved for this sort of discussion.

Hopefully, this section will reflect growing consensus about the value of pluggable policy configurations - simple user statements of 'run anything Joe approves or above 4 stars from Starz.com'-which can be reused across their tools. One of the archetypal examples to keep in mind is the scenario of sending a child's policy along to a web search service with his or her query so that the search service can prefilter the result list. Remember, too, the controversy which follows hardwired policies, such as Microsoft's initial Authenticode deployment.


Appendix A: Extending PICS labels to contain digital signatures

Brian A. LaMacchia
Last update: 10/24/96 by Rohit Khare

Abstract

This note describes a possible application of the PICS label extension mechanism that will permit digital signatures to be stored within a PICS label. We assume the reader is familiar with the PICS-1.1 label standard.

Assumptions and Definitions

  1. Anything that we wish to sign has a URL. (We only care about signing addressable objects.)
  2. We sign an object by creating a PICS label for that object that includes a digital signature extension. The extension includes within it a hash (or possibly multiple hashes) of the document, and the label itself is digitally signed by some public key. The document is thus signed indirectly when the label is signed because the label can contain at least one hash of the document.
  3. Our extensions must permit multiple cryptographic algorithms, which may be used in parallel (i.e. we want to support signatures where the document is hashed with both MD5 and SHA-1 and signed with RSA and DSS using their respective key formats).
  4. The semantics of a signature are primarily defined by the PICS ratings (and the rating scheme) that are part of the PICS label containing the signature. The rating service semantics may possibly be modified by a signature-specific rating scheme contained within the signature block. See On the semantics of signatures below for details. When there is no other rating system present, a rating system may be defined solely for the purpose of providing semantics to the signature. There is an open question as to whether the PICS-1.1 language permits sufficiently rich ratings values to satisfy this purpose, as rating values may only be numeric.
  5. This extension supersedes the MIC-md5 and signature-rsa-md5 options in the PICS-1.1 label standard. Those options will be ignored with this extension and should not be used.

Extension structure

A PICS label looks like this:

(PICS-1.1
 <service url> [option...]
 labels [option...] ratings (<category> <value> ...)
        [option...] ratings (<category> <value> ...)
        ...

 <service url> [option...] 
 labels [option...] ratings (<category> <value> ...)
        [option...] ratings (<category> <value> ...)
        ...
 ...)

Any place where there is a valid [option] we may have an extension block. So (I think) we can have an extension either on the service block or on individual ratings blocks. We have to be careful with what the semantics are if the scope of a signature encompasses multiple ratings (it may not make sense).

Basically, an extension looks like this:

extension (<optional-or-mandatory> <extension-url> <args>)

The digital signature extension is usually "optional", has a particular URL, and <args> is a quoted s-expression assoc-list of tagged arguments.

Here's a more detailed picture of a DSig extension block (I use Scheme notation below; lines beginning with ";" are comment lines):

extension 
(optional 
  ;;; the URL describing the extension
 "http://www.w3.org/PICS/DSig"
 "(
  ;; first, we ned the hash (MIC) of the document.  We may want to
  ;; provide multiple hashes with multiple different hash functions:
   (document-hash
    (<hash-algorithm-id-1> <the-hash-1>)
    ...
    (<hash-algorithm-id-n> <the-hash-n>))
  ;; we may also need to split the-hash into a vector for streaming data

  ;; and we need the signature of the label, again possibly with 
  ;; multiple algorithms.  
  ;;
  ;; Jim says we have to include the signer's public key in the label
  ;; so that the signature can be verified (not necessarily trusted, just
  ;; verified) with only the contents of the label.  This is stronger than
  ;; the SDSI model which does not require that the key be specified in
  ;; a signed object.
   (label-signature 
    (
     (<sig-algorithm-id-1> <the-hash-1>) ; must be present
     (<sig-key-1>)                  ; may be present
     (<list-of-excluded-extensions-1>)      ; may be present
     )
    ...
    ((<sig-algorithm-id-n> <the-hash-n>)
     (<sig-key-n>)
     (<list-of-excluded-extensions-n>)))
   <optional-parts>
   )"
)

This block currently has two mandatory parts:

and other optional parts.

The hash section (REQUIRED)

The document-hash section contains one or more hashes of the document referenced by the label. Each hash is a two-element list containing the name of the hash and the value of the hash. We will need to specify some standard encoding scheme for hash values as well as standard hash names (or use URLS here too). Sample:

(document-hash
 (md5-hash =deadbeef=)
 (sha-1-hash =13570246=))

I assume for purposes of this document that cryptographic hashes and other binary data are base64 encoded, delimited by equal signs (=).

The label signature section (REQUIRED)

The label-signature section contains digital signatures of the label. That is, the contents of the label are hashed and encrypted with some private key. When computing the hash of the label:

  1. Every base component of the PICS label is included in the hash. (Notice that this precludes use of the mic-md5 and signature-rsa-md5 options, which is OK since we prohibit their use in conjunction with this extension.)
  2. Every element of the http://www.w3.org/PICS/DSig extension is included in the hash of the label except for label-signature elements. At the moment, this means you can't cascade signatures within a label sig block, but that may be OK. If you want to sign a signed label the way to do it in this paradigm is to assign the label itself a URL and then generate another PICS label to sign the first label.

    Question: Is this sufficient? Do we need to support chained signatures? We can do parallel signatures, even if for the same rating, because we can have multiple (key,algorithm) pairs in the label-signature block, but we can't chain signatures. An answer is to treat labels as first-class objects so cascaded signatures can be represented as a series of signature labels pointing at each other, with each label indicating the semantics of the additional signature.
  3. Every other extension in the label is by default included within the signature hash. If the signer wishes to exclude certain extensions from the hash (i.e. doesn't want to sign certain extensions), the URLs corresponding to those extensions are included within the <list-of-excluded-extensions> element of the label-signature.

    NOTE: There's a problem here, namely that we are allowed to have multiple occurrences of the same extension within a PICS label so long as there's only one occurrence per ratings/service block. What's the scope of the exclusion list?

Other optional sections of the extension (OPTIONAL)

I'm not sure what else we're going to need yet.

RK: I believe the labeler-info goes here: labeler name, certs, cert-pointers. If the per-algorithm sig block includes the key bits directly, the labeler-info is indeed strictly optional.

Examples

Here's a PICS label example (taken from the PICS spec). It describes ratings for two separate documents Overview.html and Underview.html) using the same ratings system (Good, Clean Fun v2.5). The rating for Overview.html is by "John Doe" and the rating for Underview.html is by "Jane Doe".

(PICS-1.1 "http://www.gcf.org/v2.5"
          by "John Doe"
          labels 
           on "1994.11.05T08:15-0500"
            until "1995.12.31T23:59-0000"
            for "http://w3.org/PICS/Overview.html"
            ratings (suds 0.5 density 0 color/hue 1)

            for "http://w3.org/PICS/Underview.html"
            by "Jane Doe"
            ratings (subject 2 density 1 color/hue 1))

Let's now create a signed version of this label using the DSig extension. First, here's how John Doe signs his rating of Overview.html using his SDSI key:

(PICS-1.1 "http://www.gcf.org/v2.5"
          by "John Doe"
          labels 
            on "1994.11.05T08:15-0500"
            until "1995.12.31T23:59-0000"
            for "http://w3.org/PICS/Overview.html"
            extension 
            (optional "http://www.w3.org/PICS/DSig"
                      "((document-hash (md5 =mQENAzJIVvwAAAEH/3fI2oaZ=))
                        (label-signature
                         ((rsa-md5=qZOtfMNCg9/WdWEBvZTvIWPj=)
                          (SDSI-Principal:
                           (Public-Key: (Algorithm: rsa-md5)
                                        (N: =b22O+CXLSJEv56AamFl=)
                                        (E: 17)))))
                      )")
            ratings (suds 0.5 density 0 color/hue 1)
            for "http://w3.org/PICS/Underview.html"
            by "Jane Doe"
            ratings (subject 2 density 1 color/hue 1)
)

NOTE: There's a scoping issue here too. When John Doe signs the label for Overview.html is he also signing the service-wide options (the 'by "John Doe"' line in the above example)? I believe he is, even though such service options may be over-ridden by label-specific options. I don't believe the mere fact that the option is no longer in effect is sufficient to excuse its presence from the label, and thus it must be included in the hash of the label. However, if it is legal to rewrite PICS labels by pushing service options down into individual labels, then I'm probably wrong and arbitrary rewriting can occur before signing.

On the semantics of a signature

One DSig goal is to define the semantics of a digital signature attached to a document. To a first-order approximation I would argue that the semantics of a digital signature encapsulated within a PICS label are specified by the ratings service listed in that label. That is, if key K signs a label for document D and the label includes ratings list R in service R_serv, then the semantics of "K says R about D" are defined by the rating service R_serv. For example, suppose I wish to witness the signing of a digital contract. I might establish a rating service (or use an existing rating service) designed specifically for such a purpose. Let's suppose there's a rating service: http://www.witness.org/third-party-witness with the following application/pics-service description file:

((PICS-version 1.1)
 (rating-system "http://www.witness.org/third-party-witness.html")
 (rating-service "http://www.witness.org/third-party-witness/v1.0/")
 (name "Third-party witness service for digital contracts")
 (description "An example of a rating service that describes semantics
               for digital signatures")

 (category  
  (transmit-as "witnessed")
  (name "Assertion that document was witnessed")
  (label-only))

 (category
  (transmit-as "number-id")
  (name "Number of photo IDs of each signatory to the contract 
         examined by the witness")
  (integer)
)

Further, let's assume that http://www.witness.org/third-party-witness.html says something like this:

<html>

This is the PICS service description file for www.witness.org's "Third-party witness service for digital contracts." This service is intended to be use by third parties who witness the signing of a digital contracts.

A signed rating of "witnessed" is an attestation that the signer of the label containing such a rating did indeed witness the signing of the contract by all parties to the contract.

A signed integer rating transmitted as a value of "number-id" is an attestation that the signer of the label containing such a rating inspected the stated number of photo IDs for each signatory to the contract.

A rating in this system is only semantically meaningful when digitally signed by one or more parties (the witnesses).

</html>

(Granted, it may seem odd to have a witness signing service for digital documents, but it serves our need for this thought experiment.) Now, if I witness the signing of a contract in digital form, I can attest to witnessing that event as follows:

(PICS-1.1 "http://www.witness.org/third-party-witness/v1.0/"
          labels 
            on "1996.10.16"
            for "http://www.uaw.org/ord/1996Contract.html"
            extension 
            (optional "http://www.w3.org/PICS/DSig"
                      "((document-hash (md5 =mQENAzJIVvwAAAEH/3fI2oaZ=))
                        (label-signature
                         ((rsa-md5 =qZOtfMNCg9/WdWEBvZTvIWPj=)
                          (SDSI-Principal:
                           (Public-Key: (Algorithm: rsa-md5)
                                        (N: =b22O+CXLSJEv56AamFl=)
                                        (E: 17)))))
                      )")
            ratings (witnessed)
)

The meaning of my signature is well-defined by the rating service; I witnessed the signing of the contract and by assigning a rating of "witnessed" to the actual document I attest to that fact.

OK, all well and good so far, but consider our earlier example:

(PICS-1.1 "http://www.gcf.org/v2.5"
          labels 
            on "1994.11.05T08:15-0500"
            until "1995.12.31T23:59-0000"
           for "http://w3.org/PICS/Overview.html"
            extension 
            (optional "http://www.w3.org/PICS/DSig"
                      "((document-hash (md5 =mQENAzJIVvwAAAEH/3fI2oaZ=))
                        (label-signature
                         ((rsa-md5 =qZOtfMNCg9/WdWEBvZTvIWPj=)
                          (SDSI-Principal:
                           (Public-Key: (Algorithm: rsa-md5)
                                        (N: =b22O+CXLSJEv56AamFl=)
                                        (E: 17)))))
                      )")
            ratings (suds 0.5 density 0 color/hue 1)
)

What is the meaning of the digital signature contained within this label? Under our model the semantics of the signature are defined by the rating service, http://www.gcf.org/v2.5. But while GCF, Inc. provides a semantics for "suds 0.5," "density 0," and "color/hue 1", they do not necessarily tell what it means to digitally sign such a rating. After all, the rating is valid with or without a digital signature, and in fact the presence of the signature in this case does not change the semantics of the underlying document.

Here's the problem: we are overloading PICS labels so that they may describe not only the semantics of named documents but also the semantics of signatures attached to documents. But when the signature is concerned not with the contents of a document but with the contents of labels about documents, how do we distinguish between the semantics of the label itself and the semantics of the signature on the label? I might have an RSACi label that is digitally signed by three people. What's the meaning of each of those digital signatures? Must they be equivalent? If the semantics of the digital signature is defined by RSACi, and RSACi says nothing, then what's the default meaning? Is there a default meaning? [I think we could certainly define a default meaning, something like: "the holder of the key used to sign this label states that the labeled document and the given ratings list together satisfy the semantics of the given rating system." Something very weak like that.]

I suspect that we will eventually reach one of two conclusions:

  1. To digitally sign label ratings themselves, the label containing the ratings must be named and a second label generated to "label the label", OR
  2. We must provide an option within the digital signature block for a label to specify the semantics of the signature with respect to the semantics of the rating system itself. That is, if the rating system itself doesn't specify the semantics of a signature, we have to provide a pointer to a semantic addendum that does talk about signatures.

On parallel and cascaded signatures

The Backgrounder document states that these extended PICS labels need to support both parallel and cascaded digital signatures. Parallel digital signatures are easy and straightforward; simply include multiple signatures in the label-signature block:

(PICS-1.1 "http://www.gcf.org/v2.5"
          by "John Doe"
          labels 
            on "1994.11.05T08:15-0500"
            until "1995.12.31T23:59-0000"
            for "http://w3.org/PICS/Overview.html"
          extension 
            (optional "http://www.w3.org/PICS/DSig"
                      "((document-hash (md5 =mQENAzJIVvwAAAEH/3fI2oaZ=))
                        (label-signature
                         ((rsa-md5 =qZOtfMNCg9/WdWEBvZTvIWPj=)
                          (SDSI-Principal:
                           (Public-Key: (Algorithm: rsa-md5)
                                        (N: =b22O+CXLSJEv56AamFl=)
                                        (E: 17))))
                         ((rsa-sha1 =dchjshgvhuerbhdkbvfhkjf=)
                          (X-509v3-DN: "c=US@o=USPS-Aegis Star Pilot@cn=USPS, AEGIS"))
                        )
                      )")
            ratings (suds 0.5 density 0 color/hue 1)
)

The semantics of parallel signatures are clear: absent a signature-specific semantic modification both signatures conform to the semantics dictated by the given rating service. Amendments or modifications to those given semantics would have to be stated within each particular signature block, as they may change on a per-signature basis.

Cascaded (serial) signatures are a different story, and cannot be expressed within a single label in this scheme. Since the semantics of a signature are dictated by a rating service, we would need to construct arbitrary-depth labels in order to support arbitrary-depth signatures. A cleaner solution (although requiring multiple label fetches, perhaps), is to create cascaded signatures by labeling labels. That is, assume that A signs a label for document D with ratings R. The semantics of that signature are defined by R in conjunction with the overall semantics of the rating system. If B wants to sign A's statement, then:

  1. A's label needs to be named (given a URL)
  2. B then creates a label for A's label (which is possible since A's label now has a URL),
  3. B signs the label he just created for A's label, and the semantics of B's signature are dictated by the rating system given in B's label.

Naming a label as another document makes labels first-class objects, so serial signatures can each be embedded in labels defining their semantics.

On compound ratings/compound labels

One of the questions asked in the Backgrounder document concerns handling multiple ratings. How are collections of ratings signed? I think the answer to this questions depends on the separate and joint semantics of the ratings systems in question. That is, if two (or more) ratings systems have compatible semantics (or, rather, non-conflicting semantics), then perhaps one should be able to sign a joint declaration of ratings. Such a signature is not possible within a single extension
block as outlined in this document, as the scope of the extension block is limited to a particular label.

To sign a collection of ratings one would have to:

  1. create a label containing the multiple ratings,
  2. name that label, and
  3. sign the compound label with a second label, indirecting through the name of the compound label.

This is equivalent to the work required to perform a cascaded signature. Notice that we assume implicitly when creating a compound signature that the rating services are compatible, that the semantics assigned to a signature by the rating services are compatible, and that any additional semantics assigned to the signature (within the signature block) are compatible.

We do not specify what happens when the semantics of the ratings services in a compound label are in conflict. Within traditional PICS itself it's not possible to mix ratings from multiple rating services. Any linkage between two rating services is thus provided by the signature, assuming that the semantics of one or more of the signed services actually provides for such linkage.

On "certificates"

This note does not address the larger issues of transport of credentials beyond a basic assumption that any signature- or credential-related information may be encapsulated as necessary within the digital signature extension. Since it is not clear what sort of credentials will be required by various users, the digital signature extension needs to provide sufficient flexibility to encompass a number of formats and webs of trust.

It would be a mistake to characterize all the possible certificates that can show up in a digital signature extension as "identity certificates," as there is no requirement (and indeed it is not desirable) that the public key signing a label be bound to a known entity. Whether or not a particular user or system chooses to trust a presented security credential is an issue for the evaluating system's trust management policy.

To emphasize this point, Carl Ellison adds:

The meaning of a signature is frequently left out when people talk about digital signatures. I've been on a crusade lately to keep people focussed on the meaning -- or, what we in SPKI call "authorization". I believe I have found a way to unify X.509 certs, SDSI certs, SPKI certs, PICS labels and PolicyMaker programs, in terms of a single general operator which deals with these authorizations. I don't have time to write this up before the meeting. [I'm still not sure I'll be done with the present emergency and be able to attend.] But, if I do make it, I'll bring transparency pens and will be prepared to describe what I'm talking about -- assuming there's time for that. - Carl