专利名称:一种保护平台信息的可信OpenSSH的实现方法
技术领域:
本发明涉及一种保护平台信息的可信OpenSSH的实现方法,属于计算机信息安全 领域。
背景技术:
SSH(Secure Shell)协议是IETF的网络工作小组制定了一个安全协议,用于保护 客户端与服务器端之间传输的数据。SSH协议采用了分层结构设计,包括四个子协议SSH 传输层子协议、用户认证子协议、连接子协议和文件传输子协议。客户端与服务器端利用 SSH协议进行通信时,首先执行的是SSH传输层子协议,它负责在服务器和客户端建立安全 信道,该子协议包括协议版本交换、参数协商(参数协商过程需要协商的内容包括密钥交 换方法、身份认证算法、哈希算法、加密算法和压缩算法这五类)、会话密钥交换三个过程, 该子协议运行结束后将协商出一个会话密钥,用于加密用户认证阶段的认证信息、连接阶 段通信双方的通信数据和文件传输阶段通信双方的通信数据。OpenSSH是一个完整地实现 了 SSH协议的免费开源软件包。计算机信息的安全问题很难单靠软件解决,为了解决现有PC机的不安全问题,从 根本上提高其可信性,可信计算平台联盟TCPA (后来更名为TCG)提出通过增强现有的终端 体系结构的安全性来保证整个系统的安全,核心思想是在硬件平台上引入具有安全存储和 加密功能的可信平台模块(又称为可信芯片)TPM。可信计算平台以TPM为信任根,借助其 他可信度量模块对系统平台配置进行度量,然后安全地将系统运行情况记录在TPM中的平 台配置寄存器(PCR),同时在系统保存代表了被验证的可信平台的完整性度量历史的度量 存储日志SML (storage measurement log)。远程用户根据SML和相关PCR值来判断该运行 环境是否可信、某些环节是否出现安全问题,这一过程被称作远程证明。在TCG规范中,TPM 使用身份证明密钥AIK (attestation identity key)来证明自己的身份,凡是经过AIK签 名的实体,都表明已经经过TPM的处理。为了防止重放、篡改、假冒等攻击,远程证明要求被 验证的一方要使用AIK对数据进行签名。目前许多损害终端的攻击是通过注入恶意代码而不是通过损害安全信道来实施 的,这造成了一个终端在与未知端点通信时,即使使用安全信道,仍然可能遭受一系列攻 击。为解决该问题,北京交通大学常晓林设计了一个基于OpenSSH的可信信道(申请号 201010100818. 2,一种有效的可信OpenSSH的实现方法),但是在该专利所提供的方法中, 通信双方的平台信息以明文方式传输,导致了通信双方平台信息的泄露。
发明内容
本发明的目的是提供一种保护平台信息的可信OpenSSH的实现方法,在实现可信信道的同时保证了通信双方的平台信息在网络传输过程中的秘密性。本发明的技术方案为—种保护平台信息的可信OpenSSH的实现方法,方法的组件包括功能增强的会话密钥交换模块,方法的具体步骤如下步骤1,可信客户端确定三个变量mirurumax的值,然后发送给可信服务器端;步骤2,可信服务器端根据收到的信息生成Diffie-Hellman公开密钥算法的全局 公开参数P和g,然后发送给可信客户端;步骤3,可信客户端收到P和g后,首先选择一个小于P且大于1的正整数X,然后 计算= gxmodp,最后将K发送给可信服务器端;其中K为可信客户端生成的值;步骤4,可信服务器端收到后,选择一个小于P且大于1的正整数y,计算ks = gymodp和ksc; = (kc)ymodp,并用ksc;作为对称加密密钥,对SMLs加密,结果记为enc (SMLs ; ksc),并计算 pn_string | | PKaik3 | | dh_string | | k。| | ks | | ksc 的哈希值 hash3,然后可信服务器 端根据自己策略选定PCR标号,用变量PCRs代表该PCR标号对应的TPM内部PCR的值,再 利用TPM设备对hashs和PCRs进行签名,签名结果记作Quotes,最后可信服务器端将PKAIKS, ks,Quote3, enc(SMLs ;ksc)发送给可信客户端;其中符号| |表示链接,变量pr^string代表 V_C V_S |client_pn| | server_pn,变量 dh_string 代表 min | η max ρ g, V_C 禾Π V_S 分别代表可信客户端的标识符和可信服务器端的标识符,client_pn和server_pn分别代 表可信客户端的参数协商结果和可信服务器端的参数协商结果,PKaik3为可信服务器端AIK 的公钥,ks为可信服务器端生成的值,Quotes为可信服务器端生成的签名信息,SMLs表示可 信服务器端的平台度量存储日志;步骤5,可信客户端收 PKAIKS,ks,Quotes, enc (SMLs ;ksc)后,首先计算 kes = (ks)xmod P并调用一个哈希计算模块来计算pn_string| PKaik3 dh_string kc |ks| kcs的哈希值 hashcs ;然后利用 PKAIKS 从 Quotes 中获得 PCRs 和 hashs,并用 kes 解密 enc (SMLs ;ksc),获得 SMLs,然后根据SMLs和PCRs对可信服务器端平台进行验证,如果验证没通过,则终止与可信 服务器端的通信,否则判断hash"与hashs是否相等,如果验证不等,则终止与可信服务器 端的通信,否则进入步骤6;步骤6,可信客户端根据客户端策略选定PCR标号,用变量PCIT代表该PCR标号 对应的TPM内部PCR的值,并计算pn_String |PKAIK。| dh_string |k。| ks kes的哈希值 hashc,然后再利用TPM设备对hashe和PCRe进行签名,签名结果记作Quotee,并用kes作为 对称加密密钥,对SML。加密,结果记为enc (SMLc ;kcs),然后将ΡΚΑΙ/,Quotec, enc (SMLc ;kcs) 组装成“会话密钥交换结束”数据包,发送给可信服务器端;其中SMLc表示客户端的平台度 量存储日志,PKAIKC为可信客户端AIK的公钥,Quotec为客户端生成的签名信息;步骤7,可信服务器端接收PKAIKe、Quotec和enc (SMLc ;kcs)后,首先利用PKAIKe从 Quotec中获得PCRe和hashe,并用kse解密enc (SMLe ;kes),并调用一个哈希计算模块来计算 pn_string | | PKAIK。| | dh_string | | k。| | ks | | ksc 的哈希值 hashsc,然后根据 SMLc 和 PCRc 对可信 客户端平台状态进行验证,如果验证没通过,则终止与可信客户端的通信,否则将hasK与 hashsc进行比较,如果验证不匹配,则终止与可信客户端的通信,如果验证匹配,则进入步骤 8 ;步骤8,可信服务器端发送“会话密钥交换结束”数据包给可信客户端,结束密钥协 商过程;步骤9,可信客户端在接收到“会话密钥交换结束”数据包后,结束密钥协商过程。
图1为实施了本发明提供的方法的会话密钥交换的流程图。
具体实施例方式本发明提供的方法在硬件上假设服务器和客户端都配有可信安全芯片TPM,而且 服务器和客户端的BIOS都支持TPM ;在软件上假设服务器和客户端安装了操作系统可信引 导管理器,安装了支持硬件TPM和可信度量模快的可信操作系统,此外服务器和客户端安 装了 TPM软件协议栈(TrouSers)软件。本发明提供的方法在开源OpenSSH软件4. 7版本 和以上版本的具体实施步骤如下步骤1,根据图1右边客户端的流程图对可信客户端会话密钥交换处理模块进行 修改。步骤2,根据图1左边服务器端的流程图对可信服务器端密钥交换处理模块进行 修改。下面根据图1对可信服务器端与可信客户端之间的会话密钥交换的工作流程作 详述步骤1,可信客户端确定三个变量mirurumax的值,然后发送给可信服务器端;步骤2,可信服务器端根据收到的信息生成Diffie-Hellman公开密钥算法的全局 公开参数P和g,然后发送给可信客户端;步骤3,可信客户端收到ρ和g后,首先选择一个小于P且大于1的正整数X,然后 计算= gxmodp,最后将K发送给可信服务器端;其中K为可信客户端生成的值;步骤4,可信服务器端收到ke后,选择一个小于ρ且大于1的正整数y,计算ks = gymod ρ和ksc; = (kc)ymodp,并用『作为对称加密密钥,对SMLs加密,结果记为enc (SMLs ; ksc),并计算 pn_string | | PKaik3 | | dh_string | | k。| | ks | | ksc 的哈希值 hash3,然后可信服务器 端根据自己策略选定PCR标号,用变量PCRs代表该PCR标号对应的TPM内部PCR的值,再 利用TPM设备对hashs和PCRs进行签名,签名结果记作Quotes,最后可信服务器端将PKAIKS, ks,Quote3, enc(SMLs ;ksc)发送给可信客户端;其中符号| |表示链接,变量pr^string代表 V_C V_S |client_pn| | server_pn,变量 dh_string 代表 min | η max ρ g, V_C 禾Π V_S 分别代表可信客户端的标识符和可信服务器端的标识符,client_pn和server_pn分别代 表可信客户端的参数协商结果和可信服务器端的参数协商结果,PKaik3为可信服务器端AIK 的公钥,ks为可信服务器端生成的值,Quotes为可信服务器端生成的签名信息,SMLs表示可 信服务器端的平台度量存储日志;步骤5,可信客户端收 PKaik3, ks,Quote3, enc (SMLs ;ksc)后,首先计算 kcs = (ks) xmodp并调用一个哈希计算模块来计算pr^string PKaik3 dh_string kc ks |kes的哈希 值hash。s ;然后利用PKAIKS从Quotes中获得PCRs和hashs,并用k。s解密enc (SMLs ;ksc),获得 SMLs,然后根据SMLs和PCRs对可信服务器端平台进行验证,如果验证没通过,则终止与可信 服务器端的通信,否则判断hash"与hashs是否相等,如果验证不等,则终止与可信服务器 端的通信,否则进入步骤6;步骤6,可信客户端根据客户端策略选定PCR标号,用变量PCIT代表该PCR标号 对应的TPM内部PCR的值,并计算pn_String |PKAIK。| dh_string |k。| ks kes的哈希值hashc,然后再利用TPM设备对hashe和PCRe进行签名,签名结果记作Quotee,并用kes作为 对称加密密钥,对SML。加密,结果记为enc (SMLc ;kcs),然后将ΡΚΑΙ/,Quotec, enc (SMLc ;kcs) 组装成“会话密钥交换结束”数据包,发送给可信服务器端;其中SMLc表示客户端的平台度 量存储日志,PKAIKC为可信客户端AIK的公钥,Quotec为客户端生成的签名信息;步骤7,可信服务器端接收PKAIKe、Quotec和enc (SMLc ;kcs)后,首先利用PKAIKe从 Quotec中获得PCRe和hashe,并用kse解密enc (SMLe ;kes),并调用一个哈希计算模块来计算 pn_string | | PKAIK。| | dh_string | | k。| | ks | | ksc 的哈希值 hashsc,然后根据 SMLc 和 PCRc 对可信 客户端平台状态进行验证,如果验证没通过,则终止与可信客户端的通信,否则将hasK与 hashsc进行比较,如果验证不匹配,则终止与可信客户端的通信,如果验证匹配,则进入步骤 8 ;步骤8,可信服务器端发送“会话密钥交换结束”数据包给可信客户端,结束密钥协商过程;步骤9,可信客户端在接收到“会话密钥交换结束”数据包后,结束密钥协商过程。
通过上述方法,不但在服务器端和客户端建立了可信信道,而且保证了通信双方 的平台信息在网络传输过程中的秘密性。
权利要求
一种保护平台信息的可信OpenSSH的实现方法,其特征在于方法的组件包括功能增强的会话密钥交换模块,方法的具体步骤如下步骤1,可信客户端确定三个变量min、n、max的值,然后发送给可信服务器端;步骤2,可信服务器端根据收到的信息生成Diffie-Hellman公开密钥算法的全局公开参数p和g,然后发送给可信客户端;步骤3,可信客户端收到p和g后,首先选择一个小于p且大于1的正整数x,然后计算kc=gx mod p,最后将kc发送给可信服务器端;其中kc为可信客户端生成的值;步骤4,可信服务器端收到kc后,选择一个小于p且大于1的正整数y,计算ks=gy mod p和ksc=(kc)y mod p,并用ksc作为对称加密密钥,对SMLs加密,结果记为enc(SMLs;ksc),并计算pn_string‖PKAIKs‖dh_string‖kc‖ks‖ksc的哈希值hashs,然后可信服务器端根据自己策略选定PCR标号,用变量PCRs代表该PCR标号对应的TPM内部PCR的值,再利用TPM设备对hashs和PCRs进行签名,签名结果记作Quotes,最后可信服务器端将PKAIKs,ks,Quotes,enc(SMLs;ksc)发送给可信客户端;其中符号||表示链接,变量pn_string代表V_C||V_S||client_pn||server_pn,变量dh_string代表min||n||max||p||g,V_C和V_S分别代表可信客户端的标识符和可信服务器端的标识符,client_pn和server_pn分别代表可信客户端的参数协商结果和可信服务器端的参数协商结果,PKAIKs为可信服务器端AIK的公钥,ks为可信服务器端生成的值,Quotes为可信服务器端生成的签名信息,SMLs表示可信服务器端的平台度量存储日志;步骤5,可信客户端收PKAIKs,ks,Quotes,enc(SMLs;ksc)后,首先计算kcs=(ks)x mod p并调用一个哈希计算模块来计算pn_string‖PKAIKs‖dh_string‖kc‖kc‖kcs的哈希值hashcs;然后利用PKAIKs从Quotes中获得PCRs和hashs,并用kcs解密enc(SMLs;ksc),获得SMLs,然后根据SMLs和PCRs对可信服务器端平台进行验证,如果验证没通过,则终止与可信服务器端的通信,否则判断hashcs与hashs是否相等,如果验证不等,则终止与可信服务器端的通信,否则进入步骤6;步骤6,可信客户端根据客户端策略选定PCR标号,用变量PCRc代表该PCR标号对应的TPM内部PCR的值,并计算pn_string‖PKAIKc‖dh_string‖kc‖ks‖kcs的哈希值hashc,然后再利用TPM设备对hashc和PCRc进行签名,签名结果记作Quotec,并用kcs作为对称加密密钥,对SMLc加密,结果记为enc(SMLc;kcs),然后将PKAIKc,Quotec,enc(SMLc;kcs)组装成“会话密钥交换结束”数据包,发送给可信服务器端;其中SMLc表示客户端的平台度量存储日志,PKAIKc为可信客户端AIK的公钥,Quotec为客户端生成的签名信息;步骤7,可信服务器端接收PKAIKc、Quotec和enc(SMLc;kcs)后,首先利用PKAIKc从Quotec中获得PCRc和hashc,并用ksc解密enc(SMLc;kcs),并调用一个哈希计算模块来计算pn_string‖PKAIKc‖dh_string‖kc‖ks‖ksc的哈希值hashsc,然后根据SMLc和PCRc对可信客户端平台状态进行验证,如果验证没通过,则终止与可信客户端的通信,否则将hashc与hashsc进行比较,如果验证不匹配,则终止与可信客户端的通信,如果验证匹配,则进入步骤8;步骤8,可信服务器端发送“会话密钥交换结束”数据包给可信客户端,结束密钥协商过程;步骤9,可信客户端在接收到“会话密钥交换结束”数据包后,结束密钥协商过程。
全文摘要
本发明提供了一种保护平台信息的可信OpenSSH的实现方法,方法的组件包括功能增强的会话密钥交换模块,方法的具体步骤如下,首先是可信客户端将自己的信息发送可信服务器端,然后可信服务器端根据收到的信息以及自己的信息生成会话密钥,同时将自己的信息、加密的可信服务器平台信息、包含有可信服务器平台信息的签名信息发送给可信客户端;可信客户端根据收到的信息生成会话密钥,同时验证服务器的签名信息,在验证通过后,将加密的可信客户平台信息以及包含有可信客户平台信息的签名信息发送给可信服务器端;最后可信服务器验证客户签名信息。本发明在实现可信信道的同时,保证了通信双方的平台信息在网络传输过程中的秘密性。
文档编号H04L9/32GK101834852SQ20101014090
公开日2010年9月15日 申请日期2010年4月2日 优先权日2010年4月2日
发明者刘吉强, 左向晖, 常晓林, 王绍创, 韩臻, 黄珊 申请人:北京交通大学