RFC 2807

XML Signature Requirements

πŸ“… published July 2000, from ietf

RFC 2807: XML Signature Requirements πŸ¦‹

okay bestie, the title block tea β˜• this is RFC 2807 by J. Reagle from W3C/MIT, it's Informational, and it's dated July 2000. there's no Obsoletes or Updates line, so it's not replacing or updating anything 🧁

Status of this Memo πŸ“œ

this memo just provides information for the Internet community. it does NOT specify an Internet standard of any kind, and distribution is unlimited ✨

Copyright (c) 2000 The Internet Society & W3C (MIT, INRIA, Keio), All Rights Reserved. πŸ’œ

Abstract 🌸

this doc lists the design principles, scope, and requirements for the XML Digital Signature specification. it covers requirements for the signature syntax, data model, format, cryptographic processing, and external requirements and coordination. the vibes are very organized πŸ’…

Table of Contents πŸ“š

   1. Introduction .............................................. 1
   2. Design Principles and Scope ............................... 2
   3. Requirements .............................................. 4
        3.1. Signature Data Model and Syntax .................... 4
        3.2. Format ............................................. 5
        3.3. Cryptography and Processing ........................ 5
        3.4 Coordination ........................................ 5
   4. Security Considerations ................................... 6
   5. References ................................................ 6
   6. Acknowledgements .......................................... 8
   7. Author's Address .......................................... 8
   8. Full Copyright Statement .................................. 9

1. Introduction ✨

okay so the XML 1.0 Recommendation [XML] describes the syntax of a class of data objects called XML documents. the mission of this working group is to develop an XML syntax for representing signatures on digital content, plus the procedures for computing and verifying those signatures. signatures will provide data integrity, authentication, and/or non-repudiability πŸ”

this document lists the design principles, scope, and requirements over three things: (1) the scope of work available to the WG, (2) the XML signature specification, and (3) applications that implement the specification. it covers requirements for the signature syntax, data model, format, cryptographic processing, and external requirements and coordination. the stuff that is REQUIRED is designated as "MUST", the stuff that is OPTIONAL is designated by "MAY", and the stuff that is OPTIONAL but RECOMMENDED is designated as "SHOULD" πŸŽ€

2. Design Principles and Scope πŸ’…

okay this section is the big picture, bestie 🌈

  1. the specification MUST describe how to sign digital content, and XML content in particular. the XML syntax used to represent a signature (over any content) is described as an XML Signature. [Charter]
  2. XML Signatures are generated from a hash over the canonical form of a signature manifest. (in this document we use the term manifest to mean a collection of references to the objects being signed. the specifications may use the terms manifest, package or other terms differently from this document while still meeting this requirement.) the manifest MUST support references to Web resources, the hash of the resource content (or its canonicalized form), and (optionally) the resource content type. [Brown, List(Solo)] Web resources are defined as any digital content that can be addressed using the syntax of XLink locator [XLink]).
  3. the meaning of a signature is simple: the XML Signature syntax associates the content of resources listed in a manifest with a key via a strong one-way transformation πŸ”‘
    1. the XML Signature syntax MUST be extensible such that it can support arbitrary application/trust semantics and assertion capabilities -- that can also be signed. [Charter(Requirement1&4), List(Bugbee, Solo)]
    2. the WG is not chartered to specify trust semantics, but syntax and processing rules necessary for communicating signature validity (authenticity, integrity and non-repudiation). [Charter(Requirement1)] at the Chairs' discretion and in order to test the extensibility of the syntax, the WG MAY produce non-critical-path proposals defining common semantics (e.g., manifest, package, timestamps, endorsement, etc.) relevant to signed assertions about Web resources in a schema definition [XML, RDF] or link type definition [XLink].

Comment: a more formal definition of a signed resource is below. the notation is "definition(inputs):constraints" where definition evaluates as true for the given inputs and specified constraints. it goes like this πŸ‘€

