一种代码保护方法与装置与流程

文档序号:18886362发布日期:2019-10-15 20:59阅读:371来源:国知局
一种代码保护方法与装置与流程

本发明涉及数据处理领域,尤其涉及一种代码保护方法与装置。



背景技术:

软件公司员工离职时,经常携带公司的代码,这些代码有时是大量员工一起开发的,知识产权和资产属于公司,却很容易被复制和被传播。掌握公司核心代码的员工,甚至会把代码带去下一家任职的公司。公司代码作为软件公司的重要资产,具有非常重要的价值,如果被离职员工带去给竞争对手,将给公司造成非常巨大的损失。因此对本公司代码进行保护,或者当发现自己的代码疑似被使用,对公司造成重大损失时,要能够进行取证。

在普通代码中的版权信息,一般如下,

//============================================

//copyright(c)baidu

//allrightsreserved

//filename:class4

//description:

//createdbyshenzhiruiat03/09/201818:41:28//================================================

这样的版权信息很容易被员工直接删除,就把代码带走后,说成是自己写的代码。其他公司也无从查证。

因此,在公司员工提交到代码库中时,设计相应的隐写信息和版权信息,预防被窃取,即使窃据也有证据证明该代码源自本公司,将具有重要的意义。本发明通过隐写技术,实现了代码的版权的维护。

当前多隐写技术,大多是基于图像的技术,数字图像在因特网和其他传媒上被广泛用于隐藏消息。例如:一个24位的位图中的每个像素的三个颜色分量(红,绿和蓝)各使用8个比特来表示。如果我们只考虑蓝色的话,就是说有2种不同的数值来表示深浅不同的蓝色。而像11111111和11111110这两个值所表示的蓝色,人眼几乎无法区分。因此,这个最低有效位就可以用来存储颜色之外的信息,而且在某种程度上几乎是检测不到的。如果对红色和绿色进行同样的操作,就可以在差不多三个像素中存储一个字节的信息。

也就是说,其实隐写技术,使隐写的信息难以探测的,是保证“有效载荷”(需要被隐蔽的信号)对“载体”(即原始的信号)的调制对载体的影响看起来,可以忽略。这就是说,这种改变应该无法与载体中的噪声加以区别。

要做到这一点,文本的形式也是可以完成的。当前有专门研究用文本做隐写的技术,但是用代码做隐写技术的还特别少。

另一方面,传统的信息隐写技术,只能做到信息被隐藏,并无法优化载体本身,本发明不仅仅能让代码中隐藏重要的版权信息,并且可以让代码更加可读,更加规范。不仅使公司受益,而且对程序员完善自身的代码也有帮助,因此会被更多人接受。也乐于用本方法,进行信息隐写。



技术实现要素:

本发明提供了一种代码保护方法与装置,用于对带有版权的代码进行保护,避免被离职员工带走公司代码资产。

本发明提供了一种代码保护方法,所述方法包括:

将需要隐写的信息转换成隐写算法需要的方式;

将隐写信息嵌入需要进行代码规范的代码中;

在取证时,还原隐写信息。

进一步可选地,如上所述的方法中,所述将需要隐写的信息转换成隐写算法需要的方式,主要包括:

采用公司简介或与公司版权信息相关的文件训练词向量;

将公司版权信息的词向量维度相加,获得加总词向量;

进一步可选地,如上所述的方法中,所述加总词向量,主要包括:将所述加总词向量转化为二进制。

其公式为

abcd.efg(2)=d*20+c*21+b*22+a*23+e*2-1+f*2-2+g*2-3

其中a、b、c、d代表整数位的数值,e、f、g是小数位的数值。

进一步可选地,如上所述的方法中,所述将隐写信息嵌入需要进行代码规范的代码中,主要包括:

在进行代码规范修正时,获取代码中可以隐藏信息的代码载体段;

进一步可选地,如上所述的方法中,所述获取代码中可以隐藏信息的代码载体段,主要包括:

续行与其包裹元素对齐,包括圆括号、方括号和花括号内的隐式行连接来垂直对齐;

在判断语句中进行信息隐藏;

在多行结构中的信息隐藏;

程序代码过长时的信息隐藏。

进一步可选地,如上所述的方法中,所述将隐写信息嵌入需要进行代码规范的代码中,还包括:

通过隐写信息通过文本隐写工具嵌入到代码中;

这些工具可以是stegsolve、010editor、winhex、binwalk的一个或者多个具有隐写术嵌入功能的软件。

进一步可选地,如上所述的方法中,所述还原隐写信息,主要包括:

通过代码规范,使人们不会轻易改动代码,保护信息隐藏的稳定性;

通过词向量技术,使代码中的位置即是部分被改动,也不会改变词向量最后还原后对应的版本信息。

进一步可选地,如上所述的方法中,所述还原隐写信息,还进一步包括:

通过最开始的时候获取的公司语料,重新训练出模型,获得原始的word2vec模型;

