Meaning of Document Closure

Thanks, Joseph.  I'm using the term closure as appropriate to the
application, but given the number of closures there are in computing and
mathematics (six others come to mind without having to consult any books), I
should've spelled this out in the scenario.

Closure has such a generic meaning in common language, so it can be applied
in many different domains.  The common language usage of the term closure is
as a noun for the act of closing or finishing (e.g. "We would like closure
on this specification process as soon as possible").

The current XFDL filters are designed to specify the precise conditions
necessary to close or finish a document.  Thus, if person A signs an
unfinished document, then the signature filters can be set up to describe
precisely what is allowed to change after Person A's signature in order to
achieve closure on the document.  If Person B deviates from the described
changes, then this should be equivalent to deviation from the intent of the
application, and should therefore result in the invalidation of Person A's
signature.

Of course, this means that signature A must be able to specifically define
what should be omitted since that is precisely what may be added to close
the document.  From an algorithmic standpoint, this design also implies the
need to scan the entire document looking for things that match a filter,
which is reminiscent of other closure operations in computing.  With only
inclusion logic such as we had in the original manifests of the Brown draft,
one did not need to scan the entire document but could conceive of using
short-circuits if they were available.

Note that this design still puts the onus on the application developer to
set up a filter properly, but if an application has a security hole, it is
not because the core dsig syntax (or perhaps some branch of it) is not
sufficiently powerful to express document closure, but rather because the
application designer did not express it properly.

By analogy, the following C code snippet crashes

    char *P=NULL; ... *P = '\0';

The fact that C is a standard does not mean the application developer can't
write bugs.  What it means is that a committee and a larger community have
come to a consensus that the language is sufficiently powerful to express
all computer programs that fit the language design requirements.

By comparison, XML DSig has requirement 3.1.3 stating the need to sign XML
resources in totality or in part.  To put it another way, we want to
*securely sign partial and total XML resources*.   Since application
designers are able to define part of the language that is being signed (the
keywords used by their brand of XML), our task is simply to provide
mechanisms that allow secure signatures to be created regardless of the
particular well-formed XML grammatical constructs that are selected by the
application designer.  Otherwise, we are deciding to sign a subset of
well-formed XML and must go to the trouble of defining that subset and then
considering whether the subset is sufficiently powerful
to express the types of signatures that the community at large will need to
create.

Guaranteeing data integrity among communicating computers is only one
application of digital signatures; a larger application to be considered
should be the use of digital signatures in service of society, whose primary
need for signatures is for documents.  Finally, since any document that must
be signed represents an agreement of some sort between two or more parties,
it is reasonable to assume that no small fraction of these documents will
require multiple overlapping signatures.  As such, the notion of document
closure would seem to be indispensable as a method of providing appropriate
security for such documents.

John Boyer
Software Development Manager
UWI.Com -- The Internet Forms Company

Received on Tuesday, 14 September 1999 11:55:41 UTC