USRE38375E1 - Method and system for the secured distribution of multimedia titles - Google Patents

Method and system for the secured distribution of multimedia titles Download PDF

Info

Publication number
USRE38375E1
USRE38375E1 US09/560,334 US56033400A USRE38375E US RE38375 E1 USRE38375 E1 US RE38375E1 US 56033400 A US56033400 A US 56033400A US RE38375 E USRE38375 E US RE38375E
Authority
US
United States
Prior art keywords
program
data
hash value
processing system
cryptographic hash
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
US09/560,334
Inventor
Amir Herzberg
Hugo Mario Krawczyk
Shay Kutten
An Van Le
Stephen Michael Matyas
Marcel Mordechay Yung
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.)
Activision Publishing Inc
Original Assignee
International Business Machines Corp
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
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US09/560,334 priority Critical patent/USRE38375E1/en
Application granted granted Critical
Publication of USRE38375E1 publication Critical patent/USRE38375E1/en
Assigned to ACTIVISION PUBLISHING, INC. reassignment ACTIVISION PUBLISHING, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: INTERNATIONAL BUSINESS MACHINES CORPORATION
Assigned to BANK OF AMERICA, N.A. reassignment BANK OF AMERICA, N.A. SECURITY AGREEMENT Assignors: ACTIVISION PUBLISHING, INC.
Anticipated expiration legal-status Critical
Assigned to BLIZZARD ENTERTAINMENT, INC., ACTIVISION PUBLISHING, INC., ACTIVISION BLIZZARD INC., ACTIVISION ENTERTAINMENT HOLDINGS, INC. reassignment BLIZZARD ENTERTAINMENT, INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: BANK OF AMERICA, N.A.
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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • 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
    • 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
    • G06F2211/008Public Key, Asymmetric Key, Asymmetric Encryption