signed-resource(URI-of-resource, content, key, signature): (there
was some protocol message at a specific time such that "GET(URI-
of-resource) = content") AND (sign-doc(content, key, sig))
sign-doc(content, key, signature): signature is the value of a
strong one-way transformation over content and key that yields
content integrity/validity and/or key non-repudiability
  1. the specification MUST NOT specify methods of confidentiality, though the Working Group MAY report on the feasibility of such work in a future or rechartered activity. [List(Bugbee)] πŸ™ˆ
  2. the specification MUST only require the provision of key information essential to checking the validity of the cryptographic signature. for instance, identity and key recovery information might be of interest to particular applications, but they are not within the class of REQUIRED information defined in this specification. [List(Reagle)]
  3. the specification MUST define or reference at least one method of canonicalizing and hashing the signature syntax (i.e., the manifest and signature blocks). [Oslo] the specification MUST NOT specify methods of canonicalizing resource content [Charter], though it MAY specify security requirements over such methods. [Oslo] such content is normalized by specifying an appropriate content C14N (canonicalization) algorithm [DOMHASH, XML-C14N]. applications are expected to normalize application specific semantics prior to handing data to an XML Signature application, or specify the necessary transformations for this process within the signature. [Charter]
  4. XML Signature applications MUST be conformant with the specifications as follows:
    1. XML-namespaces [XML-namespaces] within its own signature syntax. applications MAY choose C14N algorithms which do or do not process namespaces within XML content. for instance, some C14N algorithms MAY opt to remove all namespace declarations, and others MAY rewrite namespace declarations to provide for context independent declarations within every element.
    2. XLink [Xlink] within its own signature syntax. for any resource identification beyond simple URIs (without fragment IDs) or fragmentIDs, applications MUST use XLink locators to reference signed resources. signature applications MUST NOT embed or expand XLink references in signed content, though applications MAY choose C14N algorithms which provide this feature.
    3. XML-Pointers [XPointer] within its own signature syntax. if applications reference/select parts of XML documents, they MUST use XML-Pointer within an XLink locator. [WS-list(1)]

the WG MAY specify security requirements that constrain the operation of these dependencies to ensure consistent and secure signature generation and operation. [Oslo] πŸ”₯

  1. XML Signatures MUST be developed as part of the broader Web design philosophy of decentralization, URIs, Web data, modularity/layering/extensibility, and assertions as statements about statements. [Berners-Lee, WebData] in this context, existing cryptographic provider (and infrastructure) primitives SHOULD be taken advantage of. [List(Solo)] 🌐

3. Requirements πŸŽ€

this is the checklist part, and honestly it's giving very organized energy πŸ“‹

