Systems, Methods and Architectures for Dynamic Re-Evaluation of Rights Management Rules for Policy Enforcement on Downloaded Content
20230186240 · 2023-06-15
Inventors
Cpc classification
H04L2463/101
ELECTRICITY
International classification
Abstract
A control logic component at the server side may, responsive to a request to access protected content residing on a client machine, dynamically evaluate one or more rules. The request may be received from a client application running on the client machine by a rights management services server or by an agent running on the client machine. In some embodiments, the control logic component can be hosted in a cloud computing environment, on an enterprise server, or provided as a service. Each rule may reference a policy such as a digital rights management policy. The control logic component may determine, based on condition(s) set forth in the rule, if any policy is current and applicable to the protected content and communicate its findings to the requesting server or agent such that they can take appropriate action to protect the downloaded content.
Claims
1. A method, comprising: a server module embodied on non-transitory computer memory receiving a request for a use license from a client device communicatively connected to the server module over a network connection, the request containing a public key of the client device and an encrypted publishing license associated with a piece of content existing on the client device; the server module decrypting the publishing license to produce a content identifier associated with the piece of content, the server module performing the decrypting using a private key of the server module; a control logic component dynamically re-evaluating one or more rules associated with the piece of content to determine which policy is current and applicable to the piece of content, each of the one or more rules referencing a policy; the server module generating and encrypting a use license using the public key of the client device, the use license containing a content key and a current policy for the piece of content; and the server module sending the encrypted use license to the client device over the network connection, wherein a client module residing on the client device decrypts the use license using a private key of the client device to obtain the content key and the current policy, decrypts the piece of content existing on the client device using the content key, and enforces one or more permissions specified in the current policy relative to the piece of content.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0026] The drawings accompanying and forming part of this specification are included to depict certain aspects of the disclosure. It should be noted that the features illustrated in the drawings are not necessarily drawn to scale. A more complete understanding of the disclosure and the advantages thereof may be acquired by referring to the following description, taken in conjunction with the accompanying drawings in which like reference numbers indicate like features and wherein:
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
[0038]
[0039]
[0040]
[0041]
[0042]
[0043]
DETAILED DESCRIPTION
[0044] The invention and the various features and advantageous details thereof are explained more fully with reference to the non-limiting embodiments that are illustrated in the accompanying drawings and detailed in the following description. Descriptions of well-known starting materials, processing techniques, components and equipment are omitted so as not to unnecessarily obscure the invention in detail. It should be understood, however, that the detailed description and the specific examples, while indicating some embodiments of the invention, are given by way of illustration only and not by way of limitation. Various substitutions, modifications, additions and/or rearrangements within the spirit and/or scope of the underlying inventive concept will become apparent to those skilled in the art from this disclosure.
[0045] As discussed above, prior RMS approaches, including those described above with reference to
[0046]
[0047] As shown in
[0048] When document 355 is accessed, RMS server 370 notifies or calls DRMS plug-in 375. In turn, DRMS plug-in 375 contacts database(s) 380, dynamically re-evaluates RMS rules and policies 385, determines a current policy (or policies) applicable to document 355, retrieves the policy or policies thus determined from database(s) 380, and provides the retrieved policy or policies to RMS server 370. RMS server 370 then applies the current policy or policies provided by DRMS plug-in 375 to document 355. This approach may be applied to address the drawbacks of a conventional RMS system discussed above with reference to
[0049] Those skilled in the art will appreciate that there can be various types and/or levels of integration with RMS server 370. For example,
[0050] As another example,
[0051]
[0052] As shown in
[0053] Those skilled in the art will appreciate that there can be various types and/or levels of integration with enterprise RMS server 470. For example,
[0054] As another example,
[0055] The example integration approaches described above with reference to
[0056] In addition to integration approaches described above, infrastructural approaches may be taken to dynamic re-evaluate rights management rules governing policies applicable to downloaded content, examples of which are shown in
[0057]
[0058] As an example, DRMS client 565 may retrieve document 555 from a document management system associated with enterprise library 580. At retrieval time, document 555 may be protected according to configurable RMS rules and policies 585. When client application 560 attempts to open document 555, DRMS client 565 checks with DRMS server 570 which, in turn, calls enterprise library 580 and, via dynamic re-evaluation logic 575, dynamically re-evaluate configurable RMS rules and policies 585 and apply the most current, applicable RMS rules and policies 585 to document 555. An example infrastructure where this process can take place is described in detail below with reference to
[0059] Those skilled in the art will appreciate that dynamic re-evaluation logic 575 can be implemented in various ways. For example,
[0060] Referring to
[0061] After the document is uploaded to document management system 630, content server 631 may operate to restrict access to the document and forward the document for archival. Archive server 633 may operate to encrypt the document and store the encrypted document in file system 635 at one or more storage locations (e.g., on a disk based storage system, in a tape based storage system, in a cloud based storage system, etc.). Here, the encryption by archive server 633 on the document is independent of the RMS protection and encryption. This archive server encryption guarantees that the content is securely stored on the storage—no one having direct access to the storage can read the content. The rules for the archive server encryption are generally maintained in the archive server administration and can be independent of the RMS protection rules. The archive server encryption shown in
[0062] User 620 may send request 605 to document management system 630 for downloading a document. Request 605 may be sent by DRMS client 645 running on client device 625 associated with user 620. Note that the document is encrypted on the storage, but as soon as it leaves archive server 633, it may no longer be encrypted. Enterprise library server 637 may evaluate configurable policies and rules to determine whether and/or what RMS protection is needed and, if so, protect the document according to the configurable policies and rules. A detailed example of this process is provided below with reference to
[0063] When user 620 attempts to open the RMS protected document downloaded from document management system 630, DRMS client 645 may operate to send request 609 to DRMS system 640 for a use license. DRMS server 641 implementing DRMS system 640 may operate (via a special control logic component configured for dynamic rules re-evaluation) to check with enterprise library server 637 (step 611). The special control logic may also be implemented at enterprise library server 637 or may cause enterprise library server 637 to dynamically re-evaluate configurable rules to determine one or more current policies applicable to the downloaded content. Response 613, which contains an encrypted current policy, is then sent to client device 625. A detailed example of this process is provided below with reference to
[0064] One of ordinary skill in the art appreciates that, although document management system 630 and DRMS system 640 are shown as two separate systems in
[0065] Turning now to
[0066] Since the downloaded content is RMS protected, when an attempt is made to access the downloaded document (e.g., when an application running on the client device attempts to open it), this triggers a dynamic re-evaluation of rights management rules at the backend. This is illustrated in
[0067] In this example, process 800 may begin when a client sends a request for a user license to a server (step 801). The server may be any appropriate server at the server side, for instance, an enterprise library server such as enterprise library server 637 of
[0068] Those skilled in the art will appreciate that step 820 may be performed by the server at which the request is received (e.g., dynamic re-evaluation logic 575 embodied on DRMS system 570 of
[0069] In some embodiments, step 820 may further comprise determining RMS rule(s) applicable to the content associated with the content identifier, accessing a rules database, an enterprise library, or any appropriate data structure persistently storing a set of RMS rules, and retrieving from there one or more RMS rules applicable to the content associated with the content identifier. In some embodiments, the determination as to what RMS rule may apply may depend on the requested content's content type, classification, categorization, or the like. For example, documents that have been classified as confidential may have a particular rule governing how a specific policy on confidential documents should be applied. To this end,
[0070] Referring to
[0071] Accordingly, in some embodiments, step 820 may further comprise analyzing the one or more RMS rules applicable to the content associated with the content identifier. As a specific example, suppose a rule has a first condition specifying a content type and a second condition specifying a category name. If both conditions are met, then a policy referenced in the rule applies to the content (see, e.g.,
[0072] In some embodiments, step 820 may further comprise providing a result of the analysis. In some embodiments, the result may include a link or reference to a current policy. The server may access the policy and determine what access permission(s), if any, the user has on the downloaded content (step 825). If, according to a current policy, the user is not permitted to access to the downloaded content at all, process 800 ends (step 830). If the user is permitted to access the downloaded content, the server then operates to generate a use license and encrypt the use license with the client's public key (step 835). The server may then communicate the encrypted use license to the client (step 840). User license 845, in this case, may contain an encrypted current policy (which, as illustrated in
[0073] The client may decrypt the use license using the client's private key (step 805). This produces the current policy and the content key. The client may decrypt the downloaded content using the content key (step 807) and operate to enforce the current policy on the downloaded content (step 809). This is further explained below.
[0074]
[0075]
[0076] The association (via field 1020) and relationship (via condition(s) 1040) between rule 1000 and policy 1030 can be readily modified via edit functions 1050 (e.g., add, delete, edit, etc.).
[0077] Independently, policies themselves may be defined, configured and/or modified.
[0078] Although the invention has been described with respect to specific embodiments thereof, these embodiments are merely illustrative, and not restrictive of the invention. The description herein of illustrated embodiments of the invention, including the description in the Abstract and Summary, is not intended to be exhaustive or to limit the invention to the precise forms disclosed herein (and in particular, the inclusion of any particular embodiment, feature or function within the Abstract or Summary is not intended to limit the scope of the invention to such embodiment, feature or function). Rather, the description is intended to describe illustrative embodiments, features and functions in order to provide a person of ordinary skill in the art context to understand the invention without limiting the invention to any particularly described embodiment, feature or function, including any such embodiment feature or function described in the Abstract or Summary. While specific embodiments of, and examples for, the invention are described herein for illustrative purposes only, various equivalent modifications are possible within the spirit and scope of the invention, as those skilled in the relevant art will recognize and appreciate. As indicated, these modifications may be made to the invention in light of the foregoing description of illustrated embodiments of the invention and are to be included within the spirit and scope of the invention. Thus, while the invention has been described herein with reference to particular embodiments thereof, a latitude of modification, various changes and substitutions are intended in the foregoing disclosures, and it will be appreciated that in some instances some features of embodiments of the invention will be employed without a corresponding use of other features without departing from the scope and spirit of the invention as set forth. Therefore, many modifications may be made to adapt a particular situation or material to the essential scope and spirit of the invention.
[0079] Reference throughout this specification to “one embodiment”, “an embodiment”, or “a specific embodiment” or similar terminology means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment and may not necessarily be present in all embodiments. Thus, respective appearances of the phrases “in one embodiment”, “in an embodiment”, or “in a specific embodiment” or similar terminology in various places throughout this specification are not necessarily referring to the same embodiment. Furthermore, the particular features, structures, or characteristics of any particular embodiment may be combined in any suitable manner with one or more other embodiments. It is to be understood that other variations and modifications of the embodiments described and illustrated herein are possible in light of the teachings herein and are to be considered as part of the spirit and scope of the invention.
[0080] In the description herein, numerous specific details are provided, such as examples of components and/or methods, to provide a thorough understanding of embodiments of the invention. One skilled in the relevant art will recognize, however, that an embodiment may be able to be practiced without one or more of the specific details, or with other apparatus, systems, assemblies, methods, components, materials, parts, and/or the like. In other instances, well-known structures, components, systems, materials, or operations are not specifically shown or described in detail to avoid obscuring aspects of embodiments of the invention. While the invention may be illustrated by using a particular embodiment, this is not and does not limit the invention to any particular embodiment and a person of ordinary skill in the art will recognize that additional embodiments are readily understandable and are a part of this invention.
[0081] Embodiments discussed herein can be implemented in a computer communicatively coupled to a network (for example, the Internet), another computer, or in a standalone computer. As is known to those skilled in the art, a suitable computer can include a central processing unit (“CPU”), at least one read-only memory (“ROM”), at least one random access memory (“RAM”), at least one hard drive (“HD”), and one or more input/output (“I/O”) device(s). The I/O devices can include a keyboard, monitor, printer, electronic pointing device (for example, mouse, trackball, stylus, touch pad, etc.), or the like.
[0082] ROM, RAM, and HD are computer memories for storing computer-executable instructions executable by the CPU or capable of being compiled or interpreted to be executable by the CPU. Suitable computer-executable instructions may reside on a computer readable medium (e.g., ROM, RAM, and/or HD), hardware circuitry or the like, or any combination thereof. Within this disclosure, the term “computer readable medium” is not limited to ROM, RAM, and HD and can include any type of data storage medium that can be read by a processor. For example, a computer-readable medium may refer to a data cartridge, a data backup magnetic tape, a floppy diskette, a flash memory drive, an optical data storage drive, a CD-ROM, ROM, RAM, HD, or the like. The processes described herein may be implemented in suitable computer-executable instructions that may reside on a computer readable medium (for example, a disk, CD-ROM, a memory, etc.). Alternatively, the computer-executable instructions may be stored as software code components on a direct access storage device array, magnetic tape, floppy diskette, optical storage device, or other appropriate computer-readable medium or storage device.
[0083] Any suitable programming language can be used to implement the routines, methods or programs of embodiments of the invention described herein, including C, C++, Java, JavaScript, HTML, or any other programming or scripting code, etc. Other software/hardware/network architectures may be used. For example, the functions of the disclosed embodiments may be implemented on one computer or shared/distributed among two or more computers in or across a network. Communications between computers implementing embodiments can be accomplished using any electronic, optical, radio frequency signals, or other suitable methods and tools of communication in compliance with known network protocols.
[0084] Different programming techniques can be employed such as procedural or object oriented. Any particular routine can execute on a single computer processing device or multiple computer processing devices, a single computer processor or multiple computer processors. Data may be stored in a single storage medium or distributed through multiple storage mediums, and may reside in a single database or multiple databases (or other data storage techniques). Although the steps, operations, or computations may be presented in a specific order, this order may be changed in different embodiments. In some embodiments, to the extent multiple steps are shown as sequential in this specification, some combination of such steps in alternative embodiments may be performed at the same time. The sequence of operations described herein can be interrupted, suspended, or otherwise controlled by another process, such as an operating system, kernel, etc. The routines can operate in an operating system environment or as stand-alone routines. Functions, routines, methods, steps and operations described herein can be performed in hardware, software, firmware or any combination thereof.
[0085] Embodiments described herein can be implemented in the form of control logic in software or hardware or a combination of both. The control logic may be stored in an information storage medium, such as a computer-readable medium, as a plurality of instructions adapted to direct an information processing device to perform a set of steps disclosed in the various embodiments. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will appreciate other ways and/or methods to implement the invention.
[0086] It is also within the spirit and scope of the invention to implement in software programming or code an of the steps, operations, methods, routines or portions thereof described herein, where such software programming or code can be stored in a computer-readable medium and can be operated on by a processor to permit a computer to perform any of the steps, operations, methods, routines or portions thereof described herein. The invention may be implemented by using software programming or code in one or more digital computers, by using application specific integrated circuits, programmable logic devices, field programmable gate arrays, optical, chemical, biological, quantum or nanoengineered systems, components and mechanisms may be used. In general, the functions of the invention can be achieved by any various means known to those skilled in the art. For example, distributed, or networked systems, components and circuits can be used. In another example, communication or transfer (or otherwise moving from one place to another) of data may be wired, wireless, or by any other means.
[0087] A “computer-readable medium” may be any medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, system or device. The computer readable medium can be, by way of example only but not by limitation, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, system, device, propagation medium, or computer memory. Such computer-readable medium shall be machine readable and include software programming or code that can be human readable (e.g., source code) or machine readable (e.g., object code). Examples of non-transitory computer-readable media can include random access memories, read-only memories, hard drives, data cartridges, magnetic tapes, floppy diskettes, flash memory drives, optical data storage devices, compact-disc read-only memories, and other appropriate computer memories and data storage devices. In an illustrative embodiment, some or all of the software components may reside on a single server computer or on any combination of separate server computers. As one skilled in the art can appreciate, a computer program product implementing an embodiment disclosed herein may comprise one or more non-transitory computer readable media storing computer instructions translatable by one or more processors in a computing environment.
[0088] A “processor” includes any, hardware system, mechanism or component that processes data, signals or other information. A processor can include a system with a central processing unit, multiple processing units, dedicated circuitry for achieving functionality, or other systems. Processing need not be limited to a geographic location, or have temporal limitations. For example, a processor can perform its functions in “real-time,” “offline,” in a “batch mode,” etc. Portions of processing can be performed at different times and at different locations, by different (or the same) processing systems.
[0089] It will also be appreciated that one or more of the elements depicted in the drawings/figures can also be implemented in a more separated or integrated manner, or even removed or rendered as inoperable in certain cases, as is useful in accordance with a particular application. Additionally, any signal arrows in the drawings/figures should be considered only as exemplary, and not limiting, unless otherwise specifically noted.
[0090] As used herein, the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having,” or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a process, product, article, or apparatus that comprises a list of elements is not necessarily limited only those elements but may include other elements not expressly listed or inherent to such process, product, article, or apparatus.
[0091] Furthermore, the term “or” as used herein is generally intended to mean “and/or” unless otherwise indicated. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B are true (or present). As used herein, including the claims that follow, a term preceded by “a” or “an” (and “the” when antecedent basis is “a” or “an”) includes both singular and plural of such term, unless clearly indicated within the claim otherwise (i.e., that the reference “a” or “an” clearly indicates only the singular or only the plural). Also, as used in the description herein and throughout the claims that follow, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise. The scope of the present disclosure should be determined by the following claims and their legal equivalents.