Abstract:
A method of execution of a software application. A storage device stores the software application in a first memory. The software application comprises code that, when executed by a computing device authenticates the storage device. The storage device verifies an integrity of the software application and transfers the software application to the computing device upon successful verification. The computing device executes the software application, which authenticates the storage device. If the storage device is successfully authenticated, the computing device accesses data in a second memory of the storage device, the data being susceptible to be used by the software application during execution. Also provided is the storage device.

Description:
TECHNICAL FIELD 
       [0001]    The present invention relates generally to software, and in particular to software copy protection. 
       BACKGROUND 
       [0002]    This section is intended to introduce the reader to various aspects of art, which may be related to various aspects of the present invention that are described and/or claimed below. This discussion is believed to be helpful in providing the reader with background information to facilitate a better understanding of the various aspects of the present invention. Accordingly, it should be understood that these statements are to be read in this light, and not as admissions of prior art. 
         [0003]    It will come as no surprise that software distributors are facing piracy in the sense that some people are using unauthorized copies of the software applications without paying for them. This is particularly true in the domain of computer games. Game providers and distributors therefore use protection mechanisms such as e.g. SecuROM and SafeMedia in an attempt to thwart such piracy. However, hackers have reacted by developing tools that at least partly defeat these protection mechanisms. 
         [0004]    It is possible that the distribution of software applications may change as support technology changes. For example, U3 is a technology dedicated to Universal Serial Bus (USB) keys; it facilitates the management of applications residing in the USB key flash memory storage area. The next generation of USB protocol will have much greater transfer rate than the current generation, possibly being even faster than transfer from a hard disk drive. 
         [0005]    The SanDisk TrustedFlash technology enables some security features—such as authentication, encryption, session key and DRM (Digital Rights Management) rights management—on flash memories. However, this technology is mainly oriented towards the protection of generic data than software applications, and it is more of a technology toolbox than a solution to a precise problem. 
         [0006]    A recent protection scheme provided by Thomson fights application piracy through the use of tamper resistant hardware bound to the application support. WO 2008/129009 describes a media package storing program code. The media package comprises a device storing a first part of the program code intended to be executed on a processor external to the media package, and a processing device storing a state and a second part of the program code. The first and the second parts of the program code are adapted to interact so as to execute the program code. The processing device comprises means for verifying the state, means for executing the second part of the program code if the verification of the state indicates that this is authorised, and means for communication with the processor external to the media package. The processing device further comprises an interface adapted to interact with a state change device, advantageously belonging to an anti-theft system in e.g. a supermarket, in order to set the state from a first state not authorising execution of second part of the program code to a second state authorising execution of second part of the program code. 
         [0007]    WO 2009/074686 describes a cartridge for use with a game console. The cartridge comprises a ROM, a non-volatile memory, a processor and a dispatcher. An application running on the console may communicate with the dispatcher using predefined addresses, which enables the dispatcher to access the ROM, the non-volatile memory, or the processor, as the case may be. The invention improves on the prior art copy protection as no generic copy method may be found if the addresses are changed from one cartridge to another. In addition, to copy the software, the processor must be emulated. 
         [0008]    The solution proposed is based on the use of a secure element fixed on an optical disc (or other media), the secure element being accessed through contactless communication means. A drawback is that such solution requires the use of a dedicated optical reader with integrated contactless reader. 
         [0009]    To overcome this drawback, it is possible to separate the media and the secure element. However, this would entail some important usability drawbacks, especially when being used careless by teenagers and kids, as it for example would be too easy to lose one or the other. 
         [0010]    Furthermore, secure elements are generally costly, so system designers try to minimize the amount of “secure memory”. Therefore the secure element can only store a limited amount of data, generally strictly related to security. This may prevent the storage therein of user configuration data, e.g. avatar  3 D models. This may therefore limit the use of the application to a single computer, since the application related data—device configuration, application settings, scores—are stored on the computer&#39;s hard disk. 
         [0011]    EP 1076279 teaches a different solution where a computer comprises a trusted module that functions as a generic dongle for the platform. The dongle can perform licensing and integrity checks etc. However, the solution is not at all portable and it only applies to computers comprising the trusted module. 
         [0012]    U.S. Pat. No. 6,442,626 teaches a further solution in which a host transmits a challenge to a storage medium, which returns a response. Only if the response is correct may the host access data on the storage medium. This solution for example requires that the host be aware of the challenge-response protocol before connection, which also makes the portability of the system quite low. 
         [0013]    It can therefore be appreciated that there is a need for a solution that provides a software application protection scheme that enables portability of the application, in particular to standard, non-specialized, platforms. This invention provides such a solution. 
       SUMMARY OF INVENTION 
       [0014]    In a first aspect, the invention is directed to a method of execution of a software application. A storage device stores, in a first memory, the software application comprising code that, when executed by a computing device authenticates the storage device. The storage device verifies an integrity of the software application. If the integrity is successfully verified, then the storage device transfers the software application to the computing device where it is executed, thereby authenticating the storage device. Execution of the software application is stopped if the authentication fails. 
         [0015]    In a first preferred embodiment, if the storage device is successfully authenticated, the computing device requests data in a second memory of the storage device, the data being susceptible to be used by the software application during execution. 
         [0016]    In a second preferred embodiment, a Secure Authenticated Channel between the computing device and the storage device during authentication. 
         [0017]    In a second aspect, the invention is directed to a storage device that comprises a first memory adapted to store a software application, the software application comprising code that, when executed by a computing device authenticates the storage device; and a processor adapted to verify an integrity of the software application, and transfer the software application to the computing device only if the integrity is successfully verified. 
         [0018]    In a first preferred embodiment, the storage device further comprises a second memory adapted to store data that is susceptible to be used by the software application during execution. The processor is further adapted to allow, after successful authentication of a processor of the computing device, the processor of the computing device access to the data in the second memory. 
         [0019]    It is advantageous that the processor of the storage device is further adapted to establish a Secure Authenticated Channel with the processor of the computing device during the authentication. 
     
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         [0020]    Preferred features of the present invention will now be described, by way of non-limiting example, with reference to the accompanying drawings, in which 
           [0021]      FIG. 1  illustrates a system according to a preferred embodiment of the invention; and 
           [0022]      FIG. 2  illustrates a method of interaction between a secure device according to a preferred embodiment of the invention and a computer. 
       
    
    
     DESCRIPTION OF EMBODIMENTS 
       [0023]    A main inventive idea of the present invention is a device for the distribution of a computer application (hereinafter ‘application’), in particular computer games, that does not require any permanent installation on the computer. The solution, which is illustrated in  FIG. 1 , is particularly adapted to today&#39;s nomadic environments. 
         [0024]      FIG. 1  illustrates a system  100  comprising a computer  110  and a secure device  120  of the present invention. The secure device  120 , which is preferably implemented as a USB key or other USB device implementing the U3 technology, comprises:
       a read-only memory (ROM)  122  for storing the application code  1221 .   a non-volatile memory  123 , preferably a flash memory, for storing persistent initialization data and personal data, such as for example data relating to a user&#39;s character in a game.   a secure processor  121 , preferably implemented in tamper resistant hardware (such as a smartcard chip), which is the unique entry point to the secure device  120 . The secure processor  121 , which may be embodied as several physical processors, handles memory access and comprises an integrity unit  1211  for controlling the integrity of the application code  1211  and an authentication unit  1212  for handling authentication with the application when this is executed on the computer  110 .   an interface  125 , preferably a USB interface, for providing control and feedback with the computer  110 .   an optional volatile memory  124  for storing data that will be deleted automatically on power off. The volatile memory  124  may be used as additional temporary storage for the secure processor  121  and as secure temporary storage for the application.       
 
         [0030]    The computer  110 , advantageously a standard Personal Computer (PC), comprises a processor  111 , RAM memory  112  and an interface  113  for communication with the secure device  120 . The operating system of the computer  110  and its applications are loaded into the RAM memory  112  and run from there. 
         [0031]    The secure device  120  is arranged to be recognized as a standard storage equipment when it is connected to the interface  113  of the computer  110 . 
         [0032]      FIG. 2  illustrates a method of interaction between the secure device  120  and the computer  110 . The secure device  120  is first connected  210  to the computer  110 . If the secure device  120  is not recognized  220  by the computer, the method ends with an abnormal exit  290 : the secure processor  121  and the computer  110  cannot communicate. 
         [0033]    If the secure device  120  is recognized, then the secure processor  121  verifies  230  the integrity of the application code  1221 . The verification check is made by the integrity unit  1211  of the secure processor  121 , for example by calculating a hash value and comparing the calculated hash value and a stored hash value, preferably hard coded during manufacturing, or by calculating a checksum that is compared with a reference value. If the integrity check fails, the method ends with an abnormal exit  290 : the secure processor  121  refuses further communication with the computer  110  and the application code  1221  is not uploaded to the computer  110 . On the other hand, if the integrity check is successful, the application code  1221  is transferred  240  to the computer  110  where it is copied into the RAM memory  112  resulting in the application being loaded. 
         [0034]    In brief, the application code  1221  stored in the ROM  122  is verified for integrity and transferred to the computer RAM memory  112 . 
         [0035]    The application is then executed by the processor  112 . During the execution, the application performs authentication  250  with the secure processor  121 . The authentication is performed using an authentication function and data in the application that interacts with the authentication unit  1212  and authentication data of the secure processor  121 . Any suitable prior art authentication protocol, preferably one that establishes a Secure Authenticated Channel (SAC), may be used, for example the one described in granted U.S. Pat. No. 7,545,932. The authentication function and data in the application are preferably protected, for example through the use of prior art software protection techniques. 
         [0036]    If the authentication check fails, the method ends with an abnormal exit  290 : the secure processor  121  refuses any further communication with the computer  110  and the application will halt. 
         [0037]    If the authentication succeeds, the application is executed  260  and it is able to access, through requests to the secure processor  121 , the volatile memory  124  and the non-volatile memory  123 , the data being returned by the secure processor  121 . 
         [0038]    When the execution of the application ends, the method performs a normal exit  280  (i.e. ‘normal exit’ in step  270  ‘Exit type?’), as the application asks the secure processor  121  to close any pending actions, after which the application clears itself from the RAM memory  112 . If it hasn&#39;t been done already, the application transfers relevant application parameters, such as data relating to a user&#39;s character in a game, for storage in the non-volatile memory  123 . The secure processor  112  then preferably nullifies and shuts down the volatile memory  124 , and invalidates all authentication credentials. 
         [0039]    If the secure device  120  is removed abnormally during the execution of the application (i.e. ‘abnormal exit’ in step  270  ‘Exit type?’), this is an abnormal exit  290 . In this case, the data in the volatile memory  124  will be lost. At the next connection (or power-on), the secure processor  121  starts by rolling back any pending actions (e.g. memory access) and invalidates any previous authentication. After this phase, the secure device  120  restarts normally, i.e. the connection corresponds to step  210  of the method. The secure device  120  does not accept any communication with a previously loaded application until a new complete transfer process  240  is done. The application can no longer interact correctly with the secure device  120  if the latter is no more present or has been reconnected (as the authentication is invalid). In this case, the application should clear itself from the RAM memory  112  and exit. 
         [0040]    It will be appreciated that the present invention implements a copy protection mechanism for computer applications that:
       can ensure the integrity of the application stored in the secure device;   is non-intrusive with regard to the computer: no additional hardware or software is required;   is particularly adapted to nomadic environments, allowing portability of the application and user data between different computers.       
 
         [0044]    The system is resistant to at least the following major attacks:
       software attack on the interface: the secure device does not offer direct access (read, write, list) to its memories. The secure processor will not implement this kind of interface.   hardware attack on the secure device: by definition the secure processor cannot be duplicated or modified. However, without further hardware protection, the memories of the secure device may be dumped and copied. Countermeasures for such attacks exist but are out of scope of the invention. However here is a glimpse of potential countermeasures:
           A dump of the read-only memory can allow reverse-engineering of the application code, which could be used to modify the application in order to bypass the use of the secure processor. A classical countermeasure is to use software protection techniques.   A dump of the other volatile and non-volatile memories can allow access to private application data. A classical countermeasure is the use of data encryption, preferably enforced by the secure processor.   
               
 
         [0049]    It will be appreciated that the present invention provides a device for copy protection for software application that enables portability of the software application and associated user data. 
         [0050]    Each feature disclosed in the description and (where appropriate) the claims and drawings may be provided independently or in any appropriate combination. Features described as being implemented in hardware may also be implemented in software, and vice versa. Reference numerals appearing in the claims are by way of illustration only and shall have no limiting effect on the scope of the claims.