Abstract:
A method of managing digital rights in a network without a central license server where each instance of the program broadcasts its identification into the network, and any instance of the program detecting its own license code from another node closes down. A closing program may also generate a close down message to the conflicting program.

Description:
TECHNICAL FIELD 
       [0001]    The invention generally relates to controlling the use of licensed digital media on a network such as programs, artistic, literary or musical works on a network. 
         [0002]    More particularly the invention relates to controlling the licensing of programs, software or multimedia items where there is no central repository registering the copies in use and restricting the license use on the basis of the central records. 
       BACKGROUND ART 
       [0003]    Programs are normally associated with licenses, typically in the form of a license number or key, the intention being that the program cannot run without a license number which is entered by a user at installation of the program. Similarly multimedia discs or similar items may include a license number to distinguish the individual copy, which is intended to be played by only one person. 
         [0004]    The intention is to control the number of unauthorized copies of the program or multimedia disk or file in use; however such a system does not prevent repeated installations of the program with the same license number or of copies of the same multimedia disc or file on different computers. 
         [0005]    Methods of controlling the installation of unauthorized copies of the licenses of programs on computers or similar items such as routers and switches are known. These normally operate by detecting the initialization of computers on a network and validating the use of a license on that computer against a central list of licenses. 
         [0006]    Such a system will not work where there is no central server monitoring or dispensing the licenses, for instance in an ad-hoc wireless network. 
         [0007]    The present invention provides a solution to this and other problems which offers advantages over the prior art or which will at least provide the public with a useful choice. 
       SUMMARY OF THE INVENTION 
       [0008]    The invention in one exemplification lies in a method of managing the rights to access or run digital media such as a program containing a user agent in a network environment comprising:
       at initialization detecting network data packets containing license number information of other such programs running on the network and:   when the detected license number is identical to that being initialized preventing initialization continuing, or   when the detected license number is not identical to that being initialized allowing program initialization and then broadcasting the license number into the network in a data packet.       
 
         [0012]    Preferably the program once initialized replicates onwards packets from other instances of the program running elsewhere on the network. 
         [0013]    Preferably when a packet containing a license number identical to that being initialized is received, broadcasting to the network a packet with a “halt” command, receiving the halt command in the computer with the duplicate program running, and causing the program to terminate. 
         [0014]    Preferably the user agent may be embedded in multimedia discs or files. 
         [0015]    In a further exemplification the invention relates to a method of generating a license number for a program consisting of:
       generating a unique license code   generating from the license code a verification code and concatenating this to the license code   encrypting the concatenated code and dispersing it with the program.       
 
         [0019]    A method as claimed in claim  4  consisting of generating a user code from the encrypted code. 
         [0020]    A computer when running a user agent of a program, which user agent on initialization recognizes other instances of the program on the network, a comparator which compares the license code of other instances of the program on the network with the license code of the initializing version, an initialization invocation which initializes the program and broadcasts the program license code if the license code is not found and a detector which detects a positive comparison and prevents initialization of the program when an identical license code is found. 
         [0021]    Preferably the comparator may also detect a “halt” instruction from an initialization invocation on a computer which is using an identical license number. 
         [0022]    Preferably on detection by the detector of a positive comparison, a network interface broadcasts a “halt” indication to the originating user agent. 
         [0023]    Preferably the user agent may be embedded in a multimedia file or disc. 
         [0024]    These and other features of as well as advantages which characterize the present invention will be apparent upon reading of the following detailed description and review of the associated drawings. 
     
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0025]      FIG. 1  is a flow diagram of a method of creating a unique program identification key. 
           [0026]      FIG. 2  is a block diagram of a method of verifying that a computer has a valid program license. 
           [0027]      FIG. 3  is a block diagram of a method of verifying that a computer continues to retain a valid program license. 
       
    
    
     DESCRIPTION OF THE INVENTION 
       [0028]    The inventive method provides a user agent for a particular item of licensed software or a multimedia file or disc, which agent appears on every computer using the software or playing the multimedia item. The agent would normally be placed during the installation of the software itself or at initialization of the playing of the multimedia disc. The agent continuously broadcasts or multi-casts data packets if the computer is connected to a network, whether that network is wired or wireless. The data packets contain an identifier for the license of that software. 
         [0029]    A computer attempting to initialize the software while the computer is connected to the network will monitor the network packets for those generated by the same agent on other computers, and extract the license identifier from those packets. A comparison will show if the identifier is the same as that on the initializing computer then the agent will decline to initialize the software, since this indicates a duplicate installation of licenses. 
         [0030]    The data packets which are broadcast are created with a typical TTL (time to live) and hence will not progress far if the network is large, however each of the agents may rebroadcast all packets for that software so that the effective network radius for a license is increased. As is typical with data packets each packet carries an identification number and packets which have already been sent will not be resent. 
         [0031]    The license codes for the software are preferably originally generated by creating a unique code as an initial license code, this code being recorded in a database and compared with all previous numbers to ensure that it is in fact unique. The code is then hashed or otherwise convolved to create a second code which is dependent on the first. The two codes are then concatenated and padded or truncated to a length suitable for encryption. Once encrypted the resulting code can be used as an identifying code for one instance of the software. A further reversible convolution of the resulting code can be used to create an ASCII user readable code which can be used as the user enterable license key during software installation. 
         [0032]    At any time the code can be verified by decryption, splitting into the hashed portion and the identification portion and then recreation of the hashed code from the identification portion and comparison with the received hash portion. 
         [0033]      FIG. 1  shows at  101  the creation of an ID, typically by a pseudo-random number generator (though note that the generator will generate hex codes rather than simple numbers). At  102  the code number is compared with those already in a database, and if unique the number is stored. At  104  a hash or similar code for verifying the stored number is created and concatenated to the code. 
         [0034]    The combined hash and code is then encrypted at  105  and the result is the key for a program which may be embedded within the program or permanently attached in some other manner at  106 . A user-understandable version of the key is created at  107  and this version may be placed on the program packaging or included with the program so that it may be used during the initial installation of the program on a computer. 
         [0035]      FIG. 2  shows the process during each initialization of the program on the user&#39;s computer. An agent installed at program installation is first invoked at  201  and reads all incoming data packets (UDP or TCP) on the network input at  202  looking for packets carrying content identifying themselves as broadcast packets carrying the ID of a program of the required type. When such a packet is detected at  203  it is examined to determine whether the ID is the same as that of the program which is seeking to initialize. If so control is passed at  204  to an error output which indicates that the program is already installed on the network and closes the initialization routine down. Before doing this, however, a packet may be propagated into the network with the target being the other computer running the same license number and the content being a “halt” message. When the agent of the other computer detects a “halt” message for its own license number it will shut down that instance of the program. 
         [0036]    If the ID is not detected in the relevant packages the program initialization is completed at  205  and the identifying agent then broadcasts the program ID into the network to prevent any other computer from initializing the same license instance. 
         [0037]    Where the license is associated with a multimedia disc or file the user agent is invoked by attempting to play the disc or file. 
         [0038]      FIG. 3  shows how the program, once instantiated, checks periodically for the use of its license number on the network. While the program is run, as at  301 , a periodic check at  302  is made by detecting at  303  whether the same license is embedded in an identification packet present on the network. If an identical license ID is found the program is stopped at  304 , otherwise it continues as at  305 , and additionally broadcasts its own license ID into the network. 
         [0039]    The agent may regenerate the data packet completely and pass it back in to the network, or it may, as is usual, recreate it with the TTL reduced by one, thus limiting the extent to which the packet will propagate through the network. While it is desirable to detect all instances of a program on a network and prevent any use of a duplicate copy it may not be practical to replicate the packets forever over the network in the interests of reducing network traffic. 
         [0040]    It is to be understood that even though numerous characteristics and advantages of the various embodiments of the present invention have been set forth in the foregoing description, together with details of the structure and functioning of various embodiments of the invention, this disclosure is illustrative only, and changes may be made in detail so long as the functioning of the invention is not adversely affected. For example the particular implementation of the data packet with contained key may vary dependent on the particular application for which it is used without variation in the spirit and scope of the present invention. 
         [0041]    In addition, although the preferred embodiments described herein are directed to packets for use in a TCP or UDP packet system, it will be appreciated by those skilled in the art that the teachings of the present invention can be applied to other systems such as NETBEUI, without departing from the scope and spirit of the present invention. 
       INDUSTRIAL APPLICABILITY 
       [0042]    The digital media license control of the invention is usable in networks of any type to limit the use of replicated copies of digital media such as a program or to otherwise indicate the ability of a user to validly run a program or access other examples of digital media. The present invention is therefore industrially applicable. 
         [0043]    Although the examples have been described with reference to programs, the invention is applicable to any form of digital media where license control is required, including literary, artistic, musical works as well as various programs, databases and other works in which intellectual property may reside.