鏈路加密方案的設(shè)計思想

數(shù)據(jù)鏈路層是OSI系統(tǒng)結(jié)構(gòu)中的第二層,如果采用鏈路加密,則網(wǎng)絡(luò)中每條通信鏈路上的加密是獨(dú)立實現(xiàn)的。對每條鏈路可以使用不同的加密密鑰,這樣,當(dāng)某條鏈路受到破壞時也不會導(dǎo)致其他鏈路上傳遞的加密信息被解出。

NDIS微端口驅(qū)動位于網(wǎng)絡(luò)鏈路層,是網(wǎng)絡(luò)驅(qū)動中與網(wǎng)卡結(jié)合最緊密的驅(qū)動程序。因此可以對微端口驅(qū)動程序進(jìn)行改造,在驅(qū)動程序中實現(xiàn)對數(shù)據(jù)幀的截取,并調(diào)用加解密模塊對數(shù)據(jù)進(jìn)行加解密。對驅(qū)動程序的改造大體可以分為兩步:截取數(shù)據(jù)幀和加解密模塊的實現(xiàn)。

(1)截取數(shù)據(jù)幀

NDIS庫為微端口驅(qū)動程序提供了一系列接口函數(shù)。微端口驅(qū)動程序可以利用這些函數(shù)在主機(jī)與網(wǎng)絡(luò)之間建立聯(lián)系,也可以利用這些函數(shù)來截取數(shù)據(jù)。

在發(fā)送本機(jī)數(shù)據(jù)到網(wǎng)卡之前,可以在微端口驅(qū)動程序中加入截取子程序截獲數(shù)據(jù)幀,并把數(shù)據(jù)幀送入加密模塊進(jìn)行加密,然后將加密后的密文送入網(wǎng)卡緩沖區(qū)中。接收數(shù)據(jù)時,從網(wǎng)卡緩沖區(qū)中接收的密文被送入主機(jī)內(nèi)存。密文在送往上層網(wǎng)絡(luò)驅(qū)動程序之前被接收截取子程序截獲,并調(diào)用解密模塊將其解密成明文,之后再將明文數(shù)據(jù)送交上層處理。

(2)加解密模塊

考慮到幀長的限制,對于數(shù)據(jù)幀加密要求必須保證其明文和密文長度相等。因此在加解密模塊當(dāng)中采用分組密碼算法。分組密碼的工作方式是將明文分成固定長度的組(塊),用同一密鑰對每一塊加密,輸出也是固定長度的密文。

考慮到軟件加解密過程速度較慢,為了提高速度,直接將加解密模塊嵌入到微端口驅(qū)動程序中,這樣所有對數(shù)據(jù)的處理將全部在系統(tǒng)底層進(jìn)行,大大提高了數(shù)據(jù)處理的效率。最后將所有模塊集成在一起,編譯生成網(wǎng)卡驅(qū)動程序MYNE200.SYS文件,分別安裝在兩臺主機(jī)中進(jìn)行測試。

小知識之?dāng)?shù)據(jù)鏈路:

在數(shù)據(jù)通信網(wǎng)中,按一種鏈路協(xié)議的,技術(shù)要求連接兩個或多個數(shù)據(jù)站的電信設(shè)施,稱為數(shù)據(jù)鏈路,簡稱數(shù)據(jù)鏈。