本發(fā)明實施例涉及數(shù)據(jù)安全領(lǐng)域,尤其涉及一種插件簽名的方法及電子設(shè)備。
背景技術(shù):
隨著科學(xué)技術(shù)的不斷進步,電子設(shè)備也得到了飛速的發(fā)展,許多電子設(shè)備,如智能手機、平板電腦、電腦等,成為了人們?nèi)粘I畹谋匦杵?,用戶可通過上述電子設(shè)備進行信息分享以及應(yīng)用體驗。
在現(xiàn)有技術(shù)中,為了能夠提供給用戶多種服務(wù),通常一個應(yīng)用軟件中會設(shè)置有插件,當(dāng)用戶需要使用插件功能時,則直接調(diào)用插件的程序包,無需再安裝相應(yīng)的應(yīng)用程序,方便用戶使用。如,微信應(yīng)用程序中設(shè)置有滴滴出行的插件,這樣,用戶不用再下載滴滴出行應(yīng)用程序,直接使用微信應(yīng)用程序也能實現(xiàn)預(yù)約出租車的功能。
本申請發(fā)明人在實現(xiàn)本發(fā)明實施例中技術(shù)方案的過程中,發(fā)現(xiàn)上述技術(shù)至少存在如下技術(shù)問題:
由于插件可以不需要安裝便直接使用,因此,當(dāng)應(yīng)用程序中嵌入惡意插件時,會導(dǎo)致使用該應(yīng)用程序的用戶的信息泄露等安全性問題,所以,現(xiàn)有技術(shù)中不需要安裝的插件存在安全性低的技術(shù)問題。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種插件簽名的方法及電子設(shè)備,用以解決現(xiàn)有技術(shù)中不需要安裝的插件存在的安全性低的技術(shù)問題,實現(xiàn)提高插件的安全性,保障用戶的信息安全的技術(shù)效果。
本發(fā)明實施例提供一種插件簽名的方法,包括:
獲取第一插件的程序包,其中,所述第一插件為通過直接調(diào)用所述程序包來實現(xiàn)與所述第一插件對應(yīng)的服務(wù)的插件;
獲取簽名文件,其中,所述簽名文件為用于對所述第一插件進行簽名的文件;
基于所述簽名文件,對所述第一插件進行簽名,生成經(jīng)簽名的第一插件程序包。
本發(fā)明實施例提供一種電子設(shè)備,包括:
第一獲取單元,用于獲取第一插件的程序包,其中,所述第一插件為通過直接調(diào)用所述程序包來實現(xiàn)與所述第一插件對應(yīng)的服務(wù)的插件;
第二獲取單元,用于獲取簽名文件,其中,所述簽名文件為用于對所述第一插件進行簽名的文件;
第一執(zhí)行單元,用于基于所述簽名文件,對所述第一插件進行簽名,生成經(jīng)簽名的第一插件程序包。
本發(fā)明實施例提供的插件簽名方法及電子設(shè)備,通過獲取第一插件的程序包,其中,所述第一插件為通過直接調(diào)用所述程序包來實現(xiàn)與所述第一插件對應(yīng)的服務(wù)的插件;獲取簽名文件,其中,所述簽名文件為用于對所述第一插件進行簽名的文件;基于所述簽名文件,對所述第一插件進行簽名,生成經(jīng)簽名的第一插件程序包的方法,這樣,將不需要安裝便能使用的插件也進行簽名,當(dāng)有其他應(yīng)用程序要調(diào)用所述插件的程序時,便能自動基于簽名信息對所述插件的安全性進行驗證,當(dāng)發(fā)現(xiàn)是惡意插件時則不使用,從而解決了現(xiàn)有技術(shù)中不需要安裝的插件存在的安全性低的技術(shù)問題,實現(xiàn)提高插件的安全性,保障用戶的信息安全的技術(shù)效果。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例一中提供的一種插件簽名的方法的流程圖;
圖2為本發(fā)明實施例二中提供的一種電子設(shè)備的結(jié)構(gòu)框圖。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
實施例一
請參考圖1,為本申請實施例一中提供的一種插件簽名的方法的流程圖,所述方法包括:
S101:獲取第一插件的程序包,其中,所述第一插件為通過直接調(diào)用所述程序包來實現(xiàn)與所述第一插件對應(yīng)的服務(wù)的插件;
S102:獲取簽名文件,其中,所述簽名文件為用于對所述第一插件進行簽名的文件;
S103:基于所述簽名文件,對所述第一插件進行簽名,生成經(jīng)簽名的第一插件程序包。
在具體實施過程中,所述方法可以應(yīng)用在包含有插件編輯工具的智能手機、智能電視、平板電腦、個人電腦,當(dāng)然,也可以是其他能夠編輯插件的電子設(shè)備,在此,就不一一舉例了。所述插件編輯工具可以是軟件開發(fā)包SDK(Software Development Kit)、Eclipse ADT或者Ant等,在本申請實施例中不作限制。
插件是一種遵循一定規(guī)范的應(yīng)用程序接口編寫出來的程序,其只能運行在程序規(guī)定的系統(tǒng)平臺下(可能同時支持多個平臺),而不能脫離指定的平臺單獨運行,因為插件需要調(diào)用原純凈系統(tǒng)提供的函數(shù)庫或者數(shù)據(jù)。很多軟件都有插件,插件有無數(shù)種。例如在IE中,WEB瀏覽器能夠直接調(diào)用插件程序,用于處理特定類型的文件。插件的定位是開發(fā)實現(xiàn)原純凈系統(tǒng)平臺、應(yīng)用軟件平臺不具備的功能的程序。
軟件開發(fā)包SDK、Eclipse ADT或者Ant是用于為特定的軟件包、軟件框架、硬件平臺、操作系統(tǒng)等建立應(yīng)用軟件的開發(fā)工具的集合,以供研發(fā)人員寫入具體的代碼項目,并對代碼項目進行編譯、打包、測試等。
在采用本申請實施例中的方法進行插件簽名時,首先執(zhí)行步驟S101,即:獲取第一插件的程序包,其中,所述第一插件為通過直接調(diào)用所述程序包來實現(xiàn)與所述第一插件對應(yīng)的服務(wù)的插件。
在具體實施過程中,以所述插件編輯工具為軟件開發(fā)包SDK為例,研發(fā)人員通過軟件開發(fā)包SDK編譯出了一個能夠提供某種服務(wù)且無需安裝便可以直接調(diào)用的插件程序包,如應(yīng)用程序A的購物插件,此時,軟件開發(fā)包SDK便獲取了應(yīng)用程序A的購物插件程序包。
在執(zhí)行完成步驟S101之后,本申請實施例中的方法便執(zhí)行步驟S102,即:獲取簽名文件,其中,所述簽名文件為用于對所述第一插件進行簽名的文件。
在本申請實施例中,所述簽名文件包括用于計算簽名信息的哈希函數(shù)以及用于對所述簽名信息進行加密的私鑰,相應(yīng)地,步驟S102的具體實現(xiàn)方式有如下兩種方式:
第一種方式,步驟S102包括:
獲取軟件開發(fā)包SDK中的預(yù)設(shè)簽名文件為所述簽名文件;
在具體實施過程中,沿用上述例子,當(dāng)使用軟件開發(fā)包SDK給應(yīng)用程序A的購物插件進行簽名時,軟件開發(fā)包SDK提供了一種Debug模式,當(dāng)使用Debug模式編譯應(yīng)用程序A的購物插件時,軟件開發(fā)包SDK會調(diào)用Keytool工具自動創(chuàng)建keystore和key,如Keystore名字:“debug.keysotre”;Keystore密碼:“plugin”;Key別名:“plugindebugkey”;Key密碼:“plugin”CN:“CN=Plugin Debug,O=Plugin,C=US”。研發(fā)人員可以根據(jù)實際使用需求改變Debug keystore/key的位置和名字,或者提供一個自定義的Debug keysotre/key,在本申請實施例中不作限制。然而,任何自定義的Debug keystore/key必須使用和默認(rèn)Debug key相同的名字和密碼。
同時,軟件開發(fā)包SDK中還預(yù)存有用于對應(yīng)用程序A的購物插件進行簽名的哈希函數(shù),即一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數(shù)。常用的哈希函數(shù)為MD4(Message Digest)、MD5、SHA1等,其中,MD4是基于32位操作數(shù)的位操作來實現(xiàn)的;MD5對輸入仍以512位分組,其輸出是4個32位字的級聯(lián),與MD4相同,較MD4復(fù)雜,但更安全,在抗分析和抗差分方面表現(xiàn)更好;SHA1是同DSA一起使用的,它對長度小于2^64位的輸入,產(chǎn)生長度為160bit的散列值,因此抗窮舉性更好。本領(lǐng)域技術(shù)人員可以根據(jù)實際使用需求進行選擇,在本申請實施例中不作限制。
軟件開發(fā)包SDK自動創(chuàng)建keystore/key,并獲取預(yù)存的哈希函數(shù)即獲取了對應(yīng)用程序A的購物插件進行簽名的簽名文件。
第二種方式,步驟S102包括:
運行密鑰工具Keytool命令;
接收由輸入單元發(fā)送的與所述密鑰工具Keytool命令對應(yīng)的參數(shù)值;
基于所述參數(shù)值,生成并獲取所述簽名文件。
在具體實施過程中,沿用上述例子,當(dāng)研發(fā)人員不使用軟件開發(fā)包SDK自動創(chuàng)建的Debug key進行簽名時,便需要使用Keytool工具來生成簽名文件。keytool是個密鑰和證書管理工具,它使用戶能夠管理自己的公鑰/私鑰對及相關(guān)證書,用于(通過數(shù)字簽名)自我認(rèn)證(用戶向別的用戶/服務(wù)認(rèn)證自己)或數(shù)據(jù)完整性以及認(rèn)證服務(wù),同時,還允許用戶儲存他們的通信對等者的公鑰。在生成簽名文件時,使用keytool命令并傳入一些可選參數(shù),如表1所示。運行Keytool命令后,keytool會提示你輸入keystore和key的密碼,并且會提示你輸入key中其它的字段。隨后便生成my-release-key.keystore的文件,即為用于對應(yīng)用程序A的購物插件進行簽名的簽名文件。keystore和key受用戶輸入的密碼保護;keystore中包含一個key,有效期為10000天;key別名將在對插件進行簽名時指向當(dāng)前這個keystore。
表1
在執(zhí)行完成步驟S102之后,本申請實施例中的方法便執(zhí)行步驟S103,即:基于所述簽名文件,對所述第一插件進行簽名,生成經(jīng)簽名的第一插件程序包。
在本申請實施例中,步驟S103的具體實現(xiàn)方式如下:
基于所述哈希函數(shù),對所述程序包進行哈希運算,獲取插件摘要;
基于所述私鑰,對所述插件摘要進行加密,獲取所述第一插件的簽名信息;
基于所述簽名信息及所述程序包,生成經(jīng)簽名的第一插件程序包。
在具體實施過程中,沿用上述例子,當(dāng)軟件開發(fā)包SDK獲取簽名文件之后,便使用所述簽名文件對應(yīng)用程序A的購物插件進行簽名。首先利用簽名文件中的哈希函數(shù),如MD5,對應(yīng)用程序A的購物插件的程序包進行哈希運算,得到應(yīng)用程序A的購物插件的信息摘要。然后便利用前述步驟中獲取的簽名文件中的密鑰對應(yīng)用程序A的購物插件的信息摘要進行加密,從而獲取簽名信息,最后將獲取的簽名信息附在應(yīng)用程序A的購物插件程序包上,即完成了簽名。具體來講,可以使用軟件開發(fā)包SDK中的Jarsigner工具進行簽名。jarsigner工具利用軟件開發(fā)包SDK的密鑰倉庫中的信息來產(chǎn)生或校驗Java存檔(JAR)文件的數(shù)字簽名。具體命令如下:
$jarsigner-verbose-keystore my-release-key.keystore
my_plugin.dll alias_name
運行上述命令后,Jarsigner會提示輸入keystore和key的密碼,然后Jarsigner基于輸入的參數(shù)修改插件文件,此時,應(yīng)用程序A的購物插件便簽上名了。為了進一步保證插件的安全,本領(lǐng)域技術(shù)人員也可以使用不同的key對插件多次簽名,在本申請實施例中不作限制。
當(dāng)Jarsigner完成簽名后,研發(fā)人員可以對插件的簽名進行驗證,具體可以使用如下命令:
$jarsigner-verify my_signed.dll
如果簽名正確,則Jarsigner會輸出“jar verified”。
在執(zhí)行完成上述步驟之后,本申請實施例中的方法還包括:
對所述經(jīng)簽名的第一插件程序包進行對齊,以使所述經(jīng)簽名的第一插件程序包以預(yù)設(shè)字節(jié)數(shù)對齊。
在具體實施過程中,當(dāng)軟件開發(fā)包SDK對應(yīng)用程序A的購物插件進行簽名后,本領(lǐng)域技術(shù)人員還可以通過zipalign優(yōu)化工具對簽名后的程序包進行對齊。Zipalign是軟件開發(fā)包SDK中的一個檔案整理工具,能夠?qū)崿F(xiàn)讓那些未壓縮的數(shù)據(jù)以特定的字節(jié)對齊,從而優(yōu)化程序包到整合包,如以4字節(jié)對齊能優(yōu)化性能。當(dāng)對齊后,操作系統(tǒng)能通過mmap()閱讀文件,而不是從包中拷貝所有的數(shù)據(jù),使程序執(zhí)行時間達到最低限度,當(dāng)設(shè)備運行優(yōu)化后的程序時占更少的RAM(Random Access Memory)隨機訪問內(nèi)存,以使操作系統(tǒng)與程序之間的交互作用更有效率,程序和整體系統(tǒng)的運行速度更快,發(fā)揮更大的潛能。
zipalign包含在軟件開發(fā)包SDK的tools/文件夾下,當(dāng)需要對齊簽名后的程序包時,可執(zhí)行如下命令:
zipalign-v 4your_project_name-unaligned.dll your_project_name.dll
-v標(biāo)志表示開始日志輸出,4表示對齊的字節(jié),當(dāng)然,本領(lǐng)域技術(shù)人員也可以根據(jù)實際使用需要選擇其他的數(shù)字,在本申請實施例中不作限制。第一個文件參數(shù)是經(jīng)簽名后插件名稱,即輸入的程序包,第二個文件參數(shù)是目的插件文件,即輸出的程序包,若需要用對齊后的程序包直接覆蓋未對齊的程序包時,添加-f標(biāo)志即可。
在執(zhí)行完成上述步驟之后,應(yīng)用程序A的購物插件便可以發(fā)布到相關(guān)平臺上,以供用戶使用。
實施例二
圖2為本發(fā)明實施例二提供的一種電子設(shè)備,所述電子設(shè)備具體可以是包含有插件編輯工具的智能手機、智能電視、平板電腦、個人電腦,當(dāng)然,也可以是其他能夠編輯插件的電子設(shè)備,所述插件編輯工具可以是軟件開發(fā)包SDK(Software Development Kit)、Eclipse ADT或者Ant等,在本申請實施例中不作限制。所述電子設(shè)備包括:第一獲取單元101、第二獲取單元102以及第一執(zhí)行單元103,而且本發(fā)明實施例二中的第一獲取單元101、第二獲取單元102以及第一執(zhí)行單元103可以通過硬件處理器(hardware processor)來實現(xiàn)相關(guān)功能單元,其中:
第一獲取單元101,用于獲取第一插件的程序包,其中,所述第一插件為通過直接調(diào)用所述程序包來實現(xiàn)與所述第一插件對應(yīng)的服務(wù)的插件;
第二獲取單元102,用于獲取簽名文件,其中,所述簽名文件為用于對所述第一插件進行簽名的文件;
第一執(zhí)行單元103,用于基于所述簽名文件,對所述第一插件進行簽名,生成經(jīng)簽名的第一插件程序包。
電子設(shè)備通過第一獲取單元101獲取用戶編寫好的插件程序包,以及通過第二獲取單元102獲取用于對插件程序包進行簽名的簽名文件,進而通過第一執(zhí)行單元103利用簽名文件對插件程序包進行簽名,這樣,使不需要安裝的插件也攜帶了簽名信息,提高了插件的安全性;進一步,當(dāng)所述插件的程序包在被調(diào)用時,調(diào)用方可以通過驗證其簽名信息確認(rèn)所述插件是否安全,從而避免惡意插件對用戶信息的泄露,保證了用戶的信息安全。
在本申請實施例二中,第二獲取單元102包括:
第一獲取模塊,用于獲取軟件開發(fā)包SDK中的預(yù)設(shè)簽名文件為所述簽名文件;或
第一執(zhí)行模塊,用于運行密鑰工具Keytool命令;接收由輸入單元發(fā)送的與所述密鑰工具Keytool命令對應(yīng)的參數(shù)值;基于所述參數(shù)值,生成并獲取所述簽名文件。
在本申請實施例二中,所述簽名文件包括用于計算簽名信息的哈希函數(shù)以及用于對所述簽名信息進行加密的私鑰。
在本申請實施例二中,第一執(zhí)行單元103包括:
第二獲取模塊,用于基于所述哈希函數(shù),對所述程序包進行哈希運算,獲取插件摘要;
第三獲取模塊,用于基于所述私鑰,對所述插件摘要進行加密,獲取所述第一插件的簽名信息;
第二執(zhí)行模塊,用于基于所述簽名信息及所述程序包,生成經(jīng)簽名的第一插件程序包。
在本申請實施例二中,所述電子設(shè)備還包括:
第一調(diào)整單元104,用于對所述經(jīng)簽名的第一插件程序包進行對齊,以使所述經(jīng)簽名的第一插件程序包以預(yù)設(shè)字節(jié)數(shù)對齊。
以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動的情況下,即可以理解并實施。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實施方式可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件。基于這樣的理解,上述技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品可以存儲在計算機可讀存儲介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個實施例或者實施例的某些部分所述的方法。
最后應(yīng)說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。