国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      高效、不可鍛造、不需數(shù)字簽名的ssh運(yùn)輸層認(rèn)證協(xié)議的制作方法

      文檔序號(hào):7891001閱讀:306來(lái)源:國(guó)知局
      專利名稱:高效、不可鍛造、不需數(shù)字簽名的ssh運(yùn)輸層認(rèn)證協(xié)議的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明屬于密碼協(xié)議,具體涉及一種高效、不可鍛造、不需數(shù)字簽名的SSH(SecureShell)運(yùn)輸層(Transport Layer)認(rèn)證協(xié)議(Authentication Protocol)。

      背景技術(shù)
      SSH運(yùn)輸層認(rèn)證協(xié)議是保護(hù)互聯(lián)網(wǎng)信息安全,特別是在基于UNIX或Linux操作系統(tǒng)的分布式客戶-服務(wù)器環(huán)境下的信息安全的核心認(rèn)證密碼協(xié)議。SSH運(yùn)輸層認(rèn)證協(xié)議用以使得一個(gè)客戶安全地登錄至一個(gè)遠(yuǎn)程的服務(wù)器,以便安全地在遠(yuǎn)程服務(wù)器上下載文件或安全地在遠(yuǎn)程服務(wù)器上運(yùn)行指令。
      目前的SSH運(yùn)輸層認(rèn)證協(xié)議工業(yè)標(biāo)準(zhǔn)是IETF(Internet Engineering Task Force)在2002年9月公布的,由T.Ylonen所提出的互聯(lián)網(wǎng)草案(INTERNET-DRAFT)draft-ietf-transport-15.txt。
      目前的SSH運(yùn)輸層認(rèn)證協(xié)議工業(yè)標(biāo)準(zhǔn)基于Diffie-Hellman密鑰交換,并且遠(yuǎn)程服務(wù)器使用數(shù)字簽名向客戶認(rèn)證身份。目前SSH運(yùn)輸層認(rèn)證協(xié)議工業(yè)標(biāo)準(zhǔn)核心密碼協(xié)議如下 第一輪客戶“A”向服務(wù)器發(fā)送X=gx。
      第二輪服務(wù)器“B”向客戶發(fā)送{B,Y=gy,sig}。其中,B=gb是服務(wù)器“B”的公鑰,b為服務(wù)器“B”的私鑰;sig是服務(wù)器“B”利用私鑰b對(duì)信息Hash(pub,sid,B,X,Y,Xy)應(yīng)用數(shù)字簽名標(biāo)準(zhǔn)(Digital Signature Standard)算法所得到的數(shù)字簽名;其中Hash是一個(gè)哈西函數(shù),sid是會(huì)話標(biāo)示符(sid實(shí)際上為客戶和服務(wù)器在協(xié)議運(yùn)行之前所交換的兩個(gè)隨機(jī)數(shù)的串聯(lián)),pub是其它與協(xié)議運(yùn)行相關(guān)的信息(一般包括協(xié)議版本,客戶和服務(wù)器所支持的密碼算法、安全參數(shù)等)。會(huì)話密鑰設(shè)為K=HK(Xy)=HK(gxy)。
      收到服務(wù)器“B”返回的第二輪信息后,客戶“A”驗(yàn)證服務(wù)器“B”的公鑰B的有效性,驗(yàn)證sig是否為服務(wù)器對(duì)Hash(pub,sid,B,X,Y,Yx)的簽名;如果驗(yàn)證失敗,客戶“A”中止協(xié)議;驗(yàn)證成功,客戶“A”計(jì)算會(huì)話密鑰K=HK(Yx)=HK(gxy)。
      目前的SSH運(yùn)輸層認(rèn)證協(xié)議工業(yè)標(biāo)準(zhǔn)的不足之處為因?yàn)槭褂脭?shù)字簽名機(jī)制來(lái)認(rèn)證遠(yuǎn)程服務(wù)器的身份,導(dǎo)致協(xié)議的通訊復(fù)雜性和計(jì)算復(fù)雜性較高,不夠理想。比如,以目前的數(shù)字簽名標(biāo)準(zhǔn)(Digital Signature Standard)為例(因?yàn)閿?shù)字簽名標(biāo)準(zhǔn)是基于離散對(duì)數(shù)的,因此服務(wù)器“B”的公鑰自然也是基于離散對(duì)數(shù)的),其通訊復(fù)雜性(即簽名的長(zhǎng)度)為2q,簽名者(即服務(wù)器“B”)需作一個(gè)指數(shù)運(yùn)算,而簽名驗(yàn)證者(即客戶“A”)需作至少1.5個(gè)指數(shù)運(yùn)算,而且無(wú)論是簽名還是簽名的驗(yàn)證均不能夠離線事先計(jì)算。如果加上DH密鑰成分的計(jì)算與會(huì)話密鑰的計(jì)算,客戶“A”總的計(jì)算復(fù)雜性為3.5個(gè)指數(shù)運(yùn)算,服務(wù)器“B”總的計(jì)算復(fù)雜性為3個(gè)指數(shù)運(yùn)算。


      發(fā)明內(nèi)容
      本發(fā)明的目的在于提供一種高效、不可鍛造、不需數(shù)字簽名的SSH運(yùn)輸層認(rèn)證協(xié)議,以降低目前SSH運(yùn)輸層認(rèn)證協(xié)議的(在線on-line)計(jì)算復(fù)雜性(computational complexity)和通訊復(fù)雜性(communication complexity)。
      本發(fā)明協(xié)議具有如下特點(diǎn) 本發(fā)明提供兩種不同的不需數(shù)字簽名的SSH運(yùn)輸層認(rèn)證協(xié)議實(shí)現(xiàn)方法,提供比目前SSH運(yùn)輸層認(rèn)證協(xié)議工業(yè)標(biāo)準(zhǔn)更優(yōu)的(在線)計(jì)算復(fù)雜性和通訊復(fù)雜性。
      第一種不需數(shù)字簽名的實(shí)現(xiàn)方法為會(huì)話密鑰K以及MAC-密鑰Km由KB=Xdb+ey=BdxYex=KA導(dǎo)出。這種方法的關(guān)鍵之處為e必須承諾綁定與協(xié)議運(yùn)行相關(guān)的所有公開(kāi)信息,即e=H(sid,IA,IB,B,X,Y,pub),d為1或其輸入不包含Y。這種方法的優(yōu)點(diǎn)為除了必須的DH-密鑰成分X、Y的計(jì)算之外(DH-密鑰成分X、Y可以事先離線計(jì)算),服務(wù)器“B”可只作一個(gè)指數(shù)運(yùn)算,即KB=Xdb+ey,從而大大減輕服務(wù)器的計(jì)算量,避免在服務(wù)器端出現(xiàn)計(jì)算和通訊的“瓶頸”;客戶“A”可以事先離線計(jì)算Bdx和DH-密鑰成分X,因此客戶“A”也只需在線作一個(gè)指數(shù)運(yùn)算,即Yex。對(duì)于總的計(jì)算復(fù)雜性,注意到KA=BdxYex的計(jì)算相當(dāng)于1.5個(gè)(這與數(shù)字簽名標(biāo)準(zhǔn)的簽名驗(yàn)證算法的計(jì)算復(fù)雜度一致),因此客戶“A”的總的計(jì)算復(fù)雜性為2.5個(gè)指數(shù)運(yùn)算,而服務(wù)器“B”的總的計(jì)算復(fù)雜度為2個(gè)指數(shù)不需運(yùn)算(當(dāng)服務(wù)器不進(jìn)行X的階q檢查)或2.5個(gè)指數(shù)運(yùn)算(當(dāng)服務(wù)器進(jìn)行X的階q檢查)。注意KB=Xdb+ey與Xq的可以并行計(jì)算,其計(jì)算復(fù)雜度為1.5個(gè)指數(shù)運(yùn)算。對(duì)于通訊復(fù)雜性,除了必須的DH-密鑰成分傳輸外,服務(wù)器發(fā)送MACKm(0)以確認(rèn)會(huì)話密鑰(即服務(wù)器確認(rèn)期的確知道b和y)。因此,這種方法僅增加額外的q-位的傳輸信息,即MACKm(0)。注意,目前SSH運(yùn)輸層認(rèn)證協(xié)議的額外通訊復(fù)雜性(即數(shù)字簽名)至少為2q位。顯然,這種不需數(shù)字簽名的實(shí)現(xiàn)方法提供比目前SSH運(yùn)輸層認(rèn)證協(xié)議工業(yè)標(biāo)準(zhǔn)更優(yōu)的(在線)計(jì)算復(fù)雜性和通訊復(fù)雜性,并更適合減輕服務(wù)器的計(jì)算量從而避免計(jì)算“瓶頸”在服務(wù)器端出現(xiàn)。
      第二種不需數(shù)字簽名的實(shí)現(xiàn)方法為會(huì)話密鑰由gxy、gxb導(dǎo)出。為此,除了必須的DH-密鑰成分X、Y的計(jì)算之外(DH-密鑰成分X、Y可以事先離線計(jì)算),客戶“A”需計(jì)算Bx和Yx;因?yàn)锽x和DH-密鑰成分X可以事先離線計(jì)算,客戶“A”實(shí)際上只需在線作一個(gè)指數(shù)運(yùn)算,即Yx。服務(wù)器“B”需在線計(jì)算Xb和Xy,注意Xb和Xy的并行計(jì)算相當(dāng)于1.5個(gè)指數(shù)運(yùn)算,因此服務(wù)器“B”的在線計(jì)算復(fù)雜性為1.5個(gè)指數(shù)運(yùn)算。對(duì)于總的計(jì)算復(fù)雜性,客戶“A”需作3個(gè)指數(shù)運(yùn)算,服務(wù)器“B”需作2.5個(gè)指數(shù)運(yùn)算。與目前的SSH運(yùn)輸層認(rèn)證協(xié)議工業(yè)標(biāo)準(zhǔn)相比較,第二種方法仍然提供較優(yōu)的計(jì)算復(fù)雜性。
      本發(fā)明協(xié)議的系統(tǒng)工作環(huán)境為 (1).系統(tǒng)參數(shù)系統(tǒng)參數(shù)(p,q,g,H,HK MAC),其中p和q為大素?cái)?shù),并且q能整除p-1,g是一個(gè)Z*p中階(order)為q的元素,使得在Z*p中由g定義的子群上離散對(duì)數(shù)(discrete logarithm DL)及計(jì)算Diffie-Hellman(computational Diffie-Hellman CDH)問(wèn)題是難的。一般而言,p的長(zhǎng)度為1024位或2048位,q的長(zhǎng)度為160或1024。所有的指數(shù)運(yùn)算及(不在指數(shù)上的)乘法運(yùn)算是模(mod)p運(yùn)算,加法及指數(shù)上的乘法為模(mod)q運(yùn)算(比如gdb表示gdb mod q modp)。這里,Z*p指的是所有比p小并與p互素的正整數(shù)的集合,即Z*p={1,2,…,p-1}。定義函數(shù)DLZq→Z*p,使得X=DL(x)=gx mod p。x稱為X的離散對(duì)數(shù)。我們要求給定隨機(jī)計(jì)算出的X,沒(méi)有多項(xiàng)式時(shí)間算法計(jì)算出X的離散對(duì)數(shù)x,這稱為離散對(duì)數(shù)問(wèn)題。計(jì)算Diffie-Hellman問(wèn)題指的是給定隨機(jī)的X=gx與Y=gy,沒(méi)有多項(xiàng)式時(shí)間算法計(jì)算出gxy。一般而言,對(duì)于熟悉本領(lǐng)域的人而言,離散對(duì)數(shù)問(wèn)題及計(jì)算Diffie-Hellman問(wèn)題也可以定義在由橢圓曲線或雙線性對(duì)(bilineartity)定義的群上。H是從{0,1}*→{0,1,2,…,q-1}的哈西函數(shù)。為增加計(jì)算速度,H的輸出長(zhǎng)度可以為l=(log2q+1)/2。HK是從{0,1}*→{0,1}k的哈西函數(shù),k是會(huì)話密鑰的長(zhǎng)度,比如k=128或160。對(duì)于字符串s1,…,sm,m>1,H(s1,s2,…,sm)表示的是將s1,…,sm用二進(jìn)制0-1串來(lái)表示,然后將所有的0-1串連接(即,串聯(lián))起來(lái),最后將串聯(lián)后得到的串作為H的輸入(元素的串聯(lián)順序可以變化)。MAC是一個(gè)消息認(rèn)證碼算法。
      (2).系統(tǒng)運(yùn)行在分布式的客戶-服務(wù)器(Client-Server)網(wǎng)絡(luò)中。除非有特別說(shuō)明,具有身份ID IA的用戶“A”代表一個(gè)客戶(Client),客戶不一定有公鑰。具有ID IB的用戶“B”代表服務(wù)器(Server),服務(wù)器“B”有一個(gè)基于離散對(duì)數(shù)的公鑰記為B=gb mod p,其中私鑰b由服務(wù)器“B”從Zq={0,1,…,q-1}中隨機(jī)選取。我們假設(shè)客戶“A”已經(jīng)通過(guò)某種方式獲取了服務(wù)器“B”的公鑰。
      (3).協(xié)議基于Diffie-Hellman密鑰交換協(xié)議。記X=gx mod p為客戶“A”的DH密鑰成分,x為DH密鑰成分X的離散對(duì)數(shù),x由客戶“A”從Zq={0,1,…,q-1}中隨機(jī)選??;記Y=gymod p為服務(wù)器“B”的DH密鑰成分,y為DH密鑰成分Y的離散對(duì)數(shù),y由服務(wù)器“B”從Zq={0,1,…,q-1}中隨機(jī)選取。假設(shè)客戶“A”為協(xié)議的發(fā)起者,服務(wù)器“B”為協(xié)議的響應(yīng)者;即客戶“A”在第一輪發(fā)送X;在收到X后服務(wù)器“B”檢查X為Z*p中的非1元素并在第二輪發(fā)送Y;收到Y(jié)后,客戶“A”檢查Y為Z*p中的非1元素。
      (4).協(xié)議的每一次執(zhí)行稱為一個(gè)會(huì)話(session)。我們假定協(xié)議的每一次執(zhí)行(即,每一次會(huì)話)有一個(gè)標(biāo)示號(hào)(session-identifier)sid,用于標(biāo)記并發(fā)運(yùn)行的協(xié)議執(zhí)行。sid的制定和協(xié)商可隨協(xié)議的運(yùn)行環(huán)境不同而有所變化比如sid可以是協(xié)議運(yùn)行兩方發(fā)送的兩個(gè)隨機(jī)串的合并連接。一般而言,sid包含在協(xié)議運(yùn)行之前用戶交換的信息或交換信息的哈西值。在某些環(huán)境中sid可在協(xié)議運(yùn)行過(guò)程中產(chǎn)生;在某些環(huán)境中當(dāng)會(huì)話可由語(yǔ)境自動(dòng)標(biāo)示時(shí)sid亦可省略,例如在Diffie-Hellman密鑰交換應(yīng)用中,DH密鑰成分(X=gx,Y=gy)可兼當(dāng)會(huì)話標(biāo)示號(hào)。
      (5).與協(xié)議執(zhí)行相關(guān)的其它信息pub除了(sid,IA,IB,B=gb,X=gx,Y=gy)外,其它與協(xié)議執(zhí)行相關(guān)的信息用pub來(lái)表示。pub是一個(gè)字符串,一般是協(xié)議版本、協(xié)議執(zhí)行之前用戶所交換信息或交換信息的哈西值、用戶的IP地址、時(shí)間戳等的串聯(lián)。pub可以為空。在所有具有MAC的協(xié)議實(shí)現(xiàn)中,為了提高計(jì)算效率,可僅僅將pub作為MAC的輸入一部分,而不作為H、HK的輸入。
      協(xié)議實(shí)現(xiàn)方法 根據(jù)會(huì)話密鑰的不同計(jì)算方式,有兩種協(xié)議實(shí)現(xiàn)方法 (1).協(xié)議實(shí)現(xiàn)方法-1客戶“A”在第一輪發(fā)送X=gxmodp。在收到X后,服務(wù)器“B”檢查X為Z*p中的階為q的非1元素;檢查不成功,服務(wù)器“B”中止協(xié)議執(zhí)行;檢查成功,服務(wù)器“B”在第二輪發(fā)送B=gb mod p、Y=gy mod p、計(jì)算KB=Xdb+ey mod q mod p和Km=HK(e,KB)并通過(guò)發(fā)送MACKm(0)來(lái)向客戶“A”證明其知道b及y。其中,d=H(sid,IA,IB,B,X,pub)或1,e=H(sid,IA,IB,B,X,Y,pub)。服務(wù)器“B”計(jì)算會(huì)話密鑰K=HK(KB,e)。
      收到服務(wù)器“B”發(fā)送的第二輪信息后,客戶“A”計(jì)算KA=Bdx mod q Yex mod q mod p及Km=HK(e,KA)并驗(yàn)證第二輪信息的有效性(即驗(yàn)證公鑰B的有效性、Y為Z*p中的非1元素、以及MACKm(0)的有效性)。任何驗(yàn)證不成功,客戶“A”中止協(xié)議;驗(yàn)證成功,客戶“A”計(jì)算會(huì)話密鑰K=HK(KA,e)。為了進(jìn)一步確認(rèn)客戶“A”知道會(huì)話密鑰,客戶“A”可在第三輪發(fā)送MACKm(1)或EK(w),其中E為一個(gè)私鑰加密算法(比如DES或AES分組密碼算法),w為客戶與服務(wù)器事先建立的秘密口令。
      注意函數(shù)d的輸入不包含Y,因此客戶“A”可以事先計(jì)算X、d及Bdx mod q mod p。服務(wù)器“B”可以事先計(jì)算Y。如果服務(wù)器“B”不檢查X的階q,鑒于小群攻擊風(fēng)險(xiǎn),當(dāng)Y事先計(jì)算時(shí)則y必須保存在安全的模塊中并在計(jì)算KB=Xdb+ey mod q mod p后馬上刪除。
      (2).協(xié)議實(shí)現(xiàn)方法-2客戶“A”在第一輪發(fā)送X=gx mod p及HK(sid,IA,IB,B,X,Bx);客戶“A”可以事先計(jì)算X及Bx。收到客戶“A”發(fā)送的第一輪信息后,服務(wù)器“B”檢查X為Z*p中的非1元素并利用Xb檢查是否HK(sid,IA,IB,B,X,Bx,pub)=HK(sid,IA,IB,B,X,Xb,pub)。驗(yàn)證不成功,服務(wù)器“B”中止協(xié)議運(yùn)行或返回一個(gè)隨機(jī)數(shù);驗(yàn)證成功,服務(wù)器“B”在第二輪發(fā)送HK(sid,IB,B,IA,Y,X,Xy,Xb)。會(huì)話密鑰K由HK(gxy)或HK(gxy,gxb)導(dǎo)出。為了進(jìn)一步確認(rèn)客戶“A”知道會(huì)話密鑰,客戶“A”可在第三輪發(fā)送HK(sid,IA,IB,B,X,Y,Yx)或EK(w),其中E為一個(gè)私鑰加密算法(比如DES或AES分組密碼算法),w為客戶與服務(wù)器事先建立的秘密口令。
      本發(fā)明協(xié)議的具體實(shí)現(xiàn)步驟 在下述協(xié)議描述中,大括號(hào)內(nèi)的值表示發(fā)送的信息。注意服務(wù)器“B”的公鑰是B=gb并且我們假設(shè)客戶“A”已經(jīng)通過(guò)某種安全的方式獲得服務(wù)器的公鑰B。假設(shè)客戶“A”為協(xié)議運(yùn)行初始者,服務(wù)器“B”為協(xié)議運(yùn)行響應(yīng)者。
      協(xié)議-1 事先計(jì)算客戶“A”可以事先計(jì)算X=gx mod p、d=H(sid,IA,IB,B,X,pub)或1、Bdx mod q mod p。服務(wù)器“B”可以事先計(jì)算Y=gy mod p。其中,x和y從Zq中隨機(jī)選取,e=H(d,Y)或e=H(sid,IA,IB,B,X,Y,pub),X稱為“A”的DH密鑰成分,Y稱為“B”的DH密鑰成分。如果服務(wù)器“B”不檢查X的階q,鑒于小群攻擊風(fēng)險(xiǎn),當(dāng)Y事先計(jì)算時(shí)則y必須保存在安全的模塊中并在計(jì)算出db+ey后馬上刪除。
      第一輪,從“A”到“B”{sid,IA,X=gx(mod p)}。
      收到客戶“A”發(fā)送的信息后,服務(wù)器“B”驗(yàn)證“A”的身份、X為Z*p中的階為q的非1元素(即驗(yàn)證X∈Z*p且X≠1且Xq=1 mod p)。驗(yàn)證不成功,服務(wù)器“B”拒絕繼續(xù)執(zhí)行協(xié)議;驗(yàn)證成功,服務(wù)器“B”計(jì)算KB=Xdb+ey mod q mod p并刪除掉y及db+ey;計(jì)算MAC-密鑰Km=HK(e,KB)及會(huì)話密鑰K=HK(KB,e),然后刪除掉KB并進(jìn)入下一輪。
      第二輪,從“B”到“A”{sid,IB,B,Y=gy,MACKm(0)}。
      收到服務(wù)器“B”發(fā)送的信息后,客戶“A”驗(yàn)證“B”的身份及公鑰,Y為Z*p中的非1元素。驗(yàn)證不成功,客戶“A”中止協(xié)議;驗(yàn)證成功,客戶“A”計(jì)算KA=Bdx mod qYex mod q mod p及Km=HK(e,KA)并驗(yàn)證MACKm(0)的有效性。MACKm(0)驗(yàn)證成功,客戶“A”計(jì)算會(huì)話密鑰K=HK(KA,e),刪除掉x、Bdx、Yex、KA。
      協(xié)議-2 事先計(jì)算客戶“A”可以事先計(jì)算X=gx mod p及Bx mod p;服務(wù)器“B”可以事先計(jì)算Y=gy mod p。其中,x和y從Zq中隨機(jī)選取,X稱為“A”的DH密鑰成分,Y稱為“B”的DH密鑰成分。
      第一輪,從“A”到“B”{sid,IA,X=gx mod p,HK(sid,IA,IB,B,X,Bx,pub)}。
      收到“A”發(fā)送的信息后,“B”驗(yàn)證“A”的身份、X為Z*p中的非1元素。驗(yàn)證不成功,“B”拒絕繼續(xù)執(zhí)行協(xié)議;驗(yàn)證成功,服務(wù)器“B”計(jì)算Xb、Xy,驗(yàn)證HK(sid,IA,IB,B,X,Bx,pub)的有效性,即驗(yàn)證是否HK(sid,IA,IB,B,X,Bx,pub)=HK(sid,IA,IB,B,X,Xb,pub)。HK(sid,IA,IB,B,X,Bx,pub)驗(yàn)證不成功,服務(wù)器“B”中止協(xié)議運(yùn)行或返回一個(gè)與HK(sid,IB,B,IA,Y,X,Xy,Xb,pub)長(zhǎng)度相同的隨機(jī)數(shù);HK(sid,IA,IB,B,X,Bx,pub)驗(yàn)證成功,服務(wù)器“B”計(jì)算HK(sid,IB,B,IA,Y,X,Xy,Xb,pub),計(jì)算會(huì)話密鑰K=HK(sid,IB,B,IA,Y,X,Xy,pub),刪除掉y、Xb、Xy、并進(jìn)入下一輪。
      第二輪,從“B”到“A”{sid,IB,B, Y=gy,HK(sid,IB,B,IA,Y,X,Xy,Xb,pub)}。
      收到服務(wù)器“B”發(fā)送的信息后,客戶“A”驗(yàn)證“B”的身份及公鑰,Y為Z*p中的非1元素。驗(yàn)證不成功,“A”中止協(xié)議;驗(yàn)證成功,客戶“A”計(jì)算Yx,驗(yàn)證HK(sid,IB,B,IA,Y,X,Xy,Xb,pub)=HK(sid,IB,B,IA,Y,X,Yx,Bx,pub)。;驗(yàn)證不成功,客戶“A”中止協(xié)議執(zhí)行;驗(yàn)證成功,客戶“A”計(jì)算會(huì)話密鑰K=HK(sid,IB,B,IA,Y,X,Yx,pub),刪除掉x、Bx、Yx。
      本發(fā)明中,協(xié)議-1及協(xié)議-2有如下變體 (1).協(xié)議-1中函數(shù)d、e的其它計(jì)算方法令c=H(sid,IA,IB,B,pub)或H(IA,IB,B),計(jì)算d=H(c,X)或H(IA,IB,B,X)或1,e=H(c,X,Y)或H(d,Y)。
      或者,d=H(sid,IA,IB,B,X,Y,pub)或H(c,X,Y)或H(e)或1,e=H(d)。
      或者,將哈西函數(shù)H的輸入中的元素的順序進(jìn)行變化;將sid或pub不作為H的輸入。
      (2).在協(xié)議-1中,會(huì)話密鑰與MAC-密鑰的其它計(jì)算形式K=HK(KA)=HK(KB)或K=HK(KA,1)=HK(KB,1);Km=HK(KA,0)=HK(KB,0)。
      將c、d、e、以及sid與pub的部分或全部作為HK輸入的一部分。
      會(huì)話密鑰與MAC-密鑰由不同的哈西函數(shù)來(lái)實(shí)現(xiàn),此時(shí),不同哈西函數(shù)的輸入中的元素順序可以一致。
      將K作為一個(gè)偽隨機(jī)函數(shù)的密鑰,將0、1、c、d、e、以及sid與pub的部分或全部作為偽隨機(jī)函數(shù)的輸入來(lái)導(dǎo)出會(huì)話密鑰和MAC-密鑰。
      將哈西函數(shù)HK的輸入中的元素的順序進(jìn)行變化。
      (3).在協(xié)議-1中,將第二輪MACKm(0)換為MACKm(IB);將第三輪的MACKm(1)換為MACKm(IA)。將c、d、e、以及sid與pub的部分或全部作為MAC的輸入,其關(guān)鍵點(diǎn)為在第二輪中的MAC的輸入與第三輪中的MAC的輸入必須不同。
      在將MAC的輸入同時(shí)放入HK的輸入的前提下,將部分或全部MAC去掉,只用哈西函數(shù)HK進(jìn)行綁定。
      (4).在協(xié)議-1和協(xié)議-2中,用戶“A”或“B”不進(jìn)行事先計(jì)算。此時(shí),在會(huì)話密鑰和MAC密鑰計(jì)算之前所保留的內(nèi)部狀態(tài)僅包括x或y,并且一旦會(huì)話密鑰計(jì)算完畢,除用戶私鑰和會(huì)話密鑰之外的所有在本次協(xié)議執(zhí)行中所生成的內(nèi)部狀態(tài)數(shù)據(jù)立即被刪除。
      在協(xié)議-1中,當(dāng)d=1且不進(jìn)行事先計(jì)算時(shí),KA=BdxYex的計(jì)算順序?yàn)橄扔?jì)算BYe再計(jì)算(BYe)x。
      (5).在協(xié)議-2中,客戶“A”在第一輪不發(fā)送HK(sid,IA,IB,B,X,Bx,pub)。此時(shí),在第二輪,當(dāng)服務(wù)器“B”發(fā)現(xiàn)X不是Z*p中的階q的非1元素時(shí),中止協(xié)議執(zhí)行,而不是返回一個(gè)隨機(jī)數(shù)。
      (6).在協(xié)議-2的實(shí)際應(yīng)用中,定義DH-密鑰成分的群,記為(p*,g*,q*),與定義服務(wù)器公鑰B的群可能不同,即(p*,g*,q*)≠(p,g,q)。此時(shí),X=g*x mod p*、Y=g*y mod p*,其中x和y在Zq*中隨機(jī)選取。對(duì)于這種情況,客戶“A”在第一輪除了發(fā)送定義在(p*,g*)上的DH-密鑰成分X外,客戶“A”在第一輪額外發(fā)送C=gc mod p,并將HK(sid,IA,IB,B,X,Bx,pub)換為HK(sid,IA,IB,B,X,C,Bc,pub)或不發(fā)送HK(sid,IA,IB,B,X,C,Bc,pub);將第二輪中的Xb換為Cb mod p。在這種情況,不需要對(duì)DH-密鑰成分X和Y進(jìn)行階q檢查。
      (7).在協(xié)議-2中,令Km=HK(sid,IB,B,IA,Y,X,Xy,Xb)或Km=HK(Xy,Xb),將第二輪的HK(sid,IB,B,IA,Y,X,Xy,Xb)換為MACKm(0)或MACKm(sid,IB,B,IA,Y,X,pub);將第三輪的HK(sid,IA,IB,B,X,Y,Yx)換為MACKm(1);將第一輪中的HK(sid,IA,IB,B,X,Bx,pub)換為MACHK(Bx)(sid,IA,IB,B,X,pub)。將0,1以及sid,IA,IB,B,X,Y,pub的部分或全部作為MAC和HK的輸入,其要點(diǎn)為在第一輪Bx或Bc必須作為HK的輸入,在第二輪Xy和Xb必須作為HK的輸入,在第三輪Xy必須作為HK的輸入;當(dāng)?shù)诙喓偷谌喪褂孟嗤腗AC-密鑰時(shí),第二輪中的MAC的輸入與第三輪中的MAC的輸入必須不同。
      將哈西函數(shù)HK的輸入中的元素的順序進(jìn)行變化。
      (8).在協(xié)議-2中,會(huì)話密鑰的其它計(jì)算方式K=H′K(sid,IB,B,IA,Y,X,Xy,Xb),其中H′K是一個(gè)與HK不同的哈西函數(shù)。將HK(gxy)或HK(gxy,gxb)作為一個(gè)偽隨機(jī)函數(shù)的密鑰,將0、1、以及sid,IA,IB,B,X,Y,pub的部分或全部作為偽隨機(jī)函數(shù)的輸入來(lái)導(dǎo)出會(huì)話密鑰和MAC-密鑰;將0,1、以及sid,IA,IB,B,X,Y,pub的部分或全部作為HK的輸入。
      將哈西函數(shù)HK的輸入中的元素的順序進(jìn)行變化。
      (9).如果客戶“A”與服務(wù)器“B”已經(jīng)事先共享一個(gè)口令w,那么第一輪的X=gx可以換為X′=XBw mod p,其中X=gx;在第二輪,服務(wù)器計(jì)算出X=X′/Bw mod p,其它計(jì)算不變。
      (10).在協(xié)議-1和協(xié)議-2中,客戶“A”的DH-密鑰成分X或服務(wù)器“B”的DH-密鑰成分Y在一定時(shí)間內(nèi)(比如幾個(gè)星期或幾個(gè)月)保持不變。此時(shí),客戶“A”的x及DH-密鑰成分X存儲(chǔ)在一個(gè)安全的存儲(chǔ)設(shè)備中(比如一個(gè)安全的U盤或其它獨(dú)立、安全、并具計(jì)算功能的特殊存儲(chǔ)介質(zhì)中)。服務(wù)器“B”的y存儲(chǔ)在服務(wù)器的安全模塊中或與服務(wù)器“B”的私鑰b存儲(chǔ)在一起。

      具體實(shí)施例方式 在下述協(xié)議具體實(shí)施中,大括號(hào)內(nèi)的值表示發(fā)送的信息; 注意服務(wù)器“B”的公鑰是B=gb并且我們假設(shè)客戶“A”已經(jīng)通過(guò)某種安全的方式獲得服務(wù)器的公鑰B;假設(shè)客戶“A”為協(xié)議運(yùn)行初始者,服務(wù)器“B”為協(xié)議運(yùn)行響應(yīng)者; 在下述協(xié)議具體實(shí)施中,消息認(rèn)證碼MAC采用由IETF(Internet Engineering TaskForce)所公布的第2104號(hào)互聯(lián)網(wǎng)意見(jiàn)征求文檔(Internet RFC 2104)中所描述的HMAC認(rèn)證碼。HMAC只需作兩個(gè)哈西運(yùn)算,并被證明既是消息認(rèn)證碼又是偽隨機(jī)函數(shù)。在協(xié)議具體實(shí)施中,HMAC以及哈西函數(shù)H,HK由SHA-1哈西函數(shù)來(lái)實(shí)現(xiàn)。
      在下述協(xié)議具體實(shí)施中,會(huì)話標(biāo)示符sid客戶“A”與服務(wù)器“B”發(fā)送的兩個(gè)隨機(jī)串的串聯(lián),pub為客戶“A”與服務(wù)器“B”的協(xié)議版本(我們假設(shè)較高的協(xié)議版本向下兼容較低的協(xié)議版本)。這導(dǎo)致協(xié)議實(shí)際運(yùn)行4輪。
      協(xié)議-1 事先計(jì)算客戶“A”可以事先計(jì)算X=gx mod p、d=H(IA‖IB‖B‖X)或1、Bdx mod q mod p。服務(wù)器“B”可以事先計(jì)算Y=gymodp。這里,“||”表示的是字符串的順序連接,x和y從Zq中隨機(jī)選取,X稱為“A”的DH密鑰成分,Y稱為“B”的DH密鑰成分。如果服務(wù)器“B”不檢查X的階q,鑒于小群攻擊風(fēng)險(xiǎn),當(dāng)Y事先計(jì)算時(shí)則y必須保存在安全的模塊中并在計(jì)算出db+ey后馬上刪除。
      第一輪,從“A”到“B”{RA,VA}。
      其中RA是一個(gè)32位隨機(jī)0-1串,VA是客戶“A”的協(xié)議版本號(hào)。收到客戶“A”發(fā)送的信息后,服務(wù)器“B”驗(yàn)證RA的有效性(即RA是一個(gè)32位0-1串)并檢查客戶“A”的協(xié)議版本號(hào)。
      第二輪,從“B”到“A”{RB,VB}。
      其中RB是一個(gè)32位隨機(jī)0-1串,VB是服務(wù)器“B”的協(xié)議版本號(hào)。收到服務(wù)器“B”發(fā)送的信息后,客戶“A”驗(yàn)證RB的有效性(即RB是一個(gè)32位0-1串)并檢查客戶“B”的協(xié)議版本號(hào)。真正運(yùn)行的協(xié)議版本號(hào)是RA和RB的較小值,使得客戶“A”與服務(wù)器“B”均可運(yùn)行該協(xié)議版本。會(huì)話標(biāo)示符sid設(shè)為RA‖RB。pub設(shè)為VA‖VB。
      第三輪,從“A”到“B”{RA‖RB,IA,X=gx(mod p)}。
      收到客戶“A”發(fā)送的信息后,服務(wù)器“B”驗(yàn)證“A”的身份、X為Z*p中的階為q的非1元素(即X∈Z*p且X≠1且Xq=1 mod p)。驗(yàn)證不成功,服務(wù)器“B”拒絕繼續(xù)執(zhí)行協(xié)議;驗(yàn)證成功,服務(wù)器“B”計(jì)算KB=Xdb+ey mod q mod p并刪除掉y及db+ey,其中e=H(RA‖RB‖d‖Y‖VA‖VB)或e=H(RA‖RB‖IA‖IB‖B‖X‖Y‖VA‖VB);計(jì)算MAC-密鑰Km=HK(e‖KB)及會(huì)話密鑰K=HK(KB‖e),然后刪除掉KB并進(jìn)入下一輪。
      第四輪,從“B”到“A”{RA‖RB,IB,B,Y=gy,HMAGKm(0)}。
      收到服務(wù)器“B”發(fā)送的信息后,客戶“A”驗(yàn)證“B”的身份及公鑰,Y為Z*p中的非1元素。驗(yàn)證不成功,客戶“A”中止協(xié)議;驗(yàn)證成功,客戶“A”計(jì)算KA=Bdx mod qYex mod q mod p及Km=HK(e‖KA)并驗(yàn)證HMACKm(0)的有效性。HMACKm(0)驗(yàn)證成功,客戶“A”計(jì)算會(huì)話密鑰K=HK(KA‖e),刪除掉x、Bdx、Yex、KA。
      協(xié)議-2 事先計(jì)算客戶“A”可以事先計(jì)算X=gx mod p及Bx mod p;服務(wù)器“B”可以事先計(jì)算Y=gy mod p。其中,x和y從Zq中隨機(jī)選取,X稱為“A”的DH密鑰成分,Y稱為“B”的DH密鑰成分。
      第一輪,從“A”到“B”{RA,VA}。
      其中RA是一個(gè)32位隨機(jī)0-1串,VA是客戶“A”的協(xié)議版本號(hào)。收到客戶“A”發(fā)送的信息后,服務(wù)器“B”驗(yàn)證RA的有效性(即RA是一個(gè)32位0-1串)并檢查客戶“A”的協(xié)議版本號(hào)。
      第二輪,從“B”到“A”{RB,VB}。
      其中RB是一個(gè)32位隨機(jī)0-1串,VB是服務(wù)器“B”的協(xié)議版本號(hào)。收到服務(wù)器“B”發(fā)送的信息后,客戶“A”驗(yàn)證RB的有效性(即RB是一個(gè)32位0-1串)并檢查客戶“B”的協(xié)議版本號(hào)。真正運(yùn)行的協(xié)議版本號(hào)是RA和RB的較小值,使得客戶“A”與服務(wù)器“B”均可運(yùn)行該協(xié)議版本。會(huì)話標(biāo)示符sid設(shè)為RA‖RB。pub設(shè)為VA‖VB。
      第三輪,從“A”到“B”{RA‖RB,IA,X=gx mod p,HK(RA‖RB‖IA‖IB‖B‖X‖Bx‖VA‖VB)}; 收到“A”發(fā)送的信息后,“B”驗(yàn)證“A”的身份、X為Z*p中的非1元素。驗(yàn)證不成功,“B”拒絕繼續(xù)執(zhí)行協(xié)議;驗(yàn)證成功,服務(wù)器“B”計(jì)算Xb、Xy,驗(yàn)證HK(RA‖RB‖IA‖IB‖B‖X‖Bx‖VA‖VB)的有效性,即驗(yàn)證是否HK(RA‖RB‖IA‖IB‖B‖X‖Bx‖VA‖VB)=HK(RA‖RB‖IA‖IB‖B‖X‖Xb‖VA‖VB)。HK(RA‖RB‖IA‖IB‖B‖X‖Bx‖VA‖VB)驗(yàn)證不成功,服務(wù)器“B”中止協(xié)議運(yùn)行或返回一個(gè)與HK(RA‖RB‖IB‖B‖IA‖Y‖X‖Xy‖Xb‖VA‖VB)長(zhǎng)度相同的隨機(jī)數(shù);HK(RA‖RB‖IA‖IB‖B‖X‖Bx‖VA‖VB)驗(yàn)證成功,服務(wù)器“B”計(jì)算HK(RA‖RB‖IB‖B‖IA‖Y‖X‖Xy‖Xb‖VA‖VB),計(jì)算會(huì)話密鑰K=HK(RA‖RB‖IB‖B‖IA‖Y‖X‖Xy‖VA‖VB),刪除掉y、Xb、Xy、并進(jìn)入下一輪。
      第四輪,從“B”到“A”{RA‖RB,IB,B,Y=gy,HK(RA‖RB‖IB‖B‖IA‖Y‖X‖Xy‖Xb‖VA‖VB)}。
      收到服務(wù)器“B”發(fā)送的信息后,客戶“A”驗(yàn)證“B”的身份及公鑰,Y為Z*p中的非1元素。驗(yàn)證不成功,“A”中止協(xié)議;驗(yàn)證成功,客戶“A”計(jì)算Yx,驗(yàn)證HK(RA‖RB‖IB‖B‖IA‖Y‖X‖Xy‖Xb‖VA‖VB)=HK(RA‖RB‖IB‖B‖IA‖Y‖X‖Yx‖Bx‖VA‖VB)。驗(yàn)證不成功,客戶“A”中止協(xié)議執(zhí)行;驗(yàn)證成功,客戶“A”計(jì)算會(huì)話密鑰 K=HK(RA‖RB‖IB‖B‖IA‖Y‖X‖Xy‖VA‖VB),刪除掉x、Bx、Yx。
      協(xié)議變體的
      具體實(shí)施例方式 (1).協(xié)議-1中函數(shù)d、e的其它計(jì)算方法令c=H(sid‖IA‖IB‖B‖pub)或H(IA‖IB‖B),計(jì)算d=H(c‖X)或H(IA‖IB‖B‖X)或1,e=H(c‖X‖Y)或H(d‖Y)。
      或者,d=H(sid‖IA‖IB‖B‖X‖Y‖pub)或H(c‖X‖Y)或H(e)或1,e=H(d)。
      或者,將哈西函數(shù)H的輸入中的元素的順序進(jìn)行變化;將sid或pub不作為H的輸入。
      (2).在協(xié)議-1中,會(huì)話密鑰與MAC-密鑰的其它計(jì)算形式K=HK(KA)=HK(KB)或K=HK(KA‖1)=HK(KB‖1);Km=HK(KA‖0)=HK(KB‖0)。
      將c、d、e、以及sid與pub的部分或全部作為HK輸入的一部分。
      會(huì)話密鑰與MAC-密鑰由不同的哈西函數(shù)來(lái)實(shí)現(xiàn),此時(shí),不同哈西函數(shù)的輸入中的元素順序可以一致。
      將K作為一個(gè)偽隨機(jī)函數(shù)的密鑰,將0、1、c、d、e、以及sid與pub的部分或全部作為偽隨機(jī)函數(shù)的輸入來(lái)導(dǎo)出會(huì)話密鑰和MAC-密鑰。
      將哈西函數(shù)HK的輸入中的元素的順序進(jìn)行變化。
      (3).在協(xié)議-1中,將第二輪MACKm(0)換為MACKm(IB);將第三輪的MACKm(1)換為MACKm(IA)。將c、d、e、以及sid與pub的部分或全部作為MAC的輸入,其關(guān)鍵點(diǎn)為 在第二輪中的MAC的輸入與第三輪中的MAC的輸入必須不同。
      在將MAC的輸入同時(shí)放入HK的輸入的前提下,將部分或全部MAC去掉,只用哈西函數(shù)HK進(jìn)行綁定。
      (4).在協(xié)議-1和協(xié)議-2中,用戶“A”或“B”不進(jìn)行事先計(jì)算。此時(shí),在會(huì)話密鑰和MAC密鑰計(jì)算之前所保留的內(nèi)部狀態(tài)僅包括x或y,并且一旦會(huì)話密鑰計(jì)算完畢,除用戶私鑰和會(huì)話密鑰之外的所有在本次協(xié)議執(zhí)行中所生成的內(nèi)部狀態(tài)數(shù)據(jù)立即被刪除。
      在協(xié)議-1中,當(dāng)d=1且不進(jìn)行事先計(jì)算時(shí),KA=BdxYex的計(jì)算順序?yàn)橄扔?jì)算BYe modp再計(jì)算(BYe)x。
      (5).在協(xié)議-2中,客戶“A”在第一輪不發(fā)送HK(sid‖IA‖IB‖B‖X‖Bx‖pub)。此時(shí),在第二輪,當(dāng)服務(wù)器“B”發(fā)現(xiàn)X不是Z*p中的階q的非1元素時(shí),中止協(xié)議執(zhí)行,而不是返回一個(gè)隨機(jī)數(shù)。
      (6).在協(xié)議-2的實(shí)際應(yīng)用中,定義DH-密鑰成分的群,記為(p*,g*,q*),與定義服務(wù)器公鑰B的群可能不同,即(p*,g*,q*)≠(p,g,q)。此時(shí),X=g*xmod p*、Y=g*y modp*,其中x和y在Zq*中隨機(jī)選取。對(duì)于這種情況,客戶“A”在第一輪除了發(fā)送定義在(p*,g*)上的DH-密鑰成分X外,客戶“A”在第一輪額外發(fā)送C=gc mod p,并將HK(sid‖IA‖IB‖B‖X‖Bx‖pub)換為HK(sid‖IA‖IB‖B‖X‖C‖Bc‖pub)或不發(fā)送HK(sid‖IA‖IB‖B‖X‖C‖Bc‖pub);將第二輪中的Xb換為Cb mod p。在這種情況,不需要對(duì)DH-密鑰成分X和Y進(jìn)行階q檢查。
      (7).在協(xié)議-2中,令Km=HK(sid‖IB‖B‖IA‖Y‖X‖Xy‖Xb)或Km=HK(Xy‖Xb),將第二輪的HK(sid‖IB‖B‖IA‖Y‖X‖Xy‖Xb)換為MACKm(0)或MACKm(sid‖IB‖B‖IA‖Y‖X‖pub);將第三輪的HK(sid‖IA‖IB‖B‖X‖Y‖Yx)換為MACKm(1);將第一輪中的HK(sid‖IA‖IB‖B‖X‖Bx‖pub)換為MACHK(Bx)(sid‖IA‖IB‖B‖X‖pub)。將0,1以及sid,IA,IB,B,X,Y,pub的部分或全部作為MAC和HK的輸入,其要點(diǎn)為在第一輪Bx或Bc必須作為HK的輸入,在第二輪Xy和Xb必須作為HK的輸入,在第三輪Xy必須作為HK的輸入;當(dāng)?shù)诙喓偷谌喪褂孟嗤腗AC-密鑰時(shí),第二輪中的MAC的輸入與第三輪中的MAC的輸入必須不同。
      將哈西函數(shù)HK的輸入中的元素的順序進(jìn)行變化。
      (8).在協(xié)議-2中,會(huì)話密鑰的其它計(jì)算方式K=H′K(sid‖IB‖B‖IA‖Y‖X‖Xy‖Xb),其中H′K是一個(gè)與HK不同的哈西函數(shù)。將HK(gxy)或HK(gxy‖gxb)作為一個(gè)偽隨機(jī)函數(shù)的密鑰,將0、1、以及sid,IA,IB,B,X,Y,pub的部分或全部作為偽隨機(jī)函數(shù)的輸入來(lái)導(dǎo)出會(huì)話密鑰和MAC-密鑰;將0,1、以及sid,IA,IB,B,X,Y,pub的部分或全部作為HK的輸入。
      將哈西函數(shù)HK的輸入中的元素的順序進(jìn)行變化。
      (9).如果客戶“A”與服務(wù)器“B”已經(jīng)事先共享一個(gè)口令w,那么第一輪的X=gx可以換為X′=XBw mod p,其中X=gx;在第二輪,服務(wù)器計(jì)算出X=X′/Bw mod q mod p,其它計(jì)算不變。
      (10).在協(xié)議-1和協(xié)議-2中,客戶“A”的DH-密鑰成分X或服務(wù)器“B”的DH-密鑰成分Y在一定時(shí)間內(nèi)(比如幾個(gè)星期或幾個(gè)月)保持不變。此時(shí),客戶“A”的x及DH-密鑰成分X存儲(chǔ)在一個(gè)安全的存儲(chǔ)設(shè)備中(比如一個(gè)安全的U盤或其它獨(dú)立、安全、并具計(jì)算功能的特殊存儲(chǔ)介質(zhì)中)。服務(wù)器“B”的y存儲(chǔ)在服務(wù)器的安全模塊中或與服務(wù)器“B”的私鑰b存儲(chǔ)在一起。
      權(quán)利要求
      1.一種高效、不可鍛造、不需數(shù)字簽名的SSH運(yùn)輸層認(rèn)證協(xié)議,其特征在于
      系統(tǒng)工作環(huán)境為
      (1).系統(tǒng)參數(shù)(p,q,g,H,HK,MAC),其中p和q為大素?cái)?shù),并且q能整除p-1,g是一個(gè)Z*p中階為q的元素,使得在Z*p中由g定義的子群上離散對(duì)數(shù)DL及計(jì)算Diffie-Hellman CDH問(wèn)題是難的;MAC是一個(gè)消息認(rèn)證碼算法;所有的指數(shù)運(yùn)算及不在指數(shù)上的乘法運(yùn)算是mod p運(yùn)算,加法及指數(shù)上的乘法為mod q運(yùn)算;這里,Z*p={1,2,…,p-1};H是{0,1}*→{0,1,2,…,(q-1)/2}的哈西函數(shù),HK是{0,1}*→{0,1}k的哈西函數(shù),k是會(huì)話密鑰的長(zhǎng)度;對(duì)于字符串s1,…,sm,m>1,H(s1,s2,…,sm)表示的是將s1,…,sm用二進(jìn)制0-1串來(lái)表示,然后將所有的0-1串順序連接串聯(lián)起來(lái),最后將串聯(lián)后得到的0-1串作為H的輸入;
      (2).系統(tǒng)運(yùn)行在分布式的客戶-服務(wù)器網(wǎng)絡(luò)中;除非有特別說(shuō)明,具有身份ID IA的用戶“A”代表一個(gè)客戶,客戶不一定有公鑰;具有ID IB的用戶“B”代表服務(wù)器,服務(wù)器“B”有一個(gè)基于離散對(duì)數(shù)的公鑰記為B=gb modp,其中私鑰b由服務(wù)器“B”從Zq={0,1,…,q-1}中隨機(jī)選取;假設(shè)客戶“A”已經(jīng)通過(guò)某種方式獲取了服務(wù)器“B”的公鑰;
      (3).協(xié)議基于Diffie-Hellman密鑰交換協(xié)議;記X=gxmod p為客戶“A”的DH密鑰成分,x為DH密鑰成分X的離散對(duì)數(shù),x由客戶“A”從Zq={0,1,…,q-1}中隨機(jī)選??;記Y=gy mod p為服務(wù)器“B”的DH密鑰成分,y為DH密鑰成分Y的離散對(duì)數(shù),y由服務(wù)器“B”從Zq={0,1,…,q-1}中隨機(jī)選取;假設(shè)客戶“A”為協(xié)議的發(fā)起者,服務(wù)器“B”為協(xié)議的響應(yīng)者;即客戶“A”在第一輪發(fā)送X;在收到X后服務(wù)器“B”檢查X為Z*p中的非1元素并在第二輪發(fā)送Y;收到Y(jié)后,客戶“A”檢查Y為Z*p中的非1元素;
      (4).假定協(xié)議的每一次執(zhí)行有一個(gè)標(biāo)示號(hào)sid;sid是一個(gè)字符串,用于標(biāo)記并發(fā)運(yùn)行的協(xié)議執(zhí)行;sid的制定和協(xié)商可隨協(xié)議的運(yùn)行環(huán)境不同而有所變化;sid包含在協(xié)議運(yùn)行之前用戶交換的信息或交換信息的哈西值;
      (5).與協(xié)議執(zhí)行相關(guān)的其它信息pubpub是一個(gè)字符串,是協(xié)議版本、協(xié)議執(zhí)行之前用戶所交換信息或交換信息的哈西值、用戶的IP地址、時(shí)間戳的串聯(lián);
      協(xié)議實(shí)現(xiàn)方法為
      根據(jù)會(huì)話密鑰的不同計(jì)算方式,有兩種協(xié)議實(shí)現(xiàn)方法
      (1).協(xié)議實(shí)現(xiàn)方法-1客戶“A”在第一輪發(fā)送X=gx mod p;在收到X后,服務(wù)器“B”檢查X為Z*p中的階為q的非1元素;檢查成功,服務(wù)器“B”在第二輪發(fā)送B、Y=gymodp、計(jì)算KB=Xdb+ey和Km=HK(e,KB),并通過(guò)發(fā)送MACKm(0)來(lái)向客戶“A”證明其知道b及y;其中,d=H(sid,IA,IB,B,X,pub)或1,e=H(sid,IA,IB,B,X,Y,pub);服務(wù)器“B”計(jì)算會(huì)話密鑰K=HK(KB,e);收到服務(wù)器“B”發(fā)送的第二輪信息后,客戶“A”計(jì)算KA=BdxYex及Km=HK(e,KA),并驗(yàn)證第二輪信息的有效性;客戶“A”計(jì)算會(huì)話密鑰K=HK(KA,e);為了進(jìn)一步確認(rèn)客戶“A”知道會(huì)話密鑰,客戶“A”在第三輪發(fā)送MACKm(1)或EK(w),其中E為一個(gè)私鑰加密算法,w為客戶與服務(wù)器事先建立的秘密口令;
      (2).協(xié)議實(shí)現(xiàn)方法-2客戶“A”在第一輪發(fā)送X=gx mod p及HK(sid,IA,IB,B,X,Bx);客戶“A”事先計(jì)算X及Bx;服務(wù)器“B”檢查X為Z*p中的非1元素并利用Xb檢查是否HK(sid,IA,IB,B,X,Bx,pub)=HK(sid,IA,IB,B,X,Xb,pub);驗(yàn)證不成功,服務(wù)器“B”中止協(xié)議運(yùn)行或返回一個(gè)隨機(jī)數(shù);驗(yàn)證成功,服務(wù)器“B”在第二輪發(fā)送HK(sid,IB,B,IA,Y,X,Xy,Xb);會(huì)話密鑰K由HK(gxy)或HK(gxy,gxb)導(dǎo)出;為了進(jìn)一步確認(rèn)客戶“A”知道會(huì)話密鑰,客戶“A”可在第三輪發(fā)送HK(sid,IA,IB,B,X,Y,Yx)或EK(w),其中E為一個(gè)私鑰加密算法,w為客戶與服務(wù)器事先建立的秘密口令。
      2.根據(jù)權(quán)利要求1所述的高效、不可鍛造、不需數(shù)字簽名的SSH運(yùn)輸層認(rèn)證協(xié)議,其特征在于協(xié)議的實(shí)現(xiàn)步驟為
      在下述協(xié)議描述中,大括號(hào)內(nèi)的值表示發(fā)送的信息;注意服務(wù)器“B”的公鑰是B=gb,并且假設(shè)客戶“A”已經(jīng)通過(guò)某種安全的方式獲得服務(wù)器的公鑰B;假設(shè)客戶“A”為協(xié)議運(yùn)行初始者,服務(wù)器“B”為協(xié)議運(yùn)行響應(yīng)者;
      協(xié)議-1
      事先計(jì)算客戶“A”事先計(jì)算X=gx mod p、d=H(sid,IA,IB,B,X,pub)或1、Bdxmod q modp;服務(wù)器“B”事先計(jì)算Y=gy mod p;其中,x和y從Zq中隨機(jī)選取,e=H(d,Y)或e=H(sid,IA,IB,B,X,Y,pub),X稱為“A”的DH密鑰成分,Y稱為“B”的DH密鑰成分;如果服務(wù)器“B”不檢查X的階q,鑒于小群攻擊風(fēng)險(xiǎn),當(dāng)Y事先計(jì)算時(shí)則y必須保存在安全的模塊中并在計(jì)算出db+ey后馬上刪除;
      第一輪,從“A”到“B”{sid,IA,X=gx(mod p)};
      收到客戶“A”發(fā)送的信息后,服務(wù)器“B”驗(yàn)證“A”的身份、X為Z*p中的階為q的非1元素;驗(yàn)證不成功,服務(wù)器“B”拒絕繼續(xù)執(zhí)行協(xié)議;驗(yàn)證成功,服務(wù)器“B”計(jì)算KB=Xdb+eymod q mod p并刪除掉y及db+ey;計(jì)算MAC-密鑰Km=HK(e,KB)及會(huì)話密鑰K=HK(KB,e),然后刪除掉KB并進(jìn)入下一輪;
      第二輪,從“B”到“A”{sid,IB,B,Y=gy,MACKm(0)};
      收到服務(wù)器“B”發(fā)送的信息后,客戶“A”驗(yàn)證“B”的身份及公鑰,Y為Z*p中的非1元素;驗(yàn)證不成功,客戶“A”中止協(xié)議;驗(yàn)證成功,客戶“A”計(jì)算KA=BdxYex及Km=HK(e,KA)并驗(yàn)證MACKm(0)的有效性;MACKm(0)驗(yàn)證成功,客戶“A”計(jì)算會(huì)話密鑰K=HK(KA,e),刪除掉x、Bdx、Yex、KA;
      協(xié)議-2
      事先計(jì)算客戶“A”事先計(jì)算X=gx mod p及Bx mod p;服務(wù)器“B”事先計(jì)算Y=gy mod p;其中,x和y從Zq中隨機(jī)選取,X稱為“A”的DH密鑰成分,Y稱為“B”的DH密鑰成分;
      第一輪,從“A”到“B”{sid,IA,X=gx mod p,HK(sid,IA,IB,B,X,Bx,pub)};收到“A”發(fā)送的信息后,“B”驗(yàn)證“A”的身份、X為Z*p中的非1元素;驗(yàn)證不成功,“B”拒絕繼續(xù)執(zhí)行協(xié)議;驗(yàn)證成功,服務(wù)器“B”計(jì)算Xb、Xy,驗(yàn)證HK(sid,IA,IB,B,X,Bx,pub)的有效性,即是否HK(sid,IA,IB,B,X,Bx,pub)=HK(sid,IA,IB,B,X,Xb,pub);HK(sid,IA,IB,B,X,Bx,pub)驗(yàn)證不成功,服務(wù)器“B”中止協(xié)議運(yùn)行或返回一個(gè)與HK(sid,IB,B,IA,Y,X,Xy,Xb,pub)長(zhǎng)度相同的隨機(jī)數(shù);HK(sid,IA,IB,B,X,Bx,pub)驗(yàn)證成功,服務(wù)器“B”計(jì)算HK(sid,IB,B,IA,Y,X,Xy,Xb,pub),計(jì)算會(huì)話密鑰K=HK(sid,IB,B,IA,Y,X,Xy,pub),刪除掉y、Xb、Xy、并進(jìn)入下一輪;
      第二輪,從“B”到“A”{sid,IB,B,Y=gy,HK(sid,IB,B,IA,Y,X,Xy,Xb,pub)};
      收到服務(wù)器“B”發(fā)送的信息后,客戶“A”驗(yàn)證“B”的身份及公鑰,Y為Z*p中的非1元素;驗(yàn)證不成功,“A”中止協(xié)議;驗(yàn)證成功,客戶“A”計(jì)算Yx,驗(yàn)證HK(sid,IB,B,IA,Y,X,Xy,Xb,pub)=HK(sid,IB,B,IA,Y,X,Yx,Bx,pub);驗(yàn)證不成功,客戶“A”中止協(xié)議執(zhí)行;驗(yàn)證成功,客戶“A”計(jì)算會(huì)話密鑰K=HK(sid,IB,B,IA,Y,X,Yx,pub),冊(cè)除掉x、Bx、Yx。
      3.根據(jù)權(quán)利要求1或2所述的高效、不可鍛造、不需數(shù)字簽名的SSH運(yùn)輸層認(rèn)證協(xié)議,其特征在于協(xié)議-1及協(xié)議-2有如下的變體
      (1).協(xié)議-1中函數(shù)d、e的其它計(jì)算方法令c=H(sid,IA,IB,B,pub)或H(IA,IB,B),計(jì)算d=H(c,X)或H(IA,IB,B,X)或1,e=H(c,X,Y)或H(d,Y);
      或者,d=H(sid,IA,IB,B,X,Y,pub)或H(c,X,Y)或H(e)或1,e=H(d);
      或者,將哈西函數(shù)H的輸入中的元素的順序進(jìn)行變化;將sid或pub不作為H的輸入;
      (2).在協(xié)議-1中,會(huì)話密鑰與MAC-密鑰的其它計(jì)算形式K=HK(KA)=HK(KB)或K=HK(KA,1)=HK(KB,1);Km=HK(KA,0)=HK(KB,0);
      將c、d、e、以及sid與pub的部分或全部作為HK輸入的一部分;
      會(huì)話密鑰與MAC-密鑰由不同的哈西函數(shù)來(lái)實(shí)現(xiàn),此時(shí),不同哈西函數(shù)的輸入中的元素順序可以一致;
      將K作為一個(gè)偽隨機(jī)函數(shù)的密鑰,將0、1、c、d、e、以及sid與pub的部分或全部作為偽隨機(jī)函數(shù)的輸入來(lái)導(dǎo)出會(huì)話密鑰和MAC-密鑰;
      將哈西函數(shù)HK的輸入中的元素的順序進(jìn)行變化;
      (3).在協(xié)議-1中,將第二輪MACKm(0)換為MACKm(IB);將第三輪的MACKm(1)換為MACKm(IA);將c、d、e、以及sid與pub的部分或全部作為MAC的輸入,其關(guān)鍵點(diǎn)為在第二輪中的MAC的輸入與第三輪中的MAC的輸入必須不同;
      在將MAC的輸入同時(shí)放入HK的輸入的前提下,將部分或全部MAC去掉,只用哈西函數(shù)HK進(jìn)行綁定;
      (4).在協(xié)議-1和協(xié)議-2中,用戶“A”或“B”不進(jìn)行事先計(jì)算;此時(shí),在會(huì)話密鑰和MAC密鑰計(jì)算之前所保留的內(nèi)部狀態(tài)僅包括x或y,并且一旦會(huì)話密鑰計(jì)算完畢,除用戶私鑰和會(huì)話密鑰之外的所有在本次協(xié)議執(zhí)行中所生成的內(nèi)部狀態(tài)數(shù)據(jù)立即被刪除;
      在協(xié)議-1中,當(dāng)d=1且不進(jìn)行事先計(jì)算時(shí),KA=BdxYex的計(jì)算順序?yàn)橄扔?jì)算BYe再計(jì)算(BYe)x;
      (5).在協(xié)議-2中,客戶“A”在第一輪不發(fā)送HK(sid,IA,IB,B,X,Bx,pub);此時(shí),在第二輪,當(dāng)服務(wù)器“B”發(fā)現(xiàn)X不是Z*p中的階q的非1元素時(shí),中止協(xié)議執(zhí)行,而不是返回一個(gè)隨機(jī)數(shù);
      (6).在協(xié)議-2的實(shí)際應(yīng)用中,定義DH-密鑰成分的群,記為(p*,g*,q*),與定義服務(wù)器公鑰B的群可能不同,即(p*,g*,q*)≠(p,g,q);此時(shí),X=g*xmod p*、Y=g*y mod p*,其中x和y在Zq*中隨機(jī)選??;對(duì)于這種情況,客戶“A”在第一輪除了發(fā)送定義在(p*,g*)上的DH-密鑰成分X外,客戶“A”在第一輪額外發(fā)送C=gc mod p,并將HK(sid,IA,IB,B,X,Bx,pub)換為HK(sid,IA,IB,B,X,C,Bc,pub)或不發(fā)送HK(sid,IA,IB,B,X,C,Bc,pub);將第二輪中的Xb換為Cb mod p;在這種情況,不需要對(duì)DH-密鑰成分X和Y進(jìn)行階q檢查;
      (7).在協(xié)議-2中,令Km=HK(sid,IB,B,IA,Y,X,Xy,Xb)或Km=HK(Xy,Xb),將第二輪的HK(sid,IB,B,IA,Y,X,Xy,Xb)換為MACKm(0)或MACKm(sid,IB,B,IA,Y,X,pub);將第三輪的HK(sid,IA,IB,B,X,Y,Yx)換為MACKm(1);將第一輪中的HK(sid,IA,IB,B,X,Bx,pub)換為MACHK(Bx)(sid,IA,IB,B,X,pub);
      將0,1以及sid,IA,IB,B,X,Y,pub的部分或全部作為MAC和HK的輸入,其要點(diǎn)為在第一輪Bx或Bc必須作為HK的輸入,在第二輪Xy和Xb必須作為HK的輸入,在第三輪Xy必須作為HK的輸入;當(dāng)?shù)诙喓偷谌喪褂孟嗤腗AC-密鑰時(shí),第二輪中的MAC的輸入與第三輪中的MAC的輸入必須不同;
      將哈西函數(shù)HK的輸入中的元素的順序進(jìn)行變化;
      (8).在協(xié)議-2中,會(huì)話密鑰的其它計(jì)算方式K=H′K(sid,IB,B,IA,Y,X,Xy,Xb),其中H′K是一個(gè)與HK不同的哈西函數(shù);
      將HK(gxy)或HK(gxy,gxb)作為一個(gè)偽隨機(jī)函數(shù)的密鑰,將0、1、以及sid,IA,IB,B,X,Y,pub的部分或全部作為偽隨機(jī)函數(shù)的輸入來(lái)導(dǎo)出會(huì)話密鑰和MAC-密鑰;將0,1、以及sid,IA,IB,B,X,Y,pub的部分或全部作為HK的輸入;
      將哈西函數(shù)HK的輸入中的元素的順序進(jìn)行變化;
      (9).如果客戶“A”與服務(wù)器“B”已經(jīng)事先共享一個(gè)口令w,那么第一輪的X=gx可以換為X′=XBw mod p,其中X=gx;在第二輪,服務(wù)器計(jì)算出X=X′/Bw mod p,其它計(jì)算不變;
      (10).在協(xié)議-1和協(xié)議-2中,客戶“A”的DH-密鑰成分X或服務(wù)器“B”的DH-密鑰成分Y在一定時(shí)間內(nèi)保持不變;此時(shí),客戶“A”的x及DH-密鑰成分X存儲(chǔ)在一個(gè)安全的存儲(chǔ)設(shè)備中;服務(wù)器“B”的y存儲(chǔ)在服務(wù)器的安全模塊中或與服務(wù)器“B”的私鑰b存儲(chǔ)在一起。
      全文摘要
      本發(fā)明屬于密碼協(xié)議技術(shù)領(lǐng)域,具體為一種高效、不可鍛造、不需數(shù)字簽名的SSH運(yùn)輸層認(rèn)證協(xié)議。本發(fā)明協(xié)議基于服務(wù)器具有適于數(shù)字簽名標(biāo)準(zhǔn)的離散對(duì)數(shù)公鑰B=gb。會(huì)話密鑰由Xdb+ey=BdxYex導(dǎo)出,其中e承諾綁定與協(xié)議運(yùn)行相關(guān)的公開(kāi)信息,d為1或其輸入不包含Y;或者,會(huì)話密鑰由(gxy,gxb)導(dǎo)出。本發(fā)明協(xié)議提供比目前SSH運(yùn)輸層認(rèn)證協(xié)議工業(yè)標(biāo)準(zhǔn)更優(yōu)的(在線)計(jì)算復(fù)雜性和通訊復(fù)雜性。
      文檔編號(hào)H04L29/06GK101217549SQ20081003277
      公開(kāi)日2008年7月9日 申請(qǐng)日期2008年1月17日 優(yōu)先權(quán)日2008年1月17日
      發(fā)明者趙運(yùn)磊, 姚期智, 楓 儲(chǔ) 申請(qǐng)人:趙運(yùn)磊, 姚期智, 楓 儲(chǔ)
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1