Abstract:
Described are method and device for protecting information against unauthorized use. Information obtained by the user is encrypted using an asymmetrical cryptography method with a user&#39;s key which is received by a distributor of information. The information is decoded before the use thereof with the aid of a private key of the user. Decryption may be carried out directly in a CPU of the user&#39;s computer user so that the decrypted information does not exist outside the processor.

Description:
FIELD OF INVENTION  
         [0001]    The present invention relates to protection of information (e.g., a software program, data, etc.) against unauthorized use. It specifically relates to a system and method of protection utilizing data encryption using asymmetrical cryptography methods with possibility to identification a person, releasing the copy of protected data without authorization hereto.  
         BACKGROUND INFORMATION  
         [0002]    At the present time the problem of information security against unauthorized copying becomes more and more critical. A particular attention is given to program security against a pirate distribution which cause a significant damage to software manufacturers.  
           [0003]    Conventional methods of program protection could be divided into two major categories: hardware and software security.  
           [0004]    When using hardware security methods (e.g., described in U.S. Pat. Nos. 5,826,011 &amp; 6,308,170), the purchased software is accompanied with a certain technical device connected to a computer on which the software is used. The program sends a request to the device and based on a reply of the device, the program determines whether the its use is authorised by the manufacturer.  
           [0005]    Such method has several disadvantageous features: utilization of additional equipment significantly increase the cost of software. Moreover, such method makes it difficult for a user to simultaneously utilize a single copy of purchased software on several computers, even if the license agreement allows for such utilization, since the user has to move protection equipment between computers. This method is frequently used so that it allows the creation of an emulator of protection equipment with a further distribution of pirate copies of the program together with such emulator. The other method to bypass such protection is to detect in a program&#39;s source code locations of reply from such device against calculated a template and elimination these check from code (e.g., by replacing conditional transfer to unconditional).  
           [0006]    Software security methods, as a rule, are based on serial numbers submitted to consumer when the program is purchased (e.g., U.S. Pat. No. 6,134,659).  
           [0007]    These serial numbers, entered by a user during installation or utilization of a program, are normally further compared with a template which is either a constant specified in the program, or a function from the user&#39;s data and/or an equipment of the user&#39;s computer, forwarded to a program&#39;s manufacturer for generation of a serial number. Sometimes a serial number is utilized as a key for decryption of encrypted source code or its parts.  
           [0008]    Disadvantageous feature of this method is the possibility for illegal distribution of unlicensed copies of the program together with a serial number, if it does not depend on individual configurations of the user&#39;s computer. In case such correlation exists, this creates a significant load on a user support service which has to provide registered users with a new serial number every time they change (e.g., in case of upgrade or failure) computers elements, on which such number rely on. This is also inconvenient for the users who, after replacement of computer parts, cannot use formerly purchased software, until they communicate the new computer configuration to its manufacturer and receive a new number in reply. In this case, there is a possibility which is left to eliminate from the source code the check for correctness of a serial number (e.g., if it is not used as a key for code decryption).  
         SUMMARY OF INVENTION  
         [0009]    The present invention offers a method and program security system against unauthorized copying with the use of a method which significantly reduce or eliminate drawbacks of conventional methods.  
           [0010]    More specifically, the present invention describes a method and security system with the use of asymmetrical cryptography algorithms. This allows for fixing a program copy to a specific Consumer, as well as for providing for lower probability for distribution among numerous Consumers of a single program copy legally purchased by one of them. In case when such distribution occurred, there is a possibility to locate the Consumer distributing illegal copies, in order to apply legislative actions against such Consumer.  
           [0011]    One of the methods of the present invention provides for encryption of an executable code of a program copy when it is sold using an asymmetrical cryptography method with a public key obtained by the Consumer. The encrypted program copy, using the above-described method, prepared for sales to a specific Consumer, cannot be decrypted, and therefore, cannot be executed by anybody besides the Consumer who has a private key which makes a pair with a public key, used when the program copy was sold.  
           [0012]    The present invention gives an important technical advantage, providing for program execution only by the Consumer, who bought it from the Vendor.  
           [0013]    The present invention provides for another important technical advantage, allowing to determine, which Consumer submitted it&#39;s program copy for illegal copying, without possibility to deny this fact by the Consumer.  
           [0014]    The present invention provides for another important technical advantage, giving the Consumer a possibility to change computer configuration on which the protected program is running, without addressing to program&#39;s Vendor for a new key after that.  
           [0015]    The present invention provides for another important technical advantage, giving the Consumer a possibility to execution of protected program on any accessible computer, and not only on the Consumer&#39;s computer, the features of which were known to program&#39;s Vendor.  
           [0016]    The present invention provides for another important technical advantage, giving the possibility both to Consumer and the Vendor to revoke program copies, matching with respective private keys of uncontrollable Consumers, making it impossible to execute these copies by persons who got access to such keys.  
           [0017]    The present invention also provides for another important technical advantage, allowing the Consumer to remember only one serial number for all utilized programs, this number is the Consumer&#39;s private key or password for access to such key. 
       
    
    
     BRIEF DESCRIPTION OF DRAWINGS  
       [0018]    For better understanding of the present invention and its advantages, hereby a reference is made to the following description which is considered jointly with attached drawings, where the respective numbers represent the respective elements, and where:  
         [0019]    [0019]FIG. 1 shows a process for generating and executing a program protected according to an exemplary embodiment of the present invention.  
         [0020]    [0020]FIG. 2 shows a process for executing the protected program when a revocation check of a private key is made.  
         [0021]    [0021]FIG. 3 shows a process for executing the protected program, when decryption of a source code is performed in the course of its execution.  
         [0022]    [0022]FIG. 4 shows a structural diagram of a computer, in which CPU contains a special module for checking Consumer rights for program execution.  
         [0023]    [0023]FIG. 5 shows a process for generating and executing the protected program when both methods of symmetrical and asymmetrical cryptography are simultaneously utilized. 
     
    
     DETAILED DESCRIPTION  
       [0024]    The preferable embodiments of the present invention are shown in figures, identical numbers are used as reference for identical and correlating parts of different drawings.  
         [0025]    [0025]FIG. 1 shows one of the implementations of a program security system against unauthorized use. Consumer  101 , willing to purchase a copy of a program  105 , sends to Vendor  100  its public key  107  (e.g., as a part of a digital certificate). In case of purchasing the program  105  via the Internet, when the SSL protocol is used, it is possible to use the feature of this protocol—request for a public key  107 . After obtaining such public key  107 , the Vendor  100  encrypts the program  105  with this key  107  utilising an asymmetrical algorithm  102  (e.g., see U.S. Pat. No. 4,405,829). The Vendor  100  sends to the Consumer  101  an encrypted program  108  which was obtained as a result of this operation. The Consumer can save the encrypted program  108  in a memory  103  of its computer. The memory  103  may be any information storage device, including RAM, hard drive and tapes.  
         [0026]    When executing the encrypted program  108  after removing from the memory  103 , it is decrypted using an asymmetrical algorithm  104  (which corresponds to the algorithm  102 ) with a private key  110  of the Consumer corresponding the public key  107 . A decrypted program  109 , which is identical to the program  105 , is sent for execution to a CPU  106  of the Consumer&#39;s computer.  
         [0027]    [0027]FIG. 2 shows the executable encrypted program  108  which includes a certificate revocation module  201  for revocation check of the private key  110 . This module  201 , after receiving the private key  110  as part of the Consumer&#39;s certificate, determines through information accompanying the key  110 , a location of certificate revocation lists (CRL)  205 . After that the program  108  sends a request  202  to a storage  203  of the CRL  205  (e.g., the storage  203  may be a certificate authority which authenticates the public key  107 ).  
         [0028]    A reply  204  received from the certificate authority may include information on revocation of the private key  110 . This reply may also include a digital signature so that the requesting program  108  can verify its authentication. Depending on the reply, the encrypted program  108  either cancels its execution or delegates an administration of a main part of the code to a decryption module  206 .  
         [0029]    [0029]FIG. 3 shows the encrypted program  108  which decrypt procedures&#39;code immediately prior to their execution in order to complicate the process of bypassing protection by copying memory section, including a decrypted source code. Such program  108  contains one or more encrypted procedure  302 . When in the execution process of the program  108 , there may be a necessary to forward the administration to such a section. In this case, the decryption module  206 , which decrypts only this section of the program  108 , is called out. At the end of execution of the encrypted procedure  302 , a memory erasing module  304  may be called out which deletes the decrypted section code of the encrypted program  108  in the memory  103 .  
         [0030]    This process is repeated during execution of the next encrypted section.  
         [0031]    For further complication of bypassing protection in case, when both methods of symmetrical and asymmetrical cryptography are used simultaneously, as shown on FIG. 5, different symmetrical keys can be used for encryption of various parts of program.  
         [0032]    [0032]FIG. 4 illustrates an operation of a CPU  403  which is equipped with a decryption module  405  for decryption of information coming from a memory  402  according to the present invention. The program, encrypted with the public key  107  on a computer  401 , is located in the memory  402 . The CPU  403  utilizes selection of commands in machine code for their execution from the memory  402 .  
         [0033]    Before execution of the encrypted program, the private key  110  is entered to a private key register  407  located in the CPU  403 . While executing the program, its encrypted executable code is loaded into the CPU  403  from a memory of a boot module  404  which forwards encrypted codes of executable commands into the decryption module  405 . This module  405 , utilizing the content of the private key register  407 , decrypts command codes by converting them to condition suitable for execution by an execution module  406 . The execution module  406  is responsible for execution of actions assigned by these commands. Moreover, the program access to its decrypted code can be restricted only to its execution, disallowing its reading in the way of data. This restriction may be used to prevent leakage of decrypted information in case when the program (e.g., as a result of a mistake resulted from a buffer overload) is used for reading its decrypted code and its further recording to any memory in decrypted mode.  
         [0034]    This method can be further improved by introducing of encryption utilising methods as illustrated in FIG. 5. For this purpose one more register for storage of a symmetrical key  506  of a symmetrical cryptography algorithm can be foreseen in the CPU, where this key  506  is recorded after its decryption with the use of asymmetrical cryptographic algorithm  505 , and one more decryption module  507 . The decryption module  507  decrypts encrypted information using a symmetrical cryptography algorithm and the symmetrical key  506  from the above-mentioned register.  
         [0035]    This scheme can also be extended not only to command codes, but to data processed by these commands. In this case it is also possible to encrypt information, received as a result of program execution, when such information is outputting from the CPU. For encryption, it is possible to use methods described above and shown in FIGS. 1 and 5, which are used as methods for the use of information by the Vendor  100 .  
         [0036]    [0036]FIG. 5 shows a further improvement of the method according to the present invention, given that symmetrical cryptography procedures may be executed significantly faster than asymmetrical cryptography procedures.  
         [0037]    When selling the program, the Vendor  100  is randomly generating the symmetrical key  501  for the symmetrical algorithm. After that program  105  is encrypted with the symmetrical key (step  502 ). At the same time, the symmetrical key  501  is also encrypted using an asymmetrical cryptography (step  503 ). The public key  107  received from the Consumer  101  serves as an encryption key. In the step  504 , the encrypted symmetrical key  501  is added to encrypted source code resulting in the encrypted program  108  which is forwarded to the Consumer  101 .  
         [0038]    The Consumer  101 , while executing the encrypted program  108 , primarily decrypts the symmetrical algorithm key (step  505 ) with using the private key  110 , which creates a pair with the public key  107 . The symmetrical key  506  obtained during this step, is identical to the symmetrical key  501  which is generated by the Vendor  100 . After that, the symmetrical key  506  is used for decryption of an executable source code of the program (step  507 ). This results in getting the executable code, which coincides with the program  105  and is executed by the CPU of Consumer&#39;s computer.  
         [0039]    In any of the described implementations of the present invention, it is recommended to erase decryption keys from the memory of the Consumer&#39;s computer immediately, if they are not required within a certain period of time (e.g., the key that is used for decryption of executable source code, is not required after decryption of this code until the next execution of this program).  
         [0040]    Particular interest presents the utilization of a program protection according to the present invention of digital certificates which are issued by certificate authorities, which confirm matching of the Consumer&#39;s identification with the public key  107 . In this case, at the attempt to distribute program copies together with the private key  110  for its decryption (which is typical for protection schemes utilising serial number), it is possible to detect a Consumer  101  who purchased this copy and provided the private key  110  for the distribution.  
         [0041]    This method can also be easily applied to protection of information of any type (e.g., audio and video recordings), and not only to executable source codes. In this case, decryption may be executed by application utilising these data (e.g., applications for playback of audio or video recordings), or by an operating system.  
         [0042]    Whereas the present invention was described in details, is must be clear, that various changes, replacements and amendments hereto can be made without departuring from its spirit and scope of invention, according to its description in the attached claims of the present invention.