亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

計算機(jī)源代碼的編譯方法及裝置、認(rèn)證方法、裝置及系統(tǒng)與流程

文檔序號:12363064閱讀:341來源:國知局
計算機(jī)源代碼的編譯方法及裝置、認(rèn)證方法、裝置及系統(tǒng)與流程

本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,尤其涉及保證計算機(jī)源代碼可信度的方法,具體來說就是一種計算機(jī)源代碼的編譯方法及裝置、認(rèn)證方法、裝置及系統(tǒng)。



背景技術(shù):

在軟件產(chǎn)品開發(fā)過程中,程序開發(fā)人員提交的是源程序,軟件產(chǎn)品管理人員對源程序進(jìn)行構(gòu)建,產(chǎn)生可運(yùn)行模塊,然后發(fā)布與部署可運(yùn)行模塊,最終運(yùn)行該可運(yùn)行模塊。由于可運(yùn)行模塊是不可讀的,如何保證在這一系列流轉(zhuǎn)之后,可運(yùn)行模塊就是由最初的那個源程序所構(gòu)建的呢?即在這一系列流轉(zhuǎn)過程中,怎么確定可運(yùn)行模塊對應(yīng)的源程序是否被人篡改過,或者說怎么知道這個可運(yùn)行模塊就是由最初的源程序所產(chǎn)生的。

為此,現(xiàn)有技術(shù)中出現(xiàn)三種保證源程序與可運(yùn)行模塊一致的方式:1.源程序標(biāo)簽方式,就是開發(fā)人員在源程序中設(shè)置標(biāo)簽作為提示;2.可運(yùn)行模塊時間戳方式,即源程序在編譯產(chǎn)生可運(yùn)行模塊時,會在可運(yùn)行模塊中自動生成一個編譯時間戳,通過檢查各個環(huán)節(jié)的時間戳是否一致來判斷可運(yùn)行模塊是否可信;3.可運(yùn)行模塊長度方式,由源程序編譯產(chǎn)生的可運(yùn)行模塊,有一個字符長度值,通過驗(yàn)證該字符長度值來確保源程序與可運(yùn)行模塊的對應(yīng)關(guān)系。

雖然現(xiàn)有方式在一定程度上可以保證源程序與可運(yùn)行模塊相一致,但是存在嚴(yán)重的安全漏洞,并不能確保源程序與可運(yùn)行模塊相一致,具體說明如下:

在源程序標(biāo)簽方式中,開發(fā)人員在源程序中設(shè)置的標(biāo)簽僅可以將其作為提示,但不能作為判斷標(biāo)準(zhǔn),因?yàn)樵谠闯绦蛱峤缓罂梢孕薷脑闯绦蚨3謽?biāo)簽不變。

可運(yùn)行模塊時間戳方式至少存在以下兩個缺點(diǎn):A)有可能存在時間戳相同的多個源程序,因此,時間戳相同并不能保證運(yùn)行模塊就是初始的源程序;B)程序產(chǎn)品部署通常包括可運(yùn)行模塊部署和源程序部署,可運(yùn)行模塊部署就是源程序在一個地方編譯,并將可運(yùn)行模塊部署到其他地方,源程序部署則是在需要的地方對源程序進(jìn)行編譯,產(chǎn)生可運(yùn)行模塊,這樣一來,可運(yùn)行模塊時間戳的方式就失效了。

在可運(yùn)行模塊長度方式中,通常情況下,源程序修改后,字符長度值會發(fā)生變化,但是,在某些情況下,這個字符長度值是不變的,比如將字符A改成字符B,字符長度值不會發(fā)生變化。

本領(lǐng)域技術(shù)人員亟需研發(fā)一種計算機(jī)源代碼的認(rèn)證方法,能確保計算機(jī)源代碼與可運(yùn)行模塊的一致性,從而保證計算機(jī)源代碼構(gòu)建結(jié)果的可信度。



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

有鑒于此,本發(fā)明要解決的技術(shù)問題在于提供一種計算機(jī)源代碼的編譯方法及裝置、認(rèn)證方法、裝置及系統(tǒng),解決了現(xiàn)有技術(shù)中不能確保計算機(jī)源代碼與可運(yùn)行模塊一致性的問題。

為了解決上述技術(shù)問題,本發(fā)明的具體實(shí)施方式提供一種計算機(jī)源代碼的編譯方法,包括:編譯源程序產(chǎn)生目標(biāo)程序和編譯列表;根據(jù)所述編譯列表對應(yīng)的特征值產(chǎn)生特征模塊;根據(jù)所述目標(biāo)程序和所述特征模塊生成可執(zhí)行程序。

