US5412717A - Computer system security method and apparatus having program authorization information data structures - Google Patents

Computer system security method and apparatus having program authorization information data structures Download PDF

Info

Publication number
US5412717A
US5412717A US07/883,868 US88386892A US5412717A US 5412717 A US5412717 A US 5412717A US 88386892 A US88386892 A US 88386892A US 5412717 A US5412717 A US 5412717A
Authority
US
United States
Prior art keywords
storing
program
authority
protecting
indication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
US07/883,868
Inventor
Addison M. Fischer
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
GLOBAL INNOVATION TECHNOLOGY HOLDINGS LLC
RPX Corp
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=25383494&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=US5412717(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
US case filed in Texas Eastern District Court litigation https://portal.unifiedpatents.com/litigation/Texas%20Eastern%20District%20Court/case/2%3A11-cv-00370 Source: District Court Jurisdiction: Texas Eastern District Court "Unified Patents Litigation Data" by Unified Patents is licensed under a Creative Commons Attribution 4.0 International License.
US case filed in Texas Eastern District Court litigation https://portal.unifiedpatents.com/litigation/Texas%20Eastern%20District%20Court/case/2%3A09-cv-00198 Source: District Court Jurisdiction: Texas Eastern District Court "Unified Patents Litigation Data" by Unified Patents is licensed under a Creative Commons Attribution 4.0 International License.
US case filed in Texas Eastern District Court litigation https://portal.unifiedpatents.com/litigation/Texas%20Eastern%20District%20Court/case/2%3A08-cv-00484 Source: District Court Jurisdiction: Texas Eastern District Court "Unified Patents Litigation Data" by Unified Patents is licensed under a Creative Commons Attribution 4.0 International License.
US case filed in Florida Southern District Court litigation https://portal.unifiedpatents.com/litigation/Florida%20Southern%20District%20Court/case/1%3A09-cv-20127 Source: District Court Jurisdiction: Florida Southern District Court "Unified Patents Litigation Data" by Unified Patents is licensed under a Creative Commons Attribution 4.0 International License.
Priority to US07/883,868 priority Critical patent/US5412717A/en
Application filed by Individual filed Critical Individual
Priority to DE69323926T priority patent/DE69323926T2/en
Priority to AT93303223T priority patent/ATE177857T1/en
Priority to ES93303223T priority patent/ES2128393T3/en
Priority to EP93303223A priority patent/EP0570123B1/en
Priority to CA002095087A priority patent/CA2095087C/en
Priority to AU38209/93A priority patent/AU672786B2/en
Priority to JP11315793A priority patent/JP3784423B2/en
Priority to US08/070,787 priority patent/US5311591A/en
Publication of US5412717A publication Critical patent/US5412717A/en
Application granted granted Critical
Priority to JP2005358699A priority patent/JP3880607B2/en
Assigned to INFORMATION PROTECTION AND AUTHENTICATION OF TEXAS, LLC reassignment INFORMATION PROTECTION AND AUTHENTICATION OF TEXAS, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GLOBAL INNOVATION TECHNOLOGY HOLDINGS, LLC
Assigned to GLOBAL INNOVATION TECHNOLOGY HOLDINGS, LLC reassignment GLOBAL INNOVATION TECHNOLOGY HOLDINGS, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: FISCHER, ADDISON M.
Anticipated expiration legal-status Critical
Assigned to FISCHER, ADDISON M reassignment FISCHER, ADDISON M ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: INFORMATION PROTECTION AND AUTHENTICATION OF TEXAS, LLC
Assigned to RPX CORPORATION reassignment RPX CORPORATION NUNC PRO TUNC ASSIGNMENT (SEE DOCUMENT FOR DETAILS). Assignors: INFORMATION PROTECTION AND AUTHENTICATION OF TEXAS, LLC
Assigned to BARINGS FINANCE LLC, AS COLLATERAL AGENT reassignment BARINGS FINANCE LLC, AS COLLATERAL AGENT PATENT SECURITY AGREEMENT Assignors: RPX CORPORATION
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/007Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress

Definitions

  • the present invention generally relates to a method and apparatus for providing digital information with enhanced security and protection. More particularly, the invention relates to a method and apparatus for providing enhanced computer system security while processing computer programs, particularly those of unknown origin, which are transmitted among users.
  • a computer virus may be viewed as a computer program which, when executed, results in the performance of not only operations expected by the user, but also unexpected, often destructive, operations built into the program.
  • a computer virus may also be viewed as a program which, when executed, takes a part of its code and places such code in other programs to thereby infect the other programs. The virus may modify other programs within the system, set various traps in the system, alter various control programs, erase or otherwise modify files in the system, etc.
  • virus is typically maliciously constructed to have such undesirable side effects which damage, probe or compromise the user's data in unexpected ways.
  • Problems with computer viruses are often compounded by the fact that the virus controlling program is typically executed "implicitly" when the user accesses certain necessary data so that the user is not even aware that the destructive program is executing.
  • the present invention provides protection from such viruses and also from programs which execute on a system but which are not actual computer virus carriers.
  • a program may have an unintended, adverse impact on a computer system and/or associated data.
  • an executing program may inadvertently cause certain user data to be sent to a third party.
  • Such a program may have been the result of a programming error or may have been intentionally designed to cause a particular problem.
  • Prior art operating systems are typically designed to protect data from computer users.
  • users are often assigned various authorities and are thereafter able to execute programs based on their associated authority. If a program is executing which exceeds the user's assigned authority, then such a system will halt execution of the program.
  • Such prior art systems do not adequately protect computer users from computer viruses or the like.
  • the present invention is directed to providing reliable security, even when operating with complex data structures, e.g., objects, containing their own program instructions, which are transmitted among users.
  • the present invention also provides enhanced security when processing more conventional programs, even those of questionable origin, e.g., from a computer bulletin board, without exposing system programs or data to the potentially catastrophic consequences of computer viruses or of incompetent programming.
  • the present method and apparatus utilizes a unique operating system design that includes a system monitor which limits the ability of a program about to be executed to the use of predefined resources (e.g., data files, disk writing capabilities etc.).
  • the system monitor builds a data structure including a set of authorities defining that which a program is permitted to do and/or that which the program is precluded from doing.
  • program authorization information (or "PAI").
  • PAI program authorization information
  • the program authorization information is thereafter associated with each program to be executed to thereby delineate the types of resources and functions that the program is allowed to utilize.
  • the PAI associated with a particular program may be assigned by a computer system owner/user or by someone who the computer system owner/user implicitly trusts.
  • the PAI defines the range of operations that a program may execute and/or defines those operations that a program cannot perform.
  • the program is permitted to access what has been authorized and nothing else. In this fashion, the program may be regarded as being placed in a program capability limiting "safety box" This "safety box" is thereafter associated with the program such that whenever the system monitor runs the program, the PAI for that program is likewise loaded and monitored.
  • the associated PAI is monitored to confirm that the operation is within the defined program limits. If the program attempts to do anything outside the authorized limits, then the program execution is halted.
  • the present invention advantageously protects a user from any program to be executed.
  • the present invention is particularly advantageous in light of current data processing practices where programs are obtained from a wide range of diverse, untrustworthy places such as computer bulletin boards or other users of unknown trustworthiness.
  • the present invention contemplates that the above-described PAI may be, together with the program itself (or a hash of the program), digitally signed by some entity that the user trusts.
  • digital signatures are used to validate the PAI
  • the aforementioned PAI monitoring will also involve verifying a digital signature on a PAI to ensure that it belongs to an entity trusted by the user and that it is properly authorized and that it and the associated program have not been tampered with.
  • the present invention contemplates the use of the hierarchical trust digital signature certification systems such as that described in the inventor's U.S. Pat. Nos. 4,868,877 and 5,005,200 which patents are hereby incorporated by reference herein.
  • a single high level authorizing entity to securely delegate the authority to authorize programs among a number of other entities and to require co-signatures at any level, thereby inhibiting the possibility of error, fraud by the authorizing agents themselves.
  • This allows a single software validation group to service a large population, thereby substantially reducing the per capita expense to each user.
  • programs may be part of data objects, which are written in a high-level control language and are executed by a standardized interpreter program which executes this high-level language.
  • part of the interpreter's task is to verify that the functions encountered in the high level logic are, in fact, permissible. If such tasks are not permissible, the interpreter then suppresses the execution of the program not authorized to perform such tasks.
  • the present invention advantageously serves to bind limitations to programs so that it becomes impossible for covert programs or viruses to be introduced into the system. Users are protected through specifying details as to the functions that may be performed to ensure that programs which are intended for one function do not accidentally or intentionally cross-over and affect other unrelated or critical resources (so as to effect the spread of computer viruses). Through the use of the program authorization information in the manner described herein, it is possible for users to protect themselves against the programs they execute.
  • Administrative agents can effectively limit the scope of programs without the need to comprehend every aspect of the program's logic. Administrators can authorize and limit programs based on their intended functions and definitions to thereby reduce the dangers of program defects. In this fashion, the dangers of the distraught or mischievous programmer who might try to plant a software "time bomb" or virus can be limited.
  • the present invention also permits digital signatures to verify the PAI.
  • programs can be freely and safely exchanged within a large population, where all members trust the common high-level signing authority.
  • the present invention also allows an unlimited number of different resources and functions to be controlled.
  • some useful resources/functions which may be controlled include: the ability to limit a program to certain files or data sets; the ability to transmit data via electronic mail to someone outside the user's domain; the ability of a program to create or solicit digital signatures; the ability to limit access to a program of certain security classes, etc.
  • the present invention also provides the ability to limit whether a program can perform digital signature operations and limit how such signatures must be performed.
  • a program when a program is involved in soliciting a digital signature from a user, it is up to the program to make the user aware of the data to which the signature is being applied. Such is likely to be the case with electronic data interchange (EDI) transactions.
  • EDI electronic data interchange
  • the present invention provides a mechanism which protects the user from programs which solicit digital signatures.
  • general object oriented data may be transferred from user to user without exposing users to the potential dangers of viruses or mischievous users.
  • FIG. 1 shows in block diagram form an exemplary communications system which may be used in conjunction with the present invention
  • FIG. 2 is an illustration of a program authorization information data structure
  • FIGS. 3A-3D illustrate exemplary methods for associating program authorization information with a program
  • FIG. 4 is a general flowchart illustrating how a user may use the present invention in conjunction with a program of unknown origin
  • FIG. 5 is an illustration of a program control block data structure in accordance with an exemplary embodiment of the present invention.
  • FIGS. 6, 7, 8, 9A and 9B are a flowchart delineating the sequence of operations of a program for establishing program authorization information
  • FIGS. 10 and 11 illustrate the sequence of operations performed by a supervisor program in processing program authorization information.
  • FIG. 1 shows in block diagram form an exemplary communications system which may be used in conjunction with the present invention.
  • the system includes a communications channel 12 which may, for example, be an unsecured channel over which communications between terminals A, B, . . . N, may take place.
  • Communications channel 12 may, for example, be a telephone line.
  • Terminals, A, B . . . N may, by way of example only, be IBM PC's having a processor (with main memory) 2 which is coupled to a conventional keyboard/CRT display 4. Additionally, each processor is preferably coupled to a non-volatile program and program authorization information (PAI) storage 7 which may be a disk memory device.
  • PAI program and program authorization information
  • Each terminal, A, B . . . N also includes a conventional IBM communications board (not shown) which when coupled to a conventional modem 6, 8, 10, respectively, permits the terminals to transmit and receive messages.
  • Each terminal is capable of generating a message performing whatever digital signature operations may be required and transmitting the message to any of the other terminals connected to communications channel 12 (or a communications network (not shown), which may be connected to communications channel 12).
  • the terminals A, B . . . N are also capable of performing signature verification on each message as required.
  • FIG. 2 is an illustration of an exemplary program authorization information (PAI) data structure.
  • the PAI includes a set of authorizing specification segments 22-38 and a set of authorizing signature segments 40-48 (which may be optional in certain situations).
  • a header segment 20 precedes the authorizing specification segments, and defines the length of the program authorization information which follows.
  • the field length information permits the programmer to readily determine the extent of the associated authorization information in memory.
  • field 20 would serve to identify the point at which program authorization information segment 116 ends to locate program segment 118 shown in FIG. 3C.
  • Segments 22 and 24 are "hash” related segments.
  • a “hash” is a "one-way” function in which it is computationally infeasible to find two data values which hash to the same value.
  • the value obtained from applying the hashing function to the original aggregation of data is an unforgeable unique fingerprint of the original data. If the original data is changed in any manner, the hash of such modified data will likewise be different.
  • the hashing of related segments insures against the possibility that a properly authorized program in accordance with the present invention will be later tampered with to result in a modified program.
  • the hash may be later checked to insure that the associated program has not been modified after it has been authorized.
  • an identifier is stored to uniquely identify a particular hashing algorithm.
  • the PAI may optionally include a segment 26 which identifies the type of program (or object) to, for example, indicate that the associated program is a machine language program, an executive program of a particular type, etc.
  • a segment 26 which identifies the type of program (or object) to, for example, indicate that the associated program is a machine language program, an executive program of a particular type, etc.
  • the PAI may also includes fields identifying the name of the program at the time it was signed (segment 28) and the date of authorization (segment 29).
  • Section 30 is a segment which defines the size of the following series of authorization related entries. This field allows the remaining entries to be delimited as desired.
  • Each authorization entry which follows includes a segment defining the size of the particular entry (32).
  • Each entry likewise includes a segment 34 identifying the type of function or resource 34 to which it relates.
  • a wide range of functions may be defined such as, for example, whether the program may have the right to authorize other programs to solicit digital signatures.
  • Segment 36 specifies a specific function/resource falling within the generic type identified in segment 34. For example, specific user files may be designated in segment 36 to more specifically identify the "files" specified in segment 34. Segments 34 and 36 may, if desired, be combined in a single segment.
  • the reference to "wild card" in segment 36 is intended to, for example, indicate that a program may access any file having a predetermined prefix or suffix.
  • segment 36 may include an entry *DATA which may signify that the program may access any file ending with "DATA” or may alternatively signify that the program can not access the designated set of files. Such an entry may also indicate that the program can alter any program files. Segment 36 may thus specify not only what the program can do, but also what the program is not authorized to do.
  • Segment 38 shown in FIG. 2 specifies the level of authority which has been granted.
  • segment 38 may specify that the program is granted a level of authority permitting reading from a predetermined set of files, but is denied the authority to alter, or delete any such files.
  • the PAI is to be made available to different users (by virtue of the program being transmitted to desired recipients), then it may become desirable for the PAI to be digitally signed. Even within a single organization, it may be desirable to include an optional authorization signature.
  • the authorization signature includes a signature segment 40.
  • the signature segment 40 may include a reference to the signer's certificate, i.e., an identifier for identifying the signer's certificate.
  • a digital certificate is a digital message created by a trusted entity which contains the user's public key and the name of the user (which is accurate to the entity's satisfaction) and possibly a representation of the authority which has been granted to the user by the party who signs the digital message.
  • a signer's certificate is preferably created utilizing the teachings of the inventor's U.S. Pat. Nos. 4,868,877 and 5,005,200, which patents are hereby expressly incorporated herein by reference.
  • the certificate is constructed by the certifier to include the authority which is being granted and limitations and safeguards which are imposed including information which reflects issues of concern to the certifier, such as, for example, the monetary limit for the certifiee and the level of trust that is granted, to the certifiee.
  • the certificate may also specify co-signature and counter signature requirements being imposed upon the certifiee, as specifically taught in the above-identified U.S. patents.
  • the signature segment 40 may also include the signing date, and algorithm identifiers for both the hash and public key.
  • the segment 40 additionally includes the authority invoked for signing which specifies one or more authorities designated in a certificate to, for example, grant the authority to authorize programs to modify a predetermined file.
  • the signature will include a hash of the authorizing specification, e.g., including the entirety of segments 20 through 38 described above.
  • segment 42 The result of the signer's private key operation on the items identified in segment 40 is stored in segment 42.
  • This may be a standard digital signature such as defined in X.500 or may be in accordance with the enhanced digital signature teachings of the inventor's above-identified U.S. patents. Additional (a possible second to possible Nth) signatures (cosignatures) may be stored as indicated in segments 44, 46.
  • the authorization signature may also include the digital certificate for the above signatures in a segment 48. Alternatively, such certificates may be accessible from an identified data base (although it may be preferable to include the digital certificates for associated signatures so that signatures may be verified without the need to access any such data base).
  • the segments 40 through 48 constitute the authorization seal which is associated with the authorization specification described above. All further details regarding the digital certification/digital signature techniques referenced herein may be performed with any digital signature technology including standard technology such as X.500 or enhanced technology such as in accordance with the above-identified U.S. patents.
  • FIGS. 3A through 3D depict four exemplary approaches for associating program authorization information with a program.
  • FIG. 3A this figure exemplifies how program authorization information is stored, under access control, in association with a program.
  • FIG. 3A shows an exemplary schematic representation of a system's directory of programs. The directory includes data indicative of the name of each of the programs 1, 2, . . . N (80, 86 . . . 92, respectively).
  • each program name identifier Associated with each program name identifier is an indicator 82, 88, 94, respectively, which identifies the location on disk 98 of the associated program, for example, program 1 (104). Additionally, associated with each of the program related identifiers is an indicator 84, 90, . . . 96, respectively, which identifies the location of its associated program authorization information, e.g., PAI 1.
  • program authorization information, PAI 1 is depicted as being stored in a separate memory device 100, it may, if desired, be stored in the same memory media as its associated program.
  • the program authorization information associated with a program may or may not be digitally signed depending upon whether the program authorization information has been generated by the user himself (in which case it may need not be signed) or has been generated by a third party in which case the PAI frequently should be signed.
  • FIG. 3B shows another approach to associating a PAI with a program.
  • the program authorization information 110 is embedded with a program 112.
  • the authorizing information may optionally be digitally signed depending upon the source of the PAI.
  • FIG. 3C shows an important application in which a PAI data structure is associated with a program according to an embodiment of the present invention.
  • FIG. 3C shows an illustrative data structure for a secure exchangeable "object".
  • the data structure may be signed by a trusted authority. The signing of such a data structure allows the object to be securely transmitted from user to user.
  • the data structure shown in FIG. 3 is set forth in a general format, it may be structured as set forth in the inventor's copending application filed on Apr. 6, 1992 and entitled “Method and Apparatus for Creating, Supporting and Processing a Travelling Program" (U.S. Ser. No. 07/863,552.), which application is hereby expressly incorporated herein by reference.
  • the data structure includes a header segment 114 which, by way of example only, may define the type of object that follows, e.g., a purchase order related object or any other type of electronic digital object.
  • the program authorization information is embedded in a segment 116 which specifies the authorization for the object's program or programs in a manner to be described more fully hereinafter.
  • the data structure includes an object program(s) segment 118, which for example, may control the manner in which an associated purchase order is displayed so as to leave blanks for variable fields which are interactively completed by the program user.
  • the object program might store such data and send a copy of itself together with accompanying data in a manner which is described in detail in the applicant's above-identified copending application.
  • the program may be divided into several logical segments to accommodate different uses of the object. For example, the program may present a different display to the creator of a digital purchase order, than it displays to subsequent recipients.
  • the recipient invokes a copy of the transmitted program to, for example, control the display of the purchase order tailored to the needs of the recipient.
  • the recipient may verify all received data and add new data and the program may then send itself via the recipient's electronic mail system to, for example, a user who will actually ship the goods purchased.
  • the data structure shown in FIG. 3C additionally includes data segments 120 associated with the object which include a "variables" segment and data files segment, preferably as described in the above-identified patent application.
  • the data segment 120 may be partitioned such that data associated with each version or instance of the object will be separately stored and separately accessible, since different users may have different uses for the data structure shown in FIG. 3C. Therefore, the data will vary depending upon how it is collected from each user.
  • the program 118 will preferably remain intact for each user.
  • the trusted authority will sign the program together with the program authorization information (PAI) since it is the program itself which needs to be authorized rather than the data that is input in response to each execution of the program (since the data may change during each execution path and also since it is the program's responsibility to ensure that accurate digital signatures are properly collected on the input data).
  • PAI program authorization information
  • FIG. 3D exemplifies a situation in which many users access the same program (image)--each having their own (possibly distinct) Program Authorization Information 129 associated with it and maintained in a specific file belonging to the user.
  • FIG. 3D shows a system program directory 131, which identifies via an indicator associated with a program name, the location on a disk 132 of a program X.
  • program X is invoked by a user, the system checks to determine if the user has private PAI specification(s) (e.g., 133, 135, 137) that can be associated with that program.
  • PAI specification(s) e.g., 133, 135, 137
  • the present invention allows PAI information to be associated in any appropriate manner, so that in principle a user could define one or more levels of PAI which are then combined together with perhaps a more universal PAI, or with a PAI which was signed and supplied by the or manufacturer of this program.
  • the present invention contemplates that the association between a program and its PAI can be constructed very generally so that, if necessary, one program could be associated with multiple PAI's, or conversely, that one PAI could be applied to multiple programs; or some combination of these approaches. It therefore should be understood that, while for purposes of simplicity we generally discuss a single PAI in conjunction with a single program, this should not be considered in any way limiting.
  • FIG. 4 is a flowchart which illustrates how a user may benefit from the use of program authorization information, particularly when executing a program of unknown trustworthiness.
  • a user may have a desire to execute a program of interest in which the user has no knowledge of the program's creator.
  • the program has unknown trustworthiness and may, for example, have been accessed via an electronic bulletin board and may have arrived at the user's terminal via a telecommunications channel or diskette.
  • Such a program which might purport to be only a game, carries with it a significant risk that it may be infected by a virus.
  • the user may be protected by defining program authorization information which restricts the program to only unimportant or expendable files. If desired, the user may restrict such a program from modifying any files whatsoever. For example, the user may permit the program to only display images on the display screen and to perform game playing related functions. Alternatively, if the program is known to have a single work file, the PAI data may only permit use of such a single file. By limiting access only to a single work file, a program of unknown trustworthiness, cannot inject a virus into other user's programs or otherwise initiate system program malfunctions.
  • a user via a systems program, determines how much of the user's system will be put at risk by such a program so as to, for example, completely eliminate the ability of the program to use any privileged functions.
  • the user then associates, for example, through an operator prompting, menu-driven system, a PAI with every program to be run on the system (or have such PAI or lack of PAI associated through predetermined default mechanisms).
  • a system utility program is preferably employed to create the program authorization information in a manner which will be described in detail below in conjunction with FIGS. 6-9.
  • a program of unknown trust may be injected into the system via communications channel 12 or from a floppy disk loaded into terminal A.
  • the program may be initially stored in, for example, the user's program disk memory 7. Thereafter, the user on keyboard 4 will, through interaction with the system's program identified above (with respect to block 122 of FIG. 4), associate the program authorization information with a program (in a manner such as shown in FIGS. 3A through 3D) such that the program may safely run on the user's system or perhaps, a PAI arrives with the program, in which case it is likely to be signed.
  • FIG. 5 is an illustration of a program control block (PCB) data structure 140 in accordance with an exemplary embodiment of the present invention.
  • the program control block 140 is the data structure utilized by the system monitor to control the execution of an associated program.
  • the program control block 140 is loaded with program authorization information such that the PAI can be readily referenced as the associated program is executed so as to insure that the program performs functions and accesses resources in conformance with its assigned authorizations.
  • the program control block associated with the program to be executed is located in a storage area which cannot be modified by the program.
  • an originating program (whose PCB is identified at 180) calls a program (having a PCB 170) which will, in turn, will call the program 140 is shown in detail in FIG. 5.
  • Each new PCB will include a field such as 150 that points to the "previous" or calling program control block.
  • a field may also be utilized to identify the "next" program control block file.
  • the system When a called program finishes executing, the system removes its associated PCB from the top of the executed stack, removes the associated program from storage, removes the associated authorizing information and accesses the program control block immediately below it in the stack.
  • the reverse process occurs such that a new PCB is created which is placed on top of the stack, which again points to the previous PCB as indicated in field 150.
  • the program control block also includes a field 152 which is a pointer to the location in storage where the associated program is loaded, e.g., as indicated by memory segment 153, shown in FIG. 5. Additionally, the size of the program is indicated in field 154 (which thus indicates the amount of storage which will be released when the program finishes execution).
  • a field 156 of the program control block identifies the location in storage (157) of one or more PAI's (which are located in an area of storage which cannot be altered by associated programs).
  • the PAI's pointed to by field 156 are preferably structured in the manner indicated in FIG. 2 described above.
  • Field 158 identifies the entry address for the associated program. If the program, during its execution, calls another program, the field 158 is utilized to store the address at which program execution will be resumed, after the called program completes is execution.
  • the program control block also includes a set of locations (160) for storing status information such as, for example, program status words (PSW's), stack information, etc.
  • the program control block additionally includes a field 162 for storing information relating to an error or termination message if an error occurs during the execution of the program. Such a field may be available to the calling program to identify, for example, why the program terminated unsuccessfully. Field 162 may store an indication that the program successfully terminated.
  • the program control block 140 additionally includes various pointers which are maintained so that stray resources can be released when the program ends (164). Such pointers are useful to permit the release of resources which, for example, a programmer neglects to release.
  • FIGS. 6 through 9 is a flowchart illustrating an exemplary sequence of operations of a utility program for establishing program authorization information.
  • a utility program prompts a user, i.e., the end user, the end user's agent, or even the manufacturer, to define a range of authorities which are associated with a program to be executed by the user's system.
  • the user is prompted to supply the name of the program for which the PAI is to be established (202). Thereafter, the user is prompted to determine whether the PAI should be signed or not signed.
  • the PAI need not necessarily be signed if the PAI is for the user's own use and protection or if this PAI can be stored under satisfactory access control.
  • a determination is made (206) as to whether the user wishes to sign or does not wish to sign. If the user wishes to sign, then as indicated in block 208, a user's certificate is retrieved and a flag is set for later testing to indicate that a signature operation is being performed.
  • the user's certificate may be a conventional digital certificate or an enhanced digital certificate providing for the delegation of authority in accordance with the inventor's U.S. Pat. Nos. 4,868,877 and 5,005,200.
  • file access authority may be used to indicate authority with respect to any set of fields or file elements in a file, any set of data or data elements, or any set of files, etc. If the user selects file access authority, then the user will be prompted to specify a file name or a file stem or "wild card" file name pattern (214). As explained above, for example, a wild card file name pattern may be selected of the form DATA*, such that the program will be given the authority to access any file name beginning with the prefix "DATA”.
  • the user will be prompted to specify the type of file access (216).
  • the user may specify that the program's authority shall be limited to one or more of: only reading from files, inserting information into files, updating information in files, deleting information from files, erasing files, transmitting a file, etc. If file access or any other authority identified below in FIGS. 6-8 is selected, then an indication of this selection is stored and the routine branches to block 274 of FIG. 9 which will be described below.
  • Another way of qualifying programs eligible to be called by this program would be to specify that the called program must have no greater authority than the calling program.
  • the authority and need and on how the system chooses to combine the authority of invoking and invoked programs
  • it may even be appropriate to specify the method by which authority is to be combined with the called programs e.g., by using the called program's natural authority, by using the most restrictive authority of the invoked and invoker, etc.).
  • any reference to a qualification or restriction, or limitation or permission of a specified authority is intended to include an entire rule specification set based on any collection of appropriate criteria.
  • the terms "rule”, “set of”, “qualification”, etc. are used in their most general sense, whereby a specification can be determined by any type of rule, or compound set of rules, which can distinguish elements by any attribute, including, without limitation, for example: by direct specification, by indirect specification, by exclusion, by a list, by a "wild card” rule, or any other way which distinguishes elements by any appropriate attribute, method or criteria. Such distinction is intended to encompass specifications that include only a single element, that exclude all elements, or that include all elements.
  • the PAI may, in whole or in part, consist of any number of contiguous or discontiguous segments of data. In an appropriate context, there may be predefined rules which are formulated for that context, which are presumed in the absence of any explicit qualification.
  • indicate is generally intended to convey any type of appropriate association, including without limitation for example: direct specification, any type of pointer, reference, association, hash, linking value common identifier, etc.; it may include any level of indirection; it may be explicit, or it may, as appropriate to the context, be implicit in the absence of any explicit association.
  • limit is intended to refer to the general notion of a limit--it frequently is used in the common sense of a “restriction” over normal capability, but it is also intended to reflect situations in which the limit is defined beyond normal capabilities.
  • the present invention while it primarily focuses on defining functions which restrict the ability of a program to access resources normally allowed to users, could also, in an appropriate environment, be used to extend the capabilities beyond those normally allowed to a user. Thus, for example, programs whose PAI is signed by an authority recognized by the supervisor, could be allowed to perform extended functions.
  • the PAI may not need to be signed at all--such as when the user defines the PAI himself, or when a trusted administrator stores the PAI in trusted access controlled storage.
  • the PAI is signed, there are any number of ways in which signature verification could be accomplished--e.g., in accordance with the inventor's other patents, U.S. Pat. Nos. 4,868,877 and 5,005,200. It is likely that the user will have previously stored information defining the ultimate public key or certificate whose signature the user trusts.
  • Another aspect of this qualification may be to specify how the authority of this program is to be combined with the authority of an invoking program--e.g. , whether this program's effective authority is restricted by the caller's. Many other possibilities are also available, perhaps even differing for each type of authority.
  • the authority identified in block 222 is not selected, then the user is asked as to whether the program is to be allowed to transmit data to other users (226). If so, the above-identified processing in block 224 is performed to determine any qualifications to this authority.
  • any special memory access privileges e.g., access to storage reserved for certain operating system programs (234). If so, then the user will be prompted to specify any qualifications to such access privileges as appropriate.
  • certain programs may be intended solely for the purpose of performing certain calculations. Such a program might be designed such that there should not be any user interaction whatsoever. If such a program were to be tampered with, instructions may have been inserted to create an erroneous message to the user which may cause a security breach. For example, a screen may be displayed to the user that there has been a system failure and that it is necessary for the user to enter his secret password to resume operation. Such a program may automatically transmit the password to a party who will then have access to the password and any other information entered on such a screen.
  • this authority may be restricted, for example, by only permitting display in a special window, or only on special consoles.
  • a mischievous program might trick a user by displaying one set of information, but causing the actual digital signature to be applied to an entirely different set of digital material.
  • PAI authorization to solicit and/or perform digital signature operations
  • an unauthorized program is prevented from mimicking the external attributes of an authorized program, but internally applying the user's digital signature capability to fraudulent material.
  • the program is authorized to solicit digital signatures, limitations may be placed on this authority as indicated in block 248. Thus, the program may be only allowed to effect digital signatures on material with limited scope, value, authority or other characteristics.
  • security class 254
  • certain resources, files, etc. may be associated with a particular security class, such as secret, sensitive, etc. If such authority is to be associated with the program, then restrictions may likewise be specified, including designations of the particular security level (256).
  • the digital signature may be performed in accordance with the teachings in the inventor's U.S. Pat. Nos. 4,868,877 and 5,005,200 or by using more conventional digital signature and certification techniques as desired.
  • the PAI is stored using, for example, one of the approaches set forth in FIGS. 3A through 3D so that it is associated with its program 272 and the routine is thereafter exited.
  • routine branches to block 274 to determine whether the authority specification is being digitally signed. If the authority is not being digitally signed, then the newly defined authority is added to the authorization information for the associated program (280) and the routine branches back to block 210 at entry point G in FIG. 6.
  • FIGS. 10 and 11 illustrate the sequence of operations of a supervisor program for controlling the processing of a program being executed in accordance with its program authorization information.
  • the processing of a program "X" and its program authorization information illustrated in FIG. 10 is initiated while the computer is executing a supervisor routine.
  • a calling program calls program X for execution.
  • a program control block is created for program X.
  • the program control block created will not be added to the top of the execution stack until it is determined that the program is permitted to be invoked and verification is successful completed. Thus, if the program fails a security check, it will not be placed in the program execution chain.
  • the called program will be located through an appropriate program directory during the processing in block 302.
  • a well known manufacturer of programs has signed the program with a public key or digital certificate, then, if desired, such a program may be assigned whatever level of authority desired depending upon how much the manufacturer is trusted and the system may permit execution of such program.
  • Such a digital signature from the manufacturer can be used to verify that the associated program had not been infected with a virus since it can be determined whether or not the program is exactly the same as it was when it was generated by the manufacturer.
  • the manufacturer's "pedigree" will be verified by verifying the digital signature and performing whatever certification and authorization checks are appropriate, given the trust criteria which has previously been established by the user (and signed by a manufacturer in which the user has previously established trust).
  • Mechanisms for performing digital signatures which delegate authority are specified in detail in the inventor's U.S. Pat. Nos. 4,868,877 and 5,005,200, which patents have been expressly incorporated herein by reference.
  • routine branches to block 326 where storage is allocated for the program and the program is loaded in a manner to be described in detail below.
  • the system may permit a program to run under a minimum authority default as long as it does not attempt to modify any permanent file. If there is no minimum authority default, then the execution of the program is suppressed (324). In the process of suppressing the execution of the program, an error code or message will be returned to the calling program. For example, a message may be displayed to the calling program that "program X does not have valid, signed authorization.” The routine then branches to block 410 which operate to actually suppress the execution as will be explained further below.
  • processing in blocks 322 and 316 reveal that the signatures are valid, then the processing in block 326 is performed. Initially, storage is allocated for the program. The program may or may not be loaded into memory which only the supervisor is allowed to alter depending upon the constraints built into the computer system and the nature of the program. If the program modifies itself, then it cannot be loaded into memory which only the supervisor is allowed to alter.
  • program X's program authorizing information is combined, as appropriate, with the PAI associated with the PCB of the calling program, if any.
  • This combined PAI which may include multiple PAI's, is then stored in an area of storage which cannot generally be modified by the program and the address of the PAI is stored in the process control block (PCB) as indicated in field 156 of FIG. 5.
  • PCB process control block
  • program X is called by a calling program, it is subject to all its own constraints as well as being combined in some way with the constraints of the calling program, which aggregate constraints are embodied into program X's PAI. In this fashion, a calling program may not be permitted to exceed its assigned bounds by merely calling another program.
  • the minimum default authority is used.
  • Such minimum default authority is combined as appropriate with the PAI of the calling program, if any, and inserted into the new PCB as explained above in conjunction with block 326.
  • the storage for the PAI is allocated from memory that the program generally cannot alter. Thereafter, the storage is allocated for the program as explained above in conjunction with block 326 and the address is saved in the PCB.
  • the processing in block 328 using the default authority does not involve computing a hash of the program and the routine branches to block 334 to prepare for program execution.
  • the program is prepared for initial execution, after it has been determined that the hashes match or after the processing in block 328.
  • the preparation for initial execution includes setting initial status and "resume" information in the program's PCB so that the program will start at the proper entry point. Additionally, the program's PCB will be placed on the top of the execution stack.
  • block 336 the execution of the current program either starts or resumes execution upon being placed on top of the execution stack.
  • the processing which occurs in blocks 336 through 410 includes operations which are conventionally preformed to execute a program. Processing operations will now be described with emphasis on those operations involving PAI processing.
  • the supervisor prepares to continue a program at a saved "resume” point by reloading (or loading) the state of various registers to reflect their state at the point in time when the program was last interrupted (or initialized). Additionally, system status information is restored, e.g., such as stack pointers, etc., depending upon the particular system environment being utilized.
  • an examination is made of the PAI information stored in the process control block.
  • a check is made in block 342 to determine whether the examined PAI is allowed access to the required resources or allowed to perform the required functions. For example, if an attempt is made to use electronic mail, a check is made of the PAI to determine whether the program is authorized to perform electronic mail functions and if so whether the mailing is limited to a set of mail identifiers.
  • a error message is generated in block 344 to indicate that the program is attempting to exceed its limits, access to the resource or function is denied and an appropriate error code or message is generated.
  • a check is then made in block 350 to determine whether the program attempting to achieve access should be informed that it has been denied access (350). If the check in block 350 reveals that the program should be so informed, then in block 352, the program is allowed to resume execution with a message indicating the type of access violation that caused the request to fail and be suppressed. The routine then branches back to block 336 for resuming execution of the program.
  • the program may be informed, for example, that its PAI is only authorized to read authority for a particular file whereas an attempt was made to write to that file. If the check at block 350 indicates that the calling program should not be informed, then appropriate status and related messages (for the calling program) are generated indicating termination due to an unspecified access violation 356.
  • Block 346 applies conventional security techniques to protect the system from a user who is not properly authorized. This check may, for example, be based upon a user identification code initially entered into the system upon sign-on. As indicated at block 348, if the user was not authorized, then access is denied since the program is attempting to violate the user's access capability and appropriate error codes/messages are generated. Thereafter, the processing explained above with respect to block 350 and 352 is initiated.
  • the function is performed as indicated in block 354. If the function is a program exit, then the routine exits the program via block 358, where the associated PCB is removed from the top of the execution stack.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

Method and apparatus are disclosed including a system monitor which limits the ability of a program about to be executed to the use of predefined resources (e.g., data files, disk writing capabilities, etc.). The system monitor processes a data structure including a set of authorities defining that which a program is permitted to do and/or that which the program is precluded from doing. The set of authorities and/or restrictions assigned to a program to be executed are referred to as "program authorization information" (or "PAI"). Once defined, the program authorization information is thereafter associated with at least one program to be executed to thereby delineate the resources and functions that the program is allowed to utilize and/or is not allowed to utilize. The PAI associated with a particular program may be assigned by a computer system owner/user or by someone who the computer system owner/user implicitly trusts. The PAI permits an associated program to access what has been authorized and nothing else. The program may be regarded as being placed in a program capability limiting "safety box". This "safety box" is thereafter associated with the program such that when the system monitor runs the program, the PAI for that program is likewise loaded and monitored. When the program is to perform a function or access a resource, the associated PAI is monitored to confirm that the operation is within the defined program limits. If the program is prevented from doing anything outside the authorized limits.

Description

RELATED APPLICATION
This application is related to the applicant's application Ser. No. 08/070,787, which is a continuation of application Ser. No. 07/883,867 now abandoned, filed May 15, 1992 and entitled "COMPUTER SYSTEM SECURITY METHOD AND APPARATUS FOR CREATING AND USING PROGRAM AUTHORIZATION INFORMATION DATA STRUCTURES".
FIELD OF THE INVENTION
The present invention generally relates to a method and apparatus for providing digital information with enhanced security and protection. More particularly, the invention relates to a method and apparatus for providing enhanced computer system security while processing computer programs, particularly those of unknown origin, which are transmitted among users.
BACKGROUND AND SUMMARY OF THE INVENTION
The potentially devastating consequences of computer "viruses" have been widely publicized. A computer virus may be viewed as a computer program which, when executed, results in the performance of not only operations expected by the user, but also unexpected, often destructive, operations built into the program. A computer virus may also be viewed as a program which, when executed, takes a part of its code and places such code in other programs to thereby infect the other programs. The virus may modify other programs within the system, set various traps in the system, alter various control programs, erase or otherwise modify files in the system, etc.
Such a virus is typically maliciously constructed to have such undesirable side effects which damage, probe or compromise the user's data in unexpected ways. Problems with computer viruses are often compounded by the fact that the virus controlling program is typically executed "implicitly" when the user accesses certain necessary data so that the user is not even aware that the destructive program is executing.
The present invention provides protection from such viruses and also from programs which execute on a system but which are not actual computer virus carriers. In this regard, a program may have an unintended, adverse impact on a computer system and/or associated data. For example, an executing program may inadvertently cause certain user data to be sent to a third party. Such a program may have been the result of a programming error or may have been intentionally designed to cause a particular problem.
Prior art operating systems are typically designed to protect data from computer users. In such systems, users are often assigned various authorities and are thereafter able to execute programs based on their associated authority. If a program is executing which exceeds the user's assigned authority, then such a system will halt execution of the program. Such prior art systems do not adequately protect computer users from computer viruses or the like.
There are security systems which protect certain "system" related files from being modified by a program. However, such systems do not typically protect a computer user from a program executing and modifying the user's own files.
The present invention is directed to providing reliable security, even when operating with complex data structures, e.g., objects, containing their own program instructions, which are transmitted among users. The present invention also provides enhanced security when processing more conventional programs, even those of questionable origin, e.g., from a computer bulletin board, without exposing system programs or data to the potentially catastrophic consequences of computer viruses or of incompetent programming.
The present method and apparatus utilizes a unique operating system design that includes a system monitor which limits the ability of a program about to be executed to the use of predefined resources (e.g., data files, disk writing capabilities etc.). The system monitor builds a data structure including a set of authorities defining that which a program is permitted to do and/or that which the program is precluded from doing.
The set of authorities and/or restrictions assigned to a program to be executed are referred to herein as "program authorization information" (or "PAI"). Once defined, the program authorization information is thereafter associated with each program to be executed to thereby delineate the types of resources and functions that the program is allowed to utilize. The PAI associated with a particular program may be assigned by a computer system owner/user or by someone who the computer system owner/user implicitly trusts.
The PAI defines the range of operations that a program may execute and/or defines those operations that a program cannot perform. The program is permitted to access what has been authorized and nothing else. In this fashion, the program may be regarded as being placed in a program capability limiting "safety box" This "safety box" is thereafter associated with the program such that whenever the system monitor runs the program, the PAI for that program is likewise loaded and monitored. When the program is to perform a function or access a resource, the associated PAI is monitored to confirm that the operation is within the defined program limits. If the program attempts to do anything outside the authorized limits, then the program execution is halted.
Thus, the present invention advantageously protects a user from any program to be executed. The present invention is particularly advantageous in light of current data processing practices where programs are obtained from a wide range of diverse, untrustworthy places such as computer bulletin boards or other users of unknown trustworthiness.
The present invention contemplates that the above-described PAI may be, together with the program itself (or a hash of the program), digitally signed by some entity that the user trusts. When digital signatures are used to validate the PAI, the aforementioned PAI monitoring will also involve verifying a digital signature on a PAI to ensure that it belongs to an entity trusted by the user and that it is properly authorized and that it and the associated program have not been tampered with.
The present invention contemplates the use of the hierarchical trust digital signature certification systems such as that described in the inventor's U.S. Pat. Nos. 4,868,877 and 5,005,200 which patents are hereby incorporated by reference herein. In accordance with the teachings of these patents, it is possible for a single high level authorizing entity to securely delegate the authority to authorize programs among a number of other entities and to require co-signatures at any level, thereby inhibiting the possibility of error, fraud by the authorizing agents themselves. This allows a single software validation group to service a large population, thereby substantially reducing the per capita expense to each user.
In one contemplated embodiment of the present invention, programs may be part of data objects, which are written in a high-level control language and are executed by a standardized interpreter program which executes this high-level language. In this case, part of the interpreter's task is to verify that the functions encountered in the high level logic are, in fact, permissible. If such tasks are not permissible, the interpreter then suppresses the execution of the program not authorized to perform such tasks.
Many advantages flow from the use of the present invention. For example, the present invention advantageously serves to bind limitations to programs so that it becomes impossible for covert programs or viruses to be introduced into the system. Users are protected through specifying details as to the functions that may be performed to ensure that programs which are intended for one function do not accidentally or intentionally cross-over and affect other unrelated or critical resources (so as to effect the spread of computer viruses). Through the use of the program authorization information in the manner described herein, it is possible for users to protect themselves against the programs they execute.
Administrative agents can effectively limit the scope of programs without the need to comprehend every aspect of the program's logic. Administrators can authorize and limit programs based on their intended functions and definitions to thereby reduce the dangers of program defects. In this fashion, the dangers of the distraught or mischievous programmer who might try to plant a software "time bomb" or virus can be limited.
The present invention also permits digital signatures to verify the PAI. Thus, programs can be freely and safely exchanged within a large population, where all members trust the common high-level signing authority.
Even programs with no known trustworthiness can be used after program authorization information associates a wide range of restrictions to thereby allow potentially beneficial programs to be safely used--even if they do not have an official certification of trust.
The present invention also allows an unlimited number of different resources and functions to be controlled. For example, some useful resources/functions which may be controlled include: the ability to limit a program to certain files or data sets; the ability to transmit data via electronic mail to someone outside the user's domain; the ability of a program to create or solicit digital signatures; the ability to limit access to a program of certain security classes, etc.
The present invention also provides the ability to limit whether a program can perform digital signature operations and limit how such signatures must be performed. In many cases, when a program is involved in soliciting a digital signature from a user, it is up to the program to make the user aware of the data to which the signature is being applied. Such is likely to be the case with electronic data interchange (EDI) transactions. In this case, it is conceivable for a mischievous application program to show the user one set of data and yet feed another set of data for signature. In this case, the program has tricked the user into digitally signing totally different information than that which the user has been led to believe. The present invention provides a mechanism which protects the user from programs which solicit digital signatures.
Through the use of the present invention, general object oriented data may be transferred from user to user without exposing users to the potential dangers of viruses or mischievous users.
BRIEF DESCRIPTION OF THE DRAWINGS
These as well as other features of this invention will be better appreciated by reading the following description of the preferred embodiment of the present invention taken in conjunction with the accompanying drawings of which:
FIG. 1 shows in block diagram form an exemplary communications system which may be used in conjunction with the present invention;
FIG. 2 is an illustration of a program authorization information data structure;
FIGS. 3A-3D illustrate exemplary methods for associating program authorization information with a program;
FIG. 4 is a general flowchart illustrating how a user may use the present invention in conjunction with a program of unknown origin;
FIG. 5 is an illustration of a program control block data structure in accordance with an exemplary embodiment of the present invention;
FIGS. 6, 7, 8, 9A and 9B are a flowchart delineating the sequence of operations of a program for establishing program authorization information;
FIGS. 10 and 11 illustrate the sequence of operations performed by a supervisor program in processing program authorization information.
DETAILED DESCRIPTION OF THE DRAWINGS
FIG. 1 shows in block diagram form an exemplary communications system which may be used in conjunction with the present invention. The system includes a communications channel 12 which may, for example, be an unsecured channel over which communications between terminals A, B, . . . N, may take place. Communications channel 12 may, for example, be a telephone line. Terminals, A, B . . . N may, by way of example only, be IBM PC's having a processor (with main memory) 2 which is coupled to a conventional keyboard/CRT display 4. Additionally, each processor is preferably coupled to a non-volatile program and program authorization information (PAI) storage 7 which may be a disk memory device. Each terminal, A, B . . . N also includes a conventional IBM communications board (not shown) which when coupled to a conventional modem 6, 8, 10, respectively, permits the terminals to transmit and receive messages.
Each terminal is capable of generating a message performing whatever digital signature operations may be required and transmitting the message to any of the other terminals connected to communications channel 12 (or a communications network (not shown), which may be connected to communications channel 12). The terminals A, B . . . N are also capable of performing signature verification on each message as required.
FIG. 2 is an illustration of an exemplary program authorization information (PAI) data structure. The PAI includes a set of authorizing specification segments 22-38 and a set of authorizing signature segments 40-48 (which may be optional in certain situations).
A header segment 20 precedes the authorizing specification segments, and defines the length of the program authorization information which follows. The field length information permits the programmer to readily determine the extent of the associated authorization information in memory. Thus, if, for example, an object-oriented data structure (to be described below in conjunction with FIG. 3C) were to be utilized, field 20 would serve to identify the point at which program authorization information segment 116 ends to locate program segment 118 shown in FIG. 3C.
Segments 22 and 24 are "hash" related segments. As will be appreciated by those skilled in the art, a "hash" is a "one-way" function in which it is computationally infeasible to find two data values which hash to the same value. For all practical purposes, the value obtained from applying the hashing function to the original aggregation of data is an unforgeable unique fingerprint of the original data. If the original data is changed in any manner, the hash of such modified data will likewise be different.
The hashing of related segments insures against the possibility that a properly authorized program in accordance with the present invention will be later tampered with to result in a modified program. By storing the program hash in segment the hash may be later checked to insure that the associated program has not been modified after it has been authorized. In segment 22, an identifier is stored to uniquely identify a particular hashing algorithm.
The PAI may optionally include a segment 26 which identifies the type of program (or object) to, for example, indicate that the associated program is a machine language program, an executive program of a particular type, etc. By providing data identifying the type of program, the system is provided with some information regarding the nature of the operations to be performed by the program. Such information can provide an indication that something unexpected (and perhaps mischievous) is occurring. The PAI may also includes fields identifying the name of the program at the time it was signed (segment 28) and the date of authorization (segment 29).
Section 30 is a segment which defines the size of the following series of authorization related entries. This field allows the remaining entries to be delimited as desired.
Each authorization entry which follows includes a segment defining the size of the particular entry (32). Each entry likewise includes a segment 34 identifying the type of function or resource 34 to which it relates. A wide range of functions may be defined such as, for example, whether the program may have the right to authorize other programs to solicit digital signatures. Segment 36 specifies a specific function/resource falling within the generic type identified in segment 34. For example, specific user files may be designated in segment 36 to more specifically identify the "files" specified in segment 34. Segments 34 and 36 may, if desired, be combined in a single segment. The reference to "wild card" in segment 36 is intended to, for example, indicate that a program may access any file having a predetermined prefix or suffix. For example, a designation "A*" would indicate that the program may access any file identified by a tag beginning with "A". Similarly, the segment 36 may include an entry *DATA which may signify that the program may access any file ending with "DATA" or may alternatively signify that the program can not access the designated set of files. Such an entry may also indicate that the program can alter any program files. Segment 36 may thus specify not only what the program can do, but also what the program is not authorized to do.
Segment 38 shown in FIG. 2 specifies the level of authority which has been granted. For example, segment 38 may specify that the program is granted a level of authority permitting reading from a predetermined set of files, but is denied the authority to alter, or delete any such files.
If the PAI is to be made available to different users (by virtue of the program being transmitted to desired recipients), then it may become desirable for the PAI to be digitally signed. Even within a single organization, it may be desirable to include an optional authorization signature.
The authorization signature includes a signature segment 40. The signature segment 40 may include a reference to the signer's certificate, i.e., an identifier for identifying the signer's certificate. In accordance with a preferred embodiment of the present invention, such a digital certificate is a digital message created by a trusted entity which contains the user's public key and the name of the user (which is accurate to the entity's satisfaction) and possibly a representation of the authority which has been granted to the user by the party who signs the digital message. Such a signer's certificate is preferably created utilizing the teachings of the inventor's U.S. Pat. Nos. 4,868,877 and 5,005,200, which patents are hereby expressly incorporated herein by reference. In accordance with these patents, the certificate is constructed by the certifier to include the authority which is being granted and limitations and safeguards which are imposed including information which reflects issues of concern to the certifier, such as, for example, the monetary limit for the certifiee and the level of trust that is granted, to the certifiee. The certificate may also specify co-signature and counter signature requirements being imposed upon the certifiee, as specifically taught in the above-identified U.S. patents.
The signature segment 40 may also include the signing date, and algorithm identifiers for both the hash and public key. The segment 40 additionally includes the authority invoked for signing which specifies one or more authorities designated in a certificate to, for example, grant the authority to authorize programs to modify a predetermined file. Additionally, the signature will include a hash of the authorizing specification, e.g., including the entirety of segments 20 through 38 described above.
The result of the signer's private key operation on the items identified in segment 40 is stored in segment 42. This may be a standard digital signature such as defined in X.500 or may be in accordance with the enhanced digital signature teachings of the inventor's above-identified U.S. patents. Additional (a possible second to possible Nth) signatures (cosignatures) may be stored as indicated in segments 44, 46. Optionally, the authorization signature may also include the digital certificate for the above signatures in a segment 48. Alternatively, such certificates may be accessible from an identified data base (although it may be preferable to include the digital certificates for associated signatures so that signatures may be verified without the need to access any such data base). The segments 40 through 48 constitute the authorization seal which is associated with the authorization specification described above. All further details regarding the digital certification/digital signature techniques referenced herein may be performed with any digital signature technology including standard technology such as X.500 or enhanced technology such as in accordance with the above-identified U.S. patents.
In accordance with the present invention, a PAI is associated with programs to be executed. FIGS. 3A through 3D depict four exemplary approaches for associating program authorization information with a program. Turning first to FIG. 3A, this figure exemplifies how program authorization information is stored, under access control, in association with a program. FIG. 3A shows an exemplary schematic representation of a system's directory of programs. The directory includes data indicative of the name of each of the programs 1, 2, . . . N (80, 86 . . . 92, respectively).
Associated with each program name identifier is an indicator 82, 88, 94, respectively, which identifies the location on disk 98 of the associated program, for example, program 1 (104). Additionally, associated with each of the program related identifiers is an indicator 84, 90, . . . 96, respectively, which identifies the location of its associated program authorization information, e.g., PAI 1. Although the program authorization information, PAI 1, is depicted as being stored in a separate memory device 100, it may, if desired, be stored in the same memory media as its associated program. As indicated above, the program authorization information associated with a program may or may not be digitally signed depending upon whether the program authorization information has been generated by the user himself (in which case it may need not be signed) or has been generated by a third party in which case the PAI frequently should be signed.
FIG. 3B shows another approach to associating a PAI with a program. In this approach, the program authorization information 110 is embedded with a program 112. As described above in conjunction with FIG. 3A, the authorizing information may optionally be digitally signed depending upon the source of the PAI.
FIG. 3C shows an important application in which a PAI data structure is associated with a program according to an embodiment of the present invention. FIG. 3C shows an illustrative data structure for a secure exchangeable "object". The data structure may be signed by a trusted authority. The signing of such a data structure allows the object to be securely transmitted from user to user. Although the data structure shown in FIG. 3 is set forth in a general format, it may be structured as set forth in the inventor's copending application filed on Apr. 6, 1992 and entitled "Method and Apparatus for Creating, Supporting and Processing a Travelling Program" (U.S. Ser. No. 07/863,552.), which application is hereby expressly incorporated herein by reference.
The data structure includes a header segment 114 which, by way of example only, may define the type of object that follows, e.g., a purchase order related object or any other type of electronic digital object. The program authorization information is embedded in a segment 116 which specifies the authorization for the object's program or programs in a manner to be described more fully hereinafter.
The data structure includes an object program(s) segment 118, which for example, may control the manner in which an associated purchase order is displayed so as to leave blanks for variable fields which are interactively completed by the program user. The object program might store such data and send a copy of itself together with accompanying data in a manner which is described in detail in the applicant's above-identified copending application. As indicated in FIG. 3C, the program may be divided into several logical segments to accommodate different uses of the object. For example, the program may present a different display to the creator of a digital purchase order, than it displays to subsequent recipients. When the program is received by a recipient designated by the program, the recipient invokes a copy of the transmitted program to, for example, control the display of the purchase order tailored to the needs of the recipient. The recipient may verify all received data and add new data and the program may then send itself via the recipient's electronic mail system to, for example, a user who will actually ship the goods purchased.
The data structure shown in FIG. 3C additionally includes data segments 120 associated with the object which include a "variables" segment and data files segment, preferably as described in the above-identified patent application. The data segment 120 may be partitioned such that data associated with each version or instance of the object will be separately stored and separately accessible, since different users may have different uses for the data structure shown in FIG. 3C. Therefore, the data will vary depending upon how it is collected from each user. The program 118, however, will preferably remain intact for each user. The trusted authority will sign the program together with the program authorization information (PAI) since it is the program itself which needs to be authorized rather than the data that is input in response to each execution of the program (since the data may change during each execution path and also since it is the program's responsibility to ensure that accurate digital signatures are properly collected on the input data).
FIG. 3D exemplifies a situation in which many users access the same program (image)--each having their own (possibly distinct) Program Authorization Information 129 associated with it and maintained in a specific file belonging to the user. FIG. 3D shows a system program directory 131, which identifies via an indicator associated with a program name, the location on a disk 132 of a program X. In this case, whenever program X is invoked by a user, the system checks to determine if the user has private PAI specification(s) (e.g., 133, 135, 137) that can be associated with that program. Thus, different users may limit a program according to their own needs and perception of trust. This can be useful, for example, when users with great inherent authority, or who have been granted access to very important information, must occasionally execute "pedestrian" programs for mundane purposes. In this case, it may be prudent for such critical users to define a "safety box" around some (or many, or all) "pedestrian" programs, so that such programs may not inadvertently contain "trojan horses" or other faults which might affect their own especially critical data.
Therefore, such users could define general PAI "association", so that a protecting PAI could be automatically associated with all programs--except perhaps the select trusted few programs which handle crucial data.
The present invention allows PAI information to be associated in any appropriate manner, so that in principle a user could define one or more levels of PAI which are then combined together with perhaps a more universal PAI, or with a PAI which was signed and supplied by the or manufacturer of this program.
The present invention contemplates that the association between a program and its PAI can be constructed very generally so that, if necessary, one program could be associated with multiple PAI's, or conversely, that one PAI could be applied to multiple programs; or some combination of these approaches. It therefore should be understood that, while for purposes of simplicity we generally discuss a single PAI in conjunction with a single program, this should not be considered in any way limiting.
FIG. 4 is a flowchart which illustrates how a user may benefit from the use of program authorization information, particularly when executing a program of unknown trustworthiness. As indicated in block 121, a user may have a desire to execute a program of interest in which the user has no knowledge of the program's creator. Thus, the program has unknown trustworthiness and may, for example, have been accessed via an electronic bulletin board and may have arrived at the user's terminal via a telecommunications channel or diskette. Such a program, which might purport to be only a game, carries with it a significant risk that it may be infected by a virus.
As indicated in block 122, the user may be protected by defining program authorization information which restricts the program to only unimportant or expendable files. If desired, the user may restrict such a program from modifying any files whatsoever. For example, the user may permit the program to only display images on the display screen and to perform game playing related functions. Alternatively, if the program is known to have a single work file, the PAI data may only permit use of such a single file. By limiting access only to a single work file, a program of unknown trustworthiness, cannot inject a virus into other user's programs or otherwise initiate system program malfunctions. Thus, in accordance with the present invention, a user, via a systems program, determines how much of the user's system will be put at risk by such a program so as to, for example, completely eliminate the ability of the program to use any privileged functions. The user then associates, for example, through an operator prompting, menu-driven system, a PAI with every program to be run on the system (or have such PAI or lack of PAI associated through predetermined default mechanisms). A system utility program is preferably employed to create the program authorization information in a manner which will be described in detail below in conjunction with FIGS. 6-9.
After the PAI has been assigned, any time the system runs the associated program, the system software (in a manner to be described below) insures that the program safely runs in a manner consistent with the PAI. Thus, the program has been effectively placed in a "safety box" (124).
Turning back to FIG. 1, a program of unknown trust may be injected into the system via communications channel 12 or from a floppy disk loaded into terminal A. The program may be initially stored in, for example, the user's program disk memory 7. Thereafter, the user on keyboard 4 will, through interaction with the system's program identified above (with respect to block 122 of FIG. 4), associate the program authorization information with a program (in a manner such as shown in FIGS. 3A through 3D) such that the program may safely run on the user's system or perhaps, a PAI arrives with the program, in which case it is likely to be signed.
FIG. 5 is an illustration of a program control block (PCB) data structure 140 in accordance with an exemplary embodiment of the present invention. The program control block 140 is the data structure utilized by the system monitor to control the execution of an associated program.
The program control block 140 is loaded with program authorization information such that the PAI can be readily referenced as the associated program is executed so as to insure that the program performs functions and accesses resources in conformance with its assigned authorizations. The program control block associated with the program to be executed is located in a storage area which cannot be modified by the program.
As shown in FIG. 5, an originating program (whose PCB is identified at 180) calls a program (having a PCB 170) which will, in turn, will call the program 140 is shown in detail in FIG. 5. Each new PCB will include a field such as 150 that points to the "previous" or calling program control block. A field may also be utilized to identify the "next" program control block file.
When a called program finishes executing, the system removes its associated PCB from the top of the executed stack, removes the associated program from storage, removes the associated authorizing information and accesses the program control block immediately below it in the stack. When another program is called, the reverse process occurs such that a new PCB is created which is placed on top of the stack, which again points to the previous PCB as indicated in field 150.
The program control block also includes a field 152 which is a pointer to the location in storage where the associated program is loaded, e.g., as indicated by memory segment 153, shown in FIG. 5. Additionally, the size of the program is indicated in field 154 (which thus indicates the amount of storage which will be released when the program finishes execution).
A field 156 of the program control block identifies the location in storage (157) of one or more PAI's (which are located in an area of storage which cannot be altered by associated programs). The PAI's pointed to by field 156 are preferably structured in the manner indicated in FIG. 2 described above.
Field 158 identifies the entry address for the associated program. If the program, during its execution, calls another program, the field 158 is utilized to store the address at which program execution will be resumed, after the called program completes is execution.
The program control block also includes a set of locations (160) for storing status information such as, for example, program status words (PSW's), stack information, etc. The program control block additionally includes a field 162 for storing information relating to an error or termination message if an error occurs during the execution of the program. Such a field may be available to the calling program to identify, for example, why the program terminated unsuccessfully. Field 162 may store an indication that the program successfully terminated.
The program control block 140 additionally includes various pointers which are maintained so that stray resources can be released when the program ends (164). Such pointers are useful to permit the release of resources which, for example, a programmer neglects to release.
FIGS. 6 through 9 is a flowchart illustrating an exemplary sequence of operations of a utility program for establishing program authorization information. Such a utility program prompts a user, i.e., the end user, the end user's agent, or even the manufacturer, to define a range of authorities which are associated with a program to be executed by the user's system.
As shown in FIG. 6, after entering the utility program for establishing the PAI (200), the user is prompted to supply the name of the program for which the PAI is to be established (202). Thereafter, the user is prompted to determine whether the PAI should be signed or not signed. The PAI need not necessarily be signed if the PAI is for the user's own use and protection or if this PAI can be stored under satisfactory access control. Depending upon the user's input in block 204, a determination is made (206) as to whether the user wishes to sign or does not wish to sign. If the user wishes to sign, then as indicated in block 208, a user's certificate is retrieved and a flag is set for later testing to indicate that a signature operation is being performed. The user's certificate may be a conventional digital certificate or an enhanced digital certificate providing for the delegation of authority in accordance with the inventor's U.S. Pat. Nos. 4,868,877 and 5,005,200.
As indicated in block 210, the user is then prompted to designate what authority should be assigned to the program. It should be recognized that the authorities which follow (and the order in which they are presented) are provided for illustration purposes only and are not intended to be a complete list of all possible authorities which may be assigned in accordance with the present invention.
As illustrated in FIG. 6, a check is made to determine whether file access authority is to be invoked (212). A menu may be displayed to the user to provide for a selection of a file access authority (and each of the other authorities hereinafter referenced). It should be recognized that file access authority may be used to indicate authority with respect to any set of fields or file elements in a file, any set of data or data elements, or any set of files, etc. If the user selects file access authority, then the user will be prompted to specify a file name or a file stem or "wild card" file name pattern (214). As explained above, for example, a wild card file name pattern may be selected of the form DATA*, such that the program will be given the authority to access any file name beginning with the prefix "DATA".
Thereafter, the user will be prompted to specify the type of file access (216). In this regard, the user may specify that the program's authority shall be limited to one or more of: only reading from files, inserting information into files, updating information in files, deleting information from files, erasing files, transmitting a file, etc. If file access or any other authority identified below in FIGS. 6-8 is selected, then an indication of this selection is stored and the routine branches to block 274 of FIG. 9 which will be described below.
If the user did not select file access, then a check is made to determine if this is a request to authorize this program to invoke other programs (218). If so, then a determination is made (221) to ascertain what, if any, limitations or qualifications are to be established on which programs can be invoked. There are many ways that such qualifications could be defined and combined. For example, it may be that only one particular program name is allowed to be invoked; or perhaps only programs with a name matching a certain ("wild card") pattern may be invoked. Perhaps the criteria would also contain a specification of the library, or set of libraries, in which permissible programs may reside.
Another way of qualifying programs eligible to be called by this program would be to specify that the called program must have no greater authority than the calling program. Alternatively, depending on the authority and need (and on how the system chooses to combine the authority of invoking and invoked programs), it might be appropriate to require the invoked program to have no lesser authority than the invoking program. In fact, as part of this "invocation authority" qualification, it may even be appropriate to specify the method by which authority is to be combined with the called programs (e.g., by using the called program's natural authority, by using the most restrictive authority of the invoked and invoker, etc.).
As used herein, any reference to a qualification or restriction, or limitation or permission of a specified authority is intended to include an entire rule specification set based on any collection of appropriate criteria. The terms "rule", "set of", "qualification", etc., are used in their most general sense, whereby a specification can be determined by any type of rule, or compound set of rules, which can distinguish elements by any attribute, including, without limitation, for example: by direct specification, by indirect specification, by exclusion, by a list, by a "wild card" rule, or any other way which distinguishes elements by any appropriate attribute, method or criteria. Such distinction is intended to encompass specifications that include only a single element, that exclude all elements, or that include all elements. The PAI may, in whole or in part, consist of any number of contiguous or discontiguous segments of data. In an appropriate context, there may be predefined rules which are formulated for that context, which are presumed in the absence of any explicit qualification.
The terms "indicate", "points to", "address of", etc., are generally intended to convey any type of appropriate association, including without limitation for example: direct specification, any type of pointer, reference, association, hash, linking value common identifier, etc.; it may include any level of indirection; it may be explicit, or it may, as appropriate to the context, be implicit in the absence of any explicit association.
The term "limitations" is intended to refer to the general notion of a limit--it frequently is used in the common sense of a "restriction" over normal capability, but it is also intended to reflect situations in which the limit is defined beyond normal capabilities.
The present invention, while it primarily focuses on defining functions which restrict the ability of a program to access resources normally allowed to users, could also, in an appropriate environment, be used to extend the capabilities beyond those normally allowed to a user. Thus, for example, programs whose PAI is signed by an authority recognized by the supervisor, could be allowed to perform extended functions.
While some exemplary rules have been given regrading how the PAI should be verified, the particular implementation could vary widely. As indicated, in some cases the PAI may not need to be signed at all--such as when the user defines the PAI himself, or when a trusted administrator stores the PAI in trusted access controlled storage. When the PAI is signed, there are any number of ways in which signature verification could be accomplished--e.g., in accordance with the inventor's other patents, U.S. Pat. Nos. 4,868,877 and 5,005,200. It is likely that the user will have previously stored information defining the ultimate public key or certificate whose signature the user trusts.
Turning back to FIG. 6, if the user did not select program-invoking permission, then a check is made (220) to determine if this is a request to specify situations in which this program may be invoked. If so, then a determination is made (223) to ascertain limitations or qualifications of such authority. One such specification might be that the program must be invoked directly by the user (and perhaps this would be the default in lieu of any specification); perhaps this program could only be invoked by programs with names from a specific list, or from specific libraries similar to the "invoking authority" described above. Perhaps the program can only be invoked by programs with greater authority, or with lesser authority. Which rule is appropriate may be related to how the underlying system combines PAI authorizations for programs called by other programs. Another aspect of this qualification, may be to specify how the authority of this program is to be combined with the authority of an invoking program--e.g. , whether this program's effective authority is restricted by the caller's. Many other possibilities are also available, perhaps even differing for each type of authority.
Turning to FIG. 7, if the authority identified in block 220 was not selected, then a check is made to determine whether the program is to be allowed to generate electronic mail (222). If so, then a check is made as to whether this ability to generate electronic mail is to be qualified, e.g., restricted to certain individuals. If so, such further qualifications are specified by the user (224).
If the authority identified in block 222 is not selected, then the user is asked as to whether the program is to be allowed to transmit data to other users (226). If so, the above-identified processing in block 224 is performed to determine any qualifications to this authority.
If the authority identified in block 226 is not selected, then as indicated in block 228, a check is made to determine whether the program is allowed to perform "document release" operations. If so, then qualifications to this authority may be selected and stored by, for example, determining from the user the class of documents to which the authority applies (e.g., top secret, secret, sensitive, etc.). Alternatively, the documents to be released may not require "release" from a security point of view, but rather may relate to an engineering release of documents. In either event, any selected qualifications are recorded.
If the authority identified in block 228 is not selected, then a check is made to determine if the program is to be allowed to execute machine language programs (232). This authority may be useful to prevent certain routines from inappropriately executing or being executed as a machine language program. The user may be prompted to specify any appropriate qualifications 233. If the authority identified in block 232 is not selected, then a check is made to determine whether the program should be given any special memory access privileges, e.g., access to storage reserved for certain operating system programs (234). If so, then the user will be prompted to specify any qualifications to such access privileges as appropriate.
If the authority identified in block 234 is not selected, then a check is made to determine whether the program should have the authority to display information to the user (238). In this regard, certain programs may be intended solely for the purpose of performing certain calculations. Such a program might be designed such that there should not be any user interaction whatsoever. If such a program were to be tampered with, instructions may have been inserted to create an erroneous message to the user which may cause a security breach. For example, a screen may be displayed to the user that there has been a system failure and that it is necessary for the user to enter his secret password to resume operation. Such a program may automatically transmit the password to a party who will then have access to the password and any other information entered on such a screen.
If a program is given the authority to display information to the user, as indicated in block 240, this authority may be restricted, for example, by only permitting display in a special window, or only on special consoles.
If the authority identified in block 238 was not selected, then a check is made as indicated in the FIG. 8, block 242 as to whether the program is to have the authority to solicit input from the user. If so, then this authority may be qualified by specifying possible restrictions, for example, via soliciting from a special window or terminal, (244).
If the authority identified in block 242 is not selected, then a check is made as to whether the program is to have the authority to solicit digital signatures (246). In this regard, a mischievous program might trick a user by displaying one set of information, but causing the actual digital signature to be applied to an entirely different set of digital material. Thus, by requiring PAI authorization to solicit and/or perform digital signature operations, an unauthorized program is prevented from mimicking the external attributes of an authorized program, but internally applying the user's digital signature capability to fraudulent material.
If the program is authorized to solicit digital signatures, limitations may be placed on this authority as indicated in block 248. Thus, the program may be only allowed to effect digital signatures on material with limited scope, value, authority or other characteristics.
If the authority identified in block 246 is not selected, then a check is made to determine whether a program may have authority to direct robot devices, or any specified computer equipment or computer related devices. If such authority is selected, qualifications may be placed on such authority by specifying the details and scope of control over such equipment (252).
If the authority identified in block 250 is not selected, then a check is made to determine whether access is to be generally limited by security class (254). Thus, certain resources, files, etc. may be associated with a particular security class, such as secret, sensitive, etc. If such authority is to be associated with the program, then restrictions may likewise be specified, including designations of the particular security level (256).
If the authority identified in block 254 is not selected, then a check is made as to whether any other computer function or resources are to be controlled (258). If so, then the user is prompted to specify details as to such other computer functions or resources (260).
If the authority identified in block 258 is not selected, then a check is made to determine whether the user has finished specifying authority (262) as shown in FIG. 9A. If the user has not finished specifying authority, then a message is issued indicating that the user is attempting to specify an unknown authority specified (264) since the array of authority selections has, at this point, been exhausted. The routine then routine branches back to FIG. 6, at entry point G to resume processing at block 210.
If the user has finished specifying authority, as determined in block 262, all previously defined authorizations are collected and the PAI structure shown in FIG. 2 is completed, except for digital signature related entries.
A check is then made in block 268 to determine whether the PAI structure is to be digitally signed. If so, then the appropriate digital signature operation is performed on the PAI structure, as indicated in block 270. The digital signature may be performed in accordance with the teachings in the inventor's U.S. Pat. Nos. 4,868,877 and 5,005,200 or by using more conventional digital signature and certification techniques as desired. Thereafter, the PAI is stored using, for example, one of the approaches set forth in FIGS. 3A through 3D so that it is associated with its program 272 and the routine is thereafter exited.
Turning to FIG. 9B, at entry point F, after each of the authorizations described in regard to blocks 212 through 258 have been selected, and an indication of the selection recorded, the routine branches to block 274 to determine whether the authority specification is being digitally signed. If the authority is not being digitally signed, then the newly defined authority is added to the authorization information for the associated program (280) and the routine branches back to block 210 at entry point G in FIG. 6.
If the authority is to be digitally signed, then a check is made as to whether the enhanced certification (with authority) is being used in accordance with the inventor's U.S. Pat. Nos. 4,868,877 and 5,005,200 (276). If no, then the routine branches to block 280 as described above.
If enhanced digital certification is being used, then a check is made to determine whether the user's enhanced authority certificate, as described in the above-identified patents, permits assigning this particular program's authority specification. If the enhanced authority certificate does permit assigning such authority, then the above-identified processing in block 280 is performed. If not, then a message is issued to the user that "Your certificate does not permit assigning this level of program authority" as indicated in block 282. The routine then branches back to FIG. 6 and entry point G for the processing of block 210.
FIGS. 10 and 11 illustrate the sequence of operations of a supervisor program for controlling the processing of a program being executed in accordance with its program authorization information. The processing of a program "X" and its program authorization information illustrated in FIG. 10 is initiated while the computer is executing a supervisor routine. As shown in FIG. 10 at 300, a calling program calls program X for execution. Thereafter, a program control block is created for program X. The program control block created will not be added to the top of the execution stack until it is determined that the program is permitted to be invoked and verification is successful completed. Thus, if the program fails a security check, it will not be placed in the program execution chain. In addition to creating a "tentative" program control block, the called program will be located through an appropriate program directory during the processing in block 302.
Thereafter, a check is made at block 304 to determine whether PAI has yet been associated with program X so as to place program X in the so-called "safety box" described above. This PAI may or may not be signed depending upon its particular application as described above.
If no PAI has yet been associated with the program, then a check is made to determine whether the program has an associated signed "pedigree" from the manufacturer (306). Thus, if a well known manufacturer of programs has signed the program with a public key or digital certificate, then, if desired, such a program may be assigned whatever level of authority desired depending upon how much the manufacturer is trusted and the system may permit execution of such program. Such a digital signature from the manufacturer can be used to verify that the associated program had not been infected with a virus since it can be determined whether or not the program is exactly the same as it was when it was generated by the manufacturer.
If the check in block 306 indicates that there is a digital signature from the manufacturer in block 308, the manufacturer's "pedigree" will be verified by verifying the digital signature and performing whatever certification and authorization checks are appropriate, given the trust criteria which has previously been established by the user (and signed by a manufacturer in which the user has previously established trust). Mechanisms for performing digital signatures which delegate authority are specified in detail in the inventor's U.S. Pat. Nos. 4,868,877 and 5,005,200, which patents have been expressly incorporated herein by reference.
Depending upon the outcome of verification operations in block 308, a decision is made in block 320 as to whether the manufacturer's pedigree is acceptable. If the manufacturer's pedigree is not acceptable, the routine branches to block 324 where the execution of the program is suppressed, as will be explained further below.
If the manufacturer's pedigree is acceptable, then the routine branches to block 326 where storage is allocated for the program and the program is loaded in a manner to be described in detail below.
As indicated at block 310, if it is determined that a PAI has been associated with program X, a check is made to determine whether the PAI is signed. If the PAI is signed, then as indicated at block 316, the signatures are verified. In the presently preferred embodiment, signatures are verified through a certificate hierarchy. The preferred methodology for determining whether the signatures are valid and whether they are trusted by the caller and whether the authority delegated by the program is permitted to have been delegated by the signer is taught in the inventor's U.S. Pat. Nos. 4,868,877 and 5,005,200. As indicated in these patents, the trust level may be determined by which high level public keys, and/or metacertifiers have been specified as trusted by the user. Alternatively, more conventional digital signature techniques may be employed.
Depending upon the processing in block 316, a decision is made in block 322 whether the signatures are valid, authorized and trusted. If the signatures are not determined to be valid, then the routine branches to block 324 where the execution in program X is suppressed.
If the check in block 310 reveals that the PAI is not signed, then a further check is determined at 312 as to whether the particular system or application demands that the PAI be signed (312). If, for example, a user generated program is being executed for the user's own use, then no signature may be necessary since the program is not being distributed and the user trusts what he has done. If it is determined in block 312 that no digital signature was necessary, then block 318 would accept and use the unsigned PAI and storage would be allocated and the program X would be loaded (326).
If it is determined that a digital signature is necessary at block 312, then a check is made at block 314 as to whether the system has a "minimal" authority default for programs that have no explicit PAI or an unsigned PAI. Thus, for example, the system may permit a program to run under a minimum authority default as long as it does not attempt to modify any permanent file. If there is no minimum authority default, then the execution of the program is suppressed (324). In the process of suppressing the execution of the program, an error code or message will be returned to the calling program. For example, a message may be displayed to the calling program that "program X does not have valid, signed authorization." The routine then branches to block 410 which operate to actually suppress the execution as will be explained further below.
If the processing in blocks 322 and 316 reveal that the signatures are valid, then the processing in block 326 is performed. Initially, storage is allocated for the program. The program may or may not be loaded into memory which only the supervisor is allowed to alter depending upon the constraints built into the computer system and the nature of the program. If the program modifies itself, then it cannot be loaded into memory which only the supervisor is allowed to alter.
Thereafter, the program X's program authorizing information is combined, as appropriate, with the PAI associated with the PCB of the calling program, if any. This combined PAI, which may include multiple PAI's, is then stored in an area of storage which cannot generally be modified by the program and the address of the PAI is stored in the process control block (PCB) as indicated in field 156 of FIG. 5. Thus, if program X is called by a calling program, it is subject to all its own constraints as well as being combined in some way with the constraints of the calling program, which aggregate constraints are embodied into program X's PAI. In this fashion, a calling program may not be permitted to exceed its assigned bounds by merely calling another program. There are many alternative ways that a program's PAI could be combined with the PAI of the program which invokes it--depending on the strategies which are applicable to the current environment, and the inherent nature of the programs themselves. It may even be likely that even the method of combination is itself one of the PAI authorities, or qualifiers, of either or both the invoking or invoked program.
For example, it is reasonable to restrict a called program to the lesser of its "normal" PAI authority and that of its calling program--to insure the calling program cannot mischievously misuse the called program's greater authority to circumvent its own limitations.
On the other hand, for called programs which carefully verify their own actions, it could be possible to allow the called program greater inherent authority than the program which calls it--this way sensitive resources could be made available to wider use by mediating such use through trusted sub-programs. The possibilities for such combination must be carefully considered, not only by the designers of the underlying control system, but also by those who assign authority to each program. Thereafter, the program is loaded and the hash of the program is computed based on the algorithm specified in the program's PAI.
Turning back to block 314, if it is determined that the system has a minimum authority default, then as indicated at block 328, the minimum default authority is used. Such minimum default authority is combined as appropriate with the PAI of the calling program, if any, and inserted into the new PCB as explained above in conjunction with block 326. The storage for the PAI is allocated from memory that the program generally cannot alter. Thereafter, the storage is allocated for the program as explained above in conjunction with block 326 and the address is saved in the PCB. The processing in block 328 using the default authority does not involve computing a hash of the program and the routine branches to block 334 to prepare for program execution.
Turning to block 330, a check is made to determine whether the computed program hash in block 326 agrees the hash stored in the PAI. If the hashes do not match, then the routine branches to block 332 in which an error message is forwarded to the calling program such as "program X has been altered or damaged" and the routine branches to block 410 to suppress execution of the program.
In block 334, the program is prepared for initial execution, after it has been determined that the hashes match or after the processing in block 328. The preparation for initial execution includes setting initial status and "resume" information in the program's PCB so that the program will start at the proper entry point. Additionally, the program's PCB will be placed on the top of the execution stack.
Turning to FIG. 11, in block 336 the execution of the current program either starts or resumes execution upon being placed on top of the execution stack. The processing which occurs in blocks 336 through 410 includes operations which are conventionally preformed to execute a program. Processing operations will now be described with emphasis on those operations involving PAI processing. In block 336, the supervisor prepares to continue a program at a saved "resume" point by reloading (or loading) the state of various registers to reflect their state at the point in time when the program was last interrupted (or initialized). Additionally, system status information is restored, e.g., such as stack pointers, etc., depending upon the particular system environment being utilized.
After the processing in block 336, if an application program is being executed, then the system switches from a "supervisor" mode to a "isolation" mode so that the program resumes execution in the isolation mode (338). In the isolation mode, the program is unable to affect computer resources except through protected supervisor calls which switch the computer back to the "supervisor" mode (it is noted that in certain cases and in certain environments, it may be possible that the program is designed and required to run in a "supervisor" mode. In this case, provided the program is properly authorized as defined in its PAI, it will at some point use a "supervisor" function to set the status in its PCB to enable "supervisor" state operation. In such case, it would be appropriate to check that status and if set, to give control to the program supervisor state.).
In block 340, it is presumed that the program has requested a controlled "supervisor" function. Under such circumstances the computer switches, e.g., by setting a predetermined status word, to the "supervisor" mode and passes control to a protected system monitor interrupt routine. The program's resume position is saved in the program's PCB and other appropriate system status is saved in the PCB. Afterwards the function and resources to be accessed are determined and the nature of the access, e.g., to read, to modify, and delete, etc.
Additionally, in block 340, an examination is made of the PAI information stored in the process control block. As a follow up to, or associated with, the processing in block 340, a check is made in block 342 to determine whether the examined PAI is allowed access to the required resources or allowed to perform the required functions. For example, if an attempt is made to use electronic mail, a check is made of the PAI to determine whether the program is authorized to perform electronic mail functions and if so whether the mailing is limited to a set of mail identifiers.
If the check at 342 reveals that the PAI does not allow the attempted function or resource access, then a error message is generated in block 344 to indicate that the program is attempting to exceed its limits, access to the resource or function is denied and an appropriate error code or message is generated. A check is then made in block 350 to determine whether the program attempting to achieve access should be informed that it has been denied access (350). If the check in block 350 reveals that the program should be so informed, then in block 352, the program is allowed to resume execution with a message indicating the type of access violation that caused the request to fail and be suppressed. The routine then branches back to block 336 for resuming execution of the program. Under such circumstances, the program may be informed, for example, that its PAI is only authorized to read authority for a particular file whereas an attempt was made to write to that file. If the check at block 350 indicates that the calling program should not be informed, then appropriate status and related messages (for the calling program) are generated indicating termination due to an unspecified access violation 356.
If the check in block 342 reveals that the PAI does allow access to the function or resource, then a check is made in block 346 to apply conventional access controls to ensure that the user of the program is still within the bounds of his authority. This check ensures that the function or resource request is within the scope of that allowed by the system for this particular user. Thus, while a PAI may allow a program to access a certain class of files, it may be that the security level associated with a particular user may not allow that user access to such files. Block 346 applies conventional security techniques to protect the system from a user who is not properly authorized. This check may, for example, be based upon a user identification code initially entered into the system upon sign-on. As indicated at block 348, if the user was not authorized, then access is denied since the program is attempting to violate the user's access capability and appropriate error codes/messages are generated. Thereafter, the processing explained above with respect to block 350 and 352 is initiated.
If the user is authorized as determined by the processing in block 346, then the function is performed as indicated in block 354. If the function is a program exit, then the routine exits the program via block 358, where the associated PCB is removed from the top of the execution stack.
Further termination processing is performed in block 410, where any stray storage and resources that were accumulated during the execution of the program are released, including as necessary, the storage assigned to program X and its PAI storage. The PCB and all associated storage are released and final status information including error codes and messages, as appropriate are presented to the program's caller. Thereafter the routine branches back to block 336 to resume the calling program.
Finally, turning back to block 354, if a program call is the function to be performed, then the routine branches to block 300 in FIG. 10 to call the appropriate program.
While the invention has been described in connection with what is presently considered to be the most practical and preferred embodiment, it is to be understood that the invention is not to be limited to the disclosed embodiment, but on the contrary, is intended to cover various modifications and equivalent arrangements included within the spirit and scope of the appended claims.

Claims (181)

What is claimed is:
1. In a digital computer system having a digital data processing means for executing a plurality of digital programs and a memory means for storing digital program instructions and digital data, apparatus for protecting a digital computer user from operations typically performable by a digital computer program executing on behalf of a user comprising:
means for storing a plurality of digital authorization entries in said memory means, wherein said entries qualify operations which an associated program is permitted to perform when executed by said processing means; and
means for storing in at least one segment, digital data for associating said authorization entries with at least one program.
2. Apparatus for protecting a digital computer user according to claim 1, wherein said at least one segment includes means for storing a hash of said associated program.
3. Apparatus for protecting a digital computer user according to claim 1, wherein said at least one segment includes means for storing an indication of the type of program to which the data structure is associated.
4. Apparatus for protecting a digital computer user according to claim 1, wherein said at least one segment includes means for storing an identifier indicating the type of object to which program authorization information is associated.
5. Apparatus for protecting a digital computer user according to claim 2, wherein said at least one segment further includes means for storing an identifier of the algorithm used to hash the program.
6. Apparatus for protecting a digital computer user according to claim 1, wherein said at least one segment includes means for storing the name of the program.
7. Apparatus for protecting a digital computer user according to claim 1, wherein said at least one segment includes means for storing the date of authorization.
8. Apparatus for protecting a digital computer user according to claim 1, further including means for storing an indication of the size of the authorization information contained in the data structure.
9. Apparatus for protecting a digital computer user according to claim 1, wherein the means for storing a plurality of authorization entries includes means for storing an indication of the size of each entry.
10. Apparatus for protecting a digital computer user according to claim 1, wherein the means for storing a plurality of authorization entries includes means for indicating at least one of the type of function and resource said at least one program is permitted to perform for each of said entries.
11. Apparatus for protecting a digital computer user according to claim 1, wherein the means for storing a plurality of authorization entries includes means for storing a qualification of authority which has been granted to the program.
12. Apparatus for protecting a digital computer user according to claim 1, further including means for storing a digital signature.
13. Apparatus for protecting a digital computer user according to claim 12, wherein said means for storing a digital signature includes means for storing an indicator to identify a signer's certificate.
14. Apparatus for protecting a digital computer user according to claim 12, further including means for storing at least an indication of the authority granted to the signing party.
15. Apparatus for protecting .a digital computer user in accordance with claim 1, further including means for storing data indicating a money limit.
16. Apparatus for protecting a digital computer user in accordance with claim 15, wherein said money limit limits the operation of said associated program.
17. Apparatus for protecting a digital computer user in accordance with claim 15, wherein said money limit defines the limits of a transaction.
18. Apparatus for protecting a digital computer user in accordance with claim 15, further including means for storing a digital signature, wherein said money limit reflects an authority limit of the party digitally signing the program.
19. Apparatus for protecting a digital computer user according to claim 12, further including means for storing an indication that a plurality of digital signatures are necessary for at least one signature to be considered valid.
20. Apparatus for protecting a digital computer user according to claim 12, wherein said means for storing a digital signature includes means for storing a hash of at least part of said plurality of authorization entries.
21. Apparatus for protecting a digital computer user according to claim 12, wherein said means for storing a digital signature includes means for storing a result of a signer's private key operation.
22. Apparatus for protecting a digital computer user in accordance with claim 1, wherein said means for storing a plurality of authorization entries includes means for storing an indication of the set of data to which said associated program has authority to access.
23. Apparatus for protecting a digital computer user in accordance with claim 1, wherein said means for storing a plurality of authorization entries includes means for storing an indication of the set of fields of at least one file to which said associated program has the authority to access.
24. Apparatus for protecting a digital computer user in accordance with claim 1, wherein said means for storing a plurality of authorization entries includes means for storing an indication of the set of files to which said associated program has the authority to access.
25. Apparatus for protecting a digital computer user in accordance with claim 1, wherein said means for storing a plurality of authorization entries includes means for storing an indication of the set of data to which said associated program has authority to read.
26. Apparatus for protecting a digital computer user in accordance with claim 1, wherein said means for storing a plurality of authorization entries includes means for storing an indication of the set of data to which said associated program has authority to process and an indication of the nature of the allowed processing.
27. Apparatus for protecting a digital computer user in accordance with claim 1, wherein said means for storing a plurality of authorization entries includes means for storing an indication of the set of data to which said associated program has authority to modify.
28. Apparatus for protecting a digital computer user in accordance with claim 1, wherein said means for storing a plurality of authorization entries includes means for storing an indication of the set of data to which said associated program has authority to erase.
29. Apparatus for protecting a digital computer user in accordance with claim 1, wherein said means for storing a plurality of authorization entries includes means for storing an indication of the set of data to which said associated program has authority to transmit.
30. Apparatus for protecting a digital computer user in accordance with claim 1, wherein said means for storing a set of authorization entries includes means for storing whether said associated program has the ability to call programs.
31. Apparatus for protecting a digital computer user in accordance with claim 30, further including means for storing an indication of the authority to call programs with more extensive program authorization information authority than the associated program.
32. Apparatus for protecting a digital computer user in accordance with claim 30, further including means for storing an indication of the authority to call programs with different program authorization information authority than the associated program.
33. Apparatus for protecting a digital computer user in accordance with claim 1, further including means for storing whether said associated program has the ability to call programs and for storing an indication of the set of programs which said associated program is permitted to call.
34. Apparatus for protecting a digital computer user in accordance with claim 1, further including means for storing an indication of the method of combining the authority of said associated program and the programs it is permitted to call.
35. Apparatus for protecting a digital computer user in accordance with claim 34, wherein said indicated method of combining involves using an authority associated with said associated program.
36. Apparatus for protecting a digital computer user in accordance with claim 34, wherein said indicated method of combining involves using an authority associated with the called program.
37. Apparatus for protecting a digital computer user in accordance with claim 34, wherein said indicated method of combining involves using the lesser of the authority indicated for the invoked program and the authority indicated for the associated program.
38. Apparatus for protecting a digital computer user in accordance with claim 1, wherein said means for storing a plurality of authorization entries includes means for storing an indication as to whether the associated program can be invoked by another program.
39. Apparatus for protecting a digital computer user in accordance with claim 38, further including means for storing an indication of the set of programs by which said associated program is permitted to be invoked.
40. Apparatus for protecting a digital computer user in accordance with claim 38, further including means for storing an indication of the method of combining the authority of said associated program and the programs by which it is permitted to be invoked.
41. Apparatus for protecting a digital computer user in accordance with claim 38, wherein a method of combining program authority is used which involves an authority associated with said associated program.
42. Apparatus for protecting a digital computer user in accordance with claim 38, wherein a method of combining program authority is used which involves an authority associated with the invoking program.
43. Apparatus for protecting a digital computer user in accordance with claim 40, wherein the indicated method of combining involves using the lesser of the authority indicated for the invoking program and the authority indicated for the associated program.
44. Apparatus for protecting a digital computer user in accordance with claim 1, wherein said means for storing a plurality of authorization entries includes means for storing an indication as to whether the associated program can be invoked by another program having a different program authorizing information than said associated program.
45. Apparatus for protecting a digital computer user in accordance with claim 1, wherein said means for storing a plurality of authorization entries includes means for storing an indication of whether the associated program has authority to generate electronic mail.
46. Apparatus for protecting a digital computer user in accordance with claim 45, wherein said means for storing an indication of whether the associated program has authority to generate electronic mail includes means for storing an indication of a set of allowed recipients.
47. Apparatus for protecting a digital computer user in accordance with claim 1, wherein said means for storing a plurality of authorization entries includes means for storing an indication of whether said associated program has authority to transmit data to other users.
48. Apparatus for protecting a digital computer user in accordance with claim 47, wherein said means for storing an indication of whether the associated program has authority to transmit data to other users includes means for storing an indication of a set of allowed recipients.
49. Apparatus for protecting a digital computer user according to claim 1, wherein said means for storing a plurality of authorization entries includes means for storing an indication as to whether said associated program has authority to perform document release operations.
50. Apparatus for protecting a digital computer user according to claim 1, wherein said means for storing a plurality of authorization entries includes means for storing an indication of whether said associated program has authority to execute machine language programs.
51. Apparatus for protecting a digital computer user according to claim 1, wherein said means for storing a plurality of authorization entries further includes means for storing an indication of the memory access privileges authorized to the associated program.
52. Apparatus for protecting a digital computer user according to claim 1, wherein said means for storing a plurality of authorization entries includes means for storing an indication of at least one qualification on said associated program regarding the ability to display information to a user.
53. Apparatus for protecting a digital computer user according to claim 1, wherein said means for storing a plurality of authorization entries includes means for storing an indication of at least one qualification on said associated program regarding the ability to solicit input from a user.
54. Apparatus for protecting a digital computer user according to claim 1, wherein said means for storing a plurality of authorization entries includes means for storing an indication of at least one qualification on the program regarding the ability to solicit digital signatures from a user.
55. Apparatus for protecting a digital computer user according to claim 1, wherein said means for storing a plurality of authorization entries includes means for storing an indication that digital signatures must be collected from a plurality of users.
56. Apparatus for protecting a digital computer user according to claim 1, wherein said means for storing a plurality of authorization entries includes means for storing an indication of at least one qualification on the program regarding the ability to control other devices.
57. Apparatus for protecting a digital computer user according to claim 56, wherein said other devices includes robot devices.
58. Apparatus for protecting a digital computer user according to claim 1, wherein said means for storing a plurality of authorization entries includes means for storing an indication that access is limited by a security clearance.
59. Apparatus for protecting a digital computer user according to claim 1, wherein said plurality of authorization entries are included as part of a digital signature.
60. Apparatus for protecting a digital computer user according to claim 1, wherein said plurality of authorization entries are included as part of a digital signature and wherein said associated data structure includes an indication of authority which is possessed by the signer.
61. In a digital computer system for providing improved computer security having digital data processing means for executing a plurality of digital computer programs for a computer user and memory means for storing digital program instructions and digital data, apparatus for protecting a digital computer user from operations typically performable by a digital computer program executing on behalf of a user comprising:
means for storing digital authorization information in said memory means which restricts an associated program from performing operations, when executed by said processing means, which are available to said computer user; and
means for storing in at least one segment digital data for associating said authorization information with at least one program to be executed by said processing means.
62. Apparatus for protecting a digital computer user according to claim 61 further including means for storing a hash of said associated computer program.
63. Apparatus for protecting a digital computer user according to claim 61, wherein said at least one segment includes means for storing an indication of the type of program to which the data structure is associated.
64. Apparatus for protecting a .digital computer user according to claim 61, wherein said at least one segment includes means for storing an identifier indicating the type of object to which program authorization information is associated.
65. Apparatus for protecting a digital computer user according to claim 62, wherein said at least one segment further includes means for storing an identifier of the algorithm used to hash the program.
66. Apparatus for protecting a digital computer user according to claim 61, wherein said at least one segment includes means for storing the name of the program.
67. Apparatus for protecting a digital computer user according to claim 61, wherein said at least one segment includes means for storing the date of authorization.
68. Apparatus for protecting a digital computer user according to claim 61, further including means for storing an indication of the size of the authorization information.
69. Apparatus for protecting a digital computer user according to claim 61, wherein the means for storing authorization information includes means for storing a plurality of authorization information and an indication of the size of each entry.
70. Apparatus for protecting a digital computer user according to claim 61, wherein the means for storing authorization information includes means for indicating at least one of the type of function and resource.
71. Apparatus for protecting a digital computer user according to claim 61, wherein the means for storing authorization information includes means for storing a qualification of authority which has been granted to the program.
72. Apparatus for protecting a digital computer user according to claim 61, further including means for storing a digital signature.
73. Apparatus for protecting a digital computer user according to claim 72, wherein said means for storing a digital signature includes means for storing an indicator to identify a signer's certificate.
74. Apparatus for protecting a digital computer user according to claim 72, further including means for storing at least an indication of the authority granted to the signing party.
75. Apparatus for protecting a digital computer user according to claim 61, further including means for storing a money qualification indication.
76. Apparatus for protecting a digital computer user in accordance with claim 75, wherein said money limit governs the operation of said associated program.
77. Apparatus for protecting a digital computer user in accordance with claim 75, wherein said money qualification defines the limits of a transaction.
78. Apparatus for protecting a digital computer user in accordance with claim 75, further including means for storing a digital signature, wherein said money qualification reflects an authority limit of the party digitally signing the program.
79. Apparatus for protecting a digital computer user according to claim 72, further including means for storing a cosignature requirement which is necessary for the signature to be considered valid.
80. Apparatus for protecting a digital computer user according to claim 72, wherein said means for storing a digital signature includes means for storing a hash of at least part of said authorization.
81. Apparatus for protecting a digital computer user according to claim 72, wherein said means for storing a digital signature includes means for storing a result of a signer's private key operation.
82. Apparatus for protecting a digital computer user in accordance with claim 61, wherein said means for storing authorization information includes means for storing an indication of the set of data to which said associated program has authority access.
83. Apparatus for protecting a digital computer user in accordance with claim 61, wherein said means for storing authorization information includes means for storing an indication of the set of fields of at least one file to which said associated program has the authority to access.
84. Apparatus for protecting a digital computer user in accordance with claim 61, wherein said means for storing authorization information includes means for storing an indication of the set of data to which said associated program has the authority to access and the nature of the operations to said data which the program is permitted to perform.
85. Apparatus for protecting a digital computer user in accordance with claim 61, wherein said means for storing authorization information includes means for storing an indication of the set of data to which said associated program has authority to read.
86. Apparatus for protecting a digital computer user in accordance with claim 61, wherein said means for storing authorization information includes means for storing an indication of the set of data to which said associated program has authority to process.
87. Apparatus for protecting a digital computer user in accordance with claim 61, wherein said means for storing authorization information includes means for storing an indication of the set of data to which said associated program has authority to modify.
88. Apparatus for protecting a digital computer user in accordance with claim 61, wherein said means for storing authorization information includes means for storing an indication of the set of data to which said associated program has authority to erase.
89. Apparatus for protecting a digital computer user in accordance with claim 61, wherein said means for storing authorization information includes means for storing an indication of the set of data to which said associated program has authority to transmit.
90. Apparatus for protecting a digital computer user in accordance with claim 61, wherein said means for storing authorization information includes means for storing whether said associated program has the ability to call programs.
91. Apparatus for protecting a digital computer user in accordance with claim 61, further including means for storing an indication of the set of programs which the associated program is allowed to invoke.
92. Apparatus for protecting a digital computer user in accordance with claim 61, further including means for storing an indication of the authority to call programs with different program authorization information authority than the associated program.
93. Apparatus for protecting a digital computer user in accordance with claim 61, further including means for storing authorization information reflecting a combination of the authorization of the calling program and that associated with the called program.
94. Apparatus for protecting a digital computer user in accordance with claim 61, further including means for storing an indication of the method of combining the authority of said associated program and the programs it is permitted to call.
95. Apparatus for protecting a digital computer user in accordance with claim 94, wherein said indicated method of combining involves using an authority associated with said associated program.
96. Apparatus for protecting a digital computer user in accordance with claim 94, wherein said indicated method of combining involves using an authority associated with the called program.
97. Apparatus for protecting a digital computer user in accordance with claim 94, wherein said indicated method of combining involves using the lesser of the authority indicated for the invoked program and the authority indicated for the associated program.
98. Apparatus for protecting a digital computer user in accordance with claim 61, wherein said means for storing authorization information includes means for storing an indication of the set of programs which are allowed to invoke said associated program.
99. Apparatus for protecting a digital computer user in accordance with claim 98, further including means for storing an indication of the set of programs by which said associated program is permitted to be invoked.
100. Apparatus for protecting a digital computer user in accordance with claim 98, further including means for storing an indication of the method of combining the authority of said associated program and the programs by which it is permitted to be invoked.
101. Apparatus for protecting a digital computer user in accordance with claim 61, wherein the indicated method of combining involves using an authority associated with said associated program.
102. Apparatus for protecting a digital computer user in accordance with claim 100, wherein the indicated method of combining involves using an authority associated with the invoking program.
103. Apparatus for protecting a digital computer user in accordance with claim 100, wherein the indicated method of combining involves using the lesser of the authority specified for the invoking program and the authority associated with the associated program.
104. Apparatus for protecting a digital computer user in accordance with claim 61, wherein said means for storing authorization information includes means for storing an indication as to whether the associated program can be invoked by another program having a different program authorizing information than said associated program.
105. Apparatus for protecting a digital computer user in accordance with claim 61, wherein said means for storing authorization information includes means for storing an indication of at least one rule governing the authority of the associated program to generate electronic mail.
106. Apparatus for protecting a digital computer user in accordance with claim 105, wherein said means for storing an indication of at least one rule governing the authority of the associated program to generate electronic mail includes means for indicating a set of allowed recipients.
107. Apparatus for protecting a digital computer user in accordance with claim 61, wherein said means for storing authorization information includes means for storing an indication of at least one rule governing the authority of said associated program to transmit data to other users.
108. Apparatus for protecting a digital computer user in accordance with claim 107, wherein said means for storing an indication of at least one rule governing the authority of said associated program transmit data to other users includes means for indicating a set of allowed recipients.
109. Apparatus for protecting a digital computer user according to claim 61, wherein said means for storing at least one rule governing the authority of said authorization information includes means for storing an indication of associated program to perform document release.
110. Apparatus for protecting a digital computer user according to claim 61, wherein said means for storing authorization information includes means for storing an indication of at least one rule governing the authority of said associated program to execute machine language programs.
111. Apparatus for protecting a digital computer user according to claim 61, wherein said means for storing authorization information further includes means for storing an indication of at least one rule governing the authority of said associated program to access memory.
112. Apparatus for protecting a digital computer user according to claim 61, wherein said means for storing authorization information includes means for storing an indication of at least one rule governing the authority of said associated program to display information to a user.
113. Apparatus for protecting a digital computer user according to claim 61, wherein said means for storing authorization information includes means for storing an indication of at least one rule governing the authority of said associated program to solicit input from a user.
114. Apparatus for protecting a digital computer user according to claim 61, wherein said means for storing authorization information includes means for storing an indication of at least one rule governing the authority of said associated program to solicit digital signatures from a user.
115. Apparatus for protecting a digital computer user according to claim 61, wherein said means for storing authorization information includes means for storing an indication of at least one rule governing the authority of said associated program to control other devices.
116. Apparatus for protecting a digital computer user according to claim 115, wherein said other devices includes robot devices.
117. Apparatus for protecting a digital computer user according to claim 61, wherein said means for storing authorization information includes means for storing an indication of at least one rule indicating that access is governed by a security clearance.
118. Apparatus for protecting a digital computer user according to claim 61, wherein said authorization information is included as part of a digital signature.
119. Apparatus for protecting a digital computer user according to claim 118, further including means for storing an indication of the authority possessed by the signer.
120. In a digital computer system having digital data processing means for executing a plurality of digital computer programs for a computer user and memory means for storing digital program instructions and digital data, a method for providing improved computer security comprising the steps of:
storing digital authorization information in said memory means which restricts an associated program from accessing resources when executed by said digital data processing means which are accessible to said computer user; and
storing in at least one segment, digital data for associating said authorization information with at least one program to be executed by said processing means for said computer user.
121. A method according to claim 120 further including storing a hash of said associated computer program.
122. A method according to claim 120, further including storing an indication of the type of program to which the authorization information is associated.
123. A method according to claim 120, further including storing an identifier indicating the type of object to which program authorization information is associated.
124. A method according to claim 121, further including storing an identifier of the algorithm used to hash the program.
125. A method according to claim 120, further including storing the name of the program.
126. A method according to claim 120, further including storing the date of authorization.
127. A method according to claim 120, further including storing an indication of the size of the authorization information.
128. A method according to claim 120 wherein the step of storing authorization information includes the steps of storing a plurality of authorization entries and storing an indication of the size of each entry.
129. A method according to claim 120, wherein the step of storing authorization information includes indicating at least one of the type of function and resource.
130. A method according to claim 120, wherein the step of storing authorization information includes storing a qualification of authority which has been granted to the program.
131. A method according to claim 120, further including storing a digital signature.
132. A method according to claim 131, wherein said step of storing a digital signature includes storing an indicator to identify a signer's certificate.
133. A method according to claim 131, further including storing at least an indication of the authority granted to the signing party.
134. A method according to claim 120, further including storing a money limit indication.
135. A method in accordance with claim 134, wherein said money limit limits the operation of said associated program.
136. A method in accordance with claim 134, wherein said money limit defines the limits of a user transaction.
137. A method in accordance with claim 134, further including storing a digital signature wherein said money limit reflects an authority limit of the party digitally signing the program.
138. A method according to claim 131, further including storing a cosignature requirement which is necessary for the signature to be considered valid.
139. A method according to claim 131 wherein said step of storing a digital signature includes the step of storing a hash of at least part of said authorization information.
140. A method according to claim 131, wherein said step of storing a digital signature includes storing a result of a signer's private key operation.
141. A method in accordance with claim 133, wherein said step of storing authorization information includes storing an indication of the set of data to which said associated program has authority access.
142. A method in accordance with claim 120, wherein said step of storing authorization information includes storing an indication of the set of fields of at least one file to which said associated program has the authority to access.
143. A method in accordance with claim 120, wherein said step of storing authorization information Includes storing an indication of the set of files to which said associated program has the authority to access.
144. A method in accordance with claim 120, wherein said step of storing authorization information includes storing an indication of the set of data to which said associated program has authority to read.
145. A method in accordance with claim 120, wherein said step of storing authorization information Includes storing an indication of the set of data to which said associated program has authority to process and the rules for processing.
146. A method in accordance with claim 120, wherein said step of storing authorization information includes storing an indication of the set of data to which said associated program has authority to modify.
147. A method in accordance with claim 120, wherein said step of storing authorization information includes storing an indication of the set of data to which said associated program has authority to erase.
148. A method in accordance with claim 120, wherein said step of storing authorization information includes storing an indication of the set of data to which said associated program has authority to transmit.
149. A method in accordance with claim 120, wherein said step of storing authorization information includes storing whether said associated program has the ability to call programs.
150. A method in accordance with claim 120, further including storing an indication of the set of programs which the associated program is allowed to invoke.
151. A method in accordance with claim 120, further including storing an indication of the authority to call programs with different program authorization information authority than the associated program.
152. A method in accordance with claim 120, further including storing authorization information reflecting a combination of the authorization of the calling program and that associated with the called program.
153. A method in accordance with claim 120, further including storing an indication of the authority to call programs with more extensive program authorization information authority than the associated program
154. A method in accordance with claim 120 further including storing an indication of the authority to call programs with different program authorization information authority than the associated program
155. A method according to claim 120 further including storing an indication of the set of programs which said associated program is permitted to call.
156. A method in accordance with claim 120, further including storing an indication of the method of combining the authority of said associated program with the programs it calls.
157. A method in accordance with claim 156, wherein said indicated method of combining involves using an authority associated with said associated program.
158. A method in accordance with claim 156, wherein said indicated method of combining involves using an authority associated with the called program.
159. A method in accordance with claim 156, wherein said indicated method of combining involves using the lesser of the authority indicated for the invoked program and the authority indicated for the associated program.
160. A method in accordance with claim 120, wherein said step of storing authorization information includes storing an indication of the set of programs which are allowed to invoke.
161. A method in accordance with claim 160, further including storing an indication of the set of programs by which said associated program is permitted to be invoked.
162. A method in accordance with claim 160, further including storing an indication of the method of combining the authority of said associated program with the programs by which it is invoked.
163. A method in accordance with claim 162, wherein the indicated method of combining involves using an authority associated with said associated program.
164. A method in accordance with claim 162, wherein the indicated method of combining involves using an authority associated with the invoking program.
165. A method in accordance with claim 162, wherein the indicated method of combining involves using the lesser of the authority specified for the invoking program and the authority associated with the associated program.
166. A method in accordance with claim 120, wherein said step of storing authorization information includes storing an indication as to whether the associated program can be invoked by another program having a different program authorizing information than said associated program.
167. A method in accordance with claim 120, wherein said the step of storing authorization information includes storing an indication of at least one rule governing the authority of the associated program to generate electronic mail.
168. A method in accordance with claim 167, wherein said indication of at least one rule governing the authority of the associated program to generate electronic mail includes the indication of a set of allowed recipients.
169. A method in accordance with claim 120, wherein said step of storing authorization information includes storing an indication of at least one rule governing the authority of said associated program to transmit data to other users.
170. A method in accordance with claim 169, wherein said indication of at least one rule governing the authority of said associated program transmit data to other users includes an indication a set of allowed recipients.
171. A method according to claim 120, wherein said at least one rule governing the authority of said authorization information includes an indication of associated program to perform document release.
172. A method according to claim 120, wherein said authorization information includes an indication of at least one rule governing the authority of said associated program to execute machine language programs.
173. A method according to claim 120, wherein said step of storing authorization information further includes the step of storing an indication of at least one rule governing the authority of said associated program has special memory access privileges.
174. A method according to claim 120, wherein said step of storing authorization information includes storing an indication of at least one rule governing the authority of said associated program to display information to a user.
175. A method according to claim 120, wherein said step of storing authorization information includes storing an indication of at least one rule governing the authority of said associated program to solicit input from a user.
176. A method according to claim 120, wherein said step storing authorization information includes storing an indication of at least one rule governing the authority of said associated program to solicit digital signatures from a user.
177. A method according to claim 120, wherein said step of storing authorization information includes storing an indication of at least one rule governing the authority of said associated program to control other devices.
178. A method according to claim 177, wherein said other devices includes robot devices.
179. A method according to claim 120, wherein said step of storing authorization information includes storing an indication of at least one rule indicating that access is limited by a security clearance.
180. A method according to claim 120, wherein said authorization information is included as part of a digital signature.
181. A data structure according to claim 180, further including the step of storing an indication of the authority possessed by the signer.
US07/883,868 1992-05-15 1992-05-15 Computer system security method and apparatus having program authorization information data structures Expired - Lifetime US5412717A (en)

Priority Applications (10)

Application Number Priority Date Filing Date Title
US07/883,868 US5412717A (en) 1992-05-15 1992-05-15 Computer system security method and apparatus having program authorization information data structures
AT93303223T ATE177857T1 (en) 1992-05-15 1993-04-26 METHOD AND DEVICE FOR SECURING A COMPUTER SYSTEM WITH PROGRAM AUTHORIZATION DATA STRUCTURES
ES93303223T ES2128393T3 (en) 1992-05-15 1993-04-26 METHOD AND APPARATUS FOR COMPUTER SYSTEMS WITH INFORMATION DATA STRUCTURES FOR AUTHORIZATION PROGRAMS.
EP93303223A EP0570123B1 (en) 1992-05-15 1993-04-26 Computer system security method and apparatus having program authorization information data structures
DE69323926T DE69323926T2 (en) 1992-05-15 1993-04-26 Method and device for the security of a computer system with program authorization data structures
CA002095087A CA2095087C (en) 1992-05-15 1993-04-28 Computer system security method and apparatus having program authorization information data structures
AU38209/93A AU672786B2 (en) 1992-05-15 1993-04-28 Computer system security method and apparatus having program authorization information data structures
JP11315793A JP3784423B2 (en) 1992-05-15 1993-05-14 Improved method for data security and computer system
US08/070,787 US5311591A (en) 1992-05-15 1993-06-03 Computer system security method and apparatus for creating and using program authorization information data structures
JP2005358699A JP3880607B2 (en) 1992-05-15 2005-12-13 Program authorization information data structure

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/883,868 US5412717A (en) 1992-05-15 1992-05-15 Computer system security method and apparatus having program authorization information data structures

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US08/070,787 Continuation US5311591A (en) 1992-05-15 1993-06-03 Computer system security method and apparatus for creating and using program authorization information data structures

Publications (1)

Publication Number Publication Date
US5412717A true US5412717A (en) 1995-05-02

Family

ID=25383494

Family Applications (2)

Application Number Title Priority Date Filing Date
US07/883,868 Expired - Lifetime US5412717A (en) 1992-05-15 1992-05-15 Computer system security method and apparatus having program authorization information data structures
US08/070,787 Expired - Lifetime US5311591A (en) 1992-05-15 1993-06-03 Computer system security method and apparatus for creating and using program authorization information data structures

Family Applications After (1)

Application Number Title Priority Date Filing Date
US08/070,787 Expired - Lifetime US5311591A (en) 1992-05-15 1993-06-03 Computer system security method and apparatus for creating and using program authorization information data structures

Country Status (1)

Country Link
US (2) US5412717A (en)

Cited By (211)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5646992A (en) * 1993-09-23 1997-07-08 Digital Delivery, Inc. Assembly, distribution, and use of digital information
US5652837A (en) * 1993-03-22 1997-07-29 Digital Equipment Corporation Mechanism for screening commands issued over a communications bus for selective execution by a processor
US5689561A (en) * 1995-10-06 1997-11-18 Pace; Michael Computer-based trading card system and method
EP0813132A2 (en) * 1996-06-11 1997-12-17 International Business Machines Corporation Support for trusted software distribution
US5710814A (en) * 1996-07-23 1998-01-20 Cheyenne Property Trust Cryptographic unit touch point logic
US5734719A (en) * 1993-10-15 1998-03-31 International Business Systems, Incorporated Digital information accessing, delivery and production system
US5740248A (en) * 1996-11-12 1998-04-14 Cheyenne Property Trust Software level touchpoints for an international cryptography frameworks
US5742759A (en) * 1995-08-18 1998-04-21 Sun Microsystems, Inc. Method and system for facilitating access control to system resources in a distributed computer system
US5748960A (en) * 1993-08-10 1998-05-05 Fischer; Addison M. Method and apparatus for validating travelling object-oriented programs with digital signatures
EP0845733A2 (en) * 1996-11-27 1998-06-03 Sun Microsystems, Inc. Implementing digital signatures for data streams and data archives
US5778070A (en) * 1996-06-28 1998-07-07 Intel Corporation Method and apparatus for protecting flash memory
EP0871134A2 (en) * 1997-04-11 1998-10-14 Informix Software, Inc. Accessing database information
WO1999009484A1 (en) * 1997-08-14 1999-02-25 Mordhai Barkan System and method for handling permits
US5878417A (en) * 1996-11-20 1999-03-02 International Business Machines Corporation Method and apparatus for network security in browser based interfaces
US5892900A (en) 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US5910987A (en) 1995-02-13 1999-06-08 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US5915085A (en) * 1997-02-28 1999-06-22 International Business Machines Corporation Multiple resource or security contexts in a multithreaded application
US5920861A (en) 1997-02-25 1999-07-06 Intertrust Technologies Corp. Techniques for defining using and manipulating rights management data structures
US5933503A (en) * 1996-03-15 1999-08-03 Novell, Inc Controlled modular cryptography apparatus and method
US5940590A (en) * 1997-05-31 1999-08-17 International Business Machines Corporation System and method for securing computer-executable program code using task gates
US5943422A (en) 1996-08-12 1999-08-24 Intertrust Technologies Corp. Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels
US5958005A (en) * 1997-07-17 1999-09-28 Bell Atlantic Network Services, Inc. Electronic mail security
US5978484A (en) * 1996-04-25 1999-11-02 Microsoft Corporation System and method for safety distributing executable objects
US5987123A (en) * 1996-07-03 1999-11-16 Sun Microsystems, Incorporated Secure file system
EP0965094A2 (en) * 1996-11-08 1999-12-22 Finjan Software, Ltd. System and method for protecting a computer and a network from hostile downloadables
US6058482A (en) * 1998-05-22 2000-05-02 Sun Microsystems, Inc. Apparatus, method and system for providing network security for executable code in computer and communications networks
US6061656A (en) * 1995-10-06 2000-05-09 Pace; Michael Computer-based trading card system and method
US6065118A (en) * 1996-08-09 2000-05-16 Citrix Systems, Inc. Mobile code isolation cage
EP1000400A1 (en) * 1997-06-17 2000-05-17 Purdue Pharma LP Self-destructing document and e-mail messaging system
US6098170A (en) * 1997-05-21 2000-08-01 At&T Corporation System and method for using a second resource to store a data element from a first resource in a first-in first-out queue
US6101603A (en) * 1997-05-21 2000-08-08 At&T Corporation System and method for using a second resource to store a data element from a first resource in a first-in last-out stack
US6112181A (en) 1997-11-06 2000-08-29 Intertrust Technologies Corporation Systems and methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information
US6112304A (en) * 1997-08-27 2000-08-29 Zipsoft, Inc. Distributed computing architecture
US6134324A (en) * 1991-07-31 2000-10-17 Lsi Logic Corporation Method and system for distributing a plurality of software products, and limiting access thereto
US6145080A (en) * 1996-07-01 2000-11-07 International Business Machine Corporation Method for safely transferring data and applications onto a chipcard
US6157721A (en) 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US6167521A (en) * 1997-08-29 2000-12-26 International Business Machines Corporation Securely downloading and executing code from mutually suspicious authorities
EP1065861A1 (en) * 1999-06-28 2001-01-03 Alcatel Method to provide authorization, a certifying authority, a terminal, a service provider and a certificate realizing such a method
US6175924B1 (en) * 1997-06-20 2001-01-16 International Business Machines Corp. Method and apparatus for protecting application data in secure storage areas
US6188995B1 (en) * 1997-07-28 2001-02-13 Apple Computer, Inc. Method and apparatus for enforcing software licenses
US6212542B1 (en) * 1996-12-16 2001-04-03 International Business Machines Corporation Method and system for executing a program within a multiscalar processor by processing linked thread descriptors
US6226618B1 (en) 1998-08-13 2001-05-01 International Business Machines Corporation Electronic content delivery system
US6237094B1 (en) 1997-05-21 2001-05-22 At&T Corporation System and method for using a second resource to store a data element from a first resource in a first-in first-out queue
US20010008557A1 (en) * 1997-02-28 2001-07-19 Stefik Mark J. System for controlling the distribution and use of rendered digital works through watermarking
US6279111B1 (en) 1998-06-12 2001-08-21 Microsoft Corporation Security model using restricted tokens
US20010023417A1 (en) * 1994-11-23 2001-09-20 Stefik Mark J. System for controlling the distribution and use of digital works using digital tickets
US20010025281A1 (en) * 2000-03-27 2001-09-27 International Business Machines Corporation Method for access control of aggregated data
US6308274B1 (en) 1998-06-12 2001-10-23 Microsoft Corporation Least privilege via restricted tokens
US6308273B1 (en) 1998-06-12 2001-10-23 Microsoft Corporation Method and system of security location discrimination
US6367012B1 (en) * 1996-12-06 2002-04-02 Microsoft Corporation Embedding certifications in executable files for network transmission
US6389403B1 (en) 1998-08-13 2002-05-14 International Business Machines Corporation Method and apparatus for uniquely identifying a customer purchase in an electronic distribution system
US6389534B1 (en) * 1997-06-30 2002-05-14 Taher Elgamal Cryptographic policy filters and policy control method and apparatus
US6397330B1 (en) 1997-06-30 2002-05-28 Taher Elgamal Cryptographic policy filters and policy control method and apparatus
WO2002044995A2 (en) * 2000-11-28 2002-06-06 Setec Oy Installation of programs into microcircuit
US20020116367A1 (en) * 2001-02-17 2002-08-22 Richard Brown Digital certificates
US20020120848A1 (en) * 2001-02-17 2002-08-29 Marco Casassa Mont Digital certificates
US6446144B1 (en) 1998-04-01 2002-09-03 Microsoft Corporation Method and system for message transfer session management
US6446206B1 (en) * 1998-04-01 2002-09-03 Microsoft Corporation Method and system for access control of a message queue
US20020126869A1 (en) * 2000-12-29 2002-09-12 Xin Wang Multi-stage watermarking process and system
US20020162004A1 (en) * 2001-04-25 2002-10-31 Gunter Carl A. Method and system for managing access to services
US20020158904A1 (en) * 2001-04-25 2002-10-31 Gunter Carl A. Method for automatically generating list of meeting participants and delegation permission
US20020162019A1 (en) * 2001-04-25 2002-10-31 Berry Michael C. Method and system for managing access to services
US20020161999A1 (en) * 2001-04-25 2002-10-31 Gunter Carl A. Method and system for expediting delegation of permission
US20020178375A1 (en) * 2001-01-31 2002-11-28 Harris Corporation Method and system for protecting against malicious mobile code
US20020184508A1 (en) * 1999-03-08 2002-12-05 Bialick William P. Method and system for enforcing access to a computing resource using a licensing attribute certificate
US20020184158A1 (en) * 2001-05-31 2002-12-05 Bijan Tadayon Method and apparatus for establishing usage rights for digital content to be created in the future
US20020184156A1 (en) * 2001-05-31 2002-12-05 Bijan Tadayon Method and apparatus for transferring usage rights and digital work having transferrable usage rights
US20020184159A1 (en) * 2001-05-31 2002-12-05 Bijan Tadayon Demarcated digital content and method for creating and processing demarcated digital works
US20020194473A1 (en) * 2001-06-13 2002-12-19 Pope David E. Method and apparatus for transmitting authentication credentials of a user across communication sessions
US20020198845A1 (en) * 2001-06-07 2002-12-26 Contentguard Holdings, Inc. Method and apparatus for supporting multiple trust zones in a digital rights management system
US20020198843A1 (en) * 2001-01-17 2002-12-26 Xin Wang Method and apparatus for distributing enforceable property rights
US20020198846A1 (en) * 2001-05-31 2002-12-26 Guillermo Lao Method and system for subscription digital rights management
US6505300B2 (en) * 1998-06-12 2003-01-07 Microsoft Corporation Method and system for secure running of untrusted content
US20030009424A1 (en) * 2001-05-31 2003-01-09 Contentguard Holdings, Inc. Method for managing access and use of resources by verifying conditions and conditions for use therewith
US20030009423A1 (en) * 2001-05-31 2003-01-09 Xin Wang Rights offering and granting
US20030023564A1 (en) * 2001-05-31 2003-01-30 Contentguard Holdings, Inc. Digital rights management of content when content is a future live event
US6529932B1 (en) 1998-04-01 2003-03-04 Microsoft Corporation Method and system for distributed transaction processing with asynchronous message delivery
US20030043852A1 (en) * 2001-05-18 2003-03-06 Bijan Tadayon Method and apparatus for verifying data integrity based on data compression parameters
US6532451B1 (en) 1998-03-23 2003-03-11 Novell, Inc. Nested strong loader apparatus and method
US20030050981A1 (en) * 2001-09-13 2003-03-13 International Business Machines Corporation Method, apparatus, and program to forward and verify multiple digital signatures in electronic mail
US20030066884A1 (en) * 2001-06-07 2003-04-10 Reddy Karimireddy Hari Protected content distribution system
US6564307B1 (en) 1999-08-18 2003-05-13 International Business Machines Corporation Method, system, and program for logically erasing data
US20030097579A1 (en) * 2001-11-16 2003-05-22 Paul England Manifest-based trusted agent management in a trusted operating system environment
US20030105830A1 (en) * 2001-12-03 2003-06-05 Duc Pham Scalable network media access controller and methods
US20030115461A1 (en) * 2001-12-14 2003-06-19 O'neill Mark System and method for the signing and authentication of configuration settings using electronic signatures
US20030131348A1 (en) * 2002-01-08 2003-07-10 International Business Machines Corporation Method, apparatus, and program to determine the mutability of an object at loading time
US20030140003A1 (en) * 2001-06-07 2003-07-24 Xin Wang Method and apparatus managing the transfer of rights
US6611812B2 (en) 1998-08-13 2003-08-26 International Business Machines Corporation Secure electronic content distribution on CDS and DVDs
US20030163569A1 (en) * 2002-02-26 2003-08-28 Citrix Systems, Inc Secure traversal of network components
US6615350B1 (en) 1998-03-23 2003-09-02 Novell, Inc. Module authentication and binding library extensions
US20030172297A1 (en) * 2002-03-05 2003-09-11 Gunter Carl A. Method and system for maintaining secure access to web server services using public keys
US20030172299A1 (en) * 2002-03-05 2003-09-11 Gunter Carl A. Method and system for maintaining secure access to web server services using permissions
US20030177400A1 (en) * 2000-08-28 2003-09-18 Contentguard Holdings, Inc. Method and apparatus for variable encryption of data
US20030182235A1 (en) * 2001-05-31 2003-09-25 Xin Wang Method and apparatus for tracking status of resource in a system for managing use of the resources
SG99385A1 (en) * 2001-01-31 2003-10-27 Toshiba Kk System for access control to hidden storage area in a disk drive
US20030216927A1 (en) * 2002-05-17 2003-11-20 V. Sridhar System and method for automated safe reprogramming of software radios
US20030220880A1 (en) * 2002-01-17 2003-11-27 Contentguard Holdings, Inc. Networked services licensing system and method
US6658568B1 (en) 1995-02-13 2003-12-02 Intertrust Technologies Corporation Trusted infrastructure support system, methods and techniques for secure electronic commerce transaction and rights management
US6658567B1 (en) 1999-06-25 2003-12-02 Geomechanics International, Inc. Method and logic for locking geological data and an analyzer program that analyzes the geological data
US20030225699A1 (en) * 1994-11-23 2003-12-04 Contentguard Holdings, Inc. Content rendering repository
US20030236977A1 (en) * 2001-04-25 2003-12-25 Levas Robert George Method and system for providing secure access to applications
US20040006542A1 (en) * 2001-01-17 2004-01-08 Contentguard Holdings, Inc. System and method for supplying and managing usage rights associated with an item repository
EP1380916A1 (en) * 2002-07-09 2004-01-14 Fujitsu Limited Data protection program, method and apparatus
US20040015724A1 (en) * 2002-07-22 2004-01-22 Duc Pham Logical access block processing protocol for transparent secure file storage
US6694434B1 (en) * 1998-12-23 2004-02-17 Entrust Technologies Limited Method and apparatus for controlling program execution and program distribution
US20040034582A1 (en) * 2001-01-17 2004-02-19 Contentguard Holding, Inc. System and method for supplying and managing usage rights based on rules
US6701433B1 (en) 1998-03-23 2004-03-02 Novell, Inc. Method and apparatus for escrowing properties used for accessing executable modules
US6708274B2 (en) * 1998-04-30 2004-03-16 Intel Corporation Cryptographically protected paging subsystem
US6721888B1 (en) 1999-11-22 2004-04-13 Sun Microsystems, Inc. Mechanism for merging multiple policies
WO2004038563A2 (en) * 2002-10-25 2004-05-06 Bettina Experton System and method for automatically launching and accessing network addresses and applications
US20040107342A1 (en) * 2002-07-22 2004-06-03 Duc Pham Secure network file access control system
US20040111375A1 (en) * 2002-02-07 2004-06-10 Oracle International Corporation Methods and systems for authentication and authorization
US6751735B1 (en) 1998-03-23 2004-06-15 Novell, Inc. Apparatus for control of cryptography implementations in third party applications
US20040117616A1 (en) * 2002-12-16 2004-06-17 Silvester Kelan C. Method and mechanism for validating legitimate software calls into secure software
US6754642B2 (en) 2001-05-31 2004-06-22 Contentguard Holdings, Inc. Method and apparatus for dynamically assigning usage rights to digital works
US20040133793A1 (en) * 1995-02-13 2004-07-08 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US20040143749A1 (en) * 2003-01-16 2004-07-22 Platformlogic, Inc. Behavior-based host-based intrusion prevention system
US6792537B1 (en) 1999-11-22 2004-09-14 Sun Microsystems, Inc. Mechanism for determining restrictions to impose on an implementation of a service
US6802028B1 (en) 1996-11-11 2004-10-05 Powerquest Corporation Computer virus detection and removal
US20040205344A1 (en) * 2000-07-17 2004-10-14 Otway David John Strong mutual authentication of devices
US6816965B1 (en) 1999-07-16 2004-11-09 Spyrus, Inc. Method and system for a policy enforcing module
US20040243808A1 (en) * 2002-04-15 2004-12-02 Ryuji Ishiguro Information processing device, method, and program
US6834110B1 (en) 1999-12-09 2004-12-21 International Business Machines Corporation Multi-tier digital TV programming for content distribution
US6859533B1 (en) 1999-04-06 2005-02-22 Contentguard Holdings, Inc. System and method for transferring the right to decode messages in a symmetric encoding scheme
US20050050396A1 (en) * 2003-06-20 2005-03-03 Auckland Uniservices Limited Tamper-proofing watermarked computer programs
US6865551B1 (en) 1994-11-23 2005-03-08 Contentguard Holdings, Inc. Removable content repositories
US20050060571A1 (en) * 2001-06-07 2005-03-17 Xin Wang System and method for managing transfer of rights using shared state variables
US20050080907A1 (en) * 2003-10-10 2005-04-14 Anatoliy Panasyuk Encapsulating protocol for session persistence and reliability
US6885748B1 (en) 1999-10-23 2005-04-26 Contentguard Holdings, Inc. System and method for protection of digital works
US20050120279A1 (en) * 2003-11-19 2005-06-02 Hitachi, Ltd. Storage subsystem, storage system, and communication control method
US20050137984A1 (en) * 2001-05-31 2005-06-23 Mai Nguyen System and method for rights offering and granting using shared state variables
US20050149450A1 (en) * 1994-11-23 2005-07-07 Contentguard Holdings, Inc. System, method, and device for controlling distribution and use of digital works based on a usage rights grammar
US20050171737A1 (en) * 1998-06-15 2005-08-04 Hartley Bruce V. Method and apparatus for assessing the security of a computer system
US20050177812A1 (en) * 1999-12-01 2005-08-11 Microsoft Corporation External resource files for application development and management
US6931545B1 (en) 2000-08-28 2005-08-16 Contentguard Holdings, Inc. Systems and methods for integrity certification and verification of content consumption environments
US6931530B2 (en) 2002-07-22 2005-08-16 Vormetric, Inc. Secure network file access controller implementing access control and auditing
US20050187877A1 (en) * 2001-05-31 2005-08-25 Contentguard Holding, Inc. Method and apparatus for hierarchical assignment of rights to documents and documents having such rights
US6937726B1 (en) 1999-04-06 2005-08-30 Contentguard Holdings, Inc. System and method for protecting data files by periodically refreshing a decryption key
US20050198380A1 (en) * 2002-02-26 2005-09-08 Citrix Systems, Inc. A persistent and reliable session securely traversing network components using an encapsulating protocol
US20050198379A1 (en) * 2001-06-13 2005-09-08 Citrix Systems, Inc. Automatically reconnecting a client across reliable and persistent communication sessions
US20050197963A1 (en) * 2001-05-31 2005-09-08 Contentguard Holdings, Inc. Method and apparatus for establishing usage rights for digital content to be created in the future
US20050210263A1 (en) * 2001-04-25 2005-09-22 Levas Robert G Electronic form routing and data capture system and method
US20050216422A1 (en) * 2000-09-08 2005-09-29 International Business Machines Corporation. System and method for secure authentication of external software modules provided by third parties
US20050216921A1 (en) * 2002-06-12 2005-09-29 Mitsuteru Kataoka Service safely-extensible platform
US20050234825A1 (en) * 2002-05-07 2005-10-20 Stefan Andersson Method for loading an application in a device, device and smart card therefor
US6959288B1 (en) 1998-08-13 2005-10-25 International Business Machines Corporation Digital content preparation system
US20050240771A1 (en) * 1995-02-13 2005-10-27 Intertrust Technologies Corporation Trusted and secure techniques, systems and methods for item delivery and execution
US6976009B2 (en) 2001-05-31 2005-12-13 Contentguard Holdings, Inc. Method and apparatus for assigning consequential rights to documents and documents having such rights
US6983371B1 (en) 1998-10-22 2006-01-03 International Business Machines Corporation Super-distribution of protected digital content
US6986040B1 (en) 2000-11-03 2006-01-10 Citrix Systems, Inc. System and method of exploiting the security of a secure communication channel to secure a non-secure communication channel
US20060053077A1 (en) * 1999-12-09 2006-03-09 International Business Machines Corporation Digital content distribution using web broadcasting services
US20060089912A1 (en) * 1998-08-13 2006-04-27 International Business Machines Corporation Updating usage conditions in lieu of download digital rights management protected content
US7051067B1 (en) * 1999-11-22 2006-05-23 Sun Microsystems, Inc. Object oriented mechanism for dynamically constructing customized implementations to enforce restrictions
US20060130016A1 (en) * 2003-03-17 2006-06-15 Wagner John R Method of kernal-mode instruction interception and apparatus therefor
US7068787B1 (en) 1998-10-23 2006-06-27 Contentguard Holdings, Inc. System and method for protection of digital works
US7073199B1 (en) 2000-08-28 2006-07-04 Contentguard Holdings, Inc. Document distribution management method and apparatus using a standard rendering engine and a method and apparatus for controlling a standard rendering engine
US7085741B2 (en) 2001-01-17 2006-08-01 Contentguard Holdings, Inc. Method and apparatus for managing digital content usage rights
US20060218651A1 (en) * 1995-02-13 2006-09-28 Intertrust Technologies Corp. Trusted infrastructure support systems, methods and techniques for secure electronic commerce, electronic transactions, commerce process control and automation, distributed computing, and rights management
US7117371B1 (en) * 2000-06-28 2006-10-03 Microsoft Corporation Shared names
US7117180B1 (en) 1994-11-23 2006-10-03 Contentguard Holdings, Inc. System for controlling the use of digital works using removable content repositories
US7131008B1 (en) 1999-11-22 2006-10-31 Sun Microsystems, Inc. Mechanism for dynamically constructing customized implementations to enforce restrictions
US20060265337A1 (en) * 1996-02-26 2006-11-23 Graphon Corporation Automated system for management of licensed digital assets
US7143288B2 (en) 2002-10-16 2006-11-28 Vormetric, Inc. Secure file system server architecture and methods
US20060271915A1 (en) * 2005-05-24 2006-11-30 Contentguard Holdings, Inc. Usage rights grammar and digital works having usage rights created with the grammar
US7162715B1 (en) 2002-03-16 2007-01-09 I-Squared, Inc. Method and apparatus for preemptive monitoring of software binaries by instruction interception and dynamic recompilation
US20070028952A1 (en) * 2005-08-05 2007-02-08 Outdoor Sleep System, Llc Sleeping bag and system
US20070106981A1 (en) * 2004-12-28 2007-05-10 Hercules Software, Llc Creating a relatively unique environment for computing platforms
US20070113079A1 (en) * 2003-11-28 2007-05-17 Takayuki Ito Data processing apparatus
US20070118899A1 (en) * 2002-05-17 2007-05-24 Satyam Computer Services Limited Of Mayfair Centre System and method for automated safe reprogramming of software radios
US7243335B1 (en) 2000-02-17 2007-07-10 Microsoft Corporation Method and system for reducing coding complexity by providing intelligent manipulable defaults
US7286665B1 (en) 1999-04-06 2007-10-23 Contentguard Holdings, Inc. System and method for transferring the right to decode messages
US20070261102A1 (en) * 2006-05-04 2007-11-08 Tony Spataro Methods and systems for specifying and enforcing access control in a distributed system
US20070266429A1 (en) * 1995-02-13 2007-11-15 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US7343324B2 (en) 2000-11-03 2008-03-11 Contentguard Holdings Inc. Method, system, and computer readable medium for automatically publishing content
US7356688B1 (en) 1999-04-06 2008-04-08 Contentguard Holdings, Inc. System and method for document distribution
US20080127304A1 (en) * 1995-02-13 2008-05-29 Ginter Karl L Systems and methods for secure transaction management and electronic rights protection
US20080127321A1 (en) * 2006-11-29 2008-05-29 Vaeth J Stuart System and method for handling permits for user authentication tokens
US20080201777A1 (en) * 1998-03-02 2008-08-21 Doron Elgressy Method and Agent for the Protection Against the Unauthorized Use of Computer Resources
US20090022498A1 (en) * 2007-07-20 2009-01-22 Makoto Shibutani Optical transmission system
US20090044007A1 (en) * 2005-04-07 2009-02-12 France Telecom Secure Communication Between a Data Processing Device and a Security Module
US20090265278A1 (en) * 2001-05-31 2009-10-22 Contentguard Holdings, Inc. Digital rights management of content when content is a future live event
US7743259B2 (en) 2000-08-28 2010-06-22 Contentguard Holdings, Inc. System and method for digital rights management using a standard rendering engine
US20100162377A1 (en) * 2005-07-08 2010-06-24 Gonzalez Carlos J Mass storage device with automated credentials loading
US20110030003A1 (en) * 2008-09-24 2011-02-03 Nec Europe Ltd. Method and a system for distributing tv content over a network
US20110207108A1 (en) * 2009-10-01 2011-08-25 William Dorman Proctored Performance Analysis
US20110223576A1 (en) * 2010-03-14 2011-09-15 David Foster System for the Administration of a Secure, Online, Proctored Examination
US20110225177A1 (en) * 1995-04-11 2011-09-15 Kinetech, Inc. Accessing Data In A Content-Addressable Data Processing System
US20110265170A1 (en) * 2004-11-15 2011-10-27 Bank Of America Corporation Method and apparatus for enabling authentication of on-line communications
US8181035B1 (en) * 2011-06-22 2012-05-15 Media Patents, S.L. Methods, apparatus and systems to improve security in computer systems
US20120185700A1 (en) * 2011-01-18 2012-07-19 Apple Inc. System and method for supporting jit in a secure system with randomly allocated memory ranges
US8312431B1 (en) * 2004-09-17 2012-11-13 Oracle America, Inc. System and computer readable medium for verifying access to signed ELF objects
USRE44131E1 (en) 1995-06-02 2013-04-02 Fujitsu Limited Storage device having function for coping with computer virus
US8510226B2 (en) 1996-02-26 2013-08-13 Graphon Corporation Method for synchronous encryption between a client and a licensing agent
US8639625B1 (en) 1995-02-13 2014-01-28 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US8677494B2 (en) 1997-01-29 2014-03-18 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US8713130B2 (en) 2010-08-04 2014-04-29 Kryterion, Inc. Peered proctoring
US8794516B2 (en) 1999-10-25 2014-08-05 Smartflash, LLC Data storage and access systems
US8938796B2 (en) 2012-09-20 2015-01-20 Paul Case, SR. Case secure computer architecture
US8973090B1 (en) * 2012-03-14 2015-03-03 Symantec Corporation Systems and methods for protecting platform-as-a-service platforms
US9003474B1 (en) 2008-08-22 2015-04-07 Taser International, Inc. Systems and methods for managing disclosure of protectable information
US9137163B2 (en) 2010-08-04 2015-09-15 Kryterion, Inc. Optimized data stream upload
US9141513B2 (en) 2009-10-01 2015-09-22 Kryterion, Inc. Maintaining a secure computing device in a test taking environment
US9219755B2 (en) 1996-11-08 2015-12-22 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US9626668B2 (en) 2002-03-14 2017-04-18 Contentgaurd Holdings, Inc. Rights expression profile system and method using templates
US9898715B2 (en) 2001-11-20 2018-02-20 Contentguart Holdings, Inc. Systems and methods for creating, manipulating and processing rights and contract expressions using tokenized templates
US10032007B1 (en) 2000-09-21 2018-07-24 Blackberry Limited Controlling access by code
US10171483B1 (en) 2013-08-23 2019-01-01 Symantec Corporation Utilizing endpoint asset awareness for network intrusion detection
US10430729B2 (en) 2002-04-29 2019-10-01 Contentguard Holdings, Inc. System and method for specifying and processing legality expressions
US10552603B2 (en) 2000-05-17 2020-02-04 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US10672286B2 (en) 2010-03-14 2020-06-02 Kryterion, Inc. Cloud based test environment
US10694352B2 (en) 2015-10-28 2020-06-23 Activision Publishing, Inc. System and method of using physical objects to control software access

Families Citing this family (131)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5509120A (en) * 1993-11-30 1996-04-16 International Business Machines Corporation Method and system for detecting computer viruses during power on self test
US5481715A (en) * 1993-12-15 1996-01-02 Sun Microsystems, Inc. Method and apparatus for delegated communications in a computer system using trusted deputies
US7467137B1 (en) 1994-09-02 2008-12-16 Wolfe Mark A System and method for information retrieval employing a preloading procedure
US6604103B1 (en) * 1994-09-02 2003-08-05 Mark A. Wolfe System and method for information retrieval employing a preloading procedure
US5727155A (en) * 1994-09-09 1998-03-10 Intel Corporation Method and apparatus for dynamically controlling a remote system's access to shared applications on a host system
US20080141033A1 (en) * 1995-02-13 2008-06-12 Intertrust Technologies Corporation Trusted and secure techniques, systems and methods for item delivery and execution
US5754761A (en) * 1995-03-06 1998-05-19 Willsey; John A. Universal sofeware key process
US7302638B1 (en) 1995-06-07 2007-11-27 Wolfe Mark A Efficiently displaying and researching information about the interrelationships between documents
US5812669A (en) * 1995-07-19 1998-09-22 Jenkins; Lew Method and system for providing secure EDI over an open network
US5757915A (en) * 1995-08-25 1998-05-26 Intel Corporation Parameterized hash functions for access control
US5787175A (en) * 1995-10-23 1998-07-28 Novell, Inc. Method and apparatus for collaborative document control
KR0174978B1 (en) * 1995-12-30 1999-04-01 김광호 Hardware-implemented digital computer system security device
US6247026B1 (en) 1996-10-11 2001-06-12 Sun Microsystems, Inc. Method, apparatus, and product for leasing of delegation certificates in a distributed system
US6438614B2 (en) 1998-02-26 2002-08-20 Sun Microsystems, Inc. Polymorphic token based control
US6182083B1 (en) 1997-11-17 2001-01-30 Sun Microsystems, Inc. Method and system for multi-entry and multi-template matching in a database
US6832223B1 (en) 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6463446B1 (en) 1998-02-26 2002-10-08 Sun Microsystems, Inc. Method and apparatus for transporting behavior in an event-based distributed system
US6938263B2 (en) 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6393497B1 (en) * 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6487607B1 (en) 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
US6237024B1 (en) 1998-03-20 2001-05-22 Sun Microsystem, Inc. Method and apparatus for the suspension and continuation of remote processes
US6560656B1 (en) 1998-02-26 2003-05-06 Sun Microsystems, Inc. Apparatus and method for providing downloadable code for use in communicating with a device in a distributed system
US6446070B1 (en) * 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6185611B1 (en) 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6466947B2 (en) 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6598094B1 (en) 1998-03-20 2003-07-22 Sun Microsystems, Inc. Method and apparatus for determining status of remote objects in a distributed system
US6138238A (en) 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
US6272559B1 (en) 1997-10-15 2001-08-07 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading for event notification in a distributed system
US6708171B1 (en) 1996-04-23 2004-03-16 Sun Microsystems, Inc. Network proxy
US6226746B1 (en) * 1998-03-20 2001-05-01 Sun Microsystems, Inc. Stack-based system and method to combine security requirements of methods
US6282652B1 (en) 1998-02-26 2001-08-28 Sun Microsystems, Inc. System for separately designating security requirements for methods invoked on a computer
US6421704B1 (en) 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
US6578044B1 (en) 1997-11-17 2003-06-10 Sun Microsystems, Inc. Method and system for typesafe attribute matching
US6002768A (en) * 1996-05-07 1999-12-14 International Computer Science Institute Distributed registration and key distribution system and method
US6006252A (en) * 1996-10-08 1999-12-21 Wolfe; Mark A. System and method for communicating information relating to a network resource
US6728737B2 (en) 1996-10-11 2004-04-27 Sun Microsystems, Inc. Method and system for leasing storage
US6237009B1 (en) 1996-10-11 2001-05-22 Sun Microsystems, Inc. Lease renewal service
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
EP0955961B1 (en) * 1996-10-23 2004-03-31 SDGI Holdings, Inc. Spinal spacer
JPH10301772A (en) 1997-04-30 1998-11-13 Sony Corp Information processor and method therefor and recording medium
US8626763B1 (en) 1997-05-22 2014-01-07 Google Inc. Server-side suggestion of preload operations
JP3799757B2 (en) * 1997-07-18 2006-07-19 富士ゼロックス株式会社 VERIFYED DATA GENERATION DEVICE AND COMPUTER-READABLE RECORDING MEDIUM CONTAINING VERIFYED DATA GENERATION PROGRAM
US6023684A (en) * 1997-10-01 2000-02-08 Security First Technologies, Inc. Three tier financial transaction system with cache memory
US6253256B1 (en) 1997-10-15 2001-06-26 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading in a distributed system
US6957427B1 (en) 1997-10-15 2005-10-18 Sun Microsystems, Inc. Remote object activation in a distributed system
US7257604B1 (en) 1997-11-17 2007-08-14 Wolfe Mark A System and method for communicating information relating to a network resource
US6047377A (en) * 1997-12-11 2000-04-04 Sun Microsystems, Inc. Typed, parameterized, and extensible access control permissions
US6044467A (en) * 1997-12-11 2000-03-28 Sun Microsystems, Inc. Secure class resolution, loading and definition
US6125447A (en) * 1997-12-11 2000-09-26 Sun Microsystems, Inc. Protection domains to provide security in a computer system
US6192476B1 (en) 1997-12-11 2001-02-20 Sun Microsystems, Inc. Controlling access to a resource
US6604127B2 (en) 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
WO1999044133A2 (en) 1998-02-26 1999-09-02 Sun Microsystems, Inc. Method and system for deterministic hashes to identify remote methods
US9038193B2 (en) * 1998-08-14 2015-05-19 Azos Al, Llc System and method of data cognition incorporating autonomous security protection
US6577920B1 (en) * 1998-10-02 2003-06-10 Data Fellows Oyj Computer virus screening
US6901518B1 (en) 1999-04-08 2005-05-31 Sun Microsystems, Inc. Method and system for establishing trust in downloaded proxy code
US7213262B1 (en) 1999-05-10 2007-05-01 Sun Microsystems, Inc. Method and system for proving membership in a nested group using chains of credentials
US6845393B1 (en) 1999-06-14 2005-01-18 Sun Microsystems, Inc. Lookup discovery service in a distributed system having a plurality of lookup services each with associated characteristics and services
US6877163B1 (en) 1999-06-14 2005-04-05 Sun Microsystems, Inc. Method and system for dynamic proxy classes
US6671718B1 (en) * 1999-06-28 2003-12-30 Mark Meister Email client application incorporating an active transmit authorization request
DE60017438T2 (en) * 1999-09-03 2005-12-22 General Instrument Corporation SYSTEM FOR OPERATING ACCESS CONTROL
US6263434B1 (en) * 1999-09-21 2001-07-17 Sun Microsystems, Inc. Signed group criteria
US6536000B1 (en) * 1999-10-15 2003-03-18 Sun Microsystems, Inc. Communication error reporting mechanism in a multiprocessing computer system
US6892303B2 (en) * 2000-01-06 2005-05-10 International Business Machines Corporation Method and system for caching virus-free file certificates
US7716492B1 (en) 2000-05-09 2010-05-11 Oracle America, Inc. Method and apparatus to obtain service capability credentials
US8082491B1 (en) 2000-05-09 2011-12-20 Oracle America, Inc. Dynamic displays in a distributed computing environment
US6850979B1 (en) 2000-05-09 2005-02-01 Sun Microsystems, Inc. Message gates in a distributed computing environment
US7072967B1 (en) 2000-05-09 2006-07-04 Sun Microsystems, Inc. Efficient construction of message endpoints
US6868447B1 (en) 2000-05-09 2005-03-15 Sun Microsystems, Inc. Mechanism and apparatus for returning results of services in a distributed computing environment
US6917976B1 (en) 2000-05-09 2005-07-12 Sun Microsystems, Inc. Message-based leasing of resources in a distributed computing environment
US7243356B1 (en) 2000-05-09 2007-07-10 Sun Microsystems, Inc. Remote method invocation with secure messaging in a distributed computing environment
US6789077B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Mechanism and apparatus for web-based searching of URI-addressable repositories in a distributed computing environment
US6792466B1 (en) 2000-05-09 2004-09-14 Sun Microsystems, Inc. Trusted construction of message endpoints in a distributed computing environment
US6973493B1 (en) 2000-05-09 2005-12-06 Sun Microsystems, Inc. Mechanism and apparatus for security of newly spawned repository spaces in a distributed computing environment
US6970869B1 (en) 2000-05-09 2005-11-29 Sun Microsystems, Inc. Method and apparatus to discover services and negotiate capabilities
US7577834B1 (en) 2000-05-09 2009-08-18 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
US6918084B1 (en) 2000-05-09 2005-07-12 Sun Microsystems, Inc. Spawning new repository spaces using information provided in advertisement schema messages
US6789126B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Addressing message gates in a distributed computing environment
US7188251B1 (en) 2000-05-09 2007-03-06 Sun Microsystems, Inc. System and method for secure message-based leasing of resources in a distributed computing environment
US7010573B1 (en) 2000-05-09 2006-03-07 Sun Microsystems, Inc. Message gates using a shared transport in a distributed computing environment
US6950875B1 (en) 2000-05-09 2005-09-27 Sun Microsystems, Inc. Message conductors in a distributed computing environment
US7016966B1 (en) 2000-05-09 2006-03-21 Sun Microsystems, Inc. Generating results gates in a distributed computing environment
US7260543B1 (en) 2000-05-09 2007-08-21 Sun Microsystems, Inc. Automatic lease renewal with message gates in a distributed computing environment
US8135796B1 (en) 2000-05-09 2012-03-13 Oracle America, Inc. Mechanism and apparatus for accessing and addressing services in a distributed computing environment
US7200848B1 (en) 2000-05-09 2007-04-03 Sun Microsystems, Inc. Migrating processes using data representation language representations of the processes in a distributed computing environment
US7080078B1 (en) 2000-05-09 2006-07-18 Sun Microsystems, Inc. Mechanism and apparatus for URI-addressable repositories of service advertisements and other content in a distributed computing environment
US7065574B1 (en) 2000-05-09 2006-06-20 Sun Microsystems, Inc. Messaging system using pairs of message gates in a distributed computing environment
US6862594B1 (en) 2000-05-09 2005-03-01 Sun Microsystems, Inc. Method and apparatus to discover services using flexible search criteria
US8001232B1 (en) 2000-05-09 2011-08-16 Oracle America, Inc. Event message endpoints in a distributed computing environment
US7370091B1 (en) 2000-05-09 2008-05-06 Sun Microsystems, Inc. Method and apparatus for obtaining space advertisements
US6898618B1 (en) 2000-05-09 2005-05-24 Sun Microsystems, Inc. Client-specified display services in a distributed computing environment
US6643650B1 (en) 2000-05-09 2003-11-04 Sun Microsystems, Inc. Mechanism and apparatus for using messages to look up documents stored in spaces in a distributed computing environment
US7395333B1 (en) 2000-05-09 2008-07-01 Sun Microsystems, Inc. Method and apparatus to obtain negotiated service advertisement
US6865657B1 (en) 2000-06-02 2005-03-08 Sun Microsystems, Inc. Garbage collector for a virtual heap
US6957237B1 (en) 2000-06-02 2005-10-18 Sun Microsystems, Inc. Database store for a virtual heap
US6763440B1 (en) 2000-06-02 2004-07-13 Sun Microsystems, Inc. Garbage collection using nursery regions for new objects in a virtual heap
US6941410B1 (en) 2000-06-02 2005-09-06 Sun Microsystems, Inc. Virtual heap for a virtual machine
US6854115B1 (en) 2000-06-02 2005-02-08 Sun Microsystems, Inc. Process persistence in a virtual machine
US6760815B1 (en) * 2000-06-02 2004-07-06 Sun Microsystems, Inc. Caching mechanism for a virtual heap
US7047409B1 (en) * 2000-06-09 2006-05-16 Northrop Grumman Corporation Automated tracking of certificate pedigree
US6611925B1 (en) * 2000-06-13 2003-08-26 Networks Associates Technology, Inc. Single point of entry/origination item scanning within an enterprise or workgroup
US20040073617A1 (en) 2000-06-19 2004-04-15 Milliken Walter Clark Hash-based systems and methods for detecting and preventing transmission of unwanted e-mail
US6971023B1 (en) * 2000-10-03 2005-11-29 Mcafee, Inc. Authorizing an additional computer program module for use with a core computer program
US7296275B2 (en) 2001-01-04 2007-11-13 Sun Microsystems, Inc. Method and system for passing objects in a distributed system using serialization contexts
US20020091940A1 (en) * 2001-01-05 2002-07-11 Welborn Christopher Michael E-mail user behavior modification system and mechanism for computer virus avoidance
US20020099668A1 (en) * 2001-01-22 2002-07-25 Sun Microsystems, Inc. Efficient revocation of registration authorities
US7921287B2 (en) * 2001-08-13 2011-04-05 Qualcomm Incorporated Application level access privilege to a storage area on a computer device
US7743407B2 (en) * 2001-08-13 2010-06-22 Qualcomm Incorporated Using permissions to allocate device resources to an application
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US7660887B2 (en) * 2001-09-07 2010-02-09 Sun Microsystems, Inc. Systems and methods for providing dynamic quality of service for a distributed system
US20030051029A1 (en) * 2001-09-07 2003-03-13 Reedy Dennis G. Dynamic provisioning of sevice components in a distributed system
US7107618B1 (en) * 2001-09-25 2006-09-12 Mcafee, Inc. System and method for certifying that data received over a computer network has been checked for viruses
US7240213B1 (en) * 2002-03-15 2007-07-03 Waters Edge Consulting, Llc. System trustworthiness tool and methodology
GB0212315D0 (en) * 2002-05-28 2002-07-10 Symbian Ltd Secure mobile wireless device with protected file systems
US20040098614A1 (en) * 2002-11-14 2004-05-20 International Business Machines Corporation JAAS security and COBRA security integration
US7472286B2 (en) * 2003-08-29 2008-12-30 Microsoft Corporation Selectively authorizing software functionality after installation of the software
US20050091535A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Application identity for software products
US20050091658A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Operating system resource protection
GB2408361B (en) * 2003-11-21 2007-07-25 Symbian Ltd Allocation of resources in a computing device
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events
US7836301B2 (en) * 2004-03-10 2010-11-16 Harris Steven M Computer program for securely viewing a file
JP2005346182A (en) * 2004-05-31 2005-12-15 Fujitsu Ltd Information processor, tamper resistant method, and tamper resistant program
US7587594B1 (en) 2004-08-30 2009-09-08 Microsoft Corporation Dynamic out-of-process software components isolation for trustworthiness execution
WO2006101549A2 (en) * 2004-12-03 2006-09-28 Whitecell Software, Inc. Secure system for allowing the execution of authorized computer program code
US7665098B2 (en) * 2005-04-29 2010-02-16 Microsoft Corporation System and method for monitoring interactions between application programs and data stores
US20060282830A1 (en) * 2005-06-13 2006-12-14 Microsoft Corporation Analysis of the impact of application programs on resources stored in data stores
US7844829B2 (en) * 2006-01-18 2010-11-30 Sybase, Inc. Secured database system with built-in antivirus protection
EP1879122A1 (en) * 2006-07-10 2008-01-16 ABB Research Ltd Method and devices for verifying authenticity of a called code module
US9092629B2 (en) * 2007-04-16 2015-07-28 The Directv Group, Inc. Method and apparatus for authenticating a code image upon starting a device
EP2312485B1 (en) 2009-08-31 2018-08-08 BlackBerry Limited System and method for controlling applications to mitigate the effects of malicious software
US20120042354A1 (en) * 2010-08-13 2012-02-16 Morgan Stanley Entitlement conflict enforcement
US20140280451A1 (en) * 2013-03-14 2014-09-18 Ford Global Technologies, Llc Method and Apparatus for Mobile Device Connectivity Compatibility Facilitation

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0026590A2 (en) * 1979-09-29 1981-04-08 Plessey Overseas Limited Improved memory protection system using capability registers
US4652990A (en) * 1983-10-27 1987-03-24 Remote Systems, Inc. Protected software access control apparatus and method
US5005200A (en) * 1988-02-12 1991-04-02 Fischer Addison M Public key/signature cryptosystem with enhanced digital signature certification
US5047928A (en) * 1986-10-24 1991-09-10 Wiedemer John D Billing system for computer software
US5109413A (en) * 1986-11-05 1992-04-28 International Business Machines Corporation Manipulating rights-to-execute in connection with a software copy protection mechanism
US5142578A (en) * 1991-08-22 1992-08-25 International Business Machines Corporation Hybrid public key algorithm/data encryption algorithm key distribution method based on control vectors
US5164988A (en) * 1991-10-31 1992-11-17 International Business Machines Corporation Method to establish and enforce a network cryptographic security policy in a public key cryptosystem

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0026590A2 (en) * 1979-09-29 1981-04-08 Plessey Overseas Limited Improved memory protection system using capability registers
US4652990A (en) * 1983-10-27 1987-03-24 Remote Systems, Inc. Protected software access control apparatus and method
US5047928A (en) * 1986-10-24 1991-09-10 Wiedemer John D Billing system for computer software
US5109413A (en) * 1986-11-05 1992-04-28 International Business Machines Corporation Manipulating rights-to-execute in connection with a software copy protection mechanism
US5005200A (en) * 1988-02-12 1991-04-02 Fischer Addison M Public key/signature cryptosystem with enhanced digital signature certification
US5142578A (en) * 1991-08-22 1992-08-25 International Business Machines Corporation Hybrid public key algorithm/data encryption algorithm key distribution method based on control vectors
US5164988A (en) * 1991-10-31 1992-11-17 International Business Machines Corporation Method to establish and enforce a network cryptographic security policy in a public key cryptosystem

Non-Patent Citations (14)

* Cited by examiner, † Cited by third party
Title
ACF2, The Access Control Facility, Administrator s Guide, Rule Settings: Access Rules MVS Installations, p. 74, Jan. 15, 1985. *
ACF2, The Access Control Facility, Administrator's Guide, "Rule Settings: Access Rules" MVS Installations, p. 74, Jan. 15, 1985.
ACF2, The Access Control Facility, General Information Manual, Data Access Control, MVS Installations, Data Access Control Sample Rule Sets, and Execution Flow Jan. 15, 1985, pp. 21 23. *
ACF2, The Access Control Facility, General Information Manual, Data Access Control, MVS Installations, Data Access Control Sample Rule Sets, and Execution Flow Jan. 15, 1985, pp. 21-23.
Graham et al; "Protection--Principles and practice", Proc. Spring Joing Comp. Conf., vol. 40, 1972, Atalantic City, U.S. pp. 417-429.
Graham et al; Protection Principles and practice , Proc. Spring Joing Comp. Conf., vol. 40, 1972, Atalantic City, U.S. pp. 417 429. *
IBM OS/VS2 MVS System Programming Library: Job management, MVS/System Product JES2 5740 XYS and JES3 5740 XYN, GC28 1303 0, pp. 2 1 thru 2 5 Dec. 1982. *
IBM OS/VS2 MVS System Programming Library: Job management, MVS/System Product JES2 5740-XYS and JES3 5740-XYN, GC28 1303-0, pp. 2-1 thru 2-5 Dec. 1982.
IBM OS/VS2 System Programming Library: Supervisor, OS/VS2/MVS/System Products: JES 3 5740 XYN and JES2 5740 XYS, pp. 39 44, Jul. 1985. *
IBM OS/VS2 System Programming Library: Supervisor, OS/VS2/MVS/System Products: JES 3 5740-XYN and JES2 5740-XYS, pp. 39-44, Jul. 1985.
IEEE Symposium on Security and Privacy, Apr. 1988, Oakland, US, pp. 39 49, Vinter et al, Extended Discretionary Access Controls . *
IEEE Symposium on Security and Privacy, Apr. 1988, Oakland, US, pp. 39-49, Vinter et al, "Extended Discretionary Access Controls".
Proc. 9th International Conf. on Comp. Comm. Mar. 11, 1988, Tel Aviv, IL, pp. 391 396, Kowalski et al, Security for Electronic Mail and Telematic Services . *
Proc. 9th International Conf. on Comp. Comm. Mar. 11, 1988, Tel Aviv, IL, pp. 391-396, Kowalski et al, "Security for Electronic Mail and Telematic Services".

Cited By (539)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134324A (en) * 1991-07-31 2000-10-17 Lsi Logic Corporation Method and system for distributing a plurality of software products, and limiting access thereto
US5652837A (en) * 1993-03-22 1997-07-29 Digital Equipment Corporation Mechanism for screening commands issued over a communications bus for selective execution by a processor
US5748960A (en) * 1993-08-10 1998-05-05 Fischer; Addison M. Method and apparatus for validating travelling object-oriented programs with digital signatures
US6105072A (en) * 1993-08-10 2000-08-15 Fischer; Addison M. Method and apparatus for validating travelling object-oriented programs with digital signatures
US5646992A (en) * 1993-09-23 1997-07-08 Digital Delivery, Inc. Assembly, distribution, and use of digital information
US5734719A (en) * 1993-10-15 1998-03-31 International Business Systems, Incorporated Digital information accessing, delivery and production system
US7664708B2 (en) 1994-11-23 2010-02-16 Contentguard Holdings, Inc. System for controlling the distribution and use of digital works using digital tickets
US20020128972A1 (en) * 1994-11-23 2002-09-12 Contentguard Holdings, Inc. Digital works having usage rights and method for creating the same
US7225160B2 (en) 1994-11-23 2007-05-29 Contentguard Holdings, Inc. Digital works having usage rights and method for creating the same
US7260556B2 (en) 1994-11-23 2007-08-21 Contentguard Holdings, Inc. Content rendering device with usage rights
US7266529B2 (en) 1994-11-23 2007-09-04 Contentguard Holdings, Inc. Method and apparatus for executing code in accordance with usage rights
US7269577B2 (en) 1994-11-23 2007-09-11 Contentguard Holdings, Inc. System for controlling the distribution and use of digital works using digital tickets
US7269576B2 (en) 1994-11-23 2007-09-11 Contentguard Holdings, Inc. Content rendering apparatus
US20060271484A1 (en) * 1994-11-23 2006-11-30 Contentguard Holdings, Inc. System for controlling the distribution and use of digital works using digital tickets
US7139736B2 (en) 1994-11-23 2006-11-21 Contentguard Holdings, Inc. Content rendering repository
US7117180B1 (en) 1994-11-23 2006-10-03 Contentguard Holdings, Inc. System for controlling the use of digital works using removable content repositories
US7113912B2 (en) 1994-11-23 2006-09-26 Contentguard Holdings, Inc. Composite digital works having usage rights and method for creating the same
US20060200417A1 (en) * 1994-11-23 2006-09-07 Xerox Corporation Method for loaning digital works
US20060190404A1 (en) * 1994-11-23 2006-08-24 Contentguard Holdings, Inc. System for controlling the distribution and use of digital works
US6928419B2 (en) 1994-11-23 2005-08-09 Contentguard Holdings, Inc. Method and apparatus for repackaging portions of digital works as new digital works
US7058606B2 (en) 1994-11-23 2006-06-06 Contentguard Holdings, Inc. Method for loaning digital works
US20060106722A1 (en) * 1994-11-23 2006-05-18 Contentguard Holdings, Inc. Usage rights grammar and digital works having usage rights created with the grammar
US7043453B2 (en) 1994-11-23 2006-05-09 Contentguard Holdings, Inc. Method and system for conducting transactions between repositories using a repository transaction protocol
US7024392B2 (en) 1994-11-23 2006-04-04 Contentguard Holdings, Inc. Method for controlling use of database content
US20050289068A1 (en) * 1994-11-23 2005-12-29 Contentguard Holdings, Inc. Method and apparatus for tracking states of digital works
US7359881B2 (en) 1994-11-23 2008-04-15 Contentguard Holdings, Inc. System for controlling the distribution and use of digital works using secure components
US20050273433A1 (en) * 1994-11-23 2005-12-08 Contentguard Holdings, Inc. Content rendering repository
US7389270B2 (en) 1994-11-23 2008-06-17 Contentguard Holdings, Inc. System for controlling the distribution and use of digital works
US20050251482A1 (en) * 1994-11-23 2005-11-10 Content Guard Holdings, Inc. Digital work structure
US6963859B2 (en) 1994-11-23 2005-11-08 Contentguard Holdings, Inc. Content rendering repository
US6957193B2 (en) 1994-11-23 2005-10-18 Contentguard Holdings, Inc. Repository with security class and method for use thereof
US6957194B2 (en) 1994-11-23 2005-10-18 Contentguard Holdings, Inc. Method for printing digital works
US7523072B2 (en) 1994-11-23 2009-04-21 Contentguard Holdings, Inc. System for controlling the distribution and use of digital works
US6944600B2 (en) 1994-11-23 2005-09-13 Contentguard Holdings, Inc. System for controlling the distribution and use of digital works using digital tickets
US7200574B2 (en) 1994-11-23 2007-04-03 Contentguard Holdings, Inc. System for controlling the distribution and use digital works using digital tickets
US20100106659A1 (en) * 1994-11-23 2010-04-29 Contentguard Holdings, Inc. System and method for enforcing usage rights associated with digital content
US6934693B2 (en) 1994-11-23 2005-08-23 Contentguard Holdings, Inc. System for controlling the distribution and use of digital works
US7209902B2 (en) 1994-11-23 2007-04-24 Contentguard Holdings, Inc. Repository with security class and method for use thereof
US7065505B2 (en) 1994-11-23 2006-06-20 Contentguard Holdings, Inc. Method for metering and pricing of digital works
US6925448B2 (en) 1994-11-23 2005-08-02 Contentguard Holdings, Inc. Usage rights grammar and digital works having usage rights created with the grammar
US20050165687A1 (en) * 1994-11-23 2005-07-28 Contentguard Holdings, Inc. Repository with security class and method for use thereof
US6920436B2 (en) 1994-11-23 2005-07-19 Contentguard Holdings, Inc. Digital work structure
US20050149450A1 (en) * 1994-11-23 2005-07-07 Contentguard Holdings, Inc. System, method, and device for controlling distribution and use of digital works based on a usage rights grammar
US6910022B2 (en) 1994-11-23 2005-06-21 Contentguard Holdings, Inc. Usage rights grammar and digital works having usage rights created with the grammar
US20100212027A1 (en) * 1994-11-23 2010-08-19 Contentguard Holdings, Inc. System and method for rendering content associated with a digital work
US20050108173A1 (en) * 1994-11-23 2005-05-19 Contentgurad Holdings, Inc. System for controlling the distribution and use digital works using digital tickets
US6895392B2 (en) 1994-11-23 2005-05-17 Contentguard Holdings, Inc. Usage rights grammar and digital works having usage rights created with the grammar
US7788182B2 (en) 1994-11-23 2010-08-31 Contentguard Holdings, Inc. Method for loaning digital works
US7809644B2 (en) 1994-11-23 2010-10-05 Contentguard Holdings, Inc. Digital work structure
US6865551B1 (en) 1994-11-23 2005-03-08 Contentguard Holdings, Inc. Removable content repositories
US20040243834A1 (en) * 1994-11-23 2004-12-02 Contentguard Holdings, Inc. System for controlling the distribution and use of digital works utilizing digital tickets
US20040107166A1 (en) * 1994-11-23 2004-06-03 Contentguard Holding, Inc. Usage rights grammar and digital works having usage rights created with the grammar
US20040073514A1 (en) * 1994-11-23 2004-04-15 Contentguard Holdings, Inc. Method for printing digital works
US20040073515A1 (en) * 1994-11-23 2004-04-15 Stefik Mark J. Method for metering and pricing of digital works
US20040073513A1 (en) * 1994-11-23 2004-04-15 Contentguard Holdings, Inc. Method and system for conducting transactions between repositories
US20040064417A1 (en) * 1994-11-23 2004-04-01 Xerox Corporation Method for controlling use of database content
US6714921B2 (en) 1994-11-23 2004-03-30 Contentguard, Inc. System for controlling the distribution and use of digital works using digital tickets
US6708157B2 (en) 1994-11-23 2004-03-16 Contentguard Holdings Inc. System for controlling the distribution and use of digital works using digital tickets
US20030225699A1 (en) * 1994-11-23 2003-12-04 Contentguard Holdings, Inc. Content rendering repository
US20030208447A1 (en) * 1994-11-23 2003-11-06 Xerox Corporation Repository with security class and method for use thereof
US8170955B2 (en) 1994-11-23 2012-05-01 Contentguard Holdings, Inc. System and method for enforcing usage rights associated with digital content
US20010023417A1 (en) * 1994-11-23 2001-09-20 Stefik Mark J. System for controlling the distribution and use of digital works using digital tickets
US9953328B2 (en) 1994-11-23 2018-04-24 Contentguard Holdings, Inc. Method and system for conducting transactions between repositories
US20030167236A1 (en) * 1994-11-23 2003-09-04 Contentguard Holdings, Inc. Method and apparatus for repackaging portions of digital works as new digital works
US8484751B2 (en) 1994-11-23 2013-07-09 Contentguard Holdings, Inc. System and method for permitting use of content
US8671461B2 (en) 1994-11-23 2014-03-11 Contentguard Holdings, Inc. System, apparatus, and media for granting access to and utilizing content
US20100106658A1 (en) * 1994-11-23 2010-04-29 Contentguard Holdings, Inc. System and method for rendering content associated with a digital work
US9727876B2 (en) 1994-11-23 2017-08-08 Contentguard Holdings, Inc. System and method for permitting use of content using transfer rights
US9734506B2 (en) 1994-11-23 2017-08-15 Contentguard Holdings, Inc. System and method for controlling utilization of content
US20110197285A1 (en) * 1995-02-13 2011-08-11 Intertrust Technologies Corp. Systems and Methods for Secure Transaction Management and Electronic Rights Protection
US20080148056A1 (en) * 1995-02-13 2008-06-19 Ginter Karl L Systems and methods for secure transaction management and electronic rights protection
US20100325698A1 (en) * 1995-02-13 2010-12-23 Ginter Karl L Trusted and Secure Techniques for Item Delivery and Execution
US20110047077A1 (en) * 1995-02-13 2011-02-24 Intertrust Technologies Corp. Trusted Infrastructure Support Systems, Methods and Techniques for Secure Electronic Commerce Electronic Transactions and Rights Management
US20110047054A1 (en) * 1995-02-13 2011-02-24 Intertrust Technologies Corp. Trusted Infrastructure Support Systems, Methods and Techniques for Secure Electronic Commerce Electronic Transactions and Rights Management
US20110047078A1 (en) * 1995-02-13 2011-02-24 Intertrust Technologies Corp. Trusted Infrastructure Support Systems, Methods and Techniques for Secure Electronic Commerce Electronic Transactions and Rights Management
US20040133793A1 (en) * 1995-02-13 2004-07-08 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US20070234069A1 (en) * 1995-02-13 2007-10-04 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US6427140B1 (en) 1995-02-13 2002-07-30 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US6389402B1 (en) 1995-02-13 2002-05-14 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US20110047389A1 (en) * 1995-02-13 2011-02-24 Intertrust Technologies Corp. Trusted Infrastructure Support Systems, Methods and Techniques for Secure Electronic Commerce Electronic Transactions and Rights Management
US7917749B2 (en) 1995-02-13 2011-03-29 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US20070250937A1 (en) * 1995-02-13 2007-10-25 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US7844835B2 (en) 1995-02-13 2010-11-30 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US6363488B1 (en) 1995-02-13 2002-03-26 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US20060218651A1 (en) * 1995-02-13 2006-09-28 Intertrust Technologies Corp. Trusted infrastructure support systems, methods and techniques for secure electronic commerce, electronic transactions, commerce process control and automation, distributed computing, and rights management
US20060212370A1 (en) * 1995-02-13 2006-09-21 Intertrust Technologies Corp. Cryptographic methods, apparatus and systems for storage media electronic rights management in closed and connected appliances
US20070261125A1 (en) * 1995-02-13 2007-11-08 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US20070266429A1 (en) * 1995-02-13 2007-11-15 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US9195845B2 (en) 1995-02-13 2015-11-24 Intertrust Technologies Corporation Trusted and secure techniques for item delivery and execution
US20070271463A1 (en) * 1995-02-13 2007-11-22 Intertrust Technologies Corp. Trusted and Secure Techniques for Item Delivery and Execution
US20070276759A1 (en) * 1995-02-13 2007-11-29 Intertrust Technologies Corp. Trusted infrastructure support systems, methods and techniques for secure electronic commerce electronic transaction and rights management
US5910987A (en) 1995-02-13 1999-06-08 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US20070277031A1 (en) * 1995-02-13 2007-11-29 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US20080021832A1 (en) * 1995-02-13 2008-01-24 Intertrust Technologies Corp. Trusted infrastructure support systems, methods and techniques for secure electronic commerce, electronic transactions, commerce process control and automation, distributed computing, and rights management
US8751793B2 (en) 1995-02-13 2014-06-10 Intertrust Technologies Corp. Trusted infrastructure support systems, methods and techniques for secure electronic commerce transaction and rights management
US5915019A (en) 1995-02-13 1999-06-22 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US8677507B2 (en) 1995-02-13 2014-03-18 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US20080022100A1 (en) * 1995-02-13 2008-01-24 Intertrust Technologies Corp. Trusted and secure techniques for item delivery and execution
US8639625B1 (en) 1995-02-13 2014-01-28 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US5917912A (en) 1995-02-13 1999-06-29 Intertrust Technologies Corporation System and methods for secure transaction management and electronic rights protection
US8590056B2 (en) 1995-02-13 2013-11-19 Intertrust Technologies Corporation Trusted infrastructure support systems, methods and techniques for secure electronic commerce electronic transactions and rights management
US8572411B2 (en) 1995-02-13 2013-10-29 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US7831823B2 (en) 1995-02-13 2010-11-09 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US8543842B2 (en) 1995-02-13 2013-09-24 Intertrust Technologies Corporation System and methods for secure transaction management and electronics rights protection
US20080022137A1 (en) * 1995-02-13 2008-01-24 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US8533854B2 (en) 1995-02-13 2013-09-10 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US20110145602A1 (en) * 1995-02-13 2011-06-16 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US20060069926A1 (en) * 1995-02-13 2006-03-30 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US20080034231A1 (en) * 1995-02-13 2008-02-07 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US8528097B2 (en) 1995-02-13 2013-09-03 Intertrust Technologies Corporation Trusted and secure techniques for item delivery and execution
US20080034230A1 (en) * 1995-02-13 2008-02-07 Intertrust Technologies Corp Systems and methods for secure transaction management and electronic rights protection
US20100275040A1 (en) * 1995-02-13 2010-10-28 Intertrust Technologies Corp. Systems and Methods for Secure Transaction Management and Electronic Rights Protection
US20080034227A1 (en) * 1995-02-13 2008-02-07 Intertrust Technologies Corp System and methods for secure transaction management and electronic rights protection
US20080034406A1 (en) * 1995-02-13 2008-02-07 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US20110173695A1 (en) * 1995-02-13 2011-07-14 Intertrust Technologies Corp. System and Methods for Secure Transaction Management and Electronic Rights Protection
US20080127304A1 (en) * 1995-02-13 2008-05-29 Ginter Karl L Systems and methods for secure transaction management and electronic rights protection
US8464077B2 (en) 1995-02-13 2013-06-11 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US5949876A (en) * 1995-02-13 1999-09-07 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US20080126798A1 (en) * 1995-02-13 2008-05-29 Ginter Karl L Systems and methods for secure transaction management and electronic rights protection
US8443198B2 (en) 1995-02-13 2013-05-14 Intertrust Technologies Corporation Trusted and secure techniques for item delivery and execution
US20110022846A1 (en) * 1995-02-13 2011-01-27 Intertrust Technologies Corp. Systems and Methods for Secure Transaction Management and Electronic Rights Protection
US7984509B2 (en) 1995-02-13 2011-07-19 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US20100250935A1 (en) * 1995-02-13 2010-09-30 Intertrust Technologies Corp. Systems and Methods for Secure Transaction Management and Electronic Rights Protection
US6237786B1 (en) 1995-02-13 2001-05-29 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US8402557B2 (en) 1995-02-13 2013-03-19 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US8316449B2 (en) 1995-02-13 2012-11-20 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US20100228996A1 (en) * 1995-02-13 2010-09-09 Intertrust Technologies Corp. Systems and Methods for Secure Transaction Management and Electronic Rights Protection
US5982891A (en) 1995-02-13 1999-11-09 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US20050240771A1 (en) * 1995-02-13 2005-10-27 Intertrust Technologies Corporation Trusted and secure techniques, systems and methods for item delivery and execution
US8191157B2 (en) 1995-02-13 2012-05-29 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US8191158B2 (en) 1995-02-13 2012-05-29 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US8190528B2 (en) 1995-02-13 2012-05-29 Intertrust Technologies Corporation Trusted infrastructure support systems, methods and techniques for secure electronic commerce, electronic transactions, and rights management
US8185473B2 (en) 1995-02-13 2012-05-22 Intertrust Technologies Corporation Trusted infrastructure support systems, methods and techniques for secure electronic commerce, electronic transactions, commerce process control and automation, distributed computing, and rights management
US8181021B2 (en) 1995-02-13 2012-05-15 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US20080250241A1 (en) * 1995-02-13 2008-10-09 Intertrust Technology Corp. Trusted and secure techniques, systems and methods for item delivery and execution
US6185683B1 (en) 1995-02-13 2001-02-06 Intertrust Technologies Corp. Trusted and secure techniques, systems and methods for item delivery and execution
US8141165B2 (en) 1995-02-13 2012-03-20 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US6253193B1 (en) 1995-02-13 2001-06-26 Intertrust Technologies Corporation Systems and methods for the secure transaction management and electronic rights protection
US20090048978A1 (en) * 1995-02-13 2009-02-19 Ginter Karl L Systems and methods for secure transaction management and electronic rights protection
US8112625B2 (en) 1995-02-13 2012-02-07 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US6658568B1 (en) 1995-02-13 2003-12-02 Intertrust Technologies Corporation Trusted infrastructure support system, methods and techniques for secure electronic commerce transaction and rights management
US20100217994A1 (en) * 1995-02-13 2010-08-26 Intertrust Technologies Corp. Trusted Infrastructure Support Systems, Methods and Techniques for Secure Electronic Commerce, Electronic Transactions, Commerce Process Control and Automation, Distributed Computing, And Rights Management
US20090132815A1 (en) * 1995-02-13 2009-05-21 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US8055913B2 (en) 1995-02-13 2011-11-08 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US7752466B2 (en) 1995-02-13 2010-07-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US20100161963A1 (en) * 1995-02-13 2010-06-24 Intertrust Technologies Corp. Trusted and secure techniques for item delivery and execution
US8006087B2 (en) 1995-02-13 2011-08-23 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US20110225177A1 (en) * 1995-04-11 2011-09-15 Kinetech, Inc. Accessing Data In A Content-Addressable Data Processing System
US20110231647A1 (en) * 1995-04-11 2011-09-22 Kientech, Inc. Accessing data in a content-addressable data processing system
USRE44131E1 (en) 1995-06-02 2013-04-02 Fujitsu Limited Storage device having function for coping with computer virus
US5742759A (en) * 1995-08-18 1998-04-21 Sun Microsystems, Inc. Method and system for facilitating access control to system resources in a distributed computer system
US5689561A (en) * 1995-10-06 1997-11-18 Pace; Michael Computer-based trading card system and method
US6061656A (en) * 1995-10-06 2000-05-09 Pace; Michael Computer-based trading card system and method
US20060265337A1 (en) * 1996-02-26 2006-11-23 Graphon Corporation Automated system for management of licensed digital assets
US8510226B2 (en) 1996-02-26 2013-08-13 Graphon Corporation Method for synchronous encryption between a client and a licensing agent
US5933503A (en) * 1996-03-15 1999-08-03 Novell, Inc Controlled modular cryptography apparatus and method
US5978484A (en) * 1996-04-25 1999-11-02 Microsoft Corporation System and method for safety distributing executable objects
EP0813132A2 (en) * 1996-06-11 1997-12-17 International Business Machines Corporation Support for trusted software distribution
US5825877A (en) * 1996-06-11 1998-10-20 International Business Machines Corporation Support for portable trusted software
EP0813132A3 (en) * 1996-06-11 2003-01-15 International Business Machines Corporation Support for trusted software distribution
US5778070A (en) * 1996-06-28 1998-07-07 Intel Corporation Method and apparatus for protecting flash memory
US6145080A (en) * 1996-07-01 2000-11-07 International Business Machine Corporation Method for safely transferring data and applications onto a chipcard
US5987123A (en) * 1996-07-03 1999-11-16 Sun Microsystems, Incorporated Secure file system
US5710814A (en) * 1996-07-23 1998-01-20 Cheyenne Property Trust Cryptographic unit touch point logic
US6065118A (en) * 1996-08-09 2000-05-16 Citrix Systems, Inc. Mobile code isolation cage
US7925898B2 (en) 1996-08-12 2011-04-12 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US5943422A (en) 1996-08-12 1999-08-24 Intertrust Technologies Corp. Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels
US6449367B2 (en) 1996-08-12 2002-09-10 Intertrust Technologies Corp. Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels
US6618484B2 (en) 1996-08-12 2003-09-09 Intertrust Technologies Corporation Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels
US6240185B1 (en) 1996-08-12 2001-05-29 Intertrust Technologies Corporation Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels
US8307212B2 (en) 1996-08-12 2012-11-06 Intertrust Technologies Corp. Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels
US6292569B1 (en) 1996-08-12 2001-09-18 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US6157721A (en) 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US20080052541A1 (en) * 1996-08-30 2008-02-28 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US5892900A (en) 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US8291238B2 (en) 1996-08-30 2012-10-16 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US8533851B2 (en) 1996-08-30 2013-09-10 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US9219755B2 (en) 1996-11-08 2015-12-22 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US9141786B2 (en) 1996-11-08 2015-09-22 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
EP0965094A4 (en) * 1996-11-08 2004-12-29 Finjan Software Ltd System and method for protecting a computer and a network from hostile downloadables
US9189621B2 (en) 1996-11-08 2015-11-17 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US9444844B2 (en) 1996-11-08 2016-09-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
EP0965094A2 (en) * 1996-11-08 1999-12-22 Finjan Software, Ltd. System and method for protecting a computer and a network from hostile downloadables
US6802028B1 (en) 1996-11-11 2004-10-05 Powerquest Corporation Computer virus detection and removal
US5740248A (en) * 1996-11-12 1998-04-14 Cheyenne Property Trust Software level touchpoints for an international cryptography frameworks
US5878417A (en) * 1996-11-20 1999-03-02 International Business Machines Corporation Method and apparatus for network security in browser based interfaces
EP0845733A2 (en) * 1996-11-27 1998-06-03 Sun Microsystems, Inc. Implementing digital signatures for data streams and data archives
EP0845733A3 (en) * 1996-11-27 2002-09-18 Sun Microsystems, Inc. Implementing digital signatures for data streams and data archives
US6367012B1 (en) * 1996-12-06 2002-04-02 Microsoft Corporation Embedding certifications in executable files for network transmission
US7149901B2 (en) * 1996-12-12 2006-12-12 Intel Corporation Cryptographically protected paging system
US6212542B1 (en) * 1996-12-16 2001-04-03 International Business Machines Corporation Method and system for executing a program within a multiscalar processor by processing linked thread descriptors
US8677494B2 (en) 1997-01-29 2014-03-18 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US5920861A (en) 1997-02-25 1999-07-06 Intertrust Technologies Corp. Techniques for defining using and manipulating rights management data structures
US6138119A (en) 1997-02-25 2000-10-24 Intertrust Technologies Corp. Techniques for defining, using and manipulating rights management data structures
US7031471B2 (en) 1997-02-28 2006-04-18 Contentguard Holdings, Inc. System for controlling the distribution and use of rendered digital works through watermarking
US5915085A (en) * 1997-02-28 1999-06-22 International Business Machines Corporation Multiple resource or security contexts in a multithreaded application
US9589111B2 (en) 1997-02-28 2017-03-07 Contentguard Holdings, Inc. System for controlling the distribution and use of rendered digital works through watermarking
US8205089B2 (en) 1997-02-28 2012-06-19 Contentguard Holdings, Inc. System for controlling the distribution and use of rendered digital works through watermarking
US7765403B2 (en) 1997-02-28 2010-07-27 Contentguard Holdings, Inc. System for controlling the distribution and use of rendered digital works through watermarking
US20010008557A1 (en) * 1997-02-28 2001-07-19 Stefik Mark J. System for controlling the distribution and use of rendered digital works through watermarking
EP0871134A3 (en) * 1997-04-11 2001-01-10 Informix Software, Inc. Accessing database information
EP0871134A2 (en) * 1997-04-11 1998-10-14 Informix Software, Inc. Accessing database information
US6101603A (en) * 1997-05-21 2000-08-08 At&T Corporation System and method for using a second resource to store a data element from a first resource in a first-in last-out stack
US6249871B1 (en) 1997-05-21 2001-06-19 At&T Corporation System and method for using a second resource to store a data element from a first resource in a first-in last-out stack
US6237094B1 (en) 1997-05-21 2001-05-22 At&T Corporation System and method for using a second resource to store a data element from a first resource in a first-in first-out queue
US6098170A (en) * 1997-05-21 2000-08-01 At&T Corporation System and method for using a second resource to store a data element from a first resource in a first-in first-out queue
US5940590A (en) * 1997-05-31 1999-08-17 International Business Machines Corporation System and method for securing computer-executable program code using task gates
EP1000400A4 (en) * 1997-06-17 2005-04-06 Purdue Pharma Lp Self-destructing document and e-mail messaging system
EP1000400A1 (en) * 1997-06-17 2000-05-17 Purdue Pharma LP Self-destructing document and e-mail messaging system
US6175924B1 (en) * 1997-06-20 2001-01-16 International Business Machines Corp. Method and apparatus for protecting application data in secure storage areas
US6389534B1 (en) * 1997-06-30 2002-05-14 Taher Elgamal Cryptographic policy filters and policy control method and apparatus
US7013390B1 (en) 1997-06-30 2006-03-14 Netscape Communications Corporation Cryptographic policy filters and policy control method and apparatus
US6397330B1 (en) 1997-06-30 2002-05-28 Taher Elgamal Cryptographic policy filters and policy control method and apparatus
US7360241B1 (en) 1997-06-30 2008-04-15 Netscape Communications Corporation Cryptographic policy filters and policy control method and apparatus
US5958005A (en) * 1997-07-17 1999-09-28 Bell Atlantic Network Services, Inc. Electronic mail security
US20130179989A1 (en) * 1997-07-28 2013-07-11 Apple Inc. Method and apparatus for enforcing software licenses
US8027925B1 (en) * 1997-07-28 2011-09-27 Apple Inc. System method and apparatus for authorizing access
US8452712B2 (en) * 1997-07-28 2013-05-28 Apple Inc. Method and apparatus for enforcing software licenses
US20120066135A1 (en) * 1997-07-28 2012-03-15 Apple Inc., a California corporation Method and Apparatus for Enforcing Software Licenses
US8781971B2 (en) * 1997-07-28 2014-07-15 Apple Inc. Method and apparatus for enforcing software licenses
US6188995B1 (en) * 1997-07-28 2001-02-13 Apple Computer, Inc. Method and apparatus for enforcing software licenses
US6216116B1 (en) * 1997-08-14 2001-04-10 Diversinet Corp. System and method for handling permits
WO1999009484A1 (en) * 1997-08-14 1999-02-25 Mordhai Barkan System and method for handling permits
US6112304A (en) * 1997-08-27 2000-08-29 Zipsoft, Inc. Distributed computing architecture
US6167521A (en) * 1997-08-29 2000-12-26 International Business Machines Corporation Securely downloading and executing code from mutually suspicious authorities
US6112181A (en) 1997-11-06 2000-08-29 Intertrust Technologies Corporation Systems and methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information
US20080201777A1 (en) * 1998-03-02 2008-08-21 Doron Elgressy Method and Agent for the Protection Against the Unauthorized Use of Computer Resources
US6701433B1 (en) 1998-03-23 2004-03-02 Novell, Inc. Method and apparatus for escrowing properties used for accessing executable modules
US6751735B1 (en) 1998-03-23 2004-06-15 Novell, Inc. Apparatus for control of cryptography implementations in third party applications
US6615350B1 (en) 1998-03-23 2003-09-02 Novell, Inc. Module authentication and binding library extensions
US7383442B2 (en) 1998-03-23 2008-06-03 Novell, Inc. Nested strong loader apparatus and method
US6532451B1 (en) 1998-03-23 2003-03-11 Novell, Inc. Nested strong loader apparatus and method
US20030061483A1 (en) * 1998-03-23 2003-03-27 Novell, Inc. Nested strong loader apparatus and method
US6446144B1 (en) 1998-04-01 2002-09-03 Microsoft Corporation Method and system for message transfer session management
US6446206B1 (en) * 1998-04-01 2002-09-03 Microsoft Corporation Method and system for access control of a message queue
US6529932B1 (en) 1998-04-01 2003-03-04 Microsoft Corporation Method and system for distributed transaction processing with asynchronous message delivery
US6708274B2 (en) * 1998-04-30 2004-03-16 Intel Corporation Cryptographically protected paging subsystem
US6058482A (en) * 1998-05-22 2000-05-02 Sun Microsystems, Inc. Apparatus, method and system for providing network security for executable code in computer and communications networks
US6505300B2 (en) * 1998-06-12 2003-01-07 Microsoft Corporation Method and system for secure running of untrusted content
US6308273B1 (en) 1998-06-12 2001-10-23 Microsoft Corporation Method and system of security location discrimination
US6279111B1 (en) 1998-06-12 2001-08-21 Microsoft Corporation Security model using restricted tokens
US6308274B1 (en) 1998-06-12 2001-10-23 Microsoft Corporation Least privilege via restricted tokens
US20050171737A1 (en) * 1998-06-15 2005-08-04 Hartley Bruce V. Method and apparatus for assessing the security of a computer system
US6226618B1 (en) 1998-08-13 2001-05-01 International Business Machines Corporation Electronic content delivery system
US6574609B1 (en) 1998-08-13 2003-06-03 International Business Machines Corporation Secure electronic content management system
US6398245B1 (en) 1998-08-13 2002-06-04 International Business Machines Corporation Key management system for digital content player
US6587837B1 (en) 1998-08-13 2003-07-01 International Business Machines Corporation Method for delivering electronic content from an online store
US7269564B1 (en) 1998-08-13 2007-09-11 International Business Machines Corporation Method and apparatus to indicate an encoding status for digital content
US6263313B1 (en) 1998-08-13 2001-07-17 International Business Machines Corporation Method and apparatus to create encoded digital content
US6418421B1 (en) 1998-08-13 2002-07-09 International Business Machines Corporation Multimedia player for an electronic content delivery system
US6389538B1 (en) 1998-08-13 2002-05-14 International Business Machines Corporation System for tracking end-user electronic content usage
US6611812B2 (en) 1998-08-13 2003-08-26 International Business Machines Corporation Secure electronic content distribution on CDS and DVDs
US7590866B2 (en) 1998-08-13 2009-09-15 International Business Machines Corporation Super-distribution of protected digital content
US6389403B1 (en) 1998-08-13 2002-05-14 International Business Machines Corporation Method and apparatus for uniquely identifying a customer purchase in an electronic distribution system
US20060089912A1 (en) * 1998-08-13 2006-04-27 International Business Machines Corporation Updating usage conditions in lieu of download digital rights management protected content
US20060095792A1 (en) * 1998-08-13 2006-05-04 Hurtado Marco M Super-distribution of protected digital content
US7110984B1 (en) 1998-08-13 2006-09-19 International Business Machines Corporation Updating usage conditions in lieu of download digital rights management protected content
US7206748B1 (en) 1998-08-13 2007-04-17 International Business Machines Corporation Multimedia player toolkit for electronic content delivery
US7487128B2 (en) 1998-08-13 2009-02-03 International Business Machines Corporation Updating usage conditions in lieu of download digital rights management protected content
US6959288B1 (en) 1998-08-13 2005-10-25 International Business Machines Corporation Digital content preparation system
US6345256B1 (en) 1998-08-13 2002-02-05 International Business Machines Corporation Automated method and apparatus to package digital content for electronic distribution using the identity of the source content
US6983371B1 (en) 1998-10-22 2006-01-03 International Business Machines Corporation Super-distribution of protected digital content
US7068787B1 (en) 1998-10-23 2006-06-27 Contentguard Holdings, Inc. System and method for protection of digital works
US6694434B1 (en) * 1998-12-23 2004-02-17 Entrust Technologies Limited Method and apparatus for controlling program execution and program distribution
US7356692B2 (en) 1999-03-08 2008-04-08 Spyrus, Inc. Method and system for enforcing access to a computing resource using a licensing attribute certificate
US6904523B2 (en) 1999-03-08 2005-06-07 Spyrus, Inc. Method and system for enforcing access to a computing resource using a licensing attribute certificate
US20050262553A1 (en) * 1999-03-08 2005-11-24 Bialick William P Method and system for enforcing access to a computing resource using a licensing attribute certificate
US20020184508A1 (en) * 1999-03-08 2002-12-05 Bialick William P. Method and system for enforcing access to a computing resource using a licensing attribute certificate
US7356688B1 (en) 1999-04-06 2008-04-08 Contentguard Holdings, Inc. System and method for document distribution
US6859533B1 (en) 1999-04-06 2005-02-22 Contentguard Holdings, Inc. System and method for transferring the right to decode messages in a symmetric encoding scheme
US7286665B1 (en) 1999-04-06 2007-10-23 Contentguard Holdings, Inc. System and method for transferring the right to decode messages
US6937726B1 (en) 1999-04-06 2005-08-30 Contentguard Holdings, Inc. System and method for protecting data files by periodically refreshing a decryption key
US20050008153A1 (en) * 1999-06-25 2005-01-13 Barton Colleen A. Method and logic for capturing and analyzing conduit data
US6658567B1 (en) 1999-06-25 2003-12-02 Geomechanics International, Inc. Method and logic for locking geological data and an analyzer program that analyzes the geological data
EP1065861A1 (en) * 1999-06-28 2001-01-03 Alcatel Method to provide authorization, a certifying authority, a terminal, a service provider and a certificate realizing such a method
US6880080B1 (en) 1999-06-28 2005-04-12 Alcatel Method to provide authorization from a certifying authority to a service provider using a certificate
US6816965B1 (en) 1999-07-16 2004-11-09 Spyrus, Inc. Method and system for a policy enforcing module
US6564307B1 (en) 1999-08-18 2003-05-13 International Business Machines Corporation Method, system, and program for logically erasing data
US6885748B1 (en) 1999-10-23 2005-04-26 Contentguard Holdings, Inc. System and method for protection of digital works
US8794516B2 (en) 1999-10-25 2014-08-05 Smartflash, LLC Data storage and access systems
US7131008B1 (en) 1999-11-22 2006-10-31 Sun Microsystems, Inc. Mechanism for dynamically constructing customized implementations to enforce restrictions
US7051067B1 (en) * 1999-11-22 2006-05-23 Sun Microsystems, Inc. Object oriented mechanism for dynamically constructing customized implementations to enforce restrictions
US6792537B1 (en) 1999-11-22 2004-09-14 Sun Microsystems, Inc. Mechanism for determining restrictions to impose on an implementation of a service
US6721888B1 (en) 1999-11-22 2004-04-13 Sun Microsystems, Inc. Mechanism for merging multiple policies
US20050177812A1 (en) * 1999-12-01 2005-08-11 Microsoft Corporation External resource files for application development and management
US7152221B2 (en) 1999-12-01 2006-12-19 Microsoft Corporation External resource files for application development and management
US6834110B1 (en) 1999-12-09 2004-12-21 International Business Machines Corporation Multi-tier digital TV programming for content distribution
US7277870B2 (en) 1999-12-09 2007-10-02 International Business Machines Corporation Digital content distribution using web broadcasting services
US20060053077A1 (en) * 1999-12-09 2006-03-09 International Business Machines Corporation Digital content distribution using web broadcasting services
US7213005B2 (en) 1999-12-09 2007-05-01 International Business Machines Corporation Digital content distribution using web broadcasting services
US7243335B1 (en) 2000-02-17 2007-07-10 Microsoft Corporation Method and system for reducing coding complexity by providing intelligent manipulable defaults
US20010025281A1 (en) * 2000-03-27 2001-09-27 International Business Machines Corporation Method for access control of aggregated data
US6751509B2 (en) * 2000-03-27 2004-06-15 International Business Machines Corporation Method for access control of aggregated data
US10552603B2 (en) 2000-05-17 2020-02-04 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US7117371B1 (en) * 2000-06-28 2006-10-03 Microsoft Corporation Shared names
US7020773B1 (en) 2000-07-17 2006-03-28 Citrix Systems, Inc. Strong mutual authentication of devices
US20040205344A1 (en) * 2000-07-17 2004-10-14 Otway David John Strong mutual authentication of devices
US7293176B2 (en) 2000-07-17 2007-11-06 Citrix Systems, Inc. Strong mutual authentication of devices
US20030200468A1 (en) * 2000-08-28 2003-10-23 Contentguard Holdings, Inc. Method and apparatus for preserving customer identity in on-line transactions
US7269735B2 (en) 2000-08-28 2007-09-11 Contentgaurd Holdings, Inc. Instance specific digital watermarks
US7206941B2 (en) 2000-08-28 2007-04-17 Contentguard Holdings, Inc. Method and apparatus for validating security components through a request for content
US20030196092A1 (en) * 2000-08-28 2003-10-16 Contentguard Holdings, Inc. Method and apparatus for sharing secure communications
US20030196093A1 (en) * 2000-08-28 2003-10-16 Contentguard Holdings, Inc. Instance specific digital watermarks
US20030196109A1 (en) * 2000-08-28 2003-10-16 Contentguard Holdings, Inc. Method and apparatus for content transaction aggregation
US20030196091A1 (en) * 2000-08-28 2003-10-16 Contentguard Holdings, Inc. Method and apparatus for validating security components through a request for content
US7073199B1 (en) 2000-08-28 2006-07-04 Contentguard Holdings, Inc. Document distribution management method and apparatus using a standard rendering engine and a method and apparatus for controlling a standard rendering engine
US20030196119A1 (en) * 2000-08-28 2003-10-16 Contentguard Holdings, Inc. Method and apparatus for identifying installed software and regulating access to content
US20030196121A1 (en) * 2000-08-28 2003-10-16 Contentguard Holdings, Inc. Method and apparatus for automatically deploy security components in a content distribution system
US7237125B2 (en) 2000-08-28 2007-06-26 Contentguard Holdings, Inc. Method and apparatus for automatically deploying security components in a content distribution system
US7603319B2 (en) 2000-08-28 2009-10-13 Contentguard Holdings, Inc. Method and apparatus for preserving customer identity in on-line transactions
US8225414B2 (en) 2000-08-28 2012-07-17 Contentguard Holdings, Inc. Method and apparatus for identifying installed software and regulating access to content
US20030196120A1 (en) * 2000-08-28 2003-10-16 Contentguard Holdings, Inc. Method and apparatus for automatic deployment of a rendering engine
US7743259B2 (en) 2000-08-28 2010-06-22 Contentguard Holdings, Inc. System and method for digital rights management using a standard rendering engine
US9336366B2 (en) 2000-08-28 2016-05-10 Contentguard Holdings, Inc. Method and apparatus for identifying installed software and regulating access to content
US6931545B1 (en) 2000-08-28 2005-08-16 Contentguard Holdings, Inc. Systems and methods for integrity certification and verification of content consumption environments
US7412605B2 (en) 2000-08-28 2008-08-12 Contentguard Holdings, Inc. Method and apparatus for variable encryption of data
US20030177400A1 (en) * 2000-08-28 2003-09-18 Contentguard Holdings, Inc. Method and apparatus for variable encryption of data
US20050262086A1 (en) * 2000-08-28 2005-11-24 Content Guard Holdings, Inc. Systems and methods for integrity certification and verification
US8832852B2 (en) 2000-08-28 2014-09-09 Contentguard Holdings, Inc. Method and apparatus for dynamic protection of static and dynamic content
US20030204753A1 (en) * 2000-08-28 2003-10-30 Contentguard Holdings, Inc. Method and apparatus for dynamic protection of static and dynamic content
US8489900B2 (en) 2000-08-28 2013-07-16 Contentguard Holdings, Inc. Method and apparatus for providing a specific user interface in a system for managing content
US7913095B2 (en) 2000-08-28 2011-03-22 Contentguard Holdings, Inc. Method and apparatus for providing a specific user interface in a system for managing content
US20050278793A1 (en) * 2000-08-28 2005-12-15 Contentguard Holdings, Inc. Method and apparatus for providing a specific user interface in a system for managing content
US7500109B2 (en) 2000-09-08 2009-03-03 International Business Machines Corporation System and method for secure authentication of external software modules provided by third parties
US6978375B1 (en) 2000-09-08 2005-12-20 International Business Machines Corporation System and method for secure authentication of external software modules provided by third parties
US20050216422A1 (en) * 2000-09-08 2005-09-29 International Business Machines Corporation. System and method for secure authentication of external software modules provided by third parties
US11030278B2 (en) 2000-09-21 2021-06-08 Blackberry Limited Code signing system and method
US10032007B1 (en) 2000-09-21 2018-07-24 Blackberry Limited Controlling access by code
US10437967B2 (en) 2000-09-21 2019-10-08 Blackberry Limited Code signing system and method
US6986040B1 (en) 2000-11-03 2006-01-10 Citrix Systems, Inc. System and method of exploiting the security of a secure communication channel to secure a non-secure communication channel
US8271350B2 (en) 2000-11-03 2012-09-18 Contentguard Holdings, Inc. Method and system for automatically publishing content
US7343324B2 (en) 2000-11-03 2008-03-11 Contentguard Holdings Inc. Method, system, and computer readable medium for automatically publishing content
WO2002044995A2 (en) * 2000-11-28 2002-06-06 Setec Oy Installation of programs into microcircuit
WO2002044995A3 (en) * 2000-11-28 2002-07-25 Setec Oy Installation of programs into microcircuit
US20020126869A1 (en) * 2000-12-29 2002-09-12 Xin Wang Multi-stage watermarking process and system
US20050283611A1 (en) * 2000-12-29 2005-12-22 Xin Wang Multi-stage watermarking process and system
US7609848B2 (en) 2000-12-29 2009-10-27 Contentguard Holdings, Inc. Multi-stage watermarking process and system
US7184571B2 (en) 2000-12-29 2007-02-27 Contentgaurd Holdings, Inc. Multi-stage watermarking process and system
US6912294B2 (en) 2000-12-29 2005-06-28 Contentguard Holdings, Inc. Multi-stage watermarking process and system
US7907749B2 (en) 2000-12-29 2011-03-15 Contentguard Holdings, Inc. Multi-stage watermarking process and system
US20040006542A1 (en) * 2001-01-17 2004-01-08 Contentguard Holdings, Inc. System and method for supplying and managing usage rights associated with an item repository
US10540484B2 (en) 2001-01-17 2020-01-21 Contentguard Holdings, Inc. Networked services licensing system and method
US7028009B2 (en) 2001-01-17 2006-04-11 Contentguardiholdings, Inc. Method and apparatus for distributing enforceable property rights
US8069116B2 (en) 2001-01-17 2011-11-29 Contentguard Holdings, Inc. System and method for supplying and managing usage rights associated with an item repository
US7085741B2 (en) 2001-01-17 2006-08-01 Contentguard Holdings, Inc. Method and apparatus for managing digital content usage rights
US20020198843A1 (en) * 2001-01-17 2002-12-26 Xin Wang Method and apparatus for distributing enforceable property rights
US7206765B2 (en) 2001-01-17 2007-04-17 Contentguard Holdings, Inc. System and method for supplying and managing usage rights based on rules
US20040034582A1 (en) * 2001-01-17 2004-02-19 Contentguard Holding, Inc. System and method for supplying and managing usage rights based on rules
US6742094B2 (en) 2001-01-31 2004-05-25 Kabushiki Kaisha Toshiba System for access control to hidden storage area in a disk drive
US20020178375A1 (en) * 2001-01-31 2002-11-28 Harris Corporation Method and system for protecting against malicious mobile code
SG99385A1 (en) * 2001-01-31 2003-10-27 Toshiba Kk System for access control to hidden storage area in a disk drive
US7143286B2 (en) * 2001-02-17 2006-11-28 Hewlett-Packard Development Company, L.P. Digital certificates
US7107449B2 (en) * 2001-02-17 2006-09-12 Hewlett-Packard Development Company, L.P. Digital certificates
US20020116367A1 (en) * 2001-02-17 2002-08-22 Richard Brown Digital certificates
US20020120848A1 (en) * 2001-02-17 2002-08-29 Marco Casassa Mont Digital certificates
US20030236977A1 (en) * 2001-04-25 2003-12-25 Levas Robert George Method and system for providing secure access to applications
US20020161999A1 (en) * 2001-04-25 2002-10-31 Gunter Carl A. Method and system for expediting delegation of permission
US20020162019A1 (en) * 2001-04-25 2002-10-31 Berry Michael C. Method and system for managing access to services
US20020158904A1 (en) * 2001-04-25 2002-10-31 Gunter Carl A. Method for automatically generating list of meeting participants and delegation permission
US20020162004A1 (en) * 2001-04-25 2002-10-31 Gunter Carl A. Method and system for managing access to services
US6885388B2 (en) 2001-04-25 2005-04-26 Probaris Technologies Inc. Method for automatically generating list of meeting participants and delegation permission
US20050086540A1 (en) * 2001-04-25 2005-04-21 Probaris Technologies, Inc. Method for automatically generating list of meeting participants and delegating permission
US20050210263A1 (en) * 2001-04-25 2005-09-22 Levas Robert G Electronic form routing and data capture system and method
US20030043852A1 (en) * 2001-05-18 2003-03-06 Bijan Tadayon Method and apparatus for verifying data integrity based on data compression parameters
US20030023564A1 (en) * 2001-05-31 2003-01-30 Contentguard Holdings, Inc. Digital rights management of content when content is a future live event
US20020184158A1 (en) * 2001-05-31 2002-12-05 Bijan Tadayon Method and apparatus for establishing usage rights for digital content to be created in the future
US7222104B2 (en) 2001-05-31 2007-05-22 Contentguard Holdings, Inc. Method and apparatus for transferring usage rights and digital work having transferrable usage rights
US20070038859A1 (en) * 2001-05-31 2007-02-15 Content Guard Holdings, Inc. Method and apparatus for hierarchical assignment of rights to documents and documents having such rights
US20070162398A1 (en) * 2001-05-31 2007-07-12 Bijan Tadayon Method and apparatus for transferring usage rights and digital work having transferable usage rights
US7162633B2 (en) 2001-05-31 2007-01-09 Contentguard Holdings, Inc. Method and apparatus for hierarchical assignment of rights to documents and documents having such rights
US8892473B2 (en) 2001-05-31 2014-11-18 Contentguard Holdings, Inc. Method and system for subscription digital rights management
US6976009B2 (en) 2001-05-31 2005-12-13 Contentguard Holdings, Inc. Method and apparatus for assigning consequential rights to documents and documents having such rights
US8001053B2 (en) 2001-05-31 2011-08-16 Contentguard Holdings, Inc. System and method for rights offering and granting using shared state variables
US8869293B2 (en) 2001-05-31 2014-10-21 Contentguard Holdings, Inc. Method and apparatus for hierarchical assignment of rights to documents and documents having such rights
US20050197963A1 (en) * 2001-05-31 2005-09-08 Contentguard Holdings, Inc. Method and apparatus for establishing usage rights for digital content to be created in the future
US8862517B2 (en) 2001-05-31 2014-10-14 Contentguard Holdings, Inc. Digital rights management of content when content is a future live event
US7152046B2 (en) 2001-05-31 2006-12-19 Contentguard Holdings, Inc. Method and apparatus for tracking status of resource in a system for managing use of the resources
US6973445B2 (en) 2001-05-31 2005-12-06 Contentguard Holdings, Inc. Demarcated digital content and method for creating and processing demarcated digital works
US6754642B2 (en) 2001-05-31 2004-06-22 Contentguard Holdings, Inc. Method and apparatus for dynamically assigning usage rights to digital works
US20090265278A1 (en) * 2001-05-31 2009-10-22 Contentguard Holdings, Inc. Digital rights management of content when content is a future live event
US8099364B2 (en) 2001-05-31 2012-01-17 Contentguard Holdings, Inc. Digital rights management of content when content is a future live event
US20100241871A1 (en) * 2001-05-31 2010-09-23 Contentguard Holdings, Inc. Method and apparatus for establishing usage rights for digital content to be created in the future
US20090327137A1 (en) * 2001-05-31 2009-12-31 Michael Charles Raley Method and apparatus for establishing usage rights for digital content to be created in the future
US20020184156A1 (en) * 2001-05-31 2002-12-05 Bijan Tadayon Method and apparatus for transferring usage rights and digital work having transferrable usage rights
US20020184159A1 (en) * 2001-05-31 2002-12-05 Bijan Tadayon Demarcated digital content and method for creating and processing demarcated digital works
US8275709B2 (en) 2001-05-31 2012-09-25 Contentguard Holdings, Inc. Digital rights management of content when content is a future live event
US20050187877A1 (en) * 2001-05-31 2005-08-25 Contentguard Holding, Inc. Method and apparatus for hierarchical assignment of rights to documents and documents having such rights
US8275716B2 (en) 2001-05-31 2012-09-25 Contentguard Holdings, Inc. Method and system for subscription digital rights management
US7725401B2 (en) 2001-05-31 2010-05-25 Contentguard Holdings, Inc. Method and apparatus for establishing usage rights for digital content to be created in the future
US20020198846A1 (en) * 2001-05-31 2002-12-26 Guillermo Lao Method and system for subscription digital rights management
US20030009424A1 (en) * 2001-05-31 2003-01-09 Contentguard Holdings, Inc. Method for managing access and use of resources by verifying conditions and conditions for use therewith
US20030182235A1 (en) * 2001-05-31 2003-09-25 Xin Wang Method and apparatus for tracking status of resource in a system for managing use of the resources
US20030009423A1 (en) * 2001-05-31 2003-01-09 Xin Wang Rights offering and granting
US8412644B2 (en) 2001-05-31 2013-04-02 Contentguard Holdings, Inc. Method and apparatus for establishing usage rights for digital content to be created in the future
US20050137984A1 (en) * 2001-05-31 2005-06-23 Mai Nguyen System and method for rights offering and granting using shared state variables
US7774279B2 (en) 2001-05-31 2010-08-10 Contentguard Holdings, Inc. Rights offering and granting
US6876984B2 (en) 2001-05-31 2005-04-05 Contentguard Holdings, Inc. Method and apparatus for establishing usage rights for digital content to be created in the future
US8442916B2 (en) 2001-05-31 2013-05-14 Contentguard Holdings, Inc. Digital rights management of content when content is a future live event
US8468098B2 (en) 2001-05-31 2013-06-18 Contentguard Holdings, Inc. Method and system for subscription digital rights management
US20050060571A1 (en) * 2001-06-07 2005-03-17 Xin Wang System and method for managing transfer of rights using shared state variables
US7853531B2 (en) 2001-06-07 2010-12-14 Contentguard Holdings, Inc. Method and apparatus for supporting multiple trust zones in a digital rights management system
US8078542B2 (en) 2001-06-07 2011-12-13 Contentguard Holdings, Inc. System and method for managing transfer of rights using shared state variables
US20030140003A1 (en) * 2001-06-07 2003-07-24 Xin Wang Method and apparatus managing the transfer of rights
US20030066884A1 (en) * 2001-06-07 2003-04-10 Reddy Karimireddy Hari Protected content distribution system
US7774280B2 (en) 2001-06-07 2010-08-10 Contentguard Holdings, Inc. System and method for managing transfer of rights using shared state variables
US20100263057A1 (en) * 2001-06-07 2010-10-14 Contentguard Holdings, Inc. System and method for managing transfer of rights using shared state variables
US20020198845A1 (en) * 2001-06-07 2002-12-26 Contentguard Holdings, Inc. Method and apparatus for supporting multiple trust zones in a digital rights management system
US20100275270A1 (en) * 2001-06-07 2010-10-28 Contentguard Holdings, Inc. Method and apparatus for managing the transfer of rights
US6824051B2 (en) 2001-06-07 2004-11-30 Contentguard Holdings, Inc. Protected content distribution system
US20050273513A1 (en) * 2001-06-13 2005-12-08 Citrix Systems, Inc. Systems and methods for continuing an operation interrupted from a reconnection between a client and server
US20050267974A1 (en) * 2001-06-13 2005-12-01 Citrix Systems, Inc. Systems and methods for maintaining a client's network connection thru a change in network identifier
US8874791B2 (en) 2001-06-13 2014-10-28 Citrix Systems, Inc. Automatically reconnecting a client across reliable and persistent communication sessions
US7502726B2 (en) 2001-06-13 2009-03-10 Citrix Systems, Inc. Systems and methods for maintaining a session between a client and host service
US20020194473A1 (en) * 2001-06-13 2002-12-19 Pope David E. Method and apparatus for transmitting authentication credentials of a user across communication sessions
US7100200B2 (en) 2001-06-13 2006-08-29 Citrix Systems, Inc. Method and apparatus for transmitting authentication credentials of a user across communication sessions
US7340772B2 (en) 2001-06-13 2008-03-04 Citrix Systems, Inc. Systems and methods for continuing an operation interrupted from a reconnection between a client and server
US20050198379A1 (en) * 2001-06-13 2005-09-08 Citrix Systems, Inc. Automatically reconnecting a client across reliable and persistent communication sessions
US8090874B2 (en) 2001-06-13 2012-01-03 Citrix Systems, Inc. Systems and methods for maintaining a client's network connection thru a change in network identifier
US20050246445A1 (en) * 2001-06-13 2005-11-03 Citrix Systems, Inc. Systems and methods for maintaining a session between a client and host service
US20080235797A1 (en) * 2001-09-13 2008-09-25 International Business Machines Corporation Method, Apparatus, and Program to Forward and Verify Multiple Digital Signatures in Electronic Mail
US20080235345A1 (en) * 2001-09-13 2008-09-25 International Business Machines Corporation Method, Apparatus, and Program to Forward and Verify Multiple Digital Signatures in Electronic Mail
US20060190545A1 (en) * 2001-09-13 2006-08-24 Banerjee Dwip N Method, apparatus, and program to forward and verify multiple digital signatures in electronic mail
US7389422B2 (en) 2001-09-13 2008-06-17 International Business Machines Corporation System for forwarding and verifying multiple digital signatures corresponding to users and contributions of the users in electronic mail
US20030050981A1 (en) * 2001-09-13 2003-03-13 International Business Machines Corporation Method, apparatus, and program to forward and verify multiple digital signatures in electronic mail
US7305553B2 (en) * 2001-11-16 2007-12-04 Microsoft Corporation Manifest-based trusted agent management in a trusted operating system environment
US7107463B2 (en) * 2001-11-16 2006-09-12 Microsoft Corporation Manifest-based trusted agent management in a trusted operating system environment
US20030097579A1 (en) * 2001-11-16 2003-05-22 Paul England Manifest-based trusted agent management in a trusted operating system environment
US20050278477A1 (en) * 2001-11-16 2005-12-15 Microsoft Corporation Manifest-based trusted agent management in a trusted operating system environment
US20050289351A1 (en) * 2001-11-16 2005-12-29 Microsoft Corporation Manifest-based trusted agent management in a trusted operating system environment
US7257707B2 (en) 2001-11-16 2007-08-14 Microsoft Corporation Manifest-based trusted agent management in a trusted operating system environment
US20070174921A1 (en) * 2001-11-16 2007-07-26 Microsoft Corporation Manifest-Based Trusted Agent Management in a Trusted Operating System Environment
US20050278530A1 (en) * 2001-11-16 2005-12-15 Microsoft Corporation Manifest-based trusted agent management in a trusted operating system environment
US7634661B2 (en) 2001-11-16 2009-12-15 Microsoft Corporation Manifest-based trusted agent management in a trusted operating system environment
US7137004B2 (en) * 2001-11-16 2006-11-14 Microsoft Corporation Manifest-based trusted agent management in a trusted operating system environment
US20060005230A1 (en) * 2001-11-16 2006-01-05 Microsoft Corporation Manifest-based trusted agent management in a trusted operating system environment
US9898715B2 (en) 2001-11-20 2018-02-20 Contentguart Holdings, Inc. Systems and methods for creating, manipulating and processing rights and contract expressions using tokenized templates
US20030105830A1 (en) * 2001-12-03 2003-06-05 Duc Pham Scalable network media access controller and methods
US20030115461A1 (en) * 2001-12-14 2003-06-19 O'neill Mark System and method for the signing and authentication of configuration settings using electronic signatures
US20030131348A1 (en) * 2002-01-08 2003-07-10 International Business Machines Corporation Method, apparatus, and program to determine the mutability of an object at loading time
US7114152B2 (en) 2002-01-08 2006-09-26 International Business Machines Corporation Method, apparatus, and program to determine the mutability of an object at loading time
US20030220880A1 (en) * 2002-01-17 2003-11-27 Contentguard Holdings, Inc. Networked services licensing system and method
US20040111375A1 (en) * 2002-02-07 2004-06-10 Oracle International Corporation Methods and systems for authentication and authorization
US8566249B2 (en) * 2002-02-07 2013-10-22 Oracle International Corporation Methods and systems for authentication and authorization
US7661129B2 (en) 2002-02-26 2010-02-09 Citrix Systems, Inc. Secure traversal of network components
US7984157B2 (en) 2002-02-26 2011-07-19 Citrix Systems, Inc. Persistent and reliable session securely traversing network components using an encapsulating protocol
US20050198380A1 (en) * 2002-02-26 2005-09-08 Citrix Systems, Inc. A persistent and reliable session securely traversing network components using an encapsulating protocol
US20030163569A1 (en) * 2002-02-26 2003-08-28 Citrix Systems, Inc Secure traversal of network components
US20030172299A1 (en) * 2002-03-05 2003-09-11 Gunter Carl A. Method and system for maintaining secure access to web server services using permissions
US20030172297A1 (en) * 2002-03-05 2003-09-11 Gunter Carl A. Method and system for maintaining secure access to web server services using public keys
US9626668B2 (en) 2002-03-14 2017-04-18 Contentgaurd Holdings, Inc. Rights expression profile system and method using templates
US7162715B1 (en) 2002-03-16 2007-01-09 I-Squared, Inc. Method and apparatus for preemptive monitoring of software binaries by instruction interception and dynamic recompilation
US20070028225A1 (en) * 2002-03-16 2007-02-01 Whittaker James A Method and apparatus for preemptive monitoring of software binaries by instruction interception and dynamic recompilation
US7325139B2 (en) 2002-04-15 2008-01-29 Sony Corporation Information processing device, method, and program
US20040243808A1 (en) * 2002-04-15 2004-12-02 Ryuji Ishiguro Information processing device, method, and program
US10430729B2 (en) 2002-04-29 2019-10-01 Contentguard Holdings, Inc. System and method for specifying and processing legality expressions
US20050234825A1 (en) * 2002-05-07 2005-10-20 Stefan Andersson Method for loading an application in a device, device and smart card therefor
US7900048B2 (en) * 2002-05-07 2011-03-01 Sony Ericsson Mobile Communications Ab Method for loading an application in a device, device and smart card therefor
US8347108B2 (en) 2002-05-17 2013-01-01 Satyam Computer Services Limited Of Mayfair Centre System and method for automated safe reprogramming of software radios
US20070118899A1 (en) * 2002-05-17 2007-05-24 Satyam Computer Services Limited Of Mayfair Centre System and method for automated safe reprogramming of software radios
US20030216927A1 (en) * 2002-05-17 2003-11-20 V. Sridhar System and method for automated safe reprogramming of software radios
US20080235665A1 (en) * 2002-05-17 2008-09-25 Satyam Computer Services Limited Of Mayfair Centre System and method for automated safe reprogramming of software radios
US7421713B2 (en) 2002-06-12 2008-09-02 Matsushita Electric Industrial Co., Ltd. Safe service extension platform
US20050216921A1 (en) * 2002-06-12 2005-09-29 Mitsuteru Kataoka Service safely-extensible platform
US20040010701A1 (en) * 2002-07-09 2004-01-15 Fujitsu Limited Data protection program and data protection method
US7487366B2 (en) 2002-07-09 2009-02-03 Fujitsu Limited Data protection program and data protection method
EP1380916A1 (en) * 2002-07-09 2004-01-14 Fujitsu Limited Data protection program, method and apparatus
CN100407174C (en) * 2002-07-09 2008-07-30 富士通株式会社 Data protection program and data protection method
US7334124B2 (en) 2002-07-22 2008-02-19 Vormetric, Inc. Logical access block processing protocol for transparent secure file storage
US20040015724A1 (en) * 2002-07-22 2004-01-22 Duc Pham Logical access block processing protocol for transparent secure file storage
US20040107342A1 (en) * 2002-07-22 2004-06-03 Duc Pham Secure network file access control system
US6931530B2 (en) 2002-07-22 2005-08-16 Vormetric, Inc. Secure network file access controller implementing access control and auditing
US7565532B2 (en) 2002-10-16 2009-07-21 Vormetric, Inc. Secure file system server architecture and methods
US7143288B2 (en) 2002-10-16 2006-11-28 Vormetric, Inc. Secure file system server architecture and methods
US20070050620A1 (en) * 2002-10-16 2007-03-01 Duc Pham Secure file system server architecture and methods
US20060031289A1 (en) * 2002-10-25 2006-02-09 Bettina Experton System and method for automatically launching and accessing netwrok addresses and applications
WO2004038563A3 (en) * 2002-10-25 2004-07-22 Bettina Experton System and method for automatically launching and accessing network addresses and applications
WO2004038563A2 (en) * 2002-10-25 2004-05-06 Bettina Experton System and method for automatically launching and accessing network addresses and applications
US7263720B2 (en) * 2002-12-16 2007-08-28 Intel Corporation Method and mechanism for validating legitimate software calls into secure software
US20040117616A1 (en) * 2002-12-16 2004-06-17 Silvester Kelan C. Method and mechanism for validating legitimate software calls into secure software
US7657927B2 (en) 2003-01-16 2010-02-02 Symantec Corporation Behavior-based host-based intrusion prevention system
US20040143749A1 (en) * 2003-01-16 2004-07-22 Platformlogic, Inc. Behavior-based host-based intrusion prevention system
WO2004066112A3 (en) * 2003-01-16 2004-11-25 Platformlogic Inc Behavior-based host-based intrusion prevention system
WO2004066112A2 (en) * 2003-01-16 2004-08-05 Platformlogic Inc. Behavior-based host-based intrusion prevention system
US20050108578A1 (en) * 2003-01-16 2005-05-19 Platformlogic, Inc. Behavior-based host-based intrusion prevention system
US20060130016A1 (en) * 2003-03-17 2006-06-15 Wagner John R Method of kernal-mode instruction interception and apparatus therefor
US20050050396A1 (en) * 2003-06-20 2005-03-03 Auckland Uniservices Limited Tamper-proofing watermarked computer programs
US7562146B2 (en) 2003-10-10 2009-07-14 Citrix Systems, Inc. Encapsulating protocol for session persistence and reliability
US20050080907A1 (en) * 2003-10-10 2005-04-14 Anatoliy Panasyuk Encapsulating protocol for session persistence and reliability
US20080288825A1 (en) * 2003-11-19 2008-11-20 Hiroshi Furukawa Storage subsystem, storage system, and communication control method
US7757279B2 (en) 2003-11-19 2010-07-13 Hitachi, Ltd. Storage subsystem, storage system, and communication control method
US20050120279A1 (en) * 2003-11-19 2005-06-02 Hitachi, Ltd. Storage subsystem, storage system, and communication control method
US7788487B2 (en) 2003-11-28 2010-08-31 Panasonic Corporation Data processing apparatus
US20070113079A1 (en) * 2003-11-28 2007-05-17 Takayuki Ito Data processing apparatus
US8312431B1 (en) * 2004-09-17 2012-11-13 Oracle America, Inc. System and computer readable medium for verifying access to signed ELF objects
US20110265170A1 (en) * 2004-11-15 2011-10-27 Bank Of America Corporation Method and apparatus for enabling authentication of on-line communications
US8799381B2 (en) * 2004-11-15 2014-08-05 Bank Of America Corporation Method and apparatus for enabling authentication of on-line communications
US8234638B2 (en) * 2004-12-28 2012-07-31 Hercules Software, Llc Creating a relatively unique environment for computing platforms
US20070106981A1 (en) * 2004-12-28 2007-05-10 Hercules Software, Llc Creating a relatively unique environment for computing platforms
US20090044007A1 (en) * 2005-04-07 2009-02-12 France Telecom Secure Communication Between a Data Processing Device and a Security Module
US20060271915A1 (en) * 2005-05-24 2006-11-30 Contentguard Holdings, Inc. Usage rights grammar and digital works having usage rights created with the grammar
US20060271493A1 (en) * 2005-05-24 2006-11-30 Contentguard Holdings, Inc. Method and apparatus for executing code in accordance with usage rights
US8220039B2 (en) 2005-07-08 2012-07-10 Sandisk Technologies Inc. Mass storage device with automated credentials loading
US20100162377A1 (en) * 2005-07-08 2010-06-24 Gonzalez Carlos J Mass storage device with automated credentials loading
US20070028952A1 (en) * 2005-08-05 2007-02-08 Outdoor Sleep System, Llc Sleeping bag and system
WO2007084263A2 (en) * 2005-12-27 2007-07-26 Speciation Limited Creating a relatively unique environment for computing platforms
WO2007084263A3 (en) * 2005-12-27 2008-11-20 Speciation Ltd Creating a relatively unique environment for computing platforms
US7895639B2 (en) 2006-05-04 2011-02-22 Citrix Online, Llc Methods and systems for specifying and enforcing access control in a distributed system
US20070261102A1 (en) * 2006-05-04 2007-11-08 Tony Spataro Methods and systems for specifying and enforcing access control in a distributed system
US8549602B2 (en) * 2006-11-29 2013-10-01 Diversinet Corp. System and method for handling permits for user authentication tokens
US20080127321A1 (en) * 2006-11-29 2008-05-29 Vaeth J Stuart System and method for handling permits for user authentication tokens
US20090022498A1 (en) * 2007-07-20 2009-01-22 Makoto Shibutani Optical transmission system
US9058499B1 (en) 2008-08-22 2015-06-16 Taser International, Inc. Systems and methods for managing disclosure of protectable information
US9003474B1 (en) 2008-08-22 2015-04-07 Taser International, Inc. Systems and methods for managing disclosure of protectable information
US9331997B2 (en) 2008-08-22 2016-05-03 Taser International, Inc. Systems and methods for managing disclosure of protectable information
US20110030003A1 (en) * 2008-09-24 2011-02-03 Nec Europe Ltd. Method and a system for distributing tv content over a network
US20110207108A1 (en) * 2009-10-01 2011-08-25 William Dorman Proctored Performance Analysis
US9141513B2 (en) 2009-10-01 2015-09-22 Kryterion, Inc. Maintaining a secure computing device in a test taking environment
US9280907B2 (en) 2009-10-01 2016-03-08 Kryterion, Inc. Proctored performance analysis
US9430951B2 (en) 2009-10-01 2016-08-30 Kryterion, Inc. Maintaining a secure computing device in a test taking environment
US10672286B2 (en) 2010-03-14 2020-06-02 Kryterion, Inc. Cloud based test environment
US20110223576A1 (en) * 2010-03-14 2011-09-15 David Foster System for the Administration of a Secure, Online, Proctored Examination
US9716748B2 (en) 2010-08-04 2017-07-25 Kryterion, Inc. Optimized data stream upload
US9984582B2 (en) 2010-08-04 2018-05-29 Kryterion, Inc. Peered proctoring
US9137163B2 (en) 2010-08-04 2015-09-15 Kryterion, Inc. Optimized data stream upload
US9092991B2 (en) 2010-08-04 2015-07-28 Kryterion, Inc. Peered proctoring
US9378648B2 (en) 2010-08-04 2016-06-28 Kryterion, Inc. Peered proctoring
US8713130B2 (en) 2010-08-04 2014-04-29 Kryterion, Inc. Peered proctoring
US10225336B2 (en) 2010-08-04 2019-03-05 Kryterion, Inc. Optimized data stream upload
CN103329139A (en) * 2011-01-18 2013-09-25 苹果公司 System and method for supporting JIT in a secure system with randomly allocated memory ranges
US20120185700A1 (en) * 2011-01-18 2012-07-19 Apple Inc. System and method for supporting jit in a secure system with randomly allocated memory ranges
US8646050B2 (en) * 2011-01-18 2014-02-04 Apple Inc. System and method for supporting JIT in a secure system with randomly allocated memory ranges
KR101504857B1 (en) * 2011-01-18 2015-03-20 애플 인크. System and method for supporting jit in a secure system with randomly allocated memory ranges
AU2012200181B2 (en) * 2011-01-18 2014-04-17 Apple Inc. System and method for supporting JIT in a secure system with randomly allocated memory ranges
US8181035B1 (en) * 2011-06-22 2012-05-15 Media Patents, S.L. Methods, apparatus and systems to improve security in computer systems
US8973090B1 (en) * 2012-03-14 2015-03-03 Symantec Corporation Systems and methods for protecting platform-as-a-service platforms
US8938796B2 (en) 2012-09-20 2015-01-20 Paul Case, SR. Case secure computer architecture
US9122633B2 (en) 2012-09-20 2015-09-01 Paul Case, SR. Case secure computer architecture
US10171483B1 (en) 2013-08-23 2019-01-01 Symantec Corporation Utilizing endpoint asset awareness for network intrusion detection
US10694352B2 (en) 2015-10-28 2020-06-23 Activision Publishing, Inc. System and method of using physical objects to control software access

Also Published As

Publication number Publication date
US5311591A (en) 1994-05-10

Similar Documents

Publication Publication Date Title
US5412717A (en) Computer system security method and apparatus having program authorization information data structures
EP0570123B1 (en) Computer system security method and apparatus having program authorization information data structures
US5870467A (en) Method and apparatus for data input/output management suitable for protection of electronic writing data
US5414852A (en) Method for protecting data in a computer system
US6253324B1 (en) Server verification of requesting clients
EP0843249B1 (en) Dynamic classes of service for an international cryptography framework
US8195938B2 (en) Cloud-based application whitelisting
KR100267872B1 (en) Support for portable trusted software
JP3786722B2 (en) Method and apparatus for effective use of progressive object-oriented program using digital signature
KR910005995B1 (en) Method of protecting system files and data processing system
Gong Java security architecture (JDK 1.2)
US6067640A (en) System for management of software employing memory for processing unit with regulatory information, for limiting amount of use and number of backup copies of software
US8782807B2 (en) System and method for authenticating code executing on computer system
EP1253502A2 (en) Trusted computer system
US20050060561A1 (en) Protection of data
EP0561509A1 (en) Computer system security
KR20010040979A (en) Stack-based access control
GB2398134A (en) Applying a data handing policy to predetermined system calls
JPH1027123A (en) Method for protecting computer software from copying
KR20020016711A (en) Mandatory Object Access Control Method Using Multi-Level Security, and Computer Readable Recording Medium Having thereon Programmed Mandatory Object Access Control Method Using Multi-Level Security
Holford et al. Using self-defending objects to develop security aware applications in java
Rabin et al. An integrated toolkit for operating system security
Grimm et al. Access control in extensible systems
Kim A Verified Formal Specification of A Secured Communication Method For Smart Card Applications
Kapnoullas et al. Security framework for mobile agent platforms (SFMAP)

Legal Events

Date Code Title Description
STCF Information on status: patent grant

Free format text: PATENTED CASE

FEPP Fee payment procedure

Free format text: PAT HLDR NO LONGER CLAIMS SMALL ENT STAT AS INDIV INVENTOR (ORIGINAL EVENT CODE: LSM1); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

FPAY Fee payment

Year of fee payment: 12

AS Assignment

Owner name: GLOBAL INNOVATION TECHNOLOGY HOLDINGS, LLC, FLORID

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:FISCHER, ADDISON M.;REEL/FRAME:022034/0452

Effective date: 20080922

Owner name: INFORMATION PROTECTION AND AUTHENTICATION OF TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:GLOBAL INNOVATION TECHNOLOGY HOLDINGS, LLC;REEL/FRAME:022034/0464

Effective date: 20080922

AS Assignment

Owner name: FISCHER, ADDISON M, FLORIDA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:INFORMATION PROTECTION AND AUTHENTICATION OF TEXAS, LLC;REEL/FRAME:035303/0573

Effective date: 20150331

AS Assignment

Owner name: RPX CORPORATION, CALIFORNIA

Free format text: NUNC PRO TUNC ASSIGNMENT;ASSIGNOR:INFORMATION PROTECTION AND AUTHENTICATION OF TEXAS, LLC;REEL/FRAME:062667/0817

Effective date: 20221118

AS Assignment

Owner name: BARINGS FINANCE LLC, AS COLLATERAL AGENT, NORTH CAROLINA

Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:RPX CORPORATION;REEL/FRAME:063665/0987

Effective date: 20230406