999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

SM 3算法及在Linux內核IPSEC協議棧的實現

2015-01-01 02:01:43四川職業技術學院計算機科學系四川遂寧629000
宜賓學院學報 2015年6期

吳 瑕(四川職業技術學院計算機科學系,四川遂寧629000)

SM 3算法及在Linux內核IPSEC協議棧的實現

吳瑕
(四川職業技術學院計算機科學系,四川遂寧629000)

基于國家密碼管理局發布的SM3密碼雜湊算法,實現一種嵌入Linux內核的符合Linux內核算法框架的HAMC算法,用于IPSEC協議棧對數據報文的驗證算法,使得SM3算法能夠在網絡層對通信雙方的加密數據進行完整性校驗.

SM3;IPSEC;雜湊值;HMAC

Wu X.The SM3 Algorithm and the Realization of IPSECProtocol Stack in Linux Kernel[J].Journal of Yibin University, 2015,15(6):89-92.

密碼雜湊算法在電子簽名和數據完整性機制中被廣泛應用,是一種非線性迭代函數,可將任意長度的消息壓縮成一定長度的數字摘要,使之滿足抗可逆性分析與抗碰撞性分析等密碼學特性[1].

雜湊函數是現代密碼學中一種重要的基礎算法,雜湊算法在構建信息安全系統的過程中,提供了對數據完整性認證和對消息源認證的支撐功能.常用的雜湊函數有很多,其中以SHA-1算法和MD5算法為代表,該類算法具有壓縮函數非線性度高、消息填充和分組強等優點.但隨著技術的發展,差分碰撞分析針對雜湊算法的攻擊技術不斷出現,這些算法在抵制安全性威脅方面的缺點也日益突出.法國和日本等多國的密碼學家都對此進行了持續研究,尋找雜湊算法的碰撞實例,美國NIST5報告中提出由于MD5等的破解,美國聯邦機構決定將在2010年逐步撤出SHA-1的使用[2].我國的密碼攻擊技術在差分漏洞分析、差分路徑設計和碰撞攻擊算法設計方面已經處于國際領先水平,并且一直致力于開發新的雜湊函數.基于此,國家密碼管理局發布了適用于商用密碼應用的SM3密碼雜湊算法.

1 SM 3密碼雜湊算法

SM3密碼雜湊算法是一種基于分組迭代結構的雜湊算法,該算法采用消息雙字結合的消息字處理方式,使用來自不同群運算的混合,實現了消息在局部范圍內快速擴散和混亂,有效防止了比特追蹤及其他已知分析方法對算法造成的安全性威脅.下面詳細描述算法的實現過程.

1.1算法描述

對長度為l(l<264)比特的消息m,SM3雜湊算法經過填充和迭代壓縮,生成雜湊值,雜湊值長度為256比特[3].

1.2消息填充

假設消息m的長度為l比特,首先將比特“1”添加到消息的末尾,再添加 k個“0”,k是滿足l+1+k≡448mod512的最小的非負整數.然后再添加一個64位比特串,該比特串是長度l的二進制表示.填充后的消息m′的比特長度為512的倍數.

1.3迭代壓縮過程

將填充后的消息m′按512比特進行分組:m′=B(0)B(1)…B(n-1),其中n=(l+k+65)512.對m′按下列形式化方式迭代:

for i=0 to n-1

V(i+1)=CF(V(i),B(i))

endfor

其中CF是壓縮函數,V0為256比特初始值IV,B(i)為填充后的消息分組,迭代壓縮的結果為V(n).

1.4消息擴展

為了減小雜湊碰撞的幾率,還需要對填充后的消息進行“信息膨脹”,即消息擴展,將消息分組B(i)按以下方法擴展生成 132個字 w0,w1,...,w67,用于壓縮函數CF,擴展方法如下:

1)將消息分組B(i)劃分為16個字w0,w1,...,w15.

2)利用置換函數 P1[P1(X)=X⊕(X?15)⊕(X?23)],按照如下形式化語言通過輪數迭代擴展中間52個字:

for j=16 to 67

wj←P1(wj-16⊕wj-9⊕(wj-3?15))⊕wj-6

endfor

3)最后64個字的按照如下方式做32比特異或運算后得到,算法實現的形式化語言描述如下:

for j=0 to 63

wj=wj⊕wj+4

endfor

通過以上三步的消息擴展運算.

1.5壓縮函數

