Trust Bundle Distribution

advertisement
Implementation Guide for Direct Project Trust Bundle Distribution
Version 0.5
Implementation Guide for Trust Bundle Packaging and Distribution
1
Change Control
Date
10-Dec-2012
Version
Description of changes
0.5
Initial Document Creation
Implementation Guide for Trust Bundle Packaging and Distribution
2
Introduction
Overview
One the most important aspects of Directed exchange is the establishment of “trust” between sending
and receiving parties. The definition of trust for Direct in a pure technical sense is the mutual
exchange and inclusion of one STA’s set of trust anchor(s) into another STA’s trust store and vice
versa. From a policy perspective, the definition of trust is broader and may imply different semantics
based on organizations policies, processes and perspective. Regardless a universal definition of trust
includes the mutual agreement of two STAs to exchange Direct messages with one another based on
a set of policies. These policies are asserted by the inclusion of each other’s trust anchors into their
respective trust stores.
Establishing trust between STAs has shown to be a potential barrier in universal adoption of Direct,
particularly the ability to establish trust on a large scale. One solution has been to create “Trust
Communities” where each community adopts a set of policies by which its member STA must attest
to for compliance. Upon attesting to compliance, the member STA is considered to be in good
standing with the community and can participate in Direct exchange with all other member of the
community. To facilitate the exchange of trust anchors between members of the community, each
member may submit its trust anchors to be included in a “Trust Bundle” that is managed by the
community.
Trust bundles are simply a collection of trust anchors that meet a common set of minimum policy
requirements within a Trust Community. Relying parties may include the bundles into their STA
implementations with confidence that each trust anchor adheres to the policies set by the Trust
Community managing the bundle.
This document provides guidance on the packaging and distribution of Trust Bundles to facilitate
scalable trust between STAs.
Scope
This guide focuses specifically on bundle packaging and distribution; requirements and policies for
the management of and inclusion of anchors into a trust bundle are left to the trust communities.
Additionally, requirements for importing bundles into an STA and STA configuration are left to the
STA implementers.
Assumptions
The decision to include a Trust Bundle into an STA is non-systemic meaning there is a clear
conscientious decision by a policy administrator to include the bundle. The actual process and
workflow of identifying and including the bundle is left to the STA implementation, but should
consist of steps that require user intervention. Once a bundle distribution point has been identified
and configured, it is desirable that including bundle updates into the STA be systemic.
Definitions and Context:
The following diagram describes the top level actors and definitions required to outline the specific
requirements.
Implementation Guide for Trust Bundle Packaging and Distribution
3
Trust Community: Trust Communities are formed by organizations electing to follow a common set
of policies and processes related to health information exchange. Examples of these policies are
identity proofing policies, certificate management policies, HIPAA compliance processes etc.
Trust Community Profile: A Trust Community can create multiple sets of policies and processes and
enforce these sets of policies on selected organizations who want to conform. For e.g A Trust
Community can create a set of policies and processes which organizations have to conform to for
regular treatment related use cases, a different set of policies and processes that organizations have
to conform to for Behavioral Health related use cases and so on. These sets of policies and processes
are called as Trust Community Profiles. The word “Profile” indicates a set of policies and processes.
Trust Bundle: Trust Bundle is a collection of Direct Trust Anchors within a Trust Community that
conform to a Trust Community Profile. Trust Anchor’s of member organizations who have elected to
conform to a Trust Community Profile are included in the Trust Bundle for that particular Trust
Community Profile.
Requirements
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD
NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as
described in RFC2119.
An implementation is not compliant if it fails to satisfy one or more of the MUST, SHALL, or
REQUIRED level requirements for the protocols it implements. An implementation that satisfies all
Implementation Guide for Trust Bundle Packaging and Distribution
4
the MUST, SHALL, or REQUIRED level and all the SHOULD level requirements for its protocols is said
to be "unconditionally compliant"; one that satisfies all the MUST, SHALL, or REQUIRED level
requirements but not all the SHOULD level requirements for its protocols is said to be "conditionally
compliant."
The requirements outlined in this implementation guide are specifically for the Trust Bundle
Publisher and Trust Bundle Requestor.
1 Trust Bundle Packaging


