本公開一般涉及計算機技術領域,具體涉及信息處理安全領域,尤其涉及一種密鑰固定的對稱白盒密碼加密方法和裝置。
背景技術:
在數據傳輸和存儲中,為了信息安全考慮,通常需要對數據加密。目前的加密主要假定對數據的攻擊者無法接觸到加密運行的環境,也不能控制加密數據存儲的環境,從而無法接觸加密時的算法和密鑰。即,加密的過程和加密數據的存儲作為一個“黑盒”存在,無法被攻擊者獲知。
然而,實際上,在一些情況下,數據的攻擊者是能夠接觸到加密運行的環境的,甚至能夠取得對數據加密、加密數據存儲環境的控制。這樣,他們很容易通過數據加密、加密數據存儲環境中的一些中間數據、環境數據等以反向工程的方式推知加密算法和密鑰等,從而攻擊數據。因此,提出了在攻擊者能夠取得對數據加密、加密數據存儲環境的控制時如何實現信息安全的需求,即在把加密數據的運行和加密數據的存儲看成“白盒”的情況下,如何實現信息安全。
技術實現要素:
鑒于現有技術中的上述缺陷或不足,期望提供一種在攻擊者能夠取得對加密數據運行、存儲環境的控制時實現信息安全的方案,即在把加密數據的運行和存儲看成“白盒”的情況下,實現信息安全的方案。
第一方面,本申請實施例提供了一種非對稱白盒密碼加密方法,所述方法包括:接收來自消息發送終端的加密消息、加密流水號,其中,加密消息是認證中心將消息發送終端要發送的消息按照消息分組方案和與每個組對應的加密密鑰,將消息分成組并針對每個組用與該組對應的加密密鑰加密得到并伴隨分配的加密流水號返回給消息發送終端、再由消息發送終端轉發的;將接收的加密消息與加密流水號對應保存;響應于獲取消息內容的請求,將對應保存的加密消息和加密流水號發送到認證中心,以便認證中心對消息接收終端的身份進行認證并認證通過后,根據認證中心對消息加密時采用的消息分組方案和與每個組對應的加密密鑰,對加密消息解密;從認證中心接收解密得到的消息內容。
第二方面,本申請實施例提供了一種非對稱白盒密碼加密方法,所述方法包括:接收來自消息接收終端的加密消息、加密流水號,其中,加密消息是將消息發送終端要發送的消息按照消息分組方案和與每個組對應的加密密鑰,將消息分成組并針對每個組用與該組對應的加密密鑰加密得到并伴隨分配的加密流水號返回給消息發送終端、由消息發送終端轉發到消息接收終端、由消息接收終端響應于獲取消息內容的請求轉發的;對消息接收終端的身份進行認證;如果認證通過,根據對消息加密時采用的消息分組方案和與每個組對應的加密密鑰,對加密消息解密;發送解密得到的消息內容到消息接收終端。
第三方面,本申請實施例提供了一種密鑰固定的對稱白盒密碼加密方法,所述方法包括:向認證中心發送要加密的消息;如果認證中心對消息發送終端的身份認證通過,接收認證中心根據消息分組方案、與每個組對應的加密密鑰加密所述要加密的消息得到的加密消息、以及認證中心分配的加密流水號;將加密消息連同加密流水號發送到消息接收終端。
第四方面,本申請實施例提供了一種密鑰固定的對稱白盒密碼加密裝置,所述裝置包括:第一接收單元,配置用于接收來自消息發送終端的加密消息、加密流水號,其中,加密消息是認證中心將消息發送終端要發送的消息按照消息分組方案和與每個組對應的加密密鑰,將消息分成組并針對每個組用與該組對應的加密密鑰加密得到并伴隨分配的加密流水號返回給消息發送終端、再由消息發送終端轉發的;第一保存單元,配置用于將接收的加密消息與加密流水號對應保存;第一發送單元,配置用于響應于獲取消息內容的請求,將對應保存的加密消息和加密流水號發送到認證中心,以便認證中心對消息接收終端的身份進行認證并認證通過后,根據認證中心對消息加密時采用的消息分組方案和與每個組對應的加密密鑰,對加密消息解密;第二接收單元,配置用于從認證中心接收解密得到的消息內容。
第五方面,本申請實施例提供了一種密鑰固定的對稱白盒密碼加密裝置,所述裝置包括:第三接收單元,配置用于接收來自消息接收終端的加密消息、加密流水號,其中,加密消息是將消息發送終端要發送的消息按照消息分組方案和與每個組對應的加密密鑰,將消息分成組并針對每個組用與該組對應的加密密鑰加密得到并伴隨分配的加密流水號返回給消息發送終端、由消息發送終端轉發到消息接收終端、由消息接收終端響應于獲取消息內容的請求轉發的;第一認證單元,配置用于對消息接收終端的身份進行認證;解密單元,配置用于如果認證通過,根據對消息加密時采用的消息分組方案和與每個組對應的加密密鑰,對加密消息解密;第二發送單元,配置用于發送解密得到的消息內容到消息接收終端。
第六方面,本申請實施例提供了一種密鑰固定的對稱白盒密碼加密裝置,所述裝置包括:第五發送單元,配置用于向認證中心發送要加密的消息;第五接收單元,配置用于如果認證中心對消息發送終端的身份認證通過,接收認證中心根據消息分組方案、與每個組對應的加密密鑰加密所述要加密的消息得到的加密消息、以及認證中心分配的加密流水號;第六發送單元,配置用于將加密消息連同加密流水號發送到消息接收終端。
第七方面,本申請實施例提供了一種設備,包括處理器、存儲器和顯示器;所述存儲器包含可由所述處理器執行的指令以使得所述處理器執行:接收來自消息發送終端的加密消息、加密流水號,其中,加密消息是認證中心將消息發送終端要發送的消息按照消息分組方案和與每個組對應的加密密鑰,將消息分成組并針對每個組用與該組對應的加密密鑰加密得到并伴隨分配的加密流水號返回給消息發送終端、再由消息發送終端轉發的;將接收的加密消息與加密流水號對應保存;響應于獲取消息內容的請求,將對應保存的加密消息和加密流水號發送到認證中心,以便認證中心對消息接收終端的身份進行認證并認證通過后,根據認證中心對消息加密時采用的消息分組方案和與每個組對應的加密密鑰,對加密消息解密;從認證中心接收解密得到的消息內容。
第八方面,本申請實施例提供了一種設備,包括處理器、存儲器和顯示器;所述存儲器包含可由所述處理器執行的指令以使得所述處理器執行:接收來自消息接收終端的加密消息、加密流水號,其中,加密消息是將消息發送終端要發送的消息按照消息分組方案和與每個組對應的加密密鑰,將消息分成組并針對每個組用與該組對應的加密密鑰加密得到并伴隨分配的加密流水號返回給消息發送終端、由消息發送終端轉發到消息接收終端、由消息接收終端響應于獲取消息內容的請求轉發的;對消息接收終端的身份進行認證;如果認證通過,根據對消息加密時采用的消息分組方案和與每個組對應的加密密鑰,對加密消息解密;發送解密得到的消息內容到消息接收終端。
第九方面,本申請實施例提供了一種設備,包括處理器、存儲器和顯示器;所述存儲器包含可由所述處理器執行的指令以使得所述處理器執行:向認證中心發送要加密的消息;如果認證中心對消息發送終端的身份認證通過,接收認證中心根據消息分組方案、與每個組對應的加密密鑰加密所述要加密的消息得到的加密消息、以及認證中心分配的加密流水號;將加密消息連同加密流水號發送到消息接收終端。
在本申請實施例中,在消息接收終端是不保存加密消息的加密密鑰的,甚至消息接收終端也不知道加密密鑰,因為加解密由認證中心進行。在消息接收終端存儲的是接收的加密消息和加密流水號。這樣,即使攻擊者能夠取得對加密數據運行、存儲環境的控制,其也無法解密加密數據。另外,加密消息不是用單一密鑰加密的,而是按照消息分組方案和與每個組對應的加密密鑰,將消息分成組并針對每個組用與該組對應的加密密鑰加密。如此復雜的加密方法也使得即使攻擊者能夠取得對加密數據運行、存儲環境的控制,也很難通過反向工程破解出分組方案和各加密密鑰,進而無法解密加密消息。而在消息接收終端想知道消息的內容時,是可以獲得解密后的消息的。此時,消息接收終端將加密消息和對應的加密流水號發送到認證中心。認證中心對消息接收終端的身份進行認證并認證通過后,根據認證中心對消息加密時采用的消息分組方案和與每個組對應的加密密鑰,對加密消息解密,并向消息接收終端返回解密后的加密消息。加解密都在認證中心進行。即使攻擊者能夠取得對加密數據運行、存儲環境的控制,其也無法僅憑一個加密流水號來反向工程破解加密消息。如果攻擊者得到加密流水號,向認證中心請求解密后的數據也是不可能成功的,因為無法通過認證中心對請求者身份的認證。而消息接收終端卻能夠通過認證,因此能夠請求到解密后的數據。通過這種方式,即使在攻擊者能夠取得對加密數據運行、存儲環境的控制的情況下,仍能實現信息安全。
附圖說明
通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本申請的其它特征、目的和優點將會變得更明顯:
圖1示出了其中可以應用本申請實施例的示例性系統架構;
圖2示出了根據本申請一個實施例的在消息接收終端側的密鑰固定的對稱白盒密碼加密方法的示例性流程圖;
圖3示出了根據本申請一個實施例的在認證中心側的密鑰固定的對稱白盒密碼加密方法的示例性流程圖;
圖4示出了根據本申請一個實施例的在消息發送終端側的密鑰固定的對稱白盒密碼加密方法的示例性流程圖;
圖5示出了根據本申請一個實施例的在消息接收終端側的密鑰固定的對稱白盒密碼加密裝置的示例性結構框圖;
圖6示出了根據本申請一個實施例的在認證中心側的密鑰固定的對稱白盒密碼加密裝置的示例性結構框圖;
圖7示出了根據本申請一個實施例的在消息發送終端側的密鑰固定的對稱白盒密碼加密裝置的示例性結構框圖;
圖8示出了適于用來實現本申請實施例的消息接收終端的計算機系統的結構示意圖。
圖9示出了適于用來實現本申請實施例的認證中心的計算機系統的結構示意圖。
圖10示出了適于用來實現本申請實施例的消息發送終端的計算機系統的結構示意圖。
具體實施方式
下面結合附圖和實施例對本申請作進一步的詳細說明。可以理解的是,此處所描述的具體實施例僅僅用于解釋相關發明,而非對該發明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與發明相關的部分。
需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結合實施例來詳細說明本申請。
請參考圖1,其示出了可以應用本申請實施例的示例性系統架構。
如圖1所示,系統架構可以包括消息發送終端102、認證中心101、消息接收終端103。消息發送終端102指發送消息的終端。消息接收終端103指接收消息的終端。終端可以指一個實體的硬件,如車載設備、手機等,也可以指硬件內部的一個元件,如車輛中的ECU。認證中心101指對發送、接收消息的終端的身份進行認證、對消息進行加解密的中心。其可以位于服務器側,如云服務器上,也可以作為硬件的一部分,例如在對車輛中的ECU身份認證的情況下,其可以作為車輛的一部分位于車輛上。
如背景技術中提到的,目前的加密主要假定對數據的攻擊者無法接觸到加密運行的環境,也不能控制加密數據存儲的環境,也無法接觸加密時的算法和密鑰。即,加密的過程和加密數據的存儲作為一個“黑盒”存在,無法被攻擊者獲知。然而,實際上,在一些情況下,數據的攻擊者是能夠接觸到加密運行的環境的,甚至能夠取得對數據加密、加密數據存儲環境的控制。這樣,他們很容易通過數據加密、加密數據存儲環境中的一些中間數據、環境數據等以反向工程的方式推知加密算法和密鑰等,從而攻擊數據。因此,提出了在攻擊者能夠取得對加密數據運行、加密數據存儲環境的控制時如何實現信息安全的需求,即在把加密數據的運行和加密數據的存儲看成“白盒”的情況下,如何實現信息安全。
在本申請實施例中,在消息接收終端是不保存加密消息的加密密鑰的,甚至消息接收終端也不知道加密密鑰,因為加解密由認證中心進行。在消息接收終端存儲的是接收的加密消息和加密流水號。這樣,即使攻擊者能夠取得對加密數據運行、存儲環境的控制,其也無法解密加密數據。另外,加密消息不是用單一密鑰加密的,而是按照消息分組方案和與每個組對應的加密密鑰,將消息分成組并針對每個組用與該組對應的加密密鑰加密。如此復雜的加密方法也使得即使攻擊者能夠取得對加密數據運行、存儲環境的控制,也很難通過反向工程破解出分組方案和各加密密鑰,進而無法解密加密消息。而在消息接收終端想知道消息的內容時,是可以獲得解密后的消息的。此時,消息接收終端將加密消息和對應的加密流水號發送到認證中心。認證中心對消息接收終端的身份進行認證并認證通過后,根據認證中心對消息加密時采用的消息分組方案和與每個組對應的加密密鑰,對加密消息解密,并向消息接收終端返回解密后的加密消息。加解密都在認證中心進行。即使攻擊者能夠取得對加密數據運行、存儲環境的控制,其也無法僅憑一個加密流水號來反向工程破解加密消息。如果攻擊者得到加密流水號,向認證中心請求解密后的數據也是不可能成功的,因為無法通過認證中心對請求者身份的認證。而消息接收終端卻能夠通過認證,因此能夠請求到解密后的數據。通過這種方式,即使在攻擊者能夠取得對加密數據運行、存儲環境的控制的情況下,仍能實現信息安全。
參考圖2,其示出了根據本申請一個實施例的密鑰固定的對稱白盒密碼加密方法的示例性流程圖。圖2所示的方法可以在圖1中的消息接收終端103執行。“白盒”的概念在上文中已描述。“對稱”加密是指采用加密和解密用同一個密鑰完成的加密技術。
如圖2所示,在步驟210中,接收來自消息發送終端的加密消息、加密流水號。
加密消息是認證中心將消息發送終端要發送的消息按照消息分組方案和與每個組對應的加密密鑰,將消息分成組并針對每個組用與該組對應的加密密鑰加密得到并伴隨分配的加密流水號返回給消息發送終端、再由消息發送終端發到認證中心解密的。
消息發送終端要想發送消息,必須首先加密。本申請實施例中,加密是由認證中心進行的,以保證信息安全。消息發送終端要向認證中心發送要加密的消息。認證中心首先要認證該消息發送終端的身份,認證通過后才能加密消息。認證消息發送終端的身份可以采取主動查詢消息發送終端的標識的方法,因為如果讓消息發送終端上報自己的標識,一個未授權的消息發送終端可能知道另一個已授權的消息發送終端的標識而將該另一個已授權的消息發送終端的標識偽裝成自己的標識上報給認證中心,通過這種方式“蒙混過關”,通過認證。因此,認證中心要主動查詢消息發送終端的標識。一般來說,根據消息發送終端與認證中心的通信協議,消息發送終端在向認證中心發送消息時,消息發送終端的標識是按照通信協議自動裝入發送的消息的某個特定字段的,這個字段不能人為修改,專用于表明消息發送者的身份。因此,認證中心可以獲取消息發送終端與認證中心之間交換的消息中的特定字段中的消息發送終端標識。該字段中的標識不能被篡改,因此,通過這種方式,準確地查詢到了消息發送終端的標識。然后,將該消息發送終端標識與已授權終端標識列表進行比對。可以被信任作為消息的發送方的終端標識事先都登記在認證中心的已授權終端標識列表中。如果該消息發送終端標識在已授權終端標識列表中,則認證通過。如果該消息發送終端標識不在已授權終端標識列表中,則認證失敗。
如果認證中心對消息發送終端的身份認證通過,認證中心生成消息分組方案、與每個組對應的加密密鑰、以及加密流水號。消息分組方案即為了給消息加密如何將消息分成組的方案。例如,在消息分組方案1中規定,將消息均分成三個組:組A1,組B1,組C2。在消息分組方案2中規定,將消息按照大小2:1:1的比例分成三個組:組A2,組B2,組C2。生成消息分組方案可以采取事先規定若干消息分組方案,然后在其中隨機指定一個的方式。例如,事先規定有10個消息分組方案:消息分組方案1、消息分組方案2……、消息分組方案10。當需要生成消息分組方案時,從中隨機指定一個消息分組方案。與每個組對應的加密密鑰也可以采用事先規定一個加密密鑰集合,然后在其中隨機指定一個的方式。例如,在加密密鑰集合中有100個密鑰(其對應100個密鑰)。在上面提到的將消息均分成組A1、組B1、組C2的消息分組方案1中,對于組A1在100個密鑰中隨機分配一個加密密鑰k1,對于組A2在100個密鑰中隨機分配一個加密密鑰k2,對于組A3在100個密鑰中隨機分配一個加密密鑰k3。加密流水號是表示這次加密區別于其它次加密的序號。認證中心每加密一次,就分配一個加密流水號。一般來說,每次分配的加密流水號互不相同。這樣,在后續解密時就可以根據接收到的加密流水號找到唯一對消息加密時采用的消息分組方案和與每個組對應的加密密鑰,對加密消息解密。
認證中心生成消息分組方案、與每個組對應的加密密鑰、以及加密流水號后,按照生成的消息分組方案、與每個組對應的加密密鑰,加密所述要加密的消息,得到加密消息。然后,認證中心發送加密消息和加密流水號到消息發送終端。消息發送終端將加密消息連同加密流水號發送到消息接收終端。
例如,假設生成的消息分組方案是消息分組方案1,即將消息均分成組A1、組B1、組C2,與組1對應的加密密鑰是k1,與組2對應的加密密鑰是k2,與組3對應的加密密鑰是k3。認證中心先將要加密的消息平均分成3組,分別用k1、k2、k3加密后合在一起連同加密流水號發送到消息發送終端,再由消息發送終端發送給消息接收終端。
在步驟220中,將接收的加密消息與加密流水號對應保存。
在本申請實施例中,在消息接收終端是不保存加密消息的加密密鑰的,甚至消息接收終端也不知道加密密鑰,因為解密由認證中心進行。在消息接收終端存儲的是接收的加密消息和加密流水號。這樣,即使攻擊者能夠取得對加密數據運行、存儲環境的控制,其也無法解密加密數據。另外,加密消息不是用單一密鑰加密的,而是認證中心將消息發送終端要發送的消息按照消息分組方案和與每個組對應的加密密鑰,將消息分成組并針對每個組用與該組對應的加密密鑰加密得到的。如此復雜的加密方法也使得即使攻擊者能夠取得對加密數據運行、存儲環境的控制,也很難通過反向工程破解出分組方案和各加密密鑰,進而無法解密加密消息。
在步驟230中,響應于獲取消息內容的請求,將對應保存的加密消息和加密流水號發送到認證中心,以便認證中心對消息接收終端的身份進行認證并認證通過后,根據認證中心對消息加密時采用的消息分組方案和與每個組對應的加密密鑰,對加密消息解密。
如前所述,為了信息安全起見,消息在消息接收終端始終是加密存儲的。在消息接收終端想知道消息的內容時,響應于獲取消息內容的請求(可以來自消息接收終端外部,也可以來自消息接收終端內部的某一模塊),將加密消息和對應的加密流水號發送到認證中心。然后,認證中心對消息接收終端的身份進行認證。認證消息接收終端的身份可以采取主動查詢消息接收終端的標識的方法,因為如果讓消息接收終端上報自己的標識,一個未授權的消息接收終端(可能是攻擊者)可能知道另一個已授權的消息接收終端的標識而將該另一個已授權的消息接收終端的標識偽裝成自己的標識上報給認證中心,通過這種方式“蒙混過關”,通過認證。因此,認證中心要主動查詢消息接收終端的標識。一般來說,根據消息接收終端與認證中心的通信協議,消息接收終端在向認證中心發送消息時,消息接收終端的標識是按照通信協議自動裝入發送的消息的某個特定字段的,這個字段不能人為修改,專用于表明與認證中心通信者的身份。因此,認證中心可以獲取消息接收終端與認證中心之間交換的消息中的特定字段中的消息接收終端標識。該字段中的標識不能被篡改,因此,通過這種方式,準確地查詢到了消息接收終端的標識。然后,將該消息接收終端標識與已授權終端標識列表進行比對。可以被信任進行安全通信的終端標識事先都登記在認證中心的已授權終端標識列表中。如果該消息接收終端標識在已授權終端標識列表中,則認證通過。如果該消息接收終端標識不在已授權終端標識列表中,則認證失敗。
認證中心在生成消息分組方案、與每個組對應的加密密鑰、以及加密流水號之后還將生成的消息分組方案、與每個組對應的加密密鑰、以及加密流水號相對應地保存。這樣,認證中心對消息接收終端的身份進行認證并認證通過后,根據所述對應記錄,就可以查找到與接收到的加密流水號對應的消息分組方案、加密密鑰。認證中心按照查找到的消息分組方案和與各組對應的加密密鑰對加密消息解密。
由于解密的關鍵部分都在認證中心進行,即使攻擊者能夠取得對加密數據運行、存儲環境的控制,其也無法僅憑一個加密流水號來反向工程破解加密消息。如果攻擊者得到加密流水號,向認證中心請求解密后的數據也是不可能成功的,因為無法通過認證中心對請求者身份的認證。而消息接收終端卻能夠通過認證,因此能夠請求到解密后的數據。通過這種方式,即使在攻擊者能夠取得對加密數據運行、存儲環境的控制的情況下,仍能實現信息安全。
在步驟240中,從認證中心接收解密得到的消息內容。
參考圖3,其示出了根據本申請一個實施例的密鑰固定的對稱白盒密碼加密方法的示例性流程圖。圖3所示的方法可以在圖1中的認證中心101執行。“白盒”的概念在上文中已描述。“對稱”加密是指采用加密和解密用同一個固定密鑰完成的加密技術。
如圖3所示,在步驟310中,接收來自消息接收終端的加密消息、加密流水號。
加密消息是認證中心將消息發送終端要發送的消息按照消息分組方案和與每個組對應的加密密鑰,將消息分成組并針對每個組用與該組對應的加密密鑰加密得到并伴隨分配的加密流水號返回給消息發送終端、由消息發送終端轉發到消息接收終端、由消息接收終端響應于獲取消息內容的請求發到認證中心的。
實際上,在步驟310之前,所述方法還包括:接收來自消息發送終端的要加密的消息;對消息發送終端的身份進行認證;如果認證通過,生成消息分組方案、與每個組對應的加密密鑰、以及加密流水號;按照生成的消息分組方案、與每個組對應的加密密鑰,加密所述要加密的消息,得到加密消息;發送加密消息和加密流水號到消息發送終端。
消息發送終端要想發送消息,必須首先加密。本申請實施例中,加密是由認證中心進行的,以保證信息安全。消息發送終端要向認證中心發送要加密的消息。認證中心首先要認證該消息發送終端的身份,認證通過后才能加密消息。認證消息發送終端的身份可以采取主動查詢消息發送終端的標識的方法,因為如果讓消息發送終端上報自己的標識,一個未授權的消息發送終端可能知道另一個已授權的消息發送終端的標識而將該另一個已授權的消息發送終端的標識偽裝成自己的標識上報給認證中心,通過這種方式“蒙混過關”,通過認證。因此,認證中心要主動查詢消息發送終端的標識。一般來說,根據消息發送終端與認證中心的通信協議,消息發送終端在向認證中心發送消息時,消息發送終端的標識是按照通信協議自動裝入發送的消息的某個特定字段的,這個字段不能人為修改,專用于表明消息發送者的身份。因此,認證中心可以獲取消息發送終端與認證中心之間交換的消息中的特定字段中的消息發送終端標識。該字段中的標識不能被篡改,因此,通過這種方式,準確地查詢到了消息發送終端的標識。然后,將該消息發送終端標識與已授權終端標識列表進行比對。可以被信任作為消息的發送方的終端標識事先都登記在認證中心的已授權終端標識列表中。如果該消息發送終端標識在已授權終端標識列表中,則認證通過。如果該消息發送終端標識不在已授權終端標識列表中,則認證失敗。
如果認證中心對消息發送終端的身份認證通過,認證中心生成消息分組方案、與每個組對應的加密密鑰、以及加密流水號。消息分組方案即為了給消息加密如何將消息分成組的方案。例如,在消息分組方案1中規定,將消息均分成三個組:組A1,組B1,組C2。在消息分組方案2中規定,將消息按照大小2:1:1的比例分成三個組:組A2,組B2,組C2。生成消息分組方案可以采取事先規定若干消息分組方案,然后在其中隨機指定一個的方式。例如,事先規定有10個消息分組方案:消息分組方案1、消息分組方案2……、消息分組方案10。當需要生成消息分組方案時,從中隨機指定一個消息分組方案。與每個組對應的加密密鑰也可以采用事先規定一個加密密鑰集合,然后在其中隨機指定一個的方式。例如,在加密密鑰集合中有100個密鑰(其對應100個密鑰)。在上面提到的將消息均分成組A1、組B1、組C2的消息分組方案1中,對于組A1在100個密鑰中隨機分配一個加密密鑰k1,對于組A2在100個密鑰中隨機分配一個加密密鑰k2,對于組A3在100個密鑰中隨機分配一個加密密鑰k3。加密流水號是表示這次加密區別于其它次加密的序號。認證中心每加密一次,就分配一個加密流水號。一般來說,每次分配的加密流水號互不相同。這樣,在后續解密時就可以根據接收到的加密流水號找到唯一對消息加密時采用的消息分組方案和與每個組對應的加密密鑰,對加密消息解密。
認證中心生成消息分組方案、與每個組對應的加密密鑰、以及加密流水號后,按照生成的消息分組方案、與每個組對應的加密密鑰,加密所述要加密的消息,得到加密消息。例如,假設生成的消息分組方案是消息分組方案1,即將消息均分成組A1、組B1、組C2,與組1對應的加密密鑰是k1,與組2對應的加密密鑰是k2,與組3對應的加密密鑰是k3。認證中心先將要加密的消息平均分成3組,分別用k1、k2、k3加密后合在一起,得到加密消息。
然后,認證中心發送加密消息和加密流水號到消息發送終端。消息發送終端將加密消息連同加密流水號發送到消息接收終端。
然后,消息接收終端將接收的加密消息與加密流水號對應保存。
在本申請實施例中,在消息接收終端是不保存加密消息的加密密鑰的,甚至消息接收終端也不知道加密密鑰,因為解密由認證中心進行。在消息接收終端存儲的是接收的加密消息和加密流水號。這樣,即使攻擊者能夠取得對加密數據運行、存儲環境的控制,其也無法解密加密數據。另外,加密消息不是用單一密鑰加密的,而是認證中心將消息發送終端要發送的消息按照消息分組方案和與每個組對應的加密密鑰,將消息分成組并針對每個組用與該組對應的加密密鑰加密得到的。如此復雜的加密方法也使得即使攻擊者能夠取得對加密數據運行、存儲環境的控制,也很難通過反向工程破解出分組方案和各加密密鑰,進而無法解密加密消息。
然后,響應于獲取消息內容的請求,消息接收終端將對應保存的加密消息和加密流水號發送到認證中心。
在步驟320中,對消息接收終端的身份進行認證。
認證消息接收終端的身份可以采取主動查詢消息接收終端的標識的方法,因為如果讓消息接收終端上報自己的標識,一個未授權的消息接收終端(可能是攻擊者)可能知道另一個已授權的消息接收終端的標識而將該另一個已授權的消息接收終端的標識偽裝成自己的標識上報給認證中心,通過這種方式“蒙混過關”,通過認證。因此,認證中心要主動查詢消息接收終端的標識。一般來說,根據消息接收終端與認證中心的通信協議,消息接收終端在向認證中心發送消息時,消息接收終端的標識是按照通信協議自動裝入發送的消息的某個特定字段的,這個字段不能人為修改,專用于表明與認證中心通信者的身份。因此,認證中心可以獲取消息接收終端與認證中心之間交換的消息中的特定字段中的消息接收終端標識。該字段中的標識不能被篡改,因此,通過這種方式,準確地查詢到了消息接收終端的標識。然后,將該消息接收終端標識與已授權終端標識列表進行比對。可以被信任進行安全通信的終端標識事先都登記在認證中心的已授權終端標識列表中。如果該消息接收終端標識在已授權終端標識列表中,則認證通過。如果該消息接收終端標識不在已授權終端標識列表中,則認證失敗。
在步驟330中,根據對消息加密時采用的消息分組方案和與每個組對應的加密密鑰,對加密消息解密。
認證中心在生成消息分組方案、與每個組對應的加密密鑰、以及加密流水號之后還將生成的消息分組方案、與每個組對應的加密密鑰、以及加密流水號相對應地保存。這樣,認證中心對消息接收終端的身份進行認證并認證通過后,根據所述對應記錄,就可以查找到與接收到的加密流水號對應的消息分組方案、加密密鑰。認證中心按照查找到的消息分組方案和與各組對應的加密密鑰對加密消息解密。
在步驟340中,發送解密得到的消息內容到消息接收終端。
由于解密的關鍵部分都在認證中心進行,即使攻擊者能夠取得對在消息接收終端處加密數據運行、存儲環境的控制,其也無法僅憑一個加密流水號來反向工程破解加密消息。如果攻擊者得到加密流水號,向認證中心請求解密后的數據也是不可能成功的,因為無法通過認證中心對請求者身份的認證。而消息接收終端卻能夠通過認證,因此能夠請求到解密后的數據。通過這種方式,即使在攻擊者能夠取得對加密數據運行、存儲環境的控制的情況下,仍能實現信息安全。
在一個實施例中,所述方法還包括:如果認證失敗,向消息接收終端發送認證失敗消息。
參考圖4,其示出了根據本申請一個實施例的密鑰固定的對稱白盒密碼加密方法的示例性流程圖。圖4所示的方法可以在圖1中的消息發送終端102執行。“白盒”的概念在上文中已描述。“對稱”加密是指采用加密和解密用同一個固定密鑰完成的加密技術。
如圖3所示,在步驟310中,向認證中心發送要加密的消息。
消息發送終端要想發送消息,必須首先加密。本申請實施例中,加密是由認證中心進行的,以保證信息安全。消息發送終端要向認證中心發送要加密的消息。
在步驟320中,如果認證中心對消息發送終端的身份認證通過,接收認證中心根據消息分組方案、與每個組對應的加密密鑰加密所述要加密的消息得到的加密消息、以及認證中心分配的加密流水號。
認證中心首先要認證該消息發送終端的身份,認證通過后才能加密消息。認證消息發送終端的身份可以采取主動查詢消息發送終端的標識的方法,因為如果讓消息發送終端上報自己的標識,一個未授權的消息發送終端可能知道另一個已授權的消息發送終端的標識而將該另一個已授權的消息發送終端的標識偽裝成自己的標識上報給認證中心,通過這種方式“蒙混過關”,通過認證。因此,認證中心要主動查詢消息發送終端的標識。一般來說,根據消息發送終端與認證中心的通信協議,消息發送終端在向認證中心發送消息時,消息發送終端的標識是按照通信協議自動裝入發送的消息的某個特定字段的,這個字段不能人為修改,專用于表明消息發送者的身份。因此,認證中心可以獲取消息發送終端與認證中心之間交換的消息中的特定字段中的消息發送終端標識。該字段中的標識不能被篡改,因此,通過這種方式,準確地查詢到了消息發送終端的標識。然后,將該消息發送終端標識與已授權終端標識列表進行比對。可以被信任作為消息的發送方的終端標識事先都登記在認證中心的已授權終端標識列表中。如果該消息發送終端標識在已授權終端標識列表中,則認證通過。如果該消息發送終端標識不在已授權終端標識列表中,則認證失敗。
如果認證中心對消息發送終端的身份認證通過,認證中心生成消息分組方案、與每個組對應的加密密鑰、以及加密流水號。消息分組方案即為了給消息加密如何將消息分成組的方案。例如,在消息分組方案1中規定,將消息均分成三個組:組A1,組B1,組C2。在消息分組方案2中規定,將消息按照大小2:1:1的比例分成三個組:組A2,組B2,組C2。生成消息分組方案可以采取事先規定若干消息分組方案,然后在其中隨機指定一個的方式。例如,事先規定有10個消息分組方案:消息分組方案1、消息分組方案2……、消息分組方案10。當需要生成消息分組方案時,從中隨機指定一個消息分組方案。與每個組對應的加密密鑰也可以采用事先規定一個加密密鑰集合,然后在其中隨機指定一個的方式。例如,在加密密鑰集合中有100個密鑰(其對應100個密鑰)。在上面提到的將消息均分成組A1、組B1、組C2的消息分組方案1中,對于組A1在100個密鑰中隨機分配一個加密密鑰k1,對于組A2在100個密鑰中隨機分配一個加密密鑰k2,對于組A3在100個密鑰中隨機分配一個加密密鑰k3。加密流水號是表示這次加密區別于其它次加密的序號。認證中心每加密一次,就分配一個加密流水號。一般來說,每次分配的加密流水號互不相同。這樣,在后續解密時就可以根據接收到的加密流水號找到唯一對消息加密時采用的消息分組方案和與每個組對應的加密密鑰,對加密消息解密。
認證中心生成消息分組方案、與每個組對應的加密密鑰、以及加密流水號后,按照生成的消息分組方案、與每個組對應的加密密鑰,加密所述要加密的消息,得到加密消息。例如,假設生成的消息分組方案是消息分組方案1,即將消息均分成組A1、組B1、組C2,與組1對應的加密密鑰是k1,與組2對應的加密密鑰是k2,與組3對應的加密密鑰是k3。認證中心先將要加密的消息平均分成3組,分別用k1、k2、k3加密后合在一起,得到加密消息。
然后,認證中心發送加密消息和加密流水號到消息發送終端。
在步驟430中,將加密消息連同加密流水號發送到消息接收終端。
然后,消息接收終端將接收的加密消息與加密流水號對應保存。
在本申請實施例中,在消息接收終端是不保存加密消息的加密密鑰的,甚至消息接收終端也不知道加密密鑰,因為解密由認證中心進行。在消息接收終端存儲的是接收的加密消息和加密流水號。這樣,即使攻擊者能夠取得對加密數據運行、存儲環境的控制,其也無法解密加密數據。另外,加密消息不是用單一密鑰加密的,而是認證中心將消息發送終端要發送的消息按照消息分組方案和與每個組對應的加密密鑰,將消息分成組并針對每個組用與該組對應的加密密鑰加密得到的。如此復雜的加密方法也使得即使攻擊者能夠取得對加密數據運行、存儲環境的控制,也很難通過反向工程破解出分組方案和各加密密鑰,進而無法解密加密消息。
然后,響應于獲取消息內容的請求,消息接收終端將對應保存的加密消息和加密流水號發送到認證中心。認證中心對消息接收終端的身份進行認證。
認證消息接收終端的身份可以采取主動查詢消息接收終端的標識的方法,因為如果讓消息接收終端上報自己的標識,一個未授權的消息接收終端(可能是攻擊者)可能知道另一個已授權的消息接收終端的標識而將該另一個已授權的消息接收終端的標識偽裝成自己的標識上報給認證中心,通過這種方式“蒙混過關”,通過認證。因此,認證中心要主動查詢消息接收終端的標識。一般來說,根據消息接收終端與認證中心的通信協議,消息接收終端在向認證中心發送消息時,消息接收終端的標識是按照通信協議自動裝入發送的消息的某個特定字段的,這個字段不能人為修改,專用于表明與認證中心通信者的身份。因此,認證中心可以獲取消息接收終端與認證中心之間交換的消息中的特定字段中的消息接收終端標識。該字段中的標識不能被篡改,因此,通過這種方式,準確地查詢到了消息接收終端的標識。然后,將該消息接收終端標識與已授權終端標識列表進行比對。可以被信任進行安全通信的終端標識事先都登記在認證中心的已授權終端標識列表中。如果該消息接收終端標識在已授權終端標識列表中,則認證通過。如果該消息接收終端標識不在已授權終端標識列表中,則認證失敗。
然后,認證中心根據對消息加密時采用的消息分組方案和與每個組對應的加密密鑰,對加密消息解密。
認證中心在生成消息分組方案、與每個組對應的加密密鑰、以及加密流水號之后還將生成的消息分組方案、與每個組對應的加密密鑰、以及加密流水號相對應地保存。這樣,認證中心對消息接收終端的身份進行認證并認證通過后,根據所述對應記錄,就可以查找到與接收到的加密流水號對應的消息分組方案、加密密鑰。認證中心按照查找到的消息分組方案和與各組對應的加密密鑰對加密消息解密。
然后,認證中心發送解密得到的消息內容到消息接收終端。
由于解密的關鍵部分都在認證中心進行,即使攻擊者能夠取得對在消息接收終端處加密數據運行、存儲環境的控制,其也無法僅憑一個加密流水號來反向工程破解加密消息。如果攻擊者得到加密流水號,向認證中心請求解密后的數據也是不可能成功的,因為無法通過認證中心對請求者身份的認證。而消息接收終端卻能夠通過認證,因此能夠請求到解密后的數據。通過這種方式,即使在攻擊者能夠取得對加密數據運行、存儲環境的控制的情況下,仍能實現信息安全。
應當注意,盡管在附圖中以特定順序描述了本發明方法的操作,但是,這并非要求或者暗示必須按照該特定順序來執行這些操作,或是必須執行全部所示的操作才能實現期望的結果。相反,流程圖中描繪的步驟可以改變執行順序。附加地或備選地,可以省略某些步驟,將多個步驟合并為一個步驟執行,和/或將一個步驟分解為多個步驟執行。
進一步參考圖5,其示出了根據本申請一個實施例的密鑰固定的對稱白盒密碼加密裝置500的示例性結構框圖。
如圖5所示,所述非對稱白盒密碼加密裝置500包括:第一接收單元510,配置用于接收來自消息發送終端的加密消息、加密流水號,其中,加密消息是認證中心將消息發送終端要發送的消息按照消息分組方案和與每個組對應的加密密鑰,將消息分成組并針對每個組用與該組對應的加密密鑰加密得到并伴隨分配的加密流水號返回給消息發送終端、再由消息發送終端轉發的;第一保存單元520,配置用于將接收的加密消息與加密流水號對應保存;第一發送單元530,配置用于響應于獲取消息內容的請求,將對應保存的加密消息和加密流水號發送到認證中心,以便認證中心對消息接收終端的身份進行認證并認證通過后,根據認證中心對消息加密時采用的消息分組方案和與每個組對應的加密密鑰,對加密消息解密;第二接收單元540,配置用于從認證中心接收解密得到的消息內容。
可選地,認證中心對消息接收終端的身份進行認證是通過獲取消息接收終端與認證中心之間交換的消息中的特定字段中的消息接收終端標識,并將該消息接收終端標識與已授權終端標識列表進行比對進行的。
可選地,如果該消息接收終端標識在已授權終端標識列表中,則認證通過。
進一步參考圖6,其示出了根據本申請一個實施例的密鑰固定的對稱白盒密碼加密裝置600的示例性結構框圖。
如圖6所示,所述非對稱白盒密碼加密裝置600包括:第三接收單元610,配置用于接收來自消息接收終端的加密消息、加密流水號,其中,加密消息是將消息發送終端要發送的消息按照消息分組方案和與每個組對應的加密密鑰,將消息分成組并針對每個組用與該組對應的加密密鑰加密得到并伴隨分配的加密流水號返回給消息發送終端、由消息發送終端轉發到消息接收終端、由消息接收終端響應于獲取消息內容的請求轉發的;第一認證單元620,配置用于對消息接收終端的身份進行認證;解密單元630,配置用于如果認證通過,根據對消息加密時采用的消息分組方案和與每個組對應的加密密鑰,對加密消息解密;第二發送單元640,配置用于發送解密得到的消息內容到消息接收終端。
可選地,所述裝置600還包括:第三發送單元,配置用于如果認證失敗,向消息接收終端發送認證失敗消息。
可選地,所述裝置600還包括:第四接收單元,配置用于接收來自消息發送終端的要加密的消息;第二認證單元,配置用于對消息發送終端的身份進行認證;第一生成單元,配置用于如果認證通過,生成消息分組方案、與每個組對應的加密密鑰、以及加密流水號;加密單元,配置用于按照生成的消息分組方案、與每個組對應的加密密鑰,加密所述要加密的消息,得到加密消息;第四發送單元,配置用于發送加密消息和加密流水號到消息發送終端;
可選地,所述裝置600還包括:第二保存單元,配置用于將生成的消息分組方案、與每個組對應的加密密鑰、以及加密流水號相對應地保存。
可選地,所述第一認證單元620進一步配置用于:獲取消息接收終端與認證中心之間交換的消息中的特定字段中的消息接收終端標識;將該消息接收終端標識與已授權終端標識列表進行比對。
可選地,所述第二認證單元進一步配置用于:獲取消息發送終端與認證中心之間交換的消息中的特定字段中的消息發送終端標識;將該消息發送終端標識與已授權終端標識列表進行比對。
進一步參考圖7,其示出了根據本申請一個實施例的密鑰固定的對稱白盒密碼加密裝置700的示例性結構框圖。
如圖7所示,所述非對稱白盒密碼加密裝置700包括:第五發送單元710,配置用于向認證中心發送要加密的消息;第五接收單元720,配置用于如果認證中心對消息發送終端的身份認證通過,接收認證中心根據消息分組方案、與每個組對應的加密密鑰加密所述要加密的消息得到的加密消息、以及認證中心分配的加密流水號;第六發送單元730,配置用于將加密消息連同加密流水號發送到消息接收終端。
應當理解,圖5-7中記載的諸子系統或單元與參考圖2-圖4描述的方法中的各個步驟相對應。由此,上文針對方法描述的操作和特征同樣適用于圖5-7及其中包含的單元,在此不再贅述。
下面參考圖8,其示出了適于用來實現本申請實施例的消息接收終端的計算機系統800的結構示意圖。
如圖8所示,計算機系統800包括中央處理單元(CPU)801,其可以根據存儲在只讀存儲器(ROM)802中的程序或者從存儲部分808加載到隨機訪問存儲器(RAM)803中的程序而執行各種適當的動作和處理。在RAM 803中,還存儲有系統800操作所需的各種程序和數據。CPU 801、ROM 802以及RAM 803通過總線804彼此相連。輸入/輸出(I/O)接口805也連接至總線804。
以下部件連接至I/O接口805:包括鍵盤、鼠標等的輸入部分806;包括諸如陰極射線管(CRT)、液晶顯示器(LCD)等以及揚聲器等的輸出部分807;包括硬盤等的存儲部分808;以及包括諸如LAN卡、調制解調器等的網絡接口卡的通信部分809。通信部分809經由諸如因特網的網絡執行通信處理。驅動器810也根據需要連接至I/O接口805。可拆卸介質811,諸如磁盤、光盤、磁光盤、半導體存儲器等等,根據需要安裝在驅動器810上,以便于從其上讀出的計算機程序根據需要被安裝入存儲部分808。
下面參考圖9,其示出了適于用來實現本申請實施例的認證中心的計算機系統900的結構示意圖。
如圖9所示,計算機系統900包括中央處理單元(CPU)901,其可以根據存儲在只讀存儲器(ROM)902中的程序或者從存儲部分908加載到隨機訪問存儲器(RAM)903中的程序而執行各種適當的動作和處理。在RAM 903中,還存儲有系統900操作所需的各種程序和數據。CPU 901、ROM 902以及RAM 903通過總線904彼此相連。輸入/輸出(I/O)接口905也連接至總線904。
以下部件連接至I/O接口905:包括鍵盤、鼠標等的輸入部分906;包括諸如陰極射線管(CRT)、液晶顯示器(LCD)等以及揚聲器等的輸出部分907;包括硬盤等的存儲部分908;以及包括諸如LAN卡、調制解調器等的網絡接口卡的通信部分909。通信部分909經由諸如因特網的網絡執行通信處理。驅動器910也根據需要連接至I/O接口905。可拆卸介質911,諸如磁盤、光盤、磁光盤、半導體存儲器等等,根據需要安裝在驅動器910上,以便于從其上讀出的計算機程序根據需要被安裝入存儲部分908。
下面參考圖10,其示出了適于用來實現本申請實施例的消息接收終端的計算機系統1000的結構示意圖。
如圖10所示,計算機系統1000包括中央處理單元(CPU)1001,其可以根據存儲在只讀存儲器(ROM)1002中的程序或者從存儲部分1008加載到隨機訪問存儲器(RAM)1003中的程序而執行各種適當的動作和處理。在RAM 1003中,還存儲有系統1000操作所需的各種程序和數據。CPU 1001、ROM 1002以及RAM 1003通過總線1004彼此相連。輸入/輸出(I/O)接口1005也連接至總線1004。
以下部件連接至I/O接口1005:包括鍵盤、鼠標等的輸入部分1006;包括諸如陰極射線管(CRT)、液晶顯示器(LCD)等以及揚聲器等的輸出部分1007;包括硬盤等的存儲部分1008;以及包括諸如LAN卡、調制解調器等的網絡接口卡的通信部分1009。通信部分1009經由諸如因特網的網絡執行通信處理。驅動器1010也根據需要連接至I/O接口1005。可拆卸介質1011,諸如磁盤、光盤、磁光盤、半導體存儲器等等,根據需要安裝在驅動器1010上,以便于從其上讀出的計算機程序根據需要被安裝入存儲部分1008。
特別地,根據本公開的實施例,上文參考圖2-圖4描述的過程可以被實現為計算機軟件程序。例如,本公開的實施例包括一種計算機程序產品,其包括有形地包含在機器可讀介質上的計算機程序,所述計算機程序包含用于執行圖2-圖4的方法的程序代碼。在這樣的實施例中,該計算機程序可以通過通信部分809、909、1009從網絡上被下載和安裝,和/或從可拆卸介質811、911、1011被安裝。
附圖中的流程圖和框圖,圖示了按照本發明各種實施例的系統、方法和計算機程序產品的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段、或代碼的一部分,所述模塊、程序段、或代碼的一部分包含一個或多個用于實現規定的邏輯功能的可執行指令。也應當注意,在有些作為替換的實現中,方框中所標注的功能也可以以不同于附圖中所標注的順序發生。例如,兩個接連地表示的方框實際上可以基本并行地執行,它們有時也可以按相反的順序執行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執行規定的功能或操作的專用的基于硬件的系統來實現,或者可以用專用硬件與計算機指令的組合來實現。
描述于本申請實施例中所涉及到的單元或模塊可以通過軟件的方式實現,也可以通過硬件的方式來實現。所描述的單元或模塊也可以設置在處理器中。這些單元或模塊的名稱在某種情況下并不構成對該單元或模塊本身的限定。
作為另一方面,本申請還提供了一種計算機可讀存儲介質,該計算機可讀存儲介質可以是上述實施例中所述裝置中所包含的計算機可讀存儲介質;也可以是單獨存在,未裝配入設備中的計算機可讀存儲介質。計算機可讀存儲介質存儲有一個或者一個以上程序,所述程序被一個或者一個以上的處理器用來執行描述于本申請的公式輸入方法。
以上描述僅為本申請的較佳實施例以及對所運用技術原理的說明。本領域技術人員應當理解,本申請中所涉及的發明范圍,并不限于上述技術特征的特定組合而成的技術方案,同時也應涵蓋在不脫離所述發明構思的情況下,由上述技術特征或其等同特征進行任意組合而形成的其它技術方案。例如上述特征與本申請中公開的(但不限于)具有類似功能的技術特征進行互相替換而形成的技術方案。