欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種軟件代碼侵權檢測方法與流程

文檔序號:11729651閱讀:574來源:國知局
一種軟件代碼侵權檢測方法與流程

本發(fā)明涉及一種計算機數(shù)據(jù)處理技術,特別涉及一種軟件代碼的侵權檢測方法。



背景技術:

軟件代碼的侵權檢測具有比較重要的現(xiàn)實意義,可以幫助軟件開發(fā)組織避免知識產(chǎn)權相關的法律風險。

軟件開發(fā)組織的開發(fā)人員出于提高開發(fā)效率的目的,往往習慣于從既有的代碼中復用一些代碼。但是,這種行為有時是可行的,有時又是不可行的,是否可行取決于被復制的代碼的許可證情況。特別是開源代碼,許可證種類繁多,每種許可證的約束都不同,盲目的復用軟件很可能給為企業(yè)帶來嚴重的法律的風險。例如,如果某企業(yè)的開發(fā)人員不小心使用或者擴展了遵循gpl版權的代碼,按照gpl的許可證規(guī)范,該企業(yè)所有和該代碼相關的其他代碼也都必須遵循gpl規(guī)范,面向公眾全部公開,這可能給該企業(yè)造成不可挽回的損失。

由于軟件開發(fā)人員為數(shù)眾多,軟件代碼數(shù)量龐大,而開源軟件的數(shù)量更是數(shù)不勝數(shù),許可證情況有非常復雜,對各種侵權風險進行手工檢查幾乎是不可能的。因此,可以檢測并報告潛在的軟件侵權風險的方法和系統(tǒng)就顯得非常必要。

現(xiàn)有的軟件代碼侵權檢測方法都需要被檢測方提供程序的原始代碼。其中使用的技術有兩類:基于屬性統(tǒng)計的檢測技術和基于結構度量的檢測技術?;趯傩缘慕y(tǒng)計技術統(tǒng)計軟件代碼中的操作符、操作數(shù)等信息,然后計算他們的平均值、中位值、標準差等,然后對比待檢測樣本和樣本庫中的樣本。由于是全局統(tǒng)計數(shù)據(jù),這種檢測方法缺陷較大,只有在軟件代碼和樣本庫中的代碼幾乎完全相似的情況下才能發(fā)現(xiàn)侵權,并不實用。基于結構度量的技術是代碼重復檢測方法的一個子集。其中包括了基于文本的方法、基于抽象語法樹的方法、基于程序依賴圖的方法等。這些方法的目標在于發(fā)現(xiàn)軟件代碼的重復,并不是專門為侵權檢測設計的,所以也并未考慮和侵權檢測有關的特征提取問題、樣本庫建立問題以及商業(yè)秘密保護問題。

在實踐中,上述的本地侵權檢測方法帶來的主要局限源于如下兩個方面的沖突:如果軟件組織使用第三方服務,就必須提供待檢測的源代碼。這可能造成企業(yè)技術秘密泄露。如果軟件組織決定自己按照上述本地侵權檢測方法建立一個檢測系統(tǒng),則需要建立規(guī)模龐大的全局樣本庫,例如收集整個互聯(lián)網(wǎng)級別的開源代碼,成本巨大。



技術實現(xiàn)要素:

本發(fā)明是針對代碼侵權檢測需要大量樣本、同時又需要保護軟件組織的商業(yè)秘密問題所提出的一種檢測方法。

本發(fā)明的技術方案為:一種軟件代碼的侵權檢測方法,其特征在于:包括云端檢測服務器和本地代理系統(tǒng)兩部分,在兩者之間傳輸和服務器端存儲的都是代碼的經(jīng)變換的關鍵特征信息。其中,云端檢測服務器負責管理用于侵權檢測的代碼特征樣本庫并依據(jù)侵權規(guī)則進行檢測,本地代理系統(tǒng)負責提取軟件代碼的關鍵特征、上報信息到云端檢測服務器以及對云端檢測服務器下發(fā)的侵權信息進行本地化解讀;