本發(fā)明的具體實(shí)施方式還提供一種計算機(jī)源代碼的編譯裝置,包括:編譯單元,用于編譯源程序產(chǎn)生目標(biāo)程序和編譯列表;產(chǎn)生單元,用于根據(jù)所述編譯列表對應(yīng)的特征值產(chǎn)生特征模塊;生成單元,用于根據(jù)所述目標(biāo)程序和所述特征模塊生成可執(zhí)行程序。

本發(fā)明的具體實(shí)施方式還提供一種計算機(jī)源代碼的認(rèn)證方法,包括:解析可執(zhí)行程序中特征模塊對應(yīng)的第一特征值;編譯源程序產(chǎn)生編譯列表;根據(jù)所述編譯列表產(chǎn)生源程序?qū)?yīng)的第二特征值;比較所述第一特征值和所述第二特征值以驗(yàn)證計算機(jī)源代碼的構(gòu)建是否可信。

本發(fā)明的具體實(shí)施方式還提供一種計算機(jī)源代碼的認(rèn)證裝置,包括:解析單元,用于解析可執(zhí)行程序中特征模塊對應(yīng)的第一特征值;編譯單元,用于編譯源程序產(chǎn)生編譯列表;產(chǎn)生單元,用于根據(jù)所述編譯列表產(chǎn)生源程序?qū)?yīng)的第二特征值;比較單元,用于比較所述第一特征值和所述第二特征值以驗(yàn)證計算機(jī)源代碼的構(gòu)建是否可信。

本發(fā)明的具體實(shí)施方式還提供一種計算機(jī)源代碼的認(rèn)證系統(tǒng),包括:編譯裝置和認(rèn)證裝置。其中,所述編譯裝置包括:所述編譯裝置包括:編譯單元,用于編譯源程序產(chǎn)生目標(biāo)程序和編譯列表;產(chǎn)生單元,用于根據(jù)所述編譯列表對應(yīng)的特征值產(chǎn)生特征模塊;生成單元,用于根據(jù)所述目標(biāo)程序和所述特征模塊生成可執(zhí)行程序。所述認(rèn)證裝置包括:解析單元,用于解析可執(zhí)行程序中特征模塊對應(yīng)的第一特征值;編譯單元,用于編譯源程序產(chǎn)生編譯列表;產(chǎn)生單元,用于根據(jù)所述編譯列表產(chǎn)生源程序?qū)?yīng)的第二特征值;比較單元,用于比較所述第一特征值和所述第二特征值以驗(yàn)證計算機(jī)源代碼的構(gòu)建是否可信。

根據(jù)本發(fā)明的上述具體實(shí)施方式可知,計算機(jī)源代碼的編譯方法及裝置、認(rèn)證方法、裝置及系統(tǒng)至少具有以下有益效果:在不影響程序原有功能的前提下,修改源程序的編譯過程,利用MD5算法基于源程序產(chǎn)生一個獨(dú)一無二的數(shù)字簽名(即特征值),并將數(shù)字簽名編譯成特征模塊后,嵌套到可運(yùn)行模塊(即可執(zhí)行程序)中,該數(shù)字簽名在可運(yùn)行模塊中可讀,因此通過可運(yùn)行模塊可以獲得對應(yīng)可運(yùn)行模塊的數(shù)字簽名;由于源程序的數(shù)字簽名在編譯時保存到可運(yùn)行模塊中,并且可以從該可以運(yùn)行模塊中解析出該數(shù)字簽名。同時,也可以利用源程序隨時重新生成對應(yīng)源程序的數(shù)字簽名,只要源程序沒有變更,數(shù)字簽名就不會改變,這樣一來,就可以隨時解析出可運(yùn)行模塊中的數(shù)字簽名與源程序的數(shù)字簽名進(jìn)行比對,從而保證可運(yùn)行模塊與其對應(yīng)源程序的一致性,實(shí)現(xiàn)了軟件包的源程序級認(rèn)證功能,能夠確保外包軟件產(chǎn)品的源代碼的可信度。

應(yīng)了解的是,上述一般描述及以下具體實(shí)施方式僅為示例性及闡釋性的,其并不能限制本發(fā)明所欲主張的范圍。

附圖說明

下面的所附附圖是本發(fā)明的說明書的一部分,其繪示了本發(fā)明的示例實(shí)施例,所附附圖與說明書的描述一起用來說明本發(fā)明的原理。

圖1為本發(fā)明具體實(shí)施方式提供的一種計算機(jī)源代碼的編譯方法的實(shí)施例一的流程圖;

圖2為本發(fā)明具體實(shí)施方式提供的一種計算機(jī)源代碼的編譯方法的實(shí)施例二的流程圖;

