鏈路加密方案的設(shè)計(jì)思想
數(shù)據(jù)鏈路層是OSI系統(tǒng)結(jié)構(gòu)中的第二層,如果采用鏈路加密,則網(wǎng)絡(luò)中每條通信鏈路上的加密是獨(dú)立實(shí)現(xiàn)的。對(duì)每條鏈路可以使用不同的加密密鑰,這樣,當(dāng)某條鏈路受到破壞時(shí)也不會(huì)導(dǎo)致其他鏈路上傳遞的加密信息被解出。
NDIS微端口驅(qū)動(dòng)位于網(wǎng)絡(luò)鏈路層,是網(wǎng)絡(luò)驅(qū)動(dòng)中與網(wǎng)卡結(jié)合最緊密的驅(qū)動(dòng)程序。因此可以對(duì)微端口驅(qū)動(dòng)程序進(jìn)行改造,在驅(qū)動(dòng)程序中實(shí)現(xiàn)對(duì)數(shù)據(jù)幀的截取,并調(diào)用加解密模塊對(duì)數(shù)據(jù)進(jìn)行加解密。對(duì)驅(qū)動(dòng)程序的改造大體可以分為兩步:截取數(shù)據(jù)幀和加解密模塊的實(shí)現(xiàn)。
(1)截取數(shù)據(jù)幀
NDIS庫(kù)為微端口驅(qū)動(dòng)程序提供了一系列接口函數(shù)。微端口驅(qū)動(dòng)程序可以利用這些函數(shù)在主機(jī)與網(wǎng)絡(luò)之間建立聯(lián)系,也可以利用這些函數(shù)來截取數(shù)據(jù)。
在發(fā)送本機(jī)數(shù)據(jù)到網(wǎng)卡之前,可以在微端口驅(qū)動(dòng)程序中加入截取子程序截獲數(shù)據(jù)幀,并把數(shù)據(jù)幀送入加密模塊進(jìn)行加密,然后將加密后的密文送入網(wǎng)卡緩沖區(qū)中。接收數(shù)據(jù)時(shí),從網(wǎng)卡緩沖區(qū)中接收的密文被送入主機(jī)內(nèi)存。密文在送往上層網(wǎng)絡(luò)驅(qū)動(dòng)程序之前被接收截取子程序截獲,并調(diào)用解密模塊將其解密成明文,之后再將明文數(shù)據(jù)送交上層處理。
(2)加解密模塊
考慮到幀長(zhǎng)的限制,對(duì)于數(shù)據(jù)幀加密要求必須保證其明文和密文長(zhǎng)度相等。因此在加解密模塊當(dāng)中采用分組密碼算法。分組密碼的工作方式是將明文分成固定長(zhǎng)度的組(塊),用同一密鑰對(duì)每一塊加密,輸出也是固定長(zhǎng)度的密文。
考慮到軟件加解密過程速度較慢,為了提高速度,直接將加解密模塊嵌入到微端口驅(qū)動(dòng)程序中,這樣所有對(duì)數(shù)據(jù)的處理將全部在系統(tǒng)底層進(jìn)行,大大提高了數(shù)據(jù)處理的效率。最后將所有模塊集成在一起,編譯生成網(wǎng)卡驅(qū)動(dòng)程序MYNE200.SYS文件,分別安裝在兩臺(tái)主機(jī)中進(jìn)行測(cè)試。
小知識(shí)之?dāng)?shù)據(jù)鏈路:
在數(shù)據(jù)通信網(wǎng)中,按一種鏈路協(xié)議的,技術(shù)要求連接兩個(gè)或多個(gè)數(shù)據(jù)站的電信設(shè)施,稱為數(shù)據(jù)鏈路,簡(jiǎn)稱數(shù)據(jù)鏈。