抽取代码中经过了隐写技术处理过的代码,抽取隐藏在代码中的各个比特的信息。重新拼接成词向量。通过输入词向量到word2vec模型中,判断该向量是否跟公司的版权信息一致或者强相关。

本发明提供了一种代码保护装置,所述装置包括:

版权信息训练模块,用于将公司简介或与公司版权信息相关的文件训练成词向量;

数据转换模块,用于需要隐写的信息转换成隐写算法需要的方式;

隐藏载体检测模块,用于从大量代码中检测可以隐藏信息的代码载体段;

隐写信息嵌入模块,用于将隐写信息嵌入到代码中;

隐写信息还原模块,用于在举证的时候,对重要的代码版权信息进行还原。

本发明实施例提供的技术方案可以包括以下有益效果:

本发明通过代码规范,嵌入隐藏信息,即可以对带有版权的代码进行保护,避免被离职员工带走公司的代码资产,同时还能够优化代码的结构,提高代码可读性。

附图说明

图1为本发明的一种代码保护方法实施例的流程图;

图2为本发明的一种代码保护装置实施例的结构图。

具体实施方式

步骤101,训练词向量,如word2vec,语料采用公司简介或公司相关文件进行训练。该方法,可以使证据更加明显。让训练出来的代码不仅仅只是一段合成的无意义的代码。而是跟公司信息更加强相关。

另外,该方法还可以设置词向量维度。采用的工具可以是任何训练词向量的工具,采用的算法可以是skip-gram或cbow等任意种

将版权信息的词向量维度相加,获得总维度。该方法可以使无论多少字的版权信息都统一到一个维度上,并且维度可以让用户自己设置。采用gensim等接口,可以设置相关词向量维度。

步骤102,将词向量转化为二进制。其通用公式为

abcd.efg(2)=d*20+c*21+b*22+a*23+e*2-1+f*2-2+g*2-3(10)

可以通过软件进行转化。最终获得让用户更加容易设置,而且跟公司简介相关的二进制代码。另一方面,因为词向量具有相似性和可计算性,因此即使有部分数字被改动和变动,依然可以得到最近似到词语,因此它能够比较好的抗改动和变化。即使有些地方被修改了,也只是部分信息被少许改动,最后得到的值将对最终结果不会有影响。

步骤103,可以隐藏代码段载体的检测。可以进行隐藏的载体包括:

续行与其包裹元素对齐,包括圆括号、方括号和花括号内的隐式行连接来垂直对齐,每监测到一种括号都可以进行信息隐藏。

这样更加符合代码规范,并且,因为有多种改法,因此每一种改法都可以嵌入一个比特的信息。

在判断语句中进行信息隐藏:

例如,当if语句的条件部分长到需要换行写的时候,有以下换法:

这样就可以增加一个比特的信息

在多行结构中,进行信息隐藏:

在多行结构中的大括号/中括号/小括号的右括号可以与内容对齐单独起一行作为最后一行的第一个字符,就像这样:

或者也可以与多行结构的第一行第一个字符对齐,就像这样:

这些不同的使程序更加易懂和符合规范的改法,都可以隐藏信息。

当程序代码过长时,可以把行长度控制到70增加到100个字符之间。这其中每一个值都是正确的,可以隐藏最多30个比特的信息。

针对代码规范中的各种类型的冗余信息隐写嵌入,还有大量的实例可以嵌入。只要代码中,存在代码的放置位置两者都正确的情况,就能嵌入信息。在此不在进一步举例,可以根据各种代码规范的实例,进行不断扩充。

步骤104,隐写信息通过文本隐写工具嵌入到代码中。这些工具可以是stegsolve、010editor、winhex、binwalk等等一个或者多个具有隐写术嵌入功能的软件。

步骤105,信息隐藏抗扰动。对代码进行代码规范的调整,使代码更加合理,代码结构更加可读。另一方面,通过将信息隐藏在代码里,当版本信息被新的代码优化软件扫描,或者被用户稍微改动。它的版本信息依然不变,因为其本身已经是经过优化的代码,符合代码规范,因此在用户看来是规范的代码,没有改动的必要。另外因为加入了词向量技术,词向量并不会因为某个数值的偏差改动就导致整个向量都改变。因此具有很好的抗扰动性,即使被用户部分修改,也会因为相似度的差距不大,而最终能得到最后的正确的版权信息。

步骤106,取证还原。通过最开始的时候获取的公司语料,重新训练出模型,获得原始的word2vec模型。

抽取代码中经过了隐写技术处理过的代码,抽取隐藏在代码中的各个比特的信息。重新拼接成词向量。通过输入词向量到word2vec模型中,判断该向量是否跟公司的版权信息一致或者强相关。以此就能够判断,该代码是否是公司经过信息隐藏的代码,是否是员工偷偷带走的代码。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例可以通过软件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,上述实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1