Trust Bundle publishers MUST package the Trust Anchors within it’s Trust Community as a
PKCS7 container per RFC 5652 using one of the following two formats
o Signed Data as described in Section 5 of RFC 5652
o Unsigned Data as described in Section 4 of RFC 5652
Trust Bundle publishers MUST package the Trust Bundle with one of the following
extensions
o .p7b for unsigned data
o .p7a for signed data
1.1 PKCS7
The PKCS7 package is a simple CMS structured container that contains a set of trust anchors. The
container is not signed meaning that the authenticity of the container and its contents cannot be
directly verified.
Data is represented in the PKCS7 container as follows:
 PKCS7 Container
o Content type (This will be equal to the data content type from section 4 of RC5652)
o List of Trust Anchors as byte streams
A separate metadata file may optionally be available at the same base location as the PKCS7. The
associated metadata file will be a text file containing simple name/value pairs – see Section 1.3. The
text will typically be formatted as XML. The name of the metadata file will be set to a concatenation of
the SHA1 hash of the PKCS7 file detailed above + “.txt” e.g.
“f2a01e0007756d1ad53938a54975549bd52a809a.txt”
1.2 PKCS7 Signed Message
A PKCS7 signed message is a CMS structure containing either enveloped (encrypted), signed, or
enveloped and signed data. For the purposed of bundle packaging, the CMS structure consists signed
data only. The signed data in the structure is a PKCS7 container described in section 1.1, and
signature is non-detached.
The advantage of a PKCS signed message is that authenticity and integrity of the bundle can be
validated by a relying party.
Data is represented in the PKCS7 container as follows:
 PKCS7 Container
o Content type (This will be equal to the signed-data content type from section 5 of
RC5652)
o SignedData – Structure conforming to RFC 5652 described in section 5.1. The MIME
message format will depend on whether the optional metadata is included.
Implementation Guide for Trust Bundle Packaging and Distribution
5
o
o
When no metadata is present, the MIME message consists of a single file attachment
that contains:
 A PKCS7 package of trust anchors per the definition in Section 1.1. above
 Signature Information for the MIME message including the signing
certificate
When metadata is present, the MIME message is a multi-part MIME message
consisting of 2 file attachments and contains:
 A PKCS7 package of trust anchors per the definition in Section 1.1. above
 The corresponding metadata file
 Signature Information for the multi-part MIME message including the
signing certificate
1.2.1 Cryptographic Algorithms



PKCS7 Signed Message MUST support the following digest algorithms:
o SHA1
o SHA256
Signatures MUST NOT support less secure digest algorithms such as MD5
Signatures MAY support more secure digest algorithms as listed as SHOULD in RFC5752
section 2.1, but publishers should be aware that bundle consumers may not support more
secure algorithms.
1.3 Metadata





Trust Bundles MAY include addition of metadata about the bundle as key-value pairs. The
full definition of allowable key value pairs will be defined at a later time.
Metadata should be included in the bundle as a text file
The text file will be formatted as XML data
The name of the metadata file will be set to a concatenation of the SHA1 hash of the PKCS7
file detailed in Section 1.1 above + “.txt” e.g.
“f2a01e0007756d1ad53938a54975549bd52a809a.txt”
An example of the contents of a metadata file are as follows:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- MetaData File For LoA 3 TrustBundle -->
<TrustBundle>
<Profile>DirectTrust LoA-3</Profile>
<Anchors>
<Anchor>
<X509IssuerSerial>
<X509IssuerName>CN=Direct L3 CA, OU=Issued By DigiCert,
O=HISP Name, L=Town, ST=UT, C=US</X509IssuerName>
<X509SerialNumber>12345678</X509SerialNumber>
</X509IssuerSerial>
</Anchor>
<Anchor>
<X509SKI>31d97bd7</X509SKI>
</Anchor>
</Anchors>
<ValidFrom>1240596879</ValidFrom>
<ValidTo>1241596879</ValidTo>
<DistributionPoint>http://www.directtrust.org/trustbundle1.p7b</DistributionPoint>
</TrustBundle>
Implementation Guide for Trust Bundle Packaging and Distribution
6
The following definitions apply to the elements utilized in the above example:
 TrustBundle: defines the boundary of a single trust bundle
 Profile: set by the Trust Bundle Publisher, this describes the purpose or categorization of