Definitions

  • 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.
  • 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.
  • 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.
  • 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.
  • the RTE is designed to execute on various computing platforms, which makes the authoring tools for the software system desirable to developers.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • FIG. 1 depicts a data processing system in the form of a personal computer in which the present invention can be employed
  • FIG. 2 is a block diagram of a personal computer system illustrating the various components of personal computer system in accordance with the present invention
  • FIG. 3 is a block diagram of a creation and distribution process for multimedia titles on CD-ROM depicted in accordance with a preferred embodiment of the present invention.
  • FIG. 4 is a depiction of entries in a table of contents in accordance with a preferred embodiment of the present invention.
  • FIG. 5 is a block diagram of a signature token generation module, depicted in accordance with a preferred embodiment of the present invention.
  • FIG. 6 is a block diagram of a signature token validation module depicted in accordance with a preferred embodiment of the present invention.
  • FIG. 7 is a flowchart of a process for generating signature tokens in a signature token generation module depicted in accordance with a preferred embodiment of the present invention.
  • FIG. 8 is a flowchart of a process for validating multimedia titles in a validation program depicted in accordance with a preferred embodiment of the present invention.
  • a system unit 12 is coupled to and can drive an optional monitor 14 (such as a conventional video display).
  • a system unit 12 also can be optionally coupled to input devices such as a PC keyboard 16 or a mouse 18 .
  • Mouse 18 includes right and left buttons (not shown).
  • the left button is generally employed as the main selector button and alternatively is referred to as the first mouse button or mouse button 1 .
  • the right button is typically employed to select auxiliary functions as explained later.
  • the right mouse button is alternatively referred to as the second mouse button or mouse button 2 .
  • An optional output device, such as a printer 20 also can be connected to the system unit 12 .
  • system unit 12 may include one or more mass storage devices such as the diskette drive 22 .
  • 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.
  • 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.
  • RAM random access memory
  • ROM ready only memory
  • 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.
  • 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.
  • FIG. 2 there is shown a block diagram of personal computer system 10 illustrating the various components of personal computer system 10 in accordance with the present invention.
  • FIG. 2 further illustrates components of planar 11 and the connection of planar 11 to I/O slots 46 a- 46 d and other hardware of personal computer system 10 .
  • the system central processing unit (CPU) 26 Connected to planar 11 is the system central processing unit (CPU) 26 comprised of a microprocessor which is connected by a high speed CPU local bus 24 through a bus controlled timing unit 38 to a memory control unit 50 which is further connected to a volatile random access memory (RAM) 58 .
  • CPU system central processing unit
  • Pentium microprocessor which is sold by Intel Corporation. “Pentium” is a trademark of Intel Corporation.
  • the system processor could be an Intel 80286, 80386, or 80486 microprocessor. These particular microprocessors can operate in a real addressing mode or a protected addressing mode. Each mode provides an addressing scheme for accessing different areas of the microprocessor's memory.
  • CPU local bus 24 (comprising data, address and control components) provides for the connection of CPU 26 , an optional math coprocessor 27 , a cache controller 28 , and a cache memory 30 . Also coupled on CPU local bus 24 is a buffer 32 . Buffer 32 is itself connected to a slower speed (compared to the CPU local bus) system bus 34 , also comprising address, data and control components. System bus 34 extends between buffer 32 and a further buffer 36 . System bus 34 is further connected to a bus control and timing unit 38 and a Direct Memory Access (DMA) unit 40 . DMA unit 40 is comprised of a central arbitration unit 48 and a DMA controller 41 .
  • DMA Direct Memory Access
  • Buffer 36 provides an interface between the system bus 34 and an optional feature bus such as the Micro Channel bus 44 .
  • Micro Channel is a registered trademark of International Business Machines Corporation.
  • I/O slot 46 c has a hard disk drive connected to it;
  • I/O slot 46 b has a CD-ROM drive connected to it; and
  • I/O slot 46 a has a ROM on an adapter card connected to it.
  • Other devices, such as a modem may be connected to an I/O slot.
  • An arbitration control bus 42 couples the DMA controller 41 and central arbitration unit 48 to I/O slots 46 and diskette adapter 82 .
  • a memory control unit 50 which is comprised of a memory controller 52 , an address multiplexer 54 , and a data buffer 56 .
  • Memory control unit 50 is further connected to a random access memory as represented by RAM module 58 .
  • Memory controller 52 includes the logic for mapping addresses to and from CPU 26 to particular areas of RAM 58 . While the personal computer system 10 is shown with a basic 1 megabyte RAM module in RAM 58 , it is understood that additional memory can be interconnected as represented in FIG. 2 by the optional memory modules 60 through 64 .
  • 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.
  • 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.
  • ports A and B 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.
  • Multimedia titles 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.
  • 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.
  • 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.
  • FIG. 3 a block diagram of a creation and distribution process for multimedia titles on CD-ROM is depicted in accordance with a preferred embodiment of the present invention.
  • a multimedia title is developed by a developer using authoring tool 300 .
  • the multimedia title is then processed using signature token generation model 302 .
  • This module generates a signature token for the multimedia title.
  • the signature token is embedded within the multimedia title.
  • the multimedia title with the signature token embedded within it is sent back to the developer who creates a master CD-ROM 304 .
  • the signature token and multimedia title are sent back to the developer, whereupon the signature token is embedded into the multimedia title and a master CD-ROM 304 is created by the developer.
  • CD-ROM 306 is produced containing the multimedia title and the embedded signature token.
  • CD-ROM 306 may be placed within data processing system 308 , which includes the RTE with the signature token validation module in accordance with a preferred embodiment of the present invention.
  • the RTE reads the signature token from the CD-ROM and validates the signature token and a selected portion of the data objects also read from the CD-ROM using the signature token validation module.
  • a multimedia title takes about one hour to play and contains about 650 megabytes of data.
  • 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.
  • 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.
  • 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.
  • Table of contents 400 includes entries 402 - 408 .
  • Each entry includes an object identifier, a property identifier, a type, and a location (offset and length).
  • a particular entry indicates that at a particular offset on the disk, for this many bytes, a property with this ID belonging to an object with this ID of this type is located.
  • the table of contents references data on the basis of an Object ID and a Property ID, the referenced data object is said to be referenced by an object-property (OP) pair and the data object is referred to as OP data.
  • OP object-property
  • 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.
  • Signature token 500 is constructed by a signature token generation module (not shown in FIG. 5 ).
  • the signature token is constructed step-by-step by making repeated service requests to the signature token generation module.
  • signature token 500 is embedded in the multimedia title upon which it was generated.
  • This signature token is validated by a signature token validation module in the RTE. In validation, the signature token is validated step-by-step by making repeated service requests to the signature token validation module.
  • 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.
  • 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.
  • 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.
  • 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 .
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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”.
  • 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”.
  • Signature token generation module 600 includes generation module 602 and cryptographic subsystem 604 .
  • Signature validation module 606 includes a validation program 608 and a cryptographic subsystem 610 .
  • Generation program 602 in signature token generation module 600 selects data (including data in randomly selected data objects) in the multimedia title to be validated.
  • Generation program 602 reads data from the multimedia title and processes the data by issuing repeated service requests to cryptographic subsystem 604 . These repeated service requests to process data are used to build a signature token.
  • validation program 608 in signature token validation module 606 randomly selects (for subsequent processing and validation) a subset of the data records in the signature token generated by signature token generation module 600 . This data is read from the CDROM and is processed by issuing repeated service requests to cryptographic subsystem 610 to validate the signature token.
  • 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.
  • ANSI American Standard Institute
  • FIPS Federal Information Processing Standard
  • 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.”
  • the digital signature can be based on a symmetric algorithm such as the Data Encryption Standard (DES).
  • DES Data Encryption Standard
  • the process locates and reads the table of contents or equivalent information contained in the multimedia title (step 704 ). This information is called “D1”.
  • a 128 bit MDC is calculated on the data D 1 (step 705 ).
  • the first logo screen is located and read from the multimedia title (step 706 ).
  • the logo screen contains the name of the multimedia title and is designated “D2”.
  • a 128 bit MDC, designated MDC 2 is calculated on the data D 2 (step 707 ).
  • the process 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.
  • “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.
  • L 3 denotes the information in the table of contents employed to locate and read the data corresponding to the randomly selected object-property pair.
  • 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 ).
  • 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 ).
  • a signature token such as signature token 500 depicted in FIG. 5, consisting of a header, n data records, and a digital signature (step 722 ).
  • the token type e.g., “multimedia signature token”
  • n number of data records
  • the token type e.g., “multimedia signature token”
  • n number of data records
  • the data location and the hash value are set to the constant value “table of contents” and the calculated value of MCD 1, respectively.
  • the term “table of contents” is stored in the data location sub-field in lieu of location information because the signature token validation module always knows the location of the table of contents in accordance with a preferred embodiment of the present invention.
  • the data location and hash value are set to the constant value “logo screen” and the calculated value of MDC2, respectively.
  • the term “logo screen” is stored in the data location sub-field in lieu of location information because the signature token validation module is able to calculate the location of the logo screen from the information found in the table of contents in accordance with a preferred embodiment of the present invention.
  • the data locations and hash values in data records 3 , 4 , . . . , n are set to (L 3 , MDC3), (L 4 , MDC4), . . . , (Ln, MDCn), respectively.
  • the hash values H 1 through Hn in data records 1 though n of the signature token are equal to the MDC values: MDC1 through MDCn, respectively.
  • 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.
  • the digital signature portion of the signature token is presently uninitialized.
  • 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”.
  • 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.
  • 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.
  • the digital signature is stored in the signature token and the process terminates.
  • FIG. 8 a flowchart of a process for validating multimedia titles in a validation program is depicted in accordance with a preferred embodiment of the present invention.
  • This process is employed within the signature token validation module 606 of FIG. 6 .
  • the process begins by receiving a multimedia title with the embedded signature token (step 800 ).
  • the process fixes variable R, where R in this flowchart is the number of data records to be randomly authenticated (step 802 ).
  • R may be any value, such as 3, 4, 5, etc., but will generally be a small value in order to minimize the required processing time.
  • the process reads the embedded signature token (step 804 ).
  • the table of contents may be used to locate and read the embedded signature token.
  • the process 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 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 H 1 in the first data record in the signature token.
  • the process determines whether the two values are equal (step 812 ). If MDC is not equal to H 1 , the process then indicates that the title is invalid (step 814 ).
  • 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.
  • 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.
  • 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 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 H 2 in the second data record in the signature token.
  • the process determines whether the two values are equal (step 822 ). If MDC is not equal to H 2 , the process then indicates that the title is invalid (step 824 ).
  • 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 OP 1 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 OP 1 associated with the referenced object-property pair in the multimedia title.
  • the process calculates a 128 bit MDC on the selected data OP 1 (step 832 ).
  • the process validates the MDC calculated on the data OP 1 against the corresponding MDC, or hash value H, stored in the data record read from the signature token (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 reads the digital signature in the signature token (step 840 ).
  • 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 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.
  • 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.
  • 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.
  • a digital signature based on FIPS 186 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.
  • 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 FIGS. 3-8 may be implemented by those of ordinary skill in the art within the data processing system depicted in FIGS. 1 and 2.
  • the processes of the present invention also may be implemented in a program storage device that is readable by a data processing system, wherein the program storage device encodes data processing system executable instructions coding for the processes of the present invention.
  • the program storage device may take various forms including, for example, but not limited to a hard disk drive, a floppy disk, an optical disk, a ROM, and an EPROM, which are known to those skilled in the art.
  • the processes stored on a program storage device are dormant until activated by using the program storage device with the data processing system.

Abstract

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.

Description

This is a continuation of application Ser. No. 08/354,700, filed Dec. 13, 1994, now abandoned.
BACKGROUND OF THE INVENTION
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.
SUMMARY OF THE INVENTION
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.
BRIEF DESCRIPTION OF THE DRAWINGS
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:
FIG. 1 depicts a data processing system in the form of a personal computer in which the present invention can be employed;
FIG. 2 is a block diagram of a personal computer system illustrating the various components of personal computer system in accordance with the present invention;
FIG. 3 is a block diagram of a creation and distribution process for multimedia titles on CD-ROM depicted in accordance with a preferred embodiment of the present invention.
FIG. 4 is a depiction of entries in a table of contents in accordance with a preferred embodiment of the present invention;
FIG. 5 is a block diagram of a signature token generation module, depicted in accordance with a preferred embodiment of the present invention;
FIG. 6 is a block diagram of a signature token validation module depicted in accordance with a preferred embodiment of the present invention;
FIG. 7 is a flowchart of a process for generating signature tokens in a signature token generation module depicted in accordance with a preferred embodiment of the present invention; and
FIG. 8 is a flowchart of a process for validating multimedia titles in a validation program depicted in accordance with a preferred embodiment of the present invention.
DETAILED DESCRIPTION OF PREFERRED EMBODIMENT
With reference now to the figures and in particular with reference to FIG. 1, a data processing system, personal computer system 10 is depicted, in which the present invention can be employed. As shown, personal computer system 10 comprises a number of components, which are interconnected together. More particularly, a system unit 12 is coupled to and can drive an optional monitor 14 (such as a conventional video display). A system unit 12 also can be optionally coupled to input devices such as a PC keyboard 16 or a mouse 18. Mouse 18 includes right and left buttons (not shown). The left button is generally employed as the main selector button and alternatively is referred to as the first mouse button or mouse button 1. The right button is typically employed to select auxiliary functions as explained later. The right mouse button is alternatively referred to as the second mouse button or mouse button 2. An optional output device, such as a printer 20, also can be connected to the system unit 12. Finally, system unit 12 may include one or more mass storage devices such as the diskette drive 22.
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 FIG. 2, there is shown a block diagram of personal computer system 10 illustrating the various components of personal computer system 10 in accordance with the present invention. FIG. 2 further illustrates components of planar 11 and the connection of planar 11 to I/O slots 46a-46d and other hardware of personal computer system 10. Connected to planar 11 is the system central processing unit (CPU) 26 comprised of a microprocessor which is connected by a high speed CPU local bus 24 through a bus controlled timing unit 38 to a memory control unit 50 which is further connected to a volatile random access memory (RAM) 58. While any appropriate microprocessor can be used for CPU 26, one suitable microprocessor is the Pentium microprocessor, which is sold by Intel Corporation. “Pentium” is a trademark of Intel Corporation.
While the present invention is described hereinafter with particular reference to the system block diagram of FIG. 2, it is to be understood at the outset of the description which follows, it is contemplated that the apparatus and methods in accordance with the present invention may be used with other hardware configurations of the planar board. For example, the system processor could be an Intel 80286, 80386, or 80486 microprocessor. These particular microprocessors can operate in a real addressing mode or a protected addressing mode. Each mode provides an addressing scheme for accessing different areas of the microprocessor's memory.
Returning now to FIG. 2, CPU local bus 24 (comprising data, address and control components) provides for the connection of CPU 26, an optional math coprocessor 27, a cache controller 28, and a cache memory 30. Also coupled on CPU local bus 24 is a buffer 32. Buffer 32 is itself connected to a slower speed (compared to the CPU local bus) system bus 34, also comprising address, data and control components. System bus 34 extends between buffer 32 and a further buffer 36. System bus 34 is further connected to a bus control and timing unit 38 and a Direct Memory Access (DMA) unit 40. DMA unit 40 is comprised of a central arbitration unit 48 and a DMA controller 41. Buffer 36 provides an interface between the system bus 34 and an optional feature bus such as the Micro Channel bus 44. “Micro Channel” is a registered trademark of International Business Machines Corporation. Connected to bus 44 are a plurality of I/O slots 46a-46d for receiving Micro Channel adapter cards which may be further connected to an I/O device or memory. In the depicted example, I/O slot 46c has a hard disk drive connected to it; I/O slot 46b has a CD-ROM drive connected to it; and I/O slot 46a has a ROM on an adapter card connected to it. Other devices, such as a modem may be connected to an I/O slot. An arbitration control bus 42 couples the DMA controller 41 and central arbitration unit 48 to I/O slots 46 and diskette adapter 82. Also connected to system bus 34 is a memory control unit 50 which is comprised of a memory controller 52, an address multiplexer 54, and a data buffer 56. Memory control unit 50 is further connected to a random access memory as represented by RAM module 58. Memory controller 52 includes the logic for mapping addresses to and from CPU 26 to particular areas of RAM 58. While the personal computer system 10 is shown with a basic 1 megabyte RAM module in RAM 58, it is understood that additional memory can be interconnected as represented in FIG. 2 by the optional memory modules 60 through 64.
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 FIG. 3, a block diagram of a creation and distribution process for multimedia titles on CD-ROM is depicted in accordance with a preferred embodiment of the present invention. Those skilled in the art will recognize that the subject invention could be practiced in an implementation wherein multimedia titles are distributed on media other than a CD ROM medium. A multimedia title is developed by a developer using authoring tool 300. The multimedia title is then processed using signature token generation model 302. This module generates a signature token for the multimedia title. The signature token is embedded within the multimedia title. Thereafter, the multimedia title with the signature token embedded within it is sent back to the developer who creates a master CD-ROM 304. Alternatively, the signature token and multimedia title are sent back to the developer, whereupon the signature token is embedded into the multimedia title and a master CD-ROM 304 is created by the developer. From master CD-ROM 304, CD-ROM 306 is produced containing the multimedia title and the embedded signature token. CD-ROM 306 may be placed within data processing system 308, which includes the RTE with the signature token validation module in accordance with a preferred embodiment of the present invention. When the title is to be executed within data processing system 308, the RTE reads the signature token from the CD-ROM and validates the signature token and a selected portion of the data objects also read from the CD-ROM using the signature token validation module.
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 FIG. 4, a depiction of entries in a table of contents is illustrated in accordance with a preferred embodiment of the present invention. Table of contents 400 includes entries 402-408. Each entry includes an object identifier, a property identifier, a type, and a location (offset and length). As a result, a particular entry indicates that at a particular offset on the disk, for this many bytes, a property with this ID belonging to an object with this ID of this type is located. Because the table of contents references data on the basis of an Object ID and a Property ID, the referenced data object is said to be referenced by an object-property (OP) pair and the data object is referred to as OP data. Of course, other formats and specifications for the table of contents may be utilized in accordance with a preferred embodiment of the present invention. The table of contents, regardless of its format, structure, and sematics, may be employed to effectively validate a multimedia title in accordance with a preferred embodiment of the present invention. Typically in multimedia titles, the table of contents is an example of a relatively short and easily identifiable piece of information that has an intrinsic dependency with most of the other parts of the multimedia title. The table of contents could take the form of a symbol table, a linkage map, and so forth, but is rigidly specified and highly structured.
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 FIG. 5, a diagram of a signature token is depicted in accordance with a preferred embodiment of the present invention. Signature token 500 is constructed by a signature token generation module (not shown in FIG. 5). The signature token is constructed step-by-step by making repeated service requests to the signature token generation module. Once created, signature token 500 is embedded in the multimedia title upon which it was generated. This signature token is validated by a signature token validation module in the RTE. In validation, the signature token is validated step-by-step by making repeated service requests to the signature token validation module.
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 FIG. 6, a block diagram of a signature token generation module and a signature token validation module is depicted in accordance with a preferred embodiment of the present invention. Signature token generation module 600 includes generation module 602 and cryptographic subsystem 604. Signature validation module 606 includes a validation program 608 and a cryptographic subsystem 610. Generation program 602 in signature token generation module 600 selects data (including data in randomly selected data objects) in the multimedia title to be validated. Generation program 602 reads data from the multimedia title and processes the data by issuing repeated service requests to cryptographic subsystem 604. These repeated service requests to process data are used to build a signature token. Similarly, validation program 608 in signature token validation module 606 randomly selects (for subsequent processing and validation) a subset of the data records in the signature token generated by signature token generation module 600. This data is read from the CDROM and is processed by issuing repeated service requests to cryptographic subsystem 610 to validate the signature token.
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 FIG. 7, a flowchart of a process for generating signature tokens in a signature token generation module is depicted in accordance with a preferred embodiment of the present invention. The process begins by receiving a multimedia title with the signature token (step 700). Thereafter, the process fixes variable N and M such that N is the maximum number of data records to be created for the signature token that is to be produced, and M is the maximum record data length in bytes of each selected data object (step 702). For example, N=1,000 and M=1,000 are possible values for N and M. The process then locates and reads the table of contents or equivalent information contained in the multimedia title (step 704). This information is called “D1”. In accordance with a preferred embodiment of the present invention, a 128 bit MDC, designated MDC 1, is calculated on the data D1 (step 705). Using the table of contents as necessary, the first logo screen is located and read from the multimedia title (step 706). The logo screen contains the name of the multimedia title and is designated “D2”. A 128 bit MDC, designated MDC 2, is calculated on the data D2 (step 707).
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 FIG. 5, consisting of a header, n data records, and a digital signature (step 722). The token type (e.g., “multimedia signature token”) and n (number of data records) is stored within the header. In the first data record, the data location and the hash value are set to the constant value “table of contents” and the calculated value of MCD 1, respectively. The term “table of contents” is stored in the data location sub-field in lieu of location information because the signature token validation module always knows the location of the table of contents in accordance with a preferred embodiment of the present invention. In the second data record in the signature token, the data location and hash value are set to the constant value “logo screen” and the calculated value of MDC2, respectively. The term “logo screen” is stored in the data location sub-field in lieu of location information because the signature token validation module is able to calculate the location of the logo screen from the information found in the table of contents in accordance with a preferred embodiment of the present invention. The data locations and hash values in data records 3, 4, . . . , n are set to (L3, MDC3), (L4, MDC4), . . . , (Ln, MDCn), respectively. Note also that the hash values H1 through Hn in data records 1 though n of the signature token are equal to the MDC values: MDC1 through MDCn, respectively.
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 FIG. 8, a flowchart of a process for validating multimedia titles in a validation program is depicted in accordance with a preferred embodiment of the present invention. This process is employed within the signature token validation module 606 of FIG. 6. The process begins by receiving a multimedia title with the embedded signature token (step 800). The process then fixes variable R, where R in this flowchart is the number of data records to be randomly authenticated (step 802). For example, R may be any value, such as 3, 4, 5, etc., but will generally be a small value in order to minimize the required processing time. Thereafter, the process reads the embedded signature token (step 804). In accordance with a preferred embodiment of the present invention, the table of contents may be used to locate and read the embedded signature token.
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 FIGS. 3-8 may be implemented by those of ordinary skill in the art within the data processing system depicted in FIGS. 1 and 2. The processes of the present invention also may be implemented in a program storage device that is readable by a data processing system, wherein the program storage device encodes data processing system executable instructions coding for the processes of the present invention. The program storage device may take various forms including, for example, but not limited to a hard disk drive, a floppy disk, an optical disk, a ROM, and an EPROM, which are known to those skilled in the art. The processes stored on a program storage device are dormant until activated by using the program storage device with the data processing system. For example, a hard drive containing data processing system executable instruction for the present invention may be connected to a data processing system; a floppy disk containing data processing system executable instructions for the present invention may be inserted into a floppy disk drive in the data processing system; or a ROM containing data processing system executable instructions for the present invention may be connected to the data processing system via a card or adapter connected to an I/O slot.
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.

Claims (38)

What is claimed is:
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.
2. The method of claim 1, further comprising preventing execution of the program in response to a determination that the program is unauthorized.
3. The method of claim 1, further comprising permitting limited execution of the program in response to a determination that the program is unauthorized.
4. The method of claim 1, where in the determining step comprises
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 claim 1, wherein the creating step comprises randomly selecting data from within the program.
6. The method of claim 5, wherein the creating step comprises:
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 claim 6, wherein the creating step further comprises:
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 claim 7, wherein the associating step comprises placing the signature within the validation structure.
9. The method of claim 1, wherein the determining step comprises:
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 claim 9, wherein the determining step further comprises:
creating a cryptographic hash value for the validation structure; and
comparing the created cryptographic hash value with the signature.
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.
12. The data processing system of claim 11, further comprising means for preventing execution of the program in response to a determination that the program is unauthorized.
13. The data processing system of claim 11, further comprising means for permitting limited execution of the program in response to a determination that the program is unauthorized.
14. The data processing system of claim 11, wherein the determination means comprises
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 claim 11, wherein the creation means comprises:
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 claim 14, wherein the creation means further comprises:
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 claim 16, wherein the association means comprises placement means for placing the signature within the validation structure.
18. The data processing system of claim 16, wherein the determination means comprises:
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 claim 18, wherein the determination means further comprises:
creation means for creating a cryptographic hash value for the validation structure; and
validation means for the created cryptographic hash value with the signature.
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.
21. The method of claim 20, wherein the selecting step comprises randomly selecting a plurality of sections from within the program.
22. The method of claim 20, wherein the creating step further comprises:
creating a signature for the validation structure, and
associating the signature with the validation structure.
23. The method of claim 22, wherein the associating step comprises placing the signature within the validation structure.
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.
25. The data processing system of claim 24, wherein the creation means further comprises:
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 claim 25, wherein the association means comprises placement means for placing the signature within the validation structure.
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.
28. The data processing system of claim 27, wherein the determination means further comprises:
creating a cryptographic hash value for the validation structure; and
validating the created cryptographic hash value with the signature.
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.
30. The data processing system of claim 29, wherein the determination means further comprises:
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.
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.
32. The storage device of claim 31, wherein the storage device is a hard disk drive.
33. The storage device of claim 31, wherein the storage device is a ROM for use with a data processing system.
34. The storage device of claim 31, wherein the storage device is a floppy diskette.
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.
36. The storage device of claim 35, wherein the storage device is a hard disk drive.
37. The storage device of claim 35, wherein the storage device is a ROM for use with a data processing system.
38. The storage device of claim 35, wherein the storage device is a floppy diskette.
US09/560,334 1994-12-13 2000-04-27 Method and system for the secured distribution of multimedia titles Expired - Lifetime USRE38375E1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/560,334 USRE38375E1 (en) 1994-12-13 2000-04-27 Method and system for the secured distribution of multimedia titles

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US35470094A 1994-12-13 1994-12-13
US08/914,911 US5745678A (en) 1994-12-13 1997-08-18 Method and system for the secured distribution of multimedia titles
US09/560,334 USRE38375E1 (en) 1994-12-13 2000-04-27 Method and system for the secured distribution of multimedia titles

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US08/914,911 Reissue US5745678A (en) 1994-12-13 1997-08-18 Method and system for the secured distribution of multimedia titles

Publications (1)

Publication Number Publication Date
USRE38375E1 true USRE38375E1 (en) 2003-12-30

Family

ID=23394550

Family Applications (2)

Application Number Title Priority Date Filing Date
US08/914,911 Ceased US5745678A (en) 1994-12-13 1997-08-18 Method and system for the secured distribution of multimedia titles
US09/560,334 Expired - Lifetime USRE38375E1 (en) 1994-12-13 2000-04-27 Method and system for the secured distribution of multimedia titles

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US08/914,911 Ceased US5745678A (en) 1994-12-13 1997-08-18 Method and system for the secured distribution of multimedia titles

Country Status (4)

Country Link
US (2) US5745678A (en)
EP (1) EP0717337B1 (en)
JP (1) JP3579154B2 (en)
DE (1) DE69521977T2 (en)

Cited By (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7325145B1 (en) * 2000-02-18 2008-01-29 Microsoft Corporation Verifying the presence of an original data storage medium
US10055880B2 (en) 2016-12-06 2018-08-21 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
US10099140B2 (en) 2015-10-08 2018-10-16 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
US10118099B2 (en) 2014-12-16 2018-11-06 Activision Publishing, Inc. System and method for transparently styling non-player characters in a multiplayer video game
US10137376B2 (en) 2012-12-31 2018-11-27 Activision Publishing, Inc. System and method for creating and streaming augmented game sessions
US10179289B2 (en) 2016-06-21 2019-01-15 Activision Publishing, Inc. System and method for reading graphically-encoded identifiers from physical trading cards through image-based template matching
US10213682B2 (en) 2015-06-15 2019-02-26 Activision Publishing, Inc. System and method for uniquely identifying physical trading cards and incorporating trading card game items in a video game
US10226703B2 (en) 2016-04-01 2019-03-12 Activision Publishing, Inc. System and method of generating and providing interactive annotation items based on triggering events in a video game
US10226701B2 (en) 2016-04-29 2019-03-12 Activision Publishing, Inc. System and method for identifying spawn locations in a video game
US10232272B2 (en) 2015-10-21 2019-03-19 Activision Publishing, Inc. System and method for replaying video game streams
US10245509B2 (en) 2015-10-21 2019-04-02 Activision Publishing, Inc. System and method of inferring user interest in different aspects of video game streams
US10284454B2 (en) 2007-11-30 2019-05-07 Activision Publishing, Inc. Automatic increasing of capacity of a virtual space in a virtual world
US10286326B2 (en) 2014-07-03 2019-05-14 Activision Publishing, Inc. Soft reservation system and method for multiplayer video games
US10286314B2 (en) 2015-05-14 2019-05-14 Activision Publishing, Inc. System and method for providing continuous gameplay in a multiplayer video game through an unbounded gameplay session
US10315113B2 (en) 2015-05-14 2019-06-11 Activision Publishing, Inc. System and method for simulating gameplay of nonplayer characters distributed across networked end user devices
US10376793B2 (en) 2010-02-18 2019-08-13 Activision Publishing, Inc. Videogame system and method that enables characters to earn virtual fans by completing secondary objectives
US10376781B2 (en) 2015-10-21 2019-08-13 Activision Publishing, Inc. System and method of generating and distributing video game streams
US10421019B2 (en) 2010-05-12 2019-09-24 Activision Publishing, Inc. System and method for enabling players to participate in asynchronous, competitive challenges
US10463964B2 (en) 2016-11-17 2019-11-05 Activision Publishing, Inc. Systems and methods for the real-time generation of in-game, locally accessible heatmaps
US10463971B2 (en) 2017-12-06 2019-11-05 Activision Publishing, Inc. System and method for validating video gaming data
US10471348B2 (en) 2015-07-24 2019-11-12 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
US10486068B2 (en) 2015-05-14 2019-11-26 Activision Publishing, Inc. System and method for providing dynamically variable maps in a video game
US10500498B2 (en) 2016-11-29 2019-12-10 Activision Publishing, Inc. System and method for optimizing virtual games
US10537809B2 (en) 2017-12-06 2020-01-21 Activision Publishing, Inc. System and method for validating video gaming data
US10561945B2 (en) 2017-09-27 2020-02-18 Activision Publishing, Inc. Methods and systems for incentivizing team cooperation in multiplayer gaming environments
US10573065B2 (en) 2016-07-29 2020-02-25 Activision Publishing, Inc. Systems and methods for automating the personalization of blendshape rigs based on performance capture data
US10596471B2 (en) 2017-12-22 2020-03-24 Activision Publishing, Inc. Systems and methods for enabling audience participation in multi-player video game play sessions
US10627983B2 (en) 2007-12-24 2020-04-21 Activision Publishing, Inc. Generating data for managing encounters in a virtual world environment
US10694352B2 (en) 2015-10-28 2020-06-23 Activision Publishing, Inc. System and method of using physical objects to control software access
US10709981B2 (en) 2016-11-17 2020-07-14 Activision Publishing, Inc. Systems and methods for the real-time generation of in-game, locally accessible barrier-aware heatmaps
US10765948B2 (en) 2017-12-22 2020-09-08 Activision Publishing, Inc. Video game content aggregation, normalization, and publication systems and methods
US10818060B2 (en) 2017-09-05 2020-10-27 Activision Publishing, Inc. Systems and methods for guiding motion capture actors using a motion reference system
US10861079B2 (en) 2017-02-23 2020-12-08 Activision Publishing, Inc. Flexible online pre-ordering system for media
US10974150B2 (en) 2017-09-27 2021-04-13 Activision Publishing, Inc. Methods and systems for improved content customization in multiplayer gaming environments
US10981051B2 (en) 2017-12-19 2021-04-20 Activision Publishing, Inc. Synchronized, fully programmable game controllers
US10981069B2 (en) 2008-03-07 2021-04-20 Activision Publishing, Inc. Methods and systems for determining the authenticity of copied objects in a virtual environment
US11040286B2 (en) 2017-09-27 2021-06-22 Activision Publishing, Inc. Methods and systems for improved content generation in multiplayer gaming environments
US11097193B2 (en) 2019-09-11 2021-08-24 Activision Publishing, Inc. Methods and systems for increasing player engagement in multiplayer gaming environments
US11115712B2 (en) 2018-12-15 2021-09-07 Activision Publishing, Inc. Systems and methods for indexing, searching for, and retrieving digital media
US11185784B2 (en) 2015-10-08 2021-11-30 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
US11192028B2 (en) 2018-11-19 2021-12-07 Activision Publishing, Inc. Systems and methods for the real-time customization of video game content based on player data
US11263670B2 (en) 2018-11-19 2022-03-01 Activision Publishing, Inc. Systems and methods for dynamically modifying video game content based on non-video gaming content being concurrently experienced by a user
US11278813B2 (en) 2017-12-22 2022-03-22 Activision Publishing, Inc. Systems and methods for enabling audience participation in bonus game play sessions
US11305191B2 (en) 2018-12-20 2022-04-19 Activision Publishing, Inc. Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay
US11344808B2 (en) 2019-06-28 2022-05-31 Activision Publishing, Inc. Systems and methods for dynamically generating and modulating music based on gaming events, player profiles and/or player reactions
US11351466B2 (en) 2014-12-05 2022-06-07 Activision Publishing, Ing. System and method for customizing a replay of one or more game events in a video game
US11351459B2 (en) 2020-08-18 2022-06-07 Activision Publishing, Inc. Multiplayer video games with virtual characters having dynamically generated attribute profiles unconstrained by predefined discrete values
US11420122B2 (en) 2019-12-23 2022-08-23 Activision Publishing, Inc. Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay
US11423605B2 (en) 2019-11-01 2022-08-23 Activision Publishing, Inc. Systems and methods for remastering a game space while maintaining the underlying game simulation
US11439904B2 (en) 2020-11-11 2022-09-13 Activision Publishing, Inc. Systems and methods for imparting dynamic and realistic movement to player-controlled avatars in video games
US11524234B2 (en) 2020-08-18 2022-12-13 Activision Publishing, Inc. Multiplayer video games with virtual characters having dynamically modified fields of view
US11537209B2 (en) 2019-12-17 2022-12-27 Activision Publishing, Inc. Systems and methods for guiding actors using a motion capture reference system
US11563774B2 (en) 2019-12-27 2023-01-24 Activision Publishing, Inc. Systems and methods for tracking and identifying phishing website authors
US11679330B2 (en) 2018-12-18 2023-06-20 Activision Publishing, Inc. Systems and methods for generating improved non-player characters
US11712627B2 (en) 2019-11-08 2023-08-01 Activision Publishing, Inc. System and method for providing conditional access to virtual gaming items
US11717753B2 (en) 2020-09-29 2023-08-08 Activision Publishing, Inc. Methods and systems for generating modified level of detail visual assets in a video game
US11724188B2 (en) 2020-09-29 2023-08-15 Activision Publishing, Inc. Methods and systems for selecting a level of detail visual asset during the execution of a video game
US11794107B2 (en) 2020-12-30 2023-10-24 Activision Publishing, Inc. Systems and methods for improved collision detection in video games
US11833423B2 (en) 2020-09-29 2023-12-05 Activision Publishing, Inc. Methods and systems for generating level of detail visual assets in a video game
US11853439B2 (en) 2020-12-30 2023-12-26 Activision Publishing, Inc. Distributed data storage system providing enhanced security

Families Citing this family (235)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7069451B1 (en) * 1995-02-13 2006-06-27 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US6948070B1 (en) 1995-02-13 2005-09-20 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
US5892900A (en) 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
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
US6157721A (en) 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US7133846B1 (en) 1995-02-13 2006-11-07 Intertrust Technologies Corp. Digital certificate support system, methods and techniques for secure electronic commerce transaction and rights management
DE69637799D1 (en) * 1995-02-13 2009-02-12 Intertrust Tech Corp Systems and procedures for secure transaction management and electronic legal protection
US7289643B2 (en) * 2000-12-21 2007-10-30 Digimarc Corporation Method, apparatus and programs for generating and utilizing content signatures
US6076078A (en) * 1996-02-14 2000-06-13 Carnegie Mellon University Anonymous certified delivery
US6446070B1 (en) 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6237024B1 (en) 1998-03-20 2001-05-22 Sun Microsystem, Inc. Method and apparatus for the suspension and continuation of remote processes
US6578044B1 (en) 1997-11-17 2003-06-10 Sun Microsystems, Inc. Method and system for typesafe attribute matching
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
US6463446B1 (en) 1998-02-26 2002-10-08 Sun Microsystems, Inc. Method and apparatus for transporting behavior in an event-based 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
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
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
US6182083B1 (en) 1997-11-17 2001-01-30 Sun Microsystems, Inc. Method and system for multi-entry and multi-template matching in a database
US6421704B1 (en) 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership 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
US6247026B1 (en) 1996-10-11 2001-06-12 Sun Microsystems, Inc. Method, apparatus, and product for leasing of delegation certificates in a distributed system
US6487607B1 (en) 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
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
US6138238A (en) * 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
US6438614B2 (en) 1998-02-26 2002-08-20 Sun Microsystems, Inc. Polymorphic token based control
US6708171B1 (en) 1996-04-23 2004-03-16 Sun Microsystems, Inc. Network proxy
US6832223B1 (en) 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6185611B1 (en) 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6978370B1 (en) * 1996-09-03 2005-12-20 Cryptography Research, Inc. Method and system for copy-prevention of digital copyright works
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
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
US5920861A (en) * 1997-02-25 1999-07-06 Intertrust Technologies Corp. Techniques for defining using and manipulating rights management data structures
FR2760865B1 (en) * 1997-03-13 1999-04-23 Gemplus Card Int METHOD FOR CONTROLLING THE SEALING OF APPLICATIONS LOADED IN A MULTI-APPLICATION TERMINAL AND TERMINAL FOR IMPLEMENTATION
US6421733B1 (en) * 1997-03-25 2002-07-16 Intel Corporation System for dynamically transcoding data transmitted between computers
US6108420A (en) * 1997-04-10 2000-08-22 Channelware Inc. Method and system for networked installation of uniquely customized, authenticable, and traceable software application
US6272636B1 (en) * 1997-04-11 2001-08-07 Preview Systems, Inc Digital product execution control and security
US6073256A (en) * 1997-04-11 2000-06-06 Preview Systems, Inc. Digital product execution control
WO1998054633A1 (en) * 1997-05-29 1998-12-03 Sun Microsystems, Inc. Method and apparatus for signing and sealing objects
US6000032A (en) * 1997-07-15 1999-12-07 Symantec Corporation Secure access to software modules
US6442276B1 (en) 1997-07-21 2002-08-27 Assure Systems, Inc. Verification of authenticity of goods by use of random numbers
US6061794A (en) * 1997-09-30 2000-05-09 Compaq Computer Corp. System and method for performing secure device communications in a peer-to-peer bus architecture
US6957427B1 (en) 1997-10-15 2005-10-18 Sun Microsystems, Inc. Remote object activation in a distributed system
US6253256B1 (en) 1997-10-15 2001-06-26 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading in a distributed system
US6023764A (en) * 1997-10-20 2000-02-08 International Business Machines Corporation Method and apparatus for providing security certificate management for Java Applets
US6330549B1 (en) * 1997-10-30 2001-12-11 Xerox Corporation Protected shareware
US7092914B1 (en) * 1997-11-06 2006-08-15 Intertrust Technologies Corporation Methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information
US6192476B1 (en) * 1997-12-11 2001-02-20 Sun Microsystems, Inc. Controlling access to a resource
US7268700B1 (en) 1998-01-27 2007-09-11 Hoffberg Steven M Mobile communication device
CN1298514A (en) 1998-02-26 2001-06-06 太阳微系统公司 Method and system for deterministic hashes to identify remote method
US6604127B2 (en) 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
US6415385B1 (en) * 1998-07-29 2002-07-02 Unisys Corporation Digital signaturing method and system for packaging specialized native files for open network transport and for burning onto CD-ROM
US7110984B1 (en) * 1998-08-13 2006-09-19 International Business Machines Corporation Updating usage conditions in lieu of download digital rights management protected content
US6154747A (en) * 1998-08-26 2000-11-28 Hunt; Rolf G. Hash table implementation of an object repository
US7017188B1 (en) * 1998-11-16 2006-03-21 Softricity, Inc. Method and apparatus for secure content delivery over broadband access networks
US6763370B1 (en) * 1998-11-16 2004-07-13 Softricity, Inc. Method and apparatus for content protection in a secure content delivery system
US6901518B1 (en) 1999-04-08 2005-05-31 Sun Microsystems, Inc. Method and system for establishing trust in downloaded proxy code
US7370071B2 (en) * 2000-03-17 2008-05-06 Microsoft Corporation Method for serving third party software applications from servers to client computers
US7730169B1 (en) 1999-04-12 2010-06-01 Softricity, Inc. Business method and system for serving third party software applications
US6363429B1 (en) * 1999-04-20 2002-03-26 3Com Corporation Method and system for automatic determination of priority data streams on computer networks
US6389537B1 (en) * 1999-04-23 2002-05-14 Intel Corporation Platform and method for assuring integrity of trusted agent communications
US8099758B2 (en) * 1999-05-12 2012-01-17 Microsoft Corporation Policy based composite file system and method
EP1056014A1 (en) 1999-05-28 2000-11-29 Hewlett-Packard Company System for providing a trustworthy user interface
EP1055989A1 (en) * 1999-05-28 2000-11-29 Hewlett-Packard Company System for digitally signing a document
JP3580478B2 (en) * 1999-05-31 2004-10-20 日本ビクター株式会社 Point of sale terminal in content sales system
US6877163B1 (en) 1999-06-14 2005-04-05 Sun Microsystems, Inc. Method and system for dynamic proxy classes
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
US6882979B1 (en) * 1999-06-18 2005-04-19 Onadine, Inc. Generating revenue for the use of softgoods that are freely distributed over a network
WO2000079382A2 (en) * 1999-06-20 2000-12-28 Thinkpulse, Inc. Method and system of performing a security check of a smart device description file
US6681214B1 (en) * 1999-06-29 2004-01-20 Assure Systems, Inc. Secure system for printing authenticating digital signatures
US7243236B1 (en) * 1999-07-29 2007-07-10 Intertrust Technologies Corp. Systems and methods for using cryptography to protect secure and insecure computing environments
AU6614600A (en) * 1999-07-29 2001-02-19 Intertrust Technologies Corp. Systems and methods for using cryptography to protect secure and insecure computing environments
EP1526435A3 (en) * 1999-07-30 2005-07-27 Intertrust Technologies Corp. Methods and systems for transaction record delivery using thresholds and multi-stage protocol
EP1076279A1 (en) 1999-08-13 2001-02-14 Hewlett-Packard Company Computer platforms and their methods of operation
US7406603B1 (en) * 1999-08-31 2008-07-29 Intertrust Technologies Corp. Data protection systems and methods
US6565443B1 (en) * 1999-09-14 2003-05-20 Innovative Gaming Corporation System and method for verifying the contents of a mass storage device before granting access to computer readable data stored on the device
US6957195B1 (en) * 1999-09-18 2005-10-18 Wildtangent Player-centric method and apparatus for creating, distributing, and consuming content
US6985885B1 (en) * 1999-09-21 2006-01-10 Intertrust Technologies Corp. Systems and methods for pricing and selling digital goods
GB9922665D0 (en) 1999-09-25 1999-11-24 Hewlett Packard Co A method of enforcing trusted functionality in a full function platform
DE10002203B4 (en) * 2000-01-19 2009-12-10 Robert Bosch Gmbh Method for protecting a microcomputer system against manipulation of data stored in a memory arrangement of the microcomputer system
WO2001080161A1 (en) * 2000-04-17 2001-10-25 Icard International Financial transaction card
US6850979B1 (en) 2000-05-09 2005-02-01 Sun Microsystems, Inc. Message gates 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
US7065574B1 (en) 2000-05-09 2006-06-20 Sun Microsystems, Inc. Messaging system using pairs of message gates 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
US6917976B1 (en) 2000-05-09 2005-07-12 Sun Microsystems, Inc. Message-based leasing of resources in a distributed computing environment
US8001232B1 (en) 2000-05-09 2011-08-16 Oracle America, Inc. Event message endpoints 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
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
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
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
US6789126B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Addressing message gates in a distributed computing environment
US6950875B1 (en) 2000-05-09 2005-09-27 Sun Microsystems, Inc. Message conductors in a distributed computing environment
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
US7072967B1 (en) 2000-05-09 2006-07-04 Sun Microsystems, Inc. Efficient construction of message endpoints
US7260543B1 (en) 2000-05-09 2007-08-21 Sun Microsystems, Inc. Automatic lease renewal with message gates in a distributed computing environment
US7716492B1 (en) 2000-05-09 2010-05-11 Oracle America, Inc. Method and apparatus to obtain service capability credentials
US7395333B1 (en) 2000-05-09 2008-07-01 Sun Microsystems, Inc. Method and apparatus to obtain negotiated service advertisement
US7370091B1 (en) 2000-05-09 2008-05-06 Sun Microsystems, Inc. Method and apparatus for obtaining space advertisements
US8082491B1 (en) 2000-05-09 2011-12-20 Oracle America, Inc. Dynamic displays in a distributed computing environment
US6898618B1 (en) 2000-05-09 2005-05-24 Sun Microsystems, Inc. Client-specified display services 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
US6792466B1 (en) 2000-05-09 2004-09-14 Sun Microsystems, Inc. Trusted construction of message endpoints 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
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
US6970869B1 (en) 2000-05-09 2005-11-29 Sun Microsystems, Inc. Method and apparatus to discover services and negotiate capabilities
US7016966B1 (en) 2000-05-09 2006-03-21 Sun Microsystems, Inc. Generating results 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
US6868447B1 (en) 2000-05-09 2005-03-15 Sun Microsystems, Inc. Mechanism and apparatus for returning results of services in a distributed computing environment
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
US6957237B1 (en) 2000-06-02 2005-10-18 Sun Microsystems, Inc. Database store for a virtual heap
US6865657B1 (en) 2000-06-02 2005-03-08 Sun Microsystems, Inc. Garbage collector 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
JP4973899B2 (en) 2000-07-06 2012-07-11 ソニー株式会社 TRANSMISSION DEVICE, TRANSMISSION METHOD, RECEPTION DEVICE, RECEPTION METHOD, RECORDING MEDIUM, AND COMMUNICATION SYSTEM
US20020019938A1 (en) * 2000-08-04 2002-02-14 Aarons Michael Thomas Method and apparatus for secure identification for networked environments
AU2001294168A1 (en) * 2000-10-03 2002-04-15 Vidius Inc. Secure distribution of digital content
US7181625B2 (en) * 2000-10-17 2007-02-20 Vidius Inc. Secure distribution of digital content
US7266767B2 (en) * 2000-11-27 2007-09-04 Parker Philip M Method and apparatus for automated authoring and marketing
US6948065B2 (en) 2000-12-27 2005-09-20 Intel Corporation Platform and method for securely transmitting an authorization secret
US7296275B2 (en) 2001-01-04 2007-11-13 Sun Microsystems, Inc. Method and system for passing objects in a distributed system using serialization contexts
US20020112163A1 (en) * 2001-02-13 2002-08-15 Mark Ireton Ensuring legitimacy of digital media
US7987510B2 (en) 2001-03-28 2011-07-26 Rovi Solutions Corporation Self-protecting digital content
WO2002086684A2 (en) 2001-04-24 2002-10-31 Hewlett-Packard Company An information security system
US7085845B2 (en) * 2001-05-09 2006-08-01 Gene Fein Method, apparatus and computer program product for identifying a playing media file and tracking associated user preferences
GB2376313A (en) 2001-06-04 2002-12-11 Hewlett Packard Co Indicating to a user if they are connected to a trusted computer platform
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
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US7512975B2 (en) 2002-08-16 2009-03-31 Intel Corporation Hardware-assisted credential validation
US7546452B2 (en) * 2002-08-20 2009-06-09 Intel Corporation Hardware-based credential management
GB2392262A (en) 2002-08-23 2004-02-25 Hewlett Packard Co A method of controlling the processing of data
US9818136B1 (en) 2003-02-05 2017-11-14 Steven M. Hoffberg System and method for determining contingent relevance
US6967565B2 (en) * 2003-06-27 2005-11-22 Hx Lifespace, Inc. Building automation system
EP2570918A1 (en) 2003-07-07 2013-03-20 Rovi Solutions Corporation Reprogrammable security for controlling piracy and enabling interactive content
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events
US7500108B2 (en) * 2004-03-01 2009-03-03 Microsoft Corporation Metered execution of code
US7590589B2 (en) 2004-09-10 2009-09-15 Hoffberg Steven M Game theoretic prioritization scheme for mobile ad hoc networks permitting hierarchal deference
JP4901164B2 (en) * 2005-09-14 2012-03-21 ソニー株式会社 Information processing apparatus, information recording medium, method, and computer program
US8874477B2 (en) 2005-10-04 2014-10-28 Steven Mark Hoffberg Multifactorial optimization system and method
US10193990B2 (en) 2005-10-26 2019-01-29 Cortica Ltd. System and method for creating user profiles based on multimedia content
US11216498B2 (en) 2005-10-26 2022-01-04 Cortica, Ltd. System and method for generating signatures to three-dimensional multimedia data elements
US11019161B2 (en) 2005-10-26 2021-05-25 Cortica, Ltd. System and method for profiling users interest based on multimedia content analysis
US10380164B2 (en) 2005-10-26 2019-08-13 Cortica, Ltd. System and method for using on-image gestures and multimedia content elements as search queries
US10949773B2 (en) 2005-10-26 2021-03-16 Cortica, Ltd. System and methods thereof for recommending tags for multimedia content elements based on context
US10380267B2 (en) 2005-10-26 2019-08-13 Cortica, Ltd. System and method for tagging multimedia content elements
US10387914B2 (en) 2005-10-26 2019-08-20 Cortica, Ltd. Method for identification of multimedia content elements and adding advertising content respective thereof
US9384196B2 (en) 2005-10-26 2016-07-05 Cortica, Ltd. Signature generation for multimedia deep-content-classification by a large-scale matching system and method thereof
US8326775B2 (en) 2005-10-26 2012-12-04 Cortica Ltd. Signature generation for multimedia deep-content-classification by a large-scale matching system and method thereof
US8818916B2 (en) 2005-10-26 2014-08-26 Cortica, Ltd. System and method for linking multimedia data elements to web pages
US9953032B2 (en) 2005-10-26 2018-04-24 Cortica, Ltd. System and method for characterization of multimedia content signals using cores of a natural liquid architecture system
US20160321253A1 (en) 2005-10-26 2016-11-03 Cortica, Ltd. System and method for providing recommendations based on user profiles
US10848590B2 (en) 2005-10-26 2020-11-24 Cortica Ltd System and method for determining a contextual insight and providing recommendations based thereon
US10621988B2 (en) 2005-10-26 2020-04-14 Cortica Ltd System and method for speech to text translation using cores of a natural liquid architecture system
US10614626B2 (en) * 2005-10-26 2020-04-07 Cortica Ltd. System and method for providing augmented reality challenges
US9372940B2 (en) 2005-10-26 2016-06-21 Cortica, Ltd. Apparatus and method for determining user attention using a deep-content-classification (DCC) system
US9477658B2 (en) 2005-10-26 2016-10-25 Cortica, Ltd. Systems and method for speech to speech translation using cores of a natural liquid architecture system
US10372746B2 (en) 2005-10-26 2019-08-06 Cortica, Ltd. System and method for searching applications using multimedia content elements
US8312031B2 (en) 2005-10-26 2012-11-13 Cortica Ltd. System and method for generation of complex signatures for multimedia data content
US9646005B2 (en) 2005-10-26 2017-05-09 Cortica, Ltd. System and method for creating a database of multimedia content elements assigned to users
US11361014B2 (en) 2005-10-26 2022-06-14 Cortica Ltd. System and method for completing a user profile
US10691642B2 (en) 2005-10-26 2020-06-23 Cortica Ltd System and method for enriching a concept database with homogenous concepts
US10191976B2 (en) 2005-10-26 2019-01-29 Cortica, Ltd. System and method of detecting common patterns within unstructured data elements retrieved from big data sources
US10776585B2 (en) 2005-10-26 2020-09-15 Cortica, Ltd. System and method for recognizing characters in multimedia content
US11403336B2 (en) 2005-10-26 2022-08-02 Cortica Ltd. System and method for removing contextually identical multimedia content elements
US10742340B2 (en) * 2005-10-26 2020-08-11 Cortica Ltd. System and method for identifying the context of multimedia content elements displayed in a web-page and providing contextual filters respective thereto
US11386139B2 (en) 2005-10-26 2022-07-12 Cortica Ltd. System and method for generating analytics for entities depicted in multimedia content
US11604847B2 (en) 2005-10-26 2023-03-14 Cortica Ltd. System and method for overlaying content on a multimedia content element based on user interest
US11620327B2 (en) 2005-10-26 2023-04-04 Cortica Ltd System and method for determining a contextual insight and generating an interface with recommendations based thereon
US11003706B2 (en) 2005-10-26 2021-05-11 Cortica Ltd System and methods for determining access permissions on personalized clusters of multimedia content elements
US10607355B2 (en) 2005-10-26 2020-03-31 Cortica, Ltd. Method and system for determining the dimensions of an object shown in a multimedia content item
US10180942B2 (en) 2005-10-26 2019-01-15 Cortica Ltd. System and method for generation of concept structures based on sub-concepts
US10360253B2 (en) 2005-10-26 2019-07-23 Cortica, Ltd. Systems and methods for generation of searchable structures respective of multimedia data content
US11032017B2 (en) 2005-10-26 2021-06-08 Cortica, Ltd. System and method for identifying the context of multimedia content elements
US10585934B2 (en) 2005-10-26 2020-03-10 Cortica Ltd. Method and system for populating a concept database with respect to user identifiers
US10380623B2 (en) 2005-10-26 2019-08-13 Cortica, Ltd. System and method for generating an advertisement effectiveness performance score
US7992203B2 (en) 2006-05-24 2011-08-02 Red Hat, Inc. Methods and systems for secure shared smartcard access
US7822209B2 (en) 2006-06-06 2010-10-26 Red Hat, Inc. Methods and systems for key recovery for a token
US8364952B2 (en) * 2006-06-06 2013-01-29 Red Hat, Inc. Methods and system for a key recovery plan
US8332637B2 (en) 2006-06-06 2012-12-11 Red Hat, Inc. Methods and systems for nonce generation in a token
US8098829B2 (en) * 2006-06-06 2012-01-17 Red Hat, Inc. Methods and systems for secure key delivery
US8180741B2 (en) 2006-06-06 2012-05-15 Red Hat, Inc. Methods and systems for providing data objects on a token
US20080022088A1 (en) * 2006-06-06 2008-01-24 Red Hat, Inc. Methods and systems for key escrow
US8495380B2 (en) 2006-06-06 2013-07-23 Red Hat, Inc. Methods and systems for server-side key generation
US8412927B2 (en) * 2006-06-07 2013-04-02 Red Hat, Inc. Profile framework for token processing system
US8589695B2 (en) * 2006-06-07 2013-11-19 Red Hat, Inc. Methods and systems for entropy collection for server-side key generation
US8099765B2 (en) 2006-06-07 2012-01-17 Red Hat, Inc. Methods and systems for remote password reset using an authentication credential managed by a third party
US8707024B2 (en) * 2006-06-07 2014-04-22 Red Hat, Inc. Methods and systems for managing identity management security domains
US9769158B2 (en) * 2006-06-07 2017-09-19 Red Hat, Inc. Guided enrollment and login for token users
US8787566B2 (en) * 2006-08-23 2014-07-22 Red Hat, Inc. Strong encryption
US8806219B2 (en) 2006-08-23 2014-08-12 Red Hat, Inc. Time-based function back-off
US8977844B2 (en) * 2006-08-31 2015-03-10 Red Hat, Inc. Smartcard formation with authentication keys
US8074265B2 (en) * 2006-08-31 2011-12-06 Red Hat, Inc. Methods and systems for verifying a location factor associated with a token
US8356342B2 (en) 2006-08-31 2013-01-15 Red Hat, Inc. Method and system for issuing a kill sequence for a token
US9038154B2 (en) * 2006-08-31 2015-05-19 Red Hat, Inc. Token Registration
US10733326B2 (en) 2006-10-26 2020-08-04 Cortica Ltd. System and method for identification of inappropriate multimedia content
US8693690B2 (en) * 2006-12-04 2014-04-08 Red Hat, Inc. Organizing an extensible table for storing cryptographic objects
US8813243B2 (en) * 2007-02-02 2014-08-19 Red Hat, Inc. Reducing a size of a security-related data object stored on a token
US8832453B2 (en) 2007-02-28 2014-09-09 Red Hat, Inc. Token recycling
US8639940B2 (en) * 2007-02-28 2014-01-28 Red Hat, Inc. Methods and systems for assigning roles on a token
US9081948B2 (en) * 2007-03-13 2015-07-14 Red Hat, Inc. Configurable smartcard
JP2009043357A (en) * 2007-08-10 2009-02-26 Toshiba Corp Semiconductor memory device
ES2372889T3 (en) * 2008-01-20 2012-01-27 Nds Limited SAFE USE OF DATA.
US20090193265A1 (en) * 2008-01-25 2009-07-30 Sony Ericsson Mobile Communications Ab Fast database integrity protection apparatus and method
KR101426270B1 (en) * 2008-02-13 2014-08-05 삼성전자주식회사 Method and apparatus for generating and verifying electronic signature of software, and computer readable medium thereof
US20100088745A1 (en) * 2008-10-06 2010-04-08 Fujitsu Limited Method for checking the integrity of large data items rapidly
US11195043B2 (en) 2015-12-15 2021-12-07 Cortica, Ltd. System and method for determining common patterns in multimedia content elements based on key points
WO2017105641A1 (en) 2015-12-15 2017-06-22 Cortica, Ltd. Identification of key points in multimedia data elements
US10395036B2 (en) * 2017-03-16 2019-08-27 Dell Products, L.P. Continued runtime authentication of information handling system (IHS) applications
WO2019008581A1 (en) 2017-07-05 2019-01-10 Cortica Ltd. Driving policies determination
WO2019012527A1 (en) 2017-07-09 2019-01-17 Cortica Ltd. Deep learning networks orchestration
US10846544B2 (en) 2018-07-16 2020-11-24 Cartica Ai Ltd. Transportation prediction system and method
US11181911B2 (en) 2018-10-18 2021-11-23 Cartica Ai Ltd Control transfer of a vehicle
US11126870B2 (en) 2018-10-18 2021-09-21 Cartica Ai Ltd. Method and system for obstacle detection
US10839694B2 (en) 2018-10-18 2020-11-17 Cartica Ai Ltd Blind spot alert
US20200133308A1 (en) 2018-10-18 2020-04-30 Cartica Ai Ltd Vehicle to vehicle (v2v) communication less truck platooning
US11126869B2 (en) 2018-10-26 2021-09-21 Cartica Ai Ltd. Tracking after objects
US10789535B2 (en) 2018-11-26 2020-09-29 Cartica Ai Ltd Detection of road elements
US11643005B2 (en) 2019-02-27 2023-05-09 Autobrains Technologies Ltd Adjusting adjustable headlights of a vehicle
US11285963B2 (en) 2019-03-10 2022-03-29 Cartica Ai Ltd. Driver-based prediction of dangerous events
US11694088B2 (en) 2019-03-13 2023-07-04 Cortica Ltd. Method for object detection using knowledge distillation
US11132548B2 (en) 2019-03-20 2021-09-28 Cortica Ltd. Determining object information that does not explicitly appear in a media unit signature
US10776669B1 (en) 2019-03-31 2020-09-15 Cortica Ltd. Signature generation and object detection that refer to rare scenes
US11222069B2 (en) 2019-03-31 2022-01-11 Cortica Ltd. Low-power calculation of a signature of a media unit
US10789527B1 (en) 2019-03-31 2020-09-29 Cortica Ltd. Method for object detection using shallow neural networks
US10796444B1 (en) 2019-03-31 2020-10-06 Cortica Ltd Configuring spanning elements of a signature generator
US11488290B2 (en) 2019-03-31 2022-11-01 Cortica Ltd. Hybrid representation of a media unit
US11593662B2 (en) 2019-12-12 2023-02-28 Autobrains Technologies Ltd Unsupervised cluster generation
US10748022B1 (en) 2019-12-12 2020-08-18 Cartica Ai Ltd Crowd separation
US11590988B2 (en) 2020-03-19 2023-02-28 Autobrains Technologies Ltd Predictive turning assistant
US11827215B2 (en) 2020-03-31 2023-11-28 AutoBrains Technologies Ltd. Method for training a driving related object detector
US11756424B2 (en) 2020-07-24 2023-09-12 AutoBrains Technologies Ltd. Parking assist

Citations (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB565314A (en) * 1942-10-09 1944-11-06 Western Electric Co Improvements in or relating to electric signalling systems
GB570123A (en) * 1943-08-17 1945-06-22 Waterbury Button Company Improvements in or relating to buttons
US4295039A (en) * 1979-12-03 1981-10-13 International Business Machines Corporation Method and apparatus for achieving secure password verification
US4309569A (en) * 1979-09-05 1982-01-05 The Board Of Trustees Of The Leland Stanford Junior University Method of providing digital signatures
US4658093A (en) * 1983-07-11 1987-04-14 Hellman Martin E Software distribution system
US4789863A (en) * 1985-10-02 1988-12-06 Bush Thomas A Pay per view entertainment system
US4908861A (en) * 1987-08-28 1990-03-13 International Business Machines Corporation Data authentication using modification detection codes based on a public one way encryption function
US5065429A (en) * 1989-04-03 1991-11-12 Lang Gerald S Method and apparatus for protecting material on storage media
US5191613A (en) * 1990-11-16 1993-03-02 Graziano James M Knowledge based system for document authentication
US5224166A (en) * 1992-08-11 1993-06-29 International Business Machines Corporation System for seamless processing of encrypted and non-encrypted data and instructions
US5231666A (en) * 1992-04-20 1993-07-27 International Business Machines Corporation Cryptographic method for updating financial records
US5241671A (en) * 1989-10-26 1993-08-31 Encyclopaedia Britannica, Inc. Multimedia search system using a plurality of entry path means which indicate interrelatedness of information
US5247575A (en) * 1988-08-16 1993-09-21 Sprague Peter J Information distribution system
US5276738A (en) * 1992-12-17 1994-01-04 Bull Hn Information Systems Inc. Software data protection mechanism
US5319705A (en) * 1992-10-21 1994-06-07 International Business Machines Corporation Method and system for multimedia access control enablement
US5343527A (en) * 1993-10-27 1994-08-30 International Business Machines Corporation Hybrid encryption method and system for protecting reusable software components
US5379343A (en) * 1993-02-26 1995-01-03 Motorola, Inc. Detection of unauthorized use of software applications in communication units
US5421006A (en) * 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5432939A (en) * 1992-05-27 1995-07-11 International Business Machines Corp. Trusted personal computer system with management control over initial program loading
US5450489A (en) * 1993-10-29 1995-09-12 Time Warner Entertainment Co., L.P. System and method for authenticating software carriers
US5485577A (en) * 1994-12-16 1996-01-16 General Instrument Corporation Of Delaware Method and apparatus for incremental delivery of access rights
US5530751A (en) * 1994-06-30 1996-06-25 Hewlett-Packard Company Embedded hidden identification codes in digital objects
US5535188A (en) * 1994-10-03 1996-07-09 International Business Machines Corporation Data security protection for information recorded on a rewritable storage medium using a write-once read-many storage medium
US5553143A (en) * 1994-02-04 1996-09-03 Novell, Inc. Method and apparatus for electronic licensing
US5553139A (en) * 1994-04-04 1996-09-03 Novell, Inc. Method and apparatus for electronic license distribution

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU662805B2 (en) * 1992-04-06 1995-09-14 Addison M. Fischer A method for processing information among computers which may exchange messages
ES2128393T3 (en) * 1992-05-15 1999-05-16 Addison M Fischer METHOD AND APPARATUS FOR COMPUTER SYSTEMS WITH INFORMATION DATA STRUCTURES FOR AUTHORIZATION PROGRAMS.

Patent Citations (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB565314A (en) * 1942-10-09 1944-11-06 Western Electric Co Improvements in or relating to electric signalling systems
GB570123A (en) * 1943-08-17 1945-06-22 Waterbury Button Company Improvements in or relating to buttons
US4309569A (en) * 1979-09-05 1982-01-05 The Board Of Trustees Of The Leland Stanford Junior University Method of providing digital signatures
US4295039A (en) * 1979-12-03 1981-10-13 International Business Machines Corporation Method and apparatus for achieving secure password verification
US4658093A (en) * 1983-07-11 1987-04-14 Hellman Martin E Software distribution system
US4789863A (en) * 1985-10-02 1988-12-06 Bush Thomas A Pay per view entertainment system
US4908861A (en) * 1987-08-28 1990-03-13 International Business Machines Corporation Data authentication using modification detection codes based on a public one way encryption function
US5247575A (en) * 1988-08-16 1993-09-21 Sprague Peter J Information distribution system
US5065429A (en) * 1989-04-03 1991-11-12 Lang Gerald S Method and apparatus for protecting material on storage media
US5241671A (en) * 1989-10-26 1993-08-31 Encyclopaedia Britannica, Inc. Multimedia search system using a plurality of entry path means which indicate interrelatedness of information
US5241671C1 (en) * 1989-10-26 2002-07-02 Encyclopaedia Britannica Educa Multimedia search system using a plurality of entry path means which indicate interrelatedness of information
US5191613A (en) * 1990-11-16 1993-03-02 Graziano James M Knowledge based system for document authentication
US5231666A (en) * 1992-04-20 1993-07-27 International Business Machines Corporation Cryptographic method for updating financial records
US5421006A (en) * 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5432939A (en) * 1992-05-27 1995-07-11 International Business Machines Corp. Trusted personal computer system with management control over initial program loading
US5224166A (en) * 1992-08-11 1993-06-29 International Business Machines Corporation System for seamless processing of encrypted and non-encrypted data and instructions
US5319705A (en) * 1992-10-21 1994-06-07 International Business Machines Corporation Method and system for multimedia access control enablement
US5276738A (en) * 1992-12-17 1994-01-04 Bull Hn Information Systems Inc. Software data protection mechanism
US5379343A (en) * 1993-02-26 1995-01-03 Motorola, Inc. Detection of unauthorized use of software applications in communication units
US5343527A (en) * 1993-10-27 1994-08-30 International Business Machines Corporation Hybrid encryption method and system for protecting reusable software components
US5450489A (en) * 1993-10-29 1995-09-12 Time Warner Entertainment Co., L.P. System and method for authenticating software carriers
US5553143A (en) * 1994-02-04 1996-09-03 Novell, Inc. Method and apparatus for electronic licensing
US5553139A (en) * 1994-04-04 1996-09-03 Novell, Inc. Method and apparatus for electronic license distribution
US5530751A (en) * 1994-06-30 1996-06-25 Hewlett-Packard Company Embedded hidden identification codes in digital objects
US5535188A (en) * 1994-10-03 1996-07-09 International Business Machines Corporation Data security protection for information recorded on a rewritable storage medium using a write-once read-many storage medium
US5485577A (en) * 1994-12-16 1996-01-16 General Instrument Corporation Of Delaware Method and apparatus for incremental delivery of access rights

Cited By (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7325145B1 (en) * 2000-02-18 2008-01-29 Microsoft Corporation Verifying the presence of an original data storage medium
US10284454B2 (en) 2007-11-30 2019-05-07 Activision Publishing, Inc. Automatic increasing of capacity of a virtual space in a virtual world
US10627983B2 (en) 2007-12-24 2020-04-21 Activision Publishing, Inc. Generating data for managing encounters in a virtual world environment
US10981069B2 (en) 2008-03-07 2021-04-20 Activision Publishing, Inc. Methods and systems for determining the authenticity of copied objects in a virtual environment
US10376793B2 (en) 2010-02-18 2019-08-13 Activision Publishing, Inc. Videogame system and method that enables characters to earn virtual fans by completing secondary objectives
US10421019B2 (en) 2010-05-12 2019-09-24 Activision Publishing, Inc. System and method for enabling players to participate in asynchronous, competitive challenges
US10137376B2 (en) 2012-12-31 2018-11-27 Activision Publishing, Inc. System and method for creating and streaming augmented game sessions
US10905963B2 (en) 2012-12-31 2021-02-02 Activision Publishing, Inc. System and method for creating and streaming augmented game sessions
US11446582B2 (en) 2012-12-31 2022-09-20 Activision Publishing, Inc. System and method for streaming game sessions to third party gaming consoles
US10857468B2 (en) 2014-07-03 2020-12-08 Activision Publishing, Inc. Systems and methods for dynamically weighing match variables to better tune player matches
US10322351B2 (en) 2014-07-03 2019-06-18 Activision Publishing, Inc. Matchmaking system and method for multiplayer video games
US10286326B2 (en) 2014-07-03 2019-05-14 Activision Publishing, Inc. Soft reservation system and method for multiplayer video games
US10376792B2 (en) 2014-07-03 2019-08-13 Activision Publishing, Inc. Group composition matchmaking system and method for multiplayer video games
US11351466B2 (en) 2014-12-05 2022-06-07 Activision Publishing, Ing. System and method for customizing a replay of one or more game events in a video game
US10118099B2 (en) 2014-12-16 2018-11-06 Activision Publishing, Inc. System and method for transparently styling non-player characters in a multiplayer video game
US10668381B2 (en) 2014-12-16 2020-06-02 Activision Publishing, Inc. System and method for transparently styling non-player characters in a multiplayer video game
US11420119B2 (en) 2015-05-14 2022-08-23 Activision Publishing, Inc. Systems and methods for initiating conversion between bounded gameplay sessions and unbounded gameplay sessions
US10315113B2 (en) 2015-05-14 2019-06-11 Activision Publishing, Inc. System and method for simulating gameplay of nonplayer characters distributed across networked end user devices
US11524237B2 (en) 2015-05-14 2022-12-13 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
US10286314B2 (en) 2015-05-14 2019-05-14 Activision Publishing, Inc. System and method for providing continuous gameplay in a multiplayer video game through an unbounded gameplay session
US11224807B2 (en) 2015-05-14 2022-01-18 Activision Publishing, Inc. System and method for providing dynamically variable maps in a video game
US11857876B2 (en) 2015-05-14 2024-01-02 Activision Publishing, Inc. System and method for providing dynamically variable maps in a video game
US10486068B2 (en) 2015-05-14 2019-11-26 Activision Publishing, Inc. System and method for providing dynamically variable maps in a video game
US11896905B2 (en) 2015-05-14 2024-02-13 Activision Publishing, Inc. Methods and systems for continuing to execute a simulation after processing resources go offline
US10668367B2 (en) 2015-06-15 2020-06-02 Activision Publishing, Inc. System and method for uniquely identifying physical trading cards and incorporating trading card game items in a video game
US10213682B2 (en) 2015-06-15 2019-02-26 Activision Publishing, Inc. System and method for uniquely identifying physical trading cards and incorporating trading card game items in a video game
US10471348B2 (en) 2015-07-24 2019-11-12 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
US10835818B2 (en) 2015-07-24 2020-11-17 Activision Publishing, Inc. Systems and methods for customizing weapons and sharing customized weapons via social networks
US10099140B2 (en) 2015-10-08 2018-10-16 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
US11185784B2 (en) 2015-10-08 2021-11-30 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
US10232272B2 (en) 2015-10-21 2019-03-19 Activision Publishing, Inc. System and method for replaying video game streams
US10898813B2 (en) 2015-10-21 2021-01-26 Activision Publishing, Inc. Methods and systems for generating and providing virtual objects and/or playable recreations of gameplay
US10376781B2 (en) 2015-10-21 2019-08-13 Activision Publishing, Inc. System and method of generating and distributing video game streams
US11679333B2 (en) 2015-10-21 2023-06-20 Activision Publishing, Inc. Methods and systems for generating a video game stream based on an obtained game log
US10245509B2 (en) 2015-10-21 2019-04-02 Activision Publishing, Inc. System and method of inferring user interest in different aspects of video game streams
US11310346B2 (en) 2015-10-21 2022-04-19 Activision Publishing, Inc. System and method of generating and distributing video game streams
US10694352B2 (en) 2015-10-28 2020-06-23 Activision Publishing, Inc. System and method of using physical objects to control software access
US10300390B2 (en) 2016-04-01 2019-05-28 Activision Publishing, Inc. System and method of automatically annotating gameplay of a video game based on triggering events
US10226703B2 (en) 2016-04-01 2019-03-12 Activision Publishing, Inc. System and method of generating and providing interactive annotation items based on triggering events in a video game
US11439909B2 (en) 2016-04-01 2022-09-13 Activision Publishing, Inc. Systems and methods of generating and sharing social messages based on triggering events in a video game
US10807003B2 (en) 2016-04-29 2020-10-20 Activision Publishing, Inc. Systems and methods for determining distances required to achieve a line of site between nodes
US10226701B2 (en) 2016-04-29 2019-03-12 Activision Publishing, Inc. System and method for identifying spawn locations in a video game
US10179289B2 (en) 2016-06-21 2019-01-15 Activision Publishing, Inc. System and method for reading graphically-encoded identifiers from physical trading cards through image-based template matching
US11189084B2 (en) 2016-07-29 2021-11-30 Activision Publishing, Inc. Systems and methods for executing improved iterative optimization processes to personify blendshape rigs
US10573065B2 (en) 2016-07-29 2020-02-25 Activision Publishing, Inc. Systems and methods for automating the personalization of blendshape rigs based on performance capture data
US10586380B2 (en) 2016-07-29 2020-03-10 Activision Publishing, Inc. Systems and methods for automating the animation of blendshape rigs
US11213753B2 (en) 2016-11-17 2022-01-04 Activision Publishing, Inc. Systems and methods for the generation of heatmaps
US11207596B2 (en) 2016-11-17 2021-12-28 Activision Publishing, Inc. Systems and methods for the real-time generation of in-game, locally accessible barrier-aware heatmaps
US10709981B2 (en) 2016-11-17 2020-07-14 Activision Publishing, Inc. Systems and methods for the real-time generation of in-game, locally accessible barrier-aware heatmaps
US10463964B2 (en) 2016-11-17 2019-11-05 Activision Publishing, Inc. Systems and methods for the real-time generation of in-game, locally accessible heatmaps
US10702779B2 (en) 2016-11-17 2020-07-07 Activision Publishing, Inc. Bandwidth and processing efficient heatmaps
US10987588B2 (en) 2016-11-29 2021-04-27 Activision Publishing, Inc. System and method for optimizing virtual games
US10500498B2 (en) 2016-11-29 2019-12-10 Activision Publishing, Inc. System and method for optimizing virtual games
US10650539B2 (en) 2016-12-06 2020-05-12 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
US10055880B2 (en) 2016-12-06 2018-08-21 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
US11423556B2 (en) 2016-12-06 2022-08-23 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
US10991110B2 (en) 2016-12-06 2021-04-27 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
US10861079B2 (en) 2017-02-23 2020-12-08 Activision Publishing, Inc. Flexible online pre-ordering system for media
US11741530B2 (en) 2017-02-23 2023-08-29 Activision Publishing, Inc. Flexible online pre-ordering system for media
US10818060B2 (en) 2017-09-05 2020-10-27 Activision Publishing, Inc. Systems and methods for guiding motion capture actors using a motion reference system
US10561945B2 (en) 2017-09-27 2020-02-18 Activision Publishing, Inc. Methods and systems for incentivizing team cooperation in multiplayer gaming environments
US10974150B2 (en) 2017-09-27 2021-04-13 Activision Publishing, Inc. Methods and systems for improved content customization in multiplayer gaming environments
US11040286B2 (en) 2017-09-27 2021-06-22 Activision Publishing, Inc. Methods and systems for improved content generation in multiplayer gaming environments
US10537809B2 (en) 2017-12-06 2020-01-21 Activision Publishing, Inc. System and method for validating video gaming data
US10463971B2 (en) 2017-12-06 2019-11-05 Activision Publishing, Inc. System and method for validating video gaming data
US11117055B2 (en) 2017-12-06 2021-09-14 Activision Publishing, Inc. Systems and methods for validating leaderboard gaming data
US10981051B2 (en) 2017-12-19 2021-04-20 Activision Publishing, Inc. Synchronized, fully programmable game controllers
US11911689B2 (en) 2017-12-19 2024-02-27 Activision Publishing, Inc. Synchronized, fully programmable game controllers
US10596471B2 (en) 2017-12-22 2020-03-24 Activision Publishing, Inc. Systems and methods for enabling audience participation in multi-player video game play sessions
US11806626B2 (en) 2017-12-22 2023-11-07 Activision Publishing, Inc. Systems and methods for incentivizing player participation in bonus game play sessions
US11413536B2 (en) 2017-12-22 2022-08-16 Activision Publishing, Inc. Systems and methods for managing virtual items across multiple video game environments
US10765948B2 (en) 2017-12-22 2020-09-08 Activision Publishing, Inc. Video game content aggregation, normalization, and publication systems and methods
US11148063B2 (en) 2017-12-22 2021-10-19 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
US10864443B2 (en) 2017-12-22 2020-12-15 Activision Publishing, Inc. Video game content aggregation, normalization, and publication systems and methods
US11666831B2 (en) 2017-12-22 2023-06-06 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
US11278813B2 (en) 2017-12-22 2022-03-22 Activision Publishing, Inc. Systems and methods for enabling audience participation in bonus game play sessions
US11883745B2 (en) 2018-11-19 2024-01-30 Activision Publishing, Inc. Systems and methods for providing a tailored video game based on a player defined time period
US11192028B2 (en) 2018-11-19 2021-12-07 Activision Publishing, Inc. Systems and methods for the real-time customization of video game content based on player data
US11263670B2 (en) 2018-11-19 2022-03-01 Activision Publishing, Inc. Systems and methods for dynamically modifying video game content based on non-video gaming content being concurrently experienced by a user
US11704703B2 (en) 2018-11-19 2023-07-18 Activision Publishing, Inc. Systems and methods for dynamically modifying video game content based on non-video gaming content being concurrently experienced by a user
US11115712B2 (en) 2018-12-15 2021-09-07 Activision Publishing, Inc. Systems and methods for indexing, searching for, and retrieving digital media
US11679330B2 (en) 2018-12-18 2023-06-20 Activision Publishing, Inc. Systems and methods for generating improved non-player characters
US11305191B2 (en) 2018-12-20 2022-04-19 Activision Publishing, Inc. Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay
US11344808B2 (en) 2019-06-28 2022-05-31 Activision Publishing, Inc. Systems and methods for dynamically generating and modulating music based on gaming events, player profiles and/or player reactions
US11097193B2 (en) 2019-09-11 2021-08-24 Activision Publishing, Inc. Methods and systems for increasing player engagement in multiplayer gaming environments
US11423605B2 (en) 2019-11-01 2022-08-23 Activision Publishing, Inc. Systems and methods for remastering a game space while maintaining the underlying game simulation
US11712627B2 (en) 2019-11-08 2023-08-01 Activision Publishing, Inc. System and method for providing conditional access to virtual gaming items
US11709551B2 (en) 2019-12-17 2023-07-25 Activision Publishing, Inc. Systems and methods for guiding actors using a motion capture reference system
US11537209B2 (en) 2019-12-17 2022-12-27 Activision Publishing, Inc. Systems and methods for guiding actors using a motion capture reference system
US11839814B2 (en) 2019-12-23 2023-12-12 Activision Publishing, Inc. Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay
US11420122B2 (en) 2019-12-23 2022-08-23 Activision Publishing, Inc. Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay
US11563774B2 (en) 2019-12-27 2023-01-24 Activision Publishing, Inc. Systems and methods for tracking and identifying phishing website authors
US11524234B2 (en) 2020-08-18 2022-12-13 Activision Publishing, Inc. Multiplayer video games with virtual characters having dynamically modified fields of view
US11351459B2 (en) 2020-08-18 2022-06-07 Activision Publishing, Inc. Multiplayer video games with virtual characters having dynamically generated attribute profiles unconstrained by predefined discrete values
US11717753B2 (en) 2020-09-29 2023-08-08 Activision Publishing, Inc. Methods and systems for generating modified level of detail visual assets in a video game
US11833423B2 (en) 2020-09-29 2023-12-05 Activision Publishing, Inc. Methods and systems for generating level of detail visual assets in a video game
US11724188B2 (en) 2020-09-29 2023-08-15 Activision Publishing, Inc. Methods and systems for selecting a level of detail visual asset during the execution of a video game
US11794104B2 (en) 2020-11-11 2023-10-24 Activision Publishing, Inc. Systems and methods for pivoting player-controlled avatars in video games
US11439904B2 (en) 2020-11-11 2022-09-13 Activision Publishing, Inc. Systems and methods for imparting dynamic and realistic movement to player-controlled avatars in video games
US11853439B2 (en) 2020-12-30 2023-12-26 Activision Publishing, Inc. Distributed data storage system providing enhanced security
US11794107B2 (en) 2020-12-30 2023-10-24 Activision Publishing, Inc. Systems and methods for improved collision detection in video games

Also Published As

Publication number Publication date
EP0717337B1 (en) 2001-08-01
EP0717337A1 (en) 1996-06-19
DE69521977T2 (en) 2002-04-04
JP3579154B2 (en) 2004-10-20
US5745678A (en) 1998-04-28
JPH08221268A (en) 1996-08-30
DE69521977D1 (en) 2001-09-06

Similar Documents

Publication Publication Date Title
USRE38375E1 (en) Method and system for the secured distribution of multimedia titles
US5995625A (en) Electronic cryptographic packing
US6343280B2 (en) Distributed execution software license server
US5907617A (en) Try before you buy software distribution and marketing system
US5870543A (en) System for preventing unauthorized copying of active software
US7564969B2 (en) Methodology, system and computer readable medium for detecting file encryption
RU2351978C2 (en) Method for provision of data records set integrity
CA3087297A1 (en) Blockchain-based data verification method and apparatus, and electronic device
CN111914303B (en) Security measurement and security verification method for Linux system running state
US20020099733A1 (en) Method and apparatus for attaching electronic signature to document having structure
CN109615376B (en) Transaction method and device based on zero-knowledge proof
JP2002118551A (en) Authentication method
AU2004200683B2 (en) System for binding secrets to a computer system having tolerance for hardware changes
US9104845B2 (en) Digital content management system, verification device, programs thereof, and data processing method
CN111859431A (en) Electronic file signature method and device, electronic equipment and storage medium
CN100394385C (en) System and method for confirming dynamic attachable executable mirror dependability
JP2997483B2 (en) Verification data generator
US20030046537A1 (en) Method and system for authorization control of displayed content
US6976076B2 (en) Architecture for the graphical management and analysis of authentication tokens
CN104751042A (en) Credibility detection method based on password hash and biometric feature recognition
EP4280535A1 (en) Control method, information processing system, information processing device, and control program
KR102613911B1 (en) Electronic terminal apparatus capable of preventing access to url addresses of harmful sites inserted as hyperlinks in document files and operating method thereof
CN110601846B (en) System and method for verifying virtual trusted root
CN115296821B (en) Data processing system for digital collection management
CN106973044B (en) Method for identifying data owner in big data transaction

Legal Events

Date Code Title Description
FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 8

FPAY Fee payment

Year of fee payment: 12

AS Assignment

Owner name: ACTIVISION PUBLISHING, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:INTERNATIONAL BUSINESS MACHINES CORPORATION;REEL/FRAME:029900/0285

Effective date: 20121231

AS Assignment

Owner name: BANK OF AMERICA, N.A., TEXAS

Free format text: SECURITY AGREEMENT;ASSIGNOR:ACTIVISION PUBLISHING, INC.;REEL/FRAME:032240/0257

Effective date: 20140131

AS Assignment

Owner name: ACTIVISION ENTERTAINMENT HOLDINGS, INC., CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:BANK OF AMERICA, N.A.;REEL/FRAME:040381/0487

Effective date: 20161014

Owner name: ACTIVISION PUBLISHING, INC., CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:BANK OF AMERICA, N.A.;REEL/FRAME:040381/0487

Effective date: 20161014

Owner name: ACTIVISION ENTERTAINMENT HOLDINGS, INC., CALIFORNI

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:BANK OF AMERICA, N.A.;REEL/FRAME:040381/0487

Effective date: 20161014

Owner name: ACTIVISION BLIZZARD INC., CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:BANK OF AMERICA, N.A.;REEL/FRAME:040381/0487

Effective date: 20161014

Owner name: BLIZZARD ENTERTAINMENT, INC., CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:BANK OF AMERICA, N.A.;REEL/FRAME:040381/0487

Effective date: 20161014