一種密鑰管理方法及裝置制造方法
【專利摘要】本發明實施例涉及信息安全領域,公開了一種密鑰管理方法及裝置,該方法包括:安全代理檢測共享內存中是否有密鑰更新,所述密鑰更新包括對密鑰進行寫操作或散列運算;所述安全代理若檢測到所述密鑰更新,則對所述共享內存中的密鑰進行加鎖;所述安全代理判斷所述密鑰更新是否完成,若是,則對所述共享內存中的密鑰進行解鎖。本發明實施例只在密鑰更新期間對共享內存中的密鑰進行加鎖操作,提高了密碼運算時獲取密鑰的效率。
【專利說明】一種密鑰管理方法及裝置
【技術領域】
[0001]本發明涉及信息安全領域,具體涉及一種密鑰管理方法及裝置。
【背景技術】
[0002]安全代理是一種提供密鑰管理的安全中間件,能夠對共享內存中的密鑰進行讀寫操作。安全插件是一種提供密碼運算服務的安全中間件,能在提供密碼運算服務時對共享內存中的密鑰進行讀取操作。現有密鑰管理方法中,安全代理與安全插件對密鑰的操作很容易產生沖突,例如,安全代理在進行密鑰更新并還未完成更新時,安全插件執行獲取密鑰以提供密碼運算服務的操作,此時獲取的密鑰為更新之前的密鑰,而由于各設備的交互具有時延性,可能會出現在執行密碼運算時密鑰已經更新完成,因此,安全代理會對共享內存進行長期加鎖。在共享內存被加鎖的期間內,即密鑰的整個生命周期內,安全代理對密鑰進行讀寫操作和安全插件在提供密碼運算服務時獲取密鑰的操作都只能串行的進行,但這樣會降低密碼運算時獲取密鑰的效率。
【發明內容】
[0003]本發明實施例提供一種密鑰管理方法及裝置,能夠大大提高密碼運算時獲取密鑰的效率。
[0004]本發明第一方面提供了一種密鑰管理方法,所述方法包括:
[0005]安全代理檢測共享內存中是否有密鑰更新,所述密鑰更新包括對密鑰進行寫操作或散列運算;
[0006]所述安全代理若檢測到所述密鑰更新,則對所述共享內存中的密鑰進行加鎖;
[0007]所述安全代理判斷所述密鑰更新是否完成,若是,則對所述共享內存中的密鑰進行解鎖。
[0008]相應的,本發明第二方面提供了一種密鑰管理裝置,所述裝置包括:
[0009]檢測單元,用于檢測共享內存中是否有密鑰更新,所述密鑰更新包括對密鑰進行寫操作或散列運算;
[0010]加鎖單元,用于當所述檢測單元的檢測結果為是時,對所述共享內存中的密鑰進行加鎖;
[0011]判斷單元,用于判斷所述密鑰更新是否完成;
[0012]解鎖單元,用于當所述判斷單元的判斷結果為是時,對所述共享內存中的密鑰進行解鎖。
[0013]實施本發明實施例,具有如下有益效果:
[0014]安全代理檢測共享內存中是否有密鑰更新,若檢測到密鑰更新,則對共享內存中的密鑰進行加鎖操作,在加鎖期間,安全代理判斷密鑰更新是否完成,若是,則對共享內存中的密鑰進行解鎖操作。通過本發明實施例,安全代理只在密鑰更新期間對共享內存中的密鑰進行加鎖操作,密鑰更新結束就會進行解鎖操作,這樣在密鑰非更新期間內,讀取密鑰的操作就可以并行的進行,進而大大提高了密碼運算時獲取密鑰的效率。
【專利附圖】
【附圖說明】
[0015]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0016]圖1是本發明實施例提供的一種密鑰管理方法的流程示意圖;
[0017]圖2是本發明實施例提供的另一種密鑰管理方法的流程示意圖;
[0018]圖3是本發明實施例提供的一種密鑰管理裝置的結構示意圖;
[0019]圖4是本發明實施例提供的另一種密鑰管理裝置的結構示意圖。
【具體實施方式】
[0020]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0021〕 本發明實施例中,安全代理主要負責密鑰管理,如啟用、注銷、狀密鑰協商、檢查配置文件、加載持久化文件、創建共享文件和創建子進程等,為管理中心與密碼運算中心提供服務。其中,共享文件是指在多處理器的計算機系統中,可以被不同中央處理器?1~00688 0?^訪問的大容量內存,在本發明實施例中主要用于存儲密鑰的相關信息。
[0022]下面將結合圖1?圖2,對本發明實施例提供的密鑰管理方法進行詳細的介紹。
[0023]請參閱圖1,圖1是本發明實施例提供的一種密鑰管理方法的流程示意圖。如圖1所示,該密鑰管理方法可以包括以下步驟:
[0024]3101,安全代理檢測共享內存中是否有密鑰更新,若是,執行步驟3102 ;若否,繼續執行步驟3101。
[0025]具體的,安全代理檢測共享內存中是否有密鑰更新的操作可以周期性地進行,該周期可以為2分鐘、3分鐘、5分鐘或者8分鐘等,該周期的具體時間本發明實施例不作限定。密鑰更新可以包括但不限于對密鑰進行寫操作或散列運算,其中,對密鑰進行寫操作可以包括對密鑰進行增量下載、生命周期管理、強制密鑰協商、密鑰按需下載、分散密鑰協商、集群內密鑰同步、分散密鑰預啟用同步或者分散密鑰注銷等。對密鑰進行寫操作在安全代理上進行,主要在安全代理生成的廿1狀虹和廿冊8進程里進行。對密鑰進行散列運算就是指把任意長度的輸入通過散列算法,變換成固定長度的輸出,該輸出就是散列值,這樣安全代理只需存儲散列值就可以確定密鑰。
[0026]可選的,密鑰更新也可以在安全代理預先設定好的一定時間段內進行,在此期間,安全代理或者安全插件不對密鑰進行讀取操作。其中,設定密鑰更新的時間段可以為凌晨00:00?01:00的一個小時或者凌晨00:00?02:00的兩個小時,也可以為凌晨01:00?02:00的一個小時等,該時間段可以根據實際需要來進行設置,以對用戶的影響較小為前提,具體時間段本發明實施例不作限定。
[0027]3102,安全代理對共享內存中的密鑰進行加鎖。
[0028]具體的,共享內存主要負責保存密鑰的相關信息,但其中還保存有安全代理的運行狀態、配置信息等,所以安全代理的加鎖操作只針對共享內存中的密鑰,而共享內存中的其他信息不受加鎖操作的影響,可以隨時被讀取。安全代理只要檢測到存在對密鑰進行寫操作或者散列運算時,就立刻執行對共享內存中的密鑰加鎖的操作。在密鑰加鎖期間內,只能是安全代理對密鑰進行寫操作,并且安全代理也只能串行的進行相應的操作。同時,如果存在安全代理或者安全插件對密鑰進行讀操作請求時,該請求只能在密鑰更新完成并對密鑰進行解鎖之后執行。如果安全代理沒有檢測到密鑰更新,則其繼續處于檢測密鑰更新的狀態。
[0029]可選的,由于安全代理可以在預先設定好的時間段內進行密鑰更新,所以安全代理對共享內存中的密鑰進行加鎖的操作可以在該時間段的基礎上提前一定的時間。安全代理可以設定2秒或者5秒等,具體時間本發明實施例不作限定。提前進行加鎖能夠實現對密鑰讀取的操作影響最小,進而保證了密鑰讀取的正確性與完整性。
[0030]8103,安全代理判斷密鑰更新是否完成,若是,執行步驟3104 ;若否,繼續執行步驟 3103。
[0031]具體的,安全代理的判斷可以周期性的進行,該周期可以為安全代理預先設定的一個時間長度,可以為3分鐘、5分鐘或者10分鐘等,該周期的具體時間長度本發明實施例不作限定。
[0032]8104,安全代理對共享內存中的密鑰進行解鎖。
[0033]具體的,安全代理當判斷密鑰更新完成時,就會對共享內存中的密鑰執行解鎖的操作,解鎖之后,安全代理不再對密鑰進行寫操作,安全代理或者安全插件對共享內存中密鑰的讀取不再進行加鎖,并且讀取操作可以同時進行,各操作之間不相互影響。當然,在安全代理判斷密鑰更新的操作未完成時,會繼續對密鑰進行加鎖直至密鑰更新完成為止。
[0034]可選的,由于安全代理可以在預先設定好的時間段內進行密鑰更新,所以安全代理對共享內存中的密鑰進行解鎖的操作也可以在該時間段的基礎上延后一定的時間。安全代理可以設定2秒或者5秒等,該解鎖操作延后的時間本發明不作具體限定。延長對密鑰的加鎖時間能夠實現對密鑰的更新操作影響最小,進而保證了密鑰寫入的正確性與完整性。
[0035]本發明實施例通過檢測有密鑰更新時,對共享內存中的密鑰采用加鎖機制,并在密鑰更新結束之后對其進行解鎖,大大的提高了在非密鑰更新期間安全插件獲取密鑰的效率,而在密鑰更新期間只執行更新操作,減少了各操作之間的沖突。
[0036]請參閱圖2,圖2是本發明實施例提供的另一種密鑰管理方法的流程示意圖。如圖2所示,該密鑰管理方法可以包括以下步驟:
[0037]3201,安全代理連接共享內存。
[0038]具體的,安全代理在啟動的時候,首先會連接共享內存,以方便安全代理后續的訪問共享內存或者對共享內存中的密鑰進行操作。通過連接共享內存節省了安全代理訪問共享內存的時間,提高了安全代理的工作效率。
[0039]3202,安全代理查詢共享內存是否連接成功,若是,執行步驟3204 ;若否,執行步驟 3203。
[0040]3203,安全代理創建新的共享內存。
[0041]具體的,當安全代理查詢到共享內存連接失敗時,就需要創建一個新的共享內存為安全代理提供后續服務。
[0042]3204,安全代理創建子進程。
[0043]具體的,在安全代理連接共享內存成功后,會根據需要創建子進程。該子進程可以包括輪詢進程廿1狀61'、消息處理進程或者80461:處理進程丨以仙。其中,廿1狀61~進程主要負責自動觸發時間,安全代理每次輪詢時會根據共享內存中的內容來主動觸發各種業務;廿18陰!'進程可執行的業務可以包括:集群內同步簽到簽退信息、集群內同步分散方式節點間策略、節點狀態輪詢、增量信息下載、對端公鑰證書下載、狀密鑰協商、緊急協商處理、種子協商、種子校驗、集群內同步種子、分散方式通知對端同步、種子預啟用、種子預啟用通知、種子啟用、種子啟用通知、工作密鑰更新、工作密鑰更新通知、種子過期、種子過期通知、種子注銷、種子注銷通知、種子刪除、共享內存持久化、重新計算輪詢時間等。進程主要用于監聽消息隊列并處理,目前可處理的請求有:強制協商、種子校驗、種子下載、按需下載、860叩1版本號或用戶名上傳等。1:1^118進程主要用于監聽80461:并處理。其中,
進程與4冊1進程為必須創建的子進程,而進程則需要在安全代理的協商方式為分散方式的情況下才建立。
[0044]8205,安全代理調用廿丨狀一!"進程檢測廿丨狀一!"進程、進程或者丨以仙進程中任一進程是否有對密鑰進行寫操作,若是,執行步驟3206 ;若否,繼續執行步驟3205。
[0045]具體的,對密鑰進行寫操作主要在1:1*18861和1^21118進程里執行,而(1631進程則在有需要的時候才對密鑰進行寫操作。其中,廿磯8進程對密鑰可執行的業務主要有:分散密鑰協商、集群內密鑰同步、分散密鑰預啟用同步與分散密鑰注銷360進程對密鑰可執行的業務主要有強制密鑰協商與密鑰按需下載。檢測共享內存中是否有密鑰更新的操作是安全代理通過調用1:1*18861進程來執行,主要也是在1:1*18861進程里執行。
[0046]3206,安全代理調用廿匕陰!'進程對共享內存中的密鑰進行加鎖。
[0047]具體的,共享內存主要負責保存密鑰的相關信息,但其中還保存有安全代理的運行狀態、配置信息等,所以安全代理的加鎖操作只針對共享內存中的密鑰,而共享內存中的其他信息不受加鎖操作的影響,可以隨時被讀取。安全代理只要檢測到存在對密鑰進行寫操作或者散列運算時,就立刻執行對共享內存中的密鑰加鎖的操作。在密鑰加鎖期間內,只能是安全代理對密鑰進行寫操作,并且安全代理也只能串行的進行相應的操作。同時,如果存在安全代理或者安全插件對密鑰進行讀操作請求時,該請求只能在密鑰更新完成并對密鑰進行解鎖之后執行。如果安全代理沒有檢測到密鑰更新,則其繼續處于檢測密鑰更新的狀態。
[0048]可選的,由于安全代理可以在預先設定好的時間段內進行密鑰更新,所以安全代理對共享內存中的密鑰進行加鎖的操作可以在該時間段的基礎上提前一定的時間。安全代理可以設定2秒或者5秒等,具體時間本發明實施例不作限定。提前進行加鎖能夠實現對密鑰讀取的操作影響最小,進而保證了密鑰讀取的正確性與完整性。
[0049]3207,安全代理判斷密鑰更新是否完成,若是,執行步驟3208和步驟3209 ;若否,繼續執行步驟3207。
[0050]具體的,安全代理的判斷可以周期性的進行,該周期可以為安全代理預先設定的一個時間長度,可以為3分鐘、5分鐘或者10分鐘等,該周期的具體時間長度本發明實施例不作限定。
[0051]3208,安全代理調用廿1狀61~進程向管理中心發送密鑰更新的數據。
[0052]具體的,安全代理向管理中心發送密鑰更新的數據具體通過調用廿1狀進程進行,其目的是:將密鑰更新之后的數據在管理中心備份;向管理中心通知有密鑰更新的操作并且已經完成。
[0053]8209,安全代理調用廿丨狀虹進程對共享內存中的密鑰進行解鎖。
[0054]具體的,安全代理當判斷密鑰更新過程完成之后,就會對共享內存中的密鑰執行解鎖的操作,解鎖之后,安全代理不再對密鑰進行寫操作,安全代理或者安全插件對共享內存中密鑰的讀取不再進行加鎖,并且讀取操作可以同時進行,各操作之間不相互影響。當然,在安全代理判斷密鑰更新的操作未完成時,會繼續對密鑰進行加鎖直至密鑰更新完成為止。
[0055]可選的,由于安全代理可以在預先設定好的時間段內進行密鑰更新,所以安全代理對共享內存中的密鑰進行解鎖的操作也可以在該時間段的基礎上延后一定的時間。安全代理可以設定2秒或者5秒等,該解鎖操作延后的時間本發明不作具體限定。延長對密鑰的加鎖時間能夠實現對密鑰的更新操作影響最小,進而保證了密鑰寫入的正確性與完整性。
[0056]8210,安全代理檢測子進程是否意外退出,若是,則觸發執行步驟3204 ;若否,繼續執行步驟3210。
[0057]具體的,在安全代理的整個工作時間內,對子進程的檢測是創建好子進程之后就一直進行的,本步驟可以在步驟3204之后執行,也可以在3204以后的任意一個步驟之后執行,其具體位置本發明實施例不作限定。在子進程意外退出時,安全代理會立刻觸發創建新的子進程,以重新執行步驟3204以后的步驟,從而不影響安全代理的工作。子進程意外退出有多種情況,例如,當某一個子進程在某一個時間點承載的業務量較大,該子進程因無法再如此高負荷下繼續工作而退出;又如,安全代理的某個部件出現故障,而該部件是決定其中的一個子進程是否正常工作的關鍵,因此當該部件出現故障時會立刻導致其對應的子進程退出,當然,即使該部件為決定其中的一個子進程是否正常工作的關鍵,安全代理會立刻調用備用部件并及時創建新的子進程以繼續工作。
[0058]下面將結合圖3?圖4,對本發明實施例提供的密鑰管理裝置進行詳細的介紹。
[0059]請參閱圖3,圖3是本發明實施例提供的一種密鑰管理裝置的結構示意圖。如圖3所示,該密鑰管理裝置可以包括以下單元:
[0060]檢測單元301,用于檢測共享內存中是否有密鑰更新,該密鑰更新包括對密鑰進行寫操作或散列運算。
[0061]具體的,檢測單元301檢測共享內存中是否有密鑰更新的操作可以周期性地進行,該周期可以為2分鐘、3分鐘、5分鐘或者8分鐘等,該周期的具體時間本發明實施例不作限定。安全代理對密鑰進行寫操作可以包括但不限于對密鑰進行增量下載、生命周期管理、強制密鑰協商、密鑰按需下載、分散密鑰協商、集群內密鑰同步、分散密鑰預啟用同步或者分散密鑰注銷等。對密鑰進行寫操作在安全代理上進行,主要在安全代理生成的廿1狀61和廿磯8進程里進行。對密鑰進行散列運算就是指把任意長度的輸入通過散列算法,變換成固定長度的輸出,該輸出就是散列值,這樣安全代理只需存儲散列值就可以確定密鑰。
[0062]可選的,密鑰更新也可以在安全代理預先設定好的一定時間段內進行,在此期間,安全代理或者安全插件不對密鑰進行讀取操作。其中,設定密鑰更新的時間段可以為凌晨00:00?01:00的一個小時或者凌晨00:00?02:00的兩個小時,也可以為凌晨01:00?02:00的一個小時等,該時間段可以根據需要來進行設置,以對用戶的影響較小為前提,具體時間段本發明實施例不作限定。
[0063]加鎖單元302,用于當檢測單元301的檢測結果為是時,對共享內存中的密鑰進行加鎖。
[0064]具體的,共享內存的主要工作是保存密鑰的信息,但其中還保存有安全代理的運行狀態、配置信息等,所以加鎖單元302的加鎖操作只針對共享內存中的密鑰,而共享內存中的其他信息不受加鎖操作的影響,可以隨時被讀取。檢測單元301只要檢測到存在對密鑰進行寫操作或者散列運算時,加鎖單元30 2就立刻執行對共享內存中的密鑰加鎖的操作。在密鑰加鎖期間內,只能是安全代理對密鑰進行寫操作,并且安全代理也只能串行的進行相應的操作。同時,如果存在安全代理或者安全插件對密鑰進行讀操作請求時,該請求只能在密鑰更新完成并對密鑰進行解鎖之后執行。如果檢測單元301沒有檢測到密鑰更新,則其繼續處于檢測密鑰更新的狀態。
[0065]可選的,由于安全代理可以在預先設定好的時間段內進行密鑰更新,所以加鎖單元302對共享內存中的密鑰進行加鎖的操作可以在該時間段的基礎上提前一定的時間。安全代理可以設定2秒或者5秒等,具體時間本發明實施例不作限定。提前進行加鎖能夠實現對密鑰讀取的操作影響最小,進而保證了密鑰讀取的正確性與完整性。
[0066]判斷單元303,用于判斷密鑰更新是否完成。
[0067]具體的,判斷單元303的判斷可以周期性的進行,該周期可以為安全代理預先設定的一個時間長度,可以為3分鐘、5分鐘或者10分鐘等,該周期的具體時間長度本發明實施例不作限定。
[0068]解鎖單元304,用于當判斷單元303的判斷結果為是時,對共享內存中的密鑰進行解鎖。
[0069]具體的,判斷單元303當判斷密鑰更新完成時,解鎖單元304就會對共享內存中的密鑰執行解鎖的操作,解鎖之后,安全代理不再對密鑰進行寫操作,安全代理或者安全插件對共享內存中密鑰的讀取不再進行加鎖,并且讀取操作可以同時進行,各操作之間不相互影響。當然,在判斷單元303判斷密鑰更新的操作未完成時,加鎖單元302會繼續對密鑰進行加鎖直至密鑰更新完成為止。
[0070]可選的,由于安全代理可以在預先設定好的時間段內進行密鑰更新,所以解鎖單元304對共享內存中的密鑰進行解鎖的操作也可以在該時間段的基礎上延后一定的時間。安全代理可以設定2秒或者5秒等,該解鎖操作延后的時間本發明不作具體限定。延長對密鑰的加鎖時間能夠實現對密鑰的更新操作影響最小,進而保證了密鑰寫入的正確性與完整性。
[0071]本發明實施例通過檢測有密鑰更新時,對共享內存中的密鑰采用加鎖機制,并在密鑰更新結束之后對其進行解鎖,大大的提高了在非密鑰更新期間安全插件獲取密鑰的效率,而在密鑰更新期間只執行更新操作,減少了各操作之間的沖突。
[0072]請參閱圖4,圖4是本發明實施例提供的另一種密鑰管理裝置的結構示意圖。如圖4所示,該密鑰管理裝置可以包括以下單元:
[0073]連接單元401,用于連接共享內存。
[0074]具體的,安全代理在啟動的時候,首先連接單元401連接共享內存,以方便安全代理后續的訪問共享內存或者對共享內存中的密鑰進行操作。通過連接共享內存節省了安全代理訪問共享內存的時間,提高了安全代理的工作效率。
[0075]查詢單元402,用于查詢共享內存是否連接成功。
[0076]新建單元403,用于當查詢單元402的查詢結果為否時,創建新的共享內存。
[0077]具體的,當查詢單元402查詢連接共享內存失敗時,就需要新建單元403創建一個新的共享內存為安全代理提供后續服務。
[0078]檢測單元404,用于創建子進程,并調用廿陰!'檢測共享內存中是否有密鑰更新。
[0079]具體的,子進程可以包括輪詢進程廿1狀61'、消息處理進程4冊1或者804的處理進程1:1^118。進程主要負責自動觸發時間,安全代理每次輪詢時會根據共享內存中的內容來主動觸發各種業務;廿1狀61~進程可執行的業務可以包括:集群內同步簽到簽退信息、集群內同步分散方式節點間策略、節點狀態輪詢、增量信息下載、對端公鑰證書下載、八X密鑰協商、緊急協商處理、種子協商、種子校驗、集群內同步種子、分散方式通知對端同步、種子預啟用、種子預啟用通知、種子啟用、種子啟用通知、工作密鑰更新、工作密鑰更新通知、種子過期、種子過期通知、種子注銷、種子注銷通知、種子刪除、共享內存持久化、重新計算輪詢時間等。如31進程主要用于監聽消息隊列并處理,目前可處理的請求有:強制協商、種子校驗、種子下載、按需下載、此⑶#版本號或用戶名上傳等。廿冊8進程主要用于監聽80461:并處理。其中,進程與進程的為必須創建的子進程,而丨以仙進程則需要在安全代理的協商方式為分散方式的情況下才建立。
[0080]檢測單元404調用廿1狀61'檢測共享內存中是否有密鑰更新的方式有:調用進程檢測進程、^6^1進程或者進程中任一進程是否有對密鑰進行寫操作。其中,對密鑰進行寫操作主要在廿18861和進程里執行,而(1631進程則在有需要的時候才對密鑰進行寫操作。其中,廿磯8進程對密鑰可請求的業務主要有:分散密鑰協商、集群內密鑰同步、分散密鑰預啟用同步與分散密鑰注銷360進程對密鑰可請求的業務主要有強制密鑰協商與密鑰按需下載。而檢測共享內存中是否有密鑰更新的操作是檢測單元404通過調用1:1*1886^進程來執行,主要也是在1:1*1886^進程里執行。
[0081]加鎖單元405,用于當檢測單元404的檢測結果為是時,調用廿18陰1'進程對共享內存中的密鑰進行加鎖。
[0082]具體的,共享內存的主要工作是保存密鑰的信息,但其中還保存有安全代理的運行狀態、配置信息等,所以加鎖單元405的加鎖操作只針對共享內存中的密鑰,而共享內存中的其他信息不受加鎖操作的影響,可以隨時被讀取。檢測單元404只要檢測到存在對密鑰進行寫操作或者散列運算時,加鎖單元40 5就立刻執行對共享內存中的密鑰加鎖的操作。在密鑰加鎖期間內,只能是安全代理對密鑰進行寫操作,并且安全代理也只能串行的進行相應的操作。同時,如果存在安全代理或者安全插件對密鑰進行讀操作請求時,該請求只能在密鑰更新完成并對密鑰進行解鎖之后執行。如果檢測單元404沒有檢測到密鑰更新,則其繼續處于檢測密鑰更新的狀態。
[0083]可選的,由于安全代理可以在預先設定好的時間段內進行密鑰更新,所以加鎖單元405對共享內存中的密鑰進行加鎖的操作可以在該時間段的基礎上提前一定的時間。安全代理可以設定2秒或者5秒等,具體時間本發明實施例不作限定。提前進行加鎖能夠實現對密鑰讀取的操作影響最小,進而保證了密鑰讀取的正確性與完整性。
[0084]判斷單元406,用于判斷密鑰更新是否完成。
[0085]具體的,判斷單元406的判斷可以周期性的進行,該周期可以為安全代理預先設定的一個時間長度,可以為3分鐘、5分鐘或者10分鐘等,該周期的具體時間長度本發明實施例不作限定。
[0086]發送單元407,用于當判斷單元406的判斷結果為是時,向管理中心發送密鑰更新的數據。
[0087]具體的,發送單元407向管理中心發送密鑰更新的數據具體通過調用廿1狀61'進程進行,其目的是:將密鑰更新之后的數據在管理中心備份;向管理中心通知有密鑰更新的操作并且已經完成。
[0088]解鎖單元408,用于當判斷單元406的判斷結果為是時,對共享內存中的密鑰進行解鎖。
[0089]具體的,判斷單元406當判斷密鑰更新完成時,解鎖單元408就會對共享內存中的密鑰執行解鎖的操作,解鎖之后,安全代理不再對密鑰進行寫操作,安全代理或者安全插件對共享內存中密鑰的讀取不再進行加鎖,并且讀取操作可以同時進行,各操作之間不相互影響。當然,在判斷單元406判斷密鑰更新的操作未完成時,加鎖單元405會繼續對密鑰進行加鎖直至密鑰更新完成為止。
[0090]可選的,由于安全代理可以在預先設定好的時間段內進行密鑰更新,所以解鎖單元408對共享內存中的密鑰進行解鎖的操作也可以在該時間段的基礎上延后一定的時間。安全代理可以設定2秒或者5秒等,該解鎖操作延后的時間本發明不作具體限定。延長對密鑰的加鎖時間能夠實現對密鑰的更新操作影響最小,進而保證了密鑰寫入的正確性與完整性。
[0091]觸發單元409,用于檢測子進程是否意外退出,若是,觸發檢測單元重新創建子進程;若否,繼續檢測子進程是否意外退出。
[0092]具體的,觸發單元409對子進程的檢測是創建好子進程之后就一直進行的,當觸發單元409檢測到子進程意外退出,則立刻觸發檢測單元404創建新的子進程,檢測單元404以后的單元重新進行工作,從而不影響安全代理的工作。子進程意外退出有多種情況,例如,當某一個子進程在某一個時間點承載的業務量較大,該子進程因無法再如此高負荷下繼續工作而退出;又如,安全代理的某個部件出現故障,而該部件是決定其中的一個子進程是否正常工作的關鍵,因此當該部件出現故障時會立刻導致其對應的子進程退出,當然,即使該部件為決定其中的一個子進程是否正常工作的關鍵,安全代理會立刻調用備用部件并及時創建新的子進程以繼續工作。
[0093]本領域普通技術人員可以理解實現上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質中,該程序在執行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質可為磁碟、光盤、只讀存儲記憶體(0651(1-01117 1611101*7,^01)或隨機存儲記憶體^00688161110等。
[0094]以上所揭露的僅為本發明較佳實施例而已,當然不能以此來限定本發明之權利范圍,因此依本發明權利要求所作的等同變化,仍屬本發明所涵蓋的范圍。
【權利要求】
1.一種密鑰管理方法,其特征在于,包括: 安全代理檢測共享內存中是否有密鑰更新,所述密鑰更新包括對密鑰進行寫操作或散列運算; 所述安全代理若檢測到所述密鑰更新,則對所述共享內存中的密鑰進行加鎖; 所述安全代理判斷所述密鑰更新是否完成,若是,則對所述共享內存中的密鑰進行解鎖。
2.根據權利要求1所述的方法,其特征在于,所述安全代理檢測共享內存中是否有密鑰更新之前,還包括: 安全代理連接共享內存,并查詢所述共享內存是否連接成功; 所述安全代理若查詢到所述共享內存連接成功,則執行所述的檢測共享內存中是否有密鑰更新的步驟。
3.根據權利要求2所述的方法,其特征在于,還包括: 所述安全代理若查詢到所述共享內存連接失敗,則創建新的共享內存; 所述安全代理在所述的創建新的共享內存之后,執行所述的檢測共享內存中是否有密鑰更新的步驟。
4.根據權利要求1?3任一項所述的方法,其特征在于,所述安全代理檢測共享內存中是否有密鑰更新包括: 安全代理創建子進程,所述子進程包括輪詢進程trigger ; 所述安全代理調用所述trigger檢測共享內存中是否有密鑰更新。
5.根據權利要求4所述的方法,其特征在于,還包括: 所述安全代理檢測所述子進程是否意外退出,若是,則觸發重新創建所述子進程。
6.根據權利要求5所述的方法,其特征在于,還包括: 所述安全代理若判斷到所述密鑰更新完成,則向管理中心發送所述密鑰更新的數據。
7.根據權利要求6所述的方法,其特征在于,所述安全代理若判斷到所述密鑰更新完成,則向管理中心發送所述密鑰更新的數據包括: 所述安全代理若判斷到所述密鑰更新完成,則調用所述trigger向管理中心發送所述密鑰更新的數據。
8.根據權利要求7所述的方法,其特征在于,所述子進程還包括: 消息處理進程deal,用于對所述密鑰進行寫操作; socket處理進程trans,用于對所述密鑰進行寫操作; 其中,所述安全代理若檢測到所述密鑰更新,則對所述共享內存中的密鑰進行加鎖包括: 所述安全代理若檢測到所述trigger、deal或trans任一進程對所述密鑰進行寫操作,則調用所述trigger對所述共享內存中的密鑰進行加鎖。
9.一種密鑰管理裝置,其特征在于,包括: 檢測單元,用于檢測共享內存中是否有密鑰更新,所述密鑰更新包括對密鑰進行寫操作或散列運算; 加鎖單元,用于當所述檢測單元的檢測結果為是時,對所述共享內存中的密鑰進行加鎖; 判斷單元,用于判斷所述密鑰更新是否完成; 解鎖單元,用于當所述判斷單元的判斷結果為是時,對所述共享內存中的密鑰進行解鎖。
10.根據權利要求9所述的裝置,其特征在于,所述裝置還包括: 連接單元,用于連接共享內存; 查詢單元,用于查詢所述共享內存是否連接成功; 其中,所述檢測單元具體用于當所述查詢單元的查詢結果為是時,檢測共享內存中是否有密鑰更新。
11.根據權利要求10所述的方法,其特征在于,所述裝置還包括: 新建單元,用于當所述查詢單元的查詢結果為否時,創建新的共享內存; 其中,所述檢測單元具體用于在所述新建單元創建新的共享內存之后,檢測共享內存中是否有密鑰更新。
12.根據權利要求9?11任一項所述的裝置,其特征在于,所述檢測單元檢測共享內存中是否有密鑰更新的具體方式為: 創建子進程,所述子進程包括輪詢進程trigger ; 調用所述trigger檢測共享內存中是否有密鑰更新。
13.根據權利要求12所述的裝置,其特征在于,所述裝置還包括: 觸發單元,用于檢測所述子進程是否意外退出,若是,則觸發所述檢測單元重新創建所述子進程。
14.根據權利要求13所述的裝置,其特征在于,所述裝置還包括: 發送單元,用于當所述判斷單元的判斷結果為是時,向管理中心發送所述密鑰更新的數據。
15.根據權利要求14所述的裝置,其特征在于,所述發送單元具體用于當所述判斷單元的判斷結果為是時,調用所述trigger向管理中心發送所述密鑰更新的數據。
16.根據權利要求14所述的裝置,其特征在于,所述子進程還包括: 消息處理進程deal,用于對所述密鑰進行寫操作; socket處理進程trans,用于對所述密鑰進行寫操作; 其中,所述加鎖單元具體用于當所述檢測單元檢測到所述trigger、deal或trans任一進程對所述密鑰進行寫操作時,調用所述trigger對所述共享內存中的密鑰進行加鎖。
【文檔編號】H04L29/06GK104363209SQ201410594438
【公開日】2015年2月18日 申請日期:2014年10月29日 優先權日:2014年10月29日
【發明者】李愛宏, 郭漢利, 陳銘新, 張曉東, 李曉敦, 燕召將, 閆立志, 陳德鋒, 孫顯帥, 林國養 申請人:中國建設銀行股份有限公司