Compiler that decrypts encrypted source code

Data processing: software development – installation – and managem – Software program development tool – Translation of code

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C717S162000

Reexamination Certificate

active

06684389

ABSTRACT:

BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to a decrypting compiler that accepts encrypted source code, decrypts the encrypted source code into plain text that is not available outside the compiler, and compiles the decrypted source code into a linkable object.
2. Description of the Related Art
In today's environment for software development, it is common for a software manufacturer to market software libraries to third-party software developers. The third-party software developers, in turn, use the libraries to write special purpose and customized application programs that are distributed to end users. As an example, a software manufacturer might develop a software library that includes functions to interface to hardware such as a digital camera or a printer. The software manufacturer supplies the software library to a third-party software developer, who might use the software library to develop a customized camera or printer application. The developer then compiles his customized code, together with the software library provided by the software manufacturer, so as to produce an executable application program that is then distributed to end users.
One problem encountered in such an arrangement arises from the existence of trade secret and other proprietary information that might reside in the software manufacturer's library. Because of the existence of trade secret and proprietary information, it is rare for a software manufacturer to supply source code for its software library. In particular, in a case where source code for the software library is provided to third-party developers, those third-party developers could easily learn of the trade secret and proprietary information from such source code. For this reason, most software manufacturers simply do not supply source code to third-party developers. Rather, what is supplied to third-party developers is a pre-compiled and linkable object which the third-party developer links with his customized code. Because source code is not supplied, the trade secret and proprietary information cannot be learned by the third-party developer.
For example, as shown in
FIG. 9
, a third-party developer uses programming application
100
to generate developer-generated source code
101
. This developer-generated source code is compiled by compiler
102
, and resulting object code
103
is linked to linkable libraries
104
by linker
105
to create executable binaries
106
. Linkable libraries
104
are supplied to the developer; however, in order to protect proprietary information therein, no source code is provided for the libraries.
The solution of providing pre-compiled linkable objects is not satisfactory, however, particularly when there are many different target platforms for the library. The reason that this solution is not satisfactory, is that the pre-compiled library must be compiled by the software manufacturer for each different target platform, making version maintenance and cross-platform compatibility complicated.
SUMMARY OF THE INVENTION
It is an object of the invention to provide a different solution to distribution of software libraries, that eases version maintenance and cross-platform compatibility problems, while at the same time protecting trade secret and proprietary information that might be contained in the software library's source code.
In one aspect, the invention is a decrypting compiler that accepts encrypted source code, and decrypts the encrypted source code into plain text that is not accessible outside the compiler. According to the invention, rather than providing plain-text source code for its software libraries, the software manufacturer instead provides encrypted source code. Since the source code is encrypted, third-party software developers cannot learn of proprietary and trade secret information contained in the source code. At the same time, because the compiler is working with source code, as opposed to a linker working with a pre-compiled linkable object, version maintenance and cross-platform compatibility is simplified. That is, with a decrypting compiler according to the invention, and with the software manufacturer providing encrypted source code rather than pre-compiled linkable objects, it is possible for the software manufacturer to provide only a single version of its software library, leaving to the compiler its usual responsibility of turning out different versions for each different target platform.
The decrypting compiler preferably uses a proprietary single-key encryption/decryption algorithm so that third-party software developers cannot learn of decrypted plain text source code. Alternatively, public key/private key encryption can be employed, with the private key being embedded in the decrypting compiler. Either way, the decrypting compiler decrypts the encrypted source code such that decrypted plain text for the source code is not accessible outside the compiler.
Further preferred embodiments of the decrypting compiler accept a parameter or parameters from the third-party software developer, with the parameters corresponding to one of plural different possible target platforms. By supplying the decrypting compiler with parameters that specify characteristics of a particular target platform, the decrypting compiler is able to compile different sections of the decrypted source code (through use of standard #if and #endif compiler directives) so as to tailor the compiler's output for the target platform. For example, the compiler's output could be tailored for a target platform having a particular processor such as a very long instruction word (VLIW) processor, based on parameters specifying a cluster type of the processor, register partitioning information for the processor, and the like.


REFERENCES:
patent: 4833599 (1989-05-01), Colwell et al.
patent: 5123045 (1992-06-01), Ostrovsky et al.
patent: 5339419 (1994-08-01), Chan et al.
patent: 5343527 (1994-08-01), Moore
patent: 5367651 (1994-11-01), Smith et al.
patent: 5542045 (1996-07-01), Levine
patent: 5604905 (1997-02-01), Tevanian et al.
patent: 5724425 (1998-03-01), Chang et al.
patent: 5815715 (1998-09-01), Küçükçakar
patent: 6266416 (2001-07-01), Sigbjørnsen et al.
patent: 6308317 (2001-10-01), Wilkinson et al.
patent: 6374402 (2002-04-01), Schmeidler et al.
patent: 6549624 (2003-04-01), Sandru
Free Software Foundation, Inc, The C Preprocessor. 1987 [retrieved Jun. 6, 2002]. Retrieved from the internet:<URL:http://gcc.gnu.org/onlinedocs/cpp> and <URL:http://gcc.gnu.org/onlinedocs/cpp/The-preprocessing-language.htm>.*
Alfred Aho, compilers, Principles, Techniques, and Tools, 1986, p. 5.*
Shave. Security Within Space Data Systems. IEEE. 1998. pp. 6/1-6/5.*
Yamazato et al. Interlace Coding System To Avoid Error Propagation of Source Coding Systems. IEEE. 1992. pp. 80-83.*
Yang et al., Managing Secure Communications Within Multilevel Security and Restricted Character Set Translation. IEEE. 1993. pp. 745-756.

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Compiler that decrypts encrypted source code does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Compiler that decrypts encrypted source code, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Compiler that decrypts encrypted source code will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-3224480

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.