BORE-resistant digital goods configuration and distribution methods and arrangements

Break-Once, Run-everywhere (BORE) resistant software configurations and digital goods and content distribution methods and arrangements are provided for use in computer systems and networks. An initial digital good is selectively divided into at least two portions. The first portion is provided to a destination computer, for example, via a CD ROM, floppy disk, or pre-loaded on a hard disk drive. The second portion is operatively modified within a source computer based on unique data associated with the destination computer. The modified second portion is then provided to the destination computer, for example, over a network, along with a key that can be used to operatively modify the first portion to be compatible with the modified second portion. The destination computer then modifies the first portion accordingly, and combines the modified first portion with the modified second portion to produce a modified digital good that is operatively different in configuration, but substantially functionally equivalent to the initial digital good. During subsequent initialization or operation, the modified digital good verifies that the destination computer is properly associated with the key and/or the unique data previously associated with the destination computer.

TECHNICAL FIELD

This invention relates to digital goods and content, and more particularly to Break-Once, Run-Everywhere (BORE) resistant digital goods configuration and distribution methods and arrangements that significantly protect rights associated with the distribution and use of digital goods and digital content.

BACKGROUND

Digital goods (e.g., software products and the like) and data or digital content (e.g., music, video, books, etc.) are often distributed to consumers via fixed computer readable media, such as, for example, a compact disc (CD-ROM), digital versatile disc (DVD-ROM), soft magnetic diskette, or hard magnetic disk (e.g., a preloaded hard drive). More recently, consumers have been able to download digital goods and digital content directly to their computers using data communication services, such as, for example, those associated with the Internet.

One of the on-going concerns with such distribution techniques, however, is the need to provide digital rights management (DRM) protection to prevent unauthorized distribution, copying and/or illegal operation of, or access to the digital good and content. An ideal digital goods distribution system would substantially prevent unauthorized distribution/use of the digital goods and content.

Various DRM techniques have been developed and employed in an attempt to thwart potential software pirates from illegally copying or otherwise distributing the digital goods to others. For example, one DRM technique includes requiring the consumer to insert the original CD-ROM or DVD-ROM for verification prior to enabling the operation of a related copy of the digital good. Unfortunately, this DRM technique typically places an unwelcome burden on the honest consumer, especially those concerned with speed and productivity. Moreover, such techniques are impracticable for digital goods that are site licensed, such as, for example, software products that are licensed for use by several computers, and/or for digital goods that are downloaded directly to a computer. Additionally, it is not overly difficult for unscrupulous individuals/organizations to produce working pirated copies of the CD-ROM, for example.

Another DRM technique includes requiring or otherwise encouraging the consumer to register the digital good with the provider, for example, either through the mail or online via the Internet or a direct connection. Thus, the digital good may require the consumer to enter a registration code before allowing the digital good to be fully operational or the digital content to be fully accessed. Unfortunately, such DRM techniques are not always effective since unscrupulous individuals/organizations need only break through or otherwise undermine the DRM protections in a single copy of the digital good. Once broken, copies of the digital good can be illegally distributed, hence such DRM techniques are considered to be Break-Once, Run-Everywhere (BORE) susceptible.

Consequently, there is need for digital goods configuration and/or distribution methods and arrangements that are significantly more BORE-resistant. Preferably, the BORE-resistant methods and arrangements will be easy to implement and cost effective for the digital good developer and/or the content producer, supportive of online distribution and multiple station licensing, traceable, difficult to undermine, and not overly burdensome on the consumer.

SUMMARY

The present invention provides DRM (Digital Rights Management) software, distribution methods, and arrangements that are designed to protect software, content (e.g., music, video, books, etc.), and other digital goods (hereinafter, “digital goods” refers to all the above). The DRM software is configured to be resistant to Break Once, Run Everywhere (BORE) attacks. The BORE-resistant methods and arrangements are easy and cost effective for the digital good developer or content producer to implement, and are not overly burdensome on the consumer. The various methods and arrangements support traditional and online distribution techniques, and are adaptable for site licensing. The resulting digital good is substantially difficult to undermine on any significant scale, because each copy is uniquely configured for use by an authorized consumer/computer.

