一種應用程序的數據保護方法和裝置的制造方法
【專利摘要】本申請實施例提供了一種應用程序的數據保護方法和裝置,所述方法包括:接收針對應用程序的數據的請求指令;針對所述請求指令,調用JAVA本地接口;采用所述JAVA本地接口,獲取所述應用程序的動態簽名值;根據所述動態簽名值,判斷所述請求指令是否為可信任指令,實現了在應用程序的唯一簽名的基礎上加入非對稱性的加密機制,保證了應用程序數據的安全性。
【專利說明】
一種應用程序的數據保護方法和裝置
技術領域
[0001]本申請涉及信息安全技術領域,特別是涉及一種應用程序的數據保護方法和一種應用程序的數據保護裝置。
【背景技術】
[0002]隨著技術的發展,智能手機、智能電視等智能終端越來越成為人們生活中不可或缺的一部分。智能終端上的各類應用程序給人們呈現了一個豐富多彩的世界,通過應用程序,人們可以輕松地實現獲取資料、觀看娛樂節目,選購商品、完成支付等活動。正是由于應用程序的功能越來越強大,應用程序的數據安全也越來越受到人們的重視。
[0003]以安卓Andr ο i d類應用程序為例。由于安卓Andr o i d的開源性,安卓Andr o i d應用程序的代碼是極其容易被惡意程序破譯的,特別是直接寫在代碼中的常量,更容易被泄露。通常,應用程序的開發者需要在安卓Android代碼中保存一些敏感數據,用于文件加密或者網絡通信加密,如果將這一類明文數據直接存放在代碼中,惡意程序采用反編譯安卓Android代碼的方式,就能夠很容易地獲得應用程序的敏感數據。針對此類問題,目前的一種解決方式是將應用程序代碼中的明文數據存入動態鏈接庫(Dynamic Link Library或者Dynamic-1ink Library,縮寫為DLL),通過JNI接口(JavaNative Interface,JAVA本地接口)來調用,以避免應用程序代碼中的明文數據被惡意程序直接獲取。雖然動態鏈接庫不易被惡意程序破譯,但是,由于安卓Android代碼中的JNI接口是不可以混淆的,因此,惡意程序仍然可以通過獲取到JNI接口,直接調用動態鏈接庫的方式獲得應用程序中的敏感數據,安全性仍然很低。
[0004]中國專利申請CN201510259122.7公開了一種Android智能電視敏感數據安全增強方法,該方法通過使用與硬件唯一信息相關的密鑰體系對虛擬文件系統進行加密,并使解密密鑰與設備進行嚴格綁定,以阻止攻擊者將敏感數據存儲文件或APK文件移植到其他設備上執行,從而增強了安卓Android智能電視敏感數據的安全性,但是,該方法對終端的硬件條件有很高的要求,無法廣泛使用。
【發明內容】
[0005]鑒于上述問題,提出了本申請實施例以便提供一種克服上述問題或者至少部分地解決上述問題的一種應用程序的數據保護方法和相應的一種應用程序的數據保護裝置。
[0006]為了解決上述問題,本申請實施例公開了一種應用程序的數據保護方法,包括:
[0007]接收針對應用程序的數據的請求指令;
[0008]針對所述請求指令,調用JAVA本地接口;
[0009]采用所述JAVA本地接口,獲取所述應用程序的動態簽名值;
[0010]根據所述動態簽名值,判斷所述請求指令是否為可信任指令。
[0011]可選地,所述采用所述JAVA本地接口,獲取所述應用程序的動態簽名值的步驟包括:
[0012]采用所述JAVA本地接口,調用動態鏈接庫;
[0013]通過所述動態鏈接庫,獲取所述應用程序的動態簽名值。
[0014]可選地,所述根據所述動態簽名值,判斷所述請求指令是否為可信任指令的步驟包括:
[0015]判斷所述動態簽名值與預埋的第一簽名值是否一致。
[0016]可選地,所述判斷所述動態簽名值與預埋的第一簽名值是否一致的步驟包括:
[0017]調用所述動態鏈接庫中的驗證函數;
[0018]采用所述驗證函數,將所述動態簽名值與預埋的第一簽名值進行比對,確定所述動態簽名值與第一簽名值是否一致。
[0019]可選地,所述第一簽名值通過如下方式預埋:
[0020]獲取所述應用程序的日志中記錄的第一簽名值;
[0021]將所述第一簽名值儲存至動態鏈接庫中。
[0022]可選地,所述將所述第一簽名值儲存至動態鏈接庫中的步驟包括:
[0023]對所述第一簽名值進行加密,獲得加密后的第一簽名值;
[0024]將所述加密后的第一簽名值儲存至所述動態鏈接庫中。
[0025]可選地,在采用所述驗證函數,將所述動態簽名值與預埋的第一簽名值進行比對,確定所述動態簽名值與第一簽名值是否一致的步驟前,還包括:
[0026]對所述預埋的第一簽名值進行解密。
[0027]為了解決上述問題,本申請實施例還公開了一種應用程序的數據保護裝置,包括:
[0028]接收模塊,用于接收針對應用程序的數據的請求指令;
[0029]調用模塊,用于針對所述請求指令,調用JAVA本地接口;
[0030]動態簽名值獲取模塊,用于采用所述JAVA本地接口,獲取所述應用程序的動態簽名值;
[0031]判斷模塊,用于根據所述動態簽名值,判斷所述請求指令是否為可信任指令。
[0032]可選地,所述動態簽名值獲取模塊包括:
[0033]調用子模塊,用于采用所述JAVA本地接口,調用動態鏈接庫;
[0034]獲取子模塊,用于通過所述動態鏈接庫,獲取所述應用程序的動態簽名值。
[0035]可選地,所述判斷模塊包括:
[0036]判斷子模塊,用于判斷所述動態簽名值與預埋的第一簽名值是否一致。
[0037]可選地,所述判斷子模塊包括:
[0038]調用單元,用于調用所述動態鏈接庫中的驗證函數;
[0039]比對單元,用于采用所述驗證函數,將所述動態簽名值與預埋的第一簽名值進行比對,確定所述動態簽名值與第一簽名值是否一致。
[0040]可選地,所述第一簽名值由如下模塊進行預埋:
[0041]第一簽名值獲取模塊,用于獲取所述應用程序的日志中記錄的第一簽名值;
[0042]儲存模塊,用于將所述第一簽名值儲存至動態鏈接庫中。
[0043]可選地,所述儲存模塊包括:
[0044]加密子模塊,對所述第一簽名值進行加密,獲得加密后的第一簽名值;
[0045]儲存子模塊,用于將所述加密后的第一簽名值儲存至所述動態鏈接庫中。
[0046]可選地,所述判斷子模塊還包括:
[0047]解密單元,用于對所述預埋的第一簽名值進行解密。
[0048]與【背景技術】相比,本申請實施例包括以下優點:
[0049]本申請實施例通過調用JAVA本地接口,進而調用動態鏈接庫獲取應用程序的簽名值,根據所述簽名值對獲取數據的請求指令進行判斷,由于動態鏈接庫破解難度非常大,需要匯編等級的破解,所以在動態鏈接庫中的邏輯是非常難以獲取的,本申請實施例通過反向調用上層JAVA代碼的方式,在如何調用以及調用的是何種函數上是完全保密的,因此,本申請實施例通過在應用程序的唯一簽名的基礎上加入類似非對稱性的加密機制,即動態鏈接庫一側的邏輯對破解者來說是完全未知的,兩者結合組成加密機制,保證了應用程序數據的安全性。
[0050]其次,本申請實施例在獲取到應用程序的第一簽名值后,對所述第一簽名值進行加密處理,然后將加密后的簽名值預埋至動態鏈接庫,使得動態鏈接庫中的明文數據更加牢固,敏感信息更加不易被獲取,進一步確保了應用程序的數據安全。
【附圖說明】
[0051]圖1是本申請的一種應用程序的數據保護方法實施例一的步驟流程圖;
[0052]圖2是本申請的一種應用程序的數據保護方法實施例一的原理示意圖;
[0053]圖3是本申請的獲取應用程序的動態簽名值的示意圖;
[0054]圖4是本申請的一種應用程序的數據保護方法實施例二的步驟流程圖;
[0055]圖5是本申請的一種應用程序的數據保護裝置實施例的結構框圖。
【具體實施方式】
[0056]為使本申請的上述目的、特征和優點能夠更加明顯易懂,下面結合附圖和【具體實施方式】對本申請作進一步詳細的說明。
[0057]參照圖1,示出了本申請的一種應用程序的數據保護方法實施例一的步驟流程圖,具體可以包括如下步驟:
[0058]步驟101,接收針對應用程序的數據的請求指令;
[0059]在本申請實施例中,針對應用程序的數據的請求指令可以是用戶在與智能終端交互的過程中發送的針對某一應用程序的指令。在正常情況下,所述請求指令可以被應用程序獲得,并執行相應的動作,但是,若所述請求被惡意程序劫持,則可能會導致應用程序的數據被泄露。
[0060]以智能電視為例,在與智能電視的交互過程中,用戶可以通過遙控器等控制設備向智能電視中的應用程序發送相應的指令,例如,指示智能電視中的瀏覽器訪問某一網站。但是,該指令若被惡意程序劫持,則可能會導致瀏覽器的敏感數據被泄露。
[0061 ] 步驟102,針對所述請求指令,調用JAVA本地接口 ;
[0062]如圖2所示,是本申請的一種應用程序的數據保護方法實施例一的原理示意圖。為了保護應用程序數據的安全性,在本申請實施例中,當接收到針對應用程序的數據的請求指令后,可以針對所述請求指令,首先調用JAVA本地接口,以進一步地對所述請求指令是否為可信任指令進行驗證。
[0063]JAVA本地接口(JavaNative Interface,JNI接口)標準是JAVA平臺的一部分,它允許JAVA代碼和以其他語言寫成的代碼進行交互。JNI接口是本地編程接口,它使得在JAVA虛擬機(Virtual Manufacturing,VM)內部運行的JAVA代碼能夠與用其它編程語言(如C語音、C++,或者匯編語言)編寫的應用程序和庫進行交互操作。
[0064]步驟103,采用所述JAVA本地接口,獲取所述應用程序的動態簽名值;
[0065]在安卓Android系統中,所有安裝到系統的應用程序都有一個數字證書,所述數字證書可以用于在應用程序的開發者和應用程序之間建立信任關系。通常,如果針對一個應用程序的許可的保護等級為簽名保護,那么就只有那些跟該許可所在的程序擁有同一個數字證書的應用程序(例如,同一個應用程序的不同升級版本)才能取得對所述應用程序的訪問或者對數據的修改以及覆蓋安裝權限。安卓Android系統要求每一個安裝進系統的應用程序都是經過數字證書簽名的,而數字證書的私鑰則保存在應用程序的開發者手中。因此,只要不是人為泄露,數字證書一經生成就只能在程序之內獲取,這樣就能夠保證該應用程序數據的安全性。
[0066]在具體實現中,可以采用所述JAVA本地接口,獲取到所述應用程序的動態簽名值,通過所述動態簽名值對所述請求指令進行判斷。
[0067]在本申請的一種優選實施例中,所述采用所述JAVA本地接口,獲取所述應用程序的動態簽名值的步驟具體可以包括如下子步驟:
[0068]子步驟1031,采用所述JAVA本地接口,調用動態鏈接庫;
[0069]子步驟1032,通過所述動態鏈接庫,獲取所述應用程序的動態簽名值。
[0070]如圖3所示,是本申請的獲取應用程序的動態簽名值的示意圖。在具體實現中,可以基于安卓Android系統的JAVA本地接口,調用動態鏈接庫,并通過在所述動態鏈接庫中反向調用JAVA的技術,獲取到所述應用程序的動態簽名值。
[0071]JNI接口是一組雙向的接口,JNI可以通過ID識別域和方法(這里的域指的是JAVA語言中的域,方法指的是JAVA語言中的方法,其名字和ID可以由開發者自己定義)。一個域或方法的ID是任何處理域和方法的函數的必須參數,每個函數可以接受(作為參數的)域或方法的類、名稱、符號,以及它們對應返回的jfieldID(域ID)或jmethodID(方法ID),我們可以通過域ID和方法ID,找到相應的方法,從而實現在動態鏈接庫中調用JAVA層代碼。
[0072]步驟104,根據所述動態簽名值,判斷所述請求指令是否為可信任指令。
[0073]在本申請實施例中,在動態鏈接庫獲取到所述應用程序的動態簽名值后,可以根據所述動態簽名值,判斷所述請求指令是否為可信任指令。
[0074]在本申請的一種優選實施例中,所述根據所述動態簽名值,判斷所述請求指令是否為可信任指令的步驟具體可以包括如下子步驟:
[0075]子步驟1041,判斷所述動態簽名值與預埋的第一簽名值是否一致。
[0076]在本申請實施例中,所述第一簽名值即為所述應用程序的簽名值。因此,可以將獲取到的動態簽名值與預埋的第一簽名值進行比對,確定二者是否一致,若是,則認為所述請求指令為可信任指令,可以返回相應的數據。
[0077]通常,每一個安卓Android應用程序生成apk(AndroidPackage,安卓安裝包)的時候都必須要進行簽名,其簽名值在生成后便是是固定且唯一的,外部應用無法通過破解apk文件及其他方式獲取到,只能通過程序內部獲取。因此,在本申請的一種優選實施例中,所述第一簽名值可以通過如下方式預埋:
[0078]Sll,獲取所述應用程序的日志中記錄的第一簽名值;
[0079]S12,將所述第一簽名值儲存至動態鏈接庫中。
[0080]在具體實現中,可以通過獲取所述應用程序的日志,以日志Log打印的方式,將所述應用程序的簽名值打印出來并儲存在動態鏈接庫中。
[0081]在本申請的一種優選實施例中,所述判斷所述動態簽名值與預埋的第一簽名值是否一致的子步驟可以進一步包括:
[0082]S21,調用所述動態鏈接庫中的驗證函數;
[0083]S22,采用所述驗證函數,將所述動態簽名值與預埋的第一簽名值進行比對,確定所述動態簽名值與第一簽名值是否一致。
[0084]在具體實現中,JAVA層可以通過JNI接口調用動態鏈庫中的驗證預埋的第一簽名值和動態簽名值的函數,觸發驗證邏輯,將所述動態簽名值與預埋的第一簽名值進行比對,以確定所述動態簽名值與第一簽名值是否一致。
[0085]本申請實施例通過調用JAVA本地接口,進而調用動態鏈接庫獲取應用程序的簽名值,根據所述簽名值對獲取數據的請求指令進行判斷,由于動態鏈接庫破解難度非常大,需要匯編等級的破解,所以在動態鏈接庫中的邏輯是非常難以獲取的,本申請實施例通過反向調用上層JAVA代碼的方式,在如何調用以及調用的是何種函數上是完全保密的,因此,本申請實施例通過在應用程序的唯一簽名的基礎上加入類似非對稱性的加密機制,即動態鏈接庫一側的邏輯對破解者來說是完全未知的,兩者結合組成加密機制,保證了應用程序數據的安全性。
[0086]參照圖4,示出了本申請的一種應用程序的數據保護方法實施例二的步驟流程圖,具體可以包括如下步驟:
[0087]步驟401,對所述第一簽名值進行加密,獲得加密后的第一簽名值;
[0088]步驟402,將所述加密后的第一簽名值儲存至所述動態鏈接庫中;
[0089]通常,惡意程序攻破動態鏈接庫是極其困難的,但是,仍然存在動態鏈接庫被攻破的可能,特別是儲存在動態鏈接庫中的明文信息仍然存在被惡意程序獲取的可能。因此,在本申請實施例中,在對應用程序的簽名值進行預埋時,可以對所述簽名值進行加密處理。
[0090]在具體實現中,可以獲取應用程序的日志記錄,以日志Log打印的方式獲取到的第一簽名值,然后對第一簽名值進行加密,并將加密后的第一簽名值預埋至動態鏈接庫中。本領域技術人員可以根據實際需要選擇具體的加密方式,本申請對此不作具體限定。
[0091]步驟403,接收針對應用程序的數據的請求指令;
[0092]步驟404,針對所述請求指令,調用JAVA本地接口 ;
[0093]在本申請實施例中,針對應用程序的數據的請求指令可以是用戶在與智能終端交互的過程中發送的針對某一應用程序的指令。在正常情況下,所述請求指令可以被應用程序獲得,并執行相應的動作,但是,若所述請求被惡意程序劫持,則可能會導致應用程序的數據被泄露。以智能電視為例,在與智能電視的交互過程中,用戶可以通過遙控器等控制設備向智能電視中的應用程序發送相應的指令,例如,指示智能電視中的瀏覽器訪問某一網站。但是,該指令若被惡意程序劫持,則可能會導致瀏覽器的敏感數據被泄露。因此,為了保護應用程序數據的安全性,當接收到針對應用程序的數據的請求指令后,可以針對所述請求指令,首先調用JAVA本地接口,以進一步地對所述請求指令是否為可信任指令進行驗證。
[0094]步驟405,采用所述JAVA本地接口,調用動態鏈接庫;
[0095 ]步驟406,通過所述動態鏈接庫,獲取所述應用程序的動態簽名值;
[0096]由于JNI接口是一組雙向的接口,JNI可以通過ID識別域和方法。因此,我們可以通過域ID和方法ID,找到相應的方法,從而實現在動態鏈接庫中調用JAVA層代碼。即,可以基于安卓Android系統的JAVA本地接口,調用動態鏈接庫,并通過在所述動態鏈接庫中反向調用JAVA的技術,獲取到所述應用程序的動態簽名值。
[0097]在具體實現中,可以通過安裝管理器PackageManager獲取應用程序的安裝信息PackageInfo,最終獲取到所述應用程序的動態簽名值。
[0098]作為本申請的一種示例,可以通過調用動態鏈接庫中的如下函數,獲得所述應用程序的簽名值:
[0099]GetMethodID(cls,"getPackageManager","()Landroid/content/pm/PackageManager;");
[0100]GetMethodID(cls,"getPackagelnfo","(Ljava/lang/String;I)Landroid/content/pm/Packagelnfo;〃);
[0101]GetFieldID(cls,〃signatures〃,〃[Landroid/content/pm/Signature;〃);
[0102]步驟407,調用所述動態鏈接庫中的驗證函數;
[0103]在具體實現中,JAVA層可以通過JNI接口調用動態鏈庫中的驗證預埋的第一簽名值和動態簽名值的函數,觸發驗證邏輯。
[0104]步驟408,對所述預埋的第一簽名值進行解密;
[0105]在本申請實施例中,由于預埋的第一簽名值是經過加密處理的,因此,在將所述動態簽名值與預埋的第一簽名值進行比對前,還需要對所述預埋的第一簽名值進行解密處理。
[0106]步驟409,采用所述驗證函數,將所述動態簽名值與預埋的第一簽名值進行比對,確定所述動態簽名值與第一簽名值是否一致。
[0107]在本申請實施例中,若所述動態簽名值與預埋的第一簽名值相同,則可以認為接收到的數據請求指令為可信任指令,可以返回相應的數據;若二者不同,則可以拒絕相應的請求。
[0108]在本申請實施例中,在獲取到應用程序的第一簽名值后,對所述第一簽名值進行加密處理,然后將加密后的簽名值預埋至動態鏈接庫,使得動態鏈接庫中的明文數據更加牢固,敏感信息更加不易被獲取,進一步確保了應用程序的數據安全。
[0109]需要說明的是,對于方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本申請實施例并不受所描述的動作順序的限制,因為依據本申請實施例,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優選實施例,所涉及的動作并不一定是本申請實施例所必須的。
[0110]參照圖5,示出了本申請的一種應用程序的數據保護裝置實施例的結構框圖,具體可以包括如下模塊:
[0111]接收模塊501,用于接收針對應用程序的數據的請求指令;
[0112]調用模塊502,用于針對所述請求指令,調用JAVA本地接口;
[0113]動態簽名值獲取模塊503,用于采用所述JAVA本地接口,獲取所述應用程序的動態簽名值;
[0114]判斷模塊504,用于根據所述動態簽名值,判斷所述請求指令是否為可信任指令。
[0115]在本申請實施例中,所述動態簽名值獲取模塊503具體可以包括如下子模塊:
[0116]調用子模塊5031,用于采用所述JAVA本地接口,調用動態鏈接庫;
[0117]獲取子模塊5032,用于通過所述動態鏈接庫,獲取所述應用程序的動態簽名值。
[0118]在本申請實施例中,所述判斷模塊504具體可以包括如下子模塊:
[0119]判斷子模塊5041,用于判斷所述動態簽名值與預埋的第一簽名值是否一致。
[0120]在本申請實施例中,所述判斷子模塊5041具體可以包括如下單元:
[0121 ]調用單元411,用于調用所述動態鏈接庫中的驗證函數;
[0122]比對單元412,用于采用所述驗證函數,將所述動態簽名值與預埋的第一簽名值進行比對,確定所述動態簽名值與第一簽名值是否一致。
[0123]在本申請實施例中,所述第一簽名值可以由如下模塊進行預埋:
[0124]第一簽名值獲取模塊505,用于獲取所述應用程序的日志中記錄的第一簽名值;
[0125]儲存模塊506,用于將所述第一簽名值儲存至動態鏈接庫中。
[0126]在本申請實施例中,所述儲存模塊506具體可以包括如下子模塊:
[0127]加密子模塊5061,對所述第一簽名值進行加密,獲得加密后的第一簽名值;
[0128]儲存子模塊5062,用于將所述加密后的第一簽名值儲存至所述動態鏈接庫中。
[0129]在本申請實施例中,判斷子模塊5041還可以包括如下單元:
[0130]解密單元413,用于對所述預埋的第一簽名值進行解密。
[0131]對于裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
[0132]本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
[0133]本領域內的技術人員應明白,本申請實施例的實施例可提供為方法、裝置、或計算機程序產品。因此,本申請實施例可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本申請實施例可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產品的形式。
[0134]本申請實施例是參照根據本申請實施例的方法、終端設備(系統)、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理終端設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理終端設備的處理器執行的指令產生用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0135]這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理終端設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0136]這些計算機程序指令也可裝載到計算機或其他可編程數據處理終端設備上,使得在計算機或其他可編程終端設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程終端設備上執行的指令提供用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0137]盡管已描述了本申請實施例的優選實施例,但本領域內的技術人員一旦得知了基本創造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權利要求意欲解釋為包括優選實施例以及落入本申請實施例范圍的所有變更和修改。
[0138]最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者終端設備中還存在另外的相同要素。
[0139]以上對本申請所提供的一種應用程序的數據保護方法和一種應用程序的數據保護裝置,進行了詳細介紹,本文中應用了具體個例對本申請的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領域的一般技術人員,依據本申請的思想,在【具體實施方式】及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本申請的限制。
【主權項】
1.一種應用程序的數據保護方法,其特征在于,包括: 接收針對應用程序的數據的請求指令; 針對所述請求指令,調用JAVA本地接口 ; 采用所述JAVA本地接口,獲取所述應用程序的動態簽名值; 根據所述動態簽名值,判斷所述請求指令是否為可信任指令。2.根據權利要求1所述的方法,其特征在于,所述采用所述JAVA本地接口,獲取所述應用程序的動態簽名值的步驟包括: 采用所述JAVA本地接口,調用動態鏈接庫; 通過所述動態鏈接庫,獲取所述應用程序的動態簽名值。3.根據權利要求1或2所述的方法,其特征在于,所述根據所述動態簽名值,判斷所述請求指令是否為可信任指令的步驟包括: 判斷所述動態簽名值與預埋的第一簽名值是否一致。4.根據權利要求3所述的方法,其特征在于,所述判斷所述動態簽名值與預埋的第一簽名值是否一致的步驟包括: 調用所述動態鏈接庫中的驗證函數; 采用所述驗證函數,將所述動態簽名值與預埋的第一簽名值進行比對,確定所述動態簽名值與第一簽名值是否一致。5.根據權利要求4所述的方法,其特征在于,所述第一簽名值通過如下方式預埋: 獲取所述應用程序的日志中記錄的第一簽名值; 將所述第一簽名值儲存至動態鏈接庫中。6.根據權利要求4或5所述的方法,其特征在于,所述將所述第一簽名值儲存至動態鏈接庫中的步驟包括: 對所述第一簽名值進行加密,獲得加密后的第一簽名值; 將所述加密后的第一簽名值儲存至所述動態鏈接庫中。7.根據權利要求6所述的方法,其特征在于,在采用所述驗證函數,將所述動態簽名值與預埋的第一簽名值進行比對,確定所述動態簽名值與第一簽名值是否一致的步驟前,還包括: 對所述預埋的第一簽名值進行解密。8.一種應用程序的數據保護裝置,其特征在于,包括: 接收模塊,用于接收針對應用程序的數據的請求指令; 調用模塊,用于針對所述請求指令,調用JAVA本地接口 ; 動態簽名值獲取模塊,用于采用所述JAVA本地接口,獲取所述應用程序的動態簽名值; 判斷模塊,用于根據所述動態簽名值,判斷所述請求指令是否為可信任指令。9.根據權利要求8所述的裝置,其特征在于,所述動態簽名值獲取模塊包括: 調用子模塊,用于采用所述JAVA本地接口,調用動態鏈接庫; 獲取子模塊,用于通過所述動態鏈接庫,獲取所述應用程序的動態簽名值。10.根據權利要求8或9所述的裝置,其特征在于,所述判斷模塊包括: 判斷子模塊,用于判斷所述動態簽名值與預埋的第一簽名值是否一致。 其中,所述判斷子模塊包括: 調用單元,用于調用所述動態鏈接庫中的驗證函數; 比對單元,用于采用所述驗證函數,將所述動態簽名值與預埋的第一簽名值進行比對,確定所述動態簽名值與第一簽名值是否一致。
【文檔編號】G06F21/62GK105844150SQ201610169739
【公開日】2016年8月10日
【申請日】2016年3月23日
【發明人】楊紹棟, 于芝濤
【申請人】青島海信傳媒網絡技術有限公司