圖3為本發(fā)明具體實(shí)施方式提供的一種計算機(jī)源代碼的編譯方法的實(shí)施例三的流程圖;

圖4為本發(fā)明具體實(shí)施方式提供的一種計算機(jī)源代碼的編譯裝置的實(shí)施例一的示意框圖;

圖5為本發(fā)明具體實(shí)施方式提供的一種計算機(jī)源代碼的編譯裝置的實(shí)施例二的示意框圖;

圖6為本發(fā)明具體實(shí)施方式提供的一種計算機(jī)源代碼的編譯裝置的實(shí)施例三的示意框圖;

圖7為本發(fā)明具體實(shí)施方式提供的一種計算機(jī)源代碼的認(rèn)證方法的實(shí)施例一的流程圖;

圖8為本發(fā)明具體實(shí)施方式提供的一種計算機(jī)源代碼的認(rèn)證方法的實(shí)施例二的流程圖;

圖9為本發(fā)明具體實(shí)施方式提供的一種計算機(jī)源代碼的認(rèn)證裝置的實(shí)施例一的示意框圖;

圖10為本發(fā)明具體實(shí)施方式提供的一種計算機(jī)源代碼的認(rèn)證裝置的實(shí)施例二的示意框圖;

圖11為本發(fā)明具體實(shí)施方式提供的一種計算機(jī)源代碼的認(rèn)證系統(tǒng)的示意框圖。

具體實(shí)施方式

為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下面將以附圖及詳細(xì)敘述清楚說明本發(fā)明所揭示內(nèi)容的精神,任何所屬技術(shù)領(lǐng)域技術(shù)人員在了解本發(fā)明內(nèi)容的實(shí)施例后,當(dāng)可由本發(fā)明內(nèi)容所教示的技術(shù),加以改變及修飾,其并不脫離本發(fā)明內(nèi)容的精神與范圍。

本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,但并不作為對本發(fā)明的限定。另外,在附圖及實(shí)施方式中所使用相同或類似標(biāo)號的元件/構(gòu)件是用來代表相同或類似部分。

關(guān)于本文中所使用的“第一”、“第二”、…等,并非特別指稱次序或順位的意思,也非用以限定本發(fā)明,其僅為了區(qū)別以相同技術(shù)用語描述的元件或操作。

關(guān)于本文中所使用的方向用語,例如:上、下、左、右、前或后等,僅是參考附圖的方向。因此,使用的方向用語是用來說明并非用來限制本創(chuàng)作。

關(guān)于本文中所使用的“包含”、“包括”、“具有”、“含有”等等,均為開放性的用語,即意指包含但不限于。

關(guān)于本文中所使用的“及/或”,包括所述事物的任一或全部組合。

關(guān)于本文中所使用的用語“大致”、“約”等,用以修飾任何可以微變化的數(shù)量或誤差,但這些微變化或誤差并不會改變其本質(zhì)。一般而言,此類用語所修飾的微變化或誤差的范圍在部分實(shí)施例中可為20%,在部分實(shí)施例中可為10%,在部分實(shí)施例中可為5%或是其他數(shù)值。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)了解,前述提及的數(shù)值可依實(shí)際需求而調(diào)整,并不以此為限。

某些用以描述本申請的用詞將于下或在此說明書的別處討論,以提供本領(lǐng)域技術(shù)人員在有關(guān)本申請的描述上額外的引導(dǎo)。

圖1為本發(fā)明具體實(shí)施方式提供的一種計算機(jī)源代碼的編譯方法的實(shí)施例一的流程圖,如圖1所示,修改源程序編譯過程,基于編譯列表產(chǎn)生一個獨(dú)一無二的數(shù)字簽名(特征值),并將數(shù)字簽名編譯成特征模塊嵌套到可執(zhí)行程序中,該數(shù)字簽名在可執(zhí)行程序中可讀。

該附圖所示的具體實(shí)施方式中,該編譯方法包括:

步驟101:編譯源程序產(chǎn)生目標(biāo)程序和編譯列表。源程序包括源程序中復(fù)用的程序段;目標(biāo)程序是源程序編譯產(chǎn)生的中間產(chǎn)品;編譯列表是源程序編譯時產(chǎn)生的編譯過程信息,編譯列表包含了源程序及其復(fù)用的其他程序段展開后的代碼和一些編譯信息。

步驟102:根據(jù)所述編譯列表對應(yīng)的特征值產(chǎn)生特征模塊。特征模塊可以加載到可執(zhí)行程序中;特征值可以為MD5碼。

