本發(fā)明涉及互聯(lián)網(wǎng)技術領域,尤其涉及一種數(shù)據(jù)加解密的方法及裝置。
背景技術:
虛擬專用網(wǎng)絡(Virtual Private Network,VPN)技術是指在公用網(wǎng)絡上為用戶建立的直接連接到虛擬的專用網(wǎng)絡,它主要的功能是在公用網(wǎng)絡上建立專用網(wǎng)絡。為了保證端與端之間數(shù)據(jù)傳輸?shù)陌踩?,通常需要VPN對傳輸?shù)臄?shù)據(jù)進行加密。而網(wǎng)絡安全協(xié)議(Internet Protocol Security,IPSec)用以提供公用網(wǎng)絡和專用網(wǎng)絡的端對端的加密和驗證服務。
為了提高VPN中數(shù)據(jù)包收發(fā)的效率,可以基于DPDK技術平臺進行數(shù)據(jù)包的收發(fā),DPDK是一種進行快速數(shù)據(jù)包處理的庫和驅動程序。基于DPDK技術進行的數(shù)據(jù)包收發(fā)的實現(xiàn)在用戶態(tài),而采用IPSec協(xié)議來實現(xiàn)的VPN技術中,數(shù)據(jù)包的加解密通常情況下都在內核態(tài),因此在使用DPDK技術進行收發(fā)需要加解密的數(shù)據(jù)包時需要將用戶態(tài)的需要加解密的數(shù)據(jù)包交給內核態(tài)進行加解密,完成后再返回給用戶態(tài)的DPDK,使DPDK將數(shù)據(jù)包發(fā)送出去。
由上述加解密的數(shù)據(jù)包收發(fā)的過程可以看到,現(xiàn)有的VPN在內核態(tài)進行數(shù)據(jù)包加解密的機制使加解密的數(shù)據(jù)包在用戶態(tài)與內核態(tài)之間反復的交互,降低了加解密數(shù)據(jù)包收發(fā)的效率。
技術實現(xiàn)要素:
鑒于上述問題,本發(fā)明提供一種數(shù)據(jù)加解密的方法及裝置,用以解決現(xiàn)有VPN在內核態(tài)進行數(shù)據(jù)包加解密的機制降低了加解密數(shù)據(jù)包收發(fā)的效率的問題。
為解決上述技術問題,一方面,本發(fā)明提供了一種數(shù)據(jù)加解密的方法,所述方法包括:
建立網(wǎng)絡安全協(xié)議IPsec連接后,獲得所述IPsec連接對應的加解密算法與數(shù)據(jù)包封裝方式;
判斷所述加解密算法與所述數(shù)據(jù)包封裝方式是否符合預設加解密條件,所述預設加解密條件為符合網(wǎng)卡加解密的加解密算法以及數(shù)據(jù)包封裝方式;
若滿足預設加解密條件,則將所述IPsec連接對應的數(shù)據(jù)包發(fā)送給網(wǎng)卡進行加解密處理。
可選的,若滿足預設加解密條件,所述方法進一步包括:
為所述IPsec連接對應的會話信息上增加網(wǎng)卡加密標識以及網(wǎng)卡解密標識。
可選的,在將所述IPsec連接對應的數(shù)據(jù)包發(fā)送給網(wǎng)卡進行加密處理之前,所述方法進一步包括:
根據(jù)所述網(wǎng)卡加密標識設置發(fā)送描述符IPsec有效位、與所述數(shù)據(jù)包對應的IPsec連接對應的安全聯(lián)盟SA連接序號、加密有效位以及所述數(shù)據(jù)包對應的IPsec連接的類型,以使所述網(wǎng)卡接收到數(shù)據(jù)包后根據(jù)所述發(fā)送描述符IPsec有效位、與所述數(shù)據(jù)包對應的IPsec連接對應的SA連接序號、加密有效位以及所述數(shù)據(jù)包對應的IPsec連接的類型確定是否可以對數(shù)據(jù)包進行加密處理,SA連接序號與IPsec連接一一對應。
可選的,所述方法進一步包括:
在建立IPsec連接后,獲取加解密需要的安全關聯(lián)信息,以使網(wǎng)卡根據(jù)所述安全關聯(lián)信息對數(shù)據(jù)包進行加解密;
將所述安全關聯(lián)信息對應寫入網(wǎng)卡中,所述安全關聯(lián)信息與IPsec連接一一對應。
可選的,所述將所述安全關聯(lián)信息對應寫入網(wǎng)卡中,包括:
將安全參數(shù)索引SPI、密鑰、目的網(wǎng)間協(xié)議IP地址以及鹽值Salt Value寫入網(wǎng)卡中,以使網(wǎng)卡根據(jù)密鑰以及Salt Value對數(shù)據(jù)包進行加密,根據(jù)安全參數(shù)索引SPI、密鑰以及目的IP地址對數(shù)包進行解密。
可選的,所述方法進一步包括:
根據(jù)接收描述符上的已解密標識為數(shù)據(jù)包添加已解密標識,所述接收描述符上的已解密標識是由網(wǎng)卡對數(shù)據(jù)包解密之后設置的;
判斷數(shù)據(jù)包上的已解密標識與所述會話信息上的網(wǎng)卡解密標識是否匹配;
若匹配,則確定數(shù)據(jù)包已被網(wǎng)卡成功解密。
可選的,所述將安全參數(shù)索引SPI、密鑰、目的IP地址以及鹽值SaltValue寫入網(wǎng)卡中,包括:
根據(jù)對應的SA連接序號將所述安全參數(shù)索引SPI對應的寫入SPI參數(shù)表中;
根據(jù)對應的SA連接序號將所述密鑰對應的寫入密鑰表中;
根據(jù)對應的SA連接序號將所述目的IP地址對應的寫入IP地址表中;
根據(jù)對應的SA連接序號將所述Salt Value對應的寫入鹽值表中。
可選的,所述方法進一步包括:
通過應用程序接口開啟網(wǎng)卡的加解密功能。
可選的,所述方法進一步包括:
在所述IPsec連接斷開后,將網(wǎng)卡中對應所述IPsec連接的安全關聯(lián)信息刪除。
可選的,所述方法進一步包括:
若不滿足預設加解密條件,則將所述IPsec連接對應的數(shù)據(jù)包發(fā)送給內核進行加解密處理。
另一方面,本發(fā)明提供了一種數(shù)據(jù)加解密的裝置,所述裝置包括:
獲得單元,用于建立網(wǎng)絡安全協(xié)議IPsec連接后,獲得所述IPsec連接對應的加解密算法與數(shù)據(jù)包封裝方式;
判斷單元,用于判斷所述加解密算法與所述數(shù)據(jù)包封裝方式是否符合預設加解密條件,所述預設加解密條件為符合網(wǎng)卡加解密的加解密算法以及數(shù)據(jù)包封裝方式;
網(wǎng)卡發(fā)送單元,用于若滿足預設加解密條件,則將所述IPsec連接對應的數(shù)據(jù)包發(fā)送給網(wǎng)卡進行加解密處理。
可選的,所述裝置進一步包括:
增加單元,用于若滿足預設加解密條件,為所述IPsec連接對應的會話信息上增加網(wǎng)卡加密標識以及網(wǎng)卡解密標識。
可選的,所述裝置進一步包括:
設置單元,用于在將所述IPsec連接對應的數(shù)據(jù)包發(fā)送給網(wǎng)卡進行加密處理之前,根據(jù)所述網(wǎng)卡加密標識設置發(fā)送描述符IPsec有效位、與所述數(shù)據(jù)包對應的IPsec連接對應的安全聯(lián)盟SA連接序號、加密有效位以及所述數(shù)據(jù)包對應的IPsec連接的類型,以使所述網(wǎng)卡接收到數(shù)據(jù)包后根據(jù)所述發(fā)送描述符IPsec有效位、與所述數(shù)據(jù)包對應的IPsec連接對應的SA連接序號、加密有效位以及所述數(shù)據(jù)包對應的IPsec連接的類型確定是否可以對數(shù)據(jù)包進行加密處理,SA連接序號與IPsec連接一一對應。
可選的,所述裝置進一步包括:
獲取單元,用于在建立IPsec連接后,獲取加解密需要的安全關聯(lián)信息,以使網(wǎng)卡根據(jù)所述安全關聯(lián)信息對數(shù)據(jù)包進行加解密;
寫入單元,用于將所述安全關聯(lián)信息對應寫入網(wǎng)卡中,所述安全關聯(lián)信息與IPsec連接一一對應。
可選的,所述寫入單元用于:
將安全參數(shù)索引SPI、密鑰、目的網(wǎng)間協(xié)議IP地址以及鹽值Salt Value寫入網(wǎng)卡中,以使網(wǎng)卡根據(jù)密鑰以及Salt Value對數(shù)據(jù)包進行加密,根據(jù)安全參數(shù)索引SPI、密鑰以及目的IP地址對數(shù)包進行解密。
可選的,所述裝置進一步包括:
添加單元,用于根據(jù)接收描述符上的已解密標識為數(shù)據(jù)包添加已解密標識,所述接收描述符上的已解密標識是由網(wǎng)卡對數(shù)據(jù)包解密之后設置的;
匹配單元,用于判斷數(shù)據(jù)包上的已解密標識與所述會話信息上的網(wǎng)卡解密標識是否匹配;
確定單元,用于若匹配,則確定數(shù)據(jù)包已被網(wǎng)卡成功解密。
可選的,所述寫入單元包括:
第一寫入模塊,用于根據(jù)對應的SA連接序號將所述安全參數(shù)索引SPI對應的寫入SPI參數(shù)表中;
第二寫入模塊,用于根據(jù)對應的SA連接序號將所述密鑰對應的寫入密鑰表中;
第三寫入模塊,用于根據(jù)對應的SA連接序號將所述目的IP地址對應的寫入IP地址表中;
第四寫入模塊,用于根據(jù)對應的SA連接序號將所述Salt Value對應的寫入鹽值表中。
可選的,所述裝置進一步包括:
開啟單元,用于通過應用程序接口開啟網(wǎng)卡的加解密功能。
可選的,所述裝置進一步包括:
刪除單元,用于在所述IPsec連接斷開后,將網(wǎng)卡中對應所述IPsec連接的安全關聯(lián)信息刪除。
可選的,所述裝置進一步包括:
內核發(fā)送單元,用于若不滿足預設加解密條件,則將所述IPsec連接對應的數(shù)據(jù)包發(fā)送給內核進行加解密處理。
借由上述技術方案,本發(fā)明提供的數(shù)據(jù)加解密的方法及裝置,能夠在建立IPsec連接后,獲得IPsec連接對應的加解密算法與數(shù)據(jù)包封裝方式;判斷加解密算法與數(shù)據(jù)包封裝方式是否符合預設加解密條件,預設加解密條件為符合網(wǎng)卡加解密的加解密算法以及數(shù)據(jù)包封裝方式;若滿足預設加解密條件,則將IPsec連接對應的數(shù)據(jù)包發(fā)送給網(wǎng)卡進行加解密處理。與現(xiàn)有技術相比,在VPN建立的虛擬專用網(wǎng)絡中需要對數(shù)據(jù)包進行加解密時,可以將滿足網(wǎng)卡加解密條件的數(shù)據(jù)包在網(wǎng)卡中進行加解密,即現(xiàn)有的數(shù)據(jù)包收發(fā)過程由“網(wǎng)卡-快速數(shù)據(jù)包處理應用-內核(加解密)”變?yōu)椤熬W(wǎng)卡(加解密)-快速數(shù)據(jù)包處理應用”,其中數(shù)據(jù)包加解密完成后都由快速數(shù)據(jù)包處理應用發(fā)出,可以看到相比將需要加解密的數(shù)據(jù)包發(fā)送給內核進行加解密的處理的方式減少了數(shù)據(jù)包在內核態(tài)和用戶態(tài)之間的來回交互,因此可以提高加解密數(shù)據(jù)包處理的效率。
另外在網(wǎng)卡中進行加解密,可以減輕內核計算的負擔,減少CPU使用資源,進一步提高整個系統(tǒng)的性能。
上述說明僅是本發(fā)明技術方案的概述,為了能夠更清楚了解本發(fā)明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。
附圖說明
通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1示出了本發(fā)明實施例提供的一種數(shù)據(jù)加解密的方法的流程圖;
圖2示出了本發(fā)明實施例提供的另一種數(shù)據(jù)加解密的方法的流程圖;
圖3示出了本發(fā)明實施例提供的一種數(shù)據(jù)加解密的裝置的組成框圖;
圖4示出了本發(fā)明實施例提供的另一種數(shù)據(jù)加解密的裝置的組成框圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。
為解決現(xiàn)有的VPN在內核態(tài)進行數(shù)據(jù)包加解密的機制降低了加解密數(shù)據(jù)包收發(fā)的效率的問題,本發(fā)明實施例提供了一種數(shù)據(jù)加解密的方法,如圖1所示,該方法包括:
101、建立IPsec連接后,獲得IPsec連接對應的加解密算法與數(shù)據(jù)包封裝方式。
首先需要說明的是,本實施例應用于IPSec VPN技術中。在VPN專屬網(wǎng)絡中兩個交互端進行數(shù)據(jù)交互之前,需要建立IPsec連接。在建立IPsec的過程中,會經(jīng)過安全聯(lián)盟(Security Association,SA)協(xié)商來確定在VPN專屬網(wǎng)絡通信過程中需要使用的加解密算法、加解密的方式以及數(shù)據(jù)包封裝方式等與管理和保護端與端之間通信連接相關的信息。
因此在建立IPsec連接后,可以獲得IPsec連接對應的加解密算法與數(shù)據(jù)包封裝方式。
102、判斷加解密算法與數(shù)據(jù)包封裝方式是否符合預設加解密條件。
當獲取到IPsec連接對應的加解密算法與數(shù)據(jù)包封裝方式之后,判斷是否符合網(wǎng)卡加解密的加解密算法以及數(shù)據(jù)包封裝方式。本實施例中符合網(wǎng)卡加解密的加解密算法為AES-128-GMAC和AES-128-GCM(128-bit key),符合網(wǎng)卡加解密的數(shù)據(jù)包封裝方式為隧道模式以及傳輸模式。另外,由于網(wǎng)卡對數(shù)據(jù)包加密時,數(shù)據(jù)包封裝方式只支持傳輸模式,不支持隧道模式,因此在數(shù)據(jù)包加密時符合網(wǎng)卡加密的數(shù)據(jù)包封裝方式為傳輸模式。
需要說明的是,若協(xié)商確定IPsec連接使用認證頭(Authentication Header,AH)或者封裝安全負載(Encapsulating Security Payload,ESP)驗證,則符和網(wǎng)卡加解密的加解密算法為AES-128-GMAC,若使用ESP進行驗證以及加密,則符合網(wǎng)卡加解密的加解密算法為AES-128-GCM。
103、若滿足預設加解密條件,則將IPsec連接對應的數(shù)據(jù)包發(fā)送給網(wǎng)卡進行加解密處理。
若IPsec連接對應的加解密算法滿足步驟102中網(wǎng)卡加解密的算法,并且IPsec連接對應的數(shù)據(jù)包封裝方式符合網(wǎng)卡加解密的數(shù)據(jù)包封裝方式,則將后續(xù)通過該IPsec連接進行傳輸?shù)臄?shù)據(jù)包發(fā)送給網(wǎng)卡,以使網(wǎng)卡對數(shù)據(jù)包進行加解密處理。
進一步的,當網(wǎng)卡對數(shù)據(jù)包加解密完成之后,將加解密后的數(shù)據(jù)包發(fā)送給數(shù)據(jù)包接收對象。其中的接收對象可以是DPDK等轉發(fā)數(shù)據(jù)包的應用,由于數(shù)據(jù)包已經(jīng)由網(wǎng)卡進行了加解密,因此不需要再將數(shù)據(jù)包發(fā)給內核進行加解密,DPDK直接將數(shù)據(jù)包發(fā)給更上層的應用,減少了數(shù)據(jù)包在用戶態(tài)和內核態(tài)之間的交互。
本發(fā)明實施例提供的數(shù)據(jù)加解密的方法,能夠在建立IPsec連接后,獲得IPsec連接對應的加解密算法與數(shù)據(jù)包封裝方式;判斷加解密算法與數(shù)據(jù)包封裝方式是否符合預設加解密條件,預設加解密條件為符合網(wǎng)卡加解密的加解密算法以及數(shù)據(jù)包封裝方式;若滿足預設加解密條件,則將IPsec連接對應的數(shù)據(jù)包發(fā)送給網(wǎng)卡進行加解密處理;將加解密后的數(shù)據(jù)包發(fā)送給數(shù)據(jù)包的接收對象。與現(xiàn)有技術相比,在VPN建立的虛擬專用網(wǎng)絡中需要對數(shù)據(jù)包進行加解密時,可以將符合網(wǎng)卡加解密條件的數(shù)據(jù)包在網(wǎng)卡中進行加解密,即現(xiàn)有的數(shù)據(jù)包轉發(fā)過程由“網(wǎng)卡-快速數(shù)據(jù)包處理應用-內核(加解密)”變?yōu)椤熬W(wǎng)卡(加解密)-快速數(shù)據(jù)包處理應用”,其中數(shù)據(jù)包加解密完成后都由快速數(shù)據(jù)包處理應用發(fā)出,可以看到相比將需要加解密的數(shù)據(jù)包發(fā)送給內核進行加解密的處理的方式減少了數(shù)據(jù)包在內核態(tài)和用戶態(tài)之間的來回交互,因此可以提高加解密數(shù)據(jù)包處理的效率。
進一步的,本發(fā)明另一實施例還給出了一種數(shù)據(jù)加解密的方法,如圖2所示,該方法包括:
201、建立IPsec連接。
使用VPN專屬網(wǎng)路通道進行通信的一端在與對端進行通信之前,首先需要建立端與端之間的IPsec連接,建立連接后,后續(xù)的數(shù)據(jù)傳輸都通過該連接進行。建立IPsec連接的具體過程與現(xiàn)有的建立方式相同。
202、獲得IPsec連接對應的加解密算法與數(shù)據(jù)包封裝方式以及安全關聯(lián)信息。
其中安全關聯(lián)信息包括安全參數(shù)索引(Security parameter index,SPI)、密鑰、目的網(wǎng)間協(xié)議(Internet Protocol,IP)地址以及鹽值Salt Value。SPI用于標識安全聯(lián)盟SA連接,密鑰是加解密過程的重要參數(shù),目的IP地址即為IPsec連接中作為通信對端的IP地址。Salt Value是通過在密碼任意固定位置插入特定的字符串。需要說明的是IPsec連接與SA連接之間存在對應的關系,具體的給出示例進行說明:若A與B之間建立IPsec連接,由于SA連接為單向邏輯連接,因此A到B的數(shù)據(jù)流對應一個SA連接,B到A的數(shù)據(jù)流也對應一個SA連接,但是對于同一IPsec連接的雙向數(shù)據(jù)流分別對應的兩個SA連接的序號通常是一致的。因此SA連接序號與IPsec連接是一一對應的關系。
在建立IPsec連接的過程中,會通過安全聯(lián)盟SA協(xié)商好通過VPN通信過程中需要使用的加密算法以及加密的方式、SPI、密鑰、目的IP地址等與管理和保護端與端之間通信連接相關的信息。因此可以在建立IPsec連接后可以獲得IPsec連接對應的加解密算法與數(shù)據(jù)包封裝方式以及安全關聯(lián)信息。
203、判斷加解密算法與數(shù)據(jù)包封裝方式是否符合預設加解密條件。
該步驟的實現(xiàn)方式與圖1步驟102的實現(xiàn)方式相同,此處不再贅述。
204、若滿足預設加解密條件,則為IPsec連接對應的會話信息上增加網(wǎng)卡加密標識以及網(wǎng)卡解密標識。
增加網(wǎng)卡加密標識是為了在將IPsec連接對應的數(shù)據(jù)包發(fā)送給網(wǎng)卡進行加密處理之前,根據(jù)網(wǎng)卡加密標識設置發(fā)送描述符IPsec有效位、與數(shù)據(jù)包對應的IPsec連接對應的SA連接序號、加密有效位以及數(shù)據(jù)包對應的IPsec連接的類型,以使網(wǎng)卡接收到數(shù)據(jù)包后根據(jù)發(fā)送描述符IPsec有效位、與數(shù)據(jù)包對應的IPsec連接對應的SA連接序號、加密有效位以及數(shù)據(jù)包對應的IPsec連接的類型確定是否可以對數(shù)據(jù)包進行加密處理。其中IPsec連接的類型在本實施例中包括AH類型和ESP類型。
增加網(wǎng)卡解密標識是為了在接收數(shù)據(jù)包時判斷數(shù)據(jù)包上的已解密標識與所述會話信息上的網(wǎng)卡解密標識是否匹配;若匹配,則確定數(shù)據(jù)包已被網(wǎng)卡成功解密。其中數(shù)據(jù)包上的已解密標識是根據(jù)接收描述符上的已解密標識添加的,其中接收描述符上的已解密標識是由網(wǎng)卡對數(shù)據(jù)包解密之后設置的。具體的,在數(shù)據(jù)包上添加已解密標識是指在數(shù)據(jù)包flags位打上已解密標識。
另外還需要將安全關聯(lián)信息對應寫入網(wǎng)卡中,以使網(wǎng)卡根據(jù)安全關聯(lián)信息對數(shù)據(jù)包進行加解密。具體的將安全關聯(lián)信息對應寫入網(wǎng)卡中是指將安全參數(shù)索引SPI、密鑰、目的IP地址以及鹽值Salt Value寫入網(wǎng)卡中,以使網(wǎng)卡根據(jù)密鑰以及Salt Value對數(shù)據(jù)包進行加密,根據(jù)安全參數(shù)索引SPI、密鑰、目的IP地址對數(shù)包進行解密。需要說明的是網(wǎng)卡在加解密過程使用的密鑰是對稱密鑰。
需要說明的是,安全關聯(lián)信息與IPsec連接一一對應,即每一個IPsec連接對應一組SPI、密鑰、目的IP地址以及Salt Value,而每一個IPsec連接對應一個SA,因此在網(wǎng)卡中寫入SPI、密鑰、目的IP地址以及Salt Value時,需要根據(jù)IPsec連接對應的SA連接序號將SPI對應的寫入SPI參數(shù)表中;根據(jù)IPsec連接對應的SA連接序號將密鑰對應的寫入密鑰表中;根據(jù)IPsec連接對應的SA連接序號將目的網(wǎng)間協(xié)議IP地址對應的寫入IP地址表中;根據(jù)IPsec連接對應的SA連接序號將Salt Value對應的寫入鹽值表中。給出具體的示例進行說明,假設IPsec連接對應的SA序號為1,則將SPI參數(shù)寫入SPI參數(shù)表中索引序號為1對應的位置中,將密鑰寫入密鑰表中索引序號為1的位置中,將目的IP地址寫入IP地址表中索引序號為1的位置中,將Salt Value寫入鹽值表中索引序號為1的位置中??梢钥吹綄儆谝粋€安全關聯(lián)信息中的SPI、密鑰、目的IP地址以及Salt Value分別對應的索引序號是相同的,并且與安全關聯(lián)信息對應的IPsec連接對應的SA連接序號也是相同的。
205、在IPsec連接斷開后,將網(wǎng)卡中對應IPsec連接的安全關聯(lián)信息刪除。
在SPI參數(shù)表中密鑰表中IP地址表中以及鹽值表中查找與對應IPsec連接對應的SA序號相同的索引序號對應的SPI、密鑰、目的IP地址以及Salt Value,并將查找到的SPI、密鑰、目的IP地址以及Salt Value刪除。在執(zhí)行刪除的動作時通過對應的應用程序接口實現(xiàn)的。
進一步的,若IPsec連接對應的加解密算法不滿足預設加解密條件,則將IPsec連接對應的數(shù)據(jù)包發(fā)送給內核進行加解密處理。這樣可以保證不滿足網(wǎng)卡加密條件的數(shù)據(jù)包還可以按照現(xiàn)有的數(shù)據(jù)包加解密的方式在內核中進行加解密。
進一步的,網(wǎng)卡進行加解密的功能在默認狀態(tài)下是關閉的,因此需要通過對應的應用程序接口開啟網(wǎng)卡的加解密功能。具體的是將網(wǎng)卡加解密功能對應的開關的寄存器對應的比特位清除。需要說明的是,在網(wǎng)卡開啟加解密功能的過程中,需要網(wǎng)卡暫停收發(fā)數(shù)據(jù)包。
進一步的,作為對上述各實施例的實現(xiàn),本發(fā)明實施例的另一實施例還提供了一種數(shù)據(jù)加解密的裝置,用于實現(xiàn)上述圖1和圖2所述的方法。如圖3所示,該裝置包括:獲得單元301、判斷單元302以及網(wǎng)卡發(fā)送單元303。
獲得單元301,用于建立網(wǎng)絡安全協(xié)議IPsec連接后,獲得IPsec連接對應的加解密算法與數(shù)據(jù)包封裝方式。
首先需要說明的是,本實施例應用于IPSec VPN技術中。在VPN專屬網(wǎng)絡中兩個交互端進行數(shù)據(jù)交互之前,需要建立IPsec連接。在建立IPsec的過程中,會經(jīng)過安全聯(lián)盟SA協(xié)商來確定在VPN專屬網(wǎng)絡通信過程中需要使用的加解密算法、加解密的方式以及數(shù)據(jù)包封裝方式等與管理和保護端與端之間通信連接相關的信息。
因此在建立IPsec連接后,可以獲得IPsec連接對應的加解密算法與數(shù)據(jù)包封裝方式。
判斷單元302,用于判斷加解密算法與數(shù)據(jù)包封裝方式是否符合預設加解密條件,預設加解密條件為符合網(wǎng)卡加解密的加解密算法以及數(shù)據(jù)包封裝方式。
當獲取到IPsec連接對應的加解密算法與數(shù)據(jù)包封裝方式之后,判斷是否符合網(wǎng)卡加解密的加解密算法以及數(shù)據(jù)包封裝方式。本實施例中符合網(wǎng)卡加解密的加解密算法為AES-128-GMAC和AES-128-GCM(128-bit key),符合網(wǎng)卡加解密的數(shù)據(jù)包封裝方式為隧道模式以及傳輸模式。另外,由于網(wǎng)卡對數(shù)據(jù)包加密時,數(shù)據(jù)包封裝方式只支持傳輸模式,不支持隧道模式,因此在數(shù)據(jù)包加密時符合網(wǎng)卡加密的數(shù)據(jù)包封裝方式為傳輸模式。
需要說明的是,若協(xié)商確定IPsec連接使用認證頭(Authentication Header,AH)或者封裝安全負載(Encapsulating Security Payload,ESP)驗證,則符和網(wǎng)卡加解密的加解密算法為AES-128-GMAC,若使用ESP進行驗證以及加密,則符合網(wǎng)卡加解密的加解密算法為AES-128-GCM。
網(wǎng)卡發(fā)送單元303,用于若滿足預設加解密條件,則將IPsec連接對應的數(shù)據(jù)包發(fā)送給網(wǎng)卡進行加解密處理。
進一步的,如圖4所示,裝置進一步包括:
增加單元304,用于若滿足預設加解密條件,為IPsec連接對應的會話信息上增加網(wǎng)卡加密標識以及網(wǎng)卡解密標識。
進一步的,如圖4所示,裝置進一步包括:
設置單元305,用于在將IPsec連接對應的數(shù)據(jù)包發(fā)送給網(wǎng)卡進行加密處理之前,根據(jù)網(wǎng)卡加密標識設置發(fā)送描述符IPsec有效位、與數(shù)據(jù)包對應的IPsec連接對應的安全聯(lián)盟SA連接序號、加密有效位以及數(shù)據(jù)包對應的IPsec連接的類型,以使網(wǎng)卡接收到數(shù)據(jù)包后根據(jù)發(fā)送描述符IPsec有效位、與數(shù)據(jù)包對應的IPsec連接對應的SA連接序號、加密有效位以及數(shù)據(jù)包對應的IPsec連接的類型確定是否可以對數(shù)據(jù)包進行加密處理,SA連接序號與IPsec連接一一對應。
進一步的,如圖4所示,裝置進一步包括:
獲取單元306,用于在建立IPsec連接后,獲取加解密需要的安全關聯(lián)信息,以使網(wǎng)卡根據(jù)安全關聯(lián)信息對數(shù)據(jù)包進行加解密;
寫入單元307,用于將安全關聯(lián)信息對應寫入網(wǎng)卡中,安全關聯(lián)信息與IPsec連接一一對應。
進一步的,寫入單元307用于:
將安全參數(shù)索引SPI、密鑰、目的IP地址以及鹽值Salt Value寫入網(wǎng)卡中,以使網(wǎng)卡根據(jù)密鑰以及Salt Value對數(shù)據(jù)包進行加密,根據(jù)安全參數(shù)索引SPI、密鑰以及目的IP地址對數(shù)包進行解密。
進一步的,如圖4所示,裝置進一步包括:
添加單元308,用于根據(jù)接收描述符上的已解密標識為數(shù)據(jù)包添加已解密標識,接收描述符上的已解密標識是由網(wǎng)卡對數(shù)據(jù)包解密之后設置的;
匹配單元309,用于判斷數(shù)據(jù)包上的已解密標識與會話信息上的網(wǎng)卡解密標識是否匹配;
確定單元310,用于若匹配,則確定數(shù)據(jù)包已被網(wǎng)卡成功解密。
進一步的,如圖4所示,寫入單元307包括:
第一寫入模塊3071,用于根據(jù)對應的SA連接序號將安全參數(shù)索引SPI對應的寫入SPI參數(shù)表中;
第二寫入模塊3072,用于根據(jù)對應的SA連接序號將密鑰對應的寫入密鑰表中;
第三寫入模塊3073,用于根據(jù)對應的SA連接序號將目的IP地址對應的寫入IP地址表中;
第四寫入模塊3074,用于根據(jù)對應的SA連接序號將Salt Value對應的寫入鹽值表中。
進一步的,如圖4所示,裝置進一步包括:
開啟單元311,用于通過應用程序接口開啟網(wǎng)卡的加解密功能。
網(wǎng)卡進行加解密的功能在默認狀態(tài)下是關閉的,因此需要通過對應的應用程序接口開啟網(wǎng)卡的加解密功能。具體的是將網(wǎng)卡加解密功能對應的開關的寄存器對應的比特位清除。需要說明的是,在網(wǎng)卡開啟加解密功能的過程中,需要網(wǎng)卡暫停收發(fā)數(shù)據(jù)包。
進一步的,如圖4所示,裝置進一步包括:
刪除單元312,用于在IPsec連接斷開后,將網(wǎng)卡中對應IPsec連接的安全關聯(lián)信息刪除。
在SPI參數(shù)表中密鑰表中IP地址表中以及鹽值表中查找與對應IPsec連接對應的SA序號相同的索引序號對應的SPI、密鑰、目的IP地址以及Salt Value,并將查找到的SPI、密鑰、目的IP地址以及Salt Value刪除。在執(zhí)行刪除的動作時通過對應的應用程序接口實現(xiàn)的。
進一步的,如圖4所示,裝置進一步包括:
內核發(fā)送單元313,用于若不滿足預設加解密條件,則將IPsec連接對應的數(shù)據(jù)包發(fā)送給內核進行加解密處理。
將IPsec連接對應的數(shù)據(jù)包發(fā)送給內核進行加解密處理。這樣可以保證不滿足網(wǎng)卡加密條件的數(shù)據(jù)包還可以按照現(xiàn)有的數(shù)據(jù)包加解密的方式在內核中進行加解密。
本發(fā)明實施例提供的數(shù)據(jù)加解密的裝置,能夠在建立IPsec連接后,獲得IPsec連接對應的加解密算法與數(shù)據(jù)包封裝方式;判斷加解密算法與數(shù)據(jù)包封裝方式是否符合預設加解密條件,預設加解密條件為符合網(wǎng)卡加解密的加解密算法以及數(shù)據(jù)包封裝方式;若滿足預設加解密條件,則將IPsec連接對應的數(shù)據(jù)包發(fā)送給網(wǎng)卡進行加解密處理;將加解密后的數(shù)據(jù)包發(fā)送給數(shù)據(jù)包的接收對象。與現(xiàn)有技術相比,在VPN建立的虛擬專用網(wǎng)絡中需要對數(shù)據(jù)包進行加解密時,可以將符合網(wǎng)卡加解密條件的數(shù)據(jù)包在網(wǎng)卡中進行加解密,即現(xiàn)有的數(shù)據(jù)包轉發(fā)過程由“網(wǎng)卡-快速數(shù)據(jù)包處理應用-內核(加解密)”變?yōu)椤熬W(wǎng)卡(加解密)-快速數(shù)據(jù)包處理應用”,其中數(shù)據(jù)包加解密完成后都由快速數(shù)據(jù)包處理應用發(fā)出,可以看到相比將需要加解密的數(shù)據(jù)包發(fā)送給內核進行加解密的處理的方式減少了數(shù)據(jù)包在內核態(tài)和用戶態(tài)之間的來回交互,因此可以提高加解密數(shù)據(jù)包處理的效率。
在上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
可以理解的是,上述方法及裝置中的相關特征可以相互參考。另外,上述實施例中的“第一”、“第二”等是用于區(qū)分各實施例,而并不代表各實施例的優(yōu)劣。
所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設備固有相關。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構造這類系統(tǒng)所要求的結構是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。
類似地,應當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權利要求中所明確記載的特征更多的特征。更確切地說,如下面的權利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權利要求書由此明確地并入該具體實施方式,其中每個權利要求本身都作為本發(fā)明的單獨實施例。
本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中。可以把實施例中的模塊或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的發(fā)明名稱(如數(shù)據(jù)加解密的裝置)中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。