SHOULD / MUST see what was signed

i'm a cryptographer and security architect for shym technologies,
a PKI "middleware" startup here in needham, MA.[1]  i've done a
lot of work on security and crypto, including PKI, starting with
my work with ralph swick on kerberos protocol extensions [2], when
i worked at mit's project athena during the late '80's.  since
then, i've mostly worked as a management and technical consultant
for very large financial, corporate, and institutional organizations,
but i've also worked for various small security-related high-tech
companies.  i've also published a number of papers on cryptography
problems. [2]

i've recently read the WG's july 11 draft [3], and some supporting
w3c documents, so as to help my employer decide whether or when we
should support XML signatures in our products.  i'm now writing to
offer my comments to the WG, though i haven't been following the
WG's work.  from conversations with the WG's co-chair joseph reagle,
i understand that my concerns revisit issues that were discussed
thoroughly in the group, long ago.  i've seen some of those dis-
cussions in the WG list's archive.  so, i'm prepared to accept
regretfully that by now, my comments may be familiar and out-of-
scope for the WG.  if so, perhaps my remarks can be recorded as
"public comments." 

summary of my remarks:  
i believe that for xml signatures to be fully useful in commercial
security applications, the draft should make it easy for implemen-
tors to understand how to calculate legally enforceable signatures
on behalf of human signers.  as the draft stands, i do not expect
xml vendors will soon supply the kind of high-level secure-document
libraries that my company wants to undergird with our PKI crypto
products. thus, my company faces a higher implementation cost than
we would like, because the current spec would oblige us to write
these high-level secure-xml libraries ourselves, though we are a
crypto shop, not an XML shop.  i'm also very disappointed that sec
8.1 of the july 11 draft [3] doesn't require "see what was signed"
for human-chosen signatures.  i claim that this omission violates
sec. 3.3, bullet 4 of the XML Signatures Req'ts doc't [7].  if the
subject of "MUST see what was signed" is closed to further discus-
sion, then i earnestly ask that the w3c address such a feature in
a separate WG, to build on this WG's progress.

my full comments follow, for 3 more pages.  my text follows a
recent discussion of this topic on the list, under the subject
header, "XML Processing in Current Implementations:"

joseph reagle wrote:
> If a PI references a style sheet, this could change the meaning
> of the document being signed, is this change also signed? [4]
...
> 2. ... we'd have to recommend that 'http://foo.example.com/bar.xslt'
> also be included in a Signature Reference if we want to get bit by
> having foo.example.com changing the stylesheet to affect the result
> after the signature. [4]
...
>  " /+... if an XML document includes an embedded stylesheet [XSLT] 
>  it is the transformed document that SHOULD be represented to the
>  user and signed. To meet this recommendation where a document
>  references an external style sheet, the content of that external 
>  resource SHOULD also be signed via a signature Reference -- 
>  otherwise the content of that external [resource] might change
>  which alters the resulting  document without invalidating the
>  signature.+/" [5]

donald eastlake replied:
> I am leary of MUSTs in this area. ... If an external style sheet
> is referenced there is no reason to include or sign it if it is
> determinable by the protocol and all receivers have a copy which
> is authentic by definition. Etc. [6]

i agree that when software applies a signature automatically,
there's no reason to worry about signing external references.
but, when a human must choose deliberately to apply a signature,
there's ample reason to sign external references.  these two
scenarios differ in two important ways:
        *  a human's deliberate signature tends to be long-lived,
           while an automated signature tends to be short-lived;
        *  with a human's deliberate signature, the human-interpretable
           representation tends to be legally binding,  while with
           an automated signature, the underlying document format
           tends to be more important than the human-interpretable
           representation.

so,  for automated signatures, i agree with mr. eastlake that
SHOULD is appropriate.  for deliberate human-chosen signatures,
though, i strongly suggest that a signed document's human-inter-
pretable representation must have three essential properties:
        * "see what's signed:"   human signers and verifiers MUST
           get the same human-interpretable representations.
        *  portability:  the signer or verifier must be able to
           show a court the same representation he read or heard,
           without having to carry his file-server's xml config-
           uration to court. 
        *  stability:  for long life, a signed document's represen-
           tation must not depend on changeable external stylesheets,
           transforms, or parameters, unless those external components
           are signed, too.
all three properties refer to a notion of "sameness."  no doubt,
the application designer must decide what's "the same," and what's
not.  in some contexts, pixel-by-pixel match-up may be necessary;
in others, font changes may be acceptable, without violating this
notion of "sameness;"  in other contexts still, even automated
translation from text to audio might be an acceptable change that
shouldn't invalidate the signature.

i've seen discussed three alternative ways to guarantee these
signature-properties:
        *  "...it is the transformed document that MUST be
           represented to the user and signed."  (paraphrasing
           mr. reagle's 8/1 message [5]).
        *  or, the signature can apply to all external references
           that affect the human-interpretable representation.
        *  or, the signed document can carry a separate signature
           for each external reference that affects the human-
           interpretable representation.
all three seem acceptable to me.  thus, i suggest that when a
human signs an XML document, the signature must be bound either
to a human-interpretable representation of the document, or else
to a fixed procedure for preparing such a representation.  

because the draft fails to require "MUST see what was signed,"
i suggest that the draft violates one of the XML Signature
Requirements [7] that is central for XML signatures' security:

   "4. The signature design and specification text must
       not permit implementers to erroneously build weak 
       implementations susceptible to common security 
       weaknesses (such as downgrade  or algorithm
       substitution attacks)."
                - sec  3.3, "Cryptography and Processing," [7]

this is exactly my complaint about the current draft spec.  compliant
implementations can verify a signature as valid, even when unsigned
transformas and external references have caused the document represen-
tation's contents to change substantially.  it's arguable whether my
concern is more of a security problem than a crypto problem, but plainly,
the bullet 4 text speaks both to crypto flaws and to security holes.

from my reading of the current draft, compliant and useful
applications can be written for either type of signature,
human-chosen or automatic.  but, the draft offers several
pitfalls for an application programmer who wants to support
legally-binding human-chosen xml-signatures.  mr. reagle's
external stylesheet example, cited above [4], is an example
of such a pitfall.  other examples are external references
to pricing data, or to boilerplate contractual terms.  as
a cryptographer and security architect for a PKI security
company, i'm very concerned that XML signatures should
_gracefully_ support both automated signatures and humans'
deliberate signatures.  i know that this is a lot to ask of
one specification.  but with the current draft language, i
regret that i cannot recommend to my company or to our cus-
tomers that XML Signatures are suitable as yet for human-to-
human signature applications.
                                                        - don davis, boston

[1] my employer:         http://www.shym.com
[2] my work with swick:  http://world.std.com/~dtd
[3] the draft i read:
    http://www.w3.org/TR/2000/WD-xmldsig-core-20000711/#sec-Security-Transofrms
[4] reagle's mail:
    http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2000JulSep/0192.html
[5] reagle's text:
    http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2000JulSep/0213.html
[6] eastlake's reply:
    http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2000JulSep/0214.html
[7] requirements:

http://www.w3.org/TR/1999/WD-xmldsig-requirements-19991014.html#Cryptography



-

Received on Friday, 4 August 2000 14:12:32 UTC