步驟103:根據(jù)所述目標(biāo)程序和所述特征模塊生成可執(zhí)行程序。即將特征模塊嵌入到目標(biāo)程序中,特征模塊中帶有特征值。本發(fā)明的具體實(shí)施例中,特征值為32位。

參見圖1,本發(fā)明在不影響程序原有功能的前提下,修改源程序的編譯過程,通過MD5算法為源程序產(chǎn)生一個獨(dú)一無二的數(shù)字簽名(即特征值),并將數(shù)字簽名編譯成特征模塊最終嵌套到可運(yùn)行模塊(即可執(zhí)行程序)中,該數(shù)字簽名在可運(yùn)行模塊中是可讀的;源程序的數(shù)字簽名可以在編譯時保存下來,也可以隨時重新生成,只要源程序沒有變更,數(shù)字簽名就不會改變,這樣一來,就可以隨時讀取可運(yùn)行模塊中的數(shù)字簽名與源程序的數(shù)字簽名進(jìn)行比對,從而保證可運(yùn)行模塊與其對應(yīng)源程序的一致性,實(shí)現(xiàn)了軟件包的源程序級認(rèn)證功能,能夠確保外包軟件產(chǎn)品的源代碼的可信度。

圖2為本發(fā)明具體實(shí)施方式提供的一種計算機(jī)源代碼的編譯方法的實(shí)施例二的流程圖,如圖2所示,為了防止不必要信息影響源程序特征值的生成結(jié)果,根據(jù)編譯列表產(chǎn)生特征模塊之前,需要濾除編譯列表中非人工編寫的程序代碼。

該附圖所示的具體實(shí)施方式中,步驟102之前,該編譯方法還包括:

步驟101-1:濾除所述編譯列表中非人工編寫的程序代碼。本發(fā)明的具體實(shí)施例中,非人工編寫的所述程序代碼包括:編譯日期和時間戳(TIMESTAMP)等信息。

參見圖2,針對編譯列表,過濾掉非人工編寫的程序代碼,比如編譯源程序過程中自動產(chǎn)生的編譯日期,SQL程序預(yù)編譯生成的TIMESTAMP等信息。這些信息會影響特征值的生成結(jié)果,因?yàn)椴煌掌?,對于源程序來說,也是差異,生成的特征值也是不同的。經(jīng)過過濾處理后,得到展開的全量代碼,即擴(kuò)展的源程序(源程序復(fù)用的程序段,在源程序編譯過程中,會將該程序段拷貝進(jìn)源程序作為源程序的組成部分,即當(dāng)源程序調(diào)用的程序段發(fā)生改變時,擴(kuò)展的源程序也會發(fā)生變化,特征值也會發(fā)生變化)。濾除編譯列表中非人工編寫的程序代碼,可以在認(rèn)證可運(yùn)行模塊與其對應(yīng)源程序的一致性時,不受時間信息的干擾,提高計算機(jī)源代碼認(rèn)證的科學(xué)性與可靠性。

圖3為本發(fā)明具體實(shí)施方式提供的一種計算機(jī)源代碼的編譯方法的實(shí)施例三的流程圖,如圖3所示,濾除編譯列表中非人工編寫的程序代碼后,此時的編譯列表可以看成大文本信息,根據(jù)編譯列表產(chǎn)生源特征值,再將源特征值和程序名組成一個匯編程序,最后編譯匯編程序從而產(chǎn)生特征模塊。

該附圖所示的具體實(shí)施方式中,步驟102具體包括:

步驟1021:根據(jù)所述編譯列表產(chǎn)生對應(yīng)源程序的特征值。對應(yīng)源程序的特征值就是源特征值,源程序的任何修改都會導(dǎo)致源特征值發(fā)生變化。

步驟1022:根據(jù)對應(yīng)所述源程序的特征值產(chǎn)生匯編程序。本發(fā)明的具體實(shí)施例中,也可以在匯編程序中加入程序名,即根據(jù)所述源特征值和程序名產(chǎn)生匯編程序。

步驟1023:編譯所述匯編程序產(chǎn)生特征模塊。特征模塊可以加載到可執(zhí)行程序中,并且特征模塊中含有源特征值。

如圖3所示,即使源程序的長度不變,字符發(fā)生變化,也會導(dǎo)致源特征值發(fā)生變化,可以確保源程序與可執(zhí)行程序的一致性。

圖4為本發(fā)明具體實(shí)施方式提供的一種計算機(jī)源代碼的編譯裝置的實(shí)施例一的示意框圖,圖1-圖3所述的編譯方法可以應(yīng)用到圖4所示的編譯裝置中,在不影響程序原有功能的前提下,修改源程序編譯過程,基于編譯列表產(chǎn)生一個獨(dú)一無二的數(shù)字簽名(特征值),并將數(shù)字簽名編譯成特征模塊嵌套到可執(zhí)行程序(即可運(yùn)行模塊)中,該數(shù)字簽名在可執(zhí)行程序中可讀。

