用于在應用之間執行認證的方法和裝置制造方法
【專利摘要】提供了一種由客戶端裝置中的第一應用執行來認證該客戶端裝置中的第二應用的方法。該方法包括:當第一應用從第二應用接收執行請求時,向認證服務器請求第二應用的認證信息;從認證服務器獲得第二應用的認證信息;以及利用認證信息來認證第二應用,其中,第二應用的認證信息用認證服務器的私鑰來加以簽名。
【專利說明】用于在應用之間執行認證的方法和裝置
[0001] 相關申請的交叉引用
[0002] 本申請要求2013年3月18日在韓國知識產權局提交的分配序號為 10-2013-0028822的韓國專利申請的權益,在此通過引用并入該韓國專利申請的全部公開 內容。
【技術領域】
[0003] 本公開涉及用于在應用之間準確地執行認證的方法和裝置。更具體而言,本公開 涉及用于通過從認證服務器接收要認證的應用的認證信息來在應用之間執行認證的方法 和裝置。
【背景技術】
[0004] 可故意調用另一應用的安卓(Android)應用具有這樣的優點:可容易地擴展安卓 應用的動作并且可迅速開發應用服務。然而,當一應用調用另一應用時,為了維持安全性, 作出調用的應用(以下稱為主應用)需要認證被調用的應用(以下稱為從動應用)并且從動 應用需要認證主應用。
[0005] 相關技術的認證應用的方法的示例包括通過證書授權機構(Certif icate Authority,CA)來交換認證的證書的方法和交換公鑰的方法。然而,交換認證的證書的方 法有如下缺點:由于CA的介入,成本較高。交換公鑰的方法有如下問題:從動應用和主應用 都必須具有作為一對的私鑰和公鑰,并且由于每個應用必須自己保護私鑰,所以難以管理 私鑰并維持安全性。
[0006] 因此,需要一種用于以低成本在應用之間準確地執行認證的方法和裝置。
[0007] 上述信息只是為了幫助對本公開的理解而作為背景信息給出的。關于上述任何內 容就本公開而言是否可適用為現有技術,沒有做出判定,也沒有做出斷言。
【發明內容】
[0008] 本公開的各方面要解決至少以上提及的問題和/或缺點并且要提供至少以下所 述的優點。從而,本公開的一方面提供了一種用于以低成本在應用之間準確地執行認證的 方法和裝置。
[0009] 根據本公開的一方面,提供了一種由客戶端裝置中的第一應用執行來認證該客戶 端裝置中的第二應用的方法。該方法包括:當第一應用接收到來自第二應用的執行請求時, 向認證服務器請求第二應用的認證信息;從認證服務器獲得第二應用的認證信息;以及由 第一應用利用認證信息來認證第二應用,其中,第二應用的認證信息用認證服務器的私鑰 來加以簽名。
[0010] 對第二應用的認證可包括:利用認證服務器的公鑰來認證第二應用的認證信息; 以及把從第二應用的應用包(apk)文件獲得的基于哈希的消息認證碼(HMAC)值與經認證 的認證信息中包括的HMAC值相比較。
[0011] 對第二應用的認證可包括:根據比較的結果,從第二應用的apk文件和高速緩存 存儲器的每個中提取第二應用的執行文件,并且把從第二應用的apk文件提取的執行文件 與從高速緩存存儲器提取的執行文件相比較。
[0012] 根據對第二應用的認證的結果,該方法還可包括結束第一應用的執行,并且將第 一應用的識別信息發送給第二應用,其中,第二應用利用第一應用的識別信息從認證服務 器獲得第一應用的認證信息,并且其中,在第二應用認證第一應用時,使用所獲得的認證信 肩、。
[0013] 在第二應用認證第一應用之后,該方法還可包括:當第一應用接收到來自第二應 用的執行請求時,利用第二應用的認證信息來認證第二應用;以及根據對第二應用的認證 的結果,使得第一應用能夠執行第二應用所請求的動作。
[0014] 當第一應用的動作完成時,方法還可包括結束第一應用的執行,并且將第一應用 的識別信息和動作結果值發送給第二應用,其中第二應用利用第一應用的認證信息來認證 第一應用,并且根據對第一應用的認證的結果,利用動作結果值執行另一動作。
[0015] 對認證服務器的請求可包括:在第一應用向第二應用發送執行請求之前,向認證 服務器請求第二應用的認證信息。
[0016] 根據本公開的另一方面,提供了一種客戶端裝置,在該客戶端裝置中第一應用認 證第二應用。該裝置包括:應用管理單元,被配置為獲得客戶端裝置中安裝的應用的識別信 息,并將第二應用的識別信息發送給第一應用;以及存儲單元,被配置為存儲公鑰和簽名認 證信息,其中,第一應用當接收到來自第二應用的執行請求時,向認證服務器請求第二應用 的認證信息,從認證服務器獲得第二應用的認證信息,并且利用認證信息來認證第二應用, 其中,第二應用向第一應用發送執行請求,并且其中,第二應用的認證信息用認證服務器的 私鑰來加以簽名。
[0017] 通過以下結合附圖公開本公開的各種實施例的詳細描述,本領域技術人員將清楚 本公開的其他方面、優點和顯著特征。
【專利附圖】
【附圖說明】
[0018] 通過以下結合附圖的描述,本公開的某些實施例的上述和其他方面、特征和優點 將會更加清楚,附圖中:
[0019] 圖1是示出根據本公開的實施例的由第一應用執行來認證第二應用的方法的流 程圖;
[0020] 圖2是示出根據本公開的實施例的由第一應用執行來認證第二應用的方法的流 程圖;
[0021] 圖3是示出根據本公開的實施例的在應用之間執行認證的方法的流程圖;
[0022] 圖4是示出根據本公開的實施例的在應用之間執行認證的方法的流程圖;
[0023] 圖5是示出根據本公開的實施例的用于在應用之間執行認證的客戶端裝置的框 圖;以及
[0024] 圖6是示出根據本公開的實施例的用于在應用之間執行認證的客戶端裝置的框 圖。
[0025] 貫穿各圖,應注意相似的標號用于描述相同或相似的元素、特征和結構。
【具體實施方式】
[0026] 提供以下參照附圖的描述來幫助全面理解如權利要求及其等同物所限定的本公 開的各種實施例。描述包括各種具體細節以幫助理解,但這些細節應被視為只是示范性的。 因此,本領域普通技術人員將會認識到,在不脫離本公開的范圍和精神的情況下,能夠對本 文描述的各種實施例進行各種改變和修改。此外,為了清楚和簡明,可省略對公知的功能和 構造的描述。
[0027] 在以下描述和權利要求中使用的術語和字詞不受限于字面含義,而只是被發明人 用來使得能夠對于本公開有清楚且一致的理解。從而,本領域技術人員應當清楚,提供以下 對本公開的各種實施例的描述只是為了說明,而不是為了限制如所附權利要求及其等同物 所限定的本公開。
[0028] 要理解,單數形式"一"和"該"包括復數指代,除非上下文明確地另有規定。從而, 例如,對"一組件表面"的提及包括對一個或多個這樣的表面的提及。
[0029] 術語"基本上"是用來意指所記載的特性、參數或值不需要被精確地實現,而是在 量上可發生偏離或變動,包括例如容差、測量誤差、測量精確度限制和本領域技術人員已知 的其他因素,而這些偏離或變動不會妨礙該特性打算提供的效果。
[0030] 將參照附圖來描述本公開,附圖中示出了本公開的各種實施例。
[0031] 圖1是示出根據本公開的實施例的由第一應用執行來認證第二應用的方法的流 程圖。
[0032] 在圖1中,第一應用可以是從動應用,并且第二應用可以是主應用。然而,本實施 例不限于此,第一應用也可以是主應用并且第二應用也可以是從動應用。在圖1中,主應用 可以是調用從動應用并使用從動應用的動作結果值的應用,而從動應用可以是被主應用調 用、執行主應用請求執行的動作并且將動作結果值發送給主應用的應用。
[0033] 參考圖1,在操作S101中,當接收到來自第二應用的執行請求時,第一應用可 向認證服務器請求第二應用的認證信息。認證服務器可以是基于哈希的消息認證碼 (Hash-based Message Authentication Code,HMAC)服務器,其存儲并管理應用的HMAC值。 在此情況下,在根據第二應用的執行請求而執行之前,第一應用可通過將包括第二應用的 軟件版本和包名稱的識別信息發送給認證服務器來向認證服務器請求第二應用的認證信 肩、。
[0034] 在請求認證信息時發送給認證服務器的包括第二應用的軟件版本和包名稱的識 別信息可在第一應用接收來自第二應用的執行請求時與執行請求一起被第一應用接收到。
[0035] 在操作S103中,第一應用可接收并獲得響應于操作S101中的請求的、來自認證服 務器的第二應用的認證信息。一數字簽名(其是通過用認證服務器的私鑰對認證信息的哈 希值加密而獲得的值)也可與認證信息一起被接收。從而,從認證服務器接收到了認證信息 的第一應用可通過將通過用認證服務器的公鑰對該數字簽名解密而獲得的認證信息的哈 希值與從認證服務器接收到的認證信息的哈希值相比較來確定認證信息的HMAC值是否被 偽造或被更改。
[0036] 認證信息可包括HMAC值,該HMAC值可以是從每個應用的應用包(application package,apk)文件生成的。用認證服務器的私鑰加密的每個應用的數字簽名可通過用認 證服務器的私鑰對可從每個應用的apk文件生成的HMAC值簽名來生成。在此情況下,數字 簽名可以是通過用認證服務器的私鑰對HMAC值的哈希值加密而獲得的值。
[0037] -旦應用的apk文件被改變,應用的HMAC值也可被改變。從而,第一應用可通過 把利用存儲在客戶端裝置中的apk文件生成的HMAC值與從認證服務器接收的HMAC值相比 較來認證第二應用。
[0038] 認證服務器中存儲的HMAC值可以是在安裝應用的市場中注冊的應用的HMAC值。 此外,對于根據應用的市場注冊請求而通過了審查的應用,在認證服務器中可存儲HMAC 值。在此情況下,通過了審查的應用的列表可作為白名單被注冊在認證服務器中。一般地, HMAC值是用于檢測消息在被發送時是否被偽造或更改的值。從而,當請求注冊的apk文件 被從應用的開發者發送到應用市場時,apk文件的HMAC值也可被發送以便檢測apk文件被 偽造或更改。HMAC值可根據HMAC生成算法從消息和在消息的接收者與消息的創建者之間 共享的密鑰值來生成。從而,當與消息相對應的apk文件被改變時,HMAC值也被改變。
[0039] 利用HMAC值的特性,可通過將認證服務器中存儲的認證服務器的白名單中包括 的應用的HMAC值與客戶端裝置中的應用的HMAC值相比較來檢測客戶端裝置中的應用是否 被偽造或更改。從而,認證服務器可將apk文件的HMAC值存儲為可根據關于應用的軟件版 本和包名稱的信息來識別的認證信息,并可使用該HMAC值來認證應用。
[0040] 此外,在圖1中,即使當存在如圖HMAC值那樣的根據應用的文件(例如apk文件) 而變化的數據生成方法時,也可按與利用HMAC值來檢測偽造或更改的方法相同的方式來 認證應用。例如,要認證另一應用的應用可通過把在該數據生成方法中生成并存儲在服務 器中的數據值與在該數據生成方法中從客戶端裝置的apk文件生成的數據值相比較來檢 測要認證的應用是否被偽造或更改。
[0041] 第一應用可利用認證服務器的公鑰和以認證服務器的私鑰加密的數字簽名來認 證接收的認證信息。更具體而言,第一應用可通過把通過利用認證服務器的公鑰對數字簽 名解密而獲得的認證信息的哈希值與從認證服務器接收的認證信息的哈希值相比較,來認 證從認證服務器接收的認證信息。第一應用可通過用數字簽名和公鑰對認證信息進行認證 來認證出認證信息不是偽造或更改的并且發送認證信息的實體是認證服務器。在此情況 下,認證服務器的公鑰可從認證服務器接收并被第一應用用于對認證信息進行認證。
[0042] 當用私鑰對認證信息簽名時,可以按數字簽名方法來對認證信息簽名。作為附加 或邏輯上耦合到要發送的數據的數字信息的數字簽名可用于識別簽名者并且表明簽名者 確認數據的內容。可利用非對稱加密方法以數字簽名生成密鑰生成的數字簽名可被定義為 連續的任意數字、字母、符號等的集合。想要數字簽名的訂戶擁有數字簽名生成密鑰和數字 簽名驗證密鑰作為他/她的數字簽名密鑰。數字簽名生成密鑰是訂戶可使用的私鑰,而數 字簽名驗證密鑰是當他人驗證攜帶數字簽名的數據時使用的公鑰。例如,他人可利用公鑰 來識別簽名者并且訪問和讀取數據,并且私鑰可用于在訂戶將數據發送給他人時將數字簽 名放在數據上。由于數字簽名不對數據本身加密,所以第三方可以沒有困難地訪問并讀取 數據的內容。然而,數字簽名用于驗證被稱為數據的創建者的人創建了數據并且數據在被 發送/接收時未被偽造或更改,從而使得創建者不可能否認他/她創建了數據。
[0043] 當不可從認證服務器接收到第二應用的認證信息時,也即,當第二應用未被包括 在白名單中,從而認證信息不存在時,第二應用對應于未注冊應用,從而不可被認證。
[0044] 在操作S105中,第一應用可利用從認證服務器接收的認證信息來認證第二應用。 第一應用可利用以認證服務器的公鑰認證的認證信息來認證客戶端裝置中的第二應用。在 認證第二應用之后,第一應用可根據第二應用的執行請求來執行動作。
[0045] 即使當第一應用是主應用且第二應用是從動應用時,也可按與參考圖1所述相同 的方式來執行認證。當第一應用要利用第二應用的動作結果值來執行另一動作時,第一應 用可認證第二應用是否安全。在此情況下,在利用認證信息認證第二應用以便驗證了第二 應用之后,第一應用可向第二應用發送第一應用的執行請求。例如,在獲得從動應用的識別 信息之后,主應用可認證從動應用并且可以以顯式意圖向從動應用發送執行請求。
[0046] 圖2是示出根據本公開的實施例的由第一應用在客戶端裝置中執行來認證第二 應用的方法的流程圖。
[0047] 參考圖2,在操作S201中,要認證第二應用的第一應用可利用認證服務器的公鑰 來認證第二應用的認證信息。第一應用可通過用公鑰和以私鑰加密的認證信息的數字簽名 對認證信息進行認證,來確認從認證服務器接收的認證信息未被偽造或更改并且發送認證 信息的實體是認證服務器。然后,第一應用可使用認證信息來認證第二應用。
[0048] 在操作S203中,第一應用可從第二應用的apk文件獲得要與經認證的認證信息相 比較的認證信息。在此情況下,認證信息可包括可從每個應用的apk文件獲得的HMAC值。 apk文件是在客戶端裝置中安裝應用所需要的應用包文件。執行應用所需要的文件被包括 在apk文件中。可從提供應用的apk文件的服務器將apk文件下載到客戶端裝置以便安裝 應用。已下載的應用的apk文件可存儲在客戶端裝置中的/data/app文件中。客戶端裝置 可利用下載的apk文件來安裝應用。
[0049] 第一應用可利用存儲在客戶端裝置中的第二應用的apk文件和生成HMAC值所需 要的密鑰值來根據HMAC生成算法生成第二應用的HMAC值。在此情況下,該密鑰值和HMAC 生成算法與存儲在認證服務器的認證信息中并用于生成HMAC值的密鑰值和HMAC生成算法 相同。密鑰值和HMAC算法可從認證服務器發送到客戶端裝置并可用于生成HMAC值。
[0050] 在操作S205中,第一應用把從認證服務器接收的認證信息與利用第二應用的apk 文件創建的認證信息相比較。在此情況下,第一應用可以把從第二應用的apk文件獲得的 HMAC值與從認證服務器接收的認證信息中包括的HMAC值相比較。
[0051] 在操作S207中,判定HMAC值是否相同。當在操作S207中判定HMAC值不相同時, 該方法前進到操作S219。在操作S219中,第二應用未能得到認證。否則,當在操作S207 中判定HMAC值相同時,由于第二應用的apk文件與在應用市場中注冊的安全性得到驗證的 apk文件相同,所以可以認證出apk文件未被偽造或更改。在認證apk文件之后,第一應用 可繼續認證第二應用的執行文件。
[0052] 用于在客戶端裝置中執行應用的文件是通過對安卓系統中的apk文件中的 classes, dex文件進行優化而獲得的優化classes, dex文件。apk文件是用于在客戶端裝置 中安裝應用的包文件,而不是在執行應用時執行的文件。優化classes, dex文件可存儲在 客戶端裝置的緩存存儲器中,例如/data/dalvik-cache/文件夾中,并且當優化classes, dex文件被執行時,應用可被執行。從而,當優化classes, dex文件而不是apk文件被偽造 或更改時,僅通過認證apk文件是不可以認證出應用是否被偽造或更改的。
[0053] 從而,根據本實施例,為了讓第一應用準確地檢測出第二應用是否被偽造或更改, 第一應用不僅需要認證第二應用的apk文件,還需要認證第二應用的執行文件。
[0054] 在操作S209中,為了認證第二應用的執行文件,第一應用從在操作S207中認證 的第二應用的apk文件中提取classes, dex文件。在操作S211中,第一應用可提取優化 classes, dex文件,其是存儲在客戶端裝置的高速緩存存儲器中的第二應用的執行文件。 第一應用可通過對從第二應用的apk文件提取的classes, dex文件進行優化來提取優化 classes, dex文件。在操作S213中,第一應用將優化classes, dex文件與在操作S211中提 取的優化classes, dex文件相比較。
[0055] 優化classes, dex文件可包括odex頭部、dex頭部和優化dex主體。這里,每當產 生優化*. dex文件時,就可改變作為幻數的odex頭部。從而,第一應用可通過按照除odex 頭部以外的dex頭部和優化dex主體比較兩個優化classes, dex文件,來檢測第二應用的 執行文件是否被偽造或更改。
[0056] 雖然在圖2中優化classes, dex文件被用作基于安卓系統的應用的執行文件,但 本實施例不限于此,而認證方法可應用到任何其他用于執行應用的執行文件。例如,可通過 把從經認證的apk文件獲得的執行文件與存儲在高速緩存存儲器中的執行文件相比較來 認證應用的執行文件是否被偽造或更改。
[0057] 當在操作S215中判定兩個優化classes, dex文件就dex頭部和優化dex主體而 言相同時,該方法前進到操作S217。在操作S217中,第一應用可最終認證出第二應用未被 偽造或更改。否則,當在操作S215中判定兩個優化classes, dex文件不相同時,該方法前 進到操作S219。在操作S219中,第二應用被判定為被偽造或更改了并且第二應用未能得到 認證。
[0058] 圖3是示出根據本公開的實施例的在主應用和從動應用之間執行認證的方法的 流程圖。
[0059] 假定主應用調用從動應用,當從動應用被偽造或更改并且具有安全性風險時,從 動應用的動作結果值不可被信任,并且當該動作結果值被用于主應用時,會產生安全性問 題。從而,在向從動應用發送執行請求之前,需要由主應用執行的認證從動應用的過程。類 似地,假定從動應用被主應用調用并且執行所請求的動作,當主應用被偽造或更改并且具 有安全性風險時,當從動應用的動作結果值被發送到主應用時,安全性問題可產生。從而, 在將動作結果值發送給主應用之前,需要由從動應用執行的認證主應用的過程。
[0060] 例如,當主應用是銷售點(Point-0f-Sales,P0S)應用并且從動應用是讀卡器配件 應用時,移動P0S應用可向讀卡器配件應用請求關于用來進行支付的卡的信息。在此情況 下,當讀卡器配件應用被偽造或更改時,移動P0S應用可能會以不正確的卡結算信息來進 行支付。此外,當移動P0S應用被偽造或更改時,由讀卡器配件應用獲得的卡結算信息可被 該移動P0S應用泄漏。
[0061] 從而,為了解決這些問題,將描述根據本公開的實施例在主應用和從動應用之間 執行認證的方法。
[0062] 這里使用的主應用和從動應用可對應于圖1和圖2的第一應用或第二應用。例如, 當第一應用接收到來自第二應用的執行請求時,第一應用和第二應用可分別對應于從動應 用和主應用。當第一應用向第二應用發送執行請求時,第一應用和第二應用可分別對應于 主應用和從動應用。
[0063] 參考圖3,在操作S301中,執行主應用。在操作S303中,主應用可以以隱式意圖請 求從動應用的執行。
[0064] 隱式意圖是安卓系統中可使用的包括關于主應用請求執行的動作的信息的消息。 從而,安卓系統可分析從主應用發送來的隱式意圖以判定哪個應用可執行主應用請求執行 的動作,并且可在客戶端裝置上顯示應用的列表以允許用戶選擇執行該動作的應用。用戶 選擇的應用是本實施例中接收到了主應用的執行請求的從動應用。
[0065] 然而,當主應用以隱式意圖向從動應用發送執行請求時,由于所選擇的應用的識 別信息未被發送給主應用,所以主應用不可知道哪個應用是從動應用。因此,在沒有認證從 動應用的過程的情況下,主應用以隱式意圖向從動應用發送執行請求。接收到了執行請求 的從動應用認證主應用,并且將從動應用的識別信息發送給主應用。主應用可利用該識別 信息來認證從動應用,并可將執行請求重發送給從動應用。
[0066] 從而,為了讓從動應用認證主應用,主應用在發送隱式意圖時可以也將主應用的 識別信息通過安卓系統發送給從動應用。識別信息可包括關于每個應用的軟件版本和包名 稱的信息以便識別應用的認證信息和應用的apk文件。
[0067] 在操作S305中,在將主應用的識別信息發送給認證服務器時,從動應用可請求主 應用的認證信息并接收該認證信息。在此情況下,從動應用還可接收用于對認證信息進行 認證的數字簽名。認證服務器可以把關于與識別信息中包括的關于主應用的軟件版本和包 名稱的信息相對應的apk文件的認證信息與數字簽名一起發送給從動應用。認證信息可包 括要認證的每個應用的apk文件的HMAC值。
[0068] 發送給從動應用的認證信息被存儲在客戶端裝置的存儲器中并且以后可被使用。 由于該認證信息是用認證服務器的私鑰來簽名的,從而當認證服務器的私鑰未知時該認證 信息不會被偽造或更改,所以只要用認證服務器的公鑰來認證了認證信息,攜帶數字簽名 的認證信息就沒有偽造或更改的可能性。這是因為可以用認證服務器的私鑰來生成數字簽 名,并且可以用認證服務器的公鑰來對用認證服務器的私鑰生成的數字簽名進行解密。從 而,即使當應用的認證信息和數字簽名都被存儲在客戶端裝置的存儲器中并且該應用被用 于認證同一 apk文件時,安全性問題的風險也較低。
[0069] 在操作S307中,從動應用可利用主應用的認證信息來認證主應用。更具體而言, 從動應用可利用認證服務器的公鑰和以認證服務器的私鑰簽名的認證信息的數字簽名來 判定認證信息是否被偽造或更改。此外,從動應用可通過把從認證服務器接收的認證信息 與從主應用的apk文件生成的認證信息相比較來判定apk文件是否被偽造或更改。在本實 施例中,簽名認證信息指的是攜帶數字簽名的認證信息。從而,可利用認證服務器的公鑰來 判定簽名認證信息是否被偽造或更改。
[0070] 從動應用可通過把從apk文件提取的優化classes, dex文件與存儲在高速緩存存 儲器中的優化classes, dex文件相比較來判定執行文件是否被偽造或更改,從而來認證主 應用。當判定apk文件被偽造或更改時,無需判定執行文件是否被偽造或更改,即可判定主 應用未能得到認證。
[0071] 當認證了主應用未被偽造或更改時,該方法前進到操作S309。在操作S309中,從 動應用將從動應用的識別信息發送給主應用。在操作S311中,從動應用的執行結束。從動 應用的執行結束的原因是由于從動應用尚未得到認證,所以當從動應用執行主應用請求的 動作時,安全性問題可產生。
[0072] 當接收到從動應用的識別信息時,主應用認證從動應用。在操作S313中,在將從 動應用的識別信息發送給認證服務器時主應用可請求并接收從動應用的簽名認證信息。認 證服務器可向主應用發送與識別信息中包括的關于從動應用的軟件版本和包名稱的信息 相對應的apk文件的簽名認證信息。簽名認證信息可存儲在客戶端裝置的存儲器中并且可 用于認證與該apk文件相同的apk文件。
[0073] 在操作S315中,主應用可利用從動應用的認證信息來認證從動應用。更具體而 言,主應用可利用認證服務器的公鑰來判定用認證服務器的私鑰簽名的認證信息是否被偽 造或更改,并且可通過將認證信息與從從動應用的apk文件生成的認證信息相比較來判定 apk文件是否被偽造或更改。主應用可通過把從從動應用的apk文件提取的優化classes, dex文件與高速緩存存儲器中存儲的優化classes, dex文件相比較來判定執行文件是否被 偽造或更改,從而來完全認證從動應用。當判定apk文件被偽造或更改時,無需判定執行文 件是否被偽造或更改,即可判定從動應用被偽造或更改。
[0074] 在操作S317中,當判定從動應用未被偽造或更改時,主應用可以以顯式意圖請求 從動應用的執行。在此情況下,主應用也可將主應用的識別信息發送給從動應用。
[0075] 顯式意圖是安卓系統中可使用的一種消息,該消息不僅包括關于主應用請求執行 的動作的信息,而且包括關于要執行該動作的從動應用的信息。從而,主應用可向在操作 S303中選擇的從動應用請求動作。
[0076] 在此情況下,主應用還可向從動應用發送從動應用的動作所需要的值,例如支付 額信息。此外,主應用可生成作為一對的私鑰和公鑰,這對私鑰和公鑰可被一次性使用以便 安全地從從動應用接收動作結果值,并且主應用可將該公鑰發送給從動應用。從而,從動應 用可利用該公鑰對動作結果值加密,并且可將動作結果值發送給主應用。用公鑰加密的數 據可以用私鑰來解密。從而,即使當數據泄漏給外部裝置時,由于該外部裝置不可知道私鑰 并從而不可對數據解密,因此發送的數據的安全性也可得到維持。由于主應用和從動應用 使用的私鑰和公鑰是一次性使用的,所以當包括動作結果值的數據已被完全發送時,私鑰 和公鑰可被丟棄。
[0077] 在以顯式意圖執行的從動應用根據主應用的執行請求而執行動作之前,在操作 S319中,從動應用認證主應用。雖然從動應用在操作S307中已經認證了主應用,但由于在 主應用被認證之后從動應用結束,所以被以顯式意圖來重新執行的從動應用需要重新認證 主應用。
[0078] 在操作S319中,從動應用可利用主應用的認證信息來認證主應用。從動應用可 利用在操作S305中接收并存儲在客戶端裝置的存儲器中的主應用的簽名認證信息來認證 主應用。更具體而言,從動應用可利用認證服務器的公鑰和以認證服務器的私鑰加密的認 證信息的數字簽名來判定認證信息是否被偽造或更改。此外,從動應用可通過將認證信息 與從主應用的apk文件生成的認證信息相比較來判定apk文件是否被偽造或更改。從動 應用可通過把從apk文件提取的優化classes, dex文件與高速緩存存儲器中存儲的優化 classes, dex文件相比較來判定執行文件是否被偽造或更改,從而來認證主應用。當判定 apk文件被偽造或更改時,無需判定執行文件是否被偽造或更改,即可判定主應用被偽造或 更改。
[0079] 當在操作S319中判定主應用未被偽造或更改時,該方法前進到操作S321。在操作 S321中,從動應用執行主應用請求的動作。在操作S325中,從動應用將動作結果值發送給 主應用。在此情況下,可利用在公鑰交換方法中從主應用發送來的公鑰對動作結果值加密, 然后可將其發送給主應用。在操作S323中,從動應用在將動作結果值發送給主應用之后結 束執行。
[0080] 在操作S327中,從從動應用接收到了動作結果值的主應用可利用該動作結果值 來執行另一動作。例如,當動作結果值是關于要用來進行支付的卡的信息時,作為主應用的 移動P0S應用可利用該卡信息來進行支付。
[0081] 圖4是示出根據本公開的實施例的在應用之間執行認證的方法的流程圖。
[0082] 圖3的方法有如下問題:由于從動應用認證主應用兩次,所以主應用要花較長的 時間才能使用從從動應用接收的動作結果值。
[0083] 為了解決此問題,在主應用首先認證從動應用之后,主應用可向從動應用發送執 行請求。為此,客戶端裝置還可包括可將從動應用的識別信息發送給主應用的應用管理單 元。應用管理單元可獲得客戶端裝置中安裝的應用的識別信息并將從動應用的識別信息發 送給主應用。此外,應用管理單元可利用關于每個應用可執行的動作的信息來生成可執行 主應用所請求的動作的應用的列表。在圖4中,主應用和從動應用的認證可被執行一次。
[0084] 參考圖4,在操作S401中,執行主應用。在操作S403中,主應用可選擇請求執行的 從動應用。更具體而言,主應用可向應用管理單元請求可執行期望的動作的應用的列表。應 用管理單元根據該請求生成的應用的列表可被顯示在客戶端裝置中的顯示屏幕(未示出) 上,并且用戶可選擇應用。一旦選擇了應用,主應用就可從應用管理單元接收所選應用也就 是從動應用的識別信息,然后才向從動應用發送執行請求。從而,主應用可利用從動應用的 識別信息來認證從動應用,并且可以以顯式意圖向從動應用發送執行請求。
[0085] 或者,主應用可向應用管理單元請求客戶端裝置中安裝的每個應用的識別信息。 根據該請求,主應用可從應用管理單元接收客戶端裝置中安裝的應用的識別信息。主應用 可利用接收到的每個應用的識別信息來生成可執行期望動作的應用的列表。所生成的應用 的列表可被顯示在客戶端裝置中的顯示屏幕(未示出)上并且一個應用可被用戶選擇。主應 用利用從應用管理單元接收的關于每個應用的識別信息之中的從動應用的識別信息來認 證從動應用,并且可以以顯式意圖向從動應用發送執行請求。
[0086] 在操作S405中,主應用利用從動應用的識別信息從認證服務器接收簽名認證信 息。在操作S407中,主應用可認證從動應用。操作S405和S407對應于圖3的操作S303 和S305,從而將不對其給予重復說明。
[0087] 當判定從動應用未被偽造或更改時,該方法前進到操作S409。在操作S409中,主 應用可以以顯式意圖向從動應用發送執行請求。在此情況下,主應用還可將主應用的識別 信息發送給從動應用。操作S409對應于圖3的操作S317,從而將不對其給予重復說明。
[0088] 在操作S411中,在將主應用的識別信息發送給認證服務器時從動應用可請求并 接收主應用的簽名認證信息。在操作S413中,從動應用可利用主應用的認證信息來認證主 應用。操作S411和S413對應于圖3的操作S305和S307或S319,從而將不對其給予重復 說明。
[0089] 當從動應用認證了主應用未被偽造或更改時,該方法前進到操作S415。在操作 S415中,從動應用執行主應用請求的動作。在操作S415中,從動應用將動作結果值發送給 主應用。在操作S419中,從動應用在將動作結果值發送給主應用之后結束執行。在操作 S421中,從從動應用接收到了動作結果值的主應用可利用動作結果值執行另一動作。操作 S415至S421對應于圖3的操作S321至S327,從而將不對其給予重復說明。
[0090] 圖5是示出根據本公開的實施例的用于在應用之間執行認證的客戶端裝置的框 圖。
[0091] 參考圖5,安全性系統可包括認證服務器510和客戶端裝置520。
[0092] 認證服務器510可存儲認證服務器510的公鑰和用認證服務器510的私鑰加以數 字簽名的認證信息,并且可將公鑰和認證信息發送給客戶端裝置520。經數字簽名的認證信 息是通過用認證服務器510的私鑰對認證信息的哈希值加密而生成的信息,并且攜帶數字 簽名。從而,可利用認證服務器510的公鑰和數字簽名來認證經數字簽名的認證信息。認 證信息和可根據每個應用的軟件版本和包名稱來識別的apk文件可形成一對并且可被存 儲在認證服務器510中。認證信息可包括apk文件的HMAC值。
[0093] 客戶端裝置520可包括個人計算機(PC)、筆記本計算機、移動電話、平板電腦、導 航終端、智能電話、個人數字助理(PDA)、便攜式多媒體播放器(PMP)、數字廣播接收機,等 等。然而,本實施例不限于此,當前開發并常用的或者將來開發來用于通信的任何裝置都可 用作客戶端裝置520。
[0094] 客戶端裝置520可包括第一應用521、第二應用522和通信單元523。
[0095] 當接收到來自第二應用522的執行請求時,第一應用521可將包括第二應用522 的軟件版本和包名稱的識別信息發送給認證服務器510,并且可向認證服務器510請求第 二應用522的利用認證服務器510的私鑰加以簽名的認證信息。第一應用521可利用從認 證服務器510接收的認證信息來認證第二應用522,并且可根據第二應用522的執行請求來 執行動作。
[0096] 或者,在向第二應用522發送執行請求之前,第一應用521可從認證服務器510接 收第二應用522的簽名認證信息,并且可利用該認證信息來認證第二應用522。然后,第一 應用521可向第二應用522發送執行請求。當從第二應用522接收到動作結果值時,第一 應用521可利用動作結果值執行另一動作。
[0097] 通信單元523支持有線或無線通信,使得客戶端裝置520可向/從認證服務器510 發送/接收數據。
[0098] 圖6是示出根據本公開的實施例的用于在應用之間執行認證的客戶端裝置的框 圖。
[0099] 參考圖6,圖6的認證服務器610、客戶端裝置620、第一應用621、第二應用622和 通信單元623對應于圖5的認證服務器510、客戶端裝置520、第一應用521、第二應用522 和通信單元523,從而將不對其給予重復說明。
[0100] 客戶端裝置620還可包括存儲單元624、應用管理單元625和輸入/輸出單元626。
[0101] 存儲單元624可存儲從認證服務器610接收的認證服務器610的公鑰和簽名認證 信息,也就是認證信息和認證信息的數字簽名。認證信息可包括要認證的每個應用的apk 文件的HMAC值。
[0102] 用于對簽名認證信息進行認證的認證服務器610的公鑰可用于判定根據數字簽 名方法簽名的認證信息是否被偽造或更改。
[0103] 可根據每個應用的識別信息來識別認證信息,其中每個應用的識別信息包括關于 該應用的軟件版本和包名稱的信息。可以用與識別信息相對應的認證信息來認證客戶端裝 置620的應用。可將從認證服務器610發送的認證信息存儲在存儲單元624中,并且可利 用存儲在存儲單元624中的認證信息來認證每個應用。
[0104] 應用管理單元625可收集關于客戶端裝置620中的每個應用可執行的動作的動作 信息以生成可執行特定動作的應用的列表,或者可將用戶選擇的應用的識別信息發送給主 應用。
[0105] 接收到來自主應用的要求生成可執行期望動作的應用的列表的請求的應用管理 單元625可利用所收集的動作信息生成應用列表。此外,應用管理單元625可將所生成的 應用列表和應用列表中包括的應用的識別信息發送給主應用。從而,當用戶選擇要執行的 應用時,主應用可利用所選應用的識別信息來認證該應用。
[0106] 或者,不是將應用列表和應用列表中包括的應用的識別信息發送給主應用,應用 管理單元625而是可控制應用列表被顯示在客戶端裝置620中的顯示屏幕(未示出)上以便 用戶選擇要執行的應用。主應用可利用所選應用的識別信息來認證所選應用,即從動應用。
[0107] 或者,在要調用另一應用的主應用向從動應用發送執行請求之前,客戶端裝置620 的應用管理單元625可發送從動應用的識別信息。從而,主應用可利用從動應用的識別信 息來認證從動應用,并可向從動應用發送執行請求。
[0108] 在圖5中,執行了三個認證過程,因為從動應用結束,從而主應用被認證兩次。然 而,在圖6中,可將主應用和從動應用中的每一個認證一次,從而可執行兩個認證過程,因 而與圖5中相比更快速地執行了應用之間的認證。
[0109] 輸入/輸出單元626包括接收用戶的輸入的輸入單元和可輸出用戶界面和處理結 果的輸出單元。
[0110] 根據本公開的一個或多個實施例,在安全性不佳的安卓系統中,可通過從認證服 務器接收認證信息來判定另一應用是否被偽造或更改,而不必讓應用直接管理私鑰,也無 需認證機構的介入。
[0111] 此外,根據本公開的一個或多個實施例,當主應用調用從動應用時,通過主應用和 從動應用之間的認證可確保信息交換的高可靠性。
[0112] 本公開的某些方面可實現為非暫態計算機可讀記錄介質上的計算機可讀代碼。非 暫態計算機可讀記錄介質是任何可存儲以后可被計算機系統讀取的數據的數據存儲設備。 非暫態計算機可讀記錄介質的示例包括只讀存儲器(ROM)、隨機訪問存儲器(RAM)、致密盤 (CD )-R0M,磁帶、軟盤和光數據存儲設備。非暫態計算機可讀記錄介質也可分布在由網絡耦 合的計算機系統上,使得計算機可讀代碼被以分布方式來存儲和執行。此外,本公開所屬領 域的程序員可容易理解用于實現本公開的功能程序、代碼和代碼段。
[0113] 在此,應當注意,如上所述的本公開的各種實施例通常在某種程度上涉及輸入數 據的處理和輸出數據的生成。此輸入數據處理和輸出數據生成可以用硬件實現或者用軟件 與硬件結合實現。例如,在移動設備或者類似或相關的電路中可采用特定電子組件來實現 與如上所述的本公開的各種實施例相關聯的功能。或者,根據存儲的指令操作的一個或多 個處理器可實現與如上所述的本公開的各種實施例相關聯的功能。如果是這樣的話,則這 種指令可存儲在一個或多個非暫態處理器可讀介質上,這是在本公開的范圍內的。處理器 可讀介質的示例包括ROM、RAM、⑶-ROM、磁帶、軟盤和光數據存儲設備。處理器可讀介質也 可分布在由網絡耦合的計算機系統上,使得指令被以分布方式來存儲和執行。此外,本公開 所屬領域的程序員可容易理解用于實現本公開的功能計算機程序、指令和指令段。
[0114] 雖然已參考本公開的各種實施例示出和描述了本公開,但本領域技術人員應理 解,在不脫離如所附權利要求及其等同物所限定的本公開的精神和范圍的情況下,可對本 公開進行形式和細節上的各種改變。
【權利要求】
1. 一種由客戶端裝置中的第一應用執行來認證該客戶端裝置中的第二應用的方法,該 方法包括: 當所述第一應用接收到來自所述第二應用的執行請求時,向認證服務器請求所述第二 應用的認證信息; 從所述認證服務器獲得所述第二應用的認證信息;以及 由所述第一應用利用所述認證信息來認證所述第二應用, 其中,所述第二應用的認證信息用所述認證服務器的私鑰來加以簽名。
2. 如權利要求1所述的方法,其中,對所述第二應用的認證包括: 利用所述認證服務器的公鑰來認證所述第二應用的認證信息;以及 把從所述第二應用的應用包(apk)文件獲得的基于哈希的消息認證碼(HMAC)值與經 認證的認證信息中包括的HMAC值相比較。
3. 如權利要求2所述的方法,其中,對所述第二應用的認證包括:根據所述比較的結 果,從所述第二應用的apk文件以及高速緩存存儲器的每個中提取所述第二應用的執行文 件,并且把從所述第二應用的apk文件提取的執行文件與從所述高速緩存存儲器提取的執 行文件相比較。
4. 如權利要求1所述的方法,還包括: 根據對所述第二應用的認證的結果,結束所述第一應用的執行;以及 將所述第一應用的識別信息發送給所述第二應用, 其中,所述第二應用利用所述第一應用的識別信息從所述認證服務器獲得所述第一應 用的認證信息,并且 其中,當所述第二應用認證所述第一應用時,使用所獲得的認證信息。
5. 如權利要求4所述的方法,其中,在所述第二應用認證所述第一應用之后,所述方法 還包括: 當所述第一應用從所述第二應用接收執行請求時,利用所述第二應用的認證信息來認 證所述第二應用;以及 根據對所述第二應用的認證的結果,使得所述第一應用能夠執行所述第二應用所請求 的動作。
6. 如權利要求5所述的方法,其中,當所述第一應用的動作完成時,所述方法還包括結 束所述第一應用的執行,并且將所述第一應用的識別信息和動作結果值發送給所述第二應 用,其中所述第二應用利用所述第一應用的認證信息來認證所述第一應用,并且根據對所 述第一應用的認證的結果,利用所述動作結果值執行另一動作。
7. 如權利要求1所述的方法,其中,對所述認證服務器的請求包括:在所述第一應用向 所述第二應用發送執行請求之前,向所述認證服務器請求所述第二應用的認證信息。
8. -種客戶端裝置,在該客戶端裝置中第一應用認證第二應用,該裝置包括: 應用管理單元,被配置為獲得所述客戶端裝置中安裝的應用的識別信息,并將所述第 二應用的識別信息發送給所述第一應用;以及 存儲單元,被配置為存儲公鑰和簽名認證信息, 其中,所述第一應用當從所述第二應用接收執行請求時,向認證服務器請求所述第二 應用的認證信息,從所述認證服務器獲得所述第二應用的認證信息,并且利用所述認證信 息來認證所述第二應用, 其中,所述第二應用向所述第一應用發送所述執行請求,以及 其中,所述第二應用的認證信息用所述認證服務器的私鑰來加以簽名。
9. 如權利要求8所述的裝置,其中,所述第一應用利用所述認證服務器的公鑰來認證 所述第二應用的認證信息,并且把從所述第二應用的應用包(apk)文件獲得的基于哈希的 消息認證碼(HMAC)值與經認證的認證信息中包括的HMAC值相比較。
10. 如權利要求9所述的裝置,其中,所述第一應用根據所述比較的結果,從所述第二 應用的apk文件和高速緩存存儲器的每個中提取所述第二應用的執行文件,并且把從所述 第二應用的apk文件提取的執行文件與從所述高速緩存存儲器提取的執行文件相比較。
11. 如權利要求8所述的裝置,其中,所述第一應用根據對所述第二應用的認證的結 果,結束所述第一應用的執行,并且將所述第一應用的識別信息發送給所述第二應用,并且 其中,所述第二應用利用所述第一應用的識別信息從所述認證服務器獲得所述第一應用的 認證信息,并且利用所述認證信息來認證所述第一應用。
12. 如權利要求11所述的裝置,其中,在所述第二應用認證所述第一應用之后,所述第 一應用在接收到來自所述第二應用的執行請求時,利用所述第二應用的認證信息來認證所 述第二應用,并且根據所述認證的結果,執行所述第二應用所請求的動作。
13. 如權利要求12所述的裝置,其中,當所述第一應用的動作完成時,所述第一應用結 束執行,并且將所述第一應用的識別信息和動作結果值發送給所述第二應用,并且其中,所 述第二應用利用所述第一應用的認證信息來認證所述第一應用,并且根據對所述第一應用 的認證的結果,利用所述動作結果值執行另一動作。
14. 如權利要求8所述的裝置,其中,所述第一應用在向所述第二應用發送執行請求之 前向所述認證服務器請求所述第二應用的認證信息。
【文檔編號】H04L9/32GK104065641SQ201410083249
【公開日】2014年9月24日 申請日期:2014年3月7日 優先權日:2013年3月18日
【發明者】嚴泰光, 樸宣應, 徐珍茍, 梁道俊, 黃哲柱 申請人:三星電子株式會社