A method and system for detecting authorized programs within a data processing system. The present invention creates a validation structure for validating a program. The validation structure is embedded in the program and in response to an initiation of the program, a determination is made as to whether the program is an authorized program. The determination is made using the validation structure.
|
1. A method in a data processing system for detecting unauthorized programs within the data processing system, the method comprising:
creating a validation structure for validating a program including program data, wherein the structure includes data derived from data selected from a portion portions of the program data including sections other than a lead-in section of the program data, which is used to determine whether the program is an unauthorized program; imbedding the validation structure in the program; and responsive to an initiation of the program, determining whether the program is an authorized program using the validation structure.
20. A method in a data processing system for creating a validation structure for use in validating a program, the method comprising:
selecting a plurality of sections including sections other than a lead-in section from within the program, each section within the plurality of sections containing program data; creating a cryptographic hash value for each selected section from the program data within the plurality of selected sections within the program; and storing the cryptographic hash value and a location for each selected section as a data record within a validation structure, wherein the location is a location of the selected section within the program.
11. A data processing system for detecting unauthorized programs within the data processing system, the data processing system comprising:
creation means for creating a validation structure for validating a program including program data, wherein the structure includes data derived from data selected from a portion portions of the program data including sections other than a lead-in section of the program data, wherein the structure may be used to determine whether the program is an unauthorized program; imbedding means for imbedding the validation structure in the program; and determination means, responsive to an initiation of the program, for determining whether the program is an unauthorized program.
24. A data processing system for creating a validation structure for use in validating a program, the data processing system comprising:
random selection means for randomly selecting a plurality of sections including sections other than a lead-in section from within the program, each selected section within the plurality of randomly selected sections containing program data; creation means for creating a cryptographic hash value for program data within each selected section from within the plurality of randomly selected sections within the program; and storage means for storing the cryptographic hash value and a location value for each selected section as a data record within a validation structure, wherein the location is a location of the selected section within the program.
31. A storage device readable by a data processing system and encoding data processing system executable instructions comprising:
selections means for selecting a plurality of sections including sections other than a lead-in section from within a program containing program data; creation means for creating a cryptographic hash value for program data within each selected section from the plurality of selected sections within the program; and storage means for storing the cryptographic hash value and a location value for each selected section as a data record within a validation structure, wherein the location is a location of the selected section within the program, wherein the means are activated when the storage device is connected to and accessed by a data processing system.
27. A method in a data processing system for validating a program, wherein the program includes a validation structure having a plurality of data records, wherein each data record within the plurality of data records includes a cryptographic hash value for program data within a section selected from sections including sections other than a lead-in section of the program and a location value, wherein the location value indicates a location of the selected section, the method comprising:
randomly selecting a number of data records from within the validation structure; creating a cryptographic hash value on program data within the section in the location indicated by the location value for the randomly selected data record for each randomly selected data record; and comparing the created cryptographic hash value with the hash value within the randomly selected data record.
29. A data processing system for validating a program, wherein the program includes a validation structure having a plurality of data records, wherein each data record within the plurality of data records includes a cryptographic hash value for program data within a section selected from sections including sections other than a lead-in section of the program and a location value, wherein the location value indicates a location of the selected section, the data processing system comprising:
random selection means for randomly selecting a number of data records from within the validation structure; creation means for creating a cryptographic hash value on program data within the section in the location indicated by the location value for the randomly selected data record for each randomly selected data record; and comparison means for comparing the created cryptographic hash value with the hash value within the randomly selected data record.
35. A storage device readable by a data processing system and encoding data processing system executable instructions for validating a program, wherein the program includes a validation structure having a plurality of data records, wherein each data record within the plurality of data records includes a cryptographic hash value for program data within a section selected from sections including sections other than a lead-in section of the program and a location value, wherein the location value indicates a location of the section, the storage device comprising:
creation means for creating a cryptographic hash value on program data within the section in the location indicated by the location value for the randomly selected data record for each randomly selected data record; and comparison means for comparing the created cryptographic hash value with the hash value within the randomly selected data record, wherein the means are activated when the storage device is connected to and accessed by a data processing system.
2. The method of
3. The method of
4. The method of
randomly selecting portions of the validation structure; and determining whether the program is an unauthorized program using the randomly selected portions of the validation structure.
5. The method of
6. The method of
randomly selecting a plurality of sections from within the program; creating a cryptographic hash value for each selected section from the plurality of randomly selected sections within the program; and storing the cryptographic hash value and a location value for each selected section as a data record within a validation structure, wherein the location is a location of the selected section within the program.
7. The method of
creating a signature for the validation structure, wherein the signature is a cryptographic hash value calculated on the validation structure; and associating the signature with the validation structure.
8. The method of
9. The method of
randomly selecting a number of data records from within the validation structure; for each randomly data selected record, creating a cryptographic hash value on the section in located indicated by the location value for the randomly selected data record; and comparing the created cryptographic hash value with the hash value within the randomly selected data record.
10. The method of
creating a cryptographic hash value for the validation structure; and comparing the created cryptographic hash value with the signature.
12. The data processing system of
13. The data processing system of
14. The data processing system of
random selection means for randomly selecting portion of the validation structure; and determination means for determining whether the program is an unauthorized program using the randomly selected portions of the validation structure.
15. The data processing system of
second random selection means for randomly selecting a plurality of sections from within the program; second creation means for creating a cryptographic hash value for each selected section from the plurality of randomly selected sections within the program; and storage means for storing the cryptographic hash value and a location value for each selected section as a data record within a validation structure, wherein the location is a location of the selected section within the program.
16. The data processing system of
third creation means for creating a signature for the validation structure, system is calculated on the cryptographic hash value; and association means for associating the signature with the validation structure.
17. The data processing system of
18. The data processing system of
random selection means for randomly selecting a number of data records from within the validation structure; creations means for creating a cryptographic hash value on the section in located indicated by the location value for the randomly selected data record for each randomly data selected record; and comparison means for comparing the created cryptographic hash value with the hash value within the randomly selected data record.
19. The data processing system of
creation means for creating a cryptographic hash value for the validation structure; and validation means for the created cryptographic hash value with the signature.
21. The method of
22. The method of
creating a signature for the validation structure, and associating the signature with the validation structure.
23. The method of
25. The data processing system of
second creation means for creating a signature for the validation structure, and association means for associating the signature with the validation structure.
26. The data processing system of
28. The data processing system of
creating a cryptographic hash value for the validation structure; and validating the created cryptographic hash value with the signature.
30. The data processing system of
creation means for creating a cryptographic hash value for the validation structure; and signature validation means for validating the created cryptographic hash value with the signature.
33. The storage device of
37. The storage device of
|
This is a continuation of application Ser. No. 08/354,700, filed Dec. 13, 1994, now abandoned.
1. Technical Field
The present invention generally relates to an improved data processing system, and in particular to a method and system for distributing multimedia programs. Still more particularly, the present invention relates to a method and system for checking for authorized multimedia programs and detecting unauthorized multimedia programs in a data processing system.
2. Description of the Related Art
Multimedia data processing systems present information in data to a user utilizing sound, graphics, animation, and text. Programs presenting data and information to a user in this form are also called multimedia titles. Typically, a software company develops and markets a software system for the production and presentation of multimedia titles. Such a software system is used in composing multimedia scripts for multimedia titles. Typically, the software system includes a set of authoring tools for producing multimedia titles by developers and a Run Time Environment (RTE) for presenting the multimedia titles to end users. Typically, the RTE is designed to execute on various computing platforms, which makes the authoring tools for the software system desirable to developers. Typically, developers pay a royalty to the software company for using the authoring tools to develop multimedia titles to run on the RTE. But some unscrupulous developers may produce unauthorized titles and avoid royalty payments in producing multimedia titles for use on the RTE. Therefore, it would be advantageous to have a method and system to allow authorized titles to execute on a data processing system and to detect attempted execution of unauthorized titles.
It is one object of the present invention to provide an improved data processing system.
It is another object of the present invention to provide a method and system for distributing multimedia programs.
It is yet another object of the present invention to provide a method and system for checking for authorized multimedia programs and detecting unauthorized multimedia programs in a data processing system.
The present invention provides a method and system for detecting authorized multimedia programs within a data processing system. The present invention creates a validation structure for validating a multimedia program. The validation structure is embedded in the multimedia program and in response to an initiation of the multimedia program, a determination is made as to whether the multimedia program is an authorized multimedia program. The determination is made using the validation structure.
In creating the validation structure, sections of the program (hereinafter called data objects) are selected and a cryptographic hash value is created or calculated on each of the selected data objects. The cryptographic hash value and the location of the selected data object are stored as a data record within the validation structure. In addition, a signature is included or associated with the validation structure. The signature is calculated on the validation structure using a public key cryptographic algorithm in accordance with a preferred embodiment of the present invention.
Determining whether a multimedia program is an authorized multimedia program is accomplished by selecting a subset of the data objects within the multimedia program and validating the selected data objects using the validation structure stored in the multimedia program. This includes the steps of randomly selecting a portion of the data objects from among a defined set of data records listed in the validation structure, reading the selected data objects from the multimedia program using location information stored in the validation structure, and validating the selected data objects using validation information stored in the validation structure. For each selected data object, the location information stored in the validation structure is accessed and used to read the selected data object from the multimedia program. A cryptographic hash value is calculated on the selected data object and then compared for equality with a corresponding hash-value-of-reference stored in the validation structure The hash values must be equal for the selected data objects to be valid. In addition, the validation structure is itself validated through the use of the signature previously calculated on the validation structure, using a public key cryptographic algorithm, and stored with the validation structure. If the signature, validation structure, and subset of selected data objects are valid, the multimedia program is considered to be an authorized multimedia program. An authorized multimedia program is allowed to execute normally, otherwise, execution of the multimedia program may be prohibited or limited execution of the multimedia program may be allowed in response to a determination that the multimedia program is not an authorized program.
The above as well as additional objectives, features, and advantages of the present invention will become apparent in the following detailed written description.
The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further objectives and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
With reference now to the figures and in particular with reference to
As will be described below, the system unit 12 responds to input devices, such as PC keyboard 16, the mouse 18, or local area networking interfaces. Additionally, input/output (I/O) devices, such as floppy diskette drive 22, display 14, printer 20, and local area network communication system are connected to system unit 12 in a manner well known. Of course, those skilled in the art are aware that other conventional components also can be connected to the system unit 12 for interaction therewith. In accordance with the present invention, personal computer system 10 includes a system processor that is interconnected to a random access memory (RAM), a ready only memory (ROM), and a plurality of I/O devices.
In normal use, personal computer system 10 can be designed to give independent computing power to a small group of users as a server or a single user and is inexpensively priced for purchase by individuals or small businesses. In operation, the system processor functions under an operating system, such as IBM's OS/2 operating system or DOS. OS/2 is a registered trademark of International Business Machines Corporation. This type of operating system includes a Basic Input/Output System (BIOS) interface between the I/O devices and the operating system. BIOS, which can be stored in a ROM on a motherboard or planar, includes diagnostic routines which are contained in a power on self test section referred to as POST.
Prior to relating the above structure to the present invention, a summary of the operation in general of personal computer system 10 may merit review. Referring to
While the present invention is described hereinafter with particular reference to the system block diagram of
Returning now to
A further buffer 66 is coupled between system bus 34 and a planar I/O bus 68. Planar I/O bus 68 includes address, data, and control components respectively. Coupled along planar bus 68 are a variety of I/O adapters and other peripheral components such as display adapter 70 (which is used to drive an optional display 14 depicted in FIG. 1), a clock 72, nonvolatile RAM 74 (hereinafter referred to as "NVRAM"), a RS232 adapter 76, a parallel adapter 78, a plurality of timers 80, a diskette adapter 82, a PC keyboard/mouse controller 84, and a read only memory (ROM) 86. The ROM 86 includes BIOS which provides the user transparent communications between many I/O devices.
Clock 72 is used for time of day calculations. NVRAM 74 is used to store system configuration data. That is, the NVRAM will contain values which describe the present configuration of the system. For example, NVRAM 74 contains information which describe the capacity of a fixed disk or diskette, the type of display, the amount of memory, etc. Of particular importance, NVRAM 74 will contain data which is used to describe the system console configuration; i.e., whether a PC keyboard is connected to the keyboard/mouse controller 84, a display controller is available or the ASCII terminal is connected to RS232 adapter 76. Furthermore, these data are stored in NVRAM 74 whenever a special configuration program is executed. The purpose of the configuration program is to store values characterizing the configuration of this system to NVRAM 76 which are saved when power is removed from the system.
Connected to keyboard/mouse controller 84 are ports A and B. These ports are used to connect a PC keyboard (as opposed to an ASCII terminal) and mouse to the PC system. Coupled to RS232 adapter unit 76 is an RS232 connector. An optional ASCII terminal can be coupled to the system through this connector.
Specifically, personal computer system 10 may be implemented utilizing any suitable computer such as the IBM PS/2 computer or an IBM RISC SYSTEM/6000 computer, both products of International Business Machines Corporation, located in Armonk, N.Y. "RISC SYSTEM/6000" is a trademark of International Business Machines Corporation and "PS/2" is a registered trademark of International Business Machines Corporation.
Distribution of multimedia programs or titles (hereinafter called "multimedia titles") involves an application developer who produces multimedia titles using an authoring tool and a Run Time Environment (RTE) provided by a multimedia company and a user who purchases multimedia titles for execution on a computer or computer platform executing the RTE. In accordance with a preferred embodiment of the present invention, checking for authorized multimedia titles and detecting unauthorized multimedia titles involves a scheme of digital signatures using a public key algorithm. A "public key" is a key made available to anyone who wants to encrypt information. In public key cryptography, public key algorithms are used in which a public key is used for encryption and a private key is used for decryption. The basis for public key cryptography includes discrete logarithms, factoring, and the knapsack problem. Each authorized multimedia title includes an embedded digital signature token that can be verified by the RTE before the multimedia title is permitted to execute on the data processing system.
Two cryptographic subsystems are employed to facilitate the signature token generation and signature token verification processes in accordance with a preferred embodiment of the present invention. One cryptographic subsystem enables the generation of signature tokens that, when embedded in authorized multimedia titles, will permit these titles to be validated. Another cryptographic subsystem is employed to validate the signature tokens. In this manner authorized multimedia titles may be distinguished from unauthorized multimedia titles.
With reference to
Typically, a multimedia title takes about one hour to play and contains about 650 megabytes of data. As a result, it is inefficient to validate a multimedia title by reading and checking each byte within the title. In accordance with a preferred embodiment of the present invention, the multimedia title is validated by checking a portion of the data contained therein.
Random sampling of data to validate multimedia titles is employed in accordance with a preferred embodiment of the present invention. If the data locations to be sampled were constant from one instance of validation to the next, then only a small portion of the multimedia title would be checked. In such a situation, forged titles could be more easily constructed. But by randomly selecting data locations for sampling, the possibility of forged multimedia titles is greatly reduced.
In addition, the presently claimed invention utilizes data context sampling. A significant improvement in the validation of multimedia titles may be achieved if the logical structure of the multimedia titles themselves is employed to identify key pieces of data to be validated. For example, a preferred checking strategy may be based on checking part or all of the data in the table of contents for each file in a multimedia title. A multimedia title consists of one or more files, each containing its own table of contents. In many cases the multimedia title contains only one such file. When a file is opened, the table of contents is the first item to be read.
With reference now to
Furthermore, for multimedia titles, the first few displayed screens typically contain the name of the title and its version. As a result, protecting these screens is desirable. Therefore, a checking strategy may include checking the first few screens of data displayed to a user so that a forged title, whose name is for example "Demons for the Deep", would be forced to display the name of the title upon which it is piggy-backing, say "Desert Wargames".
The present invention provides a method and system for validating multimedia titles by validating part or all of the table of contents and the first few displayed screens containing the name of the title and its version for each multimedia file and validating a subset of the data objects in the multimedia title. These data objects are selected randomly in accordance with a preferred embodiment of the present invention. But those skilled in the art will recognize that the data objects could be selected using a preferred method which is non-random, without departing from the spirit of the present invention.
With reference to
Signature token 500 includes a header 502 and data records 1 through n that correspond to data or data objects in the multimedia title that can be selected and validated. The data records 1 through n in the signature token are different from the data objects in the multimedia title, although there is a direct correspondence. In addition, signature token 500 includes digital signature 504, which is employed to validate the header and the series of data records 1 through n in the signature token. Each data record within signature token 500 includes location specific information, L, and a cryptographic hash value, H. Location specific information tells the signature token validation module the location or locations in the multimedia title of the data to be validated. The hash value is calculated on the specific multimedia data referenced by L. In accordance with a preferred embodiment of the present invention, the cryptographic hash value is calculated using a one-way function. A one-way function is one where it is computationally infeasible to find two different inputs X and Y, such that the cryptographic hash of X is equal to the cryptographic hash of Y. The term "computationally infeasible" is one used in prior art to describe a mathematical procedure that cannot be performed in the practical sense because of the very large number of computational steps required. However, the term is not precise in that there is no prescribed number of computations above which a computation is said to be computationally infeasible and below which the computation is said to be computationally feasible. In general, a mathematical procedure is said to be computationally infeasible if the cost or time to perform the necessary computations is beyond reasonable human means, e.g., if all the computers in the world linked together couldn't solve the problem in a billion billion billion years.
Location specific information may be a combination of location specific information stored in signature token 500 and location specific information derived algorithmically. The table of contents in a multimedia title is one example of location specific information that can be omitted from signature token 500. In other words, signature token 500 does not need to store an address or location of the table of contents because a simple procedure exists for always finding the table of contents given a standard starting point.
A portion of the data records 1 through n in signature token 500 will reference data in one or more data objects in the multimedia title. The signature token generation module employs a process to select a subset of different data objects (referenced by the object-property pairs in the table of contents) from a multimedia title to be validated. This process will be described in more detail below. It is desirable to have an element of randomness in this process although strictly speaking random in this process is not required. Once the subset of data objects in the multimedia title have been identified, a subportion of the data in each data object is selected and the locations of these subportions of data (denoted L1, L2, . . . , Ln) are used by the signature token generation module to read the data associated with each subportion. The signature token generation module then issues a service request to the cryptographic subsystem to generate a cryptographic hash value Hi on each subportion of data referenced by location information Li. The cryptographic hash value, Hi, is then stored in data record i together with the location information, Li. After the header and data records 1 through n have been created the signature token generation module issues a service request to the cryptographic subsystem to calculate a cryptographic hash value on the signature token, except for the digital signature. The signature token generation module then issues a service request to the cryptographic subsystem to calculate a digital signature on the signature token, using the cryptographic hash value calculated on the signature token and the private key of the multimedia company. The digital signature is then stored in the signature token.
The signature token validation module will randomly select and validate a subset of the data records in the signature token thus introducing an element of randomness into the validation process in accordance with a preferred embodiment of the present invention. Once the subset of data records has been randomly selected, the signature token validation module will process each data record on a record-by-record basis. The location specific information, L, in the data record is used to read the referenced data from the CD-ROM. A service request is then issued to the cryptographic subsystem to generate a cryptographic hash value, H, on the referenced data. This calculated cryptographic hash value is then compared for equality with the reference cryptographic hash value, H, stored in the data record. If the cryptographic hash values are equal, the process then continues. Otherwise, processing may be halted with an indication that validation has failed. After each data record is processed, the signature token validation module issues a service request to the cryptographic system to cryptographically hash the signature token (except for the digital signature) that it previously read from the multimedia title. Then a service request is issued to the cryptographic subsystem to validate the digital signature. In accordance with a preferred embodiment of the present invention, the digital signature is encrypted with the public key of the multimedia company, stored in the signature token validation module. The encrypted value of the digital signature contains a hash-value-of-reference previously calculated on the valid signature token. The calculated hash value is then compared for equality with the so-obtained hash-value-of-reference. If the hash values are equal, then the signature token and digital signature are valid. Otherwise, the signature token and digital signature are not valid. Those skilled in the art will recognize that the subject invention can be practiced using any digital signature method without departing from the spirit of the invention.
The digital signature also can be calculated on a cryptographic hash value representing the root of a tree of cryptographic hash values, e.g., a binary tree of cryptographic hash values as described in U.S. Pat. No. 4,309,569, "Method of Providing Digital Signatures". By storing n-1 additional intermediate cryptographic hash values in the signature token, m of the possible n data objects in the signature token can be validated using m*log2n hashing operations instead of n hashing operations, which for small n may be more advantageous. A method of calculating the tree of cryptographic hash values is described in U.S. Pat. No. 4,309,569 and in U.S. Pat. No. 5,231,666, "Cryptographic Method For Updating Financial Records".
With reference now to
Cryptographic subsystem 604 provides the following cryptographic services to generation program 602: (1) initialize random number generator, (2) generate random number, (3) generate hash value, (4) generate digital signature, and (5) verify digital signature. A verify digital signature function is provided so that once a signature token is generated, generation program 602 can validate the signature token to insure that the signature token can be correctly processed by cryptographic subsystem 610 and signature token module 606. Such a verification function provides a high integrity process in creating multimedia titles with embedded signature tokens. Cryptographic subsystem 610 in signature token validation module 606 supports validation program 608 by providing the following services: (1) initialize random number generator, (2) generate random number, (3) generate hash value, and (4) verify digital signature. The random number generation is employed to randomly select data records in the signature token to be validated. Algorithms and procedures for generating random numbers, generating hash values, and for generating and verifying digital signatures are well know within the prior art.
The random number generator function can be implemented using the pseudo random integer generator supplied in Appendix C of American Standard Institute (ANSI) Standard X9.17, "Financial Institution Key Management (Wholesale)" as specified in Appendix 3 of Federal Information Processing Standard (FIPS) 186.
The initialize random number generator function is a function that causes a secret seed value to be generated within the random number generator or alternatively to be provided as an input to the random number generator. A simple method for initializing the random number generator is to employ a free-wheeling counter in combination with a series of requests to a human who interacts with the initialize random number generator function via a workstation keyboard and display. The user is repeatedly prompted to enter a character at the keyboard. Each time the random number generator function gets control, it reads the free-wheeling counter and this value is combined with a value stored in an accumulator. The final accumulator value is taken as the secret seed value. Because of small differences in human response time, the value of the free-wheeling counter is unpredictable, and therefore the resulting seed value will be random.
The generate hash function can be implemented using one of several algorithms, including the MDC-2 or MDC-4 algorithms described in U.S. Pat. No. 4,908,861 entitled "Data Authentication Using Modification Detection Codes Based on a Public One Way Encryption Function" or using the hashing algorithm in FIPS 180, "Secure Hash Standard."
The generate digital signature and verify digital signature functions can be implemented with the RSA public key algorithm using ISO Standard 9796 "Digital Signature Scheme Giving Message Recovery" or by using signature generation and signature verification algorithms in FIPS 186, "Digital Signature Standard."
Although the depicted embodiment employs a public key algorithm, which is an asymmetric algorithm, the digital signature can be based on a symmetric algorithm such as the Data Encryption Standard (DES).
With reference now to
Using the table of contents, the process then determines the number of multimedia object-property pairs, S, contained in the multimedia title (step 708). An object-property is data pointed to by the object-property entry in a table of contents. S is calculated as S=S<1>+S<2>+ . . . +S<T>, where S<i> denotes the number of properties associated with multimedia object "i", and "T" denotes the number of multimedia objects within the multimedia title. The process then sets n=min (N,S), the minimum of N and S (step 710). Typically, S will be much larger than N so that N=n will generally hold true. The process then sets R=n-2 and X=1 (step 712). Thereafter, an object-property pair is randomly selected from the multimedia title; the data corresponding to each object-property pair is located and read, and the locations(s) of the data are saved (step 714). "D3" denotes the information corresponding to the object-property pair (or the first n bytes of information) in the randomly selected object-property, which ever is less. L3 denotes the information in the table of contents employed to locate and read the data corresponding to the randomly selected object-property pair. In effect, the process selects one of the S object-property pairs (excluding the table of contents and the logo screen) and then at the next iteration randomly selects one of the S-1 remaining different object-property pairs with the previously selected object-property pair being excluded and so on and so forth.
The process then calculates the MDC on the data or data object referenced by the selected object-property pair (step 716). In accordance with a preferred embodiment of the present invention, a 128 bit MDC is calculated on the data associated with the object-property pair using the method described in U.S. Pat. No. 4,908,861 entitled "Data of Authentication Using Modification Detection Codes Based on a Public One Way Encryption Function". The MDC values calculated on values D3 through Dn are denoted MCD 3 through MCDn, respectively, as the process loops through (steps 714 and 716). The process determines whether X=R (step 718). If X is not equal to R, the process sets X=X+1 (step 720) and returns to step 714. This continues until R=n-2 different object property pairs have been processed.
When X=R, the process then proceeds to build a signature token, such as signature token 500 depicted in
Furthermore, the signature token also includes space for a digital signature in accordance with a preferred embodiment of the present invention. An RSA digital signature based on ISO Standard 9796 might typically require from 512 to 2048 bits of storage space. A DSS digital signature based on FIPS 186 requires 320 bits of storage space. At step 722, the digital signature portion of the signature token is presently uninitialized. Thereafter, the process calculates a digital signature for the signature token with the multimedia company's private key (step 724). More specifically, a 128 bit MDC is calculated on the portion of the signature token consisting of the header and the n data records. This calculation may be performed using the process described in U.S. Pat. No. 4,908,861 entitled "Data Authentication Using Modification Detection Codes Based on a Public One Way Encryption Function".
Thereafter, a digital signature is calculated on the MDC value using the private key of multimedia company in accordance with a preferred embodiment of the present invention. The digital signature could be calculated with an RSA private key in accordance with ISO standard 9796 or with a DSA private key in accordance with FIPS 186. Those skilled in the art will recognize that private keys of different lengths can be employed to calculate the digital signature, and that digital signatures of different lengths can be stored in the signature token in accordance with a preferred embodiment of the present invention. Thereafter, the digital signature is stored in the signature token and the process terminates.
With reference now to
The process then locates and reads the table of contents or equivalent information contained in the multimedia title (step 806). This information is called "D1". The process then calculates a 128 bit MDC on the table of contents, D1 (step 808). This calculation may be performed in various ways. For example, the process described in U.S. Pat. No. 4,908,861, entitled "Data Authentication Using Modification Detection Codes Based on a Public One Way Encryption Function" may be used. The process then validates the MDC calculated on the table of contents against the MDC-of-reference stored in the signature token (step 810). The 128 bit MDC calculated in step 808 is compared with H1 in the first data record in the signature token. The process then determines whether the two values are equal (step 812). If MDC is not equal to H1, the process then indicates that the title is invalid (step 814). In accordance with a preferred embodiment of the present invention, an invalid multimedia title so-detected by the signature token validation module causes an indicator or indication to be set, but does not halt processing. However, the present invention could be practiced using an implementation wherein the processing is halted as soon as an invalid condition is detected, which would not depart from the spirit of the present invention.
If, however, MDC is equal to H1, the process then locates and reads the first logo screen that is displayed to a user in the multimedia title (step 816). The table of contents may be used to locate and read this logo screen. The logo screen contains the name of the multimedia title, and this information is called "D2". Next, an MDC is calculated on the data comprising the logo screen (step 818). A 128 bit MDC is calculated in accordance with a preferred embodiment of the present invention. The process then validates the MDC calculated on the logo screen against the MDC stored in the signature token (step 820). The 128 bit MDC calculated in step 818 is compared with H2 in the second data record in the signature token. The process then determines whether the two values are equal (step 822). If MDC is not equal to H2, the process then indicates that the title is invalid (step 824). The process then sets Y=1 (step 826).
The process also sets Y=1 if MDC is equal H2 (step 826). The process then randomly selects and reads one of the n-2 remaining data records in the signature token (step 828). The data records are selected from data record 3 through data record n, inclusively. Each data record is associated with and refers to all or a portion of the data for a signal object-property pair in the multimedia title. The process then reads the data OP1 associated with the object-property pair pointed to by the selected data record (step 820). The data location information in the data record is used to locate and read the data OP1 associated with the referenced object-property pair in the multimedia title.
Next, the process calculates a 128 bit MDC on the selected data OP1 (step 832). The process then validates the MDC calculated on the data OP1 against the corresponding MDC, or hash value H, stored in the data record read from the signature token (step 834). In step 834 the 128 bit MDC calculated in step 832 is compared with the corresponding MDC, or hash value H, recovered from the data record. If the calculated MDC and stored MDC are equal, control is passed to step 838. If the MDC values are not equal, the process indicates that the title is invalid (step 836) and control is passed to (step 838). The process determines whether Y=R (step 838). If Y is not equal to R, the process sets Y=Y+1 (step 839) and returns to step 828. This continues until R data records have been randomly selected from among data records 3 through n in the signature token, and processed. When Y=R, the process then proceeds to validate the digital signature and signature token. Next, the process reads the digital signature in the signature token (step 840).
Thereafter, the process accesses the multimedia company's public key, which is stored as a fixed constant in the signature token validation module (step 842). The process then validates the signature using the public key (step 844). A 128 bit MDC is calculated on the portion of the signature token consisting of the header and the n data records. When an RSA digital signature is employed, the original 128 bit hash value H is recovered from the RSA digital signature using the process described in ISO standard 9796 utilizing the RSA public key. Thereafter, the 128 bit MDC calculated on the signature token including the header and the n data records are compared with the 128 bit hash value H. If these MDCs are equal, then the multimedia title is accepted as valid. Otherwise, the process indicates that the title is invalid. When a digital signature based on FIPS 186 is employed, the signature is validated by following the steps outlined in FIPS 186, which are different from those used to validate an RSA digital signature.
The process then accepts the title or handles the title invalid condition (step 846). If the title is indicated as being invalid, several actions may be taken in accordance with a preferred embodiment of the present invention. For example, the multimedia title may be rejected, the multimedia title may be accepted, but the user is given a warning screen; the multimedia may be accepted, but the user may be required to start over. Of course, the signature may be validated before the table of contents, logo screen, and randomly selected data records are checked in accordance with a preferred embodiment of the present invention. Depending on the implementation other logical structures other than the table of contents or logo screen may or may not be checked.
The processes depicted in
While the invention has been particularly shown and described with reference to a preferred embodiment, it will be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the invention.
Kutten, Shay, Herzberg, Amir, Krawczyk, Hugo Mario, Yung, Marcel Mordechay, Le, An Van, Matyas, Stephen Michael
Patent | Priority | Assignee | Title |
10055880, | Dec 06 2016 | ACTIVISION PUBLISHING, INC | Methods and systems to modify a two dimensional facial image to increase dimensional depth and generate a facial image that appears three dimensional |
10099140, | Oct 08 2015 | ACTIVISION PUBLISHING, INC ; Activision Publishing, Inc. | System and method for generating personalized messaging campaigns for video game players |
10118099, | Dec 16 2014 | ACTIVISION PUBLISHING, INC | System and method for transparently styling non-player characters in a multiplayer video game |
10137376, | Dec 31 2012 | ACTIVISION PUBLISHING, INC | System and method for creating and streaming augmented game sessions |
10179289, | Jun 21 2016 | Activision Publishing, Inc.; ACTIVISION PUBLISHING, INC | System and method for reading graphically-encoded identifiers from physical trading cards through image-based template matching |
10213682, | Jun 15 2015 | ACTIVISION PUBLISHING, INC | System and method for uniquely identifying physical trading cards and incorporating trading card game items in a video game |
10226701, | Apr 29 2016 | Activision Publishing, Inc. | System and method for identifying spawn locations in a video game |
10226703, | Apr 01 2016 | Activision Publishing, Inc.; ACTIVISION PUBLISHING, INC | System and method of generating and providing interactive annotation items based on triggering events in a video game |
10232272, | Oct 21 2015 | Activision Publishing, Inc. | System and method for replaying video game streams |
10245509, | Oct 21 2015 | Activision Publishing, Inc. | System and method of inferring user interest in different aspects of video game streams |
10284454, | Nov 30 2007 | Activision Publishing, Inc. | Automatic increasing of capacity of a virtual space in a virtual world |
10286314, | May 14 2015 | Activision Publishing, Inc. | System and method for providing continuous gameplay in a multiplayer video game through an unbounded gameplay session |
10286326, | Jul 03 2014 | Activision Publishing, Inc. | Soft reservation system and method for multiplayer video games |
10300390, | Apr 01 2016 | Activision Publishing, Inc.; ACTIVISION PUBLISHING, INC | System and method of automatically annotating gameplay of a video game based on triggering events |
10315113, | May 14 2015 | Activision Publishing, Inc. | System and method for simulating gameplay of nonplayer characters distributed across networked end user devices |
10322351, | Jul 03 2014 | Activision Publishing, Inc. | Matchmaking system and method for multiplayer video games |
10376781, | Oct 21 2015 | Activision Publishing, Inc. | System and method of generating and distributing video game streams |
10376792, | Jul 03 2014 | Activision Publishing, Inc. | Group composition matchmaking system and method for multiplayer video games |
10376793, | Feb 18 2010 | Activision Publishing, Inc. | Videogame system and method that enables characters to earn virtual fans by completing secondary objectives |
10421019, | May 12 2010 | Activision Publishing, Inc. | System and method for enabling players to participate in asynchronous, competitive challenges |
10463964, | Nov 17 2016 | ACTIVISION PUBLISHING, INC | Systems and methods for the real-time generation of in-game, locally accessible heatmaps |
10463971, | Dec 06 2017 | ACTIVISION PUBLISHING, INC | System and method for validating video gaming data |
10471348, | Jul 24 2015 | Activision Publishing, Inc.; ACTIVISION PUBLISHING, INC | System and method for creating and sharing customized video game weapon configurations in multiplayer video games via one or more social networks |
10486068, | May 14 2015 | Activision Publishing, Inc. | System and method for providing dynamically variable maps in a video game |
10500498, | Nov 29 2016 | Activision Publishing, Inc. | System and method for optimizing virtual games |
10537809, | Dec 06 2017 | ACTIVISION PUBLISHING, INC | System and method for validating video gaming data |
10561945, | Sep 27 2017 | Activision Publishing, Inc. | Methods and systems for incentivizing team cooperation in multiplayer gaming environments |
10573065, | Jul 29 2016 | ACTIVISION PUBLISHING, INC | Systems and methods for automating the personalization of blendshape rigs based on performance capture data |
10586380, | Jul 29 2016 | ACTIVISION PUBLISHING, INC | Systems and methods for automating the animation of blendshape rigs |
10596471, | Dec 22 2017 | Activision Publishing, Inc. | Systems and methods for enabling audience participation in multi-player video game play sessions |
10627983, | Dec 24 2007 | Activision Publishing, Inc. | Generating data for managing encounters in a virtual world environment |
10650539, | Dec 06 2016 | Activision Publishing, Inc. | Methods and systems to modify a two dimensional facial image to increase dimensional depth and generate a facial image that appears three dimensional |
10668367, | Jun 15 2015 | ACTIVISION PUBLISHING, INC | System and method for uniquely identifying physical trading cards and incorporating trading card game items in a video game |
10668381, | Dec 16 2014 | Activision Publishing, Inc. | System and method for transparently styling non-player characters in a multiplayer video game |
10694352, | Oct 28 2015 | ACTIVISION PUBLISHING, INC | System and method of using physical objects to control software access |
10702779, | Nov 17 2016 | Activision Publishing, Inc. | Bandwidth and processing efficient heatmaps |
10709981, | Nov 17 2016 | ACTIVISION PUBLISHING, INC | Systems and methods for the real-time generation of in-game, locally accessible barrier-aware heatmaps |
10765948, | Dec 22 2017 | ACTIVISION PUBLISHING, INC | Video game content aggregation, normalization, and publication systems and methods |
10807003, | Apr 29 2016 | Activision Publishing, Inc. | Systems and methods for determining distances required to achieve a line of site between nodes |
10818060, | Sep 05 2017 | Activision Publishing, Inc. | Systems and methods for guiding motion capture actors using a motion reference system |
10835818, | Jul 24 2015 | Activision Publishing, Inc. | Systems and methods for customizing weapons and sharing customized weapons via social networks |
10857468, | Jul 03 2014 | Activision Publishing, Inc. | Systems and methods for dynamically weighing match variables to better tune player matches |
10861079, | Feb 23 2017 | ACTIVISION PUBLISHING, INC | Flexible online pre-ordering system for media |
10864443, | Dec 22 2017 | ACTIVISION PUBLISHING, INC | Video game content aggregation, normalization, and publication systems and methods |
10898813, | Oct 21 2015 | Activision Publishing, Inc. | Methods and systems for generating and providing virtual objects and/or playable recreations of gameplay |
10905963, | Dec 31 2012 | Activision Publishing, Inc. | System and method for creating and streaming augmented game sessions |
10974150, | Sep 27 2017 | Activision Publishing, Inc. | Methods and systems for improved content customization in multiplayer gaming environments |
10981051, | Dec 19 2017 | ACTIVISION PUBLISHING, INC | Synchronized, fully programmable game controllers |
10981069, | Mar 07 2008 | Activision Publishing, Inc. | Methods and systems for determining the authenticity of copied objects in a virtual environment |
10987588, | Nov 29 2016 | Activision Publishing, Inc. | System and method for optimizing virtual games |
10991110, | Dec 06 2016 | Activision Publishing, Inc. | Methods and systems to modify a two dimensional facial image to increase dimensional depth and generate a facial image that appears three dimensional |
11040286, | Sep 27 2017 | Activision Publishing, Inc. | Methods and systems for improved content generation in multiplayer gaming environments |
11097193, | Sep 11 2019 | ACTIVISION PUBLISHING, INC | Methods and systems for increasing player engagement in multiplayer gaming environments |
11115712, | Dec 15 2018 | ACTIVISION PUBLISHING, INC | Systems and methods for indexing, searching for, and retrieving digital media |
11117055, | Dec 06 2017 | ACTIVISION PUBLISHING, INC | Systems and methods for validating leaderboard gaming data |
11148063, | Dec 22 2017 | Activision Publishing, Inc. | Systems and methods for providing a crowd advantage to one or more players in the course of a multi-player video game play session |
11185784, | Oct 08 2015 | Activision Publishing, Inc. | System and method for generating personalized messaging campaigns for video game players |
11189084, | Jul 29 2016 | Activision Publishing, Inc. | Systems and methods for executing improved iterative optimization processes to personify blendshape rigs |
11192028, | Nov 19 2018 | ACTIVISION PUBLISHING, INC | Systems and methods for the real-time customization of video game content based on player data |
11207596, | Nov 17 2016 | Activision Publishing, Inc. | Systems and methods for the real-time generation of in-game, locally accessible barrier-aware heatmaps |
11213753, | Nov 17 2016 | Activision Publishing, Inc. | Systems and methods for the generation of heatmaps |
11224807, | May 14 2015 | Activision Publishing, Inc. | System and method for providing dynamically variable maps in a video game |
11263670, | Nov 19 2018 | ACTIVISION PUBLISHING, INC | Systems and methods for dynamically modifying video game content based on non-video gaming content being concurrently experienced by a user |
11278813, | Dec 22 2017 | ACTIVISION PUBLISHING, INC | Systems and methods for enabling audience participation in bonus game play sessions |
11305191, | Dec 20 2018 | ACTIVISION PUBLISHING, INC | Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay |
11310346, | Oct 21 2015 | Activision Publishing, Inc. | System and method of generating and distributing video game streams |
11344808, | Jun 28 2019 | ACTIVISION PUBLISHING, INC | Systems and methods for dynamically generating and modulating music based on gaming events, player profiles and/or player reactions |
11351459, | Aug 18 2020 | Activision Publishing, Inc. | Multiplayer video games with virtual characters having dynamically generated attribute profiles unconstrained by predefined discrete values |
11351466, | Dec 05 2014 | ACTIVISION PUBLISHING, ING.; ACTIVISION PUBLISHING, INC | System and method for customizing a replay of one or more game events in a video game |
11413536, | Dec 22 2017 | Activision Publishing, Inc. | Systems and methods for managing virtual items across multiple video game environments |
11420119, | May 14 2015 | Activision Publishing, Inc. | Systems and methods for initiating conversion between bounded gameplay sessions and unbounded gameplay sessions |
11420122, | Dec 23 2019 | Activision Publishing, Inc.; ACTIVISION PUBLISHING, INC | Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay |
11423556, | Dec 06 2016 | Activision Publishing, Inc. | Methods and systems to modify two dimensional facial images in a video to generate, in real-time, facial images that appear three dimensional |
11423605, | Nov 01 2019 | ACTIVISION PUBLISHING, INC | Systems and methods for remastering a game space while maintaining the underlying game simulation |
11439904, | Nov 11 2020 | ACTIVISION PUBLISHING, INC | Systems and methods for imparting dynamic and realistic movement to player-controlled avatars in video games |
11439909, | Apr 01 2016 | Activision Publishing, Inc. | Systems and methods of generating and sharing social messages based on triggering events in a video game |
11446582, | Dec 31 2012 | Activision Publishing, Inc. | System and method for streaming game sessions to third party gaming consoles |
11524234, | Aug 18 2020 | Activision Publishing, Inc. | Multiplayer video games with virtual characters having dynamically modified fields of view |
11524237, | May 14 2015 | Activision Publishing, Inc. | Systems and methods for distributing the generation of nonplayer characters across networked end user devices for use in simulated NPC gameplay sessions |
11537209, | Dec 17 2019 | ACTIVISION PUBLISHING, INC | Systems and methods for guiding actors using a motion capture reference system |
11563774, | Dec 27 2019 | Activision Publishing, Inc.; ACTIVISION PUBLISHING, INC | Systems and methods for tracking and identifying phishing website authors |
11666831, | Dec 22 2017 | Activision Publishing, Inc. | Systems and methods for determining game events based on a crowd advantage of one or more players in the course of a multi-player video game play session |
11679330, | Dec 18 2018 | ACTIVISION PUBLISHING, INC | Systems and methods for generating improved non-player characters |
11679333, | Oct 21 2015 | Activision Publishing, Inc. | Methods and systems for generating a video game stream based on an obtained game log |
11704703, | Nov 19 2018 | Activision Publishing, Inc. | Systems and methods for dynamically modifying video game content based on non-video gaming content being concurrently experienced by a user |
11709551, | Dec 17 2019 | Activision Publishing, Inc. | Systems and methods for guiding actors using a motion capture reference system |
11712627, | Nov 08 2019 | ACTIVISION PUBLISHING, INC | System and method for providing conditional access to virtual gaming items |
11717753, | Sep 29 2020 | ACTIVISION PUBLISHING, INC | Methods and systems for generating modified level of detail visual assets in a video game |
11724188, | Sep 29 2020 | ACTIVISION PUBLISHING, INC | Methods and systems for selecting a level of detail visual asset during the execution of a video game |
11741530, | Feb 23 2017 | Activision Publishing, Inc. | Flexible online pre-ordering system for media |
11794104, | Nov 11 2020 | Activision Publishing, Inc. | Systems and methods for pivoting player-controlled avatars in video games |
11794107, | Dec 30 2020 | ACTIVISION PUBLISHING, INC | Systems and methods for improved collision detection in video games |
11806626, | Dec 22 2017 | Activision Publishing, Inc. | Systems and methods for incentivizing player participation in bonus game play sessions |
11833423, | Sep 29 2020 | ACTIVISION PUBLISHING, INC | Methods and systems for generating level of detail visual assets in a video game |
11839814, | Dec 23 2019 | Activision Publishing, Inc. | Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay |
11853439, | Dec 30 2020 | ACTIVISION PUBLISHING, INC | Distributed data storage system providing enhanced security |
11857876, | May 14 2015 | Activision Publishing, Inc. | System and method for providing dynamically variable maps in a video game |
11883745, | Nov 19 2018 | Activision Publishing, Inc. | Systems and methods for providing a tailored video game based on a player defined time period |
11896905, | May 14 2015 | Activision Publishing, Inc. | Methods and systems for continuing to execute a simulation after processing resources go offline |
11911689, | Dec 19 2017 | Activision Publishing, Inc. | Synchronized, fully programmable game controllers |
11957984, | Mar 07 2008 | Activision Publishing, Inc. | Methods and systems for determining the authenticity of modified objects in a virtual environment |
11972086, | Nov 30 2007 | Activision Publishing, Inc. | Automatic increasing of capacity of a virtual space in a virtual world |
11986734, | Dec 22 2017 | Activision Publishing, Inc. | Video game content aggregation, normalization, and publication systems and methods |
12053700, | Jun 28 2019 | Activision Publishing, Inc. | Systems and methods for dynamically generating and modulating music based on gaming events, player profiles and/or player reactions |
12059627, | Dec 05 2014 | Activision Publishing, Inc. | System and method for customizing a replay of one or more game events in a video game |
12064688, | Dec 30 2020 | ACTIVISION PUBLISHING, INC | Methods and systems for determining decal projections intersecting spatial units in a frame of a game space |
12083440, | Dec 22 2017 | Activision Publishing, Inc. | Systems and methods for enabling remote viewers to participate in a multi-player video game play session |
12086845, | Nov 19 2018 | Activision Publishing, Inc. | Systems and methods for dynamically modifying video game content based on non-video gaming content being concurrently experienced by a user |
12097430, | Dec 28 2020 | ACTIVISION PUBLISHING, INC | Methods and systems for generating and managing active objects in video games |
12134038, | Sep 29 2020 | Activision Publishing, Inc. | Methods and systems for generating proxy level of detail visual assets in a video game |
12134039, | Sep 29 2020 | Activision Publishing, Inc. | Methods and systems for selecting a level of detail visual asset during the execution of a video game |
12161938, | Dec 22 2017 | Activision Publishing, Inc. | Systems and methods for generating tailored game event options to spectators |
12161940, | Oct 21 2015 | Activision Publishing, Inc. | Methods and systems for enabling users to experience previously hidden information during a playable recreation of a video game session |
12172075, | Nov 11 2020 | Activision Publishing, Inc. | Systems and methods for programming movements of player-controlled avatars in video games |
12179113, | Dec 09 2020 | ACTIVISION PUBLISHING, INC ; Activision Publishing, Inc. | Methods and systems for dynamically selecting and modifying digital assets within game elements of a multiplayer video game |
7325145, | Feb 18 2000 | Microsoft Technology Licensing, LLC | Verifying the presence of an original data storage medium |
ER4596, | |||
ER4703, | |||
ER9834, |
Patent | Priority | Assignee | Title |
4295039, | Dec 03 1979 | LENOVO SINGAPORE PTE LTD | Method and apparatus for achieving secure password verification |
4309569, | Sep 05 1979 | The Board of Trustees of the Leland Stanford Junior University | Method of providing digital signatures |
4658093, | Jul 11 1983 | ALADDIN KNOWLEDGE SYSTEMS, INC | Software distribution system |
4789863, | Oct 02 1985 | Pay per view entertainment system | |
4908861, | Aug 28 1987 | INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, NEW YORK 10504, A CORP OF NEW YORK | Data authentication using modification detection codes based on a public one way encryption function |
5065429, | Apr 03 1989 | LANRALD DATA MGMT NV, LLC | Method and apparatus for protecting material on storage media |
5191613, | Nov 16 1990 | Knowledge based system for document authentication | |
5224166, | Aug 11 1992 | International Business Machines Corporation | System for seamless processing of encrypted and non-encrypted data and instructions |
5231666, | Apr 20 1992 | International Business Machines Corporation | Cryptographic method for updating financial records |
5241671, | Oct 26 1989 | ENCYCLOPAEDIA BRITANNICA, INC | Multimedia search system using a plurality of entry path means which indicate interrelatedness of information |
5247575, | Aug 16 1988 | WAVE SYSTEMS, CORP GRANTEE | Information distribution system |
5276738, | Dec 17 1992 | Bull HN Information Systems Inc.; BULL HN INFORMATION SYSTEMS INC | Software data protection mechanism |
5319705, | Oct 21 1992 | IBM Corporation | Method and system for multimedia access control enablement |
5343527, | Oct 27 1993 | Lockheed Martin Corporation | Hybrid encryption method and system for protecting reusable software components |
5379343, | Feb 26 1993 | Motorola Mobility LLC | Detection of unauthorized use of software applications in communication units |
5421006, | May 07 1992 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Method and apparatus for assessing integrity of computer system software |
5432939, | May 27 1992 | LENOVO SINGAPORE PTE LTD | Trusted personal computer system with management control over initial program loading |
5450489, | Oct 29 1993 | WARNER BROS HOME ENTERTAINMENT INC | System and method for authenticating software carriers |
5485577, | Dec 16 1994 | Google Technology Holdings LLC | Method and apparatus for incremental delivery of access rights |
5530751, | Jun 30 1994 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Embedded hidden identification codes in digital objects |
5535188, | Oct 03 1994 | International Business Machines Corporation | Data security protection for information recorded on a rewritable storage medium using a write-once read-many storage medium |
5553139, | Apr 04 1994 | Apple Inc | Method and apparatus for electronic license distribution |
5553143, | Feb 04 1994 | RPX Corporation | Method and apparatus for electronic licensing |
GB565314, | |||
GB570123, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Apr 27 2000 | International Business Machines Corporation | (assignment on the face of the patent) | / | |||
Dec 31 2012 | International Business Machines Corporation | ACTIVISION PUBLISHING, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 029900 | /0285 | |
Jan 31 2014 | ACTIVISION PUBLISHING, INC | BANK OF AMERICA, N A | SECURITY AGREEMENT | 032240 | /0257 | |
Oct 14 2016 | BANK OF AMERICA, N A | ACTIVISION BLIZZARD INC | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 040381 | /0487 | |
Oct 14 2016 | BANK OF AMERICA, N A | ACTIVISION PUBLISHING, INC | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 040381 | /0487 | |
Oct 14 2016 | BANK OF AMERICA, N A | ACTIVISION ENTERTAINMENT HOLDINGS, INC | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 040381 | /0487 | |
Oct 14 2016 | BANK OF AMERICA, N A | BLIZZARD ENTERTAINMENT, INC | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 040381 | /0487 |
Date | Maintenance Fee Events |
Mar 29 2004 | ASPN: Payor Number Assigned. |
Sep 16 2005 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Sep 02 2009 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Dec 30 2006 | 4 years fee payment window open |
Jun 30 2007 | 6 months grace period start (w surcharge) |
Dec 30 2007 | patent expiry (for year 4) |
Dec 30 2009 | 2 years to revive unintentionally abandoned end. (for year 4) |
Dec 30 2010 | 8 years fee payment window open |
Jun 30 2011 | 6 months grace period start (w surcharge) |
Dec 30 2011 | patent expiry (for year 8) |
Dec 30 2013 | 2 years to revive unintentionally abandoned end. (for year 8) |
Dec 30 2014 | 12 years fee payment window open |
Jun 30 2015 | 6 months grace period start (w surcharge) |
Dec 30 2015 | patent expiry (for year 12) |
Dec 30 2017 | 2 years to revive unintentionally abandoned end. (for year 12) |