本發(fā)明涉及互聯(lián)網技術領域,特別涉及應用程序加載代碼簽名的方法和裝置。
背景技術:
隨著終端技術的發(fā)展,越來越多的應用程序被開發(fā)和安裝使用,在為廣大用戶提供方便的同時,也帶來了許多安全風險。為了避免用戶下載安裝到不安全的非法應用程序造成終端安全問題,終端所安裝的系統(tǒng)程序對下載到終端上的應用程序進行驗證,驗證方式是由終端的系統(tǒng)程序對下載的待安裝應用程序的代碼簽名進行校驗,以識別軟件來源以及軟件開發(fā)者的真實身份,代碼簽名通常是由終端系統(tǒng)程序的認證機構授權給應用發(fā)布方,并由應用發(fā)布方加載在應用程序中。
但是代碼簽名可能存在篡改的風險,應用發(fā)布方將他人開發(fā)的應用程序中原有的代碼簽名強制刪除,再用自己擁有的代碼簽名重新覆蓋后再進行發(fā)布,使應用程序的標識變?yōu)樽约旱臉俗R,導致應用程序歸屬不明確。更有甚者,代碼簽名被非法發(fā)布方獲得,就可能被非法發(fā)布方用來發(fā)布非法應用,對用戶終端安全造成極大的威脅。
技術實現(xiàn)要素:
本發(fā)明的主要目的為提供一種應用程序加載代碼簽名的方法和裝置,避免惡意篡改或盜用代碼簽名,提高應用程序的安全性。
本發(fā)明提出一種應用程序加載代碼簽名的方法,包括步驟:
接收請求方發(fā)送的代碼簽名請求,所述代碼簽名請求包括所述請求方的身份信息和待簽名的應用程序;
驗證所述請求方的身份信息;
在所述請求方的身份信息驗證通過后,采用認證機構授權的簽名私鑰對 所述應用程序加載代碼簽名;
在備份記錄中備份本次簽名后的所述應用程序、以及所述應用程序的本次簽名信息。
優(yōu)選地,所述采用認證機構授權的簽名私鑰對所述應用程序加載代碼簽名的步驟包括:
采用認證機構授權的簽名私鑰對所述應用程序加載代碼簽名,并根據所述應用程序的標識信息、本次簽名的時間和簽名私鑰加密所述應用程序的代碼簽名。
優(yōu)選地,所述在備份記錄中備份本次簽名后的所述應用程序、以及所述應用程序的本次簽名信息的步驟包括:
判斷所述備份記錄中是否有所述應用程序的歷史簽名信息;
如果是,則將所述備份記錄中的所述應用程序更新為本次簽名后的所述應用程序,將所述歷史簽名信息更新為所述本次簽名信息;
如果否,則根據所述應用程序的標識信息在所述備份記錄中創(chuàng)建所述應用程序的記錄,所述記錄中包括所述應用程序的標識信息和本次簽名信息,并對應于所述應用程序的記錄保存本次簽名后的所述應用程序。
優(yōu)選地,所述驗證所述請求方的身份信息的步驟之后還包括:
當所述請求方的身份信息驗證未通過時,拒絕簽名所述應用程序;
在所述備份記錄中查找所述應用程序的歷史簽名信息;
當查找到所述應用程序的歷史簽名信息時,將所述備份記錄中備份的所述應用程序的最新版本發(fā)送至所述請求方,或發(fā)送更新提示信息至所述請求方。
優(yōu)選地,所述在備份記錄中備份本次簽名后的所述應用程序、以及所述應用程序的本次簽名信息的步驟之后還包括:
接收請求方或使用方上報的所述應用程序的當前簽名信息;
比較上報的所述應用程序的當前簽名信息與所述備份記錄中備份的所述應用程序的歷史簽名信息是否一致;
當上報的當前簽名信息與備份的歷史簽名信息不一致時,將所述備份記錄中備份的所述應用程序的最新版本發(fā)送至所述請求方或使用方,或發(fā)送更新提示信息至所述請求方或使用方。
本發(fā)明還提出一種應用程序加載代碼簽名的裝置,包括:
接收模塊,用于接收請求方發(fā)送的代碼簽名請求,所述代碼簽名請求包括所述請求方的身份信息和待簽名的應用程序;
驗證模塊,用于驗證所述請求方的身份信息;
簽名模塊,用于在所述請求方的身份信息驗證通過后,采用認證機構授權的簽名私鑰對所述應用程序加載代碼簽名;
備份模塊,用于在備份記錄中備份本次簽名后的所述應用程序、以及所述應用程序的本次簽名信息。
優(yōu)選地,所述簽名模塊具體用于:
采用認證機構授權的簽名私鑰對所述應用程序加載代碼簽名,并根據所述應用程序的標識信息、本次簽名的時間和簽名私鑰加密所述應用程序的代碼簽名。
優(yōu)選地,所述備份模塊具體用于:
判斷所述備份記錄中是否有所述應用程序的歷史簽名信息;
如果是,則將所述備份記錄中的所述應用程序更新為本次簽名后的所述應用程序,將所述歷史簽名信息更新為所述本次簽名信息;
如果否,則根據所述應用程序的標識信息在所述備份記錄中創(chuàng)建所述應用程序的記錄,所述記錄中包括所述應用程序的標識信息和本次簽名信息,并對應于所述應用程序的記錄保存本次簽名后的所述應用程序。
優(yōu)選地,所述應用程序加載代碼簽名的裝置,還包括發(fā)送模塊;
所述簽名模塊還用于,當所述請求方的身份信息驗證未通過時,拒絕簽名所述應用程序;
所述備份模塊還用于,在所述備份記錄中查找所述應用程序的歷史簽名信息;
所述發(fā)送模塊,用于當查找到所述應用程序的歷史簽名信息時,將所述備份記錄中備份的所述應用程序的最新版本發(fā)送至所述請求方,或發(fā)送更新提示信息至所述請求方。
優(yōu)選地,所述應用程序加載代碼簽名的裝置,還包括比較模塊;
所述接收模塊還用于,接收請求方或使用方上報的所述應用程序的當前 簽名信息;
所述比較模塊用于,比較上報的所述應用程序的當前簽名信息與所述備份記錄中備份的所述應用程序的歷史簽名信息是否一致;
所述發(fā)送模塊還用于,當上報的當前簽名信息與備份的歷史簽名信息不一致時,將所述備份記錄中備份的所述應用程序的最新版本發(fā)送至所述請求方或使用方,或發(fā)送更新提示信息至所述請求方或使用方。
本發(fā)明認證機構授權的私鑰存放在服務器中,統(tǒng)一由服務器對需要簽名的應用程序加載代碼簽名,避免了非法用戶惡意篡改或盜用代碼簽名,防止私鑰外泄,也有利于對代碼簽名的統(tǒng)一管理,進一步提高簽名的安全性,確保應用程序安全傳播與使用。
附圖說明
圖1為本發(fā)明應用程序加載代碼簽名的方法第一實施例的流程圖;
圖2為本發(fā)明應用程序加載代碼簽名的方法第二實施例的流程圖;
圖3為本發(fā)明應用程序加載代碼簽名的方法第三實施例的流程圖;
圖4為本發(fā)明應用程序加載代碼簽名的方法第四實施例的流程圖;
圖5為本發(fā)明應用程序加載代碼簽名的方法第五實施例的流程圖;
圖6為本發(fā)明應用程序加載代碼簽名的裝置第一實施例的結構示意圖;
圖7為本發(fā)明應用程序加載代碼簽名的裝置第二實施例的結構示意圖;
圖8為本發(fā)明應用程序加載代碼簽名的裝置第三實施例的結構示意圖。
本發(fā)明目的的實現(xiàn)、功能特點及優(yōu)點將結合實施例,參照附圖做進一步說明。
具體實施方式
應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
如圖1所示,圖1為本發(fā)明應用程序加載代碼簽名的方法第一實施例的流程圖。本實施例提出的應用程序加載代碼簽名的方法,包括:
步驟S10,接收請求方發(fā)送的代碼簽名請求;
本實施例中,為了提高代碼簽名的安全性,統(tǒng)一通過服務器實現(xiàn)對需要發(fā)布的應用程序加載代碼簽名。具體的,應用程序發(fā)布者需要發(fā)布應用程序前,作為請求方向服務器發(fā)送代碼簽名請求,代碼簽名請求中包括有請求方的身份信息和待簽名的應用程序。請求方可以通過終端或第三方服務器來與本實施例中用于加載簽名的服務器聯(lián)網,并上報請求。
步驟S20,驗證請求方的身份信息;
服務器對請求方的身份進行校驗,驗證該請求方是否為合法用戶、是否具有簽名權限,即是否已被認證機構授權允許開發(fā)該待簽名的應用程序。
步驟S30,在請求方的身份信息驗證通過后,采用認證機構授權的簽名私鑰對應用程序加載代碼簽名;
在服務器完成對請求方的身份驗證后,采用簽名私鑰對應用程序加載代碼簽名。為了確保簽名的安全性,防止私鑰外泄,本實施例將認證機構授權的私鑰存放在服務器中,統(tǒng)一由服務器對需要簽名的應用程序加載代碼簽名,避免了非法用戶惡意篡改或盜用代碼簽名,也有利于對代碼簽名的統(tǒng)一管理。
步驟S40,在備份記錄中備份本次簽名后的應用程序、以及應用程序的本次簽名信息。
在完成簽名后,服務器對本次簽名的信息和簽名后的應用程序備份,備份的簽名信息包括應用程序的標識信息和簽名后的信息,必要時也可以包括簽名前的原始信息。備份的信息可以按照加載簽名的時間順序排列,或通過覆蓋更新的方式只存儲最近依次加載簽名的信息。已簽名的應用程序可以直接通過服務器發(fā)布,或由服務器下發(fā)至請求方,再由請求方自行發(fā)布。
由于本實施例中認證機構授權的私鑰存放在服務器中,統(tǒng)一由服務器對需要簽名的應用程序加載代碼簽名,避免了非法用戶惡意篡改或盜用代碼簽名,防止私鑰外泄,也有利于對代碼簽名的統(tǒng)一管理,進一步提高簽名的安全性,確保應用程序安全傳播與使用。
如圖2所示,圖2為本發(fā)明應用程序加載代碼簽名的方法第二實施例的流程圖。本實施例包括圖1所示實施例中的所有步驟,具體對步驟S30詳細說明,步驟S30包括:
步驟S31,采用認證機構授權的簽名私鑰對應用程序加載代碼簽名,并根據應用程序的標識信息、本次簽名的時間和簽名私鑰加密應用程序的代碼簽名。
為了確保簽名的唯一性,服務器在為應用程序加載代碼簽名的同時,還采用簽名私鑰對應用程序的代碼簽名加密,在代碼簽名中增加一部分加密信息,由于在加密時還添加了應用程序的標識信息和本次簽名的時間等因素,即使是同一款應用程序,在不同時間加載簽名的加密信息都不相同,有利于進一步提高簽名的安全性。
如圖3所示,圖3為本發(fā)明應用程序加載代碼簽名的方法第三實施例的流程圖。本實施例包括圖1所示實施例中的所有步驟,具體對步驟S40詳細說明,步驟S40包括:
步驟S41,判斷備份記錄中是否有應用程序的歷史簽名信息;如果是,則執(zhí)行步驟S42;如果否,則執(zhí)行步驟S43;
完成本次簽名的應用程序可能并不是首次加載簽名,如果不是首次簽名的應用程序,則在該應用程序前一次加載簽名時已經在服務器中有過備份,那么在服務器的備份記錄就可以找到該應用程序前一次加載簽名時的備份文件。
步驟S42,將備份記錄中的應用程序更新為本次簽名后的應用程序,將歷史簽名信息更新為本次簽名信息;
在找到前一次的備份記錄后,通過覆蓋更新的方式,將備份記錄中的應用程序和簽名信息均更新為本次簽名的內容。采用覆蓋更新的方式有利于節(jié)約服務器的存儲空間。
步驟S43,根據應用程序的標識信息在備份記錄中創(chuàng)建應用程序的記錄,記錄中包括應用程序的標識信息和本次簽名信息,并對應于應用程序的記錄保存本次簽名后的應用程序。
如果本次完成簽名加載的應用程序是首次加載簽名,則在服務器的備份記錄中沒有該應用程序的相關信息,可以在備份記錄中創(chuàng)建一個新的記錄,用于記錄本次簽名后的應用程序的標識信息、簽名信息和簽名后的應用程序。在下一次對該應用程序加載新的代碼簽名后,可通過該應用程序的標識信息 查找到該應用程序的記錄,并更新相應的簽名信息和應用程序。本實施例通過備份簽名記錄,對已簽名的應用程序和應用程序的代碼簽名統(tǒng)一管理,提高了應用程序的安全性。
如圖4所示,圖4為本發(fā)明應用程序加載代碼簽名的方法第四實施例的流程圖。本實施例包括圖1所示實施例中的所有步驟,還增加了對身份驗證不通過的請求方的處理流程,具體是在步驟S20之后還包括:
步驟S51,當請求方的身份信息驗證未通過時,拒絕簽名應用程序;
本實施例在驗證請求方身份時,對于沒有簽名權限的請求方拒絕簽名此次上傳的應用程序,則該應用程序由于無法加載代碼簽名而不能發(fā)布,即使發(fā)布了,由于在使用方終端的系統(tǒng)程序無法通過簽名校驗,不能被系統(tǒng)程序識別,進而不能在系統(tǒng)上正常運行,避免了非法應用程序對終端系統(tǒng)的危害。
步驟S52,在備份記錄中查找應用程序的歷史簽名信息;
步驟S53,當查找到應用程序的歷史簽名信息時,將備份記錄中備份的應用程序的最新版本發(fā)送至請求方,或發(fā)送更新提示信息至請求方。
為進一步提高應用程序安全性,服務器還可以在備份記錄中查找與請求方上傳的應用程序相同或近似的應用程序,并將已備份的應用程序下發(fā)給請求方,由于已備份的應用程序是已加載代碼簽名的應用程序,且是安全的應用程序,請求方可將請求方終端或第三方服務器上的應用程序及時更新為服務器發(fā)送的應用程序,提高應用程序使用的安全性。當然,服務器也可以只向請求方發(fā)送提示信息,由請求方自行選擇是否下載和安裝服務器備份的應用程序。
如圖5所示,圖5為本發(fā)明應用程序加載代碼簽名的方法第五實施例的流程圖。本實施例包括圖1所示實施例中的所有步驟,還增加了對上報的應用程序一致性驗證的處理流程,具體是在步驟S40之后還包括:
步驟S61,接收請求方或使用方上報的應用程序的當前簽名信息;
為了進一步提高安全應用程序的使用,在各應用程序中可預先設置一個上報程序,一旦請求方或使用方的終端連接互聯(lián)網,即觸發(fā)該上報程序,并由請求方或使用方的終端向服務器上報該終端上安裝的應用程序的簽名信 息。
步驟S62,比較上報的應用程序的當前簽名信息與備份記錄中備份的應用程序的歷史簽名信息是否一致;
步驟S63,當上報的當前簽名信息與備份的歷史簽名信息不一致時,將備份記錄中備份的應用程序的最新版本發(fā)送至請求方或使用方,或發(fā)送更新提示信息至請求方或使用方。
服務器在接收到上報的簽名信息后,將其與備份的簽名信息進行比較,判斷是否一致,如果一致,則說明該應用程序的簽名未被篡改,應用程序是安全的,如果不一致,則該應用程序可能存在簽名被篡改的風險,或該應用程序不是當前發(fā)布的最新版本,有必要將終端中的應用程序更新。服務器可向請求方或使用方的終端發(fā)送備份記錄中的最新版本的應用程序,或提示用戶安裝該最新版本,確保了應用程序使用的安全性。
如圖6所示,圖6為本發(fā)明應用程序加載代碼簽名的裝置第一實施例的結構示意圖。本實施例提出的應用程序加載代碼簽名的裝置,設置在服務器上,包括:
接收模塊10,用于接收請求方發(fā)送的代碼簽名請求,代碼簽名請求中包括有請求方的身份信息和待簽名的應用程序;
驗證模塊20,用于驗證請求方的身份信息;
簽名模塊30,用于在請求方的身份信息驗證通過后,采用認證機構授權的簽名私鑰對應用程序加載代碼簽名;
備份模塊40,用于在備份記錄中備份本次簽名后的應用程序、以及應用程序的本次簽名信息。
本實施例中,為了提高代碼簽名的安全性,統(tǒng)一通過服務器實現(xiàn)對需要發(fā)布的應用程序加載代碼簽名。具體的,應用程序發(fā)布者需要發(fā)布應用程序前,作為請求方向服務器發(fā)送代碼簽名請求,代碼簽名請求中包括有請求方的身份信息和待簽名的應用程序。請求方可以通過終端或第三方服務器來與本實施例中用于加載簽名的服務器聯(lián)網,并上報請求。服務器對請求方的身份進行校驗,驗證該請求方是否為合法用戶、是否具有簽名權限,即是否已被認證機構授權允許開發(fā)該待簽名的應用程序。
在服務器完成對請求方的身份驗證后,采用簽名私鑰對應用程序加載代碼簽名。為了確保簽名的安全性,防止私鑰外泄,本實施例將認證機構授權的私鑰存放在服務器中,統(tǒng)一由服務器對需要簽名的應用程序加載代碼簽名,避免了非法用戶惡意篡改或盜用代碼簽名,也有利于對代碼簽名的統(tǒng)一管理。
在完成簽名后,服務器對本次簽名的信息和簽名后的應用程序備份,備份的簽名信息包括應用程序的標識信息和簽名后的信息,必要時也可以包括簽名前的原始信息。備份的信息可以按照加載簽名的時間順序排列,或通過覆蓋更新的方式只存儲最近依次加載簽名的信息。已簽名的應用程序可以直接通過服務器發(fā)布,或由服務器下發(fā)至請求方,再由請求方自行發(fā)布。
由于本實施例中認證機構授權的私鑰存放在服務器中,統(tǒng)一由服務器對需要簽名的應用程序加載代碼簽名,避免了非法用戶惡意篡改或盜用代碼簽名,防止私鑰外泄,也有利于對代碼簽名的統(tǒng)一管理,進一步提高簽名的安全性,確保應用程序安全傳播與使用。
進一步的,簽名模塊30具體用于:
采用認證機構授權的簽名私鑰對應用程序加載代碼簽名,并根據應用程序的標識信息、本次簽名的時間和簽名私鑰加密應用程序的代碼簽名。
為了確保簽名的唯一性,服務器在為應用程序加載代碼簽名的同時,還采用簽名私鑰對應用程序的代碼簽名加密,在代碼簽名中增加一部分加密信息,由于在加密時還添加了應用程序的標識信息和本次簽名的時間等因素,即使是同一款應用程序,在不同時間加載簽名的加密信息都不相同,有利于進一步提高簽名的安全性。
進一步的,備份模塊40具體用于:
判斷備份記錄中是否有應用程序的歷史簽名信息;
如果是,則將備份記錄中的應用程序更新為本次簽名后的應用程序,將歷史簽名信息更新為本次簽名信息;
如果否,則根據應用程序的標識信息在備份記錄中創(chuàng)建應用程序的記錄,記錄中包括應用程序的標識信息和本次簽名信息,并對應于應用程序的記錄保存本次簽名后的應用程序。
完成本次簽名的應用程序可能并不是首次加載簽名,如果不是首次簽名的應用程序,則在該應用程序前一次加載簽名時已經在服務器中有過備份,那么在服務器的備份記錄就可以找到該應用程序前一次加載簽名時的備份文件。在找到前一次的備份記錄后,通過覆蓋更新的方式,將備份記錄中的應用程序和簽名信息均更新為本次簽名的內容。采用覆蓋更新的方式有利于節(jié)約服務器的存儲空間。
如果本次完成簽名加載的應用程序是首次加載簽名,則在服務器的備份記錄中沒有該應用程序的相關信息,可以在備份記錄中創(chuàng)建一個新的記錄,用于記錄本次簽名后的應用程序的標識信息、簽名信息和簽名后的應用程序。在下一次對該應用程序加載新的代碼簽名后,可通過該應用程序的標識信息查找到該應用程序的記錄,并更新相應的簽名信息和應用程序。本實施例通過備份簽名記錄,對已簽名的應用程序和應用程序的代碼簽名統(tǒng)一管理,提高了應用程序的安全性。
如圖7所示,圖7為本發(fā)明應用程序加載代碼簽名的裝置第二實施例的結構示意圖。本實施例包括圖6所示實施例中的所有模塊,為了實現(xiàn)對身份驗證不通過的請求方的處理,還增加了發(fā)送模塊50,具體如下:
簽名模塊30還用于,當請求方的身份信息驗證未通過時,拒絕簽名應用程序;
備份模塊40還用于,在備份記錄中查找應用程序的歷史簽名信息;
發(fā)送模塊50,用于當查找到應用程序的歷史簽名信息時,將備份記錄中備份的應用程序的最新版本發(fā)送至請求方,或發(fā)送更新提示信息至請求方。
本實施例在驗證請求方身份時,對于沒有簽名權限的請求方拒絕簽名此次上傳的應用程序,則該應用程序由于無法加載代碼簽名而不能發(fā)布,即使發(fā)布了,由于在使用方終端的系統(tǒng)程序無法通過簽名校驗,不能被系統(tǒng)程序識別,進而不能在系統(tǒng)上正常運行,避免了非法應用程序對終端系統(tǒng)的危害。
為進一步提高應用程序安全性,服務器還可以在備份記錄中查找與請求方上傳的應用程序相同或近似的應用程序,并將已備份的應用程序下發(fā)給請求方,由于已備份的應用程序是已加載代碼簽名的應用程序,且是安全的應用程序,請求方可將請求方終端或第三方服務器上的應用程序及時更新為服 務器發(fā)送的應用程序,提高應用程序使用的安全性。當然,服務器也可以只向請求方發(fā)送提示信息,由請求方自行選擇是否下載和安裝服務器備份的應用程序。
如圖8所示,圖8為本發(fā)明應用程序加載代碼簽名的裝置第三實施例的結構示意圖。本實施例包括圖6所示實施例中的所有模塊,為了實現(xiàn)對上報的應用程序一致性驗證的處理,還增加了比較模塊60,具體如下:
接收模塊10還用于,接收請求方或使用方上報的應用程序的當前簽名信息;
比較模塊60用于,比較上報的應用程序的當前簽名信息與備份記錄中備份的應用程序的歷史簽名信息是否一致;
發(fā)送模塊50還用于,當上報的當前簽名信息與備份的歷史簽名信息不一致時,將備份記錄中備份的應用程序的最新版本發(fā)送至請求方或使用方,或發(fā)送更新提示信息至請求方或使用方。
為了進一步提高安全應用程序的使用,在各應用程序中可預先設置一個上報程序,一旦請求方或使用方的終端連接互聯(lián)網,即觸發(fā)該上報程序,并由請求方或使用方的終端向服務器上報該終端上安裝的應用程序的簽名信息。
服務器在接收到上報的簽名信息后,將其與備份的簽名信息進行比較,判斷是否一致,如果一致,則說明該應用程序的簽名未被篡改,應用程序是安全的,如果不一致,則該應用程序可能存在簽名被篡改的風險,或該應用程序不是當前發(fā)布的最新版本,有必要將終端中的應用程序更新。服務器可向請求方或使用方的終端發(fā)送備份記錄中的最新版本的應用程序,或提示用戶安裝該最新版本,確保了應用程序使用的安全性。
以上所述僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內容所作的等效結構或等效流程變換,或直接或間接運用在其他相關的技術領域,均同理包括在本發(fā)明的專利保護范圍內。