一種通過簽名鑒定文件來源的方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種通過簽名鑒定文件來源的方法和裝置,所述方法包括提取所述安卓程序的數(shù)字簽名和包名;根據(jù)數(shù)字簽名與數(shù)據(jù)庫中該包名對應(yīng)的簽名信息判斷所述安卓程序是否為安全程序。通過包名在數(shù)據(jù)庫中查找該報名對應(yīng)的數(shù)字簽名信息,比較對應(yīng)的簽名信息與提取的數(shù)字簽名信息可以判斷所述安卓程序是否是被改動的安卓程序,在未安裝所述程序之前就能確定該安卓程序的來源,保護了用戶的設(shè)備安全和使用安全。
【專利說明】一種通過簽名鑒定文件來源的方法和裝置
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明涉及信息安全【技術(shù)領(lǐng)域】,尤其是一種通過簽名鑒定安卓文件來源的方法和裝置。
【背景技術(shù)】
[0002]由于安卓系統(tǒng)的開源性,其安全問題也伴隨而來。近年來,使用安卓系統(tǒng)的設(shè)備越來越多,隨之而來的安全性問題也越來越多。目前,市場上的安卓應(yīng)用程序的監(jiān)管還不到位,一些別有用心的制作者往往會修改官方的安卓程序,在其中加入一些惡意代碼或者一些可以實現(xiàn)其目的的代碼,然后再打包發(fā)布供使用者下載。由于監(jiān)管缺失的問題,一些用戶并不知道這些加入了不明代碼的安裝包,從一些不明渠道中下載這些被修改過的安裝程序使用。這樣就會造成信息安全、用戶資費損失、電子設(shè)備不正常運行等問題。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的,就是克服現(xiàn)有技術(shù)的不足,提供一種通過簽名鑒定安卓文件來源的方法和裝置,本發(fā)明和裝置可以判斷安卓程序的來源,在安裝前就可以得知安卓程序是否是來自官方的程序,并且有沒有被修改。
[0004]為了達到上述目的,采用如下技術(shù)方案:
[0005]一種通過簽名鑒定文件來源的方法,所述文件為安卓程序,包括以下步驟:提取所述安卓程序的數(shù)字簽名和包名;根據(jù)數(shù)字簽名與數(shù)據(jù)庫中該包名對應(yīng)的數(shù)字簽名信息判斷所述安卓程序是否為安全程序。
[0006]進一步地,所述方法具體包括以下步驟:提取所述安卓程序的包名和數(shù)字簽名的哈希值;根據(jù)包名從哈希數(shù)據(jù)庫中提取該包名對應(yīng)的哈希值,所述安卓程序的哈希值與哈希數(shù)據(jù)庫中對應(yīng)的哈希值比較,若相同,判斷所述安卓程序為安全程序。
[0007]進一步地,所述方法具體包括以下步驟:
[0008]提取所述安卓程序的包名,數(shù)字簽名的哈希值、簽名人姓名;
[0009]根據(jù)包名從哈希數(shù)據(jù)庫中提取該包名對應(yīng)的哈希值,從簽名人數(shù)據(jù)庫中提取該包名對應(yīng)的簽名人姓名;
[0010]所述安卓程序的數(shù)字簽名的簽名人姓名與簽名人數(shù)據(jù)庫中對應(yīng)的簽名人姓名比較,若相同,則進行下一步;若不同,則所述安卓程序為不可信程序;
[0011]所述安卓程序的數(shù)字簽名的哈希值與哈希數(shù)據(jù)庫中對應(yīng)的哈希值比較,若相同,則所述安卓程序為安全程序。
[0012]一種通過簽名鑒別文件來源的裝置,所述文件為安卓程序,包括提取模塊,用于提取所述安卓程序的數(shù)字簽名和包名;判斷模塊,用于根據(jù)數(shù)字簽名與數(shù)據(jù)庫中該包名對應(yīng)的簽名信息判斷所述安卓程序是否為安全程序。
[0013]進一步地,所述數(shù)據(jù)庫包括哈希數(shù)據(jù)庫,所述哈希數(shù)據(jù)庫中預(yù)存與該包名對應(yīng)的哈希值,所述哈希值與提取模塊提取的數(shù)字簽名的哈希值比較;若哈希數(shù)據(jù)庫中對應(yīng)的哈希值和提取模塊提取的哈希值相同,判斷模塊判斷所述安卓程序為安全程序。
[0014]進一步地,所述數(shù)據(jù)庫包括哈希數(shù)據(jù)庫和簽名人數(shù)據(jù)庫;所述哈希數(shù)據(jù)庫中預(yù)存與包名對應(yīng)的哈希值,所述哈希值用于與提取模塊提取的數(shù)字簽名的哈希值比較;所述簽名人數(shù)據(jù)庫中預(yù)存與包名對應(yīng)的簽名人姓名,所述簽名人姓名用于與提取模塊提取的數(shù)字簽名的簽名人姓名比較;若哈希數(shù)據(jù)庫中對應(yīng)的哈希值與提取模塊提取的哈希值相同,且簽名人姓名數(shù)據(jù)庫中對應(yīng)的簽名人姓名與提取模塊提取的簽名人姓名相同,判斷模塊判斷所述安卓程序為安全程序。
[0015]進一步地,所述判斷模塊先判斷所述安卓程序的簽名人姓名是否與哈希數(shù)據(jù)庫中對應(yīng)的簽名人姓名相同,若相同,再判斷所述安卓程序的哈希值是否與哈希數(shù)據(jù)庫中對應(yīng)的哈希值相同,若相同,則所述安卓程序為安全程序。
[0016]進一步地,所述簽名人姓名為公司名。
[0017]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于:
[0018]通過判斷安卓程序的數(shù)字簽名中的哈希值確認所述安卓程序的來源。由于哈希值具有唯一性,因此通過與預(yù)設(shè)的從官方程序中提取的哈希值比較,可以判斷所述安卓程序是否為未經(jīng)改動的安卓程序,在未安裝所述程序之前就能確定該安卓程序的合法性,保護了用戶的設(shè)備安全和使用安全。
[0019]另外,結(jié)合簽名人信息可以在一定程度上排查出非官方簽名的安卓程序。
【專利附圖】
【附圖說明】
[0020]圖1是本發(fā)明實施例一的通過簽名鑒定文件來源的方法的步驟流程圖;
[0021]圖2是本發(fā)明實施例一的通過簽名鑒定文件來源的裝置的結(jié)構(gòu)示意圖;
[0022]圖3是本發(fā)明實施例二的通過簽名鑒定文件來源的方法的步驟流程圖;
[0023]圖4是本發(fā)明實施例二的通過簽名鑒定文件來源的裝置的結(jié)構(gòu)示意圖。
[0024]圖示:1_提取模塊;2_判斷模塊;3_哈希數(shù)據(jù)庫;4_簽名人數(shù)據(jù)庫。
【具體實施方式】
[0025]下面將結(jié)合附圖以及具體實施方法來詳細說明本發(fā)明,在本發(fā)明的示意性實施及說明用來解釋本發(fā)明,但并不作為對本發(fā)明的限定。
[0026]實施例一
[0027]請參閱圖1,其為本實施例的通過簽名鑒定文件來源的方法的步驟流程圖。其主要包括以下步驟:
[0028]SlO:提取安卓程序的包名和數(shù)字簽名的哈希值。
[0029]具體地,所有安裝到安卓系統(tǒng)的應(yīng)用程序都必有一個數(shù)字證書,此數(shù)字證書用于標(biāo)識應(yīng)用程序的作者和在應(yīng)用程序之間建立信任關(guān)系。該數(shù)字證書即數(shù)字簽名包含有簽名人姓名和哈希信息。每一個安卓程序都必須有簽名才能被安卓系統(tǒng)識別,才能獲得安裝權(quán)限。每一個數(shù)字簽名中的哈希值是唯一的,類似于網(wǎng)卡中的MAC地址。提取安卓程序的哈希值可以通過一組公開的算法實現(xiàn),在PC上的實現(xiàn)工具是“openssl”,該工具是源碼開發(fā)的工具。安卓程序的包名由該安卓程序所有者設(shè)定。例如,騰訊微信的包名為“com.tencent.mm”。[0030]S20:判斷所述安卓程序的哈希值與哈希數(shù)據(jù)庫對應(yīng)的哈希值是否相同,若相同,所述安卓程序為安全程序。
[0031]具體地,數(shù)據(jù)庫包括哈希數(shù)據(jù)庫。所述哈希數(shù)據(jù)庫中預(yù)存哈希值。該哈希值是從安全渠道中獲得的官方安卓程序中提取的哈希值,其對應(yīng)于包名。由于哈希值具有全球唯一性,這些官方的哈希值用于與提取的數(shù)字簽名的哈希值比較。若哈希數(shù)據(jù)庫中與包名對應(yīng)的官方哈希值與提取的哈希值相同,則所述安卓程序為官方的安全程序。若不同,說明該安卓程序被第三方篡改過,為不可信任程序。
[0032]請參閱圖2,其為本發(fā)明實施例一的通過簽名鑒定文件來源的裝置的結(jié)構(gòu)示意圖。
[0033]本實施的通過簽名鑒別安卓程序來源的裝置,包括用于提取所述安卓程序的數(shù)字簽名的提取模塊I和用于根據(jù)數(shù)字簽名與預(yù)設(shè)數(shù)據(jù)庫中的簽名信息判斷所述安卓程序是否為安全程序的判斷模塊2。所述預(yù)設(shè)數(shù)據(jù)庫包括哈希數(shù)據(jù)庫3,所述哈希數(shù)據(jù)庫3中預(yù)存哈希值。這些哈希值是從正規(guī)渠道(官方網(wǎng)站)提取,具有唯一性。其用于與提取模塊I提取的數(shù)字簽名的哈希值比較。若哈希數(shù)據(jù)庫3中與所述安卓程序的包名對應(yīng)的哈希值與提取模塊I提取的哈希值相同,判斷模塊2判斷所述安卓程序為安全程序。
[0034]本實施例從數(shù)字簽名中提取哈希信息作為確認安卓程序的來源,利用哈希值的唯一的特點判斷安卓程序是否為官方安全的程序。可以避免第三方改動官方程序后再發(fā)布到市場中供用戶下載使用,用戶無法識別該程序的來源,以及是否被改動過的問題。
[0035]實施例二
[0036]請參閱圖3,其為本實施例的通過簽名鑒定文件來源的方法的步驟流程圖。其主要包括以下步驟:
[0037]SlO:提取所述安卓程序的包名,數(shù)字簽名的哈希值、簽名人姓名。
[0038]具體地,安卓程序中的數(shù)字簽名除了包括哈希值外,還包括給這個程序簽名的簽名人姓名。利用openssl工具提取數(shù)字簽名的哈希值和簽名人姓名。優(yōu)選地,所述簽名人姓名為公司名。簽名人姓名為公司名可以有效地判斷安卓程序的來源。區(qū)別于個人簽名的復(fù)雜多變性。公司名的簽名具有相對穩(wěn)定性,一般具有公司簽名的安卓程序為可信任的安卓程序。安卓程序的包名由該安卓程序所有者設(shè)定。例如,騰訊微信的包名為“com.tencent.mm”。
[0039]S20:判斷所述安卓程序的簽名人姓名與簽名人數(shù)據(jù)庫中對應(yīng)的簽名人姓名是否相同,若不同,所述安卓程序為不可信任程序;若相同,進行下一步。
[0040]具體地,經(jīng)過步驟SlO后,先判斷安卓程序的數(shù)字簽名的簽名人姓名是否與簽名人數(shù)據(jù)庫中對應(yīng)的簽名人姓名相同。若相同,再進行步驟S30。若不同,該安卓程序肯定經(jīng)過非官方修改,所述安卓程序不可信。簽名人數(shù)據(jù)庫中每一個簽名人姓名對應(yīng)一個以上包名。通過查找包名,可以找到包名對應(yīng)的簽名人姓名。例如包名為“com.tencent._”,其對應(yīng)的簽名人姓名為騰訊公司。
[0041]S30:判斷所述安卓程序的數(shù)字簽名的哈希值是否與哈希數(shù)據(jù)庫中對應(yīng)的哈希值相同,若同,所述安卓程序為安全程序;若不同,所述安卓程序為不可信任程序。
[0042]此處判斷的方法和原理與判斷簽名人姓名的類似,在此不再贅述。
[0043]請參閱圖4,其為本發(fā)明實施例二的通過簽名鑒定文件來源的裝置的結(jié)構(gòu)示意圖。
[0044]本實施例與實施例一的區(qū)別在于:提取模塊I提取所述安卓程序的數(shù)字簽名中的哈希值和簽名人姓名,所述數(shù)據(jù)庫還包括簽名人數(shù)據(jù)庫4。優(yōu)選地,所述簽名人姓名為公司名。判斷模塊2先判斷提取模塊I提取的數(shù)字簽名的簽名人姓名是否與簽名人數(shù)據(jù)庫4中對應(yīng)的簽名人姓名相同。若不同,所述安卓程序為不可信任程序。若相同,再判斷提取模塊I提取的數(shù)字簽名的哈希值是否與哈希數(shù)據(jù)庫3中對應(yīng)的哈希值相同,若相同,則所述安卓程序為官方的安全程序。
[0045]本實施例先判斷簽名人姓名,可以排除一部分簽名人姓名不同的安卓程序,節(jié)約后續(xù)的判斷時間。再簽名人姓名相同的情況下,通過哈希值的唯一性判斷所述安卓程序是否為正常的官方程序,防止被第三方修改的官方程序安裝入設(shè)備中造成破壞,造成用戶的損失。
[0046]以上對本發(fā)明實施例所提供的技術(shù)方案進行了詳細介紹,本文中應(yīng)用了具體個例對本發(fā)明實施例的原理以及實施方式進行了闡述,以上實施例的說明只適用于幫助理解本發(fā)明實施例的原理;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明實施例,在【具體實施方式】以及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
【權(quán)利要求】
1.一種通過簽名鑒定文件來源的方法,所述文件為安卓程序,其特征在于,包括以下步驟: 提取所述安卓程序的數(shù)字簽名和包名; 根據(jù)數(shù)字簽名與數(shù)據(jù)庫中該包名對應(yīng)的數(shù)字簽名信息判斷所述安卓程序是否為安全程序。
2.根據(jù)權(quán)利要求1所述的通過簽名鑒定文件來源的方法,其特征在于,具體包括以下步驟:提取所述安卓程序的包名和數(shù)字簽名的哈希值;根據(jù)包名從哈希數(shù)據(jù)庫中提取該包名對應(yīng)的哈希值,所述安卓程序的哈希值與哈希數(shù)據(jù)庫中對應(yīng)的哈希值比較,若相同,判斷所述安卓程序為安全程序。
3.根據(jù)權(quán)利要求1所述的通過簽名鑒定文件來源的方法,其特征在于,具體包括以下步驟: 提取所述安卓程序的包名,數(shù)字簽名的哈希值、簽名人姓名; 根據(jù)包名從哈希數(shù)據(jù)庫中提取該包名對應(yīng)的哈希值,從簽名人數(shù)據(jù)庫中提取該包名對應(yīng)的簽名人姓名; 所述安卓程序的數(shù)字簽名的簽名人姓名與簽名人數(shù)據(jù)庫中對應(yīng)的簽名人姓名比較,若相同,則進行下一步;若不同,則所述安卓程序為不可信程序; 所述安卓程序的數(shù)字簽名的哈希值與哈希數(shù)據(jù)庫中對應(yīng)的哈希值比較,若相同,則所述安卓程序為安全程序。
4.一種通過簽名鑒別文件來源的裝置,所述文件為安卓程序,其特征在于:包括提取模塊,用于提取所述安卓程序的數(shù)字簽名和包名;判斷模塊,用于根據(jù)數(shù)字簽名與數(shù)據(jù)庫中該包名對應(yīng)的簽名信息判斷所述安卓程序是否為安全程序。
5.根據(jù)權(quán)利要求4所述的通過簽名鑒別文件來源的裝置,其特征在于:所述數(shù)據(jù)庫包括哈希數(shù)據(jù)庫,所述哈希數(shù)據(jù)庫中預(yù)存與該包名對應(yīng)的哈希值,所述哈希值與提取模塊提取的數(shù)字簽名的哈希值比較;若哈希數(shù)據(jù)庫中對應(yīng)的哈希值和提取模塊提取的哈希值相同,判斷模塊判斷所述安卓程序為安全程序。
6.根據(jù)權(quán)利要求4所述的通過簽名鑒定文件來源的裝置,其特征在于:所述數(shù)據(jù)庫包括哈希數(shù)據(jù)庫和簽名人數(shù)據(jù)庫;所述哈希數(shù)據(jù)庫中預(yù)存與包名對應(yīng)的哈希值,所述哈希值用于與提取模塊提取的數(shù)字簽名的哈希值比較;所述簽名人數(shù)據(jù)庫中預(yù)存與包名對應(yīng)的簽名人姓名,所述簽名人姓名用于與提取模塊提取的數(shù)字簽名的簽名人姓名比較;若哈希數(shù)據(jù)庫中對應(yīng)的哈希值與提取模塊提取的哈希值相同,且簽名人姓名數(shù)據(jù)庫中對應(yīng)的簽名人姓名與提取模塊提取的簽名人姓名相同,判斷模塊判斷所述安卓程序為安全程序。
7.根據(jù)權(quán)利要求6所述的通過簽名鑒定文件來源的裝置,其特征在于:所述判斷模塊先判斷所述安卓程序的簽名人姓名是否與哈希數(shù)據(jù)庫中對應(yīng)的簽名人姓名相同,若相同,再判斷所述安卓程序的哈希值是否與哈希數(shù)據(jù)庫中對應(yīng)的哈希值相同,若相同,則所述安卓程序為安全程序。
8.根據(jù)權(quán)利要求5或6或7所述的通過簽名鑒定文件來源的裝置,其特征在于:所述簽名人姓名為公司名。
【文檔編號】G06F21/54GK103902887SQ201210568020
【公開日】2014年7月2日 申請日期:2012年12月24日 優(yōu)先權(quán)日:2012年12月24日
【發(fā)明者】李敏怡, 林堅明, 陳勇 申請人:珠海市君天電子科技有限公司, 北京金山安全軟件有限公司, 貝殼網(wǎng)際(北京)安全技術(shù)有限公司, 北京金山網(wǎng)絡(luò)科技有限公司