本地代理系統(tǒng)包含代碼解析器,代碼特征生成器以及本地映射表三個部分。其中,代碼解析器負責解析被檢測的代碼,產(chǎn)生代碼塊信息;代碼特征生成器負責產(chǎn)生和代碼塊唯一對應的代碼特征信息,在實踐中使用代碼塊標識符、位置信息、結構信息、和代碼塊散列信息定義該特征;本地映射表維護上傳到云端服務器的代碼和本地原始代碼之間的對應關系,當云端服務器傳回和代碼塊標識符對應的侵權信息時,在本地解析為可以閱讀的代碼侵權信息;

云端服務器包含代碼解析器、代碼特征生成器、全局特征信息表以及侵權檢測引擎四個部分。其中代碼解析器和代碼特征生成器和本地代理系統(tǒng)的功能相同。全局特征信息表存儲了用于檢測的代碼樣本庫的特征信息。侵權檢測引擎對比全局特征信息表和本地代理上傳的代碼塊信息判斷代碼塊侵權特征,如果發(fā)現(xiàn)特征匹配,就將其標記為侵權,然后將此信息發(fā)送給本地代理系統(tǒng),交由本地代理系統(tǒng)進行解析和報告。

所述的該代碼侵權檢測方法,具體檢測步驟包括:

步驟一,構建全局特征信息表:獲取代碼樣本庫,云端檢測服務器依次讀取樣本庫的源代碼文件,然后按照語法樹的形式,將每個代碼文件解析成一組樹形結構的代碼塊,并將代碼塊信息記錄到全局特征信息表中。每個代碼塊都記錄代碼塊的位置信息、結構信息、以及代碼塊散列信息。在實踐中,代碼解析可以使用抽象語法樹解析器完成。位置信息可使用如下信息聯(lián)合進行描述:所屬項目、文件名、起始位置、終止位置信息。結構信息可使用本代碼塊和父代碼塊的關聯(lián)關系描述。代碼塊散列特征信息可使用對代碼進行歸一化后對應的文本的散列值描述;

步驟二,提取本地代碼特征:本地代理系統(tǒng)讀入待檢測的源代碼,使用和云端檢測服務器相同的特征信息提取方法,分解源代碼為代碼塊,并提取代碼塊的位置信息、結構信息和代碼塊散列特征信息,進入步驟三;

步驟三,建立本地映射表:本地代理系統(tǒng)為步驟二中獲取的每個代碼塊分配本地唯一的標識符,建立該標識符和代碼塊對應的原始代碼的關聯(lián)關系,用于后續(xù)步驟七。然后進入步驟四;

步驟四,發(fā)送檢測請求:本地代理系統(tǒng)將步驟二獲取的本地代碼特征信息以及代碼塊的標識符一起上傳到云端檢測服務器,請求云端檢測服務器進行侵權檢測;

步驟五,云端檢測服務器接收本地代理系統(tǒng)傳來的代碼塊信息,并將該代碼塊信息和全局特征信息表按照侵權規(guī)則進行比對。在實踐中,侵權規(guī)則可基于散列值重復、或代碼結構對應的散列值重復的統(tǒng)計情況進行定義。如果上傳的待檢測代碼的特征信息和全局特征庫中的特征信息按照侵權規(guī)則屬于侵權,則記錄該信息。待所有代碼塊檢測完成后,進入步驟六;

步驟六,云端檢測服務器將標記為侵權的代碼塊的標識符下發(fā)到本地代理系統(tǒng);

步驟七,本地代理系統(tǒng)接收云端檢測服務器傳回的侵權代碼塊信息,使用本地映射表還原成本地可見的代碼,進行顯示、通知所需的處理動作。

發(fā)明作用與效果:

