一種基于用戶權(quán)限的安卓應(yīng)用程序間的安全性鑒定方法
【專利摘要】一種基于用戶權(quán)限的安卓應(yīng)用程序間的安全性鑒定方法,基于安卓系統(tǒng)中的三個(gè)主體,在安卓設(shè)備中設(shè)計(jì)一個(gè)應(yīng)用程序和另一個(gè)獨(dú)立安裝且作為該程序插件的應(yīng)用程序兩者間的安全性鑒定方法,這種鑒定方法是基于用戶權(quán)限的,主程序中登錄的不同的用戶對(duì)被調(diào)用的插件程序具有不同的執(zhí)行權(quán)限;設(shè)計(jì)主程序加載插件程序時(shí)對(duì)插件程序執(zhí)行的基于用戶權(quán)限的安全性鑒定方法,以及設(shè)計(jì)插件程序被調(diào)用時(shí)對(duì)主程序執(zhí)行的基于用戶權(quán)限的安全性鑒定方法。
【專利說明】一種基于用戶權(quán)限的安卓應(yīng)用程序間的安全性鑒定方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明是一種基于用戶權(quán)限的安卓應(yīng)用程序間的安全性鑒定方法,可以鑒定程序是否被篡改,并可以在程序被調(diào)用時(shí)對(duì)主調(diào)程序的登錄用戶權(quán)限進(jìn)行鑒定,屬于安卓應(yīng)用程序開發(fā)中的安全領(lǐng)域。
【背景技術(shù)】
[0002]在安卓應(yīng)用程序開發(fā)中,有一種插件式開發(fā)方式。在這種插件式開發(fā)方式中,主程序和插件程序都以獨(dú)立的應(yīng)用程序形式存在于安卓系統(tǒng)中,它們可以獨(dú)立安裝,但插件程序并不給安卓系統(tǒng)提供啟動(dòng)接口,只可在主程序中進(jìn)行調(diào)用。但是由于安卓平臺(tái)的開放性,這種插件形式會(huì)遇到各種各樣的安全問題。例如,主程序和插件程序之間的安全性鑒定問題,既存在惡意程序仿冒主程序的危險(xiǎn),也存在惡意者仿冒插件程序的危險(xiǎn)。若不做任何安全措施,惡意的程序可以偽裝成插件程序,騙取用戶點(diǎn)擊運(yùn)行。惡意的程序也可以偽裝成主程序,掃描所有的插件程序,肆意調(diào)用。再者,很多情況下主程序可能是基于用戶的,不同的用戶使用不同插件程序的權(quán)限也不同,所以插件程序在被調(diào)用時(shí)也需要鑒定調(diào)用者的權(quán)限。眾所周知,安卓系統(tǒng)中竊取程序安裝包是非常容易的,若不做防護(hù)措施,用戶就可以隨意安裝使用所有插件程序,失去了用戶權(quán)限的意義。更有甚者,惡意者可以偽裝成鑒定服務(wù)器給用戶授權(quán),使得用戶可以偽造權(quán)限調(diào)用插件程序。因此,就需要解決兩個(gè)問題,一個(gè)是主程序和插件程序之間的身份鑒定問題,另一個(gè)是插件程序?qū)υ谥鞒绦蛑械顷懹脩舻臋?quán)限鑒定問題。
[0003]本方法中含有大量的哈希值計(jì)算,哈希算法是一種占用資源較小的加密算法,且我們的需求只是完成身份識(shí)別功能,哈希算法也完全符合我們要求。使用哈希值計(jì)算加密,也有效地隱藏了密碼信息等敏感信息,使得即使信息在傳輸過程中被截獲,也不具存在密碼被破解以及系統(tǒng)被破壞的風(fēng)險(xiǎn)。
【發(fā)明內(nèi)容】
[0004]技術(shù)問題:本發(fā)明的目的是提供一種基于用戶權(quán)限的安卓應(yīng)用程序間的安全性鑒定方法。
[0005]功能1.作為主程序的安卓應(yīng)用程序(以下簡稱主程序)在掃描到系統(tǒng)中已安裝的可用的作為主程序的插件的安卓應(yīng)用程序(以下簡稱插件程序)時(shí),對(duì)插件程序進(jìn)行鑒定是否被篡改,并根據(jù)主程序中登錄用戶的權(quán)限鑒定是否可以加載該插件程序。
[0006]功能2.插件程序在被主程序調(diào)用時(shí),鑒定主程序是否被篡改,并對(duì)主程序中登錄用戶的權(quán)限進(jìn)行鑒定,是否允許調(diào)用。
[0007]技術(shù)方案:本方法中包含三個(gè)主體,一是服務(wù)器端,二是主程序,三是插件程序。
[0008]服務(wù)器端:服務(wù)器端存有用戶的所有信息,包括用戶名、密碼、由用戶名和密碼運(yùn)算得到的用于身份標(biāo)識(shí)的驗(yàn)證信息(UserID),用戶登陸時(shí)隨機(jī)生成的具有短暫時(shí)效性的驗(yàn)證碼(TempKey),用戶對(duì)插件程序的執(zhí)行權(quán)限、主程序的包名(MainPackageName)和主程序的簽名信息(MainSignature)、每個(gè)插件程序的包名(FunctionPackageName)和對(duì)應(yīng)的插件程序的簽名信息(FunctionSignature)、用于服務(wù)器和插件程序間進(jìn)行身份驗(yàn)證的識(shí)別信息(FunctionID)。服務(wù)器作用身份識(shí)別的最終判定者,并將身份識(shí)別的結(jié)果發(fā)送給請(qǐng)求方。
[0009]主程序:主程序的作用有:為用戶提供登錄功能、根據(jù)登錄用戶的權(quán)限加載安卓設(shè)備中已安裝的插件程序、調(diào)用插件程序。主程序中記錄著帶有登錄用戶的用戶名和密碼信息的驗(yàn)證信息(UserlD)。主程序在用戶請(qǐng)求加載插件時(shí)會(huì)掃描安卓設(shè)備中所有已安裝的插件程序。當(dāng)主程序掃描到一個(gè)可用插件程序時(shí),主程序需要鑒別插件程序的安全性以及登錄用戶對(duì)該插件程序的執(zhí)行權(quán)限,所以預(yù)加載插件程序時(shí)需向服務(wù)器端發(fā)送身份鑒定請(qǐng)求。主程序?qū)⒑杏脩粜畔⒑皖A(yù)加載的業(yè)務(wù)程序信息的身份鑒定請(qǐng)求發(fā)送給服務(wù)器端,月艮務(wù)器經(jīng)過身份鑒定后再將鑒定結(jié)果發(fā)回給主程序。主程序根據(jù)服務(wù)器的返回結(jié)果選擇加載該插件程序或者跳過該插件程序。
[0010]插件程序:插件程序在被調(diào)用時(shí)需要對(duì)主調(diào)程序進(jìn)行身份鑒定和對(duì)主調(diào)用戶進(jìn)行權(quán)限鑒定。插件程序?qū)兄鞒绦虻陌秃灻畔⒁约暗卿浻脩粜畔⒌拿芪陌l(fā)送到服務(wù)器端進(jìn)行鑒定。若鑒定成功則允許調(diào)用,若鑒定失敗則反饋鑒定失敗信息并關(guān)閉自身防止非法調(diào)用。
[0011]本發(fā)明的一種基于用戶權(quán)限的安卓應(yīng)用程序間的安全性鑒定方法基于安卓系統(tǒng)中的三個(gè)主體,所述的三個(gè)主體,一是服務(wù)器端,二是作為主程序的安卓應(yīng)用程序簡稱主程序,三是作為主程序的插件的安卓應(yīng)用程序簡稱插件程序;在安卓設(shè)備中設(shè)計(jì)一個(gè)應(yīng)用程序和另一個(gè)獨(dú)立安裝且作為該程序插件的應(yīng)用程序兩者間的安全性鑒定方法,這種鑒定方法是基于用戶權(quán)限的,主程序中登錄的不同的用戶對(duì)被調(diào)用的插件程序具有不同的執(zhí)行權(quán)限;設(shè)計(jì)主程序加載插件程序時(shí)對(duì)插件程序執(zhí)行的基于用戶權(quán)限的安全性鑒定方法,以及設(shè)計(jì)插件程序被調(diào)用時(shí)對(duì)主程序執(zhí)行的基于用戶權(quán)限的安全性鑒定方法。
[0012]所述的設(shè)計(jì)主程序加載插件程序時(shí)對(duì)插件程序執(zhí)行的基于用戶權(quán)限的安全性鑒定方法,當(dāng)主程序掃描到安卓設(shè)備中一個(gè)已安裝的插件程序時(shí)鑒定該插件程序是否為原版程序,并鑒定登錄用戶對(duì)該插件程序的使用權(quán)限,根據(jù)登錄用戶的權(quán)限選擇是否加載被該插件程序,鑒定流程為:
Cl)主程序獲取插件程序的包名FunctionPackageName和插件程序的簽名信息FunctionSignature ;
(2)主程序?qū)unctionPackageName和對(duì)應(yīng)的FunctionSignature以及包含用戶名和用戶密碼信息的密文UserID和用戶登錄時(shí)由服務(wù)器端生成的具有時(shí)效性的驗(yàn)證信息TempKey這四個(gè)字符串進(jìn)行逐字符相加的運(yùn)算,得到一個(gè)字符串;
(3)主程序該字符串進(jìn)行哈希值運(yùn)算,得到一個(gè)新字符串命名為HashKeyl;
(4)主程序向服務(wù)器發(fā)送鑒定請(qǐng)求,請(qǐng)求參數(shù)包括HashKeyl和用戶名UserName和FunctionPackageName 三個(gè)信息;
(5)服務(wù)器先根據(jù)UserName和FunctionPackageName進(jìn)行執(zhí)行權(quán)限的驗(yàn)證,若驗(yàn)證失敗則向主程序返回鑒定失敗信息,執(zhí)行步驟(12),若驗(yàn)證成功則執(zhí)行步驟(6);
(6)服務(wù)器使用本地記錄的FunctionPackageName 和 FunctionSignature 以及 UserID和TempKey這四個(gè)字符串進(jìn)行逐字符相加的運(yùn)算,得到一個(gè)字符串,對(duì)該字符串進(jìn)行哈希值運(yùn)算,得到一個(gè)新字符串命名為HashKeyl’ ;
(7)服務(wù)器將HashKeyl’與HashKeyl進(jìn)行比較,若不一致則返回鑒定失敗信息,執(zhí)行步驟(12),若驗(yàn)證一致則執(zhí)行步驟(8);
(8)服務(wù)器將HashKeyl和服務(wù)器端記錄的UserID兩個(gè)字符串進(jìn)行逐字符相加運(yùn)算,得到一個(gè)字符串,再對(duì)該字符串進(jìn)行哈希值運(yùn)算,得到HashKey2 ;
(9)服務(wù)器將HashKey2發(fā)送給主程序;
(10)主程序?qū)ashKeyl和UserID兩個(gè)字符串進(jìn)行逐字符相加運(yùn)算,得到一個(gè)字符串,再對(duì)該字符串進(jìn)行哈希值運(yùn)算,得到HashKey2’ ;
(11)主程序?qū)ashKey2’和HashKey2進(jìn)行比較,若不一致則執(zhí)行步驟(12),若驗(yàn)證一致則將加載該插件程序,鑒定完畢;
(12)鑒定失敗,不加載該插件程序;
其中UserID根據(jù)用戶名信息和密碼信息加密計(jì)算得到,目的為驗(yàn)證用戶信息且不使用明文包含密碼信息,以提高安全性,TempKey為用戶登錄時(shí)由服務(wù)器隨機(jī)生成的驗(yàn)證碼,在用戶登錄成功后發(fā)送至客戶端,它具有時(shí)效性,一段時(shí)間之后即失效,在驗(yàn)證信息中加入具有時(shí)效性的信息,即便驗(yàn)證信息在傳遞中被惡意者截獲,也會(huì)很快失去價(jià)值。
[0013]所述的設(shè)計(jì)插件程序被調(diào)用時(shí)對(duì)主程序執(zhí)行的基于用戶權(quán)限的安全性鑒定方法,當(dāng)插件程序被主程序調(diào)用時(shí)鑒定主程序是否為原版程序,鑒定登錄用戶是否具有使用權(quán)限,鑒定流程為:
(1)主程序獲取插件程序的包名FunctionPackageName和簽名信息FunctionSignature ;
(2)主程序?qū)unctionPackageName 和對(duì)應(yīng)的 FunctionSignature 以及 UserID 和TempKey這四個(gè)字符串進(jìn)行逐字符相加的運(yùn)算,得到一個(gè)字符串;
(3)主程序該字符串進(jìn)行哈希值運(yùn)算,得到一個(gè)新字符串命名為HashKeyl;
(4)主程序調(diào)用插件程序,將登錄用戶的用戶名UserName和HashKeyl作為參數(shù)傳遞給插件程序;
(5)插件程序獲取主程序的包名MainPackageName和主程序的簽名信息MainSignature ;
(6)插件程序?qū)serName 和 HashKeyl 以及 MainPackageName 和 MainSignature 共四個(gè)信息進(jìn)行逐字符相加的運(yùn)算,得到一個(gè)字符串;
(7)插件程序?qū)υ撟址M(jìn)行哈希值運(yùn)算,得到一個(gè)新字符串命名為HashKey3;
(8)插件程序向服務(wù)器發(fā)送鑒定請(qǐng)求,參數(shù)包括HashKey3和UserName和FunctionPackageName 三個(gè)信息;
(9)服務(wù)器先根據(jù)UserName和FunctionPackageName進(jìn)行執(zhí)行權(quán)限的驗(yàn)證,若驗(yàn)證失敗則向插件程序返回鑒定失敗信息,執(zhí)行步驟(17),若驗(yàn)證成功則執(zhí)行步驟(10);
(10)服務(wù)器使用本地記錄的FunctionPackageName和對(duì)應(yīng)的FunctionSignature以及UserID和TempKey這四個(gè)字符串進(jìn)行逐字符相加的運(yùn)算,得到一個(gè)字符串,對(duì)該字符串進(jìn)行哈希值運(yùn)算,得到一個(gè)新字符串命名為HashKeyl’ ;
(11)服務(wù)器將UserName和HashKeyl’以及本地記錄的主程序的的包名MainPackageName和主程序的簽名信息MainSignature共四個(gè)信息進(jìn)行逐字符相加的運(yùn)算,得到一個(gè)字符串,再對(duì)該字符串進(jìn)行哈希值運(yùn)算得到HashKey3’ ;
(12)服務(wù)器將HashKey3’與HashKey3進(jìn)行比較,若不一致則返回失敗信息,執(zhí)行步驟(17);若驗(yàn)證一致則執(zhí)行步驟(13);
(13)服務(wù)器將HashKeyl’和HashKey3和用于插件程序身份鑒定的標(biāo)識(shí)FunctionID三個(gè)字符串進(jìn)行逐字符相加運(yùn)算,得到一個(gè)字符串,再對(duì)該字符串進(jìn)行哈希值運(yùn)算,得到HashKey4 ;
(14)服務(wù)器將HashKey4發(fā)送給插件程序;
(15)插件程序?qū)ashKeyl和HashKey3和FunctionID三個(gè)字符串進(jìn)行逐字符相加運(yùn)算,得到一個(gè)字符串,再對(duì)該字符串進(jìn)行哈希值運(yùn)算,得到HashKey4 ’ ;
(16)插件程序?qū)ashKey4’和HashKey4進(jìn)行比較,若不一致則執(zhí)行步驟(17),若驗(yàn)證一致則允許該次調(diào)用,鑒定完畢;
(17)鑒定失敗,插件程序向用戶反饋運(yùn)行失敗信息后關(guān)閉自身。
[0014]其中FunctionID為插件程序創(chuàng)建時(shí)服務(wù)器生成的身份標(biāo)識(shí),步驟(13)中添加FunctionID信息是為了防止惡意者仿冒服務(wù)器端進(jìn)行偽造鑒定。
[0015]所述的服務(wù)器端,存有用戶的所有信息,包括用戶名、密碼、由用戶名和密碼運(yùn)算得到的用于身份標(biāo)識(shí)的驗(yàn)證信息UserlD,用戶登陸時(shí)隨機(jī)生成的具有短暫時(shí)效性的驗(yàn)證碼TempKey,用戶對(duì)插件程序的執(zhí)行權(quán)限、主程序的包名MainPackageName和主程序的簽名信息MainSignature、每個(gè)插件程序的包名FunctionPackageName和對(duì)應(yīng)的插件程序的簽名信息FunctionSignature、用于服務(wù)器和插件程序間進(jìn)行身份驗(yàn)證的識(shí)別信息FunctionID,服務(wù)器作用身份識(shí)別的最終判定者,并將身份識(shí)別的結(jié)果發(fā)送給請(qǐng)求方。
[0016]所述的主程序,安裝于安卓設(shè)備中,主程序的作用有:為用戶提供登錄功能、根據(jù)登錄用戶的權(quán)限加載安卓設(shè)備中已安裝的插件程序、調(diào)用插件程序;主程序中記錄著帶有登錄用戶的用戶名和密碼信息的驗(yàn)證信息UserlD,主程序在用戶請(qǐng)求加載插件時(shí)會(huì)掃描安卓設(shè)備中所有已安裝的插件程序,當(dāng)主程序掃描到一個(gè)可用插件程序時(shí),主程序需要鑒別插件程序的安全性以及登錄用戶對(duì)該插件程序的執(zhí)行權(quán)限,所以預(yù)加載插件程序時(shí)需向服務(wù)器端發(fā)送身份鑒定請(qǐng)求,主程序?qū)⒑杏脩粜畔⒑皖A(yù)加載的業(yè)務(wù)程序信息的身份鑒定請(qǐng)求發(fā)送給服務(wù)器端,服務(wù)器經(jīng)過身份鑒定后再將鑒定結(jié)果發(fā)回給主程序,主程序根據(jù)服務(wù)器的返回結(jié)果選擇加載該插件程序或者跳過該插件程序。
[0017]所述的插件程序,是安裝于同一安卓設(shè)備中的應(yīng)用程序主程序的插件程序,插件程序在被調(diào)用時(shí)需要對(duì)主調(diào)程序進(jìn)行身份鑒定和對(duì)主調(diào)用戶進(jìn)行權(quán)限鑒定,插件程序?qū)兄鞒绦虻陌秃灻畔⒁约暗卿浻脩粜畔⒌拿芪陌l(fā)送到服務(wù)器端進(jìn)行鑒定,若鑒定成功則允許調(diào)用,若鑒定失敗則反饋鑒定失敗信息并關(guān)閉自身防止非法調(diào)用。
[0018]有益效果:
本方法具有以下功能:
(I)防止惡意程序偽裝成合法的插件程序,欺騙用戶加載和運(yùn)行。
[0019](2)惡意者無法通過窮舉掃描的方式檢測某個(gè)用戶的所有可用插件。
[0020](3)使用哈希值計(jì)算加密,隱藏敏感信息。
[0021](4)加入具有短暫時(shí)效性的參數(shù),即便信息在傳輸過程中被截獲也會(huì)很快變得毫無價(jià)值。[0022](5)防止惡意者偽造服務(wù)器進(jìn)行偽造授權(quán)。
[0023]( 6 )防止惡意程序偽裝成主程序?qū)Σ寮绦蜻M(jìn)行調(diào)用。
[0024](7)防止某位用戶偽裝成其他用戶對(duì)插件程序進(jìn)行調(diào)用。
[0025](8)防止某個(gè)插件程序去驗(yàn)證某個(gè)用戶對(duì)其他插件程序的執(zhí)行權(quán)限。
【專利附圖】
【附圖說明】
[0026]圖1是主程序加載插件程序時(shí)對(duì)插件程序的安全性和用戶權(quán)限鑒定流程。
[0027]圖2是插件程序被調(diào)用時(shí)對(duì)主程序的安全性和權(quán)限性進(jìn)行鑒定的流程。
【具體實(shí)施方式】
[0028]1.用戶在主程序中登錄的時(shí)候,主程序?qū)⒂脩裘陀脩裘艽a進(jìn)行字符運(yùn)算得到一個(gè)包含用戶身份標(biāo)識(shí)信息的字符串UserlD,服務(wù)器端也保留有該UserlD。用戶登錄成功后,服務(wù)器會(huì)為用戶分配一個(gè)具有時(shí)效性的驗(yàn)證碼TempKey,該TempKey為隨機(jī)生成,并在服務(wù)器中只保存一段很短的時(shí)間(例如半小時(shí)),超時(shí)后TempKey將會(huì)無效。服務(wù)器端還保存有主程序和所有插件程序的包名和簽名信息以及用于插件程序身份識(shí)別的FunctionID。
[0029]本發(fā)明的一種基于用戶權(quán)限的安卓應(yīng)用程序間的安全性鑒定方法,基于安卓系統(tǒng)中的三個(gè)主體,所述的三個(gè)主體,一是服務(wù)器端,二是作為主程序的安卓應(yīng)用程序簡稱主程序,三是作為主程序的插件的安卓應(yīng)用程序簡稱插件程序;在安卓設(shè)備中設(shè)計(jì)一個(gè)應(yīng)用程序和另一個(gè)獨(dú)立安裝且作為該程序插件的應(yīng)用程序兩者間的安全性鑒定方法,這種鑒定方法是基于用戶權(quán)限的,主程序中登錄的不同的用戶對(duì)被調(diào)用的插件程序具有不同的執(zhí)行權(quán)限;設(shè)計(jì)主程序加載插件程序時(shí)對(duì)插件程序執(zhí)行的基于用戶權(quán)限的安全性鑒定方法,以及設(shè)計(jì)插件程序被調(diào)用時(shí)對(duì)主程序執(zhí)行的基于用戶權(quán)限的安全性鑒定方法。
[0030]所述的設(shè)計(jì)主程序加載插件程序時(shí)對(duì)插件程序執(zhí)行的基于用戶權(quán)限的安全性鑒定方法,當(dāng)主程序掃描到安卓設(shè)備中一個(gè)已安裝的插件程序時(shí)鑒定該插件程序是否為原版程序,并鑒定登錄用戶對(duì)該插件程序的使用權(quán)限,根據(jù)登錄用戶的權(quán)限選擇是否加載被該插件程序,鑒定流程為:
Cl)主程序獲取插件程序的包名FunctionPackageName和插件程序的簽名信息FunctionSignature ;
(2)主程序?qū)unctionPackageName和對(duì)應(yīng)的FunctionSignature以及包含用戶名和用戶密碼信息的密文UserID和用戶登錄時(shí)由服務(wù)器端生成的具有時(shí)效性的驗(yàn)證信息TempKey這四個(gè)字符串進(jìn)行逐字符相加的運(yùn)算,得到一個(gè)字符串;
(3)主程序該字符串進(jìn)行哈希值運(yùn)算,得到一個(gè)新字符串命名為HashKeyl;
(4)主程序向服務(wù)器發(fā)送鑒定請(qǐng)求,請(qǐng)求參數(shù)包括HashKeyl和用戶名UserName和FunctionPackageName 三個(gè)信息;
(5)服務(wù)器先根據(jù)UserName和FunctionPackageName進(jìn)行執(zhí)行權(quán)限的驗(yàn)證,若驗(yàn)證失敗則向主程序返回鑒定失敗信息,執(zhí)行步驟(12),若驗(yàn)證成功則執(zhí)行步驟(6);
(6)服務(wù)器使用本地記錄的FunctionPackageName 和 FunctionSignature 以及 UserID和TempKey這四個(gè)字符串進(jìn)行逐字符相加的運(yùn)算,得到一個(gè)字符串,對(duì)該字符串進(jìn)行哈希值運(yùn)算,得到一個(gè)新字符串命名為HashKeyl’ ; (7)服務(wù)器將HashKeyl’與HashKeyl進(jìn)行比較,若不一致則返回鑒定失敗信息,執(zhí)行步驟(12),若驗(yàn)證一致則執(zhí)行步驟(8);
(8)服務(wù)器將HashKeyl和服務(wù)器端記錄的UserID兩個(gè)字符串進(jìn)行逐字符相加運(yùn)算,得到一個(gè)字符串,再對(duì)該字符串進(jìn)行哈希值運(yùn)算,得到HashKey2 ;
(9)服務(wù)器將HashKey2發(fā)送給主程序;
(10)主程序?qū)ashKeyl和UserID兩個(gè)字符串進(jìn)行逐字符相加運(yùn)算,得到一個(gè)字符串,再對(duì)該字符串進(jìn)行哈希值運(yùn)算,得到HashKey2’ ;
(11)主程序?qū)ashKey2’和HashKey2進(jìn)行比較,若不一致則執(zhí)行步驟(12),若驗(yàn)證一致則將加載該插件程序,鑒定完畢;
(12)鑒定失敗,不加載該插件程序;
其中UserID根據(jù)用戶名信息和密碼信息加密計(jì)算得到,目的為驗(yàn)證用戶信息且不使用明文包含密碼信息,以提高安全性,TempKey為用戶登錄時(shí)由服務(wù)器隨機(jī)生成的驗(yàn)證碼,在用戶登錄成功后發(fā)送至客戶端,它具有時(shí)效性,一段時(shí)間之后即失效,在驗(yàn)證信息中加入具有時(shí)效性的信息,即便驗(yàn)證信息在傳遞中被惡意者截獲,也會(huì)很快失去價(jià)值。
[0031]所述的設(shè)計(jì)插件程序被調(diào)用時(shí)對(duì)主程序執(zhí)行的基于用戶權(quán)限的安全性鑒定方法,當(dāng)插件程序被主程序調(diào)用時(shí)鑒定主程序是否為原版程序,鑒定登錄用戶是否具有使用權(quán)限,鑒定流程為:
(1)主程序獲取插件程序的包名FunctionPackageName和簽名信息FunctionSignature ;
(2)主程序?qū)unctionPackageName 和對(duì)應(yīng)的 FunctionSignature 以及 UserID 和TempKey這四個(gè)字符串進(jìn)行逐字符相加的運(yùn)算,得到一個(gè)字符串;
(3)主程序該字符串進(jìn)行哈希值運(yùn)算,得到一個(gè)新字符串命名為HashKeyl;
(4)主程序調(diào)用插件程序,將登錄用戶的用戶名UserName和HashKeyl作為參數(shù)傳遞給插件程序;
(5)插件程序獲取主程序的包名MainPackageName和主程序的簽名信息MainSignature ;
(6)插件程序?qū)serName 和 HashKeyl 以及 MainPackageName 和 MainSignature 共四個(gè)信息進(jìn)行逐字符相加的運(yùn)算,得到一個(gè)字符串;
(7)插件程序?qū)υ撟址M(jìn)行哈希值運(yùn)算,得到一個(gè)新字符串命名為HashKey3;
(8)插件程序向服務(wù)器發(fā)送鑒定請(qǐng)求,參數(shù)包括HashKey3和UserName和FunctionPackageName 三個(gè)信息;
(9)服務(wù)器先根據(jù)UserName和FunctionPackageName進(jìn)行執(zhí)行權(quán)限的驗(yàn)證,若驗(yàn)證失敗則向插件程序返回鑒定失敗信息,執(zhí)行步驟(17),若驗(yàn)證成功則執(zhí)行步驟(10);
(10)服務(wù)器使用本地記錄的FunctionPackageName和對(duì)應(yīng)的FunctionSignature以及UserID和TempKey這四個(gè)字符串進(jìn)行逐字符相加的運(yùn)算,得到一個(gè)字符串,對(duì)該字符串進(jìn)行哈希值運(yùn)算,得到一個(gè)新字符串命名為HashKeyl’ ;
(11)服務(wù)器將UserName和HashKeyl’以及本地記錄的主程序的的包名MainPackageName和主程序的簽名信息MainSignature共四個(gè)信息進(jìn)行逐字符相加的運(yùn)算,得到一個(gè)字符串,再對(duì)該字符串進(jìn)行哈希值運(yùn)算得到HashKey3’ ; (12)服務(wù)器將HashKey3’與HashKey3進(jìn)行比較,若不一致則返回失敗信息,執(zhí)行步驟
(17);若驗(yàn)證一致則執(zhí)行步驟(13);
(13)服務(wù)器將HashKeyl’和HashKey3和用于插件程序身份鑒定的標(biāo)識(shí)FunctionID三個(gè)字符串進(jìn)行逐字符相加運(yùn)算,得到一個(gè)字符串,再對(duì)該字符串進(jìn)行哈希值運(yùn)算,得到HashKey4 ;
(14)服務(wù)器將HashKey4發(fā)送給插件程序;
(15)插件程序?qū)ashKeyl和HashKey3和FunctionID三個(gè)字符串進(jìn)行逐字符相加運(yùn)算,得到一個(gè)字符串,再對(duì)該字符串進(jìn)行哈希值運(yùn)算,得到HashKey4 ’ ;
(16)插件程序?qū)ashKey4’和HashKey4進(jìn)行比較,若不一致則執(zhí)行步驟(17),若驗(yàn)證一致則允許該次調(diào)用,鑒定完畢;
(17)鑒定失敗,插件程序向用戶反饋運(yùn)行失敗信息后關(guān)閉自身。
[0032]其中FunctionID為插件程序創(chuàng)建時(shí)服務(wù)器生成的身份標(biāo)識(shí),步驟(13)中添加FunctionID信息是為了防止惡意者仿冒服務(wù)器端進(jìn)行偽造鑒定。
[0033]所述的服務(wù)器端,存有用戶的所有信息,包括用戶名、密碼、由用戶名和密碼運(yùn)算得到的用于身份標(biāo)識(shí)的驗(yàn)證信息UserlD,用戶登陸時(shí)隨機(jī)生成的具有短暫時(shí)效性的驗(yàn)證碼TempKey,用戶對(duì)插件程序的執(zhí)行權(quán)限、主程序的包名MainPackageName和主程序的簽名信息MainSignature、每個(gè)插件程序的包名FunctionPackageName和對(duì)應(yīng)的插件程序的簽名信息FunctionSignature、用于服務(wù)器和插件程序間進(jìn)行身份驗(yàn)證的識(shí)別信息FunctionID,服務(wù)器作用身份識(shí)別的最終判定者,并將身份識(shí)別的結(jié)果發(fā)送給請(qǐng)求方。
[0034]所述的主程序,安裝于安卓設(shè)備中,主程序的作用有:為用戶提供登錄功能、根據(jù)登錄用戶的權(quán)限加載安卓設(shè)備中已安裝的插件程序、調(diào)用插件程序;主程序中記錄著帶有登錄用戶的用戶名和密碼信息的驗(yàn)證信息UserlD,主程序在用戶請(qǐng)求加載插件時(shí)會(huì)掃描安卓設(shè)備中所有已安裝的插件程序,當(dāng)主程序掃描到一個(gè)可用插件程序時(shí),主程序需要鑒別插件程序的安全性以及登錄用戶對(duì)該插件程序的執(zhí)行權(quán)限,所以預(yù)加載插件程序時(shí)需向服務(wù)器端發(fā)送身份鑒定請(qǐng)求,主程序?qū)⒑杏脩粜畔⒑皖A(yù)加載的業(yè)務(wù)程序信息的身份鑒定請(qǐng)求發(fā)送給服務(wù)器端,服務(wù)器經(jīng)過身份鑒定后再將鑒定結(jié)果發(fā)回給主程序,主程序根據(jù)服務(wù)器的返回結(jié)果選擇加載該插件程序或者跳過該插件程序。
[0035]所述的插件程序,是安裝于同一安卓設(shè)備中的應(yīng)用程序主程序的插件程序,插件程序在被調(diào)用時(shí)需要對(duì)主調(diào)程序進(jìn)行身份鑒定和對(duì)主調(diào)用戶進(jìn)行權(quán)限鑒定,插件程序?qū)兄鞒绦虻陌秃灻畔⒁约暗卿浻脩粜畔⒌拿芪陌l(fā)送到服務(wù)器端進(jìn)行鑒定,若鑒定成功則允許調(diào)用,若鑒定失敗則反饋鑒定失敗信息并關(guān)閉自身防止非法調(diào)用。
[0036]功能1:
主程序在安裝新的插件程序或掃描系統(tǒng)中已有的插件程序時(shí),對(duì)插件程序進(jìn)行合法性鑒定,分為以下幾步流程:
(I)將獲取到 FunctionPackageName 和對(duì)應(yīng)的 FunctionSignature 以及 UserID 和TempKey這四個(gè)信息進(jìn)行字符串運(yùn)算(例如逐字符相加,該算法不固定),處理為包含了這四個(gè)信息的一個(gè)字符串。
[0037](2)再對(duì)得到的字符串進(jìn)行哈希運(yùn)算進(jìn)行加密處理,得到一個(gè)新字符串命名為HashKeyl ο[0038](3)將 HashKeyl 和 UserName 和 FunctionPackageName 三個(gè)信息發(fā)送到服務(wù)器進(jìn)行驗(yàn)證。
[0039](4)服務(wù)器先根據(jù)UserName和FunctionPackageName進(jìn)行執(zhí)行權(quán)限的驗(yàn)證,然后再驗(yàn)證插件程序的完整性。若服務(wù)器端驗(yàn)證失敗,則返回驗(yàn)證失敗信息。若服務(wù)器端驗(yàn)證成功,則服務(wù)器會(huì)將HashKeyl以及服務(wù)器端記錄的UserID進(jìn)行字符串運(yùn)算,得到一個(gè)字符串并進(jìn)行哈希運(yùn)算,命名為HashKey2,將HashKey2發(fā)送給主程序。主程序?qū)ashKeyl和UserID進(jìn)行同樣的運(yùn)算,將結(jié)果和HashKey2進(jìn)行比較,若一致則將加載該插件程序。
[0040]該方法可具有以下安全性:
(O由于安裝包的簽名信息具有較高的安全性,將其加入驗(yàn)證信息后,惡意程序無法偽裝成合法的插件程序包,欺騙用戶加載和運(yùn)行。
[0041](2)將用戶信息加入到驗(yàn)證信息中,在不知道用戶密碼的情況下,惡意者無法通過窮舉掃描的方式檢測該用戶的所有可用插件。
[0042](3)在信息的檢測過程中,使用UserID隱藏用戶的密碼信息,提高了安全性,并防止在信息傳輸過程中被截獲破解。
[0043](4)使用隨機(jī)生成并只具有短暫時(shí)效性的TempKey,信息在傳輸過程中萬一被截獲也會(huì)很快變得毫無價(jià)值,惡意者使用截獲到的不變動(dòng)的信息可以進(jìn)行大量的惡意操作。
[0044](5)步驟(4)可以防止惡意者偽造服務(wù)器進(jìn)行偽造授權(quán)。
[0045]功能2:
插件程序在被調(diào)用時(shí)也要檢測主調(diào)程序的信息,以及登錄用戶的權(quán)限。具體流程如
下:
(I)首先在主程序中,在調(diào)用業(yè)務(wù)程序時(shí),將UserName和HashKeyl傳遞到被調(diào)用的插件程序中。
[0046](2)插件程序?qū)⑹盏降?UserName 和 HashKeyl,以及 MainPackageName 和主MainSignature共四個(gè)信息進(jìn)行字符串運(yùn)算成一個(gè)字符串。
[0047](3)插件程序再將得到的字符串進(jìn)行哈希運(yùn)算,得到一個(gè)新字符串命名為HashKey3。
[0048](4)插件程序?qū)?HashKey3 以及 UserName 和 FunctionPackageName,三個(gè)信息發(fā)送到服務(wù)器端進(jìn)行權(quán)限驗(yàn)證。
[0049](5)服務(wù)器先根據(jù)UserName和FunctionPackageName進(jìn)行執(zhí)行權(quán)限的驗(yàn)證,然后再驗(yàn)證主程序的合法性。若驗(yàn)證失敗,則服務(wù)器返回失敗信息,插件程序不會(huì)被運(yùn)行。若驗(yàn)證成功,服務(wù)器將運(yùn)算出HashKeyl,再將HashKeyl和HashKey3和FunctionID三個(gè)字符串進(jìn)行合并和哈希運(yùn)算得到HashKey4。插件程序收到HashKey4后,進(jìn)行同樣的運(yùn)算,將結(jié)果和HashKey4進(jìn)行比較。若一致則說明主程序的合法性并且登錄的用戶具有運(yùn)行該插件的權(quán)限。
[0050]該方法可具有以下安全性:
(I)惡意程序無法偽裝成主程序?qū)Σ寮绦蜻M(jìn)行調(diào)用。
[0051](2) 一名用戶無法偽裝成其他用戶對(duì)插件程序進(jìn)行調(diào)用。
[0052](3)將HashKeyl加入到驗(yàn)證信息中是為了阻止某個(gè)插件程序去驗(yàn)證該用戶對(duì)其他插件程序的執(zhí)行權(quán)限。
【權(quán)利要求】
1.一種基于用戶權(quán)限的安卓應(yīng)用程序間的安全性鑒定方法,其特征在于該方法基于安卓系統(tǒng)中的三個(gè)主體,所述的三個(gè)主體,一是服務(wù)器端,二是作為主程序的安卓應(yīng)用程序簡稱主程序,三是作為主程序的插件的安卓應(yīng)用程序簡稱插件程序;在安卓設(shè)備中設(shè)計(jì)一個(gè)應(yīng)用程序和另一個(gè)獨(dú)立安裝且作為該程序插件的應(yīng)用程序兩者間的安全性鑒定方法,這種鑒定方法是基于用戶權(quán)限的,主程序中登錄的不同的用戶對(duì)被調(diào)用的插件程序具有不同的執(zhí)行權(quán)限;設(shè)計(jì)主程序加載插件程序時(shí)對(duì)插件程序執(zhí)行的基于用戶權(quán)限的安全性鑒定方法,以及設(shè)計(jì)插件程序被調(diào)用時(shí)對(duì)主程序執(zhí)行的基于用戶權(quán)限的安全性鑒定方法。
2.根據(jù)權(quán)利要求1所述的一種基于用戶權(quán)限的安卓應(yīng)用程序間的安全性鑒定方法,其特征在于所述的設(shè)計(jì)主程序加載插件程序時(shí)對(duì)插件程序執(zhí)行的基于用戶權(quán)限的安全性鑒定方法,當(dāng)主程序掃描到安卓設(shè)備中一個(gè)已安裝的插件程序時(shí)鑒定該插件程序是否為原版程序,并鑒定登錄用戶對(duì)該插件程序的使用權(quán)限,根據(jù)登錄用戶的權(quán)限選擇是否加載被該插件程序,鑒定流程為: Cl)主程序獲取插件程序的包名FunctionPackageName和插件程序的簽名信息FunctionSignature ; (2)主程序?qū)unctionPackageName和對(duì)應(yīng)的FunctionSignature以及包含用戶名和用戶密碼信息的密文UserID和用戶登錄時(shí)由服務(wù)器端生成的具有時(shí)效性的驗(yàn)證信息TempKey這四個(gè)字符串進(jìn)行逐字符相加的運(yùn)算,得到一個(gè)字符串; (3)主程序該字符串進(jìn)行哈希值運(yùn)算,得到一個(gè)新字符串命名為HashKeyl; (4)主程序向服務(wù)器發(fā)送鑒定請(qǐng)求,請(qǐng)求參數(shù)包括HashKeyl和用戶名UserName和FunctionPackageName 三個(gè)信息; (5)服務(wù)器先根據(jù)UserN ame和FunctionPackageName進(jìn)行執(zhí)行權(quán)限的驗(yàn)證,若驗(yàn)證失敗則向主程序返回鑒定失敗信息,執(zhí)行步驟(12),若驗(yàn)證成功則執(zhí)行步驟(6); (6)服務(wù)器使用本地記錄的FunctionPackageName 和 FunctionSignature 以及 UserID和TempKey這四個(gè)字符串進(jìn)行逐字符相加的運(yùn)算,得到一個(gè)字符串,對(duì)該字符串進(jìn)行哈希值運(yùn)算,得到一個(gè)新字符串命名為HashKeyl’ ; (7)服務(wù)器將HashKeyl’與HashKeyl進(jìn)行比較,若不一致則返回鑒定失敗信息,執(zhí)行步驟(12),若驗(yàn)證一致則執(zhí)行步驟(8); (8)服務(wù)器將HashKeyl和服務(wù)器端記錄的UserID兩個(gè)字符串進(jìn)行逐字符相加運(yùn)算,得到一個(gè)字符串,再對(duì)該字符串進(jìn)行哈希值運(yùn)算,得到HashKey2 ; (9)服務(wù)器將HashKey2發(fā)送給主程序; (10)主程序?qū)ashKeyl和UserID兩個(gè)字符串進(jìn)行逐字符相加運(yùn)算,得到一個(gè)字符串,再對(duì)該字符串進(jìn)行哈希值運(yùn)算,得到HashKey2’ ; (11)主程序?qū)ashKey2’和HashKey2進(jìn)行比較,若不一致則執(zhí)行步驟(12),若驗(yàn)證一致則將加載該插件程序,鑒定完畢; (12)鑒定失敗,不加載該插件程序; 其中UserID根據(jù)用戶名信息和密碼信息加密計(jì)算得到,目的為驗(yàn)證用戶信息且不使用明文包含密碼信息,以提高安全性,TempKey為用戶登錄時(shí)由服務(wù)器隨機(jī)生成的驗(yàn)證碼,在用戶登錄成功后發(fā)送至客戶端,它具有時(shí)效性,一段時(shí)間之后即失效,在驗(yàn)證信息中加入具有時(shí)效性的信息,即便驗(yàn)證信息在傳遞中被惡意者截獲,也會(huì)很快失去價(jià)值。
3.根據(jù)權(quán)利要求1中所述的基于用戶權(quán)限的安卓應(yīng)用程序間的安全性鑒定方法,其特征在于所述的設(shè)計(jì)插件程序被調(diào)用時(shí)對(duì)主程序執(zhí)行的基于用戶權(quán)限的安全性鑒定方法,當(dāng)插件程序被主程序調(diào)用時(shí)鑒定主程序是否為原版程序,鑒定登錄用戶是否具有使用權(quán)限,鑒定流程為: (1)主程序獲取插件程序的包名FunctionPackageName和簽名信息FunctionSignature ; (2)主程序?qū)unctionPackageName 和對(duì)應(yīng)的 FunctionSignature 以及 UserID 和TempKey這四個(gè)字符串進(jìn)行逐字符相加的運(yùn)算,得到一個(gè)字符串; (3)主程序該字符串進(jìn)行哈希值運(yùn)算,得到一個(gè)新字符串命名為HashKeyl; (4)主程序調(diào)用插件程序,將登錄用戶的用戶名UserName和HashKeyl作為參數(shù)傳遞給插件程序; (5)插件程序獲取主程序的包名MainPackageName和主程序的簽名信息MainSignature ; (6)插件程序?qū)serName 和 HashKeyl 以及 MainPackageName 和 MainSignature 共四個(gè)信息進(jìn)行逐字符相加的運(yùn)算,得到一個(gè)字符串; (7)插件程序?qū)υ撟址M(jìn)行哈希值運(yùn)算,得到一個(gè)新字符串命名為HashKey3; (8)插件程序向服務(wù)器發(fā)送鑒定請(qǐng)求,參數(shù)包括HashKey3和UserName和FunctionPackageName 三個(gè)信息; (9)服務(wù)器先根據(jù)UserNam`e和FunctionPackageName進(jìn)行執(zhí)行權(quán)限的驗(yàn)證,若驗(yàn)證失敗則向插件程序返回鑒定失敗信息,執(zhí)行步驟(17),若驗(yàn)證成功則執(zhí)行步驟(10); (10)服務(wù)器使用本地記錄的FunctionPackageName和對(duì)應(yīng)的FunctionSignature以及UserID和TempKey這四個(gè)字符串進(jìn)行逐字符相加的運(yùn)算,得到一個(gè)字符串,對(duì)該字符串進(jìn)行哈希值運(yùn)算,得到一個(gè)新字符串命名為HashKeyl’ ; (11)服務(wù)器將UserName和HashKeyl’以及本地記錄的主程序的的包名MainPackageName和主程序的簽名信息MainSignature共四個(gè)信息進(jìn)行逐字符相加的運(yùn)算,得到一個(gè)字符串,再對(duì)該字符串進(jìn)行哈希值運(yùn)算得到HashKey3’ ; (12)服務(wù)器將HashKey3’與HashKey3進(jìn)行比較,若不一致則返回失敗信息,執(zhí)行步驟(17);若驗(yàn)證一致則執(zhí)行步驟(13); (13)服務(wù)器將HashKeyl’和HashKey3和用于插件程序身份鑒定的標(biāo)識(shí)FunctionID三個(gè)字符串進(jìn)行逐字符相加運(yùn)算,得到一個(gè)字符串,再對(duì)該字符串進(jìn)行哈希值運(yùn)算,得到HashKey4 ; (14)服務(wù)器將HashKey4發(fā)送給插件程序; (15)插件程序?qū)ashKeyl和HashKey3和FunctionID三個(gè)字符串進(jìn)行逐字符相加運(yùn)算,得到一個(gè)字符串,再對(duì)該字符串進(jìn)行哈希值運(yùn)算,得到HashKey4’ ; (16)插件程序?qū)ashKey4’和HashKey4進(jìn)行比較,若不一致則執(zhí)行步驟(17),若驗(yàn)證一致則允許該次調(diào)用,鑒定完畢; (17)鑒定失敗,插件程序向用戶反饋運(yùn)行失敗信息后關(guān)閉自身; 其中FunctionID為插件程序創(chuàng)建時(shí)服務(wù)器生成的身份標(biāo)識(shí),步驟(13)中添加FunctionID信息是為了防止惡意者仿冒服務(wù)器端進(jìn)行偽造鑒定。
4.根據(jù)權(quán)利要求2所述的一種基于用戶權(quán)限的安卓應(yīng)用程序間的安全性鑒定方法,其特征在于所述的服務(wù)器端,存有用戶的所有信息,包括用戶名、密碼、由用戶名和密碼運(yùn)算得到的用于身份標(biāo)識(shí)的驗(yàn)證信息UserlD,用戶登陸時(shí)隨機(jī)生成的具有短暫時(shí)效性的驗(yàn)證碼TempKey,用戶對(duì)插件程序的執(zhí)行權(quán)限、主程序的包名MainPackageName和主程序的簽名信息MainSignature、每個(gè)插件程序的包名FunctionPackageName和對(duì)應(yīng)的插件程序的簽名信息FunctionSignature、用于服務(wù)器和插件程序間進(jìn)行身份驗(yàn)證的識(shí)別信息FunctionID,服務(wù)器作用身份識(shí)別的最終判定者,并將身份識(shí)別的結(jié)果發(fā)送給請(qǐng)求方。
5.根據(jù)權(quán)利要求2所述的一種基于用戶權(quán)限的安卓應(yīng)用程序間的安全性鑒定方法,其特征在于所述的主程序,安裝于安卓設(shè)備中,主程序的作用有:為用戶提供登錄功能、根據(jù)登錄用戶的權(quán)限加載安卓設(shè)備中已安裝的插件程序、調(diào)用插件程序;主程序中記錄著帶有登錄用戶的用戶名和密碼信息的驗(yàn)證信息UserlD,主程序在用戶請(qǐng)求加載插件時(shí)會(huì)掃描安卓設(shè)備中所有已安裝的插件程序,當(dāng)主程序掃描到一個(gè)可用插件程序時(shí),主程序需要鑒別插件程序的安全性以及登錄用戶對(duì)該插件程序的執(zhí)行權(quán)限,所以預(yù)加載插件程序時(shí)需向服務(wù)器端發(fā)送身份鑒定請(qǐng)求,主程序?qū)⒑杏脩粜畔⒑皖A(yù)加載的業(yè)務(wù)程序信息的身份鑒定請(qǐng)求發(fā)送給服務(wù)器端,服務(wù)器經(jīng)過身份鑒定后再將鑒定結(jié)果發(fā)回給主程序,主程序根據(jù)服務(wù)器的返回結(jié)果選擇加載該插件程序或者跳過該插件程序。
6.根據(jù)權(quán)利要求2所述的一種基于用戶權(quán)限的安卓應(yīng)用程序間的安全性鑒定方法,其特征在于所述的插件程序,是安裝于同一安卓設(shè)備中的應(yīng)用程序主程序的插件程序,插件程序在被調(diào)用時(shí)需要對(duì)主調(diào)程序進(jìn)行身份鑒定和對(duì)主調(diào)用戶進(jìn)行權(quán)限鑒定,插件程序?qū)兄鞒绦虻陌秃灻畔⒁约暗卿浻脩粜畔⒌拿芪陌l(fā)送到服務(wù)器端進(jìn)行鑒定,若鑒定成功則允許調(diào)用,若鑒定失敗`則反饋鑒定失敗信息并關(guān)閉自身防止非法調(diào)用。
【文檔編號(hào)】G06F21/44GK103560883SQ201310521790
【公開日】2014年2月5日 申請(qǐng)日期:2013年10月30日 優(yōu)先權(quán)日:2013年10月30日
【發(fā)明者】王堃, 房碩, 孫雁飛, 吳蒙, 郭篁, 徐賀 申請(qǐng)人:南京郵電大學(xué)