- From: Joseph Reagle <reagle@w3.org>
- Date: Mon, 3 Jun 2002 13:37:46 -0400
- To: merlin <merlin@baltimore.ie>, "Takeshi Imamura" <IMAMU@jp.ibm.com>
- Cc: xml-encryption@w3.org
On Friday 31 May 2002 08:23 pm, merlin wrote: > I do. I botched the Type handling. Here, I use Type > in a useful manner. Merlin, thank you for continuing to crank out your iterations <smile/>: substantive proposals are a great way to make progress! > . Define two decrypt transforms: > &decrypt;Binary > &decrypt;XML I like this idea and I think it recalls Takeshi's question as to why I liked to distinguish between &content; and &element. I figured it might come in handy somewhere. However, aside from the limitations, the processing is the same. So by creating a &decrypt;XML transform identifier we can process arbitrary XML "Types" but still identify that we want them decrypted as we specified. > . The &decrypt;XML transform operates so: > > o For each unexceptional EncryptedData in the node set: > > * If its Type is &xenc;(Content|Element) then decrypt > it, wrap it in the parsing context of the EncryptedData > element, parse this and trim it. (Aside: I think that > this definition of the processing of these Types > should be in the xmlenc spec. We could then allow > decrypt-and-replace mode to operate uniformly on any > Type whose "processing" result is a node set. I am not > asking for wrap/parse/trim to be their specification, > just that the "result" of processing these types is > defined to be a node set, a non-normative implementation > of which is wrap/parse/trim.) This sounds like a good idea. > * Save these node sets; they will be the replacements for > the EncryptedData elements; they may be element or > element content. > > o Canonicalize the input node set but, in place of every > unexceptional EncryptedData, canonicalize the replacement > node set. Note that the result may not be in canonical > form. By this I presume you mean you agree with my earlier (off-list) comment that a c14nized document with parts of itself replaced with other c14nized fragments itself (all-together) might not be in c14n form? (The boundaries between the original document and the "holes" were content being replace with c14nized fragments might exhibit some non-c14n variants when looked at as a whole.) > . Every EncryptedData in XML mode must, after decryption > and processing in accordance with the Type attribute, result > in a node set. This is simply a requirement that we place on > apps that encrypt data for subjection to &decrypt;XML. Use > another transform if you don't like this. Why must it be a nodeset (and not octets?) > . A smart implementation will realize that, if this processing > is followed by a canonicalization transform (e.g., if this > is the last transform and the next step is digest) and it > can formulate its replacement node-set canonicalization to > be *identical* to what canonicalization of that node set > in-place would be, then it can omit the redundant parse > and c14n steps. Yes (see comments above), to know how hard this would be would take some toying about with it? > . In terms of performance, we parse the content of each > EncryptedData once, and then do a c14n/parse step on the > whole node set, so this will be reasonably efficient; > particularly if the previous point is followed. Efficiency is always a good thing! > Super encryption: This is a contentious issue still and I want to isolate most of the proposed changes above from this bit. I think most of your suggestions above *can* be employed regardelss of whether we do automatic super-decryption (recursing on EncryptedData that appear after a decryption.) > . If an application is super-encrypting data that are > subject to a decryption transform, then it is responsible > for using this type so that the decryption transform > can operate, and it must understand that superencrypted > EncryptedData cannot make same-document references > during their processing. > > . There is one issue that may or may not need addressing: > > o Superencrypting excepted EncryptedData: Just don't > use the SuperEncrypted type. > > o Superencrypting both excepted and non-excepted > EncryptedData: Either just don't do it or identify them > through a new EncryptionProperty. Is that going too > far? It does exercise our EncryptionProperty framework. It sounds as if you and Takeshi might have a straightforward disagreement about requirements. (Correct my summary if I'm wrong). Takeshi likes auto-super-decryption and isn't too worried about the problem of XPointer evaluation and references outside of an EncryptedData still working. (And he suggests using "#xpointer(id('ID'))" *would* still work, is this true...?) Merlin is concerned about XPointer evaluation and references outside of an EncryptedData and doesn't find the auto-super-decryption that compelling. (I wonder about this mysef. If I have an application where I know I'm encrypting element X and Y, is super-encryption all that likely?) So it would seem we have a tension between these two requirements. If there is no other way to resolve these tensions, at least by making it a specific parameter/transform, the application can make its own choice...
Received on Monday, 3 June 2002 13:38:39 UTC