本發(fā)明的有益效果在于:本發(fā)明所述的軟件代碼侵權檢測方法,無需提供待檢測的代碼的原始形式,保護商業(yè)秘密;擴大了軟件代碼侵權檢測的樣本庫的范圍,甚至可以達到整個互聯(lián)網(wǎng)級別的檢測能力。

附圖說明

圖1為本發(fā)明所述的軟件代碼侵權檢測方法的結構說明;

圖2為本發(fā)明所述的軟件代碼侵權檢測方法的步驟說明;

圖3為本發(fā)明的實施例之全局特征信息庫的一個示例片段;

圖4為本發(fā)明的實施例之本地代理的代碼塊解析結果;

圖5為本發(fā)明的實施例之本地代理的代碼特征信息;

具體實施方式

為了使本發(fā)明實現(xiàn)的技術手段、創(chuàng)作特征、達成目的與功效易于明白了解,以下實施例結合附圖對本發(fā)明的軟件代碼侵權檢測方法的原理步驟、使用效果作具體闡述。

本實施例包括云端檢測服務器和本地代理系統(tǒng)兩部分。

云端檢測服務器負責管理用于侵權檢測的代碼特征樣本庫并依據(jù)侵權規(guī)則進行檢測。云端服務器包括代碼解析器、代碼特征生成器、全局特征信息表以及侵權檢測引擎四個部分。

本地代理系統(tǒng)負責提取軟件代碼的特征信息、上報信息到云端檢測服務器以及對云端檢測服務器下發(fā)的侵權信息進行本地化的解讀。本地代理系統(tǒng)包含代碼解析器,代碼特征生成器以及本地映射表三個部分。其中代碼解析器,代碼特征生成器的功能和實現(xiàn)方法和云端檢測服務器對應部分完全一致。

步驟s1,構建全局特征信息表。本實施例基于互聯(lián)網(wǎng)級別的開源軟件代碼庫對全局特征信息表進行構建。首先獲取開源代碼庫的代碼文件,然后將所述代碼文件依次進行如下處理:

代碼結構解析:通過抽象語法樹將程序源代碼解析為代碼塊結構,然后將代碼塊作為后續(xù)分析檢測的基本單元,然后分別提取其位置信息和結構信息。定義解析后的代碼塊的位置信息為一個五元組:(segmentid,fileid,startline,endline,sequence)。其中segmentid是全局唯一的一個標識符,每個標識符標識一個代碼塊。fileid定義了該代碼塊所在的文件位置,也同樣使用全局唯一標識符表示。startline為代碼塊在文件中的起始行。endline為代碼塊在文件中的終止行。sequence為同屬于一個父結點的代碼塊的順序。定義解析后的代碼塊的結構信息為一個二元組:(segmentid,parentsegmentid)。其中segmentid和前述定義相同,parentsegmentid為代碼塊父結點的標識符,用于找出父結點;

代碼塊散列特征提取:本實施例的代碼散列特征提取包括歸一化和哈希值計算兩個步驟。歸一化包括移除空格、用一致的符號替換變量名和數(shù)字兩個步驟,消除由于代碼格式、變量名等因素的不同對檢測效果的影響。然后,在歸一化的代碼上使用md5哈希算法,為每個結點生成一個128位的哈希值。圖3為通過以上步驟獲取的全局特征信息表的一個片段,包括項目信息、許可證信息、位置信息、結構信息和散列特征信息;

步驟s2,提取本地代碼特征。本地代理系統(tǒng)讀入待檢測的源代碼,使用和云端檢測服務器相同的特征信息提取方法,分解源代碼為代碼塊,并提取代碼塊的位置信息、結構信息和指紋特征信息。本步驟的方法和步驟s1完全相同。圖4為一個文件通過源代碼解析器后獲得的代碼塊解析結果,使用樹形結構表示。圖5為通過本步驟獲得的待檢測代碼的代碼塊的位置信息、結構信息和散列特征信息;

