程序源代码保护的制作方法

文档序号:6656927阅读:251来源:国知局
专利名称:程序源代码保护的制作方法
技术领域
本发明涉及一种保护原始明文文件的方法,以及访问被保护的原始明文文件的计算机工具。
本发明涉及明文文件,特别是计算机源代码,以及它们向顾客的分发。软件开发者提供比如诸如C或C++等高级语言的源代码形式的产品的原因在于,这样能使他们的顾客比较容易地使其适用于他们的特定应用。然而,在以这样的方式分发源代码时,开发者对随后的使用失去控制,包括被其顾客复制和第三方从顾客处获取代码,从而开发者完全依赖合同的法律实施和许可证来保护他们的知识产权。
发明公开本发明的一个目的是提供一种能保护明文文件一旦在被分发到授权用户之后不被非法复制或者使用的方法和装置。
该目的根据本发明通过提供如下方法来实现,该方法包括加密原始明文文件并使其作为受保护文件对用户可用,以及向所述用户发放用户程序和用户许可证以使所述用户能够解密该受保护文件并且查看原始文件的映像,同时防止原始文件的映像被复制到除了作为进一步的受保护文件以外的任何文件中。
从而,对明文文件的访问是由用户许可证和特殊用户程序的组合来授予的,该特殊用户程序利用用户许可证和受保护文件在计算机的存储器中重新创建可以被显示和编辑的原始文件的映像。该映像较佳地通过设置其中储存该映像的存储器不被备份到计算机交换文件中从而不会被可能读取映像文件的程序所发现来保护不被复制。
较佳地,该用户程序包括一编辑程序,且用户使用该编辑程序来编辑原始文件的映像,并且将对原始映像的改变以加密形式保存在一个与原始文件分开的差异文件中。用户使用该编辑程序和用户许可证从受保护文件和差异文件重新创建原始文件的被编辑的映像。如果需要,用户能够重新编辑该被编辑的映像,然后在第二差异文件中保存对该重新编辑的映像的改变,该第二差异文件被加密并保持与原始文件和差异文件分开。随后,用户使用该编辑程序和用户许可证从原始文件和所有涉及的差异文件重新创建最新的被编辑映像。
把对原始文件的改变储存为一个差异文件或者多个差异文件的优点在于这是一种可审核安排,其中每个文件的所有权能够和每一文件的创建者一样容易地标识,并且这种标识在连续的编辑过程中不会丢失。
同样,如果每个差异文件采用和受保护文件相同或者分开的许可证来加密,则它们的每一个都被类似地保护。
该用户程序较佳地只具有受限制的复制能力,即只允许数据被复制到其它受保护文件中,这是被称为“剪切和粘贴”的典型数据复制能力。
原始文件的某些部分可被标记为不可编辑或者不可见,使得它们永远不会被编辑程序移除,从而将始终存在以允许为了许可或其他目的而标识该原始文件,或者将对原始文件的使用限于用户许可证所定义的使用。
该用户程序可以包括用户访问原始明文所需的任何计算机工具,并包括编辑器、版本或配置管理工具和源级调试器。在需要多个工具来访问明文源代码并从其生成可执行代码的情况下,这些工具中的每一个都需要本发明的保护特征。
然而,在本发明的一个替换实施例中,该用户程序包括一个结合了混淆器(obfuscator)的特殊编辑程序,该混淆器从由编辑程序生成的映像生成混淆代码,从而防止除了编译器或者能够将混淆代码转换为可理解的目标代码的相似工具以外的工具对该源代码的访问,其中该可理解的目标代码和在编译器能访问原始源代码的情况下生成的目标代码一样。
因此,根据另一方面,本发明在于用户用于访问通过在受保护文件中加密来保护的原始明文文件的计算机工具,该工具适用于一旦被由负责该受保护文件的授权机构发出的用户许可证授权即解密该受保护文件以产生原始明文文件的映像,同时防止该原始文件的映像被复制到除进一步的受保护文件之外的任何其他文件。
该工具较佳地包括一个编辑程序,并且可以是包括已如上所述的混淆器的特殊编辑程序。


