Internet Research Task Force S. Farrell Internet-Draft Trinity College Dublin Intended status: Experimental L. Johansson Expires: May 12, 2011 SUNET/NORDUnet November 8, 2010 Sign What I'm Given (SWIG) draft-farrell-pkng-swig-00 Abstract Current Internet protocols tend to be based on either X.509 based PKI, or Kerberos. Both have limitations and age-related issues. In this draft, we outline a possible approach to providing similar, and additional, functionality based on an abstract device that always signs whatever its given, and that may additionally annotate or modify its input in order to fulfill the security needs of other protocols. This draft describes a SWIG service and how it can be used to conduct research into a number of important problems in Internet trust and identity management today. Status of this Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on May 12, 2011. Copyright Notice Copyright (c) 2010 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents Farrell & Johansson Expires May 12, 2011 [Page 1] Internet-Draft PKNG SWIG November 2010 carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. SWIG Service Overview . . . . . . . . . . . . . . . . . . . . . 3 3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.1. X.509-like Infrastructure . . . . . . . . . . . . . . . . . 4 3.2. Application Layer Signing . . . . . . . . . . . . . . . . . 5 3.3. Privacy Enhancing SWIGs . . . . . . . . . . . . . . . . . . 5 3.4. SAML Metadata Publisher . . . . . . . . . . . . . . . . . . 5 4. SWIG Protocol . . . . . . . . . . . . . . . . . . . . . . . . . 5 4.1. REST . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 4.1.1. SWIG HTTP Headers . . . . . . . . . . . . . . . . . . . 6 5. SWIG Standard Transformations . . . . . . . . . . . . . . . . . 6 5.1. Capabilities . . . . . . . . . . . . . . . . . . . . . . . 6 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 6 7. Security Considerations . . . . . . . . . . . . . . . . . . . . 6 8. Normative References . . . . . . . . . . . . . . . . . . . . . 6 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 7 Farrell & Johansson Expires May 12, 2011 [Page 2] Internet-Draft PKNG SWIG November 2010 1. Introduction The Internet of today is a low-trust environment. The IRTF has identified a need to support research in this area. This draft attempts to describe a new protocol that is intended as a tool for experimentation and research in this field. While some current protocols (eg X.509 or kerberos) could be adopted to provide similar capabilities as SWIG, here we present a clean-slate approach to some of those problems. Current protocols and solutions in this space often focuses on the credentials used to perform basic functions (eg signing or encryptions). The operation of signing and returning a signed representation of an object is at the heart of many protocols. SWIG attemts to bring together experience from (arguably) successful security protocols while refocusing on the signing operation rather than on key and credentials formats. The authors hope that this will inspire research into a few problems that we believe are important to the future of the Internet: o How can we build a trust-model for the Internet that takes multiple overlapping rings-of-trust into account? o How can applications become involved with and informed about trust-related decisions made by lower layers? o Internet networking today is driven by the process managing peering relationships in combination with the applicationof local policy. Is there a way to build a trust infrastructure for the Internet that mimics this model? o How can privacy-protection be supported by default, rather than as an add-on to protocols? 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 RFC 2119 [RFC2119]. 2. SWIG Service Overview The reader will undoubtedly notice that the SWIG model is conceptually similar to a lot of protocols that have been proposed, implemented and even in some cases widely deployed. That is entierly reasonable and indeed is an important aspect of SWIG: it does not fundamentally break the model for signing that is assumed by applications, but attempts to enhance those models. Farrell & Johansson Expires May 12, 2011 [Page 3] Internet-Draft PKNG SWIG November 2010 Furthermore the authors hope that by providing a simple extensible architecture it will be easier in the future for sites and individuals to consolidate signing operations to use a smaller set of well-managed keys. In a way SWIG can be considered a very simple protocol-version of such ABIs as PKCS#11 or CSP. A SWIG is an abstract service endpoint that observes a set of simple semantics. An instance of a SWIG service MUST sign what it is given, so the basic mode of interaction is that a client sends some data, and receives in return a signed representation of that data signed by the SWIG instance private key. The response MAY include additional data or MAY include a transformed version (e.g. encrypted) of the request data. How a given instance handles this is specific to the instance however it is expected that implementations of SWIG allow for easy deployment of new transformations through some form of plugin architecture. It is important to understand that most common instances of SWIG will not sign a 1-1 representation of the input request. Instead a SWIG instance will probably sign a representation of the request, eg by resolving the request as an identifier referencing some internal datastore. Every SWIG instance MUST respond to certain specific requests, e.g. to provide its public key, or identifiers for the transformations it supports on input data. If a requestor wishes a SWIG service to apply a specific transform to its input data, then it identifies that transform in its request, using an identifier, that can be retrieved as described in the previous paragraph. Specific transforms and their identifiers SHOULD be defined in open specifications. 3. Use Cases This section explains how various use-cases can be suppored via SWIG. 3.1. X.509-like Infrastructure An X.509-like infrastructure could be built from a set of SWIG instances by having SWIG instances issue responses that are simlar to (or contain) public key certificates. Chains of certificate-like things can be built in the same manner, as can OCSP-like responders, and LDAP-like schemes for finding public keys. In ways, SWIG could resemble XKMS, in how it maps to X.509 based PKI. Farrell & Johansson Expires May 12, 2011 [Page 4] Internet-Draft PKNG SWIG November 2010 3.2. Application Layer Signing If a message source requires an application-layer signature that can be verified by a relying party, then it can send the application layer message to a SWIG instance, and the SWIG instance's signature can be directly used in the application layer protocol. 3.3. Privacy Enhancing SWIGs A SWIG instance could support a transform that enhances privacy, for example, if personally identifying input data is encrypted by the SWIG, using a key known only to the SWIG, and the relying party has to request that from the SWIG (if necessary, for application purposes). The SWIG instance could also provide the RP with a "fuzzed" version of the identiying information, for example, only identifying the country of the original requestor. 3.4. SAML Metadata Publisher A SAML Metadata aggregator/publisher can be described as a SWIG instance that accepts requests that contain as input a set of entityID strings and returns a signed element containing the corresponding set of metadata as known by the SWIG instance. 4. SWIG Protocol There may well turn out to be a need for multiple bindings of the SWIG protocol. This section describes a very simple RESTful HTTP- based approach: 4.1. REST A SWIG endpoint is identified by a URI. The URI may contain a public identifier representing the public key used in signing responses (eg a key hash). A SWIG endpoint is an HTTP server that understands the SWIG headers. A SWIG request is an HTTP request (POST or GET) that contains at least the SWIG-Version header and optionally the SWIG-Transform header. Each SWIG endpoint MUST support the set of standard transformations listed in the following section. A special case is the Capabilities transform: a SWIG endpoint MUST treat the absense of a SWIG-Transform header as if the SWIG-Transform contained only the 'capabilities' string. A SWIG response is an HTTP response that contains at least the SWIG- Farrell & Johansson Expires May 12, 2011 [Page 5] Internet-Draft PKNG SWIG November 2010 Version and optionally (if the 'capabilities' transform was invoked) the SWIG-Transform header. The response will also include a signed representation of the requested data which will be communicated in the HTTP response body. 4.1.1. SWIG HTTP Headers SWIG-Transform: each value of this multivalued header identifies a transform that is to be applied in order to produce the result that the SWIG instance will sign and return in the response. This header is also used to return the set of supported transforms for the 'capabilities' transform. TODO: figure out if we need mime-types and/or mime-type options for this. SWIG-Version: a version identifying the version of the SWIG protocol. This MUST be the literal string "1.0" for this version of the SWIG protocol. 5. SWIG Standard Transformations Transformations are identified using strings that are compared as case-insensitive UTF-8 strings. 5.1. Capabilities The 'cababilities' transform MUST cause the SWIG endpoint to return a response containing the signer public key (TBD: figure out how to determine which representation to return to the requestor) along with a list of supported transforms. 6. IANA Considerations This memo includes no request to IANA so far. But if it doesn't die, we'll want a port, maybe an SRV name and a registry for transform identifiers. 7. Security Considerations There will be a bunch, no doubt. 8. Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. Farrell & Johansson Expires May 12, 2011 [Page 6] Internet-Draft PKNG SWIG November 2010 Authors' Addresses Stephen Farrell Trinity College Dublin Trinity College Dublin, 2 Ireland Phone: +353-1-896-2354 Email: stephen.farrell@cs.tcd.ie Leif Johansson SUNET/NORDUnet Tulegatan 11 Stockholm, Sweden Phone: +46703419886 Fax: Email: leifj@sunet.se URI: Farrell & Johansson Expires May 12, 2011 [Page 7]