<?xml version="1.0"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc editing="no"?>
<?rfc private="SWAD-Europe project"?>
<rfc docName="Security-formats">
  <front>
    <title abbrev="Security and trust standards framework">Framework for Security and Trust Standards</title>
    <author initials="G." surname="Klyne" fullname="Graham Klyne">
      <organization abbrev="Nine by Nine">Nine by Nine</organization>
      <address>
        <postal>
          <street>14 Chambrai Close</street>
          <street>Appleford</street>
          <city>Abingdon</city>
          <region>Oxon</region>
          <code>OX14 4NT</code>
          <country>UK</country>
        </postal>
        <phone>+44 1235 848491</phone>
        <phone>+44 1235 848562</phone>
        <email>GK-SWAD-E@ninebynine.org</email>
        <uri>http://www.ninebynine.net/</uri>
      </address>
    </author>
    <date day="18" month="December" year="2002"/>
    <keyword>Security</keyword>
    <keyword>Trust</keyword>
    <keyword>Standards</keyword>
    <keyword>IETF</keyword>
    <keyword>W3C</keyword>
    <keyword>OASIS</keyword>

    <abstract>
      <t>This memo examines some current standards for data exchange formats 
         and protocols related to security, authorization policy and trust 
         management.
         The goal of this memo is to explore the interaction
         between various security- and trust-related mechanisms, 
         and to identify enough of the purpose and content of these
         existing standards to indicate how they might be integrated 
         in a Semantic Web trust and policy management framework.</t>
         
    </abstract>
    <note title="SWAD Europe">
      <t>This memo has been prepared for the
         <eref target="http://www.w3.org/2001/sw/Europe/">SWAD-Europe project</eref>,
         as a strand of 
         <eref target="http://www.bitd.clrc.ac.uk/Activity/ACTIVITY=SWAD-Europe;">CLRC/RAL participation</eref>.</t>
    <note title="&copy; 2002 CCLRC"/>
    </note>
  </front>

  <middle>
    <!-- Introduction -->
    <section anchor="Introduction" title="Introduction">

      <t>The purpose of this memo is to explore a number of standard
         data exchange formats and protocols that convey information 
         expected to be significant to a semantic web based trust and 
         policy management framework, 
         and to sketch a framework within which they might be integrated.</t>

      <t>Some of the material here is taken from an
         <eref target="http://www.ninebynine.org/iTrust/Itrust-standards/Itrust-200209.html">earlier memo</eref>
         prepared for the <eref target="http://www.itrust.uoc.gr/">iTrust working group</eref>,
         which surveys a number of protocols and data interchange 
         formats that have significance for trust management.</t>

      <t>To be effective, a framework for establishing trust between parties 
         must be based on agreed protocols to exchange information 
         on which trust decisions may be based.
         This in turn calls for broadly accepted standards.  
         Obtaining the consensus needed for a technical specification to 
         become a standard is very much easier if existing relevant 
         standards work is used to the maximum extent possible.</t>

      <t>The essence of Internet standards is to achieve interoperability and
         scalability for data communication services.</t>

      <t>For interoperability, it is particularly important that communicating 
         parties do not have to activate some kind of bilateral out-of-band 
         agreement in order to start communicating with each other.
         This issue is particularly significant for establishing trust:
         if any form of bilateral arrangement already exists then one of 
         the biggest difficulties of establishing trust has already been solved.
         Both interoperability and scalability are served by keeping designs
         as simple as possible consistent with performing the required functions.</t>

      <t>Scalability is further served by minimizing the dependence on a
         single authority, and restricting any such dependency to purely
         technical matters.  Experience with PKI deployment (or non-deployment)
         shows that trying to force all users into a single operational model of
         trust management just does not work at Internet scale.  Whatever the
         participants may wish for, there will be variations in national,
         corporate and personal policy that a scalable system must accommodate.</t>

      <t>Successful Internet standards are generally made up from a number of simple
         interlocking pieces.  This approach seems to permit common implementations
         of shared technical requirements, while allowing for local policy preferences.
         But we should not forget that interoperability requires that all of these
         interlocking pieces can work with each other.  One of the strengths of 
         semantic web technology is that it provides a framework within which
         diverse information from a variety of sources can be brought together
         for some greater purpose.</t>

      <section title="Structure of this memo">
        <t>Section 2 develops a framework for considering how protocols work 
          together to achieve the goals of trust.  It starts by analyzing some
          of the terminology associated with trust and security, and shows how
          the ideas thus described work together in the context of a simple
          data transfer.  It then goes on to suggest that more complex 
          transactions can be composed from simple transfers.</t>
        <t>Section 3 discusses the role of RDF in a framework that uses and 
          conveys trust information.</t>
        <t>The following sections examine a range of security related data format
          and protocol standards, with a brief explanation of their role and 
          showing how they fit in the trust handling framework sketched in 
          section 2.</t>
      </section>

    </section>

    <section anchor="Section-Interaction" 
             title="Interactions between autonomous communicating parties">

<t>A number of interrelated influences bear on interactions between
autonomous communicating parties:
trust, provenance, security, authorization, authentication, confidentiality, 
dependability, privacy, authorization, access control, exposure control, 
to name a few key ideas.  
Here is a characterization of some of these terms:</t>

<list style="hanging">
<t hangText="Security">
   a goal, bad things don't happen</t>
<t hangText="Dependability">
   a goal, good things do happen</t>
<t hangText="Privacy">
   a goal, personal information is not disclosed or abused</t>
<t hangText="Policy">
   rules for behaviour</t>
<t hangText="Provenance">
   information (metadata) about the source of some piece of data</t>
<t hangText="Trust">
   belief in (expectation of) the behaviour of a party for some given purpose</t>
<t hangText="Authorization">
   a decision about use of some mechanism or resource for a particular purpose</t>
<t hangText="Authentication">
   a mechanism, a receiver confirms the identity of a data sender</t>
<t hangText="Encryption">
   a mechanism, a sender restricts who can receive data</t>
<t hangText="Access control">
   a mechanism, controls access to a resource</t>
<t hangText="Exposure control">
   a mechanism, controls delivery of data to a recipient</t>
<t hangText="Negotiation">
   a mechanism, determines what data is transferred</t>
</list>

<t>There are some related concepts that have a secondary role, 
   in that they are ultimately subsumed by one of the concepts noted above:
   <list style="symbols">
   <t>knowledge</t>
   <t>belief/expectation</t>
   <t>identity</t>
   <t>intent</t>
   <t>competence</t>
   </list>
   </t>

    <section anchor="Section-Transfer" 
             title="A trust framework for simple data transfer">


<t>How do these leading concepts relate to each other in systems that deal with trust
and security?  
In the context of communicating computer systems, everything reduces to simple 
transfers of information.  
Provision (or disclosure) of information is the key to all other things.  
A striking example of this is a private key:  
ultimate control over many resources is determined by knowledge of one.</t>

<t>A simple transfer of data is between two parties, a sender and a receiver, and
includes the following key steps:
<list style="symbols">
<t>preparation of data</t>
<t>transfer a copy of the prepared data</t>
<t>use the copy of data received</t>
</list>
</t>

<t>More complex transactions can be composed from such simple data transfers 
(see example below).</t>

<t>The sender may wish to be constrain the use of data provided (e.g. for reasons of
confidentiality, privacy), or may wish to be confident that the data is usable and
used as intended (e.g. serving a notice):
<list style="symbols">
<t>access control can be used to restrict the sending of data, with authorization
decisions based on authentication, provenance and policy information,</t>
<t>encryption can be used to restrict who can receive the raw data, using policy
information and knowledge of the intended recipient to guide the encryption
process,</t>
<t>negotiation can be used to obtain assurance that any data sent will be properly
understood and usable, using provenance and policy information and knowledge of the
intended recipient to select the data sent,</t>
<t>the sender must trust that the recipient will honour any restrictions on the use of
any data transferred, such restrictions being indicated through provenance and policy
information.</t>
</list>
</t>

<t>The receiver may wish the origin and kind of data received to be limited (e.g.
requiring authenticity, acceptable content and a usable format):
<list style="symbols">
<t>authentication can be used to confirm the provenance of data,</t>
<t>exposure control can be used to restrict data received, with authorization
decisions based on content inspection, provenance and policy information,</t>
<t>the receiver may need to trust that the data received was appropriately originated
consistent with any associated provenance information.</t>
</list>
</t>

    <figure>
        <artwork src="SimpleTransferInteractions.gif"
                 alt="Illustration of simple transfer trust and security interactions"
        />
    </figure>

<t>This illustration is also available in 
<eref target='SimpleTransferInteractions.pdf'>PDF format</eref>.</t>

<t>In conclusion, I find that authentication, provenance, trust and policy are
used as input to authorization decisions, and also to guide the use of encryption
and negotiation mechanisms.  Authorization decisions control the enforcement of
access control and exposure control.</t>

<t>I also note that, even when all the indicated mechanisms have been employed,
satisfaction of the intended transfer conditions usually still depends on the
receiver's treatment of the received data.  This is an unavoidable
element of required trust that is difficult to completely eliminate.</t>

    </section>

    <section anchor="Section-TransactionExample" 
             title="Example of an extended transaction">

<t>In this example, we consider requested access to a resource with privacy and
content negotiation.</t>

<t>In the following, R is the receiver of transferred data and S is the sender:
<list style="numbers">
<t>R requests S to provide some information.</t>
<t>S requests information about capabilities of R, providing information about
their privacy policy with that request.</t>
<t>R provides description of capabilities.</t>
<t>S selects and sends data.</t>
</list>
</t>

<t>Each of these steps corresponds to a simple data transfer, of the form
described above:
<list style="numbers">
<t>R assumes or has prior knowledge that S can understand the form of the
request, and can provide the required information.  
R trusts that S will not make inappropriate use of the fact that R has 
requested the resource (or does not care).  
The request might be encrypted to prevent disclosure to parties other
than R or S.  
S makes few assumptions about the content of the request, and
screens it carefully to ensure that it is a recognized, valid request.  
R may choose to authenticate the request data, and S may choose to 
check its authenticity.</t>
<t>If authenticity of the request is confirmed in step 1, S may check that 
R is authorized to receive the requested information.  
S also determines that one of several different forms of data may be provided, 
depending on the capabilities and/or preferences of R.  
S constructs a request for capability and preference information, including a
description of the policy that S will use to govern use of that information.  
S probably has no concerns to constrain use of this policy information, 
so can assume no inappropriate use will be made.  
Based on the form of the request and other information from step 1, 
S assumes that R will understand the request for information and 
the privacy policy description.  
R makes few assumptions about the content of the capability request, 
and screens it carefully to ensure that it is recognized and valid;  
S may choose to authenticate the capability request data, 
and R may choose to check its authenticity.</t>
<t>Using information from step 2, R checks the request from S, including the
privacy policy description and any authenticating or other provenance information
against its own policies for release of capability information, resulting in an
authorization decision whether or not to release the requested information.  A
decision to release information will depend on a degree of trust that the
information will be used according to the policy declared by S for use of that
information.  R assembles a description of its capabilities and preferences,
assuming that they can be understood by S, and sends them.  The capability data
might be encrypted to prevent disclosure to parties other than R or S.  S makes
few assumptions about the content of the capability description, and screens it
carefully to ensure that it is recognized and valid;  R may choose to
authenticate the capability data, and A may choose to check its
authenticity.</t>
<t>Using information from step 3, S analyzes the description of R's capabilities,
and selects a form of data to be sent.  The decision to authorize access to this
information was made at step 2, so it may be that no further authorization is
needed.  Alternatively, S may need to re-check its policy to ensure that R is
permitted to access the particular version of data that matches R's capabilities
and preferences.  Implicit in this authorization is a degree of trust that R will
use the data in ways acceptable to S.  The data might be encrypted to prevent
disclosure to parties other than R or S.  On receipt of the data, R may trust
that the data is free of undesirable content (e.g. viruses, profanity), or may
examine the content to ensure such freedom.  If the data determined to be safe, R
trusts that it does indeed correspond to the original request and use it
accordingly.</t>
</list>
</t>

    <figure>
        <artwork src="NegotiatedTransferInteractions.gif"
                 alt="Illustration of negotiated transfer interactions"
        />
    </figure>

