RE: [rights-examples] ln00x use case discussion

From
DuCharme, Bob (LNG) <>
Date
2002-07-16T20:07:27+00:00
ID
Thread
RE: [rights-examples] ln00x use case discussion
Title: RE: [rights-examples] ln00x use case discussion

>                
<proposed:principalClass> 

>                        
http://www.foo.com/platinumMember 

>                
</proposed:principalClass> 

 

Does the "proposed" namespace prefix 
reference a namespace that I'd have to make 
up, or does it already exist, or as I'm 
guessing from its name, is it something that you're suggesting may be worth 
requesting in the spec to address this issue? 

 

(By the way, this is an issue for the 
spec committee: in all the ContentGuard-produced documentation I've seen, 
namespaces are referenced all over the place without ever being 
declared, with two serious consequences: 1. 
none of the examples in a document 
like ExampleUseCase.pdf are schema-valid, 
and 2. someone new to XrML reading one of the documents has no way of knowing 
where the various element type names are coming from. Not showing 
the declarations in every example is 
one thing, but not showing them anywhere--the string "xmlns" doesn't show up 
once in the PDF file--makes everything much harder to follow.)

 

thanks,

 

Bob

 

 

-----Original Message-----
From: DeMartini, Thomas 
[mailto:]
Sent: Thursday, July 11, 
2002 9:52 PM
To: 'DuCharme, Bob (LNG)'; DeMartini, Thomas; 
''
Subject: RE: [rights-examples] 
ln00x use case discussion

[DuCharme, Bob (LNG)] (some deleted) 
[TD] 

The general concept (other than "pattern" in general) we're 
working with here when we talk about "platinum member" is the concept of a 
"principal pattern" (note: if you look this up in the spec, look under 
PrincipalPatternAbstract as PrincipalPattern also exists but is something quite 
different).  PrincipalPatternAbstract is pretty abstract, as the name 
implies, and almost anything can be put there.  Of course the choice you 
make will impact how much interoperability you get.  The simplest, most 
English-readable representation of platinum member could be this:

<forAll varName="x"> 

        <myExt:platinumMemberPattern/> 
</forAll> 

where myExt:platinumMemberPattern is a substitution of 
principalPatternAbstract that indicates all principals who are platinum 
members.  If all systems (and their components) who you want to encounter 
licenses written like this can be expected to understand 
myExt:platinumMemberPattern, this is probably sufficient.

However, as some such systems will likely desire to make use of 
general-use components (which don't understand myExt:platinumMemberPattern), a 
more general solution might be desirable.  There is a special principal 
pattern called "everyone", which doesn't actually mean *everyone*: it means 
*everyone who has a certain property*.  This would look as 
follows:

<forAll varName="x"> 

        <everyone> 
        
        <proposed:principalClass> 

        
        
        http://www.foo.com/platinumMember 

        
        </proposed:principalClass> 

        
        <trustedIssuer> 

        
        
        ...key that must certify 
principals in that class... 

        
        </trustedIssuer> 

        </everyone> 
</forAll> 

In this case, the property is 

        
        <proposed:principalClass> 

        
        
        http://www.foo.com/platinumMember 

        
        </proposed:principalClass> 

Now, the way this works is when someone pays, say, $50 for a 
platinum membership for the month of July, they get a reciept or a certificate, 
if you will, that looks like this:

<grant> 

        <personWhoJustPaidMoney/> 

        <possessProperty/> 

        <proposed:principalClass> 

        
        http://www.foo.com/platinumMember 

        </proposed:principalClass> 

        <validityInterval> 

        
        <notBefore>2002-07-01T00:00:00</notBefore> 

        
        <notAfter>2002-08-01T00:00:00</notAfter> 

        </validityInterval> 
</grant> 

-Signed by the key that certifies platinum members. 

This way, the <personWhoJustPaidMoney/> will match the 
"everyone" pattern and get bound to the "x" variable during the month of July, 
thus entitling them to, for instance, see any content appearing in grants with 
that everyone pattern.  For instance:

<grant> 

        <forAll 
varName="x"> 
        
        <everyone> 

        
        
        <proposed:principalClass> 

        
        
        
        http://www.foo.com/platinumMember 

        
        
        </proposed:principalClass> 

        
        
        <trustedIssuer> 

        
        
        
        ...key that must certify 
principals in that class... 

        
        
        </trustedIssuer> 

        
        </everyone> 

        </forAll> 
        
<principal varRef="x"/> 

        <mx:play/> 
        
<TheMatrix/> 
</grant> 

Thus, during July, <personWhoJustPaidMoney/> will be able 
to watch <TheMatrix/> because they are a platinum member. 

So, so far we have seen two kinds of principal patterns: a very 
more-than-domain-specific one (myExt:platinumMemberPattern) and a very general 
one (everyone).  There could also be ones that are say x509-specific so 
that any principal with certain x509 certs could be grouped.  These aren't 
as generic as everyone, but they would have a good chance of being widely 
accepted as well.

This same concept of platinum membership can be extended to 
pretty much all "assigned" principals, including site licenses.  However, 
site licenses are kinda peculiar in that there have been lots of different 
"kinds" of site licenses in the past and more that people are interested in the 
future.  Certainly one big class of these is exactly that class of 
"assigned" principals to which the entire discussion above about "platinum 
members" applies.  (The only difference might be, for instance, that 
instead of the provider giving out platinum member certificates when they get 
paid, the domain owner would give out 'site member' certificates to site members 
as their site grows and changes.  This is just a matter of using a 
different key.)

Anyway, the reason I bring this up is there are some additional 
noteworthy site license models.  One in particular is the model where it 
doesn't matter so much as to what site you belong as to the fact that you be 
*in* a domain while you use the content.  Here, a territory restriction 
might be more appropriate using the <domain> part of the territory 
condition (and not restricting the principal at all).

Another model is the model where you the site administrator 
doesn't want the rights subsystem to have any idea who are members of the site 
or even how many (for instance, undercover CIA or something).  In this 
case, you can do something like I mentioned before with "party of 4" or "party 
of n".  That is, you have one principal that is the "site principal" 
specifically set up for the license and the password or secret to "log in" as 
that principal is shared among an entire site.

Another model which is quite popular in software site licenses 
is the "5-seat" license or something like that.  In that case, you might 
couple up one of the "assigned" principal models with a concurrency tracking 
module controlled by the licenses writer.  Or, if there are privacy 
concerns about tracking, you might have the site run its own "seating" server 
that takes care of both concurrency and site-membership at the same 
time.

Thanks, 
Thomas.