專利名稱:一種有效的可信OpenSSH的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種有效的可信OpenSSH的實(shí)現(xiàn)方法,屬于計(jì)算機(jī)信息安全領(lǐng)域。
背景技術(shù):
SSH(Secure Shell)協(xié)議是IETF的網(wǎng)絡(luò)工作小組制定了一個(gè)安全協(xié)議,用于保護(hù) 客戶端與服務(wù)器端之間傳輸?shù)臄?shù)據(jù)。SSH協(xié)議采用了分層結(jié)構(gòu)設(shè)計(jì),包括四個(gè)子協(xié)議SSH 傳輸層子協(xié)議、用戶認(rèn)證子協(xié)議、連接子協(xié)議和文件傳輸子協(xié)議??蛻舳伺c服務(wù)器端利用 SSH協(xié)議進(jìn)行通信時(shí),首先執(zhí)行的是SSH傳輸層子協(xié)議,它負(fù)責(zé)在服務(wù)器和客戶端建立安全 信道,該子協(xié)議包括協(xié)議版本交換、參數(shù)協(xié)商(參數(shù)協(xié)商內(nèi)容包括密鑰交換方法、身份認(rèn)證 算法、哈希算法、加密算法和壓縮算法這五類)、會(huì)話密鑰交換三個(gè)過程,該子協(xié)議運(yùn)行結(jié)束 后將協(xié)商出一個(gè)會(huì)話密鑰,用于加密用戶認(rèn)證階段的認(rèn)證信息、連接階段通信雙方的通信 數(shù)據(jù)和文件傳輸階段通信雙方的通信數(shù)據(jù)。 OpenSSH是一個(gè)完整地實(shí)現(xiàn)了 SSH協(xié)議的免費(fèi)開源軟件包。在OpenSSH軟件的參 數(shù)協(xié)商過程中,客戶端和服務(wù)器端首先分別按照自己安全策略對每類協(xié)商內(nèi)容生成一個(gè)協(xié) 商串,客戶端生成的協(xié)商串稱為客戶協(xié)商串,服務(wù)器端生成的協(xié)商串稱為服務(wù)器協(xié)商串,每 個(gè)協(xié)商串包含數(shù)個(gè)候選項(xiàng),按照優(yōu)先級由高到低從左到右排列,各項(xiàng)之間用逗號隔開;然后 客戶端和服務(wù)器端將各自生成的協(xié)商串保留一份在本地,同時(shí)將這5個(gè)協(xié)商串與一個(gè)32位 的備用變量以及其他信息形成一個(gè)協(xié)商數(shù)據(jù)包,發(fā)送給對方。在OpenSSH中,客戶端和服務(wù) 器端使用相同的身份認(rèn)證算法協(xié)商模塊來處理接收到的協(xié)商數(shù)據(jù)包,該模塊的處理過程如 下客戶端和服務(wù)器端在接收到對方的協(xié)商數(shù)據(jù)包后,將自己發(fā)給對方的協(xié)商串與收到的 協(xié)商串進(jìn)行比較,對于每個(gè)協(xié)商串,都按照客戶端形成的候選項(xiàng)優(yōu)先級順序,選取優(yōu)先級高 的并且在服務(wù)器的協(xié)商串中出現(xiàn)的候選項(xiàng),作為該類的協(xié)商結(jié)果。參數(shù)協(xié)商結(jié)果將用于下 一步的會(huì)話密鑰交換過程中。在OpenSSH中客戶端和服務(wù)器端使用不同的模塊來處理會(huì)話 密鑰交換,其中客戶端使用客戶端會(huì)話密鑰交換處理模塊,而服務(wù)器端使用服務(wù)器端會(huì)話 密鑰交換處理模塊。 計(jì)算機(jī)信息的安全問題很難單靠軟件解決,為了解決現(xiàn)有PC機(jī)的不安全問題,從 根本上提高其可信性,可信計(jì)算平臺(tái)聯(lián)盟TCPA (后來更名為TCG)提出通過增強(qiáng)現(xiàn)有的終端 體系結(jié)構(gòu)的安全性來保證整個(gè)系統(tǒng)的安全,核心思想是在硬件平臺(tái)上引入具有安全存儲(chǔ)和 加密功能的可信平臺(tái)模塊(又稱為可信芯片)TPM??尚庞?jì)算平臺(tái)以TPM為信任根,借助其 他可信度量模塊對系統(tǒng)平臺(tái)配置進(jìn)行度量,然后安全地將系統(tǒng)運(yùn)行情況記錄在TPM中的平 臺(tái)配置寄存器(PCR),同時(shí)在系統(tǒng)保存代表了被驗(yàn)證的可信平臺(tái)的完整性度量歷史的度量 存儲(chǔ)日志SML (storage measurement log)。遠(yuǎn)程用戶根據(jù)SML和相關(guān)PCR值來判斷該運(yùn)行 環(huán)境是否可信、某些環(huán)節(jié)是否出現(xiàn)安全問題,這一過程被稱作遠(yuǎn)程證明。在TCG規(guī)范中,TPM 使用身份證明密鑰AIK (attestation identity key)來證明自己的身份,凡是經(jīng)過AIK簽 名的實(shí)體,都表明已經(jīng)經(jīng)過TPM的處理。為了防止重放、篡改、假冒等攻擊,遠(yuǎn)程證明要求被 驗(yàn)證的一方要使用AIK對數(shù)據(jù)進(jìn)行簽名。
目前許多損害終端的攻擊是通過注入惡意代碼而不是通過損害安全信道來實(shí)施 的,這造成了一個(gè)終端在與未知端點(diǎn)通信時(shí),即使使用安全信道,仍然可能遭受一系列攻 擊。北京交通大學(xué)常曉林申請了一個(gè)實(shí)現(xiàn)可信SSH的專利(申請?zhí)?00910241782. 7,一種 基于可信計(jì)算實(shí)現(xiàn)可信SSH的方法),該專利提出了將可信計(jì)算的遠(yuǎn)程證明與SSH協(xié)議的會(huì) 話密鑰交換這兩個(gè)過程進(jìn)行有機(jī)整合,從而實(shí)現(xiàn)SSH可信信道。但是該專利只是設(shè)計(jì)了可 信會(huì)話密鑰交換協(xié)議,沒有考慮和解決具體實(shí)現(xiàn)過程中將遇到安全、功能兼容、性能、快速 部署等問題。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種有效的可信0penSSH的實(shí)現(xiàn)方法,在實(shí)現(xiàn)可信信道的同 時(shí)充分考慮系統(tǒng)性能、可擴(kuò)展性和功能向后兼容性。 本發(fā)明的技術(shù)方案為, 一種有效的可信OpenSSH的實(shí)現(xiàn)方法的組件包括功能增強(qiáng) 的參數(shù)協(xié)商模塊和功能增強(qiáng)的會(huì)話密鑰交換模塊,方法的具體步驟如下
步驟1,對身份認(rèn)證算法協(xié)商串的形成過程進(jìn)行修改增加三個(gè)候選項(xiàng),分別用變 量ssh-TPM-TPM、 ssh-TPM-option和ssh-option-TPM來表示;可信客戶端與可信服務(wù)器端 根據(jù)自己的策略分別構(gòu)造一個(gè)身份認(rèn)證算法協(xié)商串,每個(gè)協(xié)商串用大括號括起來,可選擇 的身份認(rèn)證算法協(xié)商串有6種自己可提供平臺(tái)狀態(tài)信息同時(shí)要求對方必須提供平臺(tái)狀態(tài) 信息的身份認(rèn)證算法協(xié)商串{ssh-option-TPM, ssh-TPM-TPM},自己不能提供平臺(tái)狀態(tài)信 息但要求對方必須提供平臺(tái)狀態(tài)信息的身份認(rèn)證算法協(xié)商串{ssh-option-TPM},自己可提 供平臺(tái)狀態(tài)信息而且不要求對方必須提供平臺(tái)狀態(tài)信息的身份認(rèn)證算法協(xié)商串{ssh-rsa, ssh-dss, ssh_TPM_option} 、 {ssh_dss, ssh-rsa, ssh_TPM_option},自己不會(huì)鵬供平臺(tái)狀態(tài) 信息而且不要求對方必須提供平臺(tái)狀態(tài)信息的身份認(rèn)證算法協(xié)商串{ssh-rsa, ssh-dss}、 {ssh_dss, ssh_rsa}; 步驟2,對選擇身份認(rèn)證算法的過程進(jìn)行修改可信服務(wù)器端和可信客戶端在收 到對方發(fā)送的協(xié)商數(shù)據(jù)包后,首先將數(shù)據(jù)包中出現(xiàn)的ssh-TPM-option和ssh-option-TPM 分別用ssh-option-TPM和ssh-TPM-option替換,然后使用SSH標(biāo)準(zhǔn)協(xié)議中定義的匹配規(guī) 則確定要采用的身份認(rèn)證算法; 步驟3,在可信客戶端增加兩個(gè)變量,分別用客戶類型和服務(wù)器類型表示,可信客 戶端在確定所采用的身份認(rèn)證算法之后,但在進(jìn)行會(huì)話密鑰交換之前,要對這兩個(gè)變量進(jìn) 行設(shè)置,如果選定的身份認(rèn)證算法是"ssh-TPM-TPM",則將客戶類型和服務(wù)器類型均設(shè)置為 "TPM",如果選定的身份認(rèn)證算法是"ssh-option-TPM",則將客戶類型設(shè)置空且將服務(wù)器類 型設(shè)置為"TPM",如果選定的身份認(rèn)證算法是"ssh-TPM-option",則將客戶類型設(shè)置"TPM" 且將服務(wù)器類型設(shè)置為空,如果選定的身份認(rèn)證算法是"ssh-rsa"或"ssh-dss",則將客戶 類型和服務(wù)器類型均設(shè)置為空; 步驟4,在可信服務(wù)器端增加兩個(gè)變量,分別用客戶類型和服務(wù)器類型表示,可信 服務(wù)器端在確定所采用的身份認(rèn)證算法之后,但在進(jìn)行會(huì)話密鑰交換之前,要對這兩個(gè)變 量進(jìn)行設(shè)置,如果選定的身份認(rèn)證算法是"ssh-TPM-TPM",則將客戶類型和服務(wù)器類型均設(shè) 置為"TPM",如果選定的身份認(rèn)證算法是"ssh-option-TPM",則將服務(wù)器類型設(shè)置空且將 客戶類型設(shè)置為"TPM",如果選定的身份認(rèn)證算法是"ssh-TPM-option",則將客戶類型設(shè)
6置空且將服務(wù)器類型設(shè)置為"TPM",如果選定的身份認(rèn)證算法是"ssh-rsa"或"ssh-dss", 則將客戶類型和服務(wù)器類型均設(shè)置為空; 步驟5,對可信客戶端會(huì)話密鑰交換處理模塊進(jìn)行修改;
步驟6,對可信服務(wù)器端密鑰交換處理模塊進(jìn)行修改。
所述步驟5的具體過程為 步驟11,可信客戶端收到服務(wù)器端發(fā)送來的p和g后,首先選擇一個(gè)小于p且大于 1的正整數(shù)x,計(jì)算kc = gxmod p,如果客戶類型不等于"TPM",則設(shè)SSC = k、進(jìn)入步驟12 ; 如果客戶類型等于"TPM",則調(diào)用客戶平臺(tái)狀態(tài)信息生成模塊來生成ss、進(jìn)入步驟12 ;其 中P和g為Diffie-Hellman公開密鑰算法的全局公開參數(shù),sse表示一個(gè)字符串,ke為客 戶端生成的值; 步驟12,可信客戶端發(fā)現(xiàn)可信服務(wù)器端發(fā)送數(shù)據(jù)包后,首先接收pr, ks,
Signs,計(jì)算kes = (ks) xmodp并調(diào)用 一 個(gè)哈希計(jì)算模塊來計(jì)算pn_String || PKS || dh_ string II kc II ks II kcs的哈希值has『;如果服務(wù)器類型不等于"TPM",則調(diào)用0penSSH原 來的驗(yàn)證模塊來驗(yàn)證Signs,如果驗(yàn)證失敗則終止與服務(wù)器端的通信,驗(yàn)證成功進(jìn)入步 驟13 ;如果服務(wù)器類型等于"TPM",則調(diào)用客戶端驗(yàn)證服務(wù)器平臺(tái)狀態(tài)信息模塊對Signs 進(jìn)行驗(yàn)證,驗(yàn)證失敗則終止與服務(wù)器端的通信,驗(yàn)證成功就進(jìn)入步驟13;其中符號II表 不鏈接,變量pn_string代表V_C || V_S || client_pn || server_pn,變量dh_string代表 min II n || max || p || g,V—C和V_S分別代表客戶端的標(biāo)識符和服務(wù)器端的標(biāo)識符,client_pn 和server—pn分別代表客戶端的參數(shù)協(xié)商結(jié)果和服務(wù)器端的參數(shù)協(xié)商結(jié)果,min、 n、 max是 P和g的取值范圍,PKS為服務(wù)器端的公鑰,ks為服務(wù)器端生成的值,Signs為服務(wù)器端生成 的簽名信息,Sign。為客戶端生成的簽名信息; 步驟13,發(fā)送"會(huì)話密鑰交換結(jié)束"數(shù)據(jù)包給服務(wù)器端,在接收到服務(wù)器端的"會(huì)
話密鑰交換結(jié)束"數(shù)據(jù)包后,結(jié)束密鑰協(xié)商過程。 所述步驟6的具體過程為 步驟21,服務(wù)器將p和g發(fā)送給可信客戶端后,就等待可信客戶端發(fā)送數(shù)據(jù)包;當(dāng) 發(fā)現(xiàn)可信客戶端發(fā)送數(shù)據(jù)包后,首先接收k、如果客戶類型不等于"TPM",則進(jìn)入步驟22, 否則調(diào)用服務(wù)器驗(yàn)證客戶平臺(tái)狀態(tài)信息模塊,如果驗(yàn)證通過,則判斷服務(wù)器類型是否等于 "TPM",如果等于則設(shè)置7^^ =戶《;,然后進(jìn)入步驟22,如果不等于則進(jìn)入步驟22 ;其中 PK皿s為服務(wù)器端AIK的公鑰; 步驟22,選擇一個(gè)小于p且大于1的正整數(shù)y,計(jì)算ks = gymod p和kse = (kc) ymodp,并計(jì)算pn—string || PKS || dh—string || kc || ks || ksc的哈希值hashs,如果可信服務(wù)器 類型不等于"TPM",則調(diào)用OpenSSH原來的簽名模塊生成簽名結(jié)果SignS,設(shè)sss = (PKs,ks, Signs),然后進(jìn)入步驟23 ;如果可信服務(wù)器類型等于"TPM",則調(diào)用服務(wù)器平臺(tái)狀態(tài)信息生 成模塊生成sss,然后進(jìn)入步驟23 ;其中sss表示一個(gè)字符串; 步驟23,將sss發(fā)送給可信客戶端,然后再發(fā)送"會(huì)話密鑰交換結(jié)束"數(shù)據(jù)包給可 信客戶端,在接收到可信客戶端的"會(huì)話密鑰交換結(jié)束"數(shù)據(jù)包后,結(jié)束密鑰協(xié)商過程。
所述步驟11中的客戶平臺(tái)狀態(tài)信息生成模塊的具體過程為計(jì)算pru string II PKAIKC II dh—string || kc的哈希值hashc,并根據(jù)客戶端策略選定PCR,記作PCR、然 后根據(jù)TCG規(guī)范,將hashe和PCRe傳給TPM設(shè)備,TPM設(shè)備生成一個(gè)簽名,記作Quotee,設(shè)W :(F,i^:,^她、SMZf);其中SMLe表示客戶端的平臺(tái)度量存儲(chǔ)日志,PKAIKe為客戶端 AIK的公鑰。 所述步驟21中的服務(wù)器驗(yàn)證客戶平臺(tái)狀態(tài)信息模塊的具體過程為接收PKAI/、 Quotee和SML、利用PKAIKe從Quotee中獲得PCRe和hash、根據(jù)SMLe和PCRe對可信客 戶端平臺(tái)狀態(tài)進(jìn)行驗(yàn)證,如果驗(yàn)證沒通過,則終止與可信客戶端的通信,否則計(jì)算pru string II PKAIKe II dh_string || ke的哈希值,并與hashe進(jìn)行比較,如果驗(yàn)證不匹配,則終止與 可信客戶端的通信,如果驗(yàn)證匹配,則結(jié)束。 所述步驟22中的服務(wù)器平臺(tái)狀態(tài)信息生成模塊的具體過程為服務(wù)器根據(jù)自己 策略選定PCR并記作Pelf,然后根據(jù)TCG規(guī)范,將hashs和PCRS傳給TPM設(shè)備,TPM設(shè)備生 成一個(gè)簽名,記作Quotes,設(shè)Signs = Quotes且sss = (PKS, ks, Signs, SMLS),結(jié)束;其中SMLS 表示服務(wù)器端的平臺(tái)度量存儲(chǔ)日志。 所述步驟12中的客戶端驗(yàn)證服務(wù)器平臺(tái)狀態(tài)信息模塊的具體過程為接收SMLS, 利用PKS從Signs中獲得PCR3和hashs,根據(jù)SMLS和PCRS對服務(wù)器端平臺(tái)進(jìn)行驗(yàn)證,如果驗(yàn) 證沒通過,則終止與可信服務(wù)器端的通信,否則判斷hash"與hashs是否相等,如果驗(yàn)證不 等,則終止與可信服務(wù)器端的通信,否則結(jié)束。 方法具有以下特性(1)融合了可信計(jì)算中的平臺(tái)狀態(tài)驗(yàn)證的會(huì)話密鑰交換模塊 能夠確保會(huì)話密鑰交換過程所協(xié)商的會(huì)話密鑰是由可信終端完成的,從而確保平臺(tái)狀態(tài)信 息和安全信道的真實(shí)連接,實(shí)現(xiàn)了 SSH可信信道;(2)實(shí)施了本方法的通信雙方可以靈活地 選擇通信方式,可以進(jìn)行基于只認(rèn)證單方平臺(tái)狀態(tài)的可信信道的通信、基于認(rèn)證雙方平臺(tái) 狀態(tài)的可信信道的通信、基于標(biāo)準(zhǔn)SSH協(xié)議的通信,(3)本方法具有功能向后兼容特性,實(shí) 施了本方法的終端可以與沒有實(shí)施本方法的終端進(jìn)行基于標(biāo)準(zhǔn)SSH協(xié)議的通信;(4)本方 法通過功能增強(qiáng)的參數(shù)協(xié)商和功能增強(qiáng)的會(huì)話密鑰交換模塊的緊密配合,防范了攻擊者利 用參數(shù)協(xié)商過程中明文傳輸?shù)奶匦园l(fā)起的攻擊;(5)本方法充分利用OpenSSH已有的數(shù)據(jù) 結(jié)構(gòu)、變量和代碼,盡可能減少對SSH協(xié)議規(guī)范和OpenSSH原軟件系統(tǒng)的修改,因此可擴(kuò)展 性好,支持快速部署。
圖1為實(shí)施了本發(fā)明提供的方法的會(huì)話密鑰交換的流程圖; 圖2為本發(fā)明提供的方法中的客戶平臺(tái)狀態(tài)信息生成模塊的流程圖; 圖3為本發(fā)明提供的方法中的服務(wù)器端驗(yàn)證客戶平臺(tái)狀態(tài)信息模塊的流程圖; 圖4為本發(fā)明提供的方法中的服務(wù)器平臺(tái)狀態(tài)信息生成模塊的流程圖; 圖5為本發(fā)明提供的方法中的客戶端驗(yàn)證服務(wù)器平臺(tái)狀態(tài)信息模塊的流程具體實(shí)施例方式
本發(fā)明提供的方法在硬件上假設(shè)服務(wù)器和客戶端都配有可信安全芯片TPM,而且 服務(wù)器和客戶端的BIOS都支持TPM ;在軟件上假設(shè)服務(wù)器和客戶端安裝了操作系統(tǒng)可信引 導(dǎo)管理器,安裝了支持硬件TPM和可信度量??斓目尚挪僮飨到y(tǒng),此外服務(wù)器和客戶端安 裝了 TPM軟件協(xié)議棧(TrouSers)軟件。本發(fā)明提供的方法在開源OpenSSH軟件4. 7版本 和以上版本的具體實(shí)施步驟如下
步驟1,對身份認(rèn)證算法協(xié)商串的形成過程進(jìn)行修改增加三個(gè)候選項(xiàng),分別用變 量ssh-TPM-TPM、 ssh-TPM-option和ssh-option-TPM來表示;可信客戶端與可信服務(wù)器端 根據(jù)自己的策略分別構(gòu)造一個(gè)身份認(rèn)證算法協(xié)商串,每個(gè)協(xié)商串用大括號括起來,可選擇 的身份認(rèn)證算法協(xié)商串有6種自己可提供平臺(tái)狀態(tài)信息同時(shí)要求對方必須提供平臺(tái)狀態(tài) 信息的身份認(rèn)證算法協(xié)商串{ssh-option-TPM, ssh-TPM-TPM},自己不能提供平臺(tái)狀態(tài)信 息但要求對方必須提供平臺(tái)狀態(tài)信息的身份認(rèn)證算法協(xié)商串{ssh-option-TPM},自己可提 供平臺(tái)狀態(tài)信息而且不要求對方必須提供平臺(tái)狀態(tài)信息的身份認(rèn)證算法協(xié)商串{ssh-rsa, ssh-dss, ssh_TPM_option} 、 {ssh_dss, ssh-rsa, ssh_TPM_option},自己不會(huì)鵬供平臺(tái)狀態(tài) 信息而且不要求對方必須提供平臺(tái)狀態(tài)信息的身份認(rèn)證算法協(xié)商串{ssh-rsa, ssh-dss}、 {ssh_dss, ssh_rsa}。 步驟2,對選擇身份認(rèn)證算法的過程進(jìn)行修改服務(wù)器端和客戶端在收到對方發(fā) 送的協(xié)商數(shù)據(jù)包后,首先將數(shù)據(jù)包中出現(xiàn)的ssh-TPM-option和ssh-option-TPM分別用 ssh-option-TPM和ssh-TPM-option替換,然后使用SSH標(biāo)準(zhǔn)協(xié)議中定義的匹配規(guī)則確定要 采用的身份認(rèn)證算法。 步驟3,在可信客戶端增加兩個(gè)變量,分別用客戶類型和服務(wù)器類型表示,可信客 戶端在確定所采用的身份認(rèn)證算法之后,但在進(jìn)行會(huì)話密鑰交換之前,要對這兩個(gè)變量進(jìn) 行設(shè)置,如果選定的身份認(rèn)證算法是"ssh-TPM-TPM",則將客戶類型和服務(wù)器類型均設(shè)置為 "TPM",如果選定的身份認(rèn)證算法是"ssh-option-TPM",則將客戶類型設(shè)置空且將服務(wù)器類 型設(shè)置為"TPM",如果選定的身份認(rèn)證算法是"ssh-TPM-option",則將客戶類型設(shè)置"TPM" 且將服務(wù)器類型設(shè)置為空,如果選定的身份認(rèn)證算法是"ssh-rsa"或"ssh-dss",則將客戶 類型和服務(wù)器類型均設(shè)置為空。 步驟4,在可信服務(wù)器端增加兩個(gè)變量,分別用客戶類型和服務(wù)器類型表示,可信 服務(wù)器端在確定所采用的身份認(rèn)證算法之后,但在進(jìn)行會(huì)話密鑰交換之前,要對這兩個(gè)變 量進(jìn)行設(shè)置,如果選定的身份認(rèn)證算法是"ssh-TPM-TPM",則將客戶類型和服務(wù)器類型均設(shè) 置為"TPM",如果選定的身份認(rèn)證算法是"ssh-option-TPM",則將服務(wù)器類型設(shè)置空且將 客戶類型設(shè)置為"TPM",如果選定的身份認(rèn)證算法是"ssh-TPM-option",則將客戶類型設(shè) 置空且將服務(wù)器類型設(shè)置為"TPM",如果選定的身份認(rèn)證算法是"ssh-rsa"或"ssh-dss", 則將客戶類型和服務(wù)器類型均設(shè)置為空。 步驟5,根據(jù)圖1右邊客戶端的流程圖對可信客戶端會(huì)話密鑰交換處理模塊進(jìn)行 修改。 步驟6,根據(jù)圖1左邊服務(wù)器端的流程圖對可信服務(wù)器端密鑰交換處理模塊進(jìn)行 修改。 步驟7,分別根據(jù)圖2、3、4、5實(shí)現(xiàn)客戶平臺(tái)狀態(tài)信息生成模塊、服務(wù)器端驗(yàn)證客戶
平臺(tái)狀態(tài)信息模塊、服務(wù)器平臺(tái)狀態(tài)信息生成模塊、客戶端驗(yàn)證服務(wù)器平臺(tái)狀態(tài)信息模塊。 下面根據(jù)圖1對可信客戶端會(huì)話密鑰交換處理模塊的工作流程作詳述 步驟1,可信客戶端收到服務(wù)器端發(fā)送來的p和g后,首先選擇一個(gè)小于p且大于
1的正整數(shù)x,計(jì)算kc = gXmodp,如果客戶類型不等于"TPM",則設(shè)SSC = k、進(jìn)入步驟2 ;如
果客戶類型等于"TPM",則調(diào)用客戶平臺(tái)狀態(tài)信息生成模塊來生成sse,進(jìn)入步驟2 ;其中p
和g為Diffie-Hellman公開密鑰算法的全局公開參數(shù),sse表示一個(gè)字符串,ke為客戶端
9生成的值。 步驟2,可信客戶端發(fā)現(xiàn)可信服務(wù)器端發(fā)送數(shù)據(jù)包后,首先接收Pr, ks, Signs,計(jì)算『二 (ks)x mod p并調(diào)用一個(gè)哈希計(jì)算模塊來計(jì)算pn—stringllPri1 dh_ string II kc II ks II kcs的哈希值has『;如果服務(wù)器類型不等于"TPM",則調(diào)用0penSSH原 來的驗(yàn)證模塊來驗(yàn)證Signs,如果驗(yàn)證失敗則終止與服務(wù)器端的通信,驗(yàn)證成功進(jìn)入步 驟3 ;如果服務(wù)器類型等于"TPM",則調(diào)用客戶端驗(yàn)證服務(wù)器平臺(tái)狀態(tài)信息模塊對Signs 進(jìn)行驗(yàn)證,驗(yàn)證失敗則終止與服務(wù)器端的通信,驗(yàn)證成功就進(jìn)入步驟3;其中符號II表 不鏈接,變量pn_string代表V_C || V_S || client_pn || server_pn,變量dh_string代表 min II n || max || p || g,V_C和V_S分別代表客戶端的標(biāo)識符和服務(wù)器端的標(biāo)識符,client_pn 和server—pn分別代表客戶端的參數(shù)協(xié)商結(jié)果和服務(wù)器端的參數(shù)協(xié)商結(jié)果,min、 n、 max是 P和g的取值范圍,PKS為服務(wù)器端的公鑰,ks為服務(wù)器端生成的值,Signs為服務(wù)器端生成 的簽名信息,Sign。為客戶端生成的簽名信息。 步驟3,發(fā)送"會(huì)話密鑰交換結(jié)束"數(shù)據(jù)包給服務(wù)器端,在接收到服務(wù)器端的"會(huì)話 密鑰交換結(jié)束"數(shù)據(jù)包后,結(jié)束密鑰協(xié)商過程。 下面根據(jù)圖1對可信服務(wù)器端會(huì)話密鑰交換處理模塊的工作流程作詳述
步驟1,服務(wù)器將p和g發(fā)送給可信客戶端后,就等待可信客戶端發(fā)送數(shù)據(jù)包;當(dāng) 發(fā)現(xiàn)可信客戶端發(fā)送數(shù)據(jù)包后,首先接收kE,如果客戶類型不等于"TPM",則進(jìn)入步驟2, 否則調(diào)用服務(wù)器驗(yàn)證客戶平臺(tái)狀態(tài)信息模塊,如果驗(yàn)證通過,則判斷服務(wù)器類型是否等于 "TPM",如果等于則設(shè)置P^T = il^w ,然后進(jìn)入步驟2,如果不等于則進(jìn)入步驟2 ;其中PKAIKS 為服務(wù)器端AIK的公鑰; 步驟2,選擇一個(gè)小于p且大于l的正整數(shù)y,計(jì)算ks二gy mod p和k"二 (ke)ymodp, 并計(jì)算pn_String II PKS II dh_string || ke || ks || kse的哈希值hashs,如果可信服務(wù)器類型不 等于"TPM",則調(diào)用0penSSH原來的簽名模塊生成簽名結(jié)果Signs,設(shè)sss(PKS, ks, Signs),然 后進(jìn)入步驟3 ;如果可信服務(wù)器類型等于"TPM",則調(diào)用服務(wù)器平臺(tái)狀態(tài)信息生成模塊生成 sss,然后進(jìn)入步驟3 ;其中sss表示一個(gè)字符串。 步驟3,將sss發(fā)送給可信客戶端,然后再發(fā)送"會(huì)話密鑰交換結(jié)束"數(shù)據(jù)包給可信
客戶端,在接收到可信客戶端的"會(huì)話密鑰交換結(jié)束"數(shù)據(jù)包后,結(jié)束密鑰協(xié)商過程。
下面根據(jù)圖2對客戶平臺(tái)狀態(tài)信息生成模塊的工作流程作詳述計(jì)算pn— string II PKAIKC II dh—string || kc的哈希值hashc,并根據(jù)客戶端策略選定PCR,記作PCR、然 后根據(jù)TCG規(guī)范,將hashe和PCRe傳給TPM設(shè)備,TPM設(shè)備生成一個(gè)簽名,記作Quotee,設(shè) W =(^,尸《;,2"她、5^^)淇中SMLe表示客戶端的平臺(tái)度量存儲(chǔ)日志,PKAIKe為客戶端 AIK的公鑰。 下面根據(jù)圖3對服務(wù)器驗(yàn)證客戶平臺(tái)狀態(tài)信息模塊的工作流程作詳述接收 PKAIKe、 Quotee和SMLe,利用PKAIKe從Quotee中獲得PCRe和hashe,根據(jù)SMLe和PCRe對可信 客戶端平臺(tái)狀態(tài)進(jìn)行驗(yàn)證,如果驗(yàn)證沒通過,則終止與可信客戶端的通信,否則計(jì)算pn_ string II PKAIKC II dh_string || ke的哈希值,并與hashe進(jìn)行比較,如果驗(yàn)證不匹配,則終止與 可信客戶端的通信,如果驗(yàn)證匹配,則結(jié)束。 下面根據(jù)圖4對服務(wù)器平臺(tái)狀態(tài)信息生成模塊的工作流程作詳述服務(wù)器根據(jù)自 己策略選定PCR并記作Pelf,然后根據(jù)TCG規(guī)范,將hashs和PCRS傳給TPM設(shè)備,TPM設(shè)備
10生成一個(gè)簽名,記作Quotes,設(shè)Signs = Quotes且sss = (PKS, ks, Signs, SMLS),結(jié)束;其中 SMLS表示服務(wù)器端的平臺(tái)度量存儲(chǔ)日志。 下面根據(jù)圖5對客戶端驗(yàn)證服務(wù)器平臺(tái)狀態(tài)信息模塊的工作流程作詳述接收 SMLS,利用PKS從Signs中獲得Pelf和hashs,根據(jù)SMLS和PCRS對服務(wù)器端平臺(tái)進(jìn)行驗(yàn)證, 如果驗(yàn)證沒通過,則終止與可信服務(wù)器端的通信,否則判斷hash"與hashs是否相等,如果 驗(yàn)證不等,則終止與可信服務(wù)器端的通信,否則結(jié)束。 通過上述方法,下列形式的通信都能夠進(jìn)行(l)實(shí)施了本方法的通信雙方可以 進(jìn)行基于只涉及單方平臺(tái)狀態(tài)的可信信道的通信、基于涉及雙方平臺(tái)狀態(tài)的可信信道的通 信、基于標(biāo)準(zhǔn)SSH協(xié)議的通信;(2)實(shí)施了本方法的終端可以與沒有實(shí)施本方法的終端進(jìn)行 基于標(biāo)準(zhǔn)SSH協(xié)議的通信。
權(quán)利要求
一種有效的可信OpenSSH的實(shí)現(xiàn)方法,其特征在于方法的組件包括功能增強(qiáng)的參數(shù)協(xié)商模塊和功能增強(qiáng)的會(huì)話密鑰交換模塊,方法的具體步驟如下步驟1,對身份認(rèn)證算法協(xié)商串的形成過程進(jìn)行修改增加三個(gè)候選項(xiàng),分別用變量ssh-TPM-TPM、ssh-TPM-option和ssh-option-TPM來表示;可信客戶端與可信服務(wù)器端根據(jù)自己的策略分別構(gòu)造一個(gè)身份認(rèn)證算法協(xié)商串,每個(gè)協(xié)商串用大括號括起來,可選擇的身份認(rèn)證算法協(xié)商串有6種自己可提供平臺(tái)狀態(tài)信息同時(shí)要求對方必須提供平臺(tái)狀態(tài)信息的身份認(rèn)證算法協(xié)商串{ssh-option-TPM,ssh-TPM-TPM},自己不能提供平臺(tái)狀態(tài)信息但要求對方必須提供平臺(tái)狀態(tài)信息的身份認(rèn)證算法協(xié)商串{ssh-option-TPM},自己可提供平臺(tái)狀態(tài)信息而且不要求對方必須提供平臺(tái)狀態(tài)信息的身份認(rèn)證算法協(xié)商串{ssh-rsa,ssh-dss,ssh-TPM-option}、{ssh-dss,ssh-rsa,ssh-TPM-option},自己不能提供平臺(tái)狀態(tài)信息而且不要求對方必須提供平臺(tái)狀態(tài)信息的身份認(rèn)證算法協(xié)商串{ssh-rsa,ssh-dss}、{ssh-dss,ssh-rsa};步驟2,對選擇身份認(rèn)證算法的過程進(jìn)行修改可信服務(wù)器端和可信客戶端在收到對方發(fā)送的協(xié)商數(shù)據(jù)包后,首先將數(shù)據(jù)包中出現(xiàn)的ssh-TPM-option和ssh-option-TPM分別用ssh-option-TPM和ssh-TPM-option替換,然后使用SSH標(biāo)準(zhǔn)協(xié)議中定義的匹配規(guī)則確定要采用的身份認(rèn)證算法;步驟3,在可信客戶端增加兩個(gè)變量,分別用客戶類型和服務(wù)器類型表示,可信客戶端在確定所采用的身份認(rèn)證算法之后,但在進(jìn)行會(huì)話密鑰交換之前,要對這兩個(gè)變量進(jìn)行設(shè)置,如果選定的身份認(rèn)證算法是“ssh-TPM-TPM”,則將客戶類型和服務(wù)器類型均設(shè)置為“TPM”,如果選定的身份認(rèn)證算法是“ssh-option-TPM”,則將客戶類型設(shè)置空且將服務(wù)器類型設(shè)置為“TPM”,如果選定的身份認(rèn)證算法是“ssh-TPM-option”,則將客戶類型設(shè)置“TPM”且將服務(wù)器類型設(shè)置為空,如果選定的身份認(rèn)證算法是“ssh-rsa”或“ssh-dss”,則將客戶類型和服務(wù)器類型均設(shè)置為空;步驟4,在可信服務(wù)器端增加兩個(gè)變量,分別用客戶類型和服務(wù)器類型表示,可信服務(wù)器端在確定所采用的身份認(rèn)證算法之后,但在進(jìn)行會(huì)話密鑰交換之前,要對這兩個(gè)變量進(jìn)行設(shè)置,如果選定的身份認(rèn)證算法是“ssh-TPM-TPM”,則將客戶類型和服務(wù)器類型均設(shè)置為“TPM”,如果選定的身份認(rèn)證算法是“ssh-option-TPM”,則將服務(wù)器類型設(shè)置空且將客戶類型設(shè)置為“TPM”,如果選定的身份認(rèn)證算法是“ssh-TPM-option”,則將客戶類型設(shè)置空且將服務(wù)器類型設(shè)置為“TPM”,如果選定的身份認(rèn)證算法是“ssh-rsa”或“ssh-dss”,則將客戶類型和服務(wù)器類型均設(shè)置為空;步驟5,對可信客戶端會(huì)話密鑰交換處理模塊進(jìn)行修改;步驟6,對可信服務(wù)器端密鑰交換處理模塊進(jìn)行修改。
2. 基于權(quán)利要求1所述的一種有效的可信0penSSH的實(shí)現(xiàn)方法,其特征在于步驟5的具體過程為步驟11,可信客戶端收到服務(wù)器端發(fā)送來的p和g后,首先選擇一個(gè)小于P且大于1的正整數(shù)x,計(jì)算『=gXmodp,如果客戶類型不等于"TPM",則設(shè)sse = k、進(jìn)入步驟12 ;如果客戶類型等于"TPM",則調(diào)用客戶平臺(tái)狀態(tài)信息生成模塊來生成ss、進(jìn)入步驟12 ;其中p和g為Diffie-Hellman公開密鑰算法的全局公開參數(shù),sse表示一個(gè)字符串,1^為客戶端生成的值;步驟12,可信客戶端發(fā)現(xiàn)可信服務(wù)器端發(fā)送數(shù)據(jù)包后,首先接收pKs, ks, Signs,計(jì)算kes =(ks)xmod p并調(diào)用一個(gè)哈希計(jì)算模塊來計(jì)算pn—string || PKS || dh—string || kc || ks || kcs 的哈希值hash";如果服務(wù)器類型不等于"TPM",則調(diào)用OpenSSH原來的驗(yàn)證模塊來驗(yàn)證 Signs,如果驗(yàn)證失敗則終止與服務(wù)器端的通信,驗(yàn)證成功進(jìn)入步驟13 ;如果服務(wù)器類型等 于"TPM",則調(diào)用客戶端驗(yàn)證服務(wù)器平臺(tái)狀態(tài)信息模塊對SignS進(jìn)行驗(yàn)證,驗(yàn)證失敗則終止 與服務(wù)器端的通信,驗(yàn)證成功就進(jìn)入步驟13;其中符號II表示鏈接,變量pn—string代表 V_C II V_S II client_pn || server_pn,變量dh_string代表min || n || max || p || g, V_C禾口 V S 分別代表客戶端的標(biāo)識符和服務(wù)器端的標(biāo)識符,Client_pn和server—pn分別代表客戶端 的參數(shù)協(xié)商結(jié)果和服務(wù)器端的參數(shù)協(xié)商結(jié)果,min、n、max是p和g的取值范圍,PKS為服務(wù) 器端的公鑰,ks為服務(wù)器端生成的值,Signs為服務(wù)器端生成的簽名信息,SignE為客戶端生 成的簽名信息;步驟13,發(fā)送"會(huì)話密鑰交換結(jié)束"數(shù)據(jù)包給服務(wù)器端,在接收到服務(wù)器端的"會(huì)話密 鑰交換結(jié)束"數(shù)據(jù)包后,結(jié)束密鑰協(xié)商過程。
3. 基于權(quán)利要求1所述的一種有效的可信0penSSH的實(shí)現(xiàn)方法,其特征在于步驟6的 具體過程為步驟21,服務(wù)器將p和g發(fā)送給可信客戶端后,就等待可信客戶端發(fā)送數(shù)據(jù)包;當(dāng)發(fā)現(xiàn) 可信客戶端發(fā)送數(shù)據(jù)包后,首先接收kE,如果客戶類型不等于"TPM",則進(jìn)入步驟22,否則調(diào) 用服務(wù)器驗(yàn)證客戶平臺(tái)狀態(tài)信息模塊,如果驗(yàn)證通過,則判斷服務(wù)器類型是否等于"TPM", 如果等于則設(shè)置PK'-PI:w ,然后進(jìn)入步驟`22,如果不等于則進(jìn)入步驟22 ;其中PI^/為服 務(wù)器端AIK的公鑰;步驟22,選擇一個(gè)小于p且大于1的正整數(shù)y,計(jì)算k3 = gymodp和ksc = (kc)ymodpJ 計(jì)算pn_String II PKS II dh_string || ke || ks || kse的哈希值hashs,如果可信服務(wù)器類型不等 于"TPM",則調(diào)用0penSSH原來的簽名模塊生成簽名結(jié)果Sign 設(shè)sss = (PKS, ks, Sign", 然后進(jìn)入步驟23 ;如果可信服務(wù)器類型等于"TPM",則調(diào)用服務(wù)器平臺(tái)狀態(tài)信息生成模塊生成sss,然后進(jìn)入步驟23 ;其中sss表示一個(gè)字符串;步驟23,將sss發(fā)送給可信客戶端,然后再發(fā)送"會(huì)話密鑰交換結(jié)束"數(shù)據(jù)包給可信客 戶端,在接收到可信客戶端的"會(huì)話密鑰交換結(jié)束"數(shù)據(jù)包后,結(jié)束密鑰協(xié)商過程。
4. 基于權(quán)利要求2所述的一種有效的可信0penSSH的實(shí)現(xiàn)方法,其特征在于所述 步驟11中的客戶平臺(tái)狀態(tài)信息生成模塊的具體過程為計(jì)算pn—string || PKAIKe || dh_ string II ke的哈希值hash、并根據(jù)客戶端策略選定PCR,記作PCRe,然后根據(jù)TCG規(guī)范,將 has『和PCr傳給TPM設(shè)備,TPM設(shè)備生成一個(gè)簽名,記作Quotee,設(shè)sse = (ke, PKAIKe, Quotec, SML";其中SMLe表示客戶端的平臺(tái)度量存儲(chǔ)日志,PKAI/為客戶端AIK的公鑰。
5. 基于權(quán)利要求2所述的一種有效的可信0penSSH的實(shí)現(xiàn)方法,其特征在于所述步 驟21中的服務(wù)器驗(yàn)證客戶平臺(tái)狀態(tài)信息模塊的具體過程為接收PKm/、 QuoteE和SMLE, 利用PKAIKE從QuoteE中獲得PCRE和has『,根據(jù)SMLE和PCRE對可信客戶端平臺(tái)狀態(tài)進(jìn)行 驗(yàn)證,如果驗(yàn)證沒通過,則終止與可信客戶端的通信,否則計(jì)算pn—string || PKAIKe || dh_ string II ke的哈希值,并與has『進(jìn)行比較,如果驗(yàn)證不匹配,則終止與可信客戶端的通信, 如果驗(yàn)證匹配,則結(jié)束。
6. 基于權(quán)利要求2所述的一種有效的可信0penSSH的實(shí)現(xiàn)方法,其特征在于所述步驟22中的服務(wù)器平臺(tái)狀態(tài)信息生成模塊的具體過程為服務(wù)器根據(jù)自己策略選定PCR并 記作PCR3,然后根據(jù)TCG規(guī)范,將hashs和PCRS傳給TPM設(shè)備,TPM設(shè)備生成一個(gè)簽名,記作 Quotes,設(shè)Signs = Quotes且sss = (PKS, ks, Signs, SMLS),結(jié)束;其中SMLS表示服務(wù)器端的 平臺(tái)度量存儲(chǔ)日志。
7.基于權(quán)利要求2所述的一種有效的可信0penSSH的實(shí)現(xiàn)方法,其特征在于所述步 驟12中的客戶端驗(yàn)證服務(wù)器平臺(tái)狀態(tài)信息模塊的具體過程為接收SMLS,利用PKS從Signs 中獲得PCR3和hashs,根據(jù)SMLS和PCRS對服務(wù)器端平臺(tái)進(jìn)行驗(yàn)證,如果驗(yàn)證沒通過,則終止 與可信服務(wù)器端的通信,否則判斷hash"與hashs是否相等,如果驗(yàn)證不等,則終止與可信 服務(wù)器端的通信,否則結(jié)束。
全文摘要
本發(fā)明涉及一種有效的可信OpenSSH的實(shí)現(xiàn)方法,方法的組件包括功能增強(qiáng)的參數(shù)協(xié)商模塊和功能增強(qiáng)的會(huì)話密鑰交換模塊,方法的具體步驟如下步驟1,對身份認(rèn)證算法協(xié)商串的形成過程進(jìn)行修改,步驟2,對選擇身份認(rèn)證算法的過程進(jìn)行修改,步驟3,在可信客戶端增加兩個(gè)變量,分別用客戶類型和服務(wù)器類型表示,步驟4,在可信服務(wù)器端增加兩個(gè)變量,分別用客戶類型和服務(wù)器類型表示,步驟5,對可信客戶端會(huì)話密鑰交換處理模塊進(jìn)行修改,步驟6,對可信服務(wù)器端密鑰交換處理模塊進(jìn)行修改。本發(fā)明在實(shí)現(xiàn)可信信道的同時(shí)充分考慮系統(tǒng)性能、可擴(kuò)展性和功能向后兼容性。
文檔編號H04L29/06GK101789939SQ201010100818
公開日2010年7月28日 申請日期2010年1月25日 優(yōu)先權(quán)日2010年1月25日
發(fā)明者劉吉強(qiáng), 劉新明, 左向暉, 常曉林, 邢彬, 韓臻 申請人:北京交通大學(xué)