步驟s3,建立本地映射表。本地代理系統(tǒng)使用步驟s2中獲取的每個代碼塊標識符,建立該標識符和代碼塊對應的原始代碼的關聯(lián)關系,包括原來所在文件的文件名及位置信息;

步驟s4,發(fā)送檢測請求:本地代理系統(tǒng)將步驟s2獲取的本地代碼特征信息以及代碼塊的標識符一起,構成一個代碼塊特征信息序列,一起上傳到云端檢測服務器,請求云端檢測服務器進行侵權檢測。上傳的代碼塊信息不包含任何原始代碼信息;

步驟s5,云端檢測服務器接收本地代理系統(tǒng)傳來的代碼塊信息,并將該代碼塊信息和全局特征信息表按照侵權規(guī)則進行比對。本實施例采取兩種侵權檢測規(guī)則進行侵權檢測:

規(guī)則一:對比代碼塊的散列特征,并綜合代碼塊行數(shù)及統(tǒng)計信息:如果代碼塊散列特征完全重復且代碼塊行數(shù)超過10行且該散列特征在樣本庫項目中出現(xiàn)頻率低于3次,則判定為侵權。在圖3和圖5表示的特征數(shù)據(jù)中,加粗的行的散列特征值相同,故檢測引擎會判定待檢測代碼的編號為122文件的n3-n5為侵權代碼。本檢測結果說明,雖然檢測引擎能夠準確地判定侵權,但整個檢測過程所依賴的任何數(shù)據(jù)都不包含原始代碼的有意義的涉及商業(yè)秘密的信息;

規(guī)則二:對比代碼塊的散列特征,并綜合父結點代碼塊的區(qū)域統(tǒng)計信息。如果同一父結點下的具有和樣本庫中具有重復散列值的代碼塊的數(shù)量比例超過一定閾值,在本實施例中定義為50%,則判定為侵權。在本例中未發(fā)現(xiàn)符合上述侵權特征的代碼塊,則不予報告;

在實際實施中并不限于上述兩種侵權檢測規(guī)則,而可以綜合使用代碼塊的位置信息、結構信息和散列特征對檢測規(guī)則進行擴充;

步驟s6,云端檢測服務器將標記為侵權的代碼塊的標識符,在本實施例中為122文件的n3-n5代碼塊,下發(fā)到本地代理系統(tǒng);

步驟s7,本地代理系統(tǒng)接收云端檢測服務器傳回的侵權代碼塊信息,使用本地映射表還原成本地可見的代碼,進行顯示。

實施例的作用和有益效果

根據(jù)本實施例所提供的軟件代碼侵權檢測方法,可實現(xiàn)基于云端服務的侵權檢測系統(tǒng),其優(yōu)勢在于:在云端服務器和本地代理系統(tǒng)之間傳輸?shù)氖墙?jīng)過變換的代碼散列特征,從中無法恢復代碼的原始形式。該代碼散列特征能夠完全支持各種侵權檢測規(guī)則,對檢測效果沒有影響。因此,不同的軟件開發(fā)組織能夠共享同一檢測系統(tǒng),同時又無需提供本組織的代碼的原始形式。既保護了軟件組織的商業(yè)秘密,又保證了軟件代碼侵權檢測的樣本庫的范圍。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
屏南县| 政和县| 贡嘎县| 西华县| 德令哈市| 吴旗县| 宁津县| 德庆县| 方山县| 新丰县| 威宁| 平谷区| 宝清县| 平果县| 修文县| 勃利县| 津南区| 泸水县| 盐源县| 电白县| 郑州市| 陈巴尔虎旗| 九龙坡区| 墨江| 玉田县| 洛阳市| 东方市| 襄樊市| 瑞安市| 黄石市| 开远市| 固安县| 青州市| 昌邑市| 莆田市| 利津县| 米易县| 河池市| 扶沟县| 兴宁市| 白山市|