3.1. Signature Data Model and Syntax 🧚

  1. XML Signature data structures MUST be based on the RDF data model [RDF], but they need not use the RDF serialization syntax. [Charter]
  2. XML Signatures apply to any resource addressable by a locator, including non-XML content. XML Signature referents are identified with XML locators (URIs or fragments) within the manifest that refer to external or internal resources (i.e., network accessible or within the same XML document/package). [Berners-Lee, Brown, List(Vincent), WS, XFDL]
  3. XML Signatures MUST be able to apply to a part or totality of an XML document. [Charter, Brown] Comment: a related requirement under consideration is requiring the specification to support the ability to indicate those portions of a document one signs via exclusion of those portions one does not wish to sign. this feature allows one to create signatures that have document closure [List(Boyer(1)], retain ancestor information, and retain element order of non-continuous regions that MUST be signed. we are considering implementing this requirement via (1) a special <dsig:exclude> element, (2) an exclude list accompanying the resource locator, or (3) the XML-Fragment or XPointer specifications, or a requested change to those specifications if the functionality is not available. see List(Boyer(1,2)) for further discussion of this issue. πŸ€“
  4. Multiple XML Signatures MUST be able to exist over the static content of a Web resource given varied keys, content transformations, and algorithm specifications (signature, hash, canonicalization, etc.). [Charter, Brown]
  5. XML Signatures are first class objects themselves and consequently MUST be able to be referenced and signed. [Berners-Lee]
  6. the specification MUST permit the use of varied digital signature and message authentication codes, such as symmetric and asymmetric authentication schemes as well as dynamic agreement of keying material. [Brown] Resource or algorithm identifiers are first class objects, and MUST be addressable by a URI. [Berners-Lee]
  7. XML Signatures MUST be able to apply to the original version of an included/encoded resource. [WS-list (Brown/Himes)]

🧁 to be continued in part 2, with 3.2 Format and everything after it!

3.3 Cryptography and Processing πŸ”

okay so this is the crypto section and it is SERIOUS, bestie πŸ’… here's what the spec has to do:

  1. The specification must permit arbitrary cryptographic signature and message authentication algorithms, symmetric and asymmetric authentication schemes, and key agreement methods. [Brown]
  2. The specification must specify at least one mandatory to implement signature canonicalization, content canonicalization, hash, and signature algorithm.
  3. In the event of redundant attributes within the XML Signature syntax and relevant cryptographic blobs, XML Signature applications prefer the XML Signature semantics. Comment: Another possibility is that an error should be generated, however it isn't where a conflict will be flagged between the various function and application layers regardless.
  4. The signature design and specification text must not permit implementers to erroneously build weak implementations susceptible to common security weaknesses (such as as downgrade or algorithm substitution attacks). πŸ™ˆ
ngl item 4 is the one I'd tattoo on my brain: the spec itself should make it hard to accidentally build a weak implementation. downgrade and algorithm substitution attacks are literally the villain origin story πŸ’€

3.4 Coordination 🫢

this section is basically the group project part, where we figure out who needs to be in the loop so nothing gets left out 🧚

  1. The XML Signature specification should meet the requirements of the following applications:
    1. Internet Open Trading Protocol v1.0 [IOTP]
    2. Financial Services Mark Up Language v2.0 [Charter]
    3. At least one forms application [XFA, XFDL]
  2. To ensure that all requirements within this document are adequately addressed, the XML Signature specification must be reviewed by a designated member of the following communities:
    1. XML Syntax Working Group: canonicalization dependencies. [Charter]
    2. XML Linking Working Group: signature referents. [Charter]
    3. XML Schema Working Group: signature schema design. [Charter]
    4. Metadata Coordination Group: data model design. [Charter]
    5. W3C Internationalization Interest Group: [AC Review]
    6. XML Package Working Group: signed content in/over packages.
    7. XML Fragment Working Group: signing portions of XML content.

Comment: Members of the WG are very interested in signing and processing XML fragments and packaged components. Boyer asserts that [XML-fragment] does not "identify non-contiguous portions of a document in such a way that the relative positions of the connected components is preserved". Packaging is a capability critical to XML Signature applications, but it is clearly dependent on clear trust/semantic definitions, package application requirements, and even cache-like application requirements. It is not clear how this work will be addressed. πŸ€”

4. Security Considerations πŸ›‘οΈ

the security part is short but mighty. this document lists the XML Digital Signature requirements for the signature syntax, the data model, the format, the cryptographic processing, and the external requirements and coordination. and honestly? in that context, most of this document is about security 😭πŸ”₯

5. References πŸ“š

the citations, complete and unchanged:

AC Review         Misha Wolf. "The Charter should include the I18N WG
                  in the section on `Coordination with Other
                  Groups'", http://lists.w3.org/Archives/Team/xml-
                  dsig-review/1999May/0007.html

Berners-Lee       Axioms of Web Architecture: URIs.
                  http://www.w3.org/DesignIssues/Axioms.html Web
                  Architecture from 50,000 feet
                  http://www.w3.org/DesignIssues/Architecture.html

Brown-XML-DSig    Work in Progress. Digital Signatures for XML
                  http://www.w3.org/Signature/Drafts/xmldsig-
                  signature-990618.html

Charter           XML Signature (xmldsig) Charter.
                  http://www.w3.org/1999/05/XML-DSig-charter-
                  990521.html

DOMHASH           Maruyama, H., Tamura, K. and N. Uramoto, "Digest
                  Values for DOM (DOMHASH)", RFC 2803, April 2000.

FSML              FSML 1.5 Reference Specification
                  http://www.echeck.org/library/ref/fsml-v1500a.pdf

Infoset-Req       XML Information Set Requirements Note.
                  http://www.w3.org/TR/1999/NOTE-xml-infoset-req-
                  19990218.html

IOTP              Burdett, D., "Internet Open Trading Protocol - IOTP
                  Version 1.0", RFC 2801, April 2000.

IOTP-DSig         Davidson, K. and Y. Kawatsura, "Digital Signatures
                  for the v1.0 Internet Open Trading Protocol
                  (IOTP)", RFC 2802, April 2000.

Oslo              Minutes of the XML Signature WG Sessions at  IETF
                  face-to-face meeting in Oslo.

RDF               RDF Schema
                  http://www.w3.org/TR/1999/PR-rdf-schema-19990303
                  RDF Model and Syntax
                  http://www.w3.org/TR/1999/REC-rdf-syntax-19990222

Signature WG List http://lists.w3.org/Archives/Public/w3c-ietf-
                  xmldsig/

URI               Berners-Lee, T., Fielding, R. and L. Masinter,
                  "Uniform Resource Identifiers (URI): Generic
                  Syntax", RFC 2396, August 1998.
                  http://www.ietf.org/rfc/rfc2396.txt

WS
(list, summary)   XML-DSig '99: The W3C Signed XML Workshop
                  http://www.w3.org/DSig/signed-XML99/
                  http://www.w3.org/DSig/signed-XML99/summary.html

XLink XML
Linking Language  http://www.w3.org/1999/07/WD-xlink-19990726

XML               Extensible Markup Language (XML) Recommendation.
                  http://www.w3.org/TR/1998/REC-xml-19980210

XML-C14N          XML Canonicalization Requirements.
                  http://www.w3.org/TR/1999/NOTE-xml-canonical-req-
                  19990605

XFA               XML Forms Architecture (XFA)
                  http://www.w3.org/Submission/1999/05/

XFDL              Extensible Forms Description Language (XFDL) 4.0
                  http://www.w3.org/Submission/1998/16/

XML-Fragment      XML-Fragment Interchange
                  http://www.w3.org/1999/06/WD-xml-fragment-
                  19990630.html

XML-namespaces    Namespaces in XML
                  http://www.w3.org/TR/1999/REC-xml-names-19990114

XML-schema        XML Schema Part 1: Structures
                  http://www.w3.org/1999/05/06-xmlschema-1/
                  XML Schema Part 2: Datatypes
                  http://www.w3.org/1999/05/06-xmlschema-2/

XPointer          XML Pointer Language (XPointer)
                  http://www.w3.org/1999/07/WD-xptr-19990709

WebData           Web Architecture: Describing and Exchanging Data.
                  http://www.w3.org/1999/04/WebData

6. Acknowledgements 🌸

this doc was a collaborative work item of the XML Signature (xmldsig) Working Group, so shoutout to everyone who helped make it happen ✨

7. Author's Address πŸŽ€

Joseph M. Reagle Jr., W3C
XML Signature Co-Chiar
Massachusetts Institute of Technology
Laboratory for Computer Science
W3C, NE43-350
545 Technology Square
Cambridge, MA 02139

Phone:  1.617.258.7621
EMail:  reagle@w3.org
URL:    http://www.w3.org/People/Reagle

Copyright (c) 2000 The Internet Society & W3C (MIT, INRIA, Keio), All Rights Reserved.

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.

The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.

This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Acknowledgement πŸ’œ

Funding for the RFC Editor function is currently provided by the Internet Society. 🫢

πŸ“¦ where this page comes from