令A、B、C、D、E、F、G、H為字寄存器,SS1、SS2、TT1、TT2為中間變量,壓縮函數Vi+1=CF(V(i),B(i)),0≤i≤n-1.計算過程描述如下:

ABCDEFGH←Vi

for j=0 to 63

SS1←(A<<<12)+E+(Tj<<<j))<<<7

SS2←SS1⊕(A<<<12)

TT1←FFj(A,B,C)+D+SS2+

TT2←GGj(E,F,G)+H+SS1+Wj

D←C

C←B<<<9

B←A

A←TT1

H←G

G←F<<<19

F←E

E←P0(TT2)

endfor

V(i+1)←ABCDEFGH⊕V(i)

其中,字的存儲為大端(big-endian)格式.

1.6雜湊值

通過1.5中壓縮函數的運算最終得到V(n),把V(n)的值賦給ABCDEFGH即是最終的雜湊值,其輸出的形式化描述如下:

ABCDEFGH←V(n)

輸出256比特的雜湊值:

y=ABCDEFGH

2 HMAC算法

HMAC是密鑰相關的哈希運算消息認證碼(Hash-based Message Authentication Code),HMAC運算利用哈希算法,以一個密鑰和一個消息為輸入,生成一個摘要作為輸出[4].

HMAC用于保護消息的完整性,它采用指定的摘要算法通過密鑰對消息進行混合運算[5]得到一個固定的摘要值作為HMAC的輸出,用于數據完整性校驗.消息傳輸時,用戶不僅傳送消息本身,還傳送消息校驗產生的HMAC值.接收方接收數據后對消息本身進行HMAC運算,再把運算結果與原始消息中附帶的HMAC值對比是否一致.由于密鑰只有發送方和接收方才有,其他人不可能偽造假的HMAC值,從而能夠知道消息是否被篡改.

HMAC算法的算法描述如下[6]:

如果用H、K、opad、ipad、B分別表述算法中用到的參數信息,其中:

(1)H表示采用的hash算法;

(2)K代表認證密碼;

(3)opad是一個外部的填充常數,用0x5a來填充為一個長度為B字節的常數;

(4)ipad是一個內部的填充常數,用0x36來填充為一個長度為B字節的常數;

(5)B表示hash算法H所處理的數據塊的大小.

則算法可以如下描述:

HMAC(K,M)=H(K⊕opad|H(K⊕ipad|M))

即為以下步驟:

(1)擴展認證密碼K(在K后面添加0)得到字長為B的擴展密鑰K1.

(2)將K1與ipad做異或運算.

(3)將消息M填充至第二步的結果字符串中.

(4)用hash算法H作用于M,生成消息M 2.

(5)將K1與opad做異或運算.

(6)再將(4)的結果填充進(5)的結果中.

(7)用H作用于(6)生成消息M 3,輸出最終結果.

HMAC算法引入了密鑰的概念,因此其算法的安全性已經不完全依賴于所采用的hash算法,在IP?SECVPN的組網應用中通信雙方使用的HMAC密鑰是通過協商得到的,因此即使知道了通信雙方采用的hash算法,如果不知道通信雙方公共的密鑰,即使是基于散列函數的沖突攻擊也是無法破解的.此外HMAC身份認證中也有很多是“挑戰/響應”(chal?lenge/response)等具體的應用.

3 HMAC-SM 3算法在Linux內核ISPEC協議棧的應用

IPSec不是一個單獨的協議,它給出了應用于IP層的一整套網絡數據安全的體系結構.該體系結構包括認證頭協議(Authentication Header,AH)、封裝安全負載協議(EncapsulatingSecurity Payload,ESP)、密鑰管理協議(Internet Key Exchange,IKE)和用于網絡認證及加密的一些算法等[7-8].協議中數據的完整性校驗是通過HASH算法來實現的.

本算法實現基于Linux-2.6.33.4內核完成,采用IPSec VPN隧道模式組建VPN網絡,隧道封裝采用ESP模式,通信算法密鑰長度為256比特,密鑰通過應用層靜態加入到Linux內核SAD數據庫中,基于SM3算法對長度為ain_len的數據進行HAMC運算,輸出長度為32字節的數據.

根據國家密碼管理局發布的GM/T0022-2014 《IPSec VPN技術規范》,SM3算法的算法id為20.算法ID定義如下:

#define SADB_AALG_SM3HMAC20