Thus, for example, in accordance with certain aspects of the present invention, improved DRM security is provided by individualizing the digital good for each consumer using selective program flow manipulation techniques. The program-flow-manipulation techniques are combined with encryption and/or cryptography keying techniques or other unique/trusted identifying techniques to individualize the configuration of a digital good for each authorized consumer.

The digital good can be distributed in one or more parts that are selectively modified and/or otherwise provided to an authorized consumer having the applicable security keys and/or other unique/trusted identifier information needed to complete the configuration of an individualized and operatively unique modified digital good.

The modified digital good is unique for each consumer/computer, because the security keys and/or other unique/trusted identifiers are used as inputs during program flow manipulation within the source's/consumer's computer. Subsequent initialization/operation of the uniquely configured modified digital good can include verifying the presence of certain consumer/computer identifying data to further promote DRM protection. Consequently, the modified digital good and the distribution techniques are substantially less susceptible to BORE tampering.

By way of example, the above stated needs and others are met by a method that includes providing an initial digital good to at least one computer. The initial digital good is converted into a modified digital good using unique key data to selectively manipulate at least one flow control operation within the initial digital good, such that the modified digital good is operatively different in configuration, but substantially functionally equivalent to the initial digital good.

The unique key data can be based on at least one unique identifier data associated with a destination computer. For example, a source computer can cryptographically generate the unique key data based on the unique identifier data provided by the destination computer and a secret encryption key. The method can include selectively limiting operation of the modified digital good to computers that are properly associated with at least the unique identifier data and/or unique key data.

The method can also include dividing the initial digital good into at least a first portion and a second portion using the source computer. The first portion is provided to the destination computer via a first computer readable medium, and a modified second portion to the destination computer via a second computer readable medium. Thus, for example, the first computer readable medium may include a fixed computer readable medium, while the second computer readable medium may include a network communication. The first portion is manipulated or modified by the destination computer using a first key. Similarly, the source computer manipulates the second portion using a second key.

When the initial digital good has been split into first and second portions, then the modified digital good would therefore include a combination of the modified first portion and the modified second portion. Since these portions were operatively reconfigured using related keys/techniques, the modifications made to each portion can be selected to match the modifications in the other.

Another aspect that is described herein is an arrangement that includes an identifier configured to output unique identifier data associated with a computer, and a key generator that is coupled to receive the unique identifier data and generate at least one unique key data based on the received unique identifier data. The arrangement also includes at least one individualizer that is configured to receive the unique key data and at least a portion of an initial digital good, and output at least a portion of a modified digital good using the unique key data to selectively alter the initial digital good. Consequently, the modified digital good will be operatively different in configuration, but substantially functionally equivalent to the initial digital good.

DETAILED DESCRIPTION

FIG. 1is a block diagram depicting an exemplary computer network20that is suitable for use with the various methods and arrangements in accordance with the present invention.

Computer network20includes a plurality of host or customer computers22coupled to at least one communications network24. Communication network24is further coupled to at least one source or digital good provider computer26. Computers22and26are configured to communicate with each other over communications network24. By way of example, communications network24can include a public network such as the Internet. Communications network24might also include local-area networks, private wide-area networks, direct dial-up links, and the like.

In the discussion below, certain aspects of the present invention will be described in the general context of computer-executable instructions, such as program modules, being executed by one or more conventional personal computers. Generally, program modules include routines, programs, program segments, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the invention may be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. In a distributed computer environment, program modules may be located in both local and remote memory storage devices.

FIG. 2is a block diagram depicting a computer102that can be included in customer computer22and/or provider computer26, for example. Computer102includes one or more processors or processing units104, a system memory106, and a bus108that couples various system components including the system memory106to processors104.

Bus108represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. The system memory includes read only memory (ROM)110and random access memory (RAM)112. A basic input/output system (BIOS)114, containing the basic routines that help to transfer information between elements within computer102, such as during start-up, is stored in ROM110. Computer102further includes a hard disk drive116for reading from and writing to a hard disk, not shown, a magnetic disk drive118for reading from and writing to a removable magnetic disk120, and an optical disk drive122for reading from or writing to a removable optical disk124such as a CD ROM, DVD ROM or other optical media. The hard disk drive116, magnetic disk drive118, and optical disk drive122are connected to the bus108by an SCSI interface126or some other appropriate interface. The drives and their associated computer-readable media provide nonvolatile storage of computer readable instructions, data structures, program modules and other data for computer102. Although the exemplary environment described herein employs a hard disk, a removable magnetic disk120and a removable optical disk124, it should be appreciated by those skilled in the art that other types of computer readable media which can store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, random access memories (RAMs) read only memories (ROM), and the like, may also be used in the exemplary operating environment.