<t>This illustration is also available in 
<eref target='NegotiatedTransferInteractions.pdf'>PDF format</eref>.</t>

<t>This example shows how a simple transaction may be decomposed into a 
series of simple information transfers using the trust and policy 
interactions described previously.  
In doing this decomposition, the transaction appears to become rather complex, 
because many of the trust and policy based decisions that are made implicitly 
in the context of a protocol request have been made explicit.  
But, where normal protocol behaviour is acceptable, 
no additional logic or complexity over and above the protocol implementation 
is required.  
Apart from the content negotiation and privacy policy description, 
the above example transaction, with full authentication and content encryption 
of each transfer, could be completed using a standard HTTP-over-TLS protocol 
implementation.</t>

    </section>

    </section>

    <section anchor="Section-RDF" title="Resource Description Framework (RDF)">

      <t>The <xref target="W3C.rdf-syntax">Resource Description Framework (RDF)</xref> 
        is a W3C-defined framework for 
        representing metadata and arbitrary information.
        It is based on a graph data model, for which an XML 
        serialization is defined.</t>
      <t>It is usually possible to use "home grown" XML for applications where RDF
        is applicable, but RDF offers the following distinguishing characteristics:
        <list style="symbols">
      <t>A fundamentally simpler data model:  a directed labelled graph.</t>
      <t>Consistent use of URIs to identify things and concepts being described.</t>
      <t>Open-ended extensibility, allowing new information to be added at any time.
         RDF fully leverages <xref target="W3C.xml-names">XML namespaces</xref>
       to allow mixing and sharing of data defined for different applications.
       (See also <eref target="http://www.w3.org/DesignIssues/Evolution.html">
       Tim Berners-Lee's note on Evolvability</eref>.)</t>
    <t>A uniform framework for exchanging information between applications
       that goes well beyond what is provided by XML in terms of the level
       of interoperability achieved.</t>
    <t>A substantial and growing body of application information design that can
       be used directly by any RDF application.</t>
    <t>A growing body of tools for storing and manipulating RDF in standard
       relational databases.</t>
    <t>Formal semantics, and a well-founded notion of entailment.</t>
    <t>A growing body of tools capable of performing various kinds of processing
       on arbitrary RDF data.  Of particular relevance to trust modelling,
       contract negotiation and security are tools that apply formal
       reasoning techniques to RDF information.</t>
    <t>A basis for ongoing ontology- and rule-language design and development.
       These developments incorporate many ideas that are relevant to 
       trust-related topics such as contract formation.</t>
        </list>
      </t>
      <t>The power and value of using RDF in a trust modelling framework is the
        integration and sharing of information between applications.  For an
        isolated application, there may be little practical value in using RDF,
        but when several applications need to exchange information, the common
        representation thus provided is most valuable.
        I liken this to the effect that Internet Protocol (IP) had on the deployment
        of communication services in allowing disparate systems to communicate with
        each other and enabling the development and deployment of new communication
        services.  RDF fulfils a similar role with respect to information services.
      </t>

      <t>In this way, RDF can enable a "network effect", allowing a trust framework 
        to be composed from simple tools and simple rules, accepting and generating
        information as RDF expressions.</t>

      <t>Existing data formats can be viewed as defining two parts:
        syntax and semantics.  Of these, the semantics is the most difficult to
        match to a different definition.  By comparison, syntax is relatively
        easy to convert without loss.  Thus it may be that the way to integrate
        diverse existing data format standards is to map their syntax into RDF
        while exactly preserving their semantics.  For XML-based data formats,
        this has been easily achieved in some cases using
        <xref target="W3C.xslt">XSLT</xref> transformations.
      </t>

    </section>

    <section anchor="Format-SMIME" title="Secure MIME (S/MIME)">
    <t><xref target="RFC2633">S/MIME</xref>
      is an IETF standard for signing and encrypting MIME content, and providing
      other related security services.</t>
    <t>It can be used to provide end-to-end security
      for arbitrary MIME content (e.g. textual or binary data), where "end-to-end"
      means that its security does not depend on trusting any intervening systems 
      through which the data may pass.  S/MIME secures a data object, and
      is not really suitable for securing streaming data like real-time voice
      or video.</t>

      <section title="Content and concepts">
        <t>As its name suggests, S/MIME uses MIME-encapsulation <xref target="RFC2045"/>,
          thus it can carry arbitrary (textual or binary) data over a
          text-only data transfer channel.</t>
        <section title="Signed data">
          <t>Signed data contains:
            <list style="symbols">
              <t>a payload</t>
              <t>a signature block</t>
            </list></t>
          <t>The payload is passed in the clear, and can be accessed as a 
            MIME body part without processing the associated signature 
            information.</t>
          <t>The signature information contains:
            <list style="symbols">
              <t>a crytographic digest of the payload, signed using a public key
                cryptographic algorithm (typically RSA or DSA),</t>
              <t>a copy of the public key paired with the private key used to 
                sign the digest,</t>
              <t>a name that identifies the signer,</t>
              <t>a certificate or certificates that can be used to verify the
                supplied public key, and</t>
              <t>optional additional attributes that are also covered by 
                the signature.</t>
            </list></t>
          <t>The message digest algorithm and public key signing algorithm may vary,
            and the S/MIME format contains information sufficient to identify the actual
            algorithms used.</t>
          <t>The signature information can include multiple signatures applied to
            the same payload.</t>
        </section>
        <section title="Encrypted (enveloped) data">
          <t>Encrypted (enveloped) data has a single
            MIME body part containing:
            <list style="symbols">
              <t>encryption control information</t>
              <t>encrypted payload data</t>
            </list></t>
          <t>The payload data is encrypted using a symmetric block cipher
            (e.g. triple-DES) and a randomly-generated key.  The encryption key
            is then encrypted using a public key algorithm using the public key
            of the intended recipient.  For a message with several recipients,
            this can be repeated using the public key for each intended recipient.</t>
          <t>The encryption control information for a single recipient contains
            the following information:
            <list style="symbols">
              <t>a recipient identifier, and</t>
              <t>the encrypted content-encryption key for that recipient.</t>
            </list></t>
        </section>
      </section>
      <section title="Syntax">
        <t>S/MIME message syntax is based on MIME <xref target="RFC2045"/>
          and ASN.1 <xref target="CCITT.X680.1994"/>.</t>
        <t>MIME is used to encapsulate the S/MIME data, and in the case of signed 
          data a MIME multipart structure is used to separate the payload and 
          signature information.</t>
        <t>ASN.1 is used to encode the signature information or the
          encryption control information.</t>
      </section>
      <section title="Relationship to trust management">
        <t>The importance of S/MIME in trust management is that it allows 
          information to be passed over an untrusted channel with confidence that
          it will arrive unmodified or unseen by third parties.  It also
          allows a recipient of such information to be confident of its origin,
          to the extent that they can be confident that only the claimed originator 
          has access to the private key used to sign the message.</t>
        <t>In relation to the message transfer framework described in
          section <xref target="Section-Interaction"/>,
          S/MIME provides mechanisms for authentication and encryption.</t>
      </section>
      <section title="Related specifications">
        <t>
          <list style="symbols">
            <t><xref target="RFC2440">OpenPGP</xref>
              performs a similar function, but uses its own web-of-trust model 
              for verifying keys.</t>
            <t>S/MIME depends on <xref target="CCITT.X509.1988">X.509</xref>
              certificates for key verification.</t>
            <t>An alternative to the style of object security provided by S/MIME
              is channel security provided by protocols such as 
              <xref target="RFC2246">TLS</xref> or SSL.
              These protocols are easier to deploy, but are generally regarded
              as less secure as they depend on trustworthiness of the intermediate 
              servers used to apply and decode the security protocol.</t>
          </list>
        </t>
      </section>
    </section>

    <section anchor="Format-OpenPGP" title="Open PGP (OpenPGP)">
    <t><xref target="RFC2440">OpenPGP</xref>
       is another IETF standard for signing and encrypting data objects, and providing
       other related security services.  It can be used to provide end-to-end security
       for arbitrary data objects.</t>

      <section title="Content and concepts">
        <t>Like S/MIME, it provides for signing and encryption of 
          tranferred data.  Technically, every PGP message constructed
          according to the standard is signed then encrypted, though
          some applications may omit the encryption stage.</t>
        <t>PGP implementations also provide a framework for key 
          management through a "web of trust" mechanism, though this
          is not part of the open PGP message format.  Each PGP user
          maintains a "keyring" of public keys with associated trust
          values.  Two important variations of trust are:  (a) trust
          to introduce a new public key and corresponding associated
          identity, and (b) trust that a given key for the purposes
          of signing messages from an identified party.</t>

        <section title="Signed and encrypted data">
          <t>Signed data contains a payload and a signature block,
            which are constructed using a PGP-specific binary
            format, consisting of a sequence of "packets".
            The signed message is optionally compressed, then
            encrypted and assembled with a "key material" packet.</t>
          <t>Finally, the encrypted data may be "Ascii armored",
            which allows the data to be passed over a text data
            channel, possibly subject to whitespace and line break
            modifications, without loss or corruption of data.</t>
          <t>The message digest algorithm and public key signing algorithm 
            may vary, and the OpenPGP format contains information sufficient
            to identify the actual algorithms used.</t>
          <t>The signature information can include multiple signatures 
            applied to the same payload.</t>
        </section>

        <section title="Cleartext signature framework">
          <t>The OpenPGP specification also provides for associating
            a signature with some clear text.</t>
          <t>This uses the "Ascii armor" labelling structure for 
            separating and labelling the clear text, and combining 
            that with signature information.  Using this, the message
            content can be viewed using non-PGP-aware agents, even
            if its authenticity cannot be verified.</t>
        </section>

        <section title="Web of trust">
          <t>PGP, upon which openPGP is based, has a distinctive approach
            to building and conveying trust in public keys.</t>
          <t>Compared with the X.509 hierarchical certificate chaining model
            (see section <xref target="Format-X509"/>),  PGP employs a more 
            grassroots-based "web of trust", in which any keyholder can 
            express degrees of trust in another.  In his book 
            "Applied Crytography" <xref target="ref.Schneier"/>, 
            Bruce Schneier puts it like this:
            <list>
            <t>There are no key certification authorities;   
              PGP instead supports a "web of trust".  
              Every user generates and distributes his own public key.  
              Users sign each other's public keys, creating an interconnected 
              community of PGP users.</t>
            </list></t>
        </section>
      </section>

      <section title="Syntax">
        <t>OpenPGP uses a binary message format combined with a Radix-64
          ASCII encoding ("Ascii armor") for transferring messages over 
          text data channels.</t>
        <t>A framework for using MIME to convey OpenPGP-formatted
          messages is described in <xref target="RFC3156">RFC 3156</xref>,
          "MIME Security with OpenPGP".</t>
      </section>

      <section title="Relationship to trust management">
        <t>The importance of OpenPGP  in trust management is that it allows 
          information to be passed over an untrusted channel with confidence that
          it will arrive unmodified or unseen by third parties.  It also
          allows a recipient of such information to be confident of its origin,
          to the extent that they can be confident that only the claimed originator 
          has access to the private key used to sign the message.</t>
        <t>In relation to the message transfer framework described in
          section <xref target="Section-Interaction"/>,
          OpenPGP provides mechanisms for authentication and encryption.</t>
      </section>

      <section title="Related specifications">
        <t>
          <list style="symbols">
            <t><xref target="RFC2633">S/MIME</xref>
              performs similar functions, but uses X.509 certificates and
              corresponding public key infrastructure for verifying keys.</t>
            <t>OpenPGP could be used with 
              <xref target="CCITT.X509.1988">X.509</xref>
              certificates for key verification,
              but no special infrastructure is provided by OpenPGP for dealing 
              with X.509 certificates.  In practice, there is probably
              little point as the relevant details are all worked out 
              for S/MIME.  It is interesting to compare PGP's unstructured
              "web-of-trust" model with X.509's hierarchical approach to
              trust distribution.</t>
            <t><xref target="RFC3156">RFC 3156</xref>, "MIME Security with OpenPGP",
              describes how to use OpenPGP with <xref target="RFC2045">MIME</xref>,
              and introduces MIME content types "application/pgp-encrypted", 
              "application/pgp-signature" and  "application/pgp-keys" for 
              this purpose.</t>
            <t>An alternative to the style of object security provided by OpenPGP
              is channel security provided by protocols such as 
              <xref target="RFC2246">TLS</xref> or SSL.
              These protocols are easier to deploy, but are generally regarded
              as less secure as they depend on trustworthiness of the intermediate 
              servers used to apply and decode the security protocol.</t>
          </list>
        </t>
      </section>

    </section>

    <section anchor="Format-XMLDSIG" title="XML digital signatures (XMLDSIG)">
    <t><xref target="RFC3275">XMLDSIG</xref> (also <xref target="W3C.xmldsig-core"/>),
       or XML Signatures, is a joint IETF/W3C standard defining XML Signatures 
       that can be used for signing arbitrary data, but with a particular view 
       to XML content.</t>
    <t>It is similar to the signing capabilities of S/MIME and OpenPGP in that 
       it provides object authenticity and integrity protection.</t>
    <t>Unlike S/MIME and OpenPGP, XML Signatures can exploit the internal structure
       of XML (or other data formats) to provide for selective signing and 
       canonicalization of equivalent representations, allowing a message 
       containing content thus signed to be manipulated (within certain bounds) 
       without invalidating the signature.</t>

      <section title="Content and concepts">
        <t><xref target="RFC3275">XMLDSIG</xref>
          provides for signing (only) of XML data.  This provides
          for authentication and integrity protection of XML-formatted
          objects.</t>
        <t>XML Signatures are applied to arbitrary digital content (data objects) 
          via an indirection. Data objects are digested, the resulting value is 
          placed in an element (with other information) and that element is then 
          digested and cryptographically signed. XML digital signatures are 
          represented by a &lt;signature&gt; element (qualified with the XML
          digital signature namespace).</t>
        <t>The signature is linked to the signed data by a URI reference.</t>
        <t>Signed XML data can be embedded in the same document as the XML
          signature, and referenced by a URI reference consisting of just
          a fragment identifier.  Such local data can be included within 
          an "enveloping signature" or can enclose an "enveloped signature".
          "Detached signatures" are over external network resources or local 
          data objects that reside within the same XML document as sibling 
          elements; in the latter case, the signature is neither enveloping 
          (signature is parent) nor enveloped (signature is child).</t>
        <t>An XML signature is constructed in 3 parts:
          <list style="numbers">
      <t>Each target data element to be covered by the signature is
        associated with a &lt;reference&gt; element that indicates:
        <list style="symbols">
          <t>one or more transformation algorithms to be applied,
            which may include algorothms for canonicalization,</t>
          <t>a digest algorithm algorithm that is calculated over the
            transformed content, and</t>
          <t>the digest value that must match the computed digest value.</t>
        </list></t>
      <t>A signature over the target data description,
        including the digest values to be matched, consisting of:
        <list style="symbols">
          <t>A canonicalization method that is applied to the target value 
            descriptions,</t>
          <t>a signature method used to verify the target data description,
            and</t>
          <t>a signature value calculated using the indicated signing method
            applied to the canonicalized target data description (including
            the canonicalization and signature method indicators).</t>
        </list></t>
            <t>Key information about the signing key used, which can indicate
              certificate information or some other kind of key identification.</t>
    </list></t>
        <t>Unlike the signing mechanisms of S/MIME and OpenPGP, there is a level of
          indirection here between the signature itself, and the data that is signed.
          The assured relationship between the data and the signature is maintained
          by the digest value(s) that are part of the indirection data.
          This indirection allows a signature value to be calculated over
          non-continguous data, and even a composition of data from several 
          different sources.  It also allows for the application of transformations
          to make the signature less sensitive to minor format variations.</t>
      </section>

      <section title="Syntax">
        <t>The syntax of an XML Signature is entirely based on XML.</t>
        <t>Through the indirect data description element (which is also XML)
          the information signed can be any combination of XML and other, 
          non-XML, data formats.</t>
      </section>

      <section title="Relationship to trust management">
        <t>The importance of XML Signature in trust management is that it allows 
          information to be passed over an untrusted channel with confidence that
          it will arrive unmodified by third parties, and allows a recipient 
          of such information to be confident of its origin, to the extent 
          that they can be confident that only the claimed originator 
          has access to the private key used to create the signature.</t>
        <t>In relation to the message transfer framework described in
          section <xref target="Section-Interaction"/>,
          XML Signature provides a mechanism for authentication.</t>
      </section>

      <section title="Related specifications" anchor="Format-XMLDSIG-related">
        <t>
          <list style="symbols">
            <t>The XML Signature specification is very much built upon
               <xref target="W3C.xml">XML</xref> and
               <xref target="W3C.xml-names">XML namespaces</xref>.
               </t>
            <t><xref target="W3C.xml-c14n">XML canonicalization</xref> is used
              as an XML canonicalization algorithm, for which support is required.</t>
            <t>The Base64 algorithm of <xref target="RFC2045">MIME</xref> is used
              for transforming binary data to textual format for the purposes of 
              signature calculation.</t>
            <t><xref target="W3C.xpath">XML canonicalization</xref> is used
              to select (filter) parts of an XML document for signing.</t>
            <t><xref target="W3C.xslt">XML transformations</xref> may be used
              to apply arbitrary transformations to an XML document for signing.</t>
            <t>XML signatures can be used in conjunction with
              <xref target="CCITT.X509.1988">X.509</xref>
              certificates for key verification.
              Several other forms of key information are also supported.</t>
            <t><xref target="W3C.xkms">XKMS</xref> is likely to be a useful key 
              verification mechanism for use with XML signatures.</t>
            <t><xref target="RFC2633">S/MIME</xref>
              also performs data object authentication functions, but with many fewer
              options and less flexibility concerning what is signed.</t>
            <t><xref target="RFC2440">OpenPGP</xref>
              also performs data object authentication functions,
              but uses its own web-of-trust model for verifying keys.</t>
            <t><xref target="W3C.xmlenc-core">XML Encryption</xref> is a
              counterpart to XML signature, and provides for protecting
              the privacy of content in XML messages.</t>
            <t>An alternative to the style of object security provided by XMLDSIG
              is channel security provided by protocols such as 
              <xref target="RFC2246">TLS</xref> or SSL.
              These protocols are easier to deploy, but are generally regarded
              as less secure as they depend on trustworthiness of the intermediate 
              servers used to apply and decode the security protocol.</t>
          </list>
        </t>
      </section>

      <section title="Note">
        <t>Because of its great flexibility and relative complexity,
          great care should be used when applying XML signatures.</t>
        <t>In particular, consideration should be given that the
          selection of data elements to be signed, and application of
          transformation rules, may result in the signed data conveying
          some different information than intended by the user who allowed
          their key to be used to make the signature.</t>
        <t>It may be that it is important to know what application created
          an XML signature, so that trust in the signature value can be 
          judged accordingly.  (To some extent, this applies to any form of
          digital signature, but the wide range of XML signature options
          leaves greater possibility for unintended consequences.)</t>
        <t>Where an XSLT transform is used to transform the content, it
          should either be served by a trusted source, or a digest of
          the actual stylesheet used included as part of the signature.</t>
      </section>
    </section>

    <section anchor="Format-XMLENC" title="XML encryption (XMLENC)">
    <t><xref target="W3C.xmlenc-core">XMLENC</xref>
       is a W3C standard for encrypting arbitrary data and representing the
       result as XML.  The result of encrypting data is an XML Encryption 
       element which contains or references the cipher data.</t>

      <section title="Content and concepts">
        <t>An encrypted data element may contain:
          <list style="symbols">
            <t>details of the encryption method used,</t>
            <t>information about the encryption key used,</t>
            <t>a copy of or reference to the encrypted data, and</t>
            <t>an EncryptionProperties element, which can contain 
              additional information concerning the generation of 
              the encrypted data element (e.g., date/time stamp).</t>
          </list></t>
        <t>When used to encrypt XML data, the encryption may be applied selectively.
          That is, selected elements in the clear form of the document may
          be replaced by an encrypted data element.</t>
      </section>
      <section title="Syntax">
        <t>The syntax of an XML encrypted data element is entirely 
          based on XML.</t>
        <t>Through the mechanisms of indirect reference, the encrypted
          data may be passed as XML or some other, non-XML, data format.</t>
      </section>
      <section title="Relationship to trust management">
        <t>The importance of XML Encryption in trust management is that it 
          allows information to be passed over an untrusted channel with 
          confidence that it will arrive unseen by third parties.
          This capability is critically important for passing
          private authorization information as part of a transaction.</t>
        <t>In relation to the message transfer framework described in
          section <xref target="Section-Interaction"/>,
          XML Encryption provides a mechanism for encryption.</t>
      </section>
      <section title="Related specifications">
        <t>XML Encryption builds in many ways on the XML Signature 
          specification,
          and consequently bears some relation to several of the same 
          specifications
          (see section <xref target="Format-XMLDSIG"/>,
          sub-section <xref target="Format-XMLDSIG-related"/>,
          for more details).
        </t>
      </section>

    </section>

    <section anchor="Format-X509" title="X.509 Public Key Certificates">
    <t><xref target="CCITT.X509.1988">X.509</xref>
       is an ITU standard format for public key certificates.</t>
    <t>Public key certificates are a key element in the
       distribution and transfer of trust in public keys, which
       is itself is the basis for any other transfers of trust that
       depend upon public key cryptography.</t>

      <section title="Content and concepts">
        <t>The purpose of a public key certificate is to distribute
          public key information in a secure, well-managed fashion.</t>
        <t>Public key cryptography depends critically on the user of
          a public key having fell-founded confidence that the
          corresponding private key is known only to the person
          that they believe owns it.  So, when checking a signature,
          the public key used must correspond to the intended
          signer's private key.  Similarly, when encrypting data
          for a given recipient, the public key used must correspond
          to a private key that is known only to the intended recipient.</t>
        <t>X.509 is based around the concept of a Certifying Authority
          (or CA) who checks the identity of some person or authorized
          entity who has also proved that they have posession of the
          private key.  The CA then issues a Certificate, which is a
          data structure containing (among other things) the key
          holder's identity and a copy of their public key, all signed
          using the CA's private key.  Then, if the recipient trusts
          the CA to properly identify the person, they can also trust
          that the identified person can also create signatures that
          check out using the public key signed by the CA.</t>
        <t>An important property of a Public Key Certificate is that
          it can be made publicly available through untrusted
          channels without thereby compromising any trust that
          may be vested in the key.</t>
        <section title="Certificate limitations and revocation">
          <t>The use of certificates is fine for checking that the
            intended signer did indeed have posession of the private
            signing key, but can never prove that nobody else also had 
            access to the same key.  This is an inherrent problem with
            any PKI-based trust system.  The relying party must trust 
            that the signer's private key has not been compromised by 
            disclosure to any other party.</t>
          <t>A partial response to the problem of signing key disclosure
            to unauthorized parties is the Certificate Revocation List (CRL),
            which is a published list of certificates that have been revoked.
            Another partial response to this problem is that an X.509
            certificate has a limited lifetime, after which it cannot
            be regarded as valid, and a new certificate must be obtained.</t>
          <t>Yet another response to the problem is for the relying party to
            always check the certificate with the CA when using it to
            verify a signature.  This may be expensive in terms of 
            computation cost and communication delays, but is often
            regarded as the only acceptably safe option for high-value
            transactions.</t>
          <t>Thus, one can see that trust in a public key depends on
            a number of factors, including trust in the key holder, both
            to live up to obligations conveyed by their signature, and
            also to properly guard their private key from disclosure
            to unauthorized parties, trust in the CA to properly verify
            the key holder's identity, and trust in the
            security of the technology used to create and verify 
            signatures.</t>
        </section>
        <section title="Certificate chaining">
          <t>As described above, there is an implicit assumption that
            the user of a public key will trust the CA that was used to
            sign the corresponding certificate.
            This is not a practically scalable proposition.</t>
          <t>So X.509 employs the idea of certificate chains, where
            each CA's public key is itself signed by a "higher" CA,
            and so on until a trusted "root" CA is encountered.
            Thus, a chain of certificates can link the holder of
            some key with a user of the corresponding public key
            to a common point of trust.  Set against this, the 
            longer the certificate chain the more scope there is 
            for compromise of any one of the CA signing keys, which 
            would effectively nullify the basis for trust in the 
            end user keys thus protected.</t>
          <t>The original
            X.509 design called for a single trusted root to the
            CA hierarchy.  In practice, that has not been realized, but
            there are a number of certificate issuing organizations
            that are widely recognized (if not trusted), and whose
            public keys are widely distributed with web browsers and
            other software.</t>
          <t>An unfortunate aspect of many kinds of computer interaction
            is that ordinary users don't have the real-world clues
            upon which to base their trust decisions ("would you buy
            a used car from this man?").  For the most part, non-
            technical computer users (and many technical ones too) 
            have insufficient knowledge and understanding to make
            reasonable trust decisions, and end up relying on
            personal recommendations and credit card guarantees.
            The former is alright to a point, but is not fully 
            applicable at Internet scale.  The latter effectively 
            puts credit card companies in the position of trusted
            certifying authorities for certain kinds of purchases,
            but doesn't extend so easily to other kinds of
            transaction (e.g. online medical advice).</t>
          <t>Thus, public key certificates in general, 
            and X.509 in particular, 
            are technical approaches to a problem that cannot be 
            solved wholly by technical means.  X.509 certificates
            can carry additional information about policies and
            other non-technical aspects of trust decisions.</t>
          <t>I expect that X.509 has a part to play, but it 
            cannot be regarded as  a panacea for all trust 
            problems.</t>
        </section>
      </section>
      <section title="Syntax">
        <t>X.509 certificates are defined using ASN.1, per
          <xref target="CCITT.X680.1994">X.680</xref>, 
          and encoded for transmission using Basic Encoding Rules (BER) per 
          <xref target="CCITT.X690.1994">X.690</xref></t>
      </section>
      <section title="Relationship to trust management">
        <t>Public key certificates are a technical mechanism for
          conveying trust in (the authenticity of) public keys.</t>
        <t>In relation to the message transfer framework described in
          section <xref target="Section-Interaction"/>,
          public key certificates support the use of public
          key cryptography to provide authentication (by confirming
          the correct public key to verify a signature) and
          encryption (by confirming the correct public key to 
          use in encrypting a message).</t>
      </section>
      <section title="Related specifications">
        <t>
          <list style="symbols">
            <t><xref target="RFC2633">S/MIME</xref>
              is designed to be used with X.509 certificates,
              and has explicit provision for carrying X.509 
              certificates as part of the signing and encryption 
              key information.</t>
            <t>X.509 certificates can be used to certify public keys
              for use with <xref target="RFC2440">OpenPGP</xref>
              as an alternative or in addition to the PGP "web of trust",
              specific mechanisms for doing this are not widely
              deployed [[[I think - is this true?]]].</t>
            <t>X.509 certificates are quite complex, and their use involves
              the construction and analysius of ASN.1 BER-encoded data.
              This can be a significant barrier to implementation, and
              the <xref target="W3C.xkms">XKMS</xref> protocol is being
              developed to provide an easier way for XML applications
              to access the facilities provided by X.509 and
              other certificates.</t>
          </list>
        </t>
      </section>

    </section>

    <section anchor="Format-PKIX" title="Internet X.509 Public Key Infrastructure (PKIX)">
    <t><xref target="RFC3280">PKIX</xref>
       is an IETF standard profile of X.509 for Internet use.</t>
    <t>For further information, see section <xref target="Format-X509"/>
       and the PKIX specification document <xref target="RFC3280"/>.</t>
    </section>

    <section anchor="Protocol-XKMS" title="XML Key Management Services">
    <t><xref target="W3C.xkms">XKMS</xref>
       is W3C protocol specification for verifying and accessing information
       about X.509 public key certificates (or other forms).</t>

      <section title="Content and concepts">
        <t><xref target="W3C.xkms">XKMS</xref>
          specifies protocols for distributing and registering public keys, 
          suitable for use in conjunction with the proposed standard for XML
          Signature <xref target="W3C.xmldsig-core"/> and as an anticipated 
          companion standard for <xref target="W3C.xmlenc-core">XML encryption</xref>.
          </t>
        <t>The XML Key Management Specification (XKMS) comprises two parts:
        <list style="numbers">
          <t>the XML Key Information Service Specification (X-KISS), and</t>
          <t>the XML Key Registration Service Specification (X-KRSS).</t>
        </list></t>
        <t>The X-KISS specification defines a protocol for a Trust service 
          that resolves public key information contained in XML-SIG elements.
          The X-KISS protocol allows a client of such a service to delegate 
          part or all of the tasks required to process XML Signature key 
          information elements.  A key objective of the protocol design is 
          to minimize the complexity of application implementations by 
          allowing them to become clients of a key information and 
          registration service, and thereby to be shielded from 
          the complexity and syntax of the underlying PKI used to establish 
          trust relationships.  The underlying PKI may be based upon a 
          variety of different specifications such as X.509/PKIX, SPKI or PGP.</t>
        <t>The X-KRSS specification defines a protocol for a web service 
          that accepts registration of public key information. 
          Once registered, the public key may be used in conjunction 
          with other web services including X-KISS.</t>
      </section>

      <section title="Syntax">
        <t>The syntax of an XKMS is entirely based on XML.</t>
      </section>

      <section title="Relationship to trust management">
        <t>XKMS is a protocol that provides access to the facilities conveyed
          by X.509 certificates, as well as other forms of public
          key certificate.  As such the relation to trust management is
          largely the same as for X.509: 
          see section <xref target="Format-X509"/> for details.</t>
      </section>

      <section title="Related specifications">
        <t>
          <list style="symbols">
            <t>XKMS can be used in conjunction with
              <xref target="CCITT.X509.1988">X.509</xref> certificates, 
              or some other form of public key information.</t>
            <t>The XKMS specification is very much built upon
               <xref target="W3C.xml">XML</xref> and
               <xref target="W3C.xml-names">XML namespaces</xref>.
               </t>
            <t>XKMS is likely to be used in conjunction with
              <xref target="W3C.xmldsig-core">XML Signature</xref> and
              <xref target="W3C.xmlenc-core">XML Encryption</xref>.</t>
          </list>
        </t>
      </section>

    </section>

    <section anchor="Format-Kerberos" title="Kerberos ticket issuing systems">
    <t><xref target="RFC1510">Kerberos</xref>
       is a widely used trusted third party authentication technology 
       developed originally at MIT for Project Athena.  </t>

      <section title="Content and concepts">
        <t>Kerberos is an authentication protocol that depends for its security
           on shared secrets with a trusted third party, and employs symmetric
           cryptography.</t>
        <t>The components in the Kerberos model are
          <list style='symbols'>
          <t>A Kerberos server</t>
          <t>Ticket-granting servers</t>
          <t>Application servers</t>
          <t>Clients</t>
          </list>
        </t>
        <t>To use an application service, a client must obtain a ticket for
          that service, from a ticket granting server.  But to obtain a ticket,
          the client must obtain a ticket-granting-ticket from the Kerberos
          authentication server.</t>
        <t>Clients each share a secret key with the authentication server (AS),
          which is used to encrypt session keys generated by AS.
          AS also shares a secret key with the ticket granting server(s) (TGS),
          which is used to encrypt the ticket issued, so only TGS can access 
          the content of the ticket to create service tickets.</t>
        <t>Ticket granting servers similarly share secrets with the services for
          which they issue tickets.  This, in conjunction with a shared session
          key issued and encrypted by AS, allows TGS to create a service ticket
          for the client to present to gain access to a service.</t>
        <t>There are many additional details in the design of Kerberos, but
          the basic idea can be seen to be propagation of trust in identity 
          through a chain of chared secrets.</t>
      </section>

      <section title="Syntax">
        <t>The Kerberos protocol syntax is defined using ASN.1, and encoded
           for transmission using the Distinguished Encoding Representation 
           (DER) of the data elements as described in the X.509 specification,
           section 8.7 <xref target="CCITT.X509.1988"/>.
        </t>
        <t>(The above citation was copied from from RFC 1510, but doesn't agree
           with the X.509 (1994) document itself.
           See <xref target="CCITT.X680.2002">X.690</xref> for the current decsription
           of ASN.1 distinguished encoring rules (DER).)
        </t>
        <t>The kerberos specification allows for the ASN.1/DER encoded data to
           be encapsulated in application protocol frames if it cannot be carried
           directly.</t>
      </section>

      <section title="Relationship to trust management">
        <t>Kerberos provides two important capabilities:  authentication
          of network entities,
          and distribution of session keys for encryption of data.</t>
        <t>In relation to the message transfer framework described in
          section <xref target="Section-Interaction"/>,
          Kerberos provides authentication and support for client-to-service 
          encryption by securely distributing session keys.</t>
        <t>Note that Kerberos is oriented toward supporting client access to
          some set of services, rather than arbitrary person-to-person (or
          agent-to-agent) security requirements.</t>
      </section>

      <section title="Related specifications">
        <t>
          <list style="symbols">
            <t><xref target="CCITT.X509.1988">X.509</xref>
              provides similar capabilities based on public key cryptography,
              and a hierarchy of certifying authorities.</t>
          </list>
        </t>
      </section>

    </section>

    <section anchor="Format-SAML" title="Security Assertions Markup Language (SAML)">
    <t><xref target="OASIS.sstc-core">SAML</xref>
       is an OASIS standard format and protocol binding framework for 
       conveying security assertions.  A particular goal of SAML is support for
       single sign-on, a single user authentication being used to generate
       sufficient credentials to access resources in different domains.</t>

      <section title="Content and concepts">
        <t>The Security Assertion Markup Language (SAML) is an XML-based 
           framework for exchanging security information. 
           This security information is expressed in the form of assertions 
           about subjects, where a subject is an entity (either human or 
           computer) that has an identity in some security domain.
           A typical example of a subject is a person, identified by his 
           or her email address in a particular Internet DNS domain.</t>
        <t>Assertions can convey information about authentication acts 
           performed by subjects, attributes of subjects, and authorization 
           decisions about whether subjects are allowed to access certain 
           resources.</t>
        <section title="Assertions">
          <t>An assertion is a package of information that supplies one or 
             more statements made by an issuer.
             SAML allows issuers to make three different kinds of 
             assertion statement:
            <list style="symbols">
              <t>Authentication:
                 the specified subject was authenticated by a 
                 particular means at a particular time.</t>
              <t>Authorization decision:
                 a request to allow the specified subject to access 
                 the specified resource has been granted or denied.</t>
              <t>Attribute: 
                 the specified subject is associated with the supplied attributes.</t>
            </list></t>
          <t>Specific XML elements are defined for introducing additional
             kinds of assertion into a SAML expression.</t>
          <t>Assertions have a nested structure.
             A series of inner elements representing authentication statements,
             authorization decision statements, and attribute statements contain 
             the specifics, while an outer generic assertion element provides 
             information that is common to all of the statements;
             e.g. issuer, time of issue, assertion qualifiers, etc.</t>
        </section>

        <section title="Protocol">
          <t>The security assertion language definition is free-standing, and
             assertions can be conveyed in a number of different ways, using
             any protcol capable of delivering XML content.</t>
          <t>SAML also defines a simple request-response protocol, for
             discovering information about SAML assertions held by some
             authority.</t>
          <t>The protocol defines a number of query types, and also provides
             an extension point element for introducing new queries.</t>
          <t>The response to a query is a status value and zero or more
             SAML assertions.</t>
          <t>The SAML protocol may be bound to a variety of data transfer protocols.
             Once such specific binding is defined by the SAML specification:
             SOAP over HTTP <xref target='W3C.soap12-part1'/>
             <xref target='W3C.soap12-part2'/> <xref target='RFC2616'/>.</t>
        </section>

      </section>
      <section title="Syntax">
        <t>The assertion language uses <xref target='W3C.xml'>XML</xref>, and
           is described using <xref target='W3C.REC-xmlschema-1'>XML schema</xref>.</t>
      </section>

      <section title="Relationship to trust management">
        <t>In relation to the message transfer framework described in
          section <xref target="Section-Interaction"/>,
          SAML provides a format for describing authentication,
          authorization and other information that may be derived
          from or input to a policy, and as such may be used to
          impact any policy-based decision.</t>
      </section>

      <section title="Related specifications">
        <t>
          <list style="symbols">
            <t>SAML appears to provide some of the functions of certificates
               <xref target="CCITT.X509.1988"/> and key management services 
               <xref target="W3C.xkms"/>, but not covering a complete 
               specification of how the information is secured.
               It also provides additional information that is not generally
               provided by certificates, but may result from the use of
               certificates and associated security technologies.</t>
            <t>The relationship to policy-based decisions suggests
               that SAML could usefully be used in conjunction with
               <xref target="OASIS.xacml-specification-1-0">XACML</xref>.</t>
          </list>
        </t>
      </section>

    </section>

    <section anchor="Format-XACML" title="Extensible Access Control Markup Language (XACML)">
    <t><xref target="OASIS.xacml-specification-1-0">XACML</xref>
       is an OASIS specification for using XML to expressing policies for
       information access over the Internet.</t>
    <t>XACML is designed to address fine grained control of authorized activities. 
       It takes account of the effect of characteristics of the access requester, 
       the protocol over which the request is made, 
       authorization based on classes of activities, 
       and content introspection (i.e. authorization based on both the 
       requestor and potentially attribute values within the target where 
       the values of the attributes may not be known to the policy writer).</t>
    <t>XACML also aims to suggest a policy authorization model to guide 
       implementers of authorization mechanisms.</t>

      <section title="Content and concepts">
        <t>A policy is a rule or rules of behaviour
           (or rules that affect behaviour of a system in some way).</t>
        <t>The complete policy applicable to a particular decision request 
           may be composed of a number of individual rules or policies.  
           For instance, in a personal privacy application, the owner of 
           the personal information may define certain aspects of 
           disclosure policy, whereas the enterprise that holds the 
           information may define certain other aspects.  
           In order to render an authorization decision, 
           it must be possible to combine the separate policies.</t>
        <t>Many of the ideas in XACML seem to derive from work by Sloman
           <xref target="ref.Sloman"/>.</t>
        <section title="Rules, policies and policy sets">
          <t>XACML uses three basic concepts for constructing policies:
            <list style="symbols">
              <t>Rule: a simple Boolean expression that can be evaluated
                 based on supplied information.  A rule is evaluated with
                 respect to some target set of resources, requesting
                 subjects and requested actions, and its evaluation as
                 Boolean true may result in a Permit or Deny result.
                 If the expression evaluates as false, then the output
                 from the rule is indeterminate (not specified).
                 Thus, the result of evaluating a single rule is:
                 Permit, Deny or Indeterminate.</t>
              <t>Policy: a set of rules, together with a specified procedure
                 for combining the results of their evaluation.
                 The result of evaluating a single policy is:
                 Permit, Deny or Indeterminate.</t>
              <t>Policy set: a set of policy and policy set elements,
                 together with a specified procedure for combining the 
                 results of their evaluation.
                 The result of evaluating a policy set is:
                 Permit, Deny or Indeterminate.</t>
            </list>
          </t>
          <t>If a target (i.e. resource, requesting subject and requested action dewtails) 
             is not specified as part of a rule, it is inherited from a policy that invokes
             the rule.</t>
        </section>
        <section title="Combining results">
          <t>The following methods are defined for combining the results
             of rule, policy and policy set evaluation:
            <list style="symbols">
              <t>deny-overrides,</t>
              <t>permit-overrides,</t>
              <t>first applicable, and</t>
              <t>only-one-applicable-policy.</t>
            </list></t>
        </section>
        <section title="Decision requests and XACML contexts">
          <t>XACML defines a common abstraction, or canonical form, for policy 
             decision requests, to which all requests for an authorization 
             decision can be mapped.  This is called an XACML context.</t>
        </section>
        <section title="Obligations">
          <t>In some cases, access to a resource may be associated with
             some obligations.  Enforcement of such obligations may depend
             on the network entity that enforces the access policy.
             XACML provides a framework for specifying any such obligations.
             </t>
        </section>

      </section>
      <section title="Syntax">
        <t>The access control language uses <xref target='W3C.xml'>XML</xref>, and
           is described using <xref target='W3C.REC-xmlschema-1'>XML schema</xref>.</t>
      </section>
      <section title="Relationship to trust management">
        <t>In relation to the message transfer framework described in
          section <xref target="Section-Interaction"/>,
          XACML appears to address areas of policy-based decision making
          concerned with access control (i.e. decisions to permit or
          deny access to perform some action on a resource).</t>
      </section>
      <section title="Related specifications">
        <t>
          <list style="symbols">
            <t><xref target="OASIS.sstc-core">SAML</xref> is
               a specification that can provide raw information upon 
               which XACML access decisions can be based, and be used 
               to represent the result of such decisions.</t>
            <t>A completely different, and possibly much simpler,
               approach to the rule evaluation problems addressed by
               XACML would be to use <xref target="W3C.rdf-syntax">RDF</xref>
               and RDF-rule and inference languages such as 
               <xref target="W3C.daml+oil-reference">DAML+OIL</xref>.</t>
          </list>
        </t>
      </section>
    </section>

    <section anchor="Format-WSS" title="Web Services Security (WSS)">
    <t><xref target="OASIS.wd-wss-core">WSS</xref>
       is an OASIS specification for 
       enhancements to the <xref target="W3C.soap12-part1">SOAP</xref> 
       messaging to provide quality of protection through message integrity, 
       message confidentiality, and single message authentication.</t>
    <t>The specification provides three main mechanisms:
       <list style="numbers">
         <t>ability to send security token as part of a message,</t>
         <t>message integrity, and</t>
         <t>message confidentiality.</t>
       </list>
       These mechanisms by themselves do not provide a complete security solution 
       for Web services.  Instead, they are a building block that can be used in 
       conjunction with other Web service extensions and higher-level 
       application-specific protocols to accommodate a wide variety of 
       security models and security technologies.
       </t>
    <t>The WSS specification contains a message security model, which notes
       that a "signature can be used to 'bind' or 'associate' the message
       with the claims in the security token (assuming the token is trusted)".
       Thus, it seems there is a clear interface indicated here between
       security mechanisms and trust.
       </t>
    <t>At the time of writing, the WSS specification is still a work-in-progress,
       so changes and additions are to be expected.</t>

      <section title="Content and concepts">
        <section title="Message security model">
          <t>WSS defines a message security model, that is described in terms of
             security tokens (claims), endorsement of claims (e.g. by digital signature)
             and verifiable proof of posession.  See section 3.1 of the specification.</t>
        </section>

        <section title="SOAP security header">
          <t>WSS defines a SOAP security header blocks, for attaching to a message 
             security related information targeted at a specific receiver.</t>
          <t>The core of <xref target="W3C.soap12-part1">SOAP</xref>
             is an envelope framework for XML messages.
             This framework assumes that a message is passed from a sender
             to an ultimate receiver by way of zero, onw or more intermediate 
             receivers.  All receivers are identified by URIs (which may be
             specific to a receiver, or indicative of a role performed), and
             a SOAP envelope may contain any number of header blocks targetted
             to any receiver so identified.</t>
          <t>A single message may have multiple security header blocks provided
             thay are targetted to different receivers.</t>
        </section>

        <section title="Global identifier attribute">
          <t>WSS defines a global identifier attribute as a preferred and
             simple way to identify specific XML content in a SOAP message.</t>
        </section>

        <section title="Security tokens">
          <t>WSS describes a number of specific security tokens that may appear
             in a security header block, corresponding to some common kinds
             of security claims:
            <list style="symbols">
              <t>Username and password.</t>
              <t>Binary tokens, such as X.509 certificates or Kerberos tickets.</t>
              <t>XML tokens, such as XML signatures (but not limited ti such).</t>
            </list>
          </t>
          <t>The WSS specification also discusses mechanisms for referencing 
             security tokens.</t>
        </section>

        <section title="Signing messages using XML Signature">
          <t>WSS defines a profile of 
             <xref target="W3C.xmldsig-core">XML signature</xref>
             for use when signing SOAP messages.</t>
          <t>This profile specifies a numbert of options that are left
             open by the XML signature specification:
            <list style="symbols">
              <t>XML exclusive canonicalization
                 <eref target="http://www.w3.org/2001/10/xml-exc-c14n#" />.</t>
              <t>XML decryption transformation
                 <eref target="http://www.w3.org/2001/04/decrypt#" />.</t>
              <t>How to include a signature within a security header block.</t>
              <t>How to validate a signature within a security header block.</t>
            </list>
          </t>
        </section>

        <section title="Encrypting messages using XML Encryption">
          <t>WSS defines a profile of 
             <xref target="W3C.xmlenc-core">XML Encryption</xref>
             for use when encrypting SOAP messages.</t>
        </section>

        <section title="Message timestamps">
          <t>WSS defines a a number of message elements to be used for
             attaching various kinds oif timestamp information to a message;
             e.g. expiration, creation, tracing.</t>
        </section>
      </section>

      <section title="Syntax">
        <t>WSS uses <xref target='W3C.xml'>XML</xref>, and
           is described in part using 
           <xref target='W3C.REC-xmlschema-1'>XML schema</xref>.</t>
        <t>It is for use in the context of 
           <xref target="W3C.soap12-part1">SOAP</xref> messages.</t>
      </section>

      <section title="Relationship to trust management">
        <t>In relation to the message transfer framework described in
          section <xref target="Section-Interaction"/>,
          WSS deals with a number of aspects of integrating mechanisms
          for authentication, privacy and authorization into an 
          application framework based on SOAP.  In particular, the
          message security model makes quite explicit a number of areas
          where message security mecahnisms must interface with
          trust assumptions or evaluations.</t>
      </section>

      <section title="Related specifications">
        <t>
          <list style="symbols">
            <t>The WSS specification is very much built upon
               <xref target="W3C.soap12-part1">SOAP</xref>,
               which is in turn build upon
               <xref target="W3C.xml">XML</xref> and
               <xref target="W3C.xml-names">XML namespaces</xref>.
               </t>
            <t>The WSS specification is intended to be used with
               <xref target="W3C.xmldsig-core">XML signature</xref>,
               <xref target="W3C.xmlenc-core">XML Encryption</xref>,
               and other security mechanisms.
               See their related specifications in this document for
               further information.</t>
            <t>Security tokens may come in a variety of forms, including:
               <xref target="CCITT.X509.1988">X.509 certificates</xref>,
               <xref target="OASIS.sstc-core">SAML assertions</xref>, 
               etc.</t>
            <t><xref target="W3C.xkms">XKMS</xref> may be a useful
              mechanism for verifying security assertions that are not
              completely self-verifying, such as signatures without 
              certificates.</t>
          </list>
        </t>
      </section>
    </section>

    <section anchor="Format-PICS" title="Platform for Internet Content Selection (PICS)">
    <t>PICS 
       <xref target="W3C.PICS-services"/>
       <xref target="W3C.PICS-labels"/>
       <xref target="W3C.PICS-rules"/>
       <xref target="W3C.DSig-label"/>
       is W3C specification for enabling Web users to select the kind
       of content they wish to receive.
       Web browser software can read service descriptions in order 
       to interpret content labels and assist end-users 
       in configuring software to select delivery of desired content.</t>
    <t>Labels are provided by a "rating service", 
       according to a "rating system".
       </t>
    <t>PICS cannot, of itself, guarantee that the content is in fact
       in accordance with the rating labels given.
       Labels assigned are entirely in the gift of a rating service,
       and reliability of the labels is a matter for a user's trust 
       in the competence and integrity of the rating service.</t>
    <t>The PICS specification contains 4 parts:
      <list style="numbers">
        <t>a definition of the PICS rating service and
           rating system description syntax
           <xref target='W3C.PICS-services'/>.</t>
        <t>a definition of the PICS rating labels, and mechanisms
           for distributing label values
           <xref target='W3C.PICS-labels'/>.</t>
        <t>a language for writing profiles, which are filtering rules 
           that allow or block access to URLs based on PICS labels that 
           describe those URLs
           <xref target='W3C.PICS-rules'/>.</t>
        <t>a method of adding extensions to PICS 1.1 labels for purposes 
           of signing them using XML digital signatures
           <xref target='W3C.DSig-label'/>.</t>
      </list></t>

      <section title="Content and concepts">
        <section title="Rating service">
          <t>A "rating service" is provided by an individual or group who
             examine the content of Internet resources and provide labels
             to indicate the nature of that content.</t>
          <t>PICS is content neutral, and does not define the rating labels:
             these are provided by a "rating system".</t>
        </section>
        <section title="Rating system">
          <t>A rating system specifies the dimensions used for labeling, 
             the range of allowable values on each dimension, 
             and a description of the criteria used in assigning values. 
             For example, the MPAA rates movies in the USA based on a 
             single dimension with allowable values G, PG, PG-13, R, and NC-17.
             </t>
          <t>Each rating system is identified by a valid URL. 
             This enables several services to use the same rating system 
             and refer to it by its identifier. The URL naming a rating 
             system can be accessed to obtain a human-readable description 
             of the rating system. The format of that description is not 
             specified.
             </t>
        </section>
        <section title="Content label">
          <t>A content label (or rating) contains information about a document.</t>
          <t>A content label (or rating) has three parts:
            <list style="symbols">
              <t>The URL naming the rating service that produced the label,
                 </t>
              <t>A set of attribute-value pairs, which provide information about 
                 the rating such as the date that the rating was assigned.
                 Some such labels are defined by the PICS specification.
                 </t>
              <t>A set of rating-system-defined attribute-value pairs, 
                 which actually rate the item along various dimensions 
                 (also called categories).
                 </t>
            </list></t>
        </section>
      </section>

      <section title="Syntax">
        <t>PICS uses a LISP-like textual syntax for service and rating system
           descriptions.
           A MIME content-type, application/pics-service, is defined for 
           labelling PICS service description content (which also contains
           rating system descriptions).
           </t>
        <t>PICS also uses a textual syntax for content labels, and a MIME
           content-type application/pics-labels to contain labels when
           distributed in isolation from the content they label.
           </t>
      </section>

      <section title="Relationship to trust management">
        <t>In relation to the message transfer framework described in
           section <xref target="Section-Interaction"/>,
           PICS is primarily concerned with "exposure control".
           PICS rules describe aspects of policy associated with
           exposure control.</t>
        <t>There are some ancillary trust interactions to be considered
           when using PICS:
             <list style="symbols">
               <t>Does the party whose exposure to undesirable content
                  is being managed trust the rating service that provides
                  the content labels?  Answering this question is
                  necessarily a wider issue that cannot be resolved by 
                  PICS alone.</t>
               <t>Is the rating information provided truly what the
                  rating service applied to the corresponding content?
                  </t>
               <t>Is the content provided a copy of the content 
                  actually reviewed by the rating service?
                  </t>
             </list>
           the last two issues are addressed (subject to the user's ability 
           to verify a signature of the rating service) by the PICS signed 
           label extension <xref target='W3C.DSig-label'/>.
           </t>
      </section>
      <section title="Related specifications">
        <t>
          <list style="symbols">
            <t>PICS was an early foray into the area of defining
               metadata for Web resources.  The metadata ideas were 
               later picked up and generalized by the RDF effort
               <xref target="W3C.rdf-syntax"/>
               <xref target="W3C.rdf-schema"/>.
               However, PICS does more than just define a metadata
               format, and even when using RDF to describe such
               information, the application design lessons from PICS
               have a part to play.
               </t>
            <t>The PICS signed label specification is closely allied
               to, and depends upom, the XML digital signature specification
               <xref target="W3C.xmldsig-core"/>.
               </t>
            <t>The selection rules element of PICS seems to address
               some of the goals that later appear in
               XACML <xref target="OASIS.xacml-specification-1-0"/>.
               The PICSRules are, however, very much easier to understand,
               though they probably don't have the ultimate flexibility
               of XACML.</t>
          </list>
        </t>
      </section>

    </section>

    <section anchor="Format-P3P" 
             title="Platform for Privacy Preferences (P3P)">
    <t><xref target="W3C.P3P">P3P</xref>
       is a W3C specification that enables Web sites to express their 
       privacy practices in a standard format that can be retrieved 
       automatically and interpreted easily by user agents. 
       P3P-enabled user agents will allow users to be informed of 
       site practices and automation of decisions to release private
       information based on these practices when appropriate. 
       Thus users need not read the privacy policies at every site 
       they visit.</t>
    <t></t>

      <section title="Content and concepts">
        <t>In order to deliver personalized or adapted content,
           web sites sometimes require that browsers provide
           information about the user.
           Some of this information may considered to be
           sensitive personal information that the user does not
           wish to be widely disseminated, or used for targetting
           of information and/or services.</t>
        <t>Different web publishing organizations have different
           policies with respect to personal information:  a user 
           may be prepared to release personal information to
           some but not others.</t>
        <t>P3P version 1.0 is a protocol designed to inform Web 
           users of the data-collection practices of Web sites. 
           It provides a way for a Web site to encode its 
           data-collection and data-use practices in a 
           machine-readable XML format known as a P3P policy. 
           </t>
        <t>The P3P specification defines:
           <list style='symbols'>
             <t>A standard schema for data a Web site may wish to collect, 
                known as the "P3P base data schema".
                </t>
             <t>A standard set of uses, recipients, data categories, 
                and other privacy disclosures
                </t>
             <t>An XML format for expressing a privacy policy
                </t>
             <t>A means of associating privacy policies with 
                Web pages or sites, and cookies.
                </t>
             <t>A mechanism for transporting P3P policies over HTTP.
                </t>
           </list>
        </t>
        <section title="Policy reference file">
          <t>A policy reference file links one or more policy 
             statements with different parts of a web site,
             indicating the relevant data collection and use 
             policies for the different areas.
             It also contains information about the durability 
             of the policy references, so that a user agent 
             can make sensible policy caching arrangements.
             (Note that individual policy files also carry 
             their own expiry information.)</t>
          <t>The policy reference file is a starting point from
             which all P3P policy information for a site can
             be traced.</t>
        </section>
        <section title="Policy file">
          <t>A policy file defines actual data collection and usage
             policies for any URIs with which it is associated.</t>
          <t>It may encode the following information:
            <list style="symbols">
              <t>Reference to human-readable version of data collection and
                 usage policy.
                 </t>
              <t>A precise description of the legal entity making the 
                 representation of the privacy practices.
                 </t>
              <t>Means for access, if any, to identified collected data.</t>
              <t>Description of or reference to dispute resolution procedures 
                 that may be followed for disputes about a services' privacy 
                 practices.
                 </t>
              <t>Possible remedies in case a policy breach occurs.</t>
              <t>Identification of information that may be collected
                 related to use of the site.
                 </t>
              <t>Purposes of data collection, or uses of the collected data.
                 </t>
              <t>Recipients to whom the collected data may be disclosed.
                 </t>
              <t>Retention policy for collected data.
                 </t>
            </list></t>
        </section>
        <section title="Statements and data groups">
          <t>In addition to some general information, a P3P policy contains 
             one or more statements, each of which describes data practices 
             that are applied to particular types of data.</t>
          <t>A "data group" element identifies the kinds of data to which
             the data practices apply, and contains a number of "data"
             elements.
             </t>
          <t>A "data" element identifies some simple or composite item of
             data that may be collected.
             The data is identified by a URI reference that has the form 
             'URI#name', (which may be constructed from a separately 
             specified base URI and relative URI reference):
             <list style="symbols">
               <t>The 'URI' part is considered to identify a data schema, 
                  which defines a hierarchically arranged set of data items.
                  </t>
               <t>The '#fragment' is considered to identitify an item in 
                  the data schema, and uses dots ('.') to separate names
                  of elements in the hierarchy.  A data item with a name
                  of the form '#xxx' is presumed in include all data 
                  items with names of the form '#xxx.yyy'.
                  </t>
             An unfortunate consequence of this design is that data items
             cannot be identified by arbitrary URIs.
             </list>
          </t>
        </section>
        <section title="Base data schema">
          <t>P3P defines a base data schema, which is the default data
             schema used if no other data schema URI is indicated by a
             data group of data element.</t>
          <t>All P3P-compliant user agent implementations are requred to
             be aware of and understand the data elements in the P3P 
             base data schema.  This provides a basic guarantee of 
             interoperability for P3P systems.
             </t>
          <t>The base data scheme employs some basic data structures
             (i.e. common hierarchical arrangements of values, such as
             a date consisting of day, month and year).
             It is recommended that these basic data types are reused
             where possible by other data schemas.</t>
        </section>
      </section>

      <section title="Syntax">
        <t>The P3P policy reference and policy files use
           <xref target='W3C.xml'>XML</xref>, 
           and their syntax is normatively defined using 
           <xref target='W3C.REC-xmlschema-1'>XML schema</xref>.</t>
      </section>

      <section title="Relationship to trust management">
        <t>In relation to the message transfer framework described in
           section <xref target="Section-Interaction"/>, P3P is
           concerned with privacy, through mechanisms of policy
           description, negotiation and trust.
           </t>
        <t>Note that, in the final analysis, a user must trust a web
           site controller to behave according to its indicated policy
           and use information only in the ways indicated.  If data
           is retained for extended periods of time, the user must
           also trust that future management of the organization
           will continue to apply the agreed policies.
           </t>
        <t>There has been some legal activity associated with
           P3P.  It is not currently clear to what extent a 
           declared P3P policy can be considered to be legally
           binding on a web site controller.</t>
        <t>[[[This is a question to ask of the iTrust WG.]]]</t>
      </section>

      <section title="Related specifications">
        <t>
          <list style="symbols">
            <t>P3P semantics are a natural candidate for expression
               in RDF <xref target="W3C.rdf-syntax"/>
               <xref target="W3C.rdf-schema"/>.
               Indeed, some work has been done to define an RDF schema for P3P
               <xref target="W3C.P3P-rdfschema"/>.
               </t>
            <t>P3P has a natural counterpart in 
               <xref target="W3C.CCPP-struct-vocab">CC/PP</xref>.
               CC/PP defines an RDF-based format for providing client
               capabilities and user preferences to a data provider.
               A P3P policy would naturally be used in determining what
               information to release in a CC/PP profile.
               Unfortunately, CC/PP uses arbitrary URIs to identify
               attributes in a profile, where P3P uses a restricted form,
               so it's not necessarily trivially easy for a P3P profile
               to describe its policy with respect to CC/PP attribute
               data.
               </t>
            <t>
               It is possible to consider using a framework like PICS
               <xref target="W3C.PICS-services"/>
               <xref target="W3C.PICS-labels"/>
               to rate the reliability of a web site's privacy
               profile, which can be treated as web content like any
               other.  This could be an important step to establishing
               a required degree of trust in a web site's behaviour
               with respect to private information.
               </t>
          </list>
        </t>
      </section>

    </section>

    <section anchor="Format-CCPP" 
             title="Composite Capabilities/Preference Profile (CC/PP)">
    <t><xref target="W3C.CCPP-struct-vocab">CC/PP</xref>
       is a W3C specification for describing user agent capabilities 
       and user preferences so that content may be suitably selected or
       adapted.</t>
    <t>CC/PP is an application of RDF
       <xref target="W3C.rdf-syntax"/><xref target="W3C.rdf-schema"/>,
       which uses the RDF framework to convey assertions about the
       client capabilities and user preferences.
       </t>
    <t>A CC/PP profile is delivered to a data provider which uses the
       information thus provided to select or construct a data
       format most suited to the indicated capabilities and 
       preferences.</t>

      <section title="Content and concepts">
        <t>A CC/PP profile is organized as a 2-level
           hierarchy, with the first level being components, 
           corresponding to broad areas of user agent functionality,
           and the second level being attributes, curresponding
           to detailed capabilities or preferences related to
           the containing component.
           </t>
        <t>The 2-level hierarchy is somewhat arbitrary, but seems to
           be a reasonably good fit for many practical requirements.</t>
        <section title="Components">
          <t>A component corresponds to a major area of user agent 
             functionality, such as:
             <list style="symbols">
               <t>Hardware platform</t>
               <t>Software platform</t>
               <t>Browser user interface</t>
               <t>Network characteristics</t>
               <t>etc.</t>
             </list>
             (This part of the design comes straight from UAPROF
             <xref target="ref.WAP.UAProf">UAProf</xref>.)
          </t>
          <t>Each type of component is associated with an RDF class.
             An RDF schema <xref target="W3C.rdf-schema"/> can be used 
             to describe the properties that are used with a given 
             CC/PP component type.
             </t>
        </section>
        <section title="Attributes">
          <t>CC/PP attributes describe specific user agent features
             associated with a CC/PP component.  They are represented
             as RDF properties, and each attribute is therefore 
             identified by a URI <xref target="RFC2396"/>.</t>
        </section>
        <section title="Defaults">
          <t>Default descriptions for particular kinds of devices
             can be constructed as separate documents and referenced
             (using a URI) by a CC/PP profile.  In this way, many features
             which are common to a range of such devices can be stored separately
             at a generally accessible location and do not need to be transferred 
             with every client request for data.  A client profile can explicitly 
             specify any attributes which are different from a default
             profile thus referenced.
             </t>
          <t>This is particularly important for mobile devices, 
             where bandwidth available to the client may be very limited.</t>
          <t>It also provides a very simple basis for creating distributed 
             profile definitions in some limited ways.
             There has been some consideration of more complex mechanisms 
             for combining separately defined elements into a profile, but
             these are not part of the current CC/PP work.</t>
        </section>
        <section title="Proxy chaining">
          <t>An optional feature of CC/PP is support for proxies in a request
             chain that may have the effect of modifying the range of
             data that a data provider may send.
             </t>
          <t>The introduction of proxies introduces some additional trust
             considerations, and the design of CC/PP allows that the source
             of profile information can be preserved so that appropriate trust 
             related decisions can be made by the data provider.
             </t>
        </section>
      </section>

      <section title="Syntax">
        <t>CC/PP is an application of RDF, and uses the RDF/XML syntax
           <xref target="W3C.rdf-syntax"/>.
           </t>
      </section>

      <section title="Relationship to trust management">
        <t>In relation to the message transfer framework described in
           section <xref target="Section-Interaction"/>,
           CC/PP deals primarily with achieving dependability, by
           transferring information that improves the chances of
           delivering usable information.</t>
        <t>CC/PP in turn depends on a degree of trust that sensitive
           personal information supplied in a profile will not be
           mis-used, and that the information will be used to
           improve the usability of data supplied rather than
           to degrade it.</t>
        <t>When proxies are involved, it is necessary that they 
           be trusted to convey the profile faithfully, and also
           to faithfully convey the selected data, applying 
           transformations only if those are expected and/or
           authorized by the receiving client.
           </t>
      </section>

      <section title="Related specifications">
        <t>
          <list style="symbols">
            <t>CC/PP has it's origins in
               <xref target="ref.WAP.UAProf">UAProf</xref>,
               a specification of the  WAP forum.
               It has also been influenced by the IETF CONNEG work
               <xref target="RFC2703"/><xref target="RFC2533"/>.</t>
            <t>The most obvious related specification does not yet exist,
               namely one to describe source data characteristics in a way
               that can be matched with a CC/PP profile.  There has been
               some mention that XHTML modules might have a part to play
               in this respect, but I am unaware of any generic effort to 
               match these with CC/PP profiles.</t>
            <t>CC/PP has a natural affinity with P3P, which is discussed
               in section <xref target="Format-P3P"/> above.</t>
            <t>Some work on content negotiation was performed by the IETF CONNEG
               working group
               <xref target="RFC2703"/>
               <xref target="RFC2533"/>.
               Although this work does not use RDF, it is in many ways closer
               to the spirit of RDF, combining assertions about various
               network resourcesto reach conclusions, than CC/PP which takes
               a very partial view of the overall content negotiation and
               content adaptation problem.
               </t>
          </list>
        </t>
      </section>

    </section>

    <!-- Security considerations -->
    <section anchor="SecurityCons" title="Security considerations">
      <t>I adopt the following working definition of "trust":
         <list style="empty">
           <t>The firm expectation that an entity will behave dependably and 
              securely within a specified context.</t>
         </list>
      </t>
      <t>The whole idea of trust management is intimately bound with security.
         Most security technologies convey trust in some way, though these
         alone cannot establish or create trust.</t>
      <t>Much of the standards work conducted to date has focused on security
         mechanisms, and have left the establishment of trust as a "problem for
         the reader".  The difficulty of establishing and describing trust
         underpins the failure to achieve meaningful large-scale deployment
         of a public key infrastructure:  by simply focusing on the technology
         to transfer trusted assertions, much needed parts of the larger picture
         have been left unaddressed.</t>
      <t>In focusing on the establishment of trust, I believe it is important
         that we do not forget that the mechanisms for conveying trust decisions
         must be reliable:  the work that has gone into secure systems design,
         and the resulting designs and standards, are highly relevant to any
         work in trust management.</t>
    </section>

    <!-- Conclusions -->

    <section title="Conclusions">
      <t>There are many specifications that address some aspects or other
         of Internet security, and which all relate to trust in some way.
         Some depend on trust for their effectiveness, some can be used to
         convey trusted information from one place to another, or automate
         trust-related decisions from supplied data according to specified
         policies.
         </t>
      <t>In this, trust is a means to an end, rather than an end in itself.
         Trust is an attitude, as distinct from some piece of conclusive
         evidence, that allows a user to permit some action to be taken
         on their behalf.</t>
      <t>The specifications that have been surveyed here work together to
         a greater or lesser extent.  In the areas most closely related to
         trust, it seems lesser rather than greater.</t>
      <t>Many of the specifications most closely related to trust 
         concerns are based on XML (P3P, SAML, XACML, etc.)
         Unfortunately, while XML provides a common syntactic framework
         it doesn't guarantee that the information conforming to the different
         specifications is easily combined.  In some cases, the specifications
         use common elements which improve interworking between them.
         </t>
      <t>One of the hopes for RDF, which the SWAD Europe project
         seems well set to explore, 
         is that it may be used as a medium for 
         integrating the various trust-related data, 
         exploiting the network effect of information availability 
         and accessibility,
         combining it in ways that can lead to better trust
         assessments, hence improved security and dependability for
         a range of transactions conducted via the Internet.
         The goal here is not necessarily to use RDF in place of the various
         security specifications, but to use it as a "meeting place" where
         information from different specifications can be combined.  This
         seems to be an important facility for assessing and building a
         reasonable basis for trust.  The consistent use of URIs 
         <xref target="RFC2396"/> to identify important concepts goes a 
         long way to facilitating such use.</t>
         
       <t>Looking forward, we aim to develop ontologies, RDF vocabularies 
         and rules for making trust assessments based on existing
         security standards and other available information, and use these to
         demonstrate ways to improve security and dependability in open networked 
         systems.</t>
        
    </section>

    <!-- Acknowledgements -->

    <section title="Acknowledgements">
      <t>Some small sections the text used to describe the various protocols
         and data formats have been copied verbatim or nearly verbatim from 
         the corresponding specifications cited.</t>
      <t>This document has been authored in XML using the format described
         in RFC 2629 <xref target='RFC2629'/>, and converted to HTML using
         the XML2RFC utility developed by Marshall Rose
         (<eref target='http://xml.resource.org/'/>).
         </t>
    </section>


  </middle>
  <!-- End of main document -->

  <!-- Appendices -->
  <back>
    <references>
      <?rfc include="reference.RFC.1510.xml"?>
      <?rfc include="reference.RFC.2045.xml"?>
      <?rfc include="reference.RFC.2046.xml"?>
      <?rfc include="reference.RFC.2246.xml"?>
      <?rfc include="reference.RFC.2396.xml"?>
      <?rfc include="reference.RFC.2440.xml"?>
      <?rfc include="reference.RFC.2533.xml"?>
      <?rfc include="reference.RFC.2616.xml"?>
      <?rfc include="reference.RFC.2629.xml"?>
      <?rfc include="reference.RFC.2633.xml"?>
      <?rfc include="reference.RFC.2703.xml"?>
      <?rfc include="reference.RFC.3156.xml"?>
      <?rfc include="reference.RFC.3275.xml"?>
      <?rfc include="reference.RFC.3280.xml"?>
      <?rfc include="reference.W3C.xml.xml"?>
      <?rfc include="reference.W3C.REC-xmlschema-1.xml"?>
      <?rfc include="reference.W3C.REC-xmlschema-2.xml"?>
      <?rfc include="reference.W3C.xml-names.xml"?>
      <?rfc include="reference.W3C.xml-c14n.xml"?>
      <?rfc include="reference.W3C.xpath.xml"?>
      <?rfc include="reference.W3C.xslt.xml"?>
      <?rfc include="reference.W3C.rdf-syntax.xml"?>
      <?rfc include="reference.W3C.rdf-schema.xml"?>
      <?rfc include="reference.W3C.xmldsig-core.xml"?>
      <?rfc include="reference.W3C.xmlenc-core.xml"?>
      <?rfc include="reference.W3C.xkms.xml"?>
      <?rfc include="reference.W3C.PICS-services.xml"?>
      <?rfc include="reference.W3C.PICS-labels.xml"?>
      <?rfc include="reference.W3C.PICS-rules.xml"?>
      <?rfc include="reference.W3C.DSig-label.xml"?>
      <?rfc include="reference.W3C.P3P.xml"?>
      <?rfc include="reference.W3C.P3P-rdfschema.xml"?>
      <?rfc include="reference.W3C.CCPP-struct-vocab.xml"?>
      <?rfc include="reference.W3C.soap12-part1.xml"?>
      <?rfc include="reference.W3C.soap12-part2.xml"?>
      <?rfc include="reference.W3C.daml-oil-reference.xml"?>
      <?rfc include="reference.OASIS.sstc-core.xml"?>
      <?rfc include="reference.OASIS.xacml-specification-1-0.xml"?>
      <?rfc include="reference.OASIS.wss-core.xml"?>
      <?rfc include="reference.CCITT.X208.1988.xml"?>  # ASN.1 (1988)
      <?rfc include="reference.CCITT.X209.1988.xml"?>  # ASN.1 BER (1988)
      <?rfc include="reference.CCITT.X509.1988.xml"?>  # X.509 (1988)
      <?rfc include="reference.CCITT.X680.1994.xml"?>  # ASN.1 (1994)
      <?rfc include="reference.CCITT.X680.2002.xml"?>  # ASN.1 (1994)
      <?rfc include="reference.CCITT.X690.1994.xml"?>  # ASN.1 BER, CER, DER (1994)
      <?rfc include="reference.CCITT.X690.2002.xml"?>  # ASN.1 BER, CER, DER (2002)
      <reference anchor="ref.Schneier">
        <front>
          <title>Applied Crypography</title>
          <author initials="B." surname="Schneier" fullname="Bruce Schneier">
            <organization></organization>
          </author>
          <date month='' year="1996"/>
        </front>
        <seriesInfo name="John Wiley and Sons" value="ISBN 0-471-11709-9"/>
      </reference>
      <reference anchor="ref.Sloman">
        <front>
          <title>Policy Driven Management for Distributed Systems</title>
          <author initials="M." surname="Sloman" fullname="M. Sloman">
            <organization></organization>
          </author>
          <date month="" year="1994"/>
        </front>
        <seriesInfo name="Journal of Network and Systems Management, Plenum Press" value="Volume 2, part 4"/>
      </reference>
      <reference anchor="ref.WAP.UAProf" target="http://www1.wapforum.org/tech/terms.asp?doc=SPEC-UAProf-19991110.pdf">
        <front>
          <title>UAPROF User Agent Profile Specification</title>
          <author>
            <organization>Wireless Application Group</organization>
          </author>
          <date month="November" year="1999"/>
        </front>
        <seriesInfo name="WAG" value="WAP-174"/>
      </reference>
<!--
      <reference anchor="refxxxx" target="xxxx">
        <front>
          <title>xxxx</title>
          <author initials="A." surname="BBBB" fullname="CCCC">
            <organization>DDDD</organization>
          </author>
          <date month="mmmm" year="yyyy"/>
        </front>
        <seriesInfo name="seriesname" value="seriesdocid"/>
      </reference>
-->
    </references>

    <section title="Revision history">

    <t>
    <list style="hanging">
      <t hangText="2002-09-24:">
      <list style="symbols">
	<t>Document initially created.
	  </t>
      </list>
      </t>

      <t hangText="2002-10-02:">
      <list style="symbols">
	<t>Added section describing framework for interaction between
	   autonomous communicating components.
	  </t>
	<t>Updated references.
	  </t>
	<t>Revised abstract and introduction.
	  </t>
	<t>Editorial revisions.
	  </t>
	<t>Added additional placeholder sections and references.
	  </t>
      </list>
      </t>

      <t hangText="2002-10-14:">
      <list style="symbols">
	<t>Added sections describing OpenPGP and XML signature.
	  </t>
	<t>Added placeholder section for XKMS.
	  </t>
	<t>Added several references to W3C supporting specifications.
	  </t>
      </list>
      </t>

      <t hangText="2002-10-16:">
      <list style="symbols">
	<t>Added sections describing XML encryption and XKMS.
	  </t>
	<t>Added placeholder section for Kerberos.
	  </t>
      </list>
      </t>

      <t hangText="2002-10-23:">
      <list style="symbols">
	<t>Added sections describing Kerberos, SAML and XACML.
	  </t>
	<t>Refined some text in the section on XKMS.
	  </t>
	<t>Added several references to ITU supporting specifications.
	  </t>
      </list>
      </t>

      <t hangText="2002-10-24:">
      <list style="symbols">
	<t>Added sections describing PICS, P3P and CC/PP.
	  </t>
	<t>Added more references to W3C specifications.
	  </t>
      </list>
      </t>

      <t hangText="2002-11-08:">
      <list style="symbols">
	<t>Editorial pass over entire document:  various improvements to text.
	  </t>
	<t>Added forward-looking note to conclusions.
	  </t>
	<t>Added to-do list of desired improvements.
	  </t>
      </list>
      </t>

      <t hangText="2002-12-02:">
      <list style="symbols">
	<t>Fixed up diagrams in sections 2.1, 2.2.
	   Uses later version of RFX2XML to include them inline.
           </t>
        <t>Improve description of XACML, based on a better
           understanding of its underlying copncepts.
           </t>
	<t>Added description of OASIS Web Services Security (WSS) specification.
           </t>
      </list>
      </t>

      <t hangText="2002-12-18:">
         <list style="symbols">
           <t>Added CCLRC copyright notice.
              </t>
           </list>
         </t>

    </list>
    </t>
    </section>

    <section title="Unresolved issues">
        <list style="symbols">
        <t>Update RDF references when RDF core working group is done.
           </t>
        <t>Check out use of X.509 with OpenPGP.
           </t>
        <t>P3P policy legal enforcability -- ask iTrust group members?
           </t>
        </list>
    </section>

  </back>
</rfc>