該附圖所示的具體實(shí)施方式中,該編譯裝置包括編譯單元1、產(chǎn)生單元2和生成單元3,其中,編譯單元1用于編譯源程序產(chǎn)生目標(biāo)程序和編譯列表;產(chǎn)生單元2用于根據(jù)所述編譯列表對應(yīng)的特征值產(chǎn)生特征模塊;生成單元3用于根據(jù)所述目標(biāo)程序和所述特征模塊生成可執(zhí)行程序。

參見圖4,本發(fā)明在不影響程序原有功能的前提下,修改源程序的編譯過程,通過MD5算法為源程序產(chǎn)生一個獨(dú)一無二的數(shù)字簽名(即特征值),并將數(shù)字簽名編譯成特征模塊最終嵌套到可運(yùn)行模塊(即可執(zhí)行程序)中,該數(shù)字簽名在可運(yùn)行模塊中是可讀的;源程序的數(shù)字簽名可以在編譯時保存下來,也可以隨時重新生成,只要源程序沒有變更,數(shù)字簽名就不會改變,這樣一來,就可以隨時讀取可運(yùn)行模塊中的數(shù)字簽名與源程序的數(shù)字簽名進(jìn)行比對,從而保證可運(yùn)行模塊與其對應(yīng)源程序的一致性,實(shí)現(xiàn)了軟件包的源程序級認(rèn)證功能,能夠確保外包軟件產(chǎn)品的源代碼的可信度。

圖5為本發(fā)明具體實(shí)施方式提供的一種計算機(jī)源代碼的編譯裝置的實(shí)施例二的示意框圖,圖1-圖3所述的編譯方法可以應(yīng)用到圖5所示的編譯裝置中,為了防止不必要信息影響源程序特征值的生成結(jié)果,根據(jù)編譯列表產(chǎn)生特征模塊之前,需要濾除編譯列表中非人工編寫的程序代碼。

該附圖所示的具體實(shí)施方式中,編譯裝置還包括過濾單元4,其中,過濾單元4用于濾除所述編譯列表中非人工編寫的程序代碼。本發(fā)明的具體實(shí)施例中,非人工編寫的所述程序代碼包括:編譯日期和時間戳(TIMESTAMP)等信息。

參見圖5,針對編譯列表,過濾掉非人工編寫的程序代碼,比如編譯源程序過程中自動產(chǎn)生的編譯日期,SQL程序預(yù)編譯生成的TIMESTAMP等信息。這些信息會影響特征值的生成結(jié)果,因?yàn)椴煌掌冢瑢τ谠闯绦騺碚f,也是差異,生成的特征值也是不同的。經(jīng)過過濾處理后,得到展開的全量代碼,即擴(kuò)展的源程序(源程序復(fù)用的程序段,在源程序編譯過程中,會將該程序段拷貝進(jìn)源程序作為源程序的組成部分,即當(dāng)源程序調(diào)用的程序段發(fā)生改變時,擴(kuò)展的源程序也會發(fā)生變化,特征值也會發(fā)生變化)。濾除編譯列表中非人工編寫的程序代碼,可以在認(rèn)證可運(yùn)行模塊與其對應(yīng)源程序的一致性時,不受時間信息的干擾,提高計算機(jī)源代碼認(rèn)證的科學(xué)性與可靠性。

圖6為本發(fā)明具體實(shí)施方式提供的一種計算機(jī)源代碼的編譯裝置的實(shí)施例三的示意框圖,如圖6所示,濾除編譯列表中非人工編寫的程序代碼后,此時的編譯列表可以看成大文本信息,根據(jù)編譯列表產(chǎn)生源特征值,再將源特征值和程序名組成一個匯編程序,最后編譯匯編程序從而產(chǎn)生特征模塊。

該附圖所示的具體實(shí)施方式中,所述產(chǎn)生單元2進(jìn)一步包括產(chǎn)生模塊21、匯編模塊22和編譯模塊23,其中,產(chǎn)生模塊21用于根據(jù)所述編譯列表產(chǎn)生對應(yīng)源程序的特征值;匯編模塊22用于根據(jù)對應(yīng)所述源程序的特征值產(chǎn)生匯編程序;編譯模塊23用于編譯所述匯編程序產(chǎn)生特征模塊。

如圖6所示,即使源程序的長度不變,字符發(fā)生變化,也會導(dǎo)致特征值發(fā)生變化,可以確保源程序與可執(zhí)行程序的一致性。