the Trust Bundle
 Anchors: the set of trust anchors included in the bundle
 Anchor: details about a specific anchor included in the bundle
 X509IssuerSerial: compound element that identifies an included anchor via its Issuer
Distinguished Name and its Serial Number
 X509IssuerName: the name of the issuer of the anchor – same as the subject if the
anchor is self-signed
 X509SerialNumber: the certificate serial number of the included anchor
 X509SKI: the subjectKeyIdentifier of the included anchor
 ValidFrom: the time in seconds since 1970-01-01 (Unix epoch time) from which this
trust bundle is valid for
 ValidTo: the time in seconds since 1970-01-01 (Unix epoch time) to which this trust
bundle is valid. NOTE a Trust Bundle Publisher may signal when its next published
bundle may be available via this field.
 DistributionPoint: the location of the trust bundle to which this metadata applies
o
we need to specify the responsibilities of the Requester when encountering
metadata (i.e., does the Requester have to look for, process, and act on metadata it
encounters and understands, or are any or all of the steps conditionally required or
even optional).
2 Trust Bundle Distribution



Trust Bundle publishers MUST publish the packaged Trust Bundle using a unique, publicly
available URL (Trust Bundle URL) per RFC 1738.
o Trust Bundle publishers MUST support the HTTP GET request on the Trust Bundle
URL per RFC2616
o Trust Bundle publishers SHALL NOT require authentication of the Trust Bundle
Requestors to provide access to the Trust Bundle.
Trust Bundle publishers MUST support transport integrity of the bundle during distribution
using one of the following two approaches:
o Secure transport protocol per RFC2246 TLS 1.0 specification.
o PKCS7 Signed Message over a secure or non secure transport protocol
Trust Bundle publishers MAY publish more than one Trust Bundle for a Trust Community. In
such cases each of the Trust Bundles MUST have their own unique Trust Bundle URL.
3 Trust Bundle Requestors


Trust Bundle requestors MUST support the retrieval and consumption of Trust Bundles
published via the following mechanisms
o Unsigned PKCS7 container (.p7b) file over a secure transport protocol
o PKCS7 Signed Message (.p7a) over a secure or non secure transport
Trust Bundle requestors MUST verify the signature of a PKCS Signed Message when used to
package a Trust Bundle. Signature verification includes:
o Verifying that the signing certificate is not expired, revoked, or invalid.
o Validating the message digest.
o Verifying that the signing certificate chains back to a known signing certificate.
Implementation Guide for Trust Bundle Packaging and Distribution
7
4 References
1.
2.
3.
4.
5.
6.
http://tools.ietf.org/html/rfc2119 - Keywords to use in RFC’s for Requirement Levels
http://tools.ietf.org/html/rfc2246 - TLS Protocol
http://tools.ietf.org/html/rfc1738 - Uniform Resource Locators
http://tools.ietf.org/html/rfc2616 - Hyper Text Transfer Protocol
http://tools.ietf.org/html/rfc5752 - Multiple Signatures in Cryptographic Message Syntax
https://tools.ietf.org/html/rfc5652 - Cryptographic Message Syntax
Implementation Guide for Trust Bundle Packaging and Distribution
8
Download