協(xié)同開發(fā)環(huán)境下的信息加密傳輸機制
針對協(xié)同開發(fā)環(huán)境的特點,我們結(jié)合Lamport提出的一次性口令方案給出了在協(xié)同開發(fā)環(huán)境下的一種高效加密傳輸機制。該加密機制中借鑒了滑動窗口協(xié)議的思想,并揉進了一個能夠?qū)蛻艉头掌鬟M行相互認證的加密認證算法。
一、數(shù)據(jù)安全快速傳輸
為解決應用環(huán)境下的數(shù)據(jù)安全快速傳輸問題,我們結(jié)合Lamport提出的一次性口令方案和一個已有的加密算法,本文給出了一種數(shù)據(jù)傳輸機制。
1、Lamport方案
Lamport提出的一次性口令方案不需要使用特殊硬件便可實施。假設存在某個函數(shù)F很容易進行正向計算,而不可能有效地進行逆向計算(密碼散列函數(shù)就是一個很好的候
選算法)。進一步假設用戶有某個秘密或許是一個口令x,為了保證用戶以某個次數(shù)進行登錄,主機計算出次數(shù)F(x)。因此,假設在口令改變前允許100次登錄,那么主機應計算出F100( x),并只存儲該值。用戶第一次登錄時,它應提供F99(x)。系統(tǒng)通過計算F( F99(x))=F100(x)進行驗證。如果登錄正確,所提供的口令F99( x)就變成新的存儲值,它又被用于對F98(x)進行驗證,它是用戶下一次提供的口令。
2、滑動窗口協(xié)議
滑動窗口協(xié)議可以解決傳輸中的數(shù)據(jù)包受損、數(shù)據(jù)包丟失和過早超時等情況下的數(shù)據(jù)同步問題?;瑒哟翱趨f(xié)議分為三類,即1位滑動窗口協(xié)議、退后N幀協(xié)議和選擇性重傳協(xié)議。在滑動窗口協(xié)議中,為每個數(shù)據(jù)包分配一個序列號,范圍從0到某個最大值,代表已發(fā)送但尚未確認的數(shù)據(jù)包。當接收到來自應用的數(shù)據(jù)請求后,發(fā)送方將其打包并分配一個最大的序列號,隨后將窗口的上限加1,在確認到達時,將窗口的下限加1。采用這種方法,窗口可持續(xù)維持一系列未確認的數(shù)據(jù)包。因為發(fā)送方窗口內(nèi)的當前數(shù)據(jù)包可能在傳輸中丟失或損壞,所以發(fā)送方必須保存所有未經(jīng)確認的數(shù)據(jù)包,以備重傳。
接收方的窗口對應著允許接收的數(shù)據(jù)包,對于任何落在窗口以外的數(shù)據(jù)包都不加說明地丟棄。當序列號等于窗口下限的數(shù)據(jù)包收到后,就產(chǎn)生一個確認,且窗口整個向前移動一個位置?;瑒哟翱趨f(xié)議一般采用所謂的捎帶確認技術(shù),以提高數(shù)據(jù)傳輸?shù)男?。其處理過程為,當一個數(shù)據(jù)包到達之后,接收方不是立即發(fā)送一個獨立的確認,而是維持等待,直到上層向其傳送下一個分組,確認被附加到即將發(fā)送的數(shù)據(jù)包上,也就是說,確認是附加在下一個將發(fā)送的數(shù)據(jù)包上進行傳送的。這種技術(shù)既能有效地利用帶寬,又能減少數(shù)據(jù)通信次數(shù)。
3、一種一次性口令相互認證方案
用戶U和服務器S共享信息為:U的對稱密鑰k:單鑰加密算法、解密算法Ek( m),Dk( m),安全單向的Hash函數(shù)H;用戶的標識符Uid。并且服務器S中存放著用戶H( Uid)處理后的用戶列表List。協(xié)議流程如下:
(1)客戶端
begin:
計算h= H( Uid),將h發(fā)送給S,并啟動超時計數(shù)器。
若超時收不到S的應答,則退出會話。
若收到S的應答,使用k解密(x,hs)=Dk( es)得到x,hs,并判斷hs=H(x,k)是否成立;
若不成立,則證明S是假冒的,終止與S的會話。
若成立,則S的身份得到了驗證,計算a= H(x,h,k),加密eu=Ek(a),然后發(fā)送eu給S。
end
(2)服務器端
begin:
監(jiān)聽是否有客戶請求鏈接:
若無則轉(zhuǎn)其他任務。
若有請求到來,判斷h是否屬屬于list:
若是,表明Uid合法。則由隨機數(shù)生成器生成隨機數(shù)x=randan(),使用對稱密k計算hs =H(x,k):es=Ek(x.hs),然后將es發(fā)送給U,并啟動超時計數(shù)器。
否則,說明U為非法用戶,終止與U的會話。
若超時,則結(jié)束本次會話。
若未超時并收到客戶的應答則對收到的eu進行解密,a=Dk( eu),并計算b=H(x,h,k),然后驗證a=b是否成立:
若成立則U的身份得到了驗證。
否則,說明U為非法用戶,終止與U的會話。
end
二、CSCW數(shù)據(jù)安全傳輸機制
結(jié)合以上基礎和引言所述的特定工作環(huán)境,現(xiàn)給出CSCW集中一復制式環(huán)境下的數(shù)據(jù)安全快速傳輸機制如下:以客戶機向服務器申請上傳資源為例來描述實現(xiàn)機制。初始客戶U向服務器注冊時,提供了共享口令密鑰k和資源初始密鑰文件Fuo,服務器批準用戶Uid’并把H( Uid)加入list。資源初始密鑰文件Fuo是這樣一個流文件,其大小要與客戶首次上傳的資源文件Fui的大小滿足len( Fu1)/len( Fu1≈1,由各注冊用戶指定并提供以確保這一條件。假定每一次傳輸都正確無誤碼,且客戶與服務器無冒充,則客戶向服務器傳送的資源系列文件為Fu1......Fun;。為保證傳送安全,客戶在首次上傳時,上傳F1=f(Fu1Fuo),其中f函數(shù)滿足f(ff(x,y)y)=x即f運用與明文等大的密鑰加密文件,在密碼保密條件下不可破譯。服務器在接收到F.后,進行F'1=f( F1,F(xiàn)uo)運算,把F1'作為新版資源加入到系統(tǒng)中并更新本地Fu0為F1',作為下一次接收的密鑰文件,后續(xù)傳送以此類推。
上述前提是在理想狀況下,然而網(wǎng)絡傳輸總是有錯誤的可能發(fā)生,并且客戶與服務器需彼此驗證,為此,引入一種類似滑動窗口協(xié)議的機制來保證在傳輸失敗的條件下確保數(shù)據(jù)的一致性。服務器和客戶維持一個大小為1的滑動窗口,窗口的上下限為[0,N],Ⅳ為一大數(shù)。與標準滑動窗口不同的是,本文所述在檢測某次傳輸是否成功不是在發(fā)送方發(fā)出后等待接收方發(fā)送響應的方式,而是利用下一次傳輸數(shù)據(jù)開始前的相關(guān)認證過程來檢測上一次傳輸是否成功,即數(shù)據(jù)包是大粒度的,兩次傳輸?shù)拈g隔時間也是大粒度的。而且一旦檢測到上一次傳輸失敗,也不再進行本次傳輸,而且是立即調(diào)整本次傳輸?shù)拿荑€,然后重新啟動本次傳輸,以防臟數(shù)據(jù)形成。初始時服務器端和客戶端的窗口號分別為Ws =0,Wu =0;在每一次傳輸起始相互認證階段,服務器向客戶發(fā)送自己的窗口號,客戶檢測服務器發(fā)送的窗口號是否與自身相等,若相等則繼續(xù)本次會話,否則通知服務器調(diào)整密鑰,重新啟動本次會話??蛻舳送瓿蓴?shù)據(jù)傳送后,更新Wu=Wu+1。服務器在成功向系統(tǒng)提交上傳資源后更新Ws=Ws+1;在某次傳送中Wu或Ws =N,則置Wu =1或Ws =1。加密算法的完整描述如下:
(1)客戶端
begin:
計算h= H( uid),將h發(fā)送給S,并啟動超時計數(shù)器。
若超時收不到S的應答,則退出會話。
若收到S的應答,使用對稱密鑰k解密(x,hs)=Dk( es),得到(x,hs),并判斷hs =H(x,k):
若不成立,則證明S是假冒的,終止與S的會話。
若成立,則計算a= H(x,h,k),且eu=Ek(a)和計算標志W(wǎng)s=Wu。
若Ws=Wu則c=0,將eu和c傳送給S,然后開始向S傳送數(shù)據(jù)包,送畢置Wu= Wu+1。
若Wu =N,則Wu=1。
若Ws=Wu不成立則置c=1,將Fuo置為初始化資源密鑰,且Wu =0,將eu和c傳送給S,并重新啟動會話。
end
(2)服務器端
begin:
監(jiān)聽是否有客戶請求鏈接:
若無則轉(zhuǎn)其他任務。
若有請求到來,判斷h是否屬于list:
若是,表明Uid合法,則由隨機數(shù)生成器生成隨機數(shù)x=randan(),使用對稱密k計算hs=H(x,k):es=Ek(x,hs),然后將es和Ws發(fā)送給U,并啟動超時計數(shù)器。
若不是,則證明U是假冒的,終止與U的會話若超時,則結(jié)束本次會話。
若未超時并收到客戶的應答則對收到的eu和c計算a=Dk( eu),并且計算b=H(X'h,k),然后驗證a=b是否成立:
若不成立,終止與U的會話。
若成立,則判斷是否c為o:
若為0,則等待接收U端的數(shù)據(jù)包,接收后將其解密為FI,傳送給系統(tǒng)且將F更新為Fr,Ws =Ws+l,若Ws=N,則Ws =1。
若c為1,則置Fuo為初始化資源密鑰,且Ws =0,返回。
End
三、協(xié)同開發(fā)環(huán)境下的信息加密傳輸機制的特點
(1)協(xié)同開發(fā)環(huán)境下的信息加密傳輸機制充分利用了在前文所述的特定環(huán)境,并把Lamport方案和這種環(huán)境結(jié)合起來。在這種應用環(huán)境下,服務器與客戶持有與對方身份高度內(nèi)聚的相關(guān)信息,并且這種信息是動態(tài)變化的,為加密的安全性提供了保障。
(2)采用上述數(shù)據(jù)傳送機制,實現(xiàn)了認證的基本功能,認證是安全的,有效的。
(3)將窗口滑動機制的確認階段放在下一次傳輸?shù)钠鹗茧A段,簡化了加密算法,可靠性也通過相互認證得到保證。
(4)口令加密解密和數(shù)據(jù)包解密,都采用了一次性口令機制,口令的一次性是由x= random()隨機數(shù)的采用而保證的,數(shù)據(jù)包的一次性口令是由在傳送序列F1…Fn中,由F是Fi+i的密鑰的條件保證的。
(5)數(shù)據(jù)包的加解密是安全高效的,由于數(shù)據(jù)包明文和密鑰等長,因而可以采取計算復雜性為O(n),(n為數(shù)據(jù)包的長度)的簡單函數(shù)f(f(x,y),y)=x來進行加密和解密。
小知識之Lamport算法
Lamport算法:又稱面包房算法,先來先服務算法。跟很多銀行采用的排隊機制一樣。客戶到了銀行,先領取一個服務號。一旦某個窗口出現(xiàn)空閑,擁有最小服務號的客戶就可以去空閑窗口辦理業(yè)務。Lamport算法利用前述的事件定序方案統(tǒng)一定序所有對臨界段的請求,按先來先服務的原則讓請求臨界資源的進程進入其臨界段,進/出臨界段1次需要3×(n-1)條消息。