圖7為本發(fā)明具體實(shí)施方式提供的一種計算機(jī)源代碼的認(rèn)證方法的實(shí)施例一的流程圖,如圖7所示,數(shù)字簽名在可執(zhí)行程序中通過編譯平臺可以解析出來,通過編譯源程序可以獲得源程序的數(shù)字簽名,通過比對可執(zhí)行程序中的數(shù)字簽名和源程序的數(shù)字簽名,從而可以確??蓤?zhí)行程序與源程序的一致性。

該附圖所示的具體實(shí)施方式中,該認(rèn)證方法包括:

步驟201:解析可執(zhí)行程序中特征模塊對應(yīng)的特征值。利用編譯平臺解析可執(zhí)行程序,找到該可執(zhí)行程序的源程序編譯時產(chǎn)生的特征值(即第一特征值),特征值就是目標(biāo)特征值,該特征值與特征模塊對應(yīng)。

步驟202:編譯源程序產(chǎn)生編譯列表。源程序包括源程序中復(fù)用的程序段;編譯列表是源程序編譯時產(chǎn)生的編譯過程信息,編譯列表包含了源程序及其復(fù)用的其他程序段展開后的代碼和一些編譯信息。

步驟203:根據(jù)所述編譯列表產(chǎn)生源程序?qū)?yīng)的特征值(即第二特征值)。源特征值就是源程序特征值,源程序的任何修改都會導(dǎo)致源特征值發(fā)生變化。

步驟204:比較所述特征模塊對應(yīng)的所述特征值和所述源程序?qū)?yīng)的所述特征值以驗(yàn)證計算機(jī)源代碼的構(gòu)建是否可信。如果源特征值和目標(biāo)特征值相同,說明計算機(jī)源代碼的構(gòu)建是可信的,如果源特征值和目標(biāo)特征值不相同,說明可執(zhí)行程序與源程序不對應(yīng),即計算機(jī)源代碼的構(gòu)建不可信。

參見圖7,利用軟件編譯平臺解析可執(zhí)行程序,獲得該可執(zhí)行程序?qū)?yīng)的源程序編譯時產(chǎn)生的特征值,同時再次編譯源程序,產(chǎn)生一個對應(yīng)該源程序的特征值,比較這兩個特征值是否相同,只要源程序沒有變更,特征值就不會改變,這樣一來,就可以隨時讀取可執(zhí)行程序的特征值與源程序的特征值進(jìn)行比對,從而保證可執(zhí)行程序與其對應(yīng)源程序的一致性,實(shí)現(xiàn)了軟件包的源程序級認(rèn)證功能,能夠確保外包軟件產(chǎn)品的源代碼的可信度。

圖8為本發(fā)明具體實(shí)施方式提供的一種計算機(jī)源代碼的認(rèn)證方法的實(shí)施例二的流程圖,如圖8所示,為了防止不必要信息影響源程序特征值的生成結(jié)果,根據(jù)編譯列表產(chǎn)生特征模塊之前,需要濾除編譯列表中非人工編寫的程序代碼。

該附圖所示的具體實(shí)施方式中,在步驟203之前,該認(rèn)證方法還包括:

步驟202-1:濾除所述編譯列表中非人工編寫的程序代碼。本發(fā)明的具體實(shí)施例中,非人工編寫的所述程序代碼包括:編譯日期和時間戳。那么在步驟203中根據(jù)濾除處理后的所述編譯列表產(chǎn)生源程序?qū)?yīng)的特征值。

參見圖8,針對編譯列表,過濾掉非人工編寫的程序代碼,比如編譯源程序過程中自動產(chǎn)生的編譯日期,SQL程序預(yù)編譯生成的TIMESTAMP等信息。這些信息會影響特征值的生成結(jié)果,因?yàn)椴煌掌?,對于源程序來說,也是差異,生成的特征值也是不同的。經(jīng)過過濾處理后,得到展開的全量代碼,即擴(kuò)展的源程序(源程序復(fù)用的程序段,在源程序編譯過程中,會將該程序段拷貝進(jìn)源程序作為源程序的組成部分,即當(dāng)源程序調(diào)用的程序段發(fā)生改變時,擴(kuò)展的源程序也會發(fā)生變化,特征值也會發(fā)生變化)。濾除編譯列表中非人工編寫的程序代碼,可以在認(rèn)證可運(yùn)行模塊與其對應(yīng)源程序的一致性時,不受時間信息的干擾,提高計算機(jī)源代碼認(rèn)證的科學(xué)性與可靠性。