由于Linux內核數據報文的長度是根據不同的網絡MTU和設備主存儲器的設置而定,所以是不固定的,為了保證通信雙方能夠對同樣的數據得到相同的hash結果,就需要對數據進行分段處理,通常hash算法都是基于三段式實現的,即:

XXX_INIT();

XXX_UPDATE();

XXX_FINAL();

調用的流程如圖1所示.

三段式調用方法通常會把一段數據分成若干組,首先對第一個分組數據作運算,把運算的結果作為下一個分組的種子參數,直到最后一組數據運算結束得到運算結果.分段運算輸出結果的數據結構定義如下:

struct sm3_state

{

U64count;

U32state[8];

U8buf fer[64]

}

圖1 流程圖

Linux內核SM3算法網絡數據處理流程見圖2.

網絡數據通過網卡接收到本地設備上以后,網絡數據通常不是存儲在一個線性緩沖區中,而是通過數據指針把各個分散的緩沖區數據連接起來,構成一整段報文.數據進入ipsec協議棧以后首先驗證數據的完整性,分散的數據就會被一段一段地送入到雜湊算法接口中去[9].

雜湊算法首先通過init設置數據處理狀態,為SM3算法添加各個階段的ID,然后在update中把收集到的數據(長度為LEN)進行處理,算法定義塊長度為BLOCKLEN.如果長度LEN和BLOCKLEN長度相等,則調用hash算法得到一個輸出;如果小于BLOCKLEN,則拷貝到算法私有的存儲空間中等待下一部分數據到來;如果數據長度大于BLOCKLEN,則把數據分割成若干個BLOCKLEN塊和一個剩余塊,即:LEN=N×BLOCKLEN+X(X<BLOCKLEN).這個剩余塊稱之為尾數,最后在Final中調用SM3完成對尾數的處理.

通過這種方法,不管通信雙方對數據做如何分割,雙方最終都是把數據分割成N×BLOCKLEN+X來完成雜湊算法的計算.這樣通信雙方得到的結果都是對同一數據做了N+1次相同運算,從而保證了算法在網絡通信中的正確性.

圖2 網絡數據的處理流程

4 實驗

為了驗證算法的正確性,在兩臺設備之間建立IPSECVPN隧道,隧道通信采用ESP/封裝,加密算法采用AES,認證算法采用HMAC-SM3,測試平臺的配置如為:CPU:Intel(R)Xeon(R)E5620@2.40GHz 16核;內存:12GB;網卡:Intel Corporation 82574L GigabitEthernetcontroller.

兩個平臺之間建立site-to-site環境,測試儀器采用Smartbits-600.

測試結果性能如表1所示.

表1 采用SM3算法的密通速率測試結果

相同的測試環境下加密算法采用AES,認證算法采用HMAC-SHA1得到的測試結果如表2所示.

表2 采用SHA1算法的密通速率測試結果

試驗結果表明采用Smartbits-600網絡測試儀開啟網口協商出來的鏈路速率是1 000Mbps,在1 000 Mbps的鏈路上丟包率為0的情況下,采用AES+SM3算法套件,64 Byte的小包單邊達到了106.1Mbps,1 420 Byte的大包單邊達到了578.8Mbps.從算法性能上看,AES+SM3算法套件和AES+SHA1算法套件的結果相比有一定差距,但是不影響設備的正常工作,算法的穩定性和安全性符合要求.

5 結論

通過實驗數據可以看出,把SM3算法高效地集成在操作系統內核,作為一種HMAC算法,能夠支持對網絡數據進行完整性校驗,同時也可以看出算法在底層的小包執行效率相對其他算法來說相對較低,如何優化算法提高算法的執行效率需要做進一步的研究.

[1]Davis CR.IPSec_VPN的安全實施[M].周永彬,等譯.北京:清華大學出版社,2002.

[2]李師謙.基于雜湊函數的數據完整性研究[J].山東理工大學學報(自然科學版),2003(3):27-31.

[3] 王曉燕,楊先文.基于FPGA的SM3算法優化設計與實現[J].計算機工程,2012(6):244-246.

[4]國家密碼管理局.GM/T 0004-2012.SM3密碼雜湊算法[S].北京:中國標準出版社,2012.

[5]Stinson DR.密碼學原理與實踐[M].第三版.北京:電子工業出版社,2009.

[6]Krawczyk H,Bellare M,Canetti R.HMAC:Keyed-Hashing for Message Authentication[EB/OL].(1997-02)[2013-09-18].http://www.faqs.org/rfcs/rfc2104.htm l.