A number of program modules may be stored on the hard disk, magnetic disk120, optical disk124, ROM110, or RAM112, including an operating system130, one or more application programs132, other program modules134, and program data136. A user may enter commands and information into computer102through input devices such as keyboard138and pointing device140. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are connected to the processing unit104through an interface142that is coupled to the bus108. A monitor144or other type of display device is also connected to the bus108via an interface, such as a video adapter146. In addition to the monitor, personal computers typically include other peripheral output devices (not shown) such as speakers and printers.

Computer102can operate in a networked environment using logical connections to one or more remote computers, such as a remote computer148. Remote computer148may be another personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to computer102, although only a memory storage device150has been illustrated inFIG. 2. The logical connections depicted inFIG. 2include a local area network (LAN)152and a wide area network (WAN)154. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet.

When used in a LAN networking environment, computer102is connected to the local network152through a network interface or adapter156. When used in a WAN networking environment, computer102typically includes a modem158or other means for establishing communications over the wide area network154, such as the Internet. Modem158, which may be internal or external, is connected to the bus108via a serial port interface128. In a networked environment, program modules depicted relative to the personal computer102, or portions thereof, may be stored in the remote memory storage device. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.

Reference is now made toFIG. 3, which is a block diagram depicting an exemplary arrangement200that includes consumer computer22and provider computer26and is configured to distribute and/or otherwise provide digital goods to consumer computer22in a BORE-resistant manner. Here, a digital good “P”202is initially arranged within provider computer26. Digital good P202can include one or more computer programs, applications, operating systems, various modules, functions, and/or content (e.g., music, video, books, etc.) and/or other types of digital data, for example. Provider computer26is tasked to provide digital good P202or an equivalent form thereof to consumer computer22, such that the resulting digital good on consumer computer22will be significantly BORE resistant.

This is accomplished, in this example, by arranging provider computer26to deliver digital good P202in at least two stages. In a first stage, a first portion “P1”206of digital good P202is delivered to consumer computer22, for example, via a CD ROM, DVD ROM, removable magnetic disk, preloaded on a hard disk drive, solid-state memory device, a network connection, other conventional computer readable media, or the like. In a second stage, a second portion “P2”207of digital good P202(e.g., P=P1+P2) is converted to a modified second portion “Q2” based on identifying information provided by consumer computer22. The modified second portion Q2is provided to consumer computer22. While modified second portion Q2can be provided to consumer computer22via any traditional/conventional computer readable medium, in this example, modified second portion Q2is provided to consumer computer22via a network connection that allows for timely delivery.

Consumer computer22, having received first portion P1206, converts first portion P1206to a modified first portion “Q1” using information provided by provider computer26. Consumer computer22is then able to combine modified first portion Q1with modified portion Q2to produce a uniquely configured modified digital good “Q”218(e.g., Q=Q1+Q2) that is functionally equivalent to digital good P202.

With this basic process in mind, referring toFIG. 3, in this exemplary arrangement digital good P202is split or otherwise divided into at least two portions, e.g., P1and P2, by a splitter204. First portion P1206is provided to an individualizer208within consumer computer22. Second portion P2207is provided to an individualizer214within provider computer26. By way of example, individualizers208and214may include a program flow manipulator or other like mechanism that allows the respective portions of digital good P202to be operatively, functionally, sequentially, associatively, or otherwise individualized based at least in part on one or more inputs. Here, for example, keys K1and K2are generated and/or otherwise provided to their respective individualizers208and214and used to “individualize” portions P1and P2, respectively.

An identifier210within consumer computer22, which may be implemented in hardware and/or software, is essentially configured to uniquely identify consumer computer22in some manner. By way of example, identifier210can include circuitry and/or functions that output unique identifying data associated with processing unit104, operating system130, application programs132, other modules134, program data136, other resources/subsystems within computer102, or coupled therewith. Identifier210may include information associated with the consumer. For example, client identifier210might include name, address, telephone, credit card, and/or other similar data. This and other identifying information may be provided by one or more (optional) external sources211to identifier210and/or provider computer26. For example, external sources211may include one or more computers, databases, human operators, etc., which provide the requisite identifying information to arrangement200.

