US20100323790A1 - Devices and Methods for Auditing and Enforcing Computer Game Licenses - Google Patents
Devices and Methods for Auditing and Enforcing Computer Game Licenses Download PDFInfo
- Publication number
- US20100323790A1 US20100323790A1 US12/784,364 US78436410A US2010323790A1 US 20100323790 A1 US20100323790 A1 US 20100323790A1 US 78436410 A US78436410 A US 78436410A US 2010323790 A1 US2010323790 A1 US 2010323790A1
- Authority
- US
- United States
- Prior art keywords
- game
- identifier
- user
- database
- identifiers
- 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.)
- Abandoned
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 230000004044 response Effects 0.000 claims abstract description 49
- 238000012544 monitoring process Methods 0.000 claims abstract description 18
- 238000012550 audit Methods 0.000 claims description 33
- 238000009826 distribution Methods 0.000 claims description 7
- 230000002427 irreversible effect Effects 0.000 claims description 6
- 230000009466 transformation Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 19
- 238000004891 communication Methods 0.000 description 11
- 238000007726 management method Methods 0.000 description 8
- 238000013459 approach Methods 0.000 description 7
- 235000000332 black box Nutrition 0.000 description 7
- 244000085682 black box Species 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 238000005070 sampling Methods 0.000 description 5
- 230000015556 catabolic process Effects 0.000 description 4
- 238000006731 degradation reaction Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 229920001296 polysiloxane Polymers 0.000 description 4
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 3
- 229910052799 carbon Inorganic materials 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010172 mouse model Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/123—Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/73—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2109—Game systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2111—Location-sensitive, e.g. geographical location, GPS
Definitions
- the present invention is directed toward systems for enforcing computer game licenses, and more particularly, to a system that communicates or interfaces with a user's device to measure the device hardware configuration and thereby generate a device identifier for monitoring games on the device.
- the apparatus may include: a transceiver component for communicating with a computing device of a user; at least one processor operatively coupled with the transceiver component; and a memory component operatively coupled with the at least one processor and including executable code for the at least one processor.
- the at least one processor in response to the user attempting to play the game on the device, may receive from the device a combination of (a) a game identifier for the game and (b) a device identifier for the device, the device identifier being based on a combination of at least one user-configurable parameter and at least one non-user-configurable parameter of the device.
- the at least one processor may access a database of known game identifiers, each known game identifier being associated with (a) a device count corresponding to a total number of known devices on which a known game was previously played and (b) the known device identifiers for the known devices.
- the at least one processor may update the database in response to the combination of the game identifier and the device identifier being unique from known combinations of the known game identifiers and the known device identifiers.
- the at least one processor may use the database to monitor the distribution and/or use of the game.
- the device count may be capped at a maximum device count to curb sharing of the game, such that the at least one processor, in response to the device count having reached the maximum device count, instructs the device to disallow the user from playing the game on the device.
- the at least one processor in response to the device count being reset, may instruct the device to allow the user to play the game on the device.
- the at least one processor may reset the device count in response to receiving a device count reset request from a retailer.
- the at least one processor may bill the retailer for the resetting of the device count.
- the user may be a customer who purchases the game from a retailer.
- the user may be a borrower or casual pirate who borrows the game from a customer who purchases the game from a retailer
- the at least one processor in response to the borrower making a payment for a device count reset request, may credit a share of the payment to the retailer and/or the customer. In another example, in response to the borrower and/or the customer making a payment for a device count reset request, the at least one processor may credit a share of the payment to the retailer.
- the at least one processor may: add the game identifier to the database; associate the device identifier with the game identifier in the database; and create a corresponding device count for the game.
- the at least one processor may: (1) in response to the device identifier not matching any known device identifiers associated with the given known game identifier, (a) associate the device identifier with the given known game identifier and (b) increment a given device count for the given known game identifier by one; and (2) in response to the device identifier matching a given known device identifier already associated with the given known game identifier, audit information in the database may be updated. In one approach, the audit information may be updated whenever a game identifier and/or device identifier are crosschecked against known identifiers in the database.
- the apparatus may include: a transceiver component for communicating with a license authority (e.g., a server); at least one processor operatively coupled with the transceiver component; and a memory component operatively coupled with the at least one processor and including executable code for the at least one processor.
- a license authority e.g., a server
- processor operatively coupled with the transceiver component
- memory component operatively coupled with the at least one processor and including executable code for the at least one processor.
- the at least one processor may collect machine parameters of a computing device, wherein the machine parameters include a combination of at least one user-configurable parameter and at least one non-user-configurable parameter of the device.
- the at least one processor may generate a device identifier for the device based at least in part on the machine parameters.
- the at least one processor in response to a user attempting to play the game on the device, may instruct the transceiver to send a game identifier (e.g., game serial number, Stock Keeping Unit (SKU) number, or the like) for the game and the device identifier to the license authority.
- a game identifier e.g., game serial number, Stock Keeping Unit (SKU) number, or the like
- the transceiver may receive one of an allow instruction and a disallow instruction from the license authority based on a device count associated with the game identifier.
- the device count may correspond to a total number of known devices on which the game was previously played.
- the allow instruction, command, or signal from a license authority may allow the user to play the game on the device, whereas the disallow instruction may prevent the user from playing the game on the device.
- the memory component may include executable code for the at least one processor to associate the game identifier with the device identifier to generate an audit number, and the transceiver may send the audit number to the license authority.
- the at least one processor may associate the software identifier with the device identifier by concatenating the software identifier with the device identifier.
- the at least one processor may determine a geo-location code (e.g., Internet Protocol (IP) address, GPS data, cell site triangulation data, or the like, or combinations thereof) for the device, and may associate the geo-location code with at least one of the software identifier and the device identifier to generate the audit number.
- IP Internet Protocol
- the at least one processor may generate the device identifier by implementing at least one irreversible transformation (e.g., cryptographic hash function) such that the machine parameters cannot be derived from the device identifier.
- at least one irreversible transformation e.g., cryptographic hash function
- the one or more embodiments comprise the features hereinafter fully described and particularly pointed out in the claims.
- the following description and the annexed drawings set forth in detail certain illustrative aspects of the one or more embodiments. These aspects are indicative, however, of but a few of the various ways in which the principles of various embodiments may be employed and the described embodiments are intended to include all such aspects and their equivalents.
- FIG. 1 provides a block diagram of an exemplary system for auditing distributed software.
- FIG. 2 provides a block diagram of another exemplary system for auditing distributed software, wherein the system includes an authentication server.
- FIG. 3 illustrates the components of an exemplary device identifier.
- FIG. 4A illustrates one embodiment an apparatus for monitoring use of a computer game.
- FIGS. 4B-C illustrate sample aspects of the apparatus shown in FIG. 4A .
- FIG. 5A illustrates another embodiment an apparatus for monitoring use of a computer game.
- FIG. 5B illustrates sample aspects of the apparatus shown in FIG. 5A .
- FIG. 6A-C show one embodiment of a method for monitoring use of a computer game.
- FIG. 7 shows another embodiment for a method for monitoring use of a computer game.
- the present invention addresses the need for an auditing/enforcement service that provides reliable computer/video game license authentication and provides game owners, publishers, and/or license authorities with a measure of how many copies of their game are legitimate and/or unauthorized under the game licenses.
- Such an auditing service may be used alone, or in conjunction with other security/authentication measures.
- the present technology provides for an improved system and method for auditing distributed games.
- a system and method for authenticating game licenses With reference to FIG. 1 , there is provided an embodiment of a system having a plurality of computing/network devices 110 that are in operative communication with an auditing server 112 . While only one computing device 110 is illustrated in FIGS. 1-2 , it will be understood that a given system may comprise any number of computing devices.
- the computing device 110 may be, but is not limited to, a game console, a personal computer, a server computer, a laptop computer, a tablet computer, a personal digital assistant, a mobile phone, a wireless communication device, an onboard vehicle computer, or any other device capable of communication with a computer network.
- the computing device 110 may comprise a software 120 that requires a license to be authorized for use.
- the device 110 may also comprise an auditing tool or application 122 .
- the auditing application 122 may be any program or application that collects identifying information regarding the computing device 110 and/or any software (e.g., software 120 ) on the computing device 110 .
- the auditing application 122 may comprise a stand alone application or an applet running within a web browser on the device 110 (e.g., an applet comprising executable code for a Java Virtual Machine).
- the auditing application 122 may be embedded in or associated with another software application, including but not limited to software 120 .
- the auditing application 122 may be embedded in or associated with a tool bar of a software application, such as, for example, a web browser.
- the auditing application 122 may prompt the user to register with an online software registration service, or may run in the background with little or no interaction with the user of device 110 .
- the auditing application 122 may include a registration routine that collects information regarding computing device 110 by checking a number of parameters which are expected to be unique to the computing device environment.
- a parameter so selected may be a user-configurable parameter or a non-user-configurable parameter. Examples of user-configurable parameters may include hard disk volume name, user name, device name, user password, hard disk initialization date, or any other computer readable data stored in memory of the computing device that is created, selected, or determined by the end user.
- a parameter so selected may also be a non-user-configurable parameter, for example, read-only data stored on hardware resident in or peripheral to the computing device.
- non-user-configurable parameters may include information that identifies the hardware comprising the platform on which the web browser runs, such as, for example, CPU number, or unique parameters associated with the firmware in use.
- Non-user-configurable parameters may further include system configuration information, such as amount of memory, type of processor, software or operating system serial number, etc.
- the parameters checked may include virtual machine specifications. Examples of virtual machine specifications may include, but are not limited to, information relating to virtual processors, virtual BIOS, virtual memory, virtual graphics, virtual IDE drives, virtual SCSI devices, virtual PCI slots, virtual floppy drives, virtual serial (COM) ports, virtual parallel (LPT) ports, virtual keyboard, virtual mouse and drawing tablets, virtual Ethernet card, virtual networking, virtual sound adapter, etc.
- the auditing application 122 may generate a device identifier 124 that is unique for the user computer 110 .
- the application 122 may gather and send the device parameters to a remote server, such as auditing server 112 , which in turn generates the device identifier 124 .
- the device identifier 124 may be stored in a hidden directory of the device 110 and/or at a remote location, such as the auditing server 112 .
- the device identifier 124 may incorporate the device's IP address and/or other geo-location code (e.g., GPS data, cell site triangulation data, or the like, or combinations thereof) to add another layer of specificity to device's unique identifier.
- an application e.g., auditing application 122
- an application running on the computing device or otherwise having access to the computing device's hardware and file system may generate a unique device identifier (e.g., device identifier 124 ) using a process that operates on data indicative of the computing device's configuration and hardware.
- the device identifier may be generated using a combination of user-configurable and non-user-configurable machine parameters as input to a process that results in the device identifier, which may be expressed in digital data as a binary number.
- Each machine parameter is data determined by a hardware component, software component, or data component specific to the device that the unique identifier pertains to.
- Machine parameters may be selected based on the target device system configuration such that the resulting device identifier has a very high probability (e.g., greater than 99.999%) of being unique to the target device.
- the machine parameters may be selected such that the device identifier includes at least a stable unique portion up to and including the entire identifier, that has a very high probability of remaining unchanged during normal operation of the target device.
- the resulting device identifier should be highly specific, unique, reproducible and stable as a result of properly selecting the machine parameters.
- the application for generating the device identifier may also operate on the collected parameters with one or more algorithms to generate the device identifier.
- This process may include at least one irreversible transformation, such as, for example, a cryptographic hash function, such that the input machine parameters cannot be derived from the resulting device identifier.
- Each device identifier to a very high degree of certainty, cannot be generated except by the suitably configured application operating or otherwise having had access to the same field security device for which the device identifier was first generated.
- each identifier again to a very high degree of certainty, can be successfully reproduced by the suitably configured application operating or otherwise having access to the same field security device on which the identifier was first generated.
- the application may operate by performing a system scan to determine a present configuration of the field security device. The application may then select the machine parameters to be used as input for generating the unique device identifier. Selection of parameters may vary depending on the system configuration. Once the parameters are selected, the application may generate the identifier.
- generating the device identifier may also be described as generating a device fingerprint and may entail the sampling of physical, non-user configurable properties as well as a variety of additional parameters such as uniquely generated hashes and time sensitive values.
- Physical device parameters available for sampling may include, for example, unique manufacturer characteristics, carbon and silicone degradation and small device failures.
- the process of measuring carbon and silicone degradation may be accomplished by measuring a chip's ability to process complex mathematical computations, and its ability to respond to intensive time variable computations. These processes measure how fast electricity travels through the carbon. Using variable offsets to compensate for factors such as heat and additional stresses placed on a chip during the sampling process allows for each and every benchmark to reproduce the expected values. During a standard operating lifetime, the process of passing electricity through the various switches causes a computer chip to degrade. These degradations manifest as gradually slower speeds that extend the processing time required to compute various benchmarking algorithms.
- the process for generating a device identifier may include measuring physical, non-user-configurable characteristics of disk drives and solid state memory devices.
- Each data storage device has a large variety of damage and unusable data sectors that are nearly unique to each physical unit. The ability to measure and compare values for damaged sectors and data storage failures provides a method for identifying storage devices.
- Device parameter sampling, damage measurement and chip benchmarking make up just a part of device fingerprinting technologies described herein. These tools may be further extended by the use of complex encryption algorithms to convolute the device identifier values during transmission and comparisons. Such encryption processes may be used in conjunction with random sampling and key generations.
- the device identifier may be generated by utilizing machine parameters associated with one or more of the following: machine model; machine serial number; machine copyright; machine ROM version; machine bus speed; machine details; machine manufacturer; machine ROM release date; machine ROM size; machine UUID; and machine service tag.
- the device identifier may also be generated by utilizing machine parameters associated with one or more of the following: CPU ID; CPU model; CPU details; CPU actual speed; CPU family; CPU manufacturer; CPU voltage; and CPU external clock.
- the device identifier may also be generated by utilizing machine parameters associated with one or more of the following: memory model; memory slots; memory total; and memory details.
- the device identifier may also be generated by utilizing machine parameters associated with one or more of the following: video model; video details; display model; display details; audio model; and audio details.
- the device identifier may also be generated by utilizing machine parameters associated with one or more of the following: network model; network address; Bluetooth address; BlackBox model; BlackBox serial; BlackBox details; BlackBox damage map; BlackBox volume name; NetStore details; and NetStore volume name.
- the device identifier may also be generated by utilizing machine parameters associated with one or more of the following: optical model; optical serial; optical details; keyboard model; keyboard details; mouse model; mouse details; printer details; and scanner details.
- the device identifier may also be generated by utilizing machine parameters associated with one or more of the following: baseboard manufacturer; baseboard product name; baseboard version; baseboard serial number; and baseboard asset tag.
- the device identifier may also be generated by utilizing machine parameters associated with one or more of the following: chassis manufacturer; chassis type; chassis version; and chassis serial number.
- the device identifier may also be generated by utilizing machine parameters associated with one or more of the following: IDE controller; SATA controller; RAID controller; and SCSI controller.
- the device identifier may also be generated by utilizing machine parameters associated with one or more of the following: port connector designator; port connector type; port connector port type; and system slot type.
- the device identifier may also be generated by utilizing machine parameters associated with one or more of the following: cache level; cache size; cache max size; cache SRAM type; and cache error correction type.
- the device identifier may also be generated by utilizing machine parameters associated with one or more of the following: fan; PCMCIA; modem; portable battery; tape drive; USB controller; and USB hub.
- the device identifier may also be generated by utilizing machine parameters associated with one or more of the following: device model; device model IMEI; device model IMSI; and device model LCD.
- the device identifier may also be generated by utilizing machine parameters associated with one or more of the following: wireless 802.11; webcam; game controller; silicone serial; and PCI controller.
- the device identifier may also be generated by utilizing machine parameters associated with one or more of the following: machine model, processor model, processor details, processor speed, memory model, memory total, network model of each Ethernet interface, network MAC address of each Ethernet interface, BlackBox Model, BlackBox Serial (e.g., using Dallas Silicone Serial DS-2401 chipset or the like), OS install date, nonce value, and nonce time of day.
- the device identifier 124 may include two components—namely, a variable key portion 126 and a system key portion 128 .
- the variable key portion 126 may be generated at the time of registration of computing device 110 by reference to a variable platform parameter, such as via reference to system time information, although other parameters which are variable may be utilized in other embodiments.
- the system key portion 128 may include the above described parameters expected to be unique to the device 110 , such as, for example, hard disk volume name, user name, computer name, user password, hard disc initialization date, or combinations thereof. Portions 126 and/or 128 may be combined with the IP address and/or other platform parameters of the device 110 .
- device identifiers 124 such as machine fingerprints and parameters expected to be unique for the a given computer, can be found in U.S. application Ser. No. 08/124,718, filed Sep. 21, 1993, titled “System for Software Registration,” now issued as U.S. Pat. No. 5,490,216, which application is specifically incorporated herein, in its entirety, by reference. It is noted that device identifiers, or portions thereof, may be encrypted to add an additional layer of specificity and security.
- the auditing application 122 may also include a registration routine that collects or receives information regarding the software 120 on device 110 by checking information which is expected to be unique to software 120 , such as, for example, the software serial number.
- the collected software identifier may include the software serial number, product identification number, product key, etc.
- the collected software identifier may include information regarding where the software was sold or distributed, who the buyers, sellers, and/or distributors were, which stores the software was sold in, etc.
- the software identifier may be unique to particular copy of software, such as when the software is licensed to a single user In the alternative, or in addition, the software identifier may be unique to particular type or group of a software, such as when the software is licensed to a defined group of users.
- the embodiments described herein comprise an auditing application 122 that collects the software identifier 130 for software 120 ; however, it will be understood that the systems and components described herein can be adapted to collect one or more types of software identifiers for a plurality of software applications.
- the software identifier 130 may be stored in a hidden directory of the device 110 and/or at a remote location, such as the auditing server 112 .
- the software identifier, device identifier, and/or combinations thereof may be hidden in multiple locations on the computing device and may be crosschecked for tampering, corruption, etc.
- the software identifier, device identifier, and/or combinations thereof may be hidden in multiple locations, including one or more remote locations/servers, and may be crosschecked with each other to verify the integrity of the identifiers.
- the auditing application 122 may also include a registration routine that collects or receives information regarding the geo-location code 140 of the device 110 .
- the geo-locator 140 may comprise the IP address, GPS data, cell site triangulation data, or the like for the device 110 .
- Auditing application 122 may electronically send the device identifier 124 and the software identifier 130 to the auditing server 112 .
- a geo-location code 140 may be associated with the device identifier 124 and/or the software identifier 130 and may sent to the auditing server 112 , such as via a secured network connection.
- the auditing server 112 may encrypt and store the data, such as the device identifier 124 , the software identifier 130 , and/or the geo-location code 140 , received from the computing device 110 .
- the auditing server 112 may receive such data from a plurality of computing devices and store the received data in an audit database 114 .
- the auditing application 122 may generate an audit number 142 by associating the software identifier 130 with the device identifier 124 and/or geo-location code 140 , and may send the generated audit number 142 to the auditing server 112 .
- the application 122 may send the device identifier 124 , the software identifier 130 , and/or the geo-location code 140 to the server 112 in a piecemeal manner.
- the server 112 may in turn generate the audit number 142 .
- the auditing server 112 may receive or generate audit numbers from a plurality of computing devices and store the received audit numbers in the audit database 114 .
- the audit number 142 may be generated from the device identifier 124 , the software identifier 130 , and/or the geo-location code 140 via any number of suitable approaches.
- the software identifier 130 may be concatenated or linked with the device identifier 124 and/or geo-location code 140 .
- the audit number 142 may be stored in a hidden directory of the device 110 and/or at a remote location, such as the auditing server 112 .
- the device identifier 124 , the software identifier 130 , and/or the geo-location code 140 may at a later time be extracted from the audit number 142 .
- the auditing application 122 may transmit the software identifier 130 associated with the device identifier 124 and/or the geo-location code 140 (or an audit number 142 generated from such data) to the auditing server 112 , which in turn may store the received data in the audit database 114 .
- an embodiment of a system that further comprises an optional authentication server 116 that is in operative communication with the auditing server 112 .
- the authentication server 116 may access the audit database 114 on auditing server 112 to determine whether to allow his/her of the software 120 .
- the authentication server 116 may receive/access the license terms for a particular software from the auditing server 112 or another server or computing device.
- the authentication server 116 may disallow use of the software 120 beyond a defined maximum number of allowed users or seats (which may be defined by the software license).
- the server 116 may analyze the data in the audit database 114 and determine how many seats are currently utilizing software 120 . If the number of currently allowed seats meets or exceeds the maximum number of allowed seats, the server 116 may throttle or disallow the use of software 120 by more seats; otherwise, the server may allow the use of the software 120 .
- the authentication server 116 may throttle or disallow use of the software 120 if its software identifier is already associated with a different device identifier and/or a different IP address in the audit database 114 ; otherwise, the server 116 may allow use of the software 120 .
- the authentication server 116 may collect data regarding the instances of allowed and disallowed software use, and may share such data with the auditing server 112 .
- the auditing server 112 may be in operative communication with a management device 150 , which may be any device capable of communication with a computer network, such as, for example, a personal computer, a server computer, a laptop computer, a tablet computer, a personal digital assistant, a mobile phone, or a wireless communication device.
- the management device 150 may comprise a management application 152 , which may be any program or application, such as a stand alone application or an application that is embedded or associated with another software application, such as an applet running within a web browser on the device 150 .
- the management application 152 may be adapted to allow a user, such as, for example, a software manufacturer or distributor, to view the data collected and stored in the audit database 114 of the audit server 112 .
- a user such as, for example, a software manufacturer or distributor
- the present embodiment will be described in the context of a software manufacturer utilizing the management application 152 . However, it will be understood that any user of the management device may utilize the management application 152 .
- the management application 152 may present the data in the audit database 114 in a manner that allows its user to better understand how its software is being used, legitimately or otherwise.
- apparatus 400 may be configured as either a computing device, or as a processor or similar device for use within a computing device.
- apparatus 400 may comprise a means 450 for receiving from a device a combination of a device identifier and a game/software identifier.
- the device identifier may be based on a combination of at least one user-configurable parameter and at least one non-user configurable parameter of the device. In this way, the device identifier is unique and no device will share the same identifier.
- the apparatus 400 may comprise a means 460 for accessing a database of known game identifiers, each known game identifier being associated with a device count and one or more device identifiers.
- the device count corresponds to a total number of known devices on which a given game was previously played.
- the database may contain a device count associated to a particular ‘xyz racing game’ indicating how many different machine(s) the ‘xyz racing game’ has been played on.
- the apparatus 400 may comprise a means 470 for updating the database in response to the combination of the game identifier and the device identifier being unique from known combinations of the known game identifiers and the known device identifiers. For example, if the combination of the game identifier and the device identifier indicates that the ‘xyz racing game’ was played on a machine with a device identifier not previously known, then the database is updated to indicate that the ‘xyz racing game’ was played on such machine.
- the apparatus 400 may comprise a means 480 for using the database to monitor at least one of distribution and the use of the game. Once the database is populated, game developers or other interested party such as game retailers, publishers, license authorities may monitor and query the database for various gaming statistics.
- the means 460 for accessing a database of known game identifiers each known game identifier being associated with a device count and one or more device identifiers may comprise a means 462 for capping the device count at a maximum device count to curb sharing of the game.
- the means 460 may further comprise a means 464 for instructing the device to disallow the user from playing the game on the user device when the device count having reached or exceeded the maximum device count.
- the means 460 may comprise a means 466 for instructing the device to allow the user to play the game on the user device in response to the device count being reset.
- the means 460 may comprise a means 468 for resetting the device count in response to receiving a device count reset request from a retailer. This may occur when the user purchase additional licensing rights to a game associated with the game identifier.
- apparatus 400 may comprise a means 490 for billing the retailer for the resetting of the device and a means 492 for crediting a share of payment to the retailer in response to a payment for a device count reset.
- a means 490 for billing the retailer for the resetting of the device for crediting a share of payment to the retailer in response to a payment for a device count reset.
- the payment proceeds can be shared with the retailer involved.
- the proceeds may be shared with the retailer and the customer.
- the user may be the original purchaser of the game or a borrower of the game.
- apparatus 400 may comprise a means 496 for adding the game identifier to the database, associating the device identifier with the game identifier in the database, and creating a corresponding device count for the game in response to the game identifier not matching any of the known game identifiers in the database. That is, if a game identifier does not match with any known game identifiers in the database, then the game identifier is added to the database, and the device identifier is associated with the game identifier in the database.
- Apparatus 400 may comprise a means 498 for associating the device identifier with a given known game identifier and for incrementing a given device count for the given game identifier in response to the device identifier not matching any known device identifiers associated with the given known game identifier and in response to the game identifier matching a known game identifier.
- a game identifier matches with a given known game identifier and when the device identifier does not match with any known device identifiers in the database, the device identifier is associated with the given known game identifier and a given device count for the given known game identifier is incremented by one.
- auditing information in the database may be updated.
- the auditing information may be updated whenever a game identifier and/or device identifier are crosschecked against known identifiers in the database.
- apparatus 400 may optionally include a processor module 430 having at least one processor, in the case of apparatus 400 configured as computing device, rather than as a processor.
- Processor 430 in such case, may be in operative communication with means 450 - 498 , and components thereof, via a bus 410 or similar communication coupling.
- Processor 430 may effect initiation and scheduling of the processes or functions performed by means 450 - 498 , and components thereof.
- apparatus 400 may include a transceiver module 420 for communicating with means 450 - 498 .
- a stand alone receiver and/or stand alone transmitter may be used in lieu of or in conjunction with the transceiver 420 .
- apparatus 400 may optionally include a means for storing information, such as, for example, a memory device/module 440 .
- Computer readable medium or memory device/module 440 may be operatively coupled to the other components of apparatus 400 via bus 410 or the like.
- the computer readable medium or memory device 440 may be adapted to store computer readable instructions and data for effecting the processes and behavior of means 450 - 498 , and components thereof, or processor 430 (in the case of apparatus 400 configured as a computing device) or the methods disclosed herein.
- the memory module 440 may optionally include executable code for the processor module 430 to: (a) in response to the user attempting to play the game on the device, receive from the device a combination of (i) a game identifier for the game and (ii) a device identifier for the device, the device identifier being based on a combination of at least one user-configurable parameter and at least one non-user-configurable parameter of the device; (b) access a database of known game identifiers, each known game identifier being associated with (i) a device count corresponding to a total number of known devices on which a known game was previously played and (ii) the known device identifiers for the known devices; (c) update the database in response to the combination of the game identifier and the device identifier being unique from known combinations of the known game identifiers and the known device identifiers; and (d) use the database to monitor at least one of distribution and the use of the game.
- apparatus 500 may be configured as either computing device, or as a processor or similar device for use within a computing device.
- apparatus 500 may comprise a means 550 for collecting machine parameters of a computing device.
- the machine parameters may comprise a combination of at least one user-configurable parameter and at least one non-user-configurable parameter of the device.
- the apparatus 500 may comprise a means 560 for generating a device identifier for the device based at least in part on the collected machine parameters.
- the apparatus 500 may comprise a means 570 for sending a game identifier for the game and the device identifier to a license authority. This may occur, for example, whenever a user attempts to install the game on the device and/or play the game on the device.
- the means 570 may comprise a means 575 for receiving an allow or disallow instruction from the license authority based on a device count associated with the game identifier.
- the device count may correspond to a total number of known devices on which the game was previously played.
- the allow instruction may allow the user to play the game on the device, and the disallow instruction may prevent the user from playing the game on the device.
- the apparatus 500 may comprise a means 580 for associating the game identifier with the device identifier to generate an audit number and for sending the audit number to the license authority.
- the transmission of the audit number may be accomplished using a transceiver, for example.
- the means 560 may further comprise a means 585 for associating the game identifier with the device identifier by concatenating the game identifier with the device identifier.
- the means 580 may also comprise a means 590 for determining the geo-location code for the device and for associating the geo-location code with at least one of the game identifier and the device identifier to generate the audit number.
- the geo-location code may comprise an internet protocol (IP) address
- the game identifier may comprise a game serial number.
- the apparatus 500 may further comprise a means 595 for generating a device identifier by implementing or executing at least one irreversible transformation such that the machine parameters cannot be derived from the device identifier. Additionally, at least one of the irreversible transformation comprises a cryptographic hash function.
- apparatus 500 may optionally include a processor module 530 having at least one processor, in the case of apparatus 500 configured as computing device, rather than as a processor.
- Processor 530 in such case, may be in operative communication with means 550 - 595 , and components thereof, via a bus 510 or similar communication coupling.
- Processor 530 may effect initiation and scheduling of the processes or functions performed by means 550 - 595 , and components thereof.
- apparatus 500 may include a transceiver module 520 for communicating with means 550 - 595 .
- a stand alone receiver and/or stand alone transmitter may be used in lieu of or in conjunction with the transceiver 520 .
- apparatus 500 may optionally include a means for storing information, such as, for example, a memory device/module 540 .
- Computer readable medium or memory device/module 540 may be operatively coupled to the other components of apparatus 500 via bus 510 or the like.
- the computer readable medium or memory device 540 may be adapted to store computer readable instructions and data for effecting the processes and behavior of means 550 - 595 , and components thereof, or processor 530 (in the case of apparatus 500 configured as a computing device) or the methods disclosed herein.
- the memory module 540 may optionally include executable code for the processor module 530 to: (a) collect machine parameters of a computing device, the machine parameters comprising a combination of at least one user-configurable parameter and at least one non-user-configurable parameter of the device; (b) generate a device identifier for the device based at least in part on the machine parameters; and (c) in response to a user attempting to play the game on the device, instructs the transceiver to send a game identifier for the game and the device identifier to the license authority.
- steps (a)-(c) may be performed by processor module 430 in lieu of or in conjunction with the means 550 - 595 described above.
- an exemplary method 600 for monitoring the use of a computer game may involve steps 610 - 675 .
- steps 610 - 675 a combination of a device identifier and a game identifier may be received from a device.
- a database of known game identifier may be accessed. Each game identifier may be associated with a device count and one or more device identifiers.
- the database may be updated in response to the combination of the game identifier and the device identifier being unique from known combination of the game and device identifiers in the database.
- the database may be used to monitor at least one of distribution and the use of the game.
- the device count may be capped at a maximum device count. In this way, the sharing of the game may be curbed.
- an instruction may be sent to the device to disallow the user from playing the game on the device when the device count has reached or exceeds the maximum device count.
- the device in response to the device count being reset, the device may be instructed to allow the user to play the game on the device.
- the device count may reset whenever the user purchases additional license at a retailer.
- the device count may be reset in response to receiving a device count reset request from the retailer.
- the retailer may be billed for the resetting of the device.
- the retailer may be credited a share of the payment in response to a payment for the device count reset request.
- the game identifier is added to the database, the device identifier may be associated with the game identifier in the database, and a corresponding device count, may be created for the game in response to the game identifier not matching any of the known game identifiers in the database. That is, if a game identifier does not match with any known game identifiers in the database, then the game identifier may be added to the database, and the device identifier may be associated with the game identifier in the database.
- the device identifier may be associated with a given known game identifier, and a given device count is incremented for the given game identifier in response to the device identifier not matching any known device identifiers associated with the given known game identifier and in response to the game identifier matching a known game identifier.
- the device identifier may be associated with the given known game identifier and a given device count for the given known game identifier may be incremented by one.
- audit information in the database may be updated.
- the audit information may be updated whenever a game identifier and/or device identifier are crosschecked against known identifiers in the database.
- an exemplary method 700 for monitoring the use of a computer game may involve the following steps.
- machine parameters of a computing device may be collected.
- the machine parameters may comprise a combination of at least one user-configurable parameter and at least one non-user-configurable parameter of the device.
- a device identifier may be generated for the device based at least in part on the collected machine parameters.
- a game identifier for the game and the device identifier may be transmitted to a license authority. For example, this may occur whenever a user attempts to install the game on the device and/or play the game on the device.
- an allow or disallow instruction may be received from the license authority based on a device count associated with the game identifier. The device count may correspond to a total number of known devices on which the game was previously played. The allow instruction may allow the user to play the game on the device, and the disallow instruction may prevent the user from playing the game on the device.
- the method 700 may further involve receiving one of an allow instruction and a disallow instruction from the license authority based on a device count associated with the game identifier.
- a component can be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer.
- an application running on a computing device and the computing device can be a component.
- One or more components can reside within a process and/or thread of execution and a component can be localized on one computer and/or distributed between two or more computers.
- these components can execute from various computer readable media having various data structures stored thereon.
- the components can communicate by way of local and/or remote processes such as in accordance with a signal having one or more data packets (e.g., data from one component interacting with another component in a local system, distributed system, and/or across a network such as the Internet with other systems by way of the signal).
- a signal having one or more data packets (e.g., data from one component interacting with another component in a local system, distributed system, and/or across a network such as the Internet with other systems by way of the signal).
- various aspects or features described herein can be implemented as a method, apparatus, or article of manufacture using standard programming and/or engineering techniques.
- article of manufacture as used herein is intended to encompass a computer program accessible from any computer-readable device, carrier, or media.
- computer-readable media can include but are not limited to magnetic storage devices (e.g., hard disk, floppy disk, magnetic strips, etc.), optical discs (e.g., compact disc (CD), digital versatile disc (DVD), etc.), smart cards, and flash memory devices (e.g., Erasable Programmable Read Only Memory (EPROM), card, stick, key drive, etc.).
- EPROM Erasable Programmable Read Only Memory
- various storage media described herein can represent one or more devices and/or other machine-readable media for storing information.
- the term “machine-readable medium” can include, without being limited to, wireless channels and various other media capable of storing, containing, and/or carrying instruction(s) and/or data.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Pinball Game Machines (AREA)
Abstract
Techniques are provided for monitoring and controlling use of a computer game on a remote computing device. One such technique employs a processor with memory and transceiver configured to receive from the device, in response to an attempt to play the game on the device, a combination of a game identifier for the game and a device identifier for the device, the device identifier based on a combination of user-configurable parameter and non-user-configurable parameters, and to access a database of known game identifiers, each known game identifier being associated with a device count corresponding to a total number of known devices on which a known game was previously played and with known device identifiers for the known devices, to control remote access to games, for example, according to licensing constraints.
Description
- This application claims priority to U.S. Provisional Application No. 61/218,566 which was filed Jun. 19, 2009 and which is fully incorporated herein by reference.
- 1. Field of the Invention
- The present invention is directed toward systems for enforcing computer game licenses, and more particularly, to a system that communicates or interfaces with a user's device to measure the device hardware configuration and thereby generate a device identifier for monitoring games on the device.
- 2. Description of the Related Art
- Currently, there exist limited ways to audit and enforce computer or video game licenses. At the same time, game/software piracy continues to grow at an alarming rate, particularly in emerging economies. In response, game publishers and licensing authorities have focused primarily on making it more difficult for would-be pirates to install a given game illegally, such as a single copy of the game on multiple machines. Still, software pirates have found ways to bypass such security measures and install unauthorized copies of games on multiple machines. Accordingly, it would be desirable to provide a technique for monitoring which and how many devices a given game has been played/installed on, and for enforcing the terms of a game license based on information regarding which devices the given game has been played on.
- The following presents a simplified summary of one or more embodiments in order to provide a basic understanding of such embodiments. This summary is not an extensive overview of all contemplated embodiments, and is intended to neither identify key or critical elements of all embodiments nor delineate the scope of any or all embodiments. Its sole purpose is to present some concepts of one or more embodiments in a simplified form as a prelude to the more detailed description that is presented later.
- In accordance with one or more embodiments and corresponding disclosure thereof, various aspects are described in connection with an apparatus/device for monitoring use of a computer game (e.g., by a game publisher, license authority, etc.). In one embodiment, the apparatus may include: a transceiver component for communicating with a computing device of a user; at least one processor operatively coupled with the transceiver component; and a memory component operatively coupled with the at least one processor and including executable code for the at least one processor.
- For example, the at least one processor, in response to the user attempting to play the game on the device, may receive from the device a combination of (a) a game identifier for the game and (b) a device identifier for the device, the device identifier being based on a combination of at least one user-configurable parameter and at least one non-user-configurable parameter of the device. The at least one processor may access a database of known game identifiers, each known game identifier being associated with (a) a device count corresponding to a total number of known devices on which a known game was previously played and (b) the known device identifiers for the known devices.
- In related aspects, the at least one processor may update the database in response to the combination of the game identifier and the device identifier being unique from known combinations of the known game identifiers and the known device identifiers. The at least one processor may use the database to monitor the distribution and/or use of the game.
- In further related aspects, the device count may be capped at a maximum device count to curb sharing of the game, such that the at least one processor, in response to the device count having reached the maximum device count, instructs the device to disallow the user from playing the game on the device. The at least one processor, in response to the device count being reset, may instruct the device to allow the user to play the game on the device. The at least one processor may reset the device count in response to receiving a device count reset request from a retailer. The at least one processor may bill the retailer for the resetting of the device count.
- In yet further related aspects, the user may be a customer who purchases the game from a retailer. In the alternative, or in addition, the user may be a borrower or casual pirate who borrows the game from a customer who purchases the game from a retailer
- In still further related aspects, in response to the borrower making a payment for a device count reset request, the at least one processor may credit a share of the payment to the retailer and/or the customer. In another example, in response to the borrower and/or the customer making a payment for a device count reset request, the at least one processor may credit a share of the payment to the retailer.
- In other related aspects, in response to the game identifier not matching any of the known game identifiers in the database, the at least one processor may: add the game identifier to the database; associate the device identifier with the game identifier in the database; and create a corresponding device count for the game.
- In other related aspects, in response to the game identifier matching a given known game identifier, the at least one processor may: (1) in response to the device identifier not matching any known device identifiers associated with the given known game identifier, (a) associate the device identifier with the given known game identifier and (b) increment a given device count for the given known game identifier by one; and (2) in response to the device identifier matching a given known device identifier already associated with the given known game identifier, audit information in the database may be updated. In one approach, the audit information may be updated whenever a game identifier and/or device identifier are crosschecked against known identifiers in the database.
- In accordance with other aspects of the embodiments described herein, there is provided an apparatus for monitoring use of a computer game. In one embodiment, the apparatus may include: a transceiver component for communicating with a license authority (e.g., a server); at least one processor operatively coupled with the transceiver component; and a memory component operatively coupled with the at least one processor and including executable code for the at least one processor.
- For example, the at least one processor may collect machine parameters of a computing device, wherein the machine parameters include a combination of at least one user-configurable parameter and at least one non-user-configurable parameter of the device. The at least one processor may generate a device identifier for the device based at least in part on the machine parameters. The at least one processor, in response to a user attempting to play the game on the device, may instruct the transceiver to send a game identifier (e.g., game serial number, Stock Keeping Unit (SKU) number, or the like) for the game and the device identifier to the license authority.
- In related aspects, the transceiver may receive one of an allow instruction and a disallow instruction from the license authority based on a device count associated with the game identifier. The device count may correspond to a total number of known devices on which the game was previously played. The allow instruction, command, or signal from a license authority may allow the user to play the game on the device, whereas the disallow instruction may prevent the user from playing the game on the device.
- In further related aspects, the memory component may include executable code for the at least one processor to associate the game identifier with the device identifier to generate an audit number, and the transceiver may send the audit number to the license authority. For example, the at least one processor may associate the software identifier with the device identifier by concatenating the software identifier with the device identifier. In another example, the at least one processor may determine a geo-location code (e.g., Internet Protocol (IP) address, GPS data, cell site triangulation data, or the like, or combinations thereof) for the device, and may associate the geo-location code with at least one of the software identifier and the device identifier to generate the audit number.
- In further related aspects, the at least one processor may generate the device identifier by implementing at least one irreversible transformation (e.g., cryptographic hash function) such that the machine parameters cannot be derived from the device identifier.
- To the accomplishment of the foregoing and related ends, the one or more embodiments comprise the features hereinafter fully described and particularly pointed out in the claims. The following description and the annexed drawings set forth in detail certain illustrative aspects of the one or more embodiments. These aspects are indicative, however, of but a few of the various ways in which the principles of various embodiments may be employed and the described embodiments are intended to include all such aspects and their equivalents.
-
FIG. 1 provides a block diagram of an exemplary system for auditing distributed software. -
FIG. 2 provides a block diagram of another exemplary system for auditing distributed software, wherein the system includes an authentication server. -
FIG. 3 illustrates the components of an exemplary device identifier. -
FIG. 4A illustrates one embodiment an apparatus for monitoring use of a computer game. -
FIGS. 4B-C illustrate sample aspects of the apparatus shown inFIG. 4A . -
FIG. 5A illustrates another embodiment an apparatus for monitoring use of a computer game. -
FIG. 5B illustrates sample aspects of the apparatus shown inFIG. 5A . -
FIG. 6A-C show one embodiment of a method for monitoring use of a computer game. -
FIG. 7 shows another embodiment for a method for monitoring use of a computer game. - The present invention addresses the need for an auditing/enforcement service that provides reliable computer/video game license authentication and provides game owners, publishers, and/or license authorities with a measure of how many copies of their game are legitimate and/or unauthorized under the game licenses. Such an auditing service may be used alone, or in conjunction with other security/authentication measures.
- The present technology provides for an improved system and method for auditing distributed games. In accordance with one aspect of the present technology, there is provided a system and method for authenticating game licenses. With reference to
FIG. 1 , there is provided an embodiment of a system having a plurality of computing/network devices 110 that are in operative communication with anauditing server 112. While only onecomputing device 110 is illustrated inFIGS. 1-2 , it will be understood that a given system may comprise any number of computing devices. Thecomputing device 110 may be, but is not limited to, a game console, a personal computer, a server computer, a laptop computer, a tablet computer, a personal digital assistant, a mobile phone, a wireless communication device, an onboard vehicle computer, or any other device capable of communication with a computer network. - The
computing device 110 may comprise asoftware 120 that requires a license to be authorized for use. Thedevice 110 may also comprise an auditing tool orapplication 122. Theauditing application 122 may be any program or application that collects identifying information regarding thecomputing device 110 and/or any software (e.g., software 120) on thecomputing device 110. Theauditing application 122 may comprise a stand alone application or an applet running within a web browser on the device 110 (e.g., an applet comprising executable code for a Java Virtual Machine). Theauditing application 122 may be embedded in or associated with another software application, including but not limited tosoftware 120. For example, theauditing application 122 may be embedded in or associated with a tool bar of a software application, such as, for example, a web browser. Theauditing application 122 may prompt the user to register with an online software registration service, or may run in the background with little or no interaction with the user ofdevice 110. - The
auditing application 122 may include a registration routine that collects information regardingcomputing device 110 by checking a number of parameters which are expected to be unique to the computing device environment. A parameter so selected may be a user-configurable parameter or a non-user-configurable parameter. Examples of user-configurable parameters may include hard disk volume name, user name, device name, user password, hard disk initialization date, or any other computer readable data stored in memory of the computing device that is created, selected, or determined by the end user. A parameter so selected may also be a non-user-configurable parameter, for example, read-only data stored on hardware resident in or peripheral to the computing device. Examples of non-user-configurable parameters may include information that identifies the hardware comprising the platform on which the web browser runs, such as, for example, CPU number, or unique parameters associated with the firmware in use. Non-user-configurable parameters may further include system configuration information, such as amount of memory, type of processor, software or operating system serial number, etc. In the alternative, or in addition, the parameters checked may include virtual machine specifications. Examples of virtual machine specifications may include, but are not limited to, information relating to virtual processors, virtual BIOS, virtual memory, virtual graphics, virtual IDE drives, virtual SCSI devices, virtual PCI slots, virtual floppy drives, virtual serial (COM) ports, virtual parallel (LPT) ports, virtual keyboard, virtual mouse and drawing tablets, virtual Ethernet card, virtual networking, virtual sound adapter, etc. - Based on the collected information, the
auditing application 122 may generate adevice identifier 124 that is unique for theuser computer 110. In the alternative, or in addition, theapplication 122 may gather and send the device parameters to a remote server, such asauditing server 112, which in turn generates thedevice identifier 124. Thedevice identifier 124 may be stored in a hidden directory of thedevice 110 and/or at a remote location, such as theauditing server 112. Thedevice identifier 124 may incorporate the device's IP address and/or other geo-location code (e.g., GPS data, cell site triangulation data, or the like, or combinations thereof) to add another layer of specificity to device's unique identifier. - It is noted that an application (e.g., auditing application 122) running on the computing device or otherwise having access to the computing device's hardware and file system may generate a unique device identifier (e.g., device identifier 124) using a process that operates on data indicative of the computing device's configuration and hardware. The device identifier may be generated using a combination of user-configurable and non-user-configurable machine parameters as input to a process that results in the device identifier, which may be expressed in digital data as a binary number. Each machine parameter is data determined by a hardware component, software component, or data component specific to the device that the unique identifier pertains to. Machine parameters may be selected based on the target device system configuration such that the resulting device identifier has a very high probability (e.g., greater than 99.999%) of being unique to the target device. In addition, the machine parameters may be selected such that the device identifier includes at least a stable unique portion up to and including the entire identifier, that has a very high probability of remaining unchanged during normal operation of the target device. Thus, the resulting device identifier should be highly specific, unique, reproducible and stable as a result of properly selecting the machine parameters.
- The application for generating the device identifier may also operate on the collected parameters with one or more algorithms to generate the device identifier. This process may include at least one irreversible transformation, such as, for example, a cryptographic hash function, such that the input machine parameters cannot be derived from the resulting device identifier. Each device identifier, to a very high degree of certainty, cannot be generated except by the suitably configured application operating or otherwise having had access to the same field security device for which the device identifier was first generated. Conversely, each identifier, again to a very high degree of certainty, can be successfully reproduced by the suitably configured application operating or otherwise having access to the same field security device on which the identifier was first generated.
- The application may operate by performing a system scan to determine a present configuration of the field security device. The application may then select the machine parameters to be used as input for generating the unique device identifier. Selection of parameters may vary depending on the system configuration. Once the parameters are selected, the application may generate the identifier.
- Further, generating the device identifier may also be described as generating a device fingerprint and may entail the sampling of physical, non-user configurable properties as well as a variety of additional parameters such as uniquely generated hashes and time sensitive values. Physical device parameters available for sampling may include, for example, unique manufacturer characteristics, carbon and silicone degradation and small device failures.
- The process of measuring carbon and silicone degradation may be accomplished by measuring a chip's ability to process complex mathematical computations, and its ability to respond to intensive time variable computations. These processes measure how fast electricity travels through the carbon. Using variable offsets to compensate for factors such as heat and additional stresses placed on a chip during the sampling process allows for each and every benchmark to reproduce the expected values. During a standard operating lifetime, the process of passing electricity through the various switches causes a computer chip to degrade. These degradations manifest as gradually slower speeds that extend the processing time required to compute various benchmarking algorithms.
- In addition to the chip benchmarking and degradation measurements, the process for generating a device identifier may include measuring physical, non-user-configurable characteristics of disk drives and solid state memory devices. Each data storage device has a large variety of damage and unusable data sectors that are nearly unique to each physical unit. The ability to measure and compare values for damaged sectors and data storage failures provides a method for identifying storage devices.
- Device parameter sampling, damage measurement and chip benchmarking make up just a part of device fingerprinting technologies described herein. These tools may be further extended by the use of complex encryption algorithms to convolute the device identifier values during transmission and comparisons. Such encryption processes may be used in conjunction with random sampling and key generations.
- The device identifier may be generated by utilizing machine parameters associated with one or more of the following: machine model; machine serial number; machine copyright; machine ROM version; machine bus speed; machine details; machine manufacturer; machine ROM release date; machine ROM size; machine UUID; and machine service tag.
- The device identifier may also be generated by utilizing machine parameters associated with one or more of the following: CPU ID; CPU model; CPU details; CPU actual speed; CPU family; CPU manufacturer; CPU voltage; and CPU external clock.
- The device identifier may also be generated by utilizing machine parameters associated with one or more of the following: memory model; memory slots; memory total; and memory details.
- The device identifier may also be generated by utilizing machine parameters associated with one or more of the following: video model; video details; display model; display details; audio model; and audio details.
- The device identifier may also be generated by utilizing machine parameters associated with one or more of the following: network model; network address; Bluetooth address; BlackBox model; BlackBox serial; BlackBox details; BlackBox damage map; BlackBox volume name; NetStore details; and NetStore volume name.
- The device identifier may also be generated by utilizing machine parameters associated with one or more of the following: optical model; optical serial; optical details; keyboard model; keyboard details; mouse model; mouse details; printer details; and scanner details.
- The device identifier may also be generated by utilizing machine parameters associated with one or more of the following: baseboard manufacturer; baseboard product name; baseboard version; baseboard serial number; and baseboard asset tag.
- The device identifier may also be generated by utilizing machine parameters associated with one or more of the following: chassis manufacturer; chassis type; chassis version; and chassis serial number.
- The device identifier may also be generated by utilizing machine parameters associated with one or more of the following: IDE controller; SATA controller; RAID controller; and SCSI controller.
- The device identifier may also be generated by utilizing machine parameters associated with one or more of the following: port connector designator; port connector type; port connector port type; and system slot type.
- The device identifier may also be generated by utilizing machine parameters associated with one or more of the following: cache level; cache size; cache max size; cache SRAM type; and cache error correction type.
- The device identifier may also be generated by utilizing machine parameters associated with one or more of the following: fan; PCMCIA; modem; portable battery; tape drive; USB controller; and USB hub.
- The device identifier may also be generated by utilizing machine parameters associated with one or more of the following: device model; device model IMEI; device model IMSI; and device model LCD.
- The device identifier may also be generated by utilizing machine parameters associated with one or more of the following: wireless 802.11; webcam; game controller; silicone serial; and PCI controller.
- In one example, the device identifier may also be generated by utilizing machine parameters associated with one or more of the following: machine model, processor model, processor details, processor speed, memory model, memory total, network model of each Ethernet interface, network MAC address of each Ethernet interface, BlackBox Model, BlackBox Serial (e.g., using Dallas Silicone Serial DS-2401 chipset or the like), OS install date, nonce value, and nonce time of day.
- With reference to
FIG. 3 , in one embodiment, thedevice identifier 124 may include two components—namely, a variablekey portion 126 and a systemkey portion 128. The variablekey portion 126 may be generated at the time of registration ofcomputing device 110 by reference to a variable platform parameter, such as via reference to system time information, although other parameters which are variable may be utilized in other embodiments. The systemkey portion 128 may include the above described parameters expected to be unique to thedevice 110, such as, for example, hard disk volume name, user name, computer name, user password, hard disc initialization date, or combinations thereof.Portions 126 and/or 128 may be combined with the IP address and/or other platform parameters of thedevice 110. Further details regardingdevice identifiers 124, such as machine fingerprints and parameters expected to be unique for the a given computer, can be found in U.S. application Ser. No. 08/124,718, filed Sep. 21, 1993, titled “System for Software Registration,” now issued as U.S. Pat. No. 5,490,216, which application is specifically incorporated herein, in its entirety, by reference. It is noted that device identifiers, or portions thereof, may be encrypted to add an additional layer of specificity and security. - With reference once again to
FIG. 1 , theauditing application 122 may also include a registration routine that collects or receives information regarding thesoftware 120 ondevice 110 by checking information which is expected to be unique tosoftware 120, such as, for example, the software serial number. The collected software identifier may include the software serial number, product identification number, product key, etc. The collected software identifier may include information regarding where the software was sold or distributed, who the buyers, sellers, and/or distributors were, which stores the software was sold in, etc. It is noted that the software identifier may be unique to particular copy of software, such as when the software is licensed to a single user In the alternative, or in addition, the software identifier may be unique to particular type or group of a software, such as when the software is licensed to a defined group of users. - The embodiments described herein comprise an
auditing application 122 that collects the software identifier 130 forsoftware 120; however, it will be understood that the systems and components described herein can be adapted to collect one or more types of software identifiers for a plurality of software applications. The software identifier 130 may be stored in a hidden directory of thedevice 110 and/or at a remote location, such as theauditing server 112. For example, in one approach, the software identifier, device identifier, and/or combinations thereof may be hidden in multiple locations on the computing device and may be crosschecked for tampering, corruption, etc. In another approach, the software identifier, device identifier, and/or combinations thereof may be hidden in multiple locations, including one or more remote locations/servers, and may be crosschecked with each other to verify the integrity of the identifiers. - The
auditing application 122 may also include a registration routine that collects or receives information regarding the geo-location code 140 of thedevice 110. The geo-locator 140 may comprise the IP address, GPS data, cell site triangulation data, or the like for thedevice 110. -
Auditing application 122 may electronically send thedevice identifier 124 and the software identifier 130 to theauditing server 112. In the alternative, or in addition, a geo-location code 140 may be associated with thedevice identifier 124 and/or the software identifier 130 and may sent to theauditing server 112, such as via a secured network connection. Theauditing server 112 may encrypt and store the data, such as thedevice identifier 124, the software identifier 130, and/or the geo-location code 140, received from thecomputing device 110. Theauditing server 112 may receive such data from a plurality of computing devices and store the received data in anaudit database 114. - In one embodiment, the
auditing application 122 may generate an audit number 142 by associating the software identifier 130 with thedevice identifier 124 and/or geo-location code 140, and may send the generated audit number 142 to theauditing server 112. In another embodiment, theapplication 122 may send thedevice identifier 124, the software identifier 130, and/or the geo-location code 140 to theserver 112 in a piecemeal manner. Theserver 112 may in turn generate the audit number 142. Theauditing server 112 may receive or generate audit numbers from a plurality of computing devices and store the received audit numbers in theaudit database 114. - It is noted that the audit number 142 may be generated from the
device identifier 124, the software identifier 130, and/or the geo-location code 140 via any number of suitable approaches. For example, the software identifier 130 may be concatenated or linked with thedevice identifier 124 and/or geo-location code 140. It is also noted that the audit number 142 may be stored in a hidden directory of thedevice 110 and/or at a remote location, such as theauditing server 112. It is further noted that thedevice identifier 124, the software identifier 130, and/or the geo-location code 140 may at a later time be extracted from the audit number 142. - When a user of a computing device, including but not limited to
computing device 110, installed withauditing application 122, attempts to run thesoftware 120, theauditing application 122 in response may transmit the software identifier 130 associated with thedevice identifier 124 and/or the geo-location code 140 (or an audit number 142 generated from such data) to theauditing server 112, which in turn may store the received data in theaudit database 114. - With reference to
FIG. 2 , there is provided an embodiment of a system that further comprises anoptional authentication server 116 that is in operative communication with theauditing server 112. When a given user tries to runsoftware 120 on his/her computing device, theauthentication server 116 may access theaudit database 114 onauditing server 112 to determine whether to allow his/her of thesoftware 120. Theauthentication server 116 may receive/access the license terms for a particular software from theauditing server 112 or another server or computing device. - In one embodiment, the
authentication server 116 may disallow use of thesoftware 120 beyond a defined maximum number of allowed users or seats (which may be defined by the software license). Theserver 116 may analyze the data in theaudit database 114 and determine how many seats are currently utilizingsoftware 120. If the number of currently allowed seats meets or exceeds the maximum number of allowed seats, theserver 116 may throttle or disallow the use ofsoftware 120 by more seats; otherwise, the server may allow the use of thesoftware 120. In another embodiment, theauthentication server 116 may throttle or disallow use of thesoftware 120 if its software identifier is already associated with a different device identifier and/or a different IP address in theaudit database 114; otherwise, theserver 116 may allow use of thesoftware 120. Theauthentication server 116 may collect data regarding the instances of allowed and disallowed software use, and may share such data with theauditing server 112. - With reference to the embodiments of
FIGS. 1-2 , theauditing server 112 may be in operative communication with amanagement device 150, which may be any device capable of communication with a computer network, such as, for example, a personal computer, a server computer, a laptop computer, a tablet computer, a personal digital assistant, a mobile phone, or a wireless communication device. Themanagement device 150 may comprise amanagement application 152, which may be any program or application, such as a stand alone application or an application that is embedded or associated with another software application, such as an applet running within a web browser on thedevice 150. - The
management application 152 may be adapted to allow a user, such as, for example, a software manufacturer or distributor, to view the data collected and stored in theaudit database 114 of theaudit server 112. The present embodiment will be described in the context of a software manufacturer utilizing themanagement application 152. However, it will be understood that any user of the management device may utilize themanagement application 152. - The
management application 152 may present the data in theaudit database 114 in a manner that allows its user to better understand how its software is being used, legitimately or otherwise. The information organized and presented according to one or more display schemes, described in further detail in U.S. patent application Ser. No. 12/390,273, entitled “License Auditing for Distributed Applications,” filed Feb. 20, 2009, assigned to the assignee hereof and hereby expressly incorporated by reference herein. - In accordance with one or more aspects of the embodiments described herein, there are provided devices and apparatuses for monitoring and/or enforcing game licenses (e.g., from the license authority side). With reference to
FIG. 4A , there is provided anexemplary apparatus 400 that may be configured as either a computing device, or as a processor or similar device for use within a computing device. As illustrated,apparatus 400 may comprise ameans 450 for receiving from a device a combination of a device identifier and a game/software identifier. The device identifier may be based on a combination of at least one user-configurable parameter and at least one non-user configurable parameter of the device. In this way, the device identifier is unique and no device will share the same identifier. - The
apparatus 400 may comprise ameans 460 for accessing a database of known game identifiers, each known game identifier being associated with a device count and one or more device identifiers. The device count corresponds to a total number of known devices on which a given game was previously played. For example, the database may contain a device count associated to a particular ‘xyz racing game’ indicating how many different machine(s) the ‘xyz racing game’ has been played on. - The
apparatus 400 may comprise ameans 470 for updating the database in response to the combination of the game identifier and the device identifier being unique from known combinations of the known game identifiers and the known device identifiers. For example, if the combination of the game identifier and the device identifier indicates that the ‘xyz racing game’ was played on a machine with a device identifier not previously known, then the database is updated to indicate that the ‘xyz racing game’ was played on such machine. - The
apparatus 400 may comprise ameans 480 for using the database to monitor at least one of distribution and the use of the game. Once the database is populated, game developers or other interested party such as game retailers, publishers, license authorities may monitor and query the database for various gaming statistics. - With reference to
FIG. 4B , themeans 460 for accessing a database of known game identifiers, each known game identifier being associated with a device count and one or more device identifiers may comprise a means 462 for capping the device count at a maximum device count to curb sharing of the game. The means 460 may further comprise a means 464 for instructing the device to disallow the user from playing the game on the user device when the device count having reached or exceeded the maximum device count. The means 460 may comprise a means 466 for instructing the device to allow the user to play the game on the user device in response to the device count being reset. The means 460 may comprise a means 468 for resetting the device count in response to receiving a device count reset request from a retailer. This may occur when the user purchase additional licensing rights to a game associated with the game identifier. - Additionally,
apparatus 400 may comprise ameans 490 for billing the retailer for the resetting of the device and ameans 492 for crediting a share of payment to the retailer in response to a payment for a device count reset. For example, when a user makes a payment for a device count reset, the payment proceeds can be shared with the retailer involved. Alternatively, the proceeds may be shared with the retailer and the customer. As a note, the user may be the original purchaser of the game or a borrower of the game. - With reference to
FIG. 4C ,apparatus 400 may comprise ameans 496 for adding the game identifier to the database, associating the device identifier with the game identifier in the database, and creating a corresponding device count for the game in response to the game identifier not matching any of the known game identifiers in the database. That is, if a game identifier does not match with any known game identifiers in the database, then the game identifier is added to the database, and the device identifier is associated with the game identifier in the database. -
Apparatus 400 may comprise ameans 498 for associating the device identifier with a given known game identifier and for incrementing a given device count for the given game identifier in response to the device identifier not matching any known device identifiers associated with the given known game identifier and in response to the game identifier matching a known game identifier. In other words, when a game identifier matches with a given known game identifier and when the device identifier does not match with any known device identifiers in the database, the device identifier is associated with the given known game identifier and a given device count for the given known game identifier is incremented by one. Additionally, when a game identifier matches with a given known game identifier and when the device identifier matches with any known device identifiers in the database, then auditing information in the database may be updated. In one approach, the auditing information may be updated whenever a game identifier and/or device identifier are crosschecked against known identifiers in the database. - It is noted that
apparatus 400 may optionally include aprocessor module 430 having at least one processor, in the case ofapparatus 400 configured as computing device, rather than as a processor.Processor 430, in such case, may be in operative communication with means 450-498, and components thereof, via abus 410 or similar communication coupling.Processor 430 may effect initiation and scheduling of the processes or functions performed by means 450-498, and components thereof. - In related aspects,
apparatus 400 may include atransceiver module 420 for communicating with means 450-498. A stand alone receiver and/or stand alone transmitter may be used in lieu of or in conjunction with thetransceiver 420. - In further related aspects,
apparatus 400 may optionally include a means for storing information, such as, for example, a memory device/module 440. Computer readable medium or memory device/module 440 may be operatively coupled to the other components ofapparatus 400 viabus 410 or the like. The computer readable medium ormemory device 440 may be adapted to store computer readable instructions and data for effecting the processes and behavior of means 450-498, and components thereof, or processor 430 (in the case ofapparatus 400 configured as a computing device) or the methods disclosed herein. - In yet further related aspects, the
memory module 440 may optionally include executable code for theprocessor module 430 to: (a) in response to the user attempting to play the game on the device, receive from the device a combination of (i) a game identifier for the game and (ii) a device identifier for the device, the device identifier being based on a combination of at least one user-configurable parameter and at least one non-user-configurable parameter of the device; (b) access a database of known game identifiers, each known game identifier being associated with (i) a device count corresponding to a total number of known devices on which a known game was previously played and (ii) the known device identifiers for the known devices; (c) update the database in response to the combination of the game identifier and the device identifier being unique from known combinations of the known game identifiers and the known device identifiers; and (d) use the database to monitor at least one of distribution and the use of the game. One or more of steps (a)-(d) may be performed byprocessor module 430 in lieu of or in conjunction with the means 450-498 described above. - In accordance with one or more aspects of the embodiments described herein, there are provided devices and apparatuses for monitoring and/or enforcing game licenses (e.g., from the computing device user side). With reference to
FIG. 5A , there is provided anexemplary apparatus 500 that may be configured as either computing device, or as a processor or similar device for use within a computing device. As illustrated,apparatus 500 may comprise ameans 550 for collecting machine parameters of a computing device. The machine parameters may comprise a combination of at least one user-configurable parameter and at least one non-user-configurable parameter of the device. Theapparatus 500 may comprise ameans 560 for generating a device identifier for the device based at least in part on the collected machine parameters. Theapparatus 500 may comprise ameans 570 for sending a game identifier for the game and the device identifier to a license authority. This may occur, for example, whenever a user attempts to install the game on the device and/or play the game on the device. - With reference to
FIG. 5B , themeans 570 may comprise ameans 575 for receiving an allow or disallow instruction from the license authority based on a device count associated with the game identifier. The device count may correspond to a total number of known devices on which the game was previously played. The allow instruction may allow the user to play the game on the device, and the disallow instruction may prevent the user from playing the game on the device. - The
apparatus 500 may comprise ameans 580 for associating the game identifier with the device identifier to generate an audit number and for sending the audit number to the license authority. The transmission of the audit number may be accomplished using a transceiver, for example. The means 560 may further comprise ameans 585 for associating the game identifier with the device identifier by concatenating the game identifier with the device identifier. The means 580 may also comprise ameans 590 for determining the geo-location code for the device and for associating the geo-location code with at least one of the game identifier and the device identifier to generate the audit number. For example, the geo-location code may comprise an internet protocol (IP) address, and the game identifier may comprise a game serial number. - The
apparatus 500 may further comprise ameans 595 for generating a device identifier by implementing or executing at least one irreversible transformation such that the machine parameters cannot be derived from the device identifier. Additionally, at least one of the irreversible transformation comprises a cryptographic hash function. - It is noted that
apparatus 500 may optionally include aprocessor module 530 having at least one processor, in the case ofapparatus 500 configured as computing device, rather than as a processor.Processor 530, in such case, may be in operative communication with means 550-595, and components thereof, via abus 510 or similar communication coupling.Processor 530 may effect initiation and scheduling of the processes or functions performed by means 550-595, and components thereof. - In related aspects,
apparatus 500 may include atransceiver module 520 for communicating with means 550-595. A stand alone receiver and/or stand alone transmitter may be used in lieu of or in conjunction with thetransceiver 520. - In further related aspects,
apparatus 500 may optionally include a means for storing information, such as, for example, a memory device/module 540. Computer readable medium or memory device/module 540 may be operatively coupled to the other components ofapparatus 500 viabus 510 or the like. The computer readable medium ormemory device 540 may be adapted to store computer readable instructions and data for effecting the processes and behavior of means 550-595, and components thereof, or processor 530 (in the case ofapparatus 500 configured as a computing device) or the methods disclosed herein. - In yet further related aspects, the
memory module 540 may optionally include executable code for theprocessor module 530 to: (a) collect machine parameters of a computing device, the machine parameters comprising a combination of at least one user-configurable parameter and at least one non-user-configurable parameter of the device; (b) generate a device identifier for the device based at least in part on the machine parameters; and (c) in response to a user attempting to play the game on the device, instructs the transceiver to send a game identifier for the game and the device identifier to the license authority. One or more of steps (a)-(c) may be performed byprocessor module 430 in lieu of or in conjunction with the means 550-595 described above. - In accordance with one or more aspects of the embodiments described herein, there are provided methods for monitoring and/or enforcing licenses for games (e.g., from the license authority side). With reference to
FIG. 6A , there is provided anexemplary method 600 for monitoring the use of a computer game. Themethod 600 may involve steps 610-675. Atstep 610, a combination of a device identifier and a game identifier may be received from a device. Atstep 615, a database of known game identifier may be accessed. Each game identifier may be associated with a device count and one or more device identifiers. Atstep 620, the database may be updated in response to the combination of the game identifier and the device identifier being unique from known combination of the game and device identifiers in the database. Atstep 625, the database may be used to monitor at least one of distribution and the use of the game. - With reference to
FIG. 6B , atstep 630, the device count may be capped at a maximum device count. In this way, the sharing of the game may be curbed. Instep 640, an instruction may be sent to the device to disallow the user from playing the game on the device when the device count has reached or exceeds the maximum device count. Atstep 645, in response to the device count being reset, the device may be instructed to allow the user to play the game on the device. As noted above, the device count may reset whenever the user purchases additional license at a retailer. Atstep 650, the device count, may be reset in response to receiving a device count reset request from the retailer. Atstep 655, the retailer may be billed for the resetting of the device. Atstep 660, the retailer may be credited a share of the payment in response to a payment for the device count reset request. - At
step 670, the game identifier is added to the database, the device identifier may be associated with the game identifier in the database, and a corresponding device count, may be created for the game in response to the game identifier not matching any of the known game identifiers in the database. That is, if a game identifier does not match with any known game identifiers in the database, then the game identifier may be added to the database, and the device identifier may be associated with the game identifier in the database. - At
step 675, the device identifier may be associated with a given known game identifier, and a given device count is incremented for the given game identifier in response to the device identifier not matching any known device identifiers associated with the given known game identifier and in response to the game identifier matching a known game identifier. In other words, when a game identifier matches with a given known game identifier and when the device identifier does not match with any known device identifiers in the database, the device identifier may be associated with the given known game identifier and a given device count for the given known game identifier may be incremented by one. Additionally, when a game identifier matches with a given known game identifier and when the device identifier matches with any known device identifiers in the database, then audit information in the database may be updated. In one approach, the audit information may be updated whenever a game identifier and/or device identifier are crosschecked against known identifiers in the database. - In accordance with one or more aspects of the embodiments described herein, there are provided methods for monitoring and/or enforcing licenses for games (e.g., from the computing device user side). With reference to
FIG. 7 , there is provided anexemplary method 700 for monitoring the use of a computer game. Themethod 700 may involve the following steps. Atstep 710, machine parameters of a computing device may be collected. The machine parameters may comprise a combination of at least one user-configurable parameter and at least one non-user-configurable parameter of the device. - At
step 720, a device identifier may be generated for the device based at least in part on the collected machine parameters. Atstep 730, a game identifier for the game and the device identifier may be transmitted to a license authority. For example, this may occur whenever a user attempts to install the game on the device and/or play the game on the device. Atstep 740, an allow or disallow instruction may be received from the license authority based on a device count associated with the game identifier. The device count may correspond to a total number of known devices on which the game was previously played. The allow instruction may allow the user to play the game on the device, and the disallow instruction may prevent the user from playing the game on the device. In related aspects, themethod 700 may further involve receiving one of an allow instruction and a disallow instruction from the license authority based on a device count associated with the game identifier. - While the present invention has been illustrated and described with particularity in terms of preferred embodiments, it should be understood that no limitation of the scope of the invention is intended thereby. Features of any of the foregoing methods and devices may be substituted or added into the others, as will be apparent to those of skill in the art. It should also be understood that variations of the particular embodiments described herein incorporating the principles of the present invention will occur to those of ordinary skill in the art and yet be within the scope of the invention.
- As used in this application, the terms “component,” “module,” “system,” and the like are intended to refer to a computer-related entity, either hardware, firmware, a combination of hardware and software, software, or software in execution. For example, a component can be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a computing device and the computing device can be a component. One or more components can reside within a process and/or thread of execution and a component can be localized on one computer and/or distributed between two or more computers. In addition, these components can execute from various computer readable media having various data structures stored thereon. The components can communicate by way of local and/or remote processes such as in accordance with a signal having one or more data packets (e.g., data from one component interacting with another component in a local system, distributed system, and/or across a network such as the Internet with other systems by way of the signal).
- It is understood that the specific order or hierarchy of steps in the processes disclosed herein in an example of exemplary approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the processes may be rearranged while remaining within the scope of the present disclosure The accompanying method claims present elements of the various steps in sample order, and are not meant to be limited to the specific order or hierarchy presented.
- Moreover, various aspects or features described herein can be implemented as a method, apparatus, or article of manufacture using standard programming and/or engineering techniques. The term “article of manufacture” as used herein is intended to encompass a computer program accessible from any computer-readable device, carrier, or media. For example, computer-readable media can include but are not limited to magnetic storage devices (e.g., hard disk, floppy disk, magnetic strips, etc.), optical discs (e.g., compact disc (CD), digital versatile disc (DVD), etc.), smart cards, and flash memory devices (e.g., Erasable Programmable Read Only Memory (EPROM), card, stick, key drive, etc.). Additionally, various storage media described herein can represent one or more devices and/or other machine-readable media for storing information. The term “machine-readable medium” can include, without being limited to, wireless channels and various other media capable of storing, containing, and/or carrying instruction(s) and/or data.
- Those skilled in the art will further appreciate that the various illustrative logical blocks, modules, circuits, methods and algorithms described in connection with the examples disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, methods and algorithms have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present invention.
Claims (20)
1. An apparatus for monitoring use of a computer game, comprising:
a transceiver component for communicating with a computing device of a user;
at least one processor operatively coupled with the transceiver component; and
a memory component operatively coupled with the at least one processor and comprising executable code for the at least one processor to:
in response to the user attempting to play the game on the device, receive from the device a combination of (a) a game identifier for the game and (b) a device identifier for the device, the device identifier being based on a combination of at least one user-configurable parameter and at least one non-user-configurable parameter of the device;
access a database of known game identifiers, each known game identifier being associated with (a) a device count corresponding to a total number of known devices on which a known game was previously played and (b) the known device identifiers for the known devices;
update the database in response to the combination of the game identifier and the device identifier being unique from known combinations of the known game identifiers and the known device identifiers; and
monitor the database for at least one of distribution and for at least one use of the game.
2. The apparatus of claim 1 , wherein the device count is capped at a maximum device count to curb sharing of the game.
3. The apparatus of claim 2 , wherein the at least one processor, in response to the device count having reached the maximum device count, instructs the device to disallow the user from playing the game on the device.
4. The apparatus of claim 3 , wherein the at least one processor, in response to the device count being reset, instructs the device to allow the user to play the game on the device.
5. The apparatus of claim 1 , wherein, in response to the game identifier not matching any of the known game identifiers in the database, the at least one processor:
adds the game identifier to the database;
associates the device identifier with the game identifier in the database; and
creates a corresponding device count for the game.
6. The apparatus of claim 1 , wherein, in response to the game identifier matching a given known game identifier, the at least one processor:
in response to the device identifier not matching any known device identifiers associated with the given known game identifier, (a) associates the device identifier with the given known game identifier and (b) increments a given device count for the given known game identifier by one.
7. An apparatus for monitoring use of a computer game, comprising:
a transceiver component for communicating with a license authority;
at least one processor operatively coupled with the transceiver component; and
a memory component operatively coupled with the at least one processor and comprising executable code for the at least one processor to:
collect machine parameters of a computing device, the machine parameters comprising a combination of at least one user-configurable parameter and at least one non-user-configurable parameter of the device;
generate a device identifier for the device based at least in part on the machine parameters; and
in response to a user attempting to play the game on the device, instructs the transceiver to send a game identifier for the game and the device identifier to the license authority.
8. The apparatus of claim 7 , wherein the transceiver receives one of an allow instruction and a disallow instruction from the license authority based on a device count associated with the game identifier, the device count corresponding to a total number of known devices on which the game was previously played, the allow instruction allowing the user to play the game on the device, the disallow instruction preventing the user from playing the game on the device.
9. The apparatus of claim 7 , wherein:
the memory component further comprises executable code for the at least one processor to associate the game identifier with the device identifier to generate an audit number; and
the transceiver sends the audit number to the license authority.
10. The apparatus of claim 9 , wherein the at least one processor associates the software identifier with the device identifier by concatenating the software identifier with the device identifier.
11. The apparatus of claim 9 , wherein the at least one processor:
determines a geo-location code for the device; and
associates the geo-location code with at least one of the software identifier and the device identifier to generate the audit number.
12. The apparatus of claim 7 , wherein the at least one processor generates the device identifier by implementing at least one irreversible transformation such that the machine parameters cannot be derived from the device identifier.
13. A method for monitoring use of a computer game, comprising:
in response to a user attempting to play the game on a computing device, receiving from the device a combination of (a) a game identifier for the game and (b) a device identifier for the device, the device identifier being based on a combination of at least one user-configurable parameter and at least one non-user-configurable parameter of the device;
accessing a database of known game identifiers, each known game identifier being associated with (a) a device count corresponding to a total number of known devices on which a known game was previously played and (b) the known device identifiers for the known devices; and
updating the database in response to the combination of the game identifier and the device identifier being unique from known combinations of the known game identifiers and the known device identifiers; and
using the database to monitor at least one of distribution and the use of the game.
14. The method of claim 13 , further comprising, in response to the device count having reached a maximum device count, instructing the device to disallow the user from playing the game on the device.
15. The method of claim 13 , further comprising, in response to the device count being reset, instructing the device to allow the user to play the game on the device.
16. The method of claim 13 , further comprising, in response to the game identifier not matching any of the known game identifiers in the database:
adding the game identifier to the database;
associating the device identifier with the game identifier in the database; and
creating a corresponding device count for the game.
17. The method of claim 13 , further comprising, in response to the game identifier matching a given known game identifier:
in response to the device identifier not matching any known device identifiers associated with the given known game identifier, (a) associating the device identifier with the given known game identifier and (b) incrementing a given device count for the given known game identifier by one.
18. A computer program product, comprising:
a computer-readable medium comprising:
code for causing a computer to, in response to a user attempting to play a computer game on a computing device, receive from the computing device a combination of (a) a game identifier for the game and (b) a device identifier for the device, the device identifier being based on a combination of at least one user-configurable parameter and at least one non-user-configurable parameter of the device;
code for causing a computer to access a database of known game identifiers, each known game identifier being associated with (a) a device count corresponding to a total number of known devices on which a known game was previously played and (b) the known device identifiers for the known devices;
code for causing a computer to update the database in response to the combination of the game identifier and the device identifier being unique from known combinations of the known game identifiers and the known device identifiers; and
code for causing a computer to use the database to monitor at least one of distribution and the use of the game.
19. The computer program product of claim 18 , wherein the computer-readable medium further comprises code for:
determining a geo-location code for the computing device; and
associating the geo-location code with at least one of the game identifier and the device identifier.
20. The computer program product of claim 18 , wherein the computer-readable medium further comprises code for generating the device identifier by implementing at least one irreversible transformation such that the at least one user-configurable parameter and the at least one non-user-configurable parameter cannot be derived from the device identifier.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/784,364 US20100323790A1 (en) | 2009-06-19 | 2010-05-20 | Devices and Methods for Auditing and Enforcing Computer Game Licenses |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US21856609P | 2009-06-19 | 2009-06-19 | |
US12/784,364 US20100323790A1 (en) | 2009-06-19 | 2010-05-20 | Devices and Methods for Auditing and Enforcing Computer Game Licenses |
Publications (1)
Publication Number | Publication Date |
---|---|
US20100323790A1 true US20100323790A1 (en) | 2010-12-23 |
Family
ID=43086530
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/784,364 Abandoned US20100323790A1 (en) | 2009-06-19 | 2010-05-20 | Devices and Methods for Auditing and Enforcing Computer Game Licenses |
Country Status (2)
Country | Link |
---|---|
US (1) | US20100323790A1 (en) |
EP (1) | EP2278521A3 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9794231B2 (en) | 2015-03-16 | 2017-10-17 | Schlage Lock Company Llc | License management using cloud based enrollment |
US20220201010A1 (en) * | 2020-12-17 | 2022-06-23 | Paypal, Inc. | Device analytics engine |
Citations (101)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US604989A (en) * | 1898-05-31 | Fire-escape | ||
US4278837A (en) * | 1977-10-31 | 1981-07-14 | Best Robert M | Crypto microprocessor for executing enciphered programs |
US4446519A (en) * | 1981-05-26 | 1984-05-01 | Corban International, Ltd. | Method and apparatus for providing security for computer software |
US4458315A (en) * | 1982-02-25 | 1984-07-03 | Penta, Inc. | Apparatus and method for preventing unauthorized use of computer programs |
US4593353A (en) * | 1981-10-26 | 1986-06-03 | Telecommunications Associates, Inc. | Software protection method and apparatus |
US4646234A (en) * | 1984-02-29 | 1987-02-24 | Brigham Young University | Anti-piracy system using separate storage and alternate execution of selected proprietary and public portions of computer programs |
US4658093A (en) * | 1983-07-11 | 1987-04-14 | Hellman Martin E | Software distribution system |
US4683553A (en) * | 1982-03-18 | 1987-07-28 | Cii Honeywell Bull (Societe Anonyme) | Method and device for protecting software delivered to a user by a supplier |
US4685055A (en) * | 1985-07-01 | 1987-08-04 | Thomas Richard B | Method and system for controlling use of protected software |
US4796220A (en) * | 1986-12-15 | 1989-01-03 | Pride Software Development Corp. | Method of controlling the copying of software |
US4796181A (en) * | 1986-10-24 | 1989-01-03 | Wiedemer John D | Billing system for computer software |
US4817140A (en) * | 1986-11-05 | 1989-03-28 | International Business Machines Corp. | Software protection system using a single-key cryptosystem, a hardware-based authorization system and a secure coprocessor |
US4824378A (en) * | 1986-09-17 | 1989-04-25 | Vdo Adolf Schindling Ag | System for the programming of a measuring instrument installed in an automotive vehicle |
US4827508A (en) * | 1986-10-14 | 1989-05-02 | Personal Library Software, Inc. | Database usage metering and protection system and method |
US4903296A (en) * | 1984-09-14 | 1990-02-20 | International Business Machines Corporation | Implementing a shared higher level of privilege on personal computers for copy protection of software |
US4924378A (en) * | 1988-06-13 | 1990-05-08 | Prime Computer, Inc. | License mangagement system and license storage key |
US4937863A (en) * | 1988-03-07 | 1990-06-26 | Digital Equipment Corporation | Software licensing management system |
US5014234A (en) * | 1986-08-25 | 1991-05-07 | Ncr Corporation | System with software usage timer and counter for allowing limited use but preventing continued unauthorized use of protected software |
US5023907A (en) * | 1988-09-30 | 1991-06-11 | Apollo Computer, Inc. | Network license server |
US5033084A (en) * | 1990-04-02 | 1991-07-16 | Data I/O Corporation | Method and apparatus for protection of software in an electronic system |
US5034980A (en) * | 1987-10-02 | 1991-07-23 | Intel Corporation | Microprocessor for providing copy protection |
US5081676A (en) * | 1990-10-04 | 1992-01-14 | Chou Wayne W | Method and apparatus for protecting multiple copies of computer software from unauthorized use |
US5083309A (en) * | 1989-11-23 | 1992-01-21 | Schlumberger Industries | Method and a system enabling software to be run securely |
US5109413A (en) * | 1986-11-05 | 1992-04-28 | International Business Machines Corporation | Manipulating rights-to-execute in connection with a software copy protection mechanism |
US5138712A (en) * | 1989-10-02 | 1992-08-11 | Sun Microsystems, Inc. | Apparatus and method for licensing software on a network of computers |
US5210795A (en) * | 1992-01-10 | 1993-05-11 | Digital Equipment Corporation | Secure user authentication from personal computer |
US5291598A (en) * | 1992-04-07 | 1994-03-01 | Gregory Grundy | Method and system for decentralized manufacture of copy-controlled software |
US5341429A (en) * | 1992-12-04 | 1994-08-23 | Testdrive Corporation | Transformation of ephemeral material |
US5414269A (en) * | 1991-10-29 | 1995-05-09 | Oki Electric Industry Co., Ltd. | Circuit for detecting a paper at a desired position along a paper feed path with a one shot multivibrator actuating circuit |
US5418854A (en) * | 1992-04-28 | 1995-05-23 | Digital Equipment Corporation | Method and apparatus for protecting the confidentiality of passwords in a distributed data processing system |
US5440635A (en) * | 1993-08-23 | 1995-08-08 | At&T Corp. | Cryptographic protocol for remote authentication |
US5490216A (en) * | 1992-09-21 | 1996-02-06 | Uniloc Private Limited | System for software registration |
US5495411A (en) * | 1993-12-22 | 1996-02-27 | Ananda; Mohan | Secure software rental system using continuous asynchronous password verification |
US5745879A (en) * | 1991-05-08 | 1998-04-28 | Digital Equipment Corporation | Method and system for managing execution of licensed programs |
US5754763A (en) * | 1996-10-01 | 1998-05-19 | International Business Machines Corporation | Software auditing mechanism for a distributed computer enterprise environment |
US5790664A (en) * | 1996-02-26 | 1998-08-04 | Network Engineering Software, Inc. | Automated system for management of licensed software |
US5925127A (en) * | 1997-04-09 | 1999-07-20 | Microsoft Corporation | Method and system for monitoring the use of rented software |
US5940504A (en) * | 1991-07-01 | 1999-08-17 | Infologic Software, Inc. | Licensing management system and method in which datagrams including an address of a licensee and indicative of use of a licensed product are sent from the licensee's site |
US6029141A (en) * | 1997-06-27 | 2000-02-22 | Amazon.Com, Inc. | Internet-based customer referral system |
US6044471A (en) * | 1998-06-04 | 2000-03-28 | Z4 Technologies, Inc. | Method and apparatus for securing software to reduce unauthorized use |
US6230199B1 (en) * | 1999-10-29 | 2001-05-08 | Mcafee.Com, Inc. | Active marketing based on client computer configurations |
US6233567B1 (en) * | 1997-08-29 | 2001-05-15 | Intel Corporation | Method and apparatus for software licensing electronically distributed programs |
US6243468B1 (en) * | 1998-04-29 | 2001-06-05 | Microsoft Corporation | Software anti-piracy system that adapts to hardware upgrades |
US20020019814A1 (en) * | 2001-03-01 | 2002-02-14 | Krishnamurthy Ganesan | Specifying rights in a digital rights license according to events |
US20020032668A1 (en) * | 2000-01-14 | 2002-03-14 | Robert Kohler | System and methods for enabling person to person product transfer via a communications network |
US6374241B1 (en) * | 1999-03-31 | 2002-04-16 | Verizon Laboratories Inc. | Data merging techniques |
US20020065097A1 (en) * | 2000-11-30 | 2002-05-30 | Brockenbrough Allan E. | System for arranging interactive games between players via multimode communication devices |
US20020082997A1 (en) * | 2000-07-14 | 2002-06-27 | Hiroshi Kobata | Controlling and managing digital assets |
US20030046566A1 (en) * | 2001-09-04 | 2003-03-06 | Yrjo Holopainen | Method and apparatus for protecting software against unauthorized use |
US6536005B1 (en) * | 1999-10-26 | 2003-03-18 | Teradyne, Inc. | High-speed failure capture apparatus and method for automatic test equipment |
US20030065918A1 (en) * | 2001-04-06 | 2003-04-03 | Willey William Daniel | Device authentication in a PKI |
US6557105B1 (en) * | 1999-04-14 | 2003-04-29 | Tut Systems, Inc. | Apparatus and method for cryptographic-based license management |
US20030200541A1 (en) * | 1996-06-07 | 2003-10-23 | William Cheng | System, method, and computer program product for uninstalling computer software |
US20040009815A1 (en) * | 2002-06-26 | 2004-01-15 | Zotto Banjamin O. | Managing access to content |
US20040024860A1 (en) * | 2000-10-26 | 2004-02-05 | Katsuhiko Sato | Communication system, terminal, reproduction program, recorded medium on which reproduction program is recorded, server device, server program, and recorded medium on which server program is recorded |
US20040030912A1 (en) * | 2001-05-09 | 2004-02-12 | Merkle James A. | Systems and methods for the prevention of unauthorized use and manipulation of digital content |
US20040039916A1 (en) * | 2002-05-10 | 2004-02-26 | David Aldis | System and method for multi-tiered license management and distribution using networked clearinghouses |
US20040054569A1 (en) * | 2002-07-31 | 2004-03-18 | Alvaro Pombo | Contextual computing system |
US20040059929A1 (en) * | 2000-09-14 | 2004-03-25 | Alastair Rodgers | Digital rights management |
US20040059938A1 (en) * | 1998-04-29 | 2004-03-25 | Microsoft Corporation | Hardware ID to prevent software piracy |
US20040066417A1 (en) * | 2002-10-03 | 2004-04-08 | Canon Kabushiki Kaisha | Contents protection apparatus and protection method for mixed reality system |
US20040143746A1 (en) * | 2003-01-16 | 2004-07-22 | Jean-Alfred Ligeti | Software license compliance system and method |
US20040148525A1 (en) * | 2002-11-18 | 2004-07-29 | Sony Corporation | Software providing system, software providing apparatus and method, recording medium, and program |
US20040152516A1 (en) * | 2002-09-18 | 2004-08-05 | Incredible Technologies, Inc. | Data delivery and management system and method for game machines |
US6859793B1 (en) * | 2002-12-19 | 2005-02-22 | Networks Associates Technology, Inc. | Software license reporting and control system and method |
US20050071280A1 (en) * | 2003-09-25 | 2005-03-31 | Convergys Information Management Group, Inc. | System and method for federated rights management |
US20050069129A1 (en) * | 2003-09-29 | 2005-03-31 | Inventec Appliances Corp. | Method of protecting copyright of digital video work |
US20050108173A1 (en) * | 1994-11-23 | 2005-05-19 | Contentgurad Holdings, Inc. | System for controlling the distribution and use digital works using digital tickets |
US20050138155A1 (en) * | 2003-12-19 | 2005-06-23 | Michael Lewis | Signal assessment |
US6920567B1 (en) * | 1999-04-07 | 2005-07-19 | Viatech Technologies Inc. | System and embedded license control mechanism for the creation and distribution of digital content files and enforcement of licensed use of the digital content files |
US20050278395A1 (en) * | 2004-05-28 | 2005-12-15 | Lucent Technologies, Inc. | Remotely identifying software on remote network nodes by discovering attributes of software files and comparing software file attributes to a unique signature from an audit table |
US20060026105A1 (en) * | 2002-10-15 | 2006-02-02 | Canon Kabushiki Kaisha | Peripheral device, information processing method, and control program |
US20060072444A1 (en) * | 2004-09-29 | 2006-04-06 | Engel David B | Marked article and method of making the same |
US7032110B1 (en) * | 2000-06-30 | 2006-04-18 | Landesk Software Limited | PKI-based client/server authentication |
US20060095454A1 (en) * | 2004-10-29 | 2006-05-04 | Texas Instruments Incorporated | System and method for secure collaborative terminal identity authentication between a wireless communication device and a wireless operator |
US20060116992A1 (en) * | 2004-11-26 | 2006-06-01 | Isen, L.L.C. | Internet search environment number system |
US7069595B2 (en) * | 2001-03-23 | 2006-06-27 | International Business Machines Corporation | Method of controlling use of digitally encoded products |
US7069440B2 (en) * | 2000-06-09 | 2006-06-27 | Northrop Grumman Corporation | Technique for obtaining a single sign-on certificate from a foreign PKI system using an existing strong authentication PKI system |
US20060161914A1 (en) * | 2005-01-14 | 2006-07-20 | Microsoft Corporation | Systems and methods to modify application installations |
US7188241B2 (en) * | 2002-10-16 | 2007-03-06 | Pace Antipiracy | Protecting software from unauthorized use by applying machine-dependent modifications to code modules |
US7203966B2 (en) * | 2001-06-27 | 2007-04-10 | Microsoft Corporation | Enforcement architecture and method for digital rights management system for roaming a license to a plurality of user devices |
US7206765B2 (en) * | 2001-01-17 | 2007-04-17 | Contentguard Holdings, Inc. | System and method for supplying and managing usage rights based on rules |
US20070143228A1 (en) * | 2005-12-15 | 2007-06-21 | Microsoft Corporation | Licensing matrix |
US20070168288A1 (en) * | 2006-01-13 | 2007-07-19 | Trails.Com, Inc. | Method and system for dynamic digital rights bundling |
US7319987B1 (en) * | 1996-08-29 | 2008-01-15 | Indivos Corporation | Tokenless financial access system |
US7327280B2 (en) * | 2002-08-15 | 2008-02-05 | California Institute Of Technology | Emergency vehicle traffic signal preemption system |
US7337147B2 (en) * | 2005-06-30 | 2008-02-26 | Microsoft Corporation | Dynamic digital content licensing |
US7343297B2 (en) * | 2001-06-15 | 2008-03-11 | Microsoft Corporation | System and related methods for managing and enforcing software licenses |
US20080065552A1 (en) * | 2006-09-13 | 2008-03-13 | Gidon Elazar | Marketplace for Transferring Licensed Digital Content |
US20080086423A1 (en) * | 2006-10-06 | 2008-04-10 | Nigel Waites | Media player with license expiration warning |
US20080147556A1 (en) * | 2006-12-15 | 2008-06-19 | Nbc Universal, Inc. | Digital rights management flexible continued usage system and method |
US20080148067A1 (en) * | 2006-10-11 | 2008-06-19 | David H. Sitrick | Method and system for secure distribution of selected content to be protected on an appliance-specific basis with definable permitted associated usage rights for the selected content |
US20080172300A1 (en) * | 2007-01-11 | 2008-07-17 | Microsoft Corporation | Purchasing of individual features of a software product |
US20090083730A1 (en) * | 2007-09-20 | 2009-03-26 | Richardson Ric B | Installing Protected Software Product Using Unprotected Installation Image |
US20090138975A1 (en) * | 2007-11-17 | 2009-05-28 | Uniloc Usa | System and Method for Adjustable Licensing of Digital Products |
US7653899B1 (en) * | 2004-07-23 | 2010-01-26 | Green Hills Software, Inc. | Post-execution software debugger with performance display |
US7676804B2 (en) * | 2004-05-20 | 2010-03-09 | Caterpillar Inc. | Systems and method for remotely modifying software on a work machine |
US7870273B2 (en) * | 2007-09-28 | 2011-01-11 | Disney Enterprises, Inc. | Method and system for indentifying a device implementing a digital rights management protocol |
US7908662B2 (en) * | 2007-06-21 | 2011-03-15 | Uniloc U.S.A., Inc. | System and method for auditing software usage |
US8032572B2 (en) * | 2007-12-20 | 2011-10-04 | Verizon Patent And Licensing Inc. | Personal inventory manager |
US8229858B1 (en) * | 2004-09-30 | 2012-07-24 | Avaya Inc. | Generation of enterprise-wide licenses in a customer environment |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5260999A (en) * | 1991-06-28 | 1993-11-09 | Digital Equipment Corporation | Filters in license management system |
-
2010
- 2010-05-20 US US12/784,364 patent/US20100323790A1/en not_active Abandoned
- 2010-06-03 EP EP10164810A patent/EP2278521A3/en not_active Withdrawn
Patent Citations (102)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US604989A (en) * | 1898-05-31 | Fire-escape | ||
US4278837A (en) * | 1977-10-31 | 1981-07-14 | Best Robert M | Crypto microprocessor for executing enciphered programs |
US4446519A (en) * | 1981-05-26 | 1984-05-01 | Corban International, Ltd. | Method and apparatus for providing security for computer software |
US4593353A (en) * | 1981-10-26 | 1986-06-03 | Telecommunications Associates, Inc. | Software protection method and apparatus |
US4458315A (en) * | 1982-02-25 | 1984-07-03 | Penta, Inc. | Apparatus and method for preventing unauthorized use of computer programs |
US4683553A (en) * | 1982-03-18 | 1987-07-28 | Cii Honeywell Bull (Societe Anonyme) | Method and device for protecting software delivered to a user by a supplier |
US4658093A (en) * | 1983-07-11 | 1987-04-14 | Hellman Martin E | Software distribution system |
US4646234A (en) * | 1984-02-29 | 1987-02-24 | Brigham Young University | Anti-piracy system using separate storage and alternate execution of selected proprietary and public portions of computer programs |
US4903296A (en) * | 1984-09-14 | 1990-02-20 | International Business Machines Corporation | Implementing a shared higher level of privilege on personal computers for copy protection of software |
US4685055A (en) * | 1985-07-01 | 1987-08-04 | Thomas Richard B | Method and system for controlling use of protected software |
US5014234A (en) * | 1986-08-25 | 1991-05-07 | Ncr Corporation | System with software usage timer and counter for allowing limited use but preventing continued unauthorized use of protected software |
US4824378A (en) * | 1986-09-17 | 1989-04-25 | Vdo Adolf Schindling Ag | System for the programming of a measuring instrument installed in an automotive vehicle |
US4827508A (en) * | 1986-10-14 | 1989-05-02 | Personal Library Software, Inc. | Database usage metering and protection system and method |
US4796181A (en) * | 1986-10-24 | 1989-01-03 | Wiedemer John D | Billing system for computer software |
US4817140A (en) * | 1986-11-05 | 1989-03-28 | International Business Machines Corp. | Software protection system using a single-key cryptosystem, a hardware-based authorization system and a secure coprocessor |
US5109413A (en) * | 1986-11-05 | 1992-04-28 | International Business Machines Corporation | Manipulating rights-to-execute in connection with a software copy protection mechanism |
US4796220A (en) * | 1986-12-15 | 1989-01-03 | Pride Software Development Corp. | Method of controlling the copying of software |
US5034980A (en) * | 1987-10-02 | 1991-07-23 | Intel Corporation | Microprocessor for providing copy protection |
US4937863A (en) * | 1988-03-07 | 1990-06-26 | Digital Equipment Corporation | Software licensing management system |
US4924378A (en) * | 1988-06-13 | 1990-05-08 | Prime Computer, Inc. | License mangagement system and license storage key |
US5023907A (en) * | 1988-09-30 | 1991-06-11 | Apollo Computer, Inc. | Network license server |
US5138712A (en) * | 1989-10-02 | 1992-08-11 | Sun Microsystems, Inc. | Apparatus and method for licensing software on a network of computers |
US5083309A (en) * | 1989-11-23 | 1992-01-21 | Schlumberger Industries | Method and a system enabling software to be run securely |
US5033084A (en) * | 1990-04-02 | 1991-07-16 | Data I/O Corporation | Method and apparatus for protection of software in an electronic system |
US5081676A (en) * | 1990-10-04 | 1992-01-14 | Chou Wayne W | Method and apparatus for protecting multiple copies of computer software from unauthorized use |
US5745879A (en) * | 1991-05-08 | 1998-04-28 | Digital Equipment Corporation | Method and system for managing execution of licensed programs |
US5940504A (en) * | 1991-07-01 | 1999-08-17 | Infologic Software, Inc. | Licensing management system and method in which datagrams including an address of a licensee and indicative of use of a licensed product are sent from the licensee's site |
US5414269A (en) * | 1991-10-29 | 1995-05-09 | Oki Electric Industry Co., Ltd. | Circuit for detecting a paper at a desired position along a paper feed path with a one shot multivibrator actuating circuit |
US5210795A (en) * | 1992-01-10 | 1993-05-11 | Digital Equipment Corporation | Secure user authentication from personal computer |
US5291598A (en) * | 1992-04-07 | 1994-03-01 | Gregory Grundy | Method and system for decentralized manufacture of copy-controlled software |
US5418854A (en) * | 1992-04-28 | 1995-05-23 | Digital Equipment Corporation | Method and apparatus for protecting the confidentiality of passwords in a distributed data processing system |
US5490216A (en) * | 1992-09-21 | 1996-02-06 | Uniloc Private Limited | System for software registration |
US5341429A (en) * | 1992-12-04 | 1994-08-23 | Testdrive Corporation | Transformation of ephemeral material |
US5440635A (en) * | 1993-08-23 | 1995-08-08 | At&T Corp. | Cryptographic protocol for remote authentication |
US5495411A (en) * | 1993-12-22 | 1996-02-27 | Ananda; Mohan | Secure software rental system using continuous asynchronous password verification |
US20050108173A1 (en) * | 1994-11-23 | 2005-05-19 | Contentgurad Holdings, Inc. | System for controlling the distribution and use digital works using digital tickets |
US5790664A (en) * | 1996-02-26 | 1998-08-04 | Network Engineering Software, Inc. | Automated system for management of licensed software |
US20030200541A1 (en) * | 1996-06-07 | 2003-10-23 | William Cheng | System, method, and computer program product for uninstalling computer software |
US7319987B1 (en) * | 1996-08-29 | 2008-01-15 | Indivos Corporation | Tokenless financial access system |
US5754763A (en) * | 1996-10-01 | 1998-05-19 | International Business Machines Corporation | Software auditing mechanism for a distributed computer enterprise environment |
US5925127A (en) * | 1997-04-09 | 1999-07-20 | Microsoft Corporation | Method and system for monitoring the use of rented software |
US6029141A (en) * | 1997-06-27 | 2000-02-22 | Amazon.Com, Inc. | Internet-based customer referral system |
US6233567B1 (en) * | 1997-08-29 | 2001-05-15 | Intel Corporation | Method and apparatus for software licensing electronically distributed programs |
US6243468B1 (en) * | 1998-04-29 | 2001-06-05 | Microsoft Corporation | Software anti-piracy system that adapts to hardware upgrades |
US20040059938A1 (en) * | 1998-04-29 | 2004-03-25 | Microsoft Corporation | Hardware ID to prevent software piracy |
US6044471A (en) * | 1998-06-04 | 2000-03-28 | Z4 Technologies, Inc. | Method and apparatus for securing software to reduce unauthorized use |
US6785825B2 (en) * | 1998-06-04 | 2004-08-31 | Z4 Technologies, Inc. | Method for securing software to decrease software piracy |
US6374241B1 (en) * | 1999-03-31 | 2002-04-16 | Verizon Laboratories Inc. | Data merging techniques |
US6920567B1 (en) * | 1999-04-07 | 2005-07-19 | Viatech Technologies Inc. | System and embedded license control mechanism for the creation and distribution of digital content files and enforcement of licensed use of the digital content files |
US6557105B1 (en) * | 1999-04-14 | 2003-04-29 | Tut Systems, Inc. | Apparatus and method for cryptographic-based license management |
US6536005B1 (en) * | 1999-10-26 | 2003-03-18 | Teradyne, Inc. | High-speed failure capture apparatus and method for automatic test equipment |
US6230199B1 (en) * | 1999-10-29 | 2001-05-08 | Mcafee.Com, Inc. | Active marketing based on client computer configurations |
US20020032668A1 (en) * | 2000-01-14 | 2002-03-14 | Robert Kohler | System and methods for enabling person to person product transfer via a communications network |
US7069440B2 (en) * | 2000-06-09 | 2006-06-27 | Northrop Grumman Corporation | Technique for obtaining a single sign-on certificate from a foreign PKI system using an existing strong authentication PKI system |
US7032110B1 (en) * | 2000-06-30 | 2006-04-18 | Landesk Software Limited | PKI-based client/server authentication |
US20020082997A1 (en) * | 2000-07-14 | 2002-06-27 | Hiroshi Kobata | Controlling and managing digital assets |
US20040059929A1 (en) * | 2000-09-14 | 2004-03-25 | Alastair Rodgers | Digital rights management |
US20040024860A1 (en) * | 2000-10-26 | 2004-02-05 | Katsuhiko Sato | Communication system, terminal, reproduction program, recorded medium on which reproduction program is recorded, server device, server program, and recorded medium on which server program is recorded |
US20020065097A1 (en) * | 2000-11-30 | 2002-05-30 | Brockenbrough Allan E. | System for arranging interactive games between players via multimode communication devices |
US7206765B2 (en) * | 2001-01-17 | 2007-04-17 | Contentguard Holdings, Inc. | System and method for supplying and managing usage rights based on rules |
US20020019814A1 (en) * | 2001-03-01 | 2002-02-14 | Krishnamurthy Ganesan | Specifying rights in a digital rights license according to events |
US7069595B2 (en) * | 2001-03-23 | 2006-06-27 | International Business Machines Corporation | Method of controlling use of digitally encoded products |
US20030065918A1 (en) * | 2001-04-06 | 2003-04-03 | Willey William Daniel | Device authentication in a PKI |
US20040030912A1 (en) * | 2001-05-09 | 2004-02-12 | Merkle James A. | Systems and methods for the prevention of unauthorized use and manipulation of digital content |
US7343297B2 (en) * | 2001-06-15 | 2008-03-11 | Microsoft Corporation | System and related methods for managing and enforcing software licenses |
US7203966B2 (en) * | 2001-06-27 | 2007-04-10 | Microsoft Corporation | Enforcement architecture and method for digital rights management system for roaming a license to a plurality of user devices |
US20030046566A1 (en) * | 2001-09-04 | 2003-03-06 | Yrjo Holopainen | Method and apparatus for protecting software against unauthorized use |
US20040039916A1 (en) * | 2002-05-10 | 2004-02-26 | David Aldis | System and method for multi-tiered license management and distribution using networked clearinghouses |
US20040009815A1 (en) * | 2002-06-26 | 2004-01-15 | Zotto Banjamin O. | Managing access to content |
US20040054569A1 (en) * | 2002-07-31 | 2004-03-18 | Alvaro Pombo | Contextual computing system |
US7327280B2 (en) * | 2002-08-15 | 2008-02-05 | California Institute Of Technology | Emergency vehicle traffic signal preemption system |
US20040152516A1 (en) * | 2002-09-18 | 2004-08-05 | Incredible Technologies, Inc. | Data delivery and management system and method for game machines |
US20040066417A1 (en) * | 2002-10-03 | 2004-04-08 | Canon Kabushiki Kaisha | Contents protection apparatus and protection method for mixed reality system |
US20060026105A1 (en) * | 2002-10-15 | 2006-02-02 | Canon Kabushiki Kaisha | Peripheral device, information processing method, and control program |
US7188241B2 (en) * | 2002-10-16 | 2007-03-06 | Pace Antipiracy | Protecting software from unauthorized use by applying machine-dependent modifications to code modules |
US20040148525A1 (en) * | 2002-11-18 | 2004-07-29 | Sony Corporation | Software providing system, software providing apparatus and method, recording medium, and program |
US6859793B1 (en) * | 2002-12-19 | 2005-02-22 | Networks Associates Technology, Inc. | Software license reporting and control system and method |
US20040143746A1 (en) * | 2003-01-16 | 2004-07-22 | Jean-Alfred Ligeti | Software license compliance system and method |
US20050071280A1 (en) * | 2003-09-25 | 2005-03-31 | Convergys Information Management Group, Inc. | System and method for federated rights management |
US20050069129A1 (en) * | 2003-09-29 | 2005-03-31 | Inventec Appliances Corp. | Method of protecting copyright of digital video work |
US20050138155A1 (en) * | 2003-12-19 | 2005-06-23 | Michael Lewis | Signal assessment |
US7676804B2 (en) * | 2004-05-20 | 2010-03-09 | Caterpillar Inc. | Systems and method for remotely modifying software on a work machine |
US20050278395A1 (en) * | 2004-05-28 | 2005-12-15 | Lucent Technologies, Inc. | Remotely identifying software on remote network nodes by discovering attributes of software files and comparing software file attributes to a unique signature from an audit table |
US7653899B1 (en) * | 2004-07-23 | 2010-01-26 | Green Hills Software, Inc. | Post-execution software debugger with performance display |
US20060072444A1 (en) * | 2004-09-29 | 2006-04-06 | Engel David B | Marked article and method of making the same |
US8229858B1 (en) * | 2004-09-30 | 2012-07-24 | Avaya Inc. | Generation of enterprise-wide licenses in a customer environment |
US20060095454A1 (en) * | 2004-10-29 | 2006-05-04 | Texas Instruments Incorporated | System and method for secure collaborative terminal identity authentication between a wireless communication device and a wireless operator |
US20060116992A1 (en) * | 2004-11-26 | 2006-06-01 | Isen, L.L.C. | Internet search environment number system |
US20060161914A1 (en) * | 2005-01-14 | 2006-07-20 | Microsoft Corporation | Systems and methods to modify application installations |
US7337147B2 (en) * | 2005-06-30 | 2008-02-26 | Microsoft Corporation | Dynamic digital content licensing |
US20070143228A1 (en) * | 2005-12-15 | 2007-06-21 | Microsoft Corporation | Licensing matrix |
US20070168288A1 (en) * | 2006-01-13 | 2007-07-19 | Trails.Com, Inc. | Method and system for dynamic digital rights bundling |
US20080065552A1 (en) * | 2006-09-13 | 2008-03-13 | Gidon Elazar | Marketplace for Transferring Licensed Digital Content |
US20080086423A1 (en) * | 2006-10-06 | 2008-04-10 | Nigel Waites | Media player with license expiration warning |
US20080148067A1 (en) * | 2006-10-11 | 2008-06-19 | David H. Sitrick | Method and system for secure distribution of selected content to be protected on an appliance-specific basis with definable permitted associated usage rights for the selected content |
US20080147556A1 (en) * | 2006-12-15 | 2008-06-19 | Nbc Universal, Inc. | Digital rights management flexible continued usage system and method |
US20080172300A1 (en) * | 2007-01-11 | 2008-07-17 | Microsoft Corporation | Purchasing of individual features of a software product |
US7908662B2 (en) * | 2007-06-21 | 2011-03-15 | Uniloc U.S.A., Inc. | System and method for auditing software usage |
US20090083730A1 (en) * | 2007-09-20 | 2009-03-26 | Richardson Ric B | Installing Protected Software Product Using Unprotected Installation Image |
US7870273B2 (en) * | 2007-09-28 | 2011-01-11 | Disney Enterprises, Inc. | Method and system for indentifying a device implementing a digital rights management protocol |
US20090138975A1 (en) * | 2007-11-17 | 2009-05-28 | Uniloc Usa | System and Method for Adjustable Licensing of Digital Products |
US8032572B2 (en) * | 2007-12-20 | 2011-10-04 | Verizon Patent And Licensing Inc. | Personal inventory manager |
Non-Patent Citations (1)
Title |
---|
definition of the verb "monitor" from Merriam-Webster's Collegiate Dictionary, 10th Edition, 1993, all pages. * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9794231B2 (en) | 2015-03-16 | 2017-10-17 | Schlage Lock Company Llc | License management using cloud based enrollment |
US20220201010A1 (en) * | 2020-12-17 | 2022-06-23 | Paypal, Inc. | Device analytics engine |
US11924226B2 (en) * | 2020-12-17 | 2024-03-05 | Paypal, Inc. | Device analytics engine |
Also Published As
Publication number | Publication date |
---|---|
EP2278521A2 (en) | 2011-01-26 |
EP2278521A3 (en) | 2011-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8374968B2 (en) | License auditing for distributed applications | |
US8239852B2 (en) | Remote update of computers based on physical device recognition | |
US20100325051A1 (en) | System and Method for Piracy Reduction in Software Activation | |
US10489562B2 (en) | Modular software protection | |
EP2273411B1 (en) | Systems and methods for determining authorization to operate licensed software based on a client device fingerprint | |
US20100325735A1 (en) | System and Method for Software Activation | |
US8316421B2 (en) | System and method for device authentication with built-in tolerance | |
EP2282474B1 (en) | System and method for secured mobile communication | |
US9129097B2 (en) | Systems and methods for auditing software usage using a covert key | |
US20140123255A1 (en) | System and method for device authentication with built-in tolerance | |
US20100324983A1 (en) | System and Method for Media Distribution | |
EP2270703B1 (en) | Systems and methods for providing conditional authorization to operate licensed software | |
US8423473B2 (en) | Systems and methods for game activation | |
US10402893B2 (en) | System and method for preventing multiple online purchases | |
US20100325149A1 (en) | System and Method for Auditing Software Usage | |
US20100323790A1 (en) | Devices and Methods for Auditing and Enforcing Computer Game Licenses | |
KR100716719B1 (en) | Method and apparatus for providing package contents using d.r.m | |
US20100325200A1 (en) | System and Method for Software Activation Through Digital Media Fingerprinting |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |