170 likes | 281 Vues
This paper presents LicenseScript, a program-based Rights Expression Language (REL) designed to manage licenses for structured data. We explore the motivations behind using a program-based approach and the advantages of leveraging Prolog for formal semantics and flexibility. The paper introduces three distinct licensing models, demonstrating how LicenseScript can accommodate various usage scenarios while emphasizing the significance of maintaining license integrity and confidentiality. Our conclusions outline future work aimed at enhancing the security of LicenseScript against potential threats.
E N D
Licensing Structured Data with Ease Y. W. Law, C. N. Chong, S. Etalle, P. Hartel, and R. Corin Universiteit Twente, The Netherlands chong@cs.utwente.nl
Overview • Introduction and Motivation • LicenseScript Language • Why Program-based REL? • Why Prolog? • Licensing Model I, II, and III • Conclusions and Future Work
Introduction • Digital Rights Management (DRM) is a controversial technology. • We do not debate if DRM is good or bad. • Here, we use our LicenseScript, the rights expression language (REL) to license structured data.
Motivation • We are going to explain some of our design choices of LicenseScript. • We need to present several answers for the following questions: • Why program-based REL? • Why using Prolog?
LicenseScript Language • License consists of three parts: content, clauses, and bindings. • Clauseis a Prolog program to decide if the operation is allowed. • Bindings store license data. • Rule can be thought of as firmware of a system.
Why Program-based REL? • Formal Semantics • Useful properties can be formally verified. • Flexible and Highly Expressive • Able to express more novel usage scenarios.
Why Prolog? • The main component of LicenseScript. • We will show the power of Prolog in handling the structured data. • We propose 3 Licensing Models using LicenseScript that illustrates the advantages of Prolog.
Unlocking License lic(track, [canplay(B,_,Code):- get_value(B,unlockCode,Code)], [unlockCode=1234]) Rule play(N) : lic(N,C1,B1), lic(N,C2,B2) -> lic(N,C1,B1’), lic(N,C2,B2’) <= C2|-canunlock(B1,B1’,Code), C1|-canplay(B2,B2’,Code) Base License lic(track, [canunlock(B,_,Code): get_value(B,unlockCode,U), Code==U], [unlockCode=1234]) Licensing Model I Play • Lock part of the content, to unlock needs license. • Can distribute part of the content free as preview to attract users.
Enhanced License Basic License Add-on License Licensing Model II • A basic set of content and bonus content which can be added on top of the basic content. Combine
Licensing Model II (cont’d.) • We have given a formalism of the combination operation. • We have defined a formalism to resolve the potential name conflicts at clauses and bindings. • Content providers can have more flexible licensing to their structural data.
By using Licensing Model II, we can license the text and audio of the ebook, separately. ebook lic(ebook, [cansynrender(_,_):- candisplay(_,_), canlisten(_,_)], [type=[text,audio]]) ebook-text-part ebook-audio-part lic(ebook, [candisplay(_,_)], [type=[text]]) lic(ebook, [canlisten(_,_)], [type=[audio]]) Licensing Model III Combine
Conclusions and Future Work • We have provided three useful licensing schemes to use with LicenseScript. • We have shown the advantages of using Prolog in licensing. • Future work – security of LicenseScript: • To detect bad licenses. • To protect licenses confidentiality and integrity.
Name Conflicts Resolution Definition 1: Names lic (Content, C, B) Bindings, B Set of Names Head of Clauses,C Set of Names
X Y Z x y z Name Conflicts Resolution Definition 2: Renaming Function Renaming Function α bijection Y ∩ Z = {} z= α(x,Y)
Name Conflicts Resolution Definition 1: Combination Combine Functionφ lic1(n,C1,B1) lic3(n,C3,B3) lic2(n,C2,B2) • l3 is a valid license. • Number of (B3) = number of (B2) + number of (B1) • Number of (C3) = number of (C1) + number of (C2) – number of (C1 and C2 which has same head)
Name Conflicts Resolution Definition 1: Combination • There exists b in C1 and B1 (i.e., of lic1) but not in of lic2, there exists a unique b3in of lic3 then the corresponding Prolog clause in C1 also exists in C3. • Similarly, applies to C2 and B2. • There exists b in of lic1 (N1) and lic2 (N2), there exists unique b3(1) and b3(2), b3(1)≠ b3(2) such that b3(1)= α1(b, N1U N2) and b3(2)= α2(b, N1U N2), then the clause b:-b3(1),b3(2) in of lic3