As shown, in this example the data output from client identifier210and/or (optional) external sources211is provided to a key generator212within provider computer26. Key generator212is configured to generate one or more cryptographically related encryption keys based at least in part on the identifying information/data from client identifier210and/or external sources211. Here, key generator212generates two keys K1and K2, which are cryptographically related to a secret key K and at least a portion of the data from client identifier210. Consequently, keys K1and K2include data that is uniquely associated with consumer computer22and/or the consumer associated therewith. Conventional data encryption techniques are employed to in sure that keys K1and K2cannot be easily determined without access to secret key K. Once generated, key K1is provided to individualizer208within consumer computer22, and key K2is provided to individualizer214within provider computer26.

Individualizer208, having received key K1, selectively individualizes first portion P1based on key K1. When a program flow manipulator is employed, for example, this can include rearranging at least one program section, block of code, pointer, address, adding/deleting code, etc., as definable within a program flow-graph associated with first portion P1. Preferably, several modifications occur within individualizer208to cause the resulting modified first portion Q1to be uniquely associated with key K1and distinctly different from first portion P1206. Data from key K1may be included within modified portion Q1. Modified first portion Q1is then provided to a combiner216.

Similarly, individualizer214, having received key K2, selectively individualizes second portion P2based on key K2. Again, when a program flow manipulator is employed, for example this can include rearranging at least one program section, block of code, pointer, address, adding/deleting code, etc., as definable within a program flow-graph associated with second portion P2. Preferably, several modifications occur within individualizer214to cause the resulting modified second portion Q2to be uniquely associated with key K2. Modified second portion Q2is then provided to combiner216within consumer computer22.

Combiner216is configured to combine modified first portion Q1and modified second portion Q2to produce a modified digital good Q218. Modified digital good Q218is operatively configured to run within consumer computer22. Modified digital good Q218can be further configured to verify that information from client identifier210matches related information, for example, data associated with key K1, as incorporated in modified digital good Q218. Thus, modified digital good Q218can be designed to verify that the host computer that it is running on, or attempting to be run on, is indeed authorized to do so.

In this manner, arrangement200causes the resulting configuration of modified digital good Q218to be substantially unique for each particular computer and/or consumer. Arrangement200is significantly BORE resistant, since the security features of each unique implementation of modified digital good Q218are inherently unique and would require potential hackers to expend a great deal of effort to discover, override and/or otherwise disable the features. Thus, rather than posing a “break once” situation, the present invention would require hackers to “break each” modified digital good Q218.

Additional security features can also be included or otherwise incorporated in modified digital good Q218, such as, for example, various encryption, data hiding and/or fingerprinting techniques can be employed to further discourage unauthorized use or distribution. Thus, with respect toFIG. 3, for example, digital11good P202can be further pre-processed prior to being provided to splitter204. Portions P1206and/or P2207can be further post-processed prior to being supplied to individualizers208and214, respectively. Similarly, additional pre/post-processing can be conducted on modified first portions Q1and/or Q2. Such security features may include local data such as, for example, time and date, serial numbers, random numbers, other public/private keys, digital certificates, digital signatures, etc. In certain configurations, provider computer26may also store certain types of information in a local database (not shown).

Those skilled in the art will recognize that the processing described above can be selectively distributed and/or scheduled as needed. Indeed, in certain arrangements, processes that are computationally intensive may be completed offline or on other computers (not shown). Thus, for example, if individualizer208includes a program flow manipulator, it may be prudent to run the program flow manipulator on another computer rather than tie up consumer computer22.

In other arrangements, splitter204may also be provided through one or more other computers.

In accordance with certain further aspects, arrangement200ofFIG. 3can even be employed when either first portion P1206or second portion P2207contains no data (i.e., P1=P, or P2=P).

Exemplary implementations in such cases are depicted inFIGS. 4 and 5, as described below. Basically, if either first portion P1206or second portion P2207contains no data, then certain functionality within arrangement200ofFIG. 3can be eliminated or otherwise ignored.

FIG. 4is a block diagram depicting another exemplary arrangement220, in accordance with certain further aspects of the present invention. As shown, in this example, digital good P202is not split into portions. Instead, digital good P202is provided to individualizer208. Key generator212is configured to generate key K1based on data from identifier210. Key K1is then provided to individualizer208. Individualizer208converts digital good P202into modified digital good Q1218.

FIG. 5is a block diagram depicting yet another exemplary arrangement230. As shown, in this example, digital good P202is not split into portions. Instead, digital good P202is provided to individualizer214. Key generator212generates key K2based on data from identifier210. Key K2is provided to individualizer214. Individualizer214then converts digital good P202into a modified digital good Q2218. Modified digital good Q2218is then provided to consumer computer22.

FIG. 6is a block diagram that illustratively depicts certain exemplary features of a BORE-resistant digital good as configured and distributed, for example, by arrangement200inFIG. 3, as described above. In this example, digital good P202includes a plurality of segments or blocks240that are operatively or associatively configured together in some manner, for example, as represented by the interconnecting arrows between various blocks. Thus, for example, the arrow between “block A” and “block B” can represent a calling function, a pointer, data passing, a content sequence, a content ordering, or the like.

As a result of arrangement200, inFIG. 3, for example, a modified digital good Q218has been created as shown at the bottom ofFIG. 6. Here, the blocks240have been rearranged as blocks242, and operatively or associatively reconfigured as represented, for example, by arrows244a–c. This produces a functionally equivalent version of digital good P202. Thus, for example, arrow244aillustrates that “block I” and “block G” are now operatively or associatively coupled, arrow244billustrates that “block F” and “block H” are now operatively or associatively coupled, and arrow244cillustrates that “block H” and “block D” are now operatively or associatively coupled, where they were not previously. Similarly, the absence of an arrow between “block A” and “block B” represents that they are no longer directly operatively or associatively coupled as before, but rather “block C” has been introduced there between.

Those skilled in the art will recognize that a variety of different permutations are available in configuring digital good P202into corresponding modified digital good Q218, and that certain configurations will be more optimal than others. For this reason and others, splitter204, individualizers208and214, and/or combiner216can be further arranged to configure digital good Q218to meet certain performance goals, as well as DRM goals.

FIG. 7is a flow-chart depicting an exemplary process300for providing a BORE-resistant digital good to a computer102, as inFIG. 2, for example, using arrangement200. In step302, the digital good provider (e.g., a vendor) supplies a first portion P1206of a digital good P202to a consumer. In step304, the consumer supplies requisite identifying information to the vendor. In step304, the vendor may also or optionally access identifying information within additional external resources. Next, in step306, the vendor generates cryptographically related keys K1and K2based at least in part on the identifying information in step304.

In step308, the vendor individualizes at least part of a second portion P2of digital good P202, using key K2. This results in a modified second portion Q2. The vendor provides modified second portion Q2and key K1to the consumer.

In step310, the consumer individualizes first portion P1206using key K1, which results in a modified portion Q1. Next, in step312, the consumer combines modified first portion Q1and modified second portion Q2to produce a modified digital good Q218, which a uniquely and operatively associated with the consumer and substantially functionally equivalent to digital good P202.

FIG. 8is a flow-chart depicting an exemplary process400for configuring a digital good using the BORE-resistant techniques as described above. In this example, the digital good is assumed to be a software program. In step402, a first plurality of program segments associated with digital good P202are provided. In step404, unique key data associated with an identifiable computer/consumer is provided. Next, as shown in step406, at least a portion of a program flow within the first plurality of segments is modified based on the unique key data. In step408, a unique digital good is provided for use by the identifiable computer/consumer, using at least the modified first plurality of segments from step406.

FIG. 9is a flow-chart depicting an exemplary process420for operating a computer102, as inFIG. 2, for example, using a BORE-resistant digital good that has been configured using the BORE-resistant techniques as described above. Here, in step422, a uniquely configured digital good is provided for use by an identifiable computer/consumer. In step424, unique key data associated with the identifiable computer/consumer is also provided. Next, in step426, the uniquely configured digital good is selectively verified, using the unique key data, as being properly associated with an identifiable computer/consumer running or attempting to run the unique configuration digital good. The uniquely configured digital good will be unable to properly/fully function, or to be otherwise fully accessed, if the identifiable computer/consumer cannot be properly verified in step426.

The preceding exemplary methods and arrangements may be implemented in an automated and controlled manner, such that neither the consumer nor the digital good provider is overly burdened.