圖9為本發(fā)明具體實(shí)施方式提供的一種計算機(jī)源代碼的認(rèn)證裝置的實(shí)施例一的示意框圖,如圖9所示的認(rèn)證裝置可以應(yīng)用到圖7-圖8所示的認(rèn)證方法中,數(shù)字簽名在可執(zhí)行程序中可讀,通過編譯源程序可以獲得源程序的數(shù)字簽名,通過比對可執(zhí)行程序中的數(shù)字簽名和源程序的數(shù)字簽名,從而可以確??蓤?zhí)行程序與源程序的一致性。

該附圖所示的具體實(shí)施方式中,認(rèn)證裝置包括解析單元10、編譯單元20、產(chǎn)生單元30和比較單元40,其中,解析單元10用于解析可執(zhí)行程序中特征模塊對應(yīng)的特征值;編譯單元20用于編譯源程序產(chǎn)生編譯列表;產(chǎn)生單元30用于根據(jù)所述編譯列表產(chǎn)生源程序?qū)?yīng)的特征值;比較單元40用于比較所述特征模塊對應(yīng)的特征值和所述源程序?qū)?yīng)的特征值以驗(yàn)證計算機(jī)源代碼的構(gòu)建是否可信。

參見圖9,利用軟件編譯平臺解析可執(zhí)行程序,獲得該可執(zhí)行程序?qū)?yīng)的源程序編譯時產(chǎn)生的特征值,同時再次編譯源程序,產(chǎn)生一個對應(yīng)該源程序的特征值,比較這兩個特征值是否相同,只要源程序沒有變更,特征值就不會改變,這樣一來,就可以隨時讀取可執(zhí)行程序的特征值與源程序的特征值進(jìn)行比對,從而保證可執(zhí)行程序與其對應(yīng)源程序的一致性,實(shí)現(xiàn)了軟件包的源程序級認(rèn)證功能,能夠確保外包軟件產(chǎn)品的源代碼的可信度。

圖10為本發(fā)明具體實(shí)施方式提供的一種計算機(jī)源代碼的認(rèn)證裝置的實(shí)施例二的示意框圖,如圖10所示的認(rèn)證裝置可以應(yīng)用到圖7-圖8所示的認(rèn)證方法中,為了防止不必要信息影響源程序特征值的生成結(jié)果,根據(jù)編譯列表產(chǎn)生特征模塊之前,需要濾除編譯列表中非人工編寫的程序代碼。

該附圖所示的具體實(shí)施方式中,該認(rèn)證裝置還包括過濾單元50,其中,過濾單元50用于濾除所述編譯列表中非人工編寫的程序代碼。

如圖10所示,針對編譯列表,過濾掉非人工編寫的程序代碼,比如編譯源程序過程中自動產(chǎn)生的編譯日期,SQL程序預(yù)編譯生成的TIMESTAMP等信息。這些信息會影響特征值的生成結(jié)果,因?yàn)椴煌掌?,對于源程序來說,也是差異,生成的特征值也是不同的。經(jīng)過過濾處理后,得到展開的全量代碼,即擴(kuò)展的源程序(源程序復(fù)用的程序段,在源程序編譯過程中,會將該程序段拷貝進(jìn)源程序作為源程序的組成部分,即當(dāng)源程序調(diào)用的程序段發(fā)生改變時,擴(kuò)展的源程序也會發(fā)生變化,特征值也會發(fā)生變化)。濾除編譯列表中非人工編寫的程序代碼,可以在認(rèn)證可運(yùn)行模塊與其對應(yīng)源程序的一致性時,不受時間信息的干擾,提高計算機(jī)源代碼認(rèn)證的科學(xué)性與可靠性。

圖11為本發(fā)明具體實(shí)施方式提供的一種計算機(jī)源代碼的認(rèn)證系統(tǒng)的示意框圖,如圖11所示的認(rèn)證系統(tǒng)可以應(yīng)用到如圖1-圖10所示的方法或者裝置中,修改源程序編譯過程,基于編譯列表產(chǎn)生一個獨(dú)一無二的數(shù)字簽名(特征值),并將數(shù)字簽名編譯成特征模塊后嵌套到可執(zhí)行程序中,該數(shù)字簽名在可執(zhí)行程序中可讀,通過比對可執(zhí)行程序中的數(shù)字簽名和源程序生成的數(shù)字簽名,從而可以確??蓤?zhí)行程序與源程序的一致性。

該附圖所示的具體實(shí)施方式中,認(rèn)證系統(tǒng)包括:編譯裝置A和認(rèn)證裝置B,其中,所述編譯裝置A包括:編譯單元1、產(chǎn)生單元2和生成單元3,其中,編譯單元1用于編譯源程序產(chǎn)生目標(biāo)程序和編譯列表;產(chǎn)生單元2用于根據(jù)所述編譯列表對應(yīng)的特征值產(chǎn)生特征模塊;生成單元3用于根據(jù)所述目標(biāo)程序和所述特征模塊生成可執(zhí)行程序。

所述認(rèn)證裝置B包括:解析單元10、編譯單元20、產(chǎn)生單元30和比較單元40,其中,解析單元10用于解析可執(zhí)行程序中特征模塊對應(yīng)的特征值;編譯單元20用于編譯源程序產(chǎn)生編譯列表;產(chǎn)生單元30用于根據(jù)所述編譯列表產(chǎn)生源程序?qū)?yīng)的特征值;比較單元40用于比較所述特征模塊對應(yīng)的所述特征值和所述源程序?qū)?yīng)的所述特征值以驗(yàn)證計算機(jī)源代碼的構(gòu)建是否可信。

參見圖11,本發(fā)明在不影響程序原有功能的前提下,修改源程序的編譯過程,通過MD5算法為源程序產(chǎn)生一個獨(dú)一無二的數(shù)字簽名(即特征值),并將數(shù)字簽名編譯成特征模塊最終嵌套到可運(yùn)行模塊(即可執(zhí)行程序)中,該數(shù)字簽名在可運(yùn)行模塊中是可讀的;源程序的數(shù)字簽名可以在編譯時保存到可運(yùn)行模塊中,也可以隨時利用源程序重新生成,只要源程序沒有變更,數(shù)字簽名就不會改變,這樣一來,就可以隨時讀取可運(yùn)行模塊中的數(shù)字簽名與源程序的數(shù)字簽名進(jìn)行比對,從而保證可運(yùn)行模塊與其對應(yīng)源程序的一致性,實(shí)現(xiàn)了軟件包的源程序級認(rèn)證功能,能夠確保外包軟件產(chǎn)品的源代碼的可信度。

本發(fā)明提供一種計算機(jī)源代碼的編譯方法及裝置、認(rèn)證方法、裝置及系統(tǒng),在不影響程序原有功能的前提下,修改源程序的編譯過程,利用MD5算法基于源程序產(chǎn)生一個獨(dú)一無二的數(shù)字簽名(即特征值),并將數(shù)字簽名編譯成特征模塊后嵌套到可運(yùn)行模塊(即可執(zhí)行程序)中,該數(shù)字簽名在可運(yùn)行模塊中可讀,因此通過可運(yùn)行模塊可以獲得對應(yīng)可運(yùn)行模塊的數(shù)字簽名;由于對應(yīng)源程序的數(shù)字簽名在編譯時保存到可運(yùn)行模塊中,并且可以從該可以運(yùn)行模塊中解析出該數(shù)字簽名。同時,也可以利用源程序(源代碼)隨時重新生成對應(yīng)源程序的數(shù)字簽名,只要源程序沒有變更,數(shù)字簽名就不會改變,這樣一來,就可以隨時解析出可運(yùn)行模塊中的數(shù)字簽名與源程序生成的數(shù)字簽名進(jìn)行比對,從而保證可運(yùn)行模塊與其對應(yīng)源程序的一致性,實(shí)現(xiàn)了軟件包的源程序級認(rèn)證功能,能夠確保外包軟件產(chǎn)品的源代碼的可信度和科學(xué)性。

上述的本發(fā)明實(shí)施例可在各種硬件、軟件編碼或兩者組合中進(jìn)行實(shí)施。例如,本發(fā)明的實(shí)施例也可為在數(shù)據(jù)信號處理器(Digital Signal Processor,DSP)中執(zhí)行上述方法的程序代碼。本發(fā)明也可涉及計算機(jī)處理器、數(shù)字信號處理器、微處理器或現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)執(zhí)行的多種功能??筛鶕?jù)本發(fā)明配置上述處理器執(zhí)行特定任務(wù),其通過執(zhí)行定義了本發(fā)明揭示的特定方法的機(jī)器可讀軟件代碼或固件代碼來完成。可將軟件代碼或固件代碼發(fā)展為不同的程序語言與不同的格式或形式。也可為不同的目標(biāo)平臺編譯軟件代碼。然而,根據(jù)本發(fā)明執(zhí)行任務(wù)的軟件代碼與其他類型配置代碼的不同代碼樣式、類型與語言不脫離本發(fā)明的精神與范圍。

以上所述僅為本發(fā)明示意性的具體實(shí)施方式,在不脫離本發(fā)明的構(gòu)思和原則的前提下,任何本領(lǐng)域的技術(shù)人員所做出的等同變化與修改,均應(yīng)屬于本發(fā)明保護(hù)的范圍。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1