[7]Forouzan B A.密碼學與網絡安全[M].北京:清華大學出版社, 2009.

[8]Kent S,Atkinson R.IP encapsulating security payload(ESP)[EB/OL].(1988-11)[2013-09-22].http://www.faqs.org/rfcs/rfc2406.ht?ml.

[9]Glenn R,Kent S.The NULL encryption algorithm and its usewith ipsec[EB/OL].(1988-11)[2013-10-13].http://www.faqs.org/rfcs/rfc2410.htm l.

(編校:許潔)

The SM 3 Algorithm and the Realization of IPSEC Protocol Stack in Linux Kernel

WUXia
(DepartmentofComputerScience,Sichuan Vocationaland TechnicalCollege,Suining,Sichuan 629000,China)

Based on the SM3 password hash algorithm issued by National Cipher Management Bureau,an HAMC algo?rithm which is in consistentwith the Linux kernel algorithm framework was proposed.The implementation of an embed?ded Linux kernel based on IPSEC protocol stack is used to validate the algorithm of data packet,so that SM3 algorithm could realize the integrity check ofencryption data from both sidesof the communication on thenetwork layer.

SM3;IPSEC;hash value;HMAC

TP39

A

1671-5365(2015)06-0089-04

2014-12-17修回:2015-01-20

吳瑕(1983-),女,講師,碩士,研究方向為計算機應用

網絡出版時間:2015-01-20 17:17網絡出版地址:http://www.cnki.net/kcms/detail/51.1630.Z.20150120.1717.001.html

引用格式:吳瑕.SM3算法及在Linux內核IPSEC協議棧的實現[J].宜賓學院學報,2015,15(6):89-92.

主站蜘蛛池模板: 欧美午夜小视频| 久久香蕉国产线看观看式| 秋霞午夜国产精品成人片| 国产一级毛片在线| 亚洲成人高清无码| 国产精品成人观看视频国产 | 久久精品娱乐亚洲领先| 伊人天堂网| 久久青草热| 中文纯内无码H| 欧美一级夜夜爽www| 91成人免费观看| 亚洲精品国产精品乱码不卞| 无码中文字幕乱码免费2| 久久国产热| 18禁黄无遮挡网站| 欧美精品综合视频一区二区| 午夜福利免费视频| 欧美日韩国产在线观看一区二区三区 | 呦系列视频一区二区三区| 日本日韩欧美| 69精品在线观看| 美女一级免费毛片| 免费国产高清视频| 呦视频在线一区二区三区| 青草午夜精品视频在线观看| 国产精品三级专区| 亚洲丝袜第一页| 亚洲人成影院在线观看| 亚洲丝袜第一页| 日韩无码黄色| 欧美激情福利| 欧美激情二区三区| 亚洲天堂日韩av电影| 无码专区在线观看| 亚洲无卡视频| 丰满人妻久久中文字幕| 五月天久久综合国产一区二区| 欧美五月婷婷| 四虎成人免费毛片| 久久婷婷综合色一区二区| 欧美日韩一区二区在线播放 | 亚洲免费黄色网| 91精品国产一区| 嫩草国产在线| 色悠久久综合| 亚洲成a人片在线观看88| 国产福利小视频在线播放观看| 国产精品嫩草影院视频| 日韩中文精品亚洲第三区| 91国内在线观看| 国产幂在线无码精品| 一区二区三区四区日韩| 国产美女主播一级成人毛片| 亚洲永久视频| 免费观看欧美性一级| 色老二精品视频在线观看| 国产成人精品高清不卡在线| 色婷婷亚洲综合五月| 中文字幕欧美日韩| 在线欧美一区| 2024av在线无码中文最新| 夜精品a一区二区三区| 91麻豆精品国产高清在线 | 亚洲第一av网站| 狠狠色香婷婷久久亚洲精品| 拍国产真实乱人偷精品| a毛片基地免费大全| 国产一级毛片网站| 日韩精品无码免费专网站| 亚洲AⅤ永久无码精品毛片| 精品视频一区二区观看| 91蝌蚪视频在线观看| 精品午夜国产福利观看| 三上悠亚精品二区在线观看| 亚洲精品不卡午夜精品| 久久久久青草线综合超碰| 亚洲成人黄色在线| 国产乱人免费视频| 精品无码视频在线观看| 91口爆吞精国产对白第三集| 精品色综合|