现在将参考附图作为示例来描述本发明图1是示出根据本发明的允许用户包括对源代码的任何改变的受保护文件中的源代码的方法的步骤的框图;
图2是示出根据本发明的允许用户访问受保护文件中的源代码并将对源代码的映像所做的改变保存在与受保护文件分开的差异文件中的方法的步骤的框图;以及图3是示出图1的方法中允许用户访问包括对源代码的混淆的源代码并将混淆的文件传递给编译器以产生目标文件的进一步的步骤的框图。
发明实施例参考图1,受保护文件101包括诸如源代码等使用快速对称密钥算法来加密的明文文件,其中密钥使用公钥加密技术以加密的形式储存在该文件的开始处。整个文件101然后使用数字签名算法来保护。
受保护文件101与用户许可证103一起由源代码所有者分发给用户,用户许可证中结合了在公钥加密技术中使用来保护文件101的密钥。许可证103使用公钥基础架构PKI或者类似的基于证书的机制来分发。
向收到受保护文件101和用户许可证103的用户提供一特殊的计算机工具来访问受保护文件中的源代码。
该工具首先通过检查储存于它自己的可执行文件中数字签名以确保它没有被更改来检查它自己的有效性。然后该工具打开许可证103并且确定它是否被授权运行。
如果该工具被授权运行,则它打开受保护文件101。然后该工具使用两个解密引擎(102、105)来生成表示受被保护文件和许可证的解密内容的数据流。这些数据流然后被馈入组合这两个数据流以生成人类可读映像107的重建引擎106。该映像被保持在不会被备份到计算机交换文件的计算机存储器中,以使该映像不会被计算机上的其他程序发现。
人类可读映像107包含所有源代码行以及指示该行是否不可见或者不可编辑的标志。
该计算机工具包括允许映像107被编辑的编辑器,这在图2中示出,在图2中,从该原始映像107生成被编辑映像201。该工具然后用户按照与原始映像107相比的差异来保存被编辑映像201。这是通过比较映像107和201并确定一组差异的差异引擎206来实现的,该差异随后允许从原始映像107创建被编辑映像201。
该组差异然后被传递给使用来自该许可证103的一公钥对来创建差异文件208的加密引擎207。用于加密差异文件的该公钥对较佳地不同于用于加密受保护文件101的公钥对。
随后,差异文件208与受保护文件101分开但与其相关联,以在创建被编辑映像时使用。
如果如图1所示,当访问受保护文件101时有差异文件208与其相关联,则重建引擎106接收来自差异文件208的一系列进一步指令,并且在适当时从受保护文件101或差异文件208中复制指令行来创建代替原始映像107的被编辑映像201。
图3示出了使用源代码混淆器302来编译受保护源文件的过程。
混淆器302执行的第一操作是采用图1所描述的机制来基于许可证103构建人类可读映像107。
一旦映像107可用,则混淆器302能够处理该映像以生成混淆的源文件304。该混淆过程涉及从文件中移除所有人类可理解信息,并且是一种众所周知的技术(例如参见Collberg等人的6668325号美国专利)。混淆通常涉及从源代码中移除所有注释;用随机选择的名称来替换对人有意义的变量名;以及修改格式使代码难以被人读懂。
一旦混淆的源文件304可用,它能够由常规的编译器305读取,该编译器将产生与通过编译人类可读映像107产生的目标文件相同的目标文件306。
权利要求
1.一种保护原始明文文件的方法,包括以下步骤a)加密所述原始文件并且使其作为受保护文件(101)对用户可用;以及b)向所述用户发放一用户程序和一用户许可证(103),以使所述用户能够对所述受保护文件解密并查看所述原始文件的映像,同时防止所述原始文件的映像被复制到除了作为进一步的受保护文件之外的任何其他文件。
2.如权利要求1所述的方法,其特征在于,所述用户程序包括一编辑器程序,并且其中用户使用所述编辑器程序来编辑所述原始文件的映像,然后与所述原始文件分开地以加密形式保存对所述原始文件的映像所做的改变。
3.如权利要求2所述的方法,其特征在于,对所述原始文件的映像的改变由一差异引擎保存,所述差异引擎使用所述许可证(103)重新打开所述受保护文件,并将所述原始文件的映像与所述被编辑映像进行比较来产生被保存的差异文件(208)。
4.如权利要求2或3所述的方法,其特征在于,所述改变由所述编辑器程序使用所述用户许可证或者一差异许可证密钥来加密。
5.如权利要求2至4中任一项所述的方法,其特征在于,所述改变被储存在所述受保护文件(101)或者与所述受保护文件相关的差异文件(208)中。
6.如权利要求2至5中任一项所述的方法,其特征在于,所述用户使用所述编辑器程序和用户许可证(103)从所述受保护文件(101)和所述差异文件(208)创建所述原始文件的被编辑映像。
7.如权利要求6所述的方法,其特征在于,所述用户重新编辑所述被编辑映像,然后将对所述重新编辑的映像的改变保存在第二差异文件中,所述第二差异文件被加密并且保持与所述原始文件和所述差异文件分开。
8.如权利要求2至7中任一项所述的方法,其特征在于,所述原始文件的某些部分被标记为不可编辑,并且所述编辑器程序防止这些部分被编辑从而使它们在从所述原始文件和任何一个或多个差异文件创建的任何映像中始终存在。
9.如权利要求2至8中任一项所述的方法,其特征在于,所述原始文件的某些部分被标记为不可见,并且所述编辑器程序防止这些部分被显示在从所述原始文件和任何一个或多个差异文件创建的任何映像中。
10.如前述权利要求中任一项所述的方法,其特征在于,所述用户程序包括一混淆器(302),所述混淆器从所述原始文件的映像生成仅可被特殊的软件工具理解的经混淆的输出文件。
11.如权利要求10所述的方法,其特征在于,所述特殊软件工具是编译器(305)。
12.如前述权利要求中任一项所述的方法,其特征在于,所述原始明文文件包括源代码。
13.一种用户用于访问通过在受保护文件(101)中加密来保护的原始明文文件的计算机工具,所述工具适用于一旦被负责所述受保护文件的授权机构发出的用户许可证(103)授权即解密所述受保护文件,以产生所述原始明文文件的映像,同时防止所述原始文件的映像被复制到除作为进一步的受保护文件之外的任何其他文件。
14.如权利要求13所述的工具,其特征在于,包括一编辑器程序,所述编辑器程序编辑所述原始文件的映像,然后与所述原始文件分开地以加密形式保存对所述原始文件的映像所做的改变。
15.如权利要求14所述的工具,其特征在于,包括一差异引擎,所述差异引擎使用所述许可证重新打开所述受保护文件,并将所述原始文件的映像和所述被编辑映像进行比较来产生被保存的差异文件(208)。
16.如权利要求14或15所述的工具,其特征在于,所述工具使用所述用户许可证(103)或一差异许可证密钥来加密所述改变。
17.如权利要求14至16中任一项所述的工具,其特征在于,所述工具将所述改变储存在所述保护文件(101)或与所述被保护文件相关的差异文件(208)中。
18.如权利要求14至17中任一项所述的工具,其特征在于,所述工具使用所述编辑器程序和用户许可证从所述受保护文件和所述差异文件创建所述原始文件的被编辑映像。
19.如权利要求18项所述的工具,其特征在于,所述工具重新编辑所述被编辑映像,然后将对所述重新编辑的映像的改变保存在第二差异文件中,所述工具加密所述重新编辑的第二差异文件,并且保持所述第二差异文件与所述原始文件和所述差异文件间分开。
20.如权利要求14至19中任一项所述的工具,其特征在于,所述原始文件的某些部分被标记为不可编辑,并且所述编辑器程序防止这些部分被编辑从而使它们在从所述原始文件和任何一个或多个差异文件创建的任何映像中始终存在。
21.如权利要求14至20中任一项所述的工具,其特征在于,所述原始文件的某些部分被标记为不可见,并且所述编辑器程序防止这些部分被显示在从所述原始文件和任何一个或多个差异文件创建的任何映像中。
22.如前述权利要求中任一项所述的工具,其特征在于,所述用户程序包括一混淆器(302),所述混淆器从所述原始文件的映像生成仅可被特殊软件工具理解的经混淆的输出文件。
23.如权利要求22所述的工具,其特征在于,所述特殊软件工具是编译器(305)。
全文摘要
一种方法,包括加密原始明文文件并使其作为受保护文件(101)对用户可用,向所述用户发放一个用户程序和一个用户许可证(103)以使所述用户能够解密受保护文件(101)并查看原始文件的映像,同时防止原始文件的映像被复制到除了作为进一步的受保护文件以外的任何文件。该映像较佳地被储存在不被备份到计算机交换文件的存储器内。较佳地,该用户程序包括一个编辑器程序,且用户将对原始映像的编辑上的改变储存到一个与原始文件分开的加密差异文件(208)中。然后使用这两个文件通过使用编辑器程序和用户许可证(103)来重新创建被编辑映像。该用户程序可包括编译器在内的任何计算机工具。可选地,该用户程序包括结合了混淆器(302)的特殊编辑器程序,该混淆器从由编辑器程序产生的映像生成混淆代码,从而使其只能被编译器(305)或者能够将混淆代码转换成目标文件(306)的类似工具所理解。
文档编号G06F21/12GK101031859SQ200580032913
公开日2007年9月5日 申请日期2005年9月29日 优先权日2004年9月30日
发明者J·D·莫许 申请人:Ttpcom有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1