This invention generally relates to the protection of data and software from unauthorized usage and copying, and more particularly but not exclusively to distributing and protecting data and software to be used only according to set policies.
Computer software today is being protected by different means in order to prevent its illegal use and copying. Some of these protection mechanisms include copy protection mechanisms built into the software. Others include user verification. Nevertheless, hackers manage to bypass these protection schemes. These hacked versions are then made available, for example on the Internet for free download.
Hackers are able to break program protection due to the fact that hackers have access to entire memory, CPU and registers of their computer. With advanced tools, reengineering of protecting methods is conducted to create a version that can be freely distributed and used.
Some copy protection mechanisms operate by requiring the user to be online on the Internet while using the program. In this scenario, the software installed on the user's computer is incomplete and some portions are carried out online. The problem with this mechanism is that network connection is not always available and can be a major drawback for people wishing to use the software when not connected to the Internet, for example, people on the move. Another major disadvantage of the online protection mechanism is that enterprises that are very carefully about protecting their data and network do not wish their software to transfer data outside the organization.
Some software companies wish to offer a demonstration version of their program, for people to evaluate prior to their purchase. The problem with these versions is that hackers can use these demonstration versions to break the software protection mechanisms. As a result, the software vendors cripple these demonstration versions. This is done in order to prevent hackers from using these software versions to break their software and spread it for free.
Other problems in the field of software protection include protecting databases from being used not as directed by its owner. For example, suppose a phone directory program is sold to individuals. A hacker can then use the hone directory database in unlawful manners, such as lookup personal information from a phone number, or request the personal information of all people living in a building or in a certain street.
Further problems, related to the above include protecting programs from being altered by hackers. An altered program can result in changing policies of software rules by hackers. Yet other problems include protecting the execution environment of the program. If the execution environment of a program can be altered by a hacker, security measures built into a program can be circumvented and the program be used in manners undesired by program maker. This can result in using protected data in ways not allowed by data owner.
The protection of data content files such as database files as described above, as well as other data content files is a part of this problem of protecting content from being copied and used in manners not as intended.
There is thus a widely recognized need for way to protect software and data that would prevent software copying, database access, protecting program execution environment and protecting programs from being altered and it would be highly advantageous to have such a method devoid of the above limitations.
According to one aspect of the present invention there is provided an autonomous data storage device coupled to an external device, the autonomous data storage device comprising:
According to a second aspect of the present invention there is provided a method for executing a digital appliance program in a protected manner using an autonomous data storage device coupled to a digital appliance the method comprising:
(a) creating at least one protected program to be executed separately from said digital appliance program,
(b) requesting said autonomous data storage device to execute at least one of said protected programs for said digital appliance program,
(c) executing at least one of said protected programs by an internal program interpreter located inside said autonomous data storage device,
(d) sending calculated results of said execution of at least one protected program to said digital appliance program.
According to a third aspect of the present invention there is provided a method for preparing and distributing protected programs to be executed on a storage device in conjunction with digital appliance programs running on a digital appliance, the method comprising:
(a) creating at least one said protected program to be executed in conjunction as part of said digital appliance program,
(b) forming license information for said at least one protected program for at least one requesting storage device,
(c) distributing said at least one protected program and said license information securely to said requesting at least one storage device.
Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. The materials, methods, and examples provided herein are illustrative only and not intended to be limiting.
Implementation of the method and system of the present invention involves performing or completing certain selected tasks or steps manually, automatically, or a combination thereof. Moreover, according to actual instrumentation and equipment of preferred embodiments of the method and system of the present invention, several selected steps could be implemented by hardware or by software on any operating system of any firmware or a combination thereof. For example, as hardware, selected steps of the invention could be implemented as a chip or a circuit. As software, selected steps of the invention could be implemented as a plurality of software instructions being executed by a computer using any suitable operating system. In any case, selected steps of the method and system of the invention could be described as being performed by a data processor, such as a computing platform for executing a plurality of instructions.
The invention is herein described, by way of example only, with reference to the accompanying drawings. With specific reference now to the drawings in detail, it is stressed that the particulars shown are by way of example and for purposes of illustrative discussion of the preferred embodiments of the present invention only, and are presented in order to provide what is believed to be the most useful and readily understood description of the principles and conceptual aspects of the invention. In this regard, no attempt is made to show structural details of the invention in more detail than is necessary for a fundamental understanding of the invention, the description taken with the drawings making apparent to those skilled in the art how the several forms of the invention may be embodied in practice.
In the drawings:
It will be appreciated that, for simplicity and clarity of illustration, elements shown in the figures have not necessarily been drawn to scale. For example, the dimensions of some of the elements may be exaggerated relative to other elements for clarity. Furthermore, where considered appropriate, reference numerals may be repeated among the figures to indicate corresponding or analogous elements.
The preferred embodiments teach an autonomous data storage device for protecting software files and data files stored on it. Before explaining at least one embodiment of the invention in detail, it is to be understood that the invention is not limited in its application to the details of construction and the arrangement of the components set forth in the following description or illustrated in the drawings. The invention is capable of other embodiments or of being practiced or carried out in various ways. Also, it is to be understood that the phraseology and terminology employed herein is for the purpose of description and should not be regarded as limiting.
The present invention includes several embodiments that can be realized using the autonomous data storage device described herein. In this disclosure, an autonomous data storage device for storing data files via an external file interface is described, where the external file interface is controllable from an external device such as a computer to which it is connected via a data link such as a USB. The autonomous data storage device further comprises a physical file storage such as flash memory, and an internal file management system. The internal file management system can block the access of external device to files contained within physical file storage. The autonomous data storage device further comprises an internal program interpreter unit such as a Java Virtual Machine, which is capable of carrying out programs within autonomous data storage device. The internal program interpreter unit can dynamically access code and data files within internal management file system that are blocked for access to external device. The autonomous data storage device can therefore execute protected software in a secure computing environment within autonomous data storage device. Software execution results, optionally making use of protected data files within the autonomous data storage device, can then be sent to external device without revealing the content of the protected code and optional data files.
Software that executes in digital appliance, such as a computer, can send requests to programs residing on media device, which are inaccessible directly to the digital appliance. These programs within media device execute within media device internal program interpreter. Software on digital appliance receives results from execution of such inaccessible program and only then can complete its tasks.
Executing software in this manner together, both software piece on digital appliance and protected software piece on media device, forms one entity of protected software execution. Executing software in this manner allows protecting the entire software from being duplicated; executing software according to set policies; allowing usage of content files according to set policies; executing software in a manner that software code and data cannot be altered; executing software in a protected environment; allowing program and content downloading without compromising data content; allowing usage of protected software and data content even when there is no network connection.
Reference is now made to
The separation of program N into program N″, program N′ code and additional N′ data file is specific to each program. This separation may be done in a manner so that the N′ code file and N′ data file are a crucial part of program N or contain an important aspect of program N. Code File N′ 108 and data file N′ 106 may be handled and kept in a manner that is safe, for example from being duplicated or altered. This is explained further in this document.
As an example of splitting a program, suppose that program N is a word processor program having a spell-checking feature. Program N″ may be the word processor program without the spell checking feature enabled. The spell checking feature is packaged as a program file N′ code 108 that can search in a dictionary to find the existence of a certain word within a dictionary, or to find closely related words if the exact word is not found. In this example the program N′ data file 106 includes a dictionary of the English language to be used with program N′ code 108. If a user copies the word processing file, program N″, then this user will not be able to execute spell checking with that word processor because this requires data code N′ 108 and data file N′ 106. This example illustrates the difficulty of reverse engineering N′ code 108 and N′ data file 106, since even if many documents are checked for spelling, not all words in the English language will be revealed and the algorithm for suggesting related words is not revealed. In a similar manner, other programs can be split to allow protecting algorithms and data files, hence allowing to protect original program N 102.
Another example of splitting a program, can include content data files such as audio files, files containing book information, video information etc, which may be used as N′ data file 106. Data files can be added or removed. This invention does not limit program N 102 to be a static single program. In this case program N′ code 108 may be a full or partial content playing or rendering mechanism, a streaming mechanism etc.
In some embodiments program N′ code 108 is made in a manner so that its execution requires relatively low CPU and a small volatile memory footprint to be executed in a limited resources environment.
In the description herein below, the term Media Device refers a digital storage unit such as a computer hard disk, a flash card or a key-ring storage device etc.
In the description herein below, the term Digital Appliance refers to a digital appliance making use of a media device, such as a computer, a multimedia player, a mobile phone etc.
In the description herein below, the term Patent A refers to provisional patent application U.S. 60/658,568 filed Mar. 7, 2005 by the present inventor. Patent A describes how some files on media device may become inaccessible to digital appliance, but still accessible within media device so that media device may use these files to output data back to digital appliance.
In the description herein below, the term Script Interpreter refers to a program that takes a file as input and executes it directly without needing to compile the input file first. Some examples of script interpreters are C-shell, Perl, Bourne Shell etc.
In the description herein below, the term “Script File” refers to a file that is executed by a script interpreter. Some examples are C-Shell scripts; Perl scripts; Bourne shell scripts etc.
In the description herein below the term Java Virtual Machine or JVM refers to an abstract computing machine whose instruction set is called Java bytecode, where Java is a computer programming language.
Reference is now made to
The program N′ data file 208 and program N′ code 210 are as described in
Program N″ 238 can now execute code portions that require N′ code 210 and data 208 files, by making a request to media device. Media device can then execute program N′ code using internal program interpreter unit 218, optionally using program N′ data 208 to output data back to program N″ 238 executing in digital appliance. In embodiments where media device is able to protect its execution environment and program N′ code 210 and data 208 are inaccessible to media device, an environment for controlled, secure, unalterable computing is achieved.
Reference is now made to
The program N′ data file 208 and program N′ code 210 are as described in
Program N″ 238 can now execute code portions that require N′ code 210 and data 208 files, by making a request to media device. Media device can then execute program N′ code using internal interpreter/JVM 218, optionally using program N′ data 208 to output data back to program N″ 238 executing in digital appliance. In embodiments where media device is able to protect its execution environment and program N′ code 210 and data 208 are inaccessible to media device, an environment for controlled, secure, unalterable computing is achieved.
This image illustrates in a more detailed way to
Patent A explains how files such as program N′ data 208 and program N′ code 210 may be transferred securely into user media device through the network without revealing data contents to the digital appliance. Patent A also explains how several different policies may be used within a single media device so that several programs may execute through the same device unit without allowing one program data files to be accessible to another program script/Java file. Using patent A, these properties can be used in this present invention. Code and data files may be transferred securely through the network to add and enhance functionality of media device. In addition, several entities such as companies may produce different code portions, which cannot access other entities code or data files.
In some embodiments, other manners than using patent A for protecting files from digital appliance access may be used. Such manners may include hiding all non-volatile memory from digital appliance; hiding a portion of non-volatile memory from digital appliance; In some embodiments file encryption methods may be used such that hidden files are encrypted and keys are known internal to the media device. Internal interpreter/JVM 218 may use internal keys to make use of encrypted files securely. In other embodiments other manners may be used to achieve this goal.
The internal language interpreter/JVM is capable of executing code files such as program N′ code 210. This execution occurs on media device CPU 214 unreachable by digital appliance 230.
In some embodiments a script language interpreter may be used to execute file scripts. In some embodiments a Java virtual machine such as a micro edition JVM or a specific tailored JVM may be used to execute Java bytecode programs. In some embodiments a dialect of Java may be used. In this preferred embodiment, program N′ code 210 is a Java bytecode program. In some embodiments other types of interpreted languages may be used.
In some embodiments program N′ code 210 may make changes within program N′ data file 208.
Reference is now made to
In step 301 program N″ 238 executes within digital appliance 230 running on CPU 232 and volatile memory 234 of digital appliance. Program N″ sends a requests to media device 202 with parameters P. The request is made through media device I/O unit 216.
In step 302 media device 202 activates the execution of program N′ code 210 with input parameters P. The code is executed by internal interpreter 218, running on CPU 214 and volatile memory 212 within media device 202.
In step 303, program N′ code can access program N′ data file 208 while executing. Program N′ code may make changes to program N′ data file. Other data files may change during program N′ data file execution. These files may be accessible or may become accessible to digital appliance at a later time.
In step 304, program N′ code 210 executes and calculates result for requested parameters P. Result may be calculated with data included in program N′ data file 208.
In step 305, calculated result for requested parameters P is returned to digital appliance 230. Results may be returned to digital appliance in various ways, such as through USB response messages; though files being written by executing program N′ within media device for digital appliance etc.
This series of steps displays how program N″ uses secure code and data files located on media device while executing. Without the media device, program N″ misses some capabilities or may be totally useless. The code 210 and data 208 files cannot be accessed by digital appliance directly and therefore cannot be duplicated. Protected code file and data file may be prepared so that it would be very difficult to imitate its actions or would take a long time to crack. For example, if sending all possible result values for all input parameters P from program N″ would take sufficiently long enough time then this protection prevents program N from being duplicated.
Some hacking attempts that may take place by hackers are (a) brute force attempts to get all return values for all input parameters and (b) attempt to use a single media device for several running instances of the software. (perhaps through the network).
A prevention measure against hackers is to check the number of requests made within a period of time, as compared with a normal program request values. If the request rate from a media device is much higher to the normal request rate, device usage may be suspended temporarily or indefinitely.
Another prevention measure against hackers is to internally follow the state of which the software runs, by following the types of requests received from digital appliance. A media device may be locked in case illegal transition between states occurs.
In some embodiments data may be communicated securely between media device and digital appliance. A digital appliance may be a trusted server such as described in patent A. In such a case, certificate extension or other data changes that may represent electronic money, for example, may take place within media device.
In some embodiments data may be communicated securely between media device and a trusted server. This communication is made through a connection between a trusted server and digital appliance using encryption. Such communication is described in patent A. In such a case, certificate extension or other data changes that may represent electronic money, for example, may be changed within media device. This secure communication may require network connection.
In the description herein below, the term “certificate” refers to a file that includes information specifying usage policies for a file or for a group of files. For example, the certificate may hold an expiration date for the usage of the files, or the certificate may hold a number of times a program may execute.
Reference is now made to
In step 401 Program N is split into program N″, N′ code file and N′ data file as explained in
In step 402 Program N″ and N′ execution is checked and debugged with SDK (Software development kit) that may be available for development. With this tool it is possible to develop and check N′ code file and N′ data file prior to shipment of software and data to software users.
In step 403 software owner delivers developed N′ code file and N′ data file to a content distributor. A content distributor is able to send files securely into user's media device, such as explained by patent A.
In step 404, a content distributor securely send N′ code file and N′ data file to authorized software users, along with certificate files indicating the usage policy of the files for each user. This occurs such as explained in patent A. Other secure updates to user secured files may take place here as well.
In step 405 authorized users may then use program N″ with features of N′ code file and N′ data file, according to policy rules as indicated in certificate files. Usage of software may be made without network connection.
This series of steps displays how program N may be sent through the network for example, to users that can use program N fully but cannot duplicate program N. In addition, it is possible, per user, to allow usage of software for a specific amount of time for demonstration purposes or for leasing software for a limited period of time etc. With the present invention it may be possible to add software to media device after the device is sold to a user, without requiring firmware update for example.
Reference is now made to
Reference is now made to
Reference is now made to
The system of
The system of
In some embodiments a module for determining the date and time is added to the media device in order to be able to enforce software policies that are time dependent. One example for such a module is a battery powered clock.
In some embodiments hash values for restricted files are kept and a hash algorithm may be computed internally to media device, in order to verify that files have not been altered. In some embodiments, a certificate is sent with each restricted file, which includes for example a hash value, decryption key and policy of usage for the restricted file. Policy of usage may be for example an expiration date for the usage of the restricted file. Certificate may be encrypted using media device internal key.
It may be appreciated by those skilled in the art of the present embodiments that the present embodiments have the following advantages over existing art:
Accordingly, the reader will see that the closure of this invention provides a method to protect software from being duplicated and used in an unauthorized manner. The fact that an internal program interpreter within media device makes use of code files and data files inaccessible by digital appliance, provides the ability to protect software and content files. This protection carried out as follows: Software executing on digital appliance makes requests to a secure program executing within media device. The secure program is an interpreted program executing within media device by internal program interpreter. The secure program completes its computation and sends a reply to the digital appliance software. The fact that the internal program is interpreted allows the flexibility of updating and adding new programs and functionality to media device.
Furthermore the closure of this invention has the additional advantages in that:
(a) Following software installation or purchase, the software may be fully used without the requirement of a network connection.
(b) Software may be freely moved between computers and between people, much like a physical object can be moved between places and people. The software may be used anywhere any time (providing it conforms to the software allowed policy).
(c) The present invention along with patent A for example, provides an infrastructure to transfer, store, control the usage and execute software in a manner that is protected and isolated from user reach.
(d) A development kit and the infrastructure mentioned above in item (c) serve as a tool for the development of new applications, due to the presented ability to protect and control software.
(e) Different software and data files from different vendors may coexist on the same media device without the risk of security breach between files of different companies.
Although the description above contains many specifications, these should not be constructed as limiting the scope of the invention but as merely providing illustrations of some exemplary embodiments of this invention.
For example, there may exist a plurality of files rather than a single described program N′ data and program N′ program code. Some files may be used to read data and some to write data; The interpreter and code that may be used may be a Java virtual machine and java bytecode or even compiled code or semi-compiled code. This invention may be used by applications for different reasons than software protection. Software protection is just one example. Other examples may be game information that may be securely kept and manipulated, data that represents goods or money that may be manipulated etc; A program may be split to other parts than indicated in
While certain features of the invention have been illustrated and described herein, many modifications, substitutions, changes, and equivalents may now occur to those of ordinary skill in the art. It is, therefore, to be understood that the appended claims are intended to cover all such modifications and changes as fall within the true spirit of the invention.
It is expected that during the life of this patent many relevant secured storage media devices and systems will be developed and the scope of the terms herein, particularly of the terms “autonomous data storage device” and “internal program interpreter”, is intended to include all such new technologies a priori.
It is appreciated that certain features of the invention, which are, for clarity, described in the context of separate embodiments, may also be provided in combination in a single embodiment. Conversely, various features of the invention, which are, for brevity, described in the context of a single embodiment, may also be provided separately or in any suitable subcombination.
Although the invention has been described in conjunction with specific embodiments thereof, it is evident that many alternatives, modifications and variations will be apparent to those skilled in the art. Accordingly, it is intended to embrace all such alternatives, modifications and variations that fall within the spirit and broad scope of the appended claims. All publications, patents and patent applications mentioned in this specification are herein incorporated in their entirety by reference into the specification, to the same extent as if each individual publication, patent or patent application was specifically and individually indicated to be incorporated herein by reference. In addition, citation or identification of any reference in this application shall not be construed as an admission that such reference is available as prior art to the present invention.
This application uses the frammis vane disclosed in provisional patent application U.S. 60/658,568 “System and Method For A Dynamic Policies Enforced File System For A Data Storage Device” filed Mar. 7, 2005 by the present inventor. This application claims the benefit of U.S. Provisional Patent Ser. No. 60/716,557, filed Sep. 14, 2005 by the present inventor.
Number | Date | Country | |
---|---|---|---|
60716557 | Sep 2005 | US |