基于后量子密钥交换实现SSH协议的方法及其系统与流程

文档序号:14574513发布日期:2018-06-02 01:09阅读:257来源:国知局
基于后量子密钥交换实现SSH协议的方法及其系统与流程

本发明属于信息技术领域,具体涉及一种基于后量子密钥交换实现SSH协议的方法和基于后量子密钥交换实现SSH协议的系统。



背景技术:

随着计算机网络的不断发展,网络规模也变得越来越大,人们对远程登录功能的需求也随之提升,例如对远程服务器的配置、管理等。SSH(Secure Shel l)是目前应用最为广泛的远程登录协议之一,与其他提供远程登录的协议相比,SSH能够提供通信双方身份验证、通信数据加密传输以及完整性校验等多种安全服务。

SSH协议标准规定了SSH的分层体系架构,如图1所示的SSH协议架构图所示,其包含传输层协议、用户认证和连接层协议三部分,其中传输层协议位于SSH的最底层,能够提供密钥协商、数据加密、身份认证等安全服务,是SSH能够提供安全远程登录的基础。目前SSH传输层中密钥协商部分由DH(Diffie-Hellman)算法完成,即通信双方利用DH算法在公共网络上协商出一个共享密钥,该共享密钥用于加解密之后所有要传输的数据,保障会话安全性。密钥协商算法在SSH协议中有着举足轻重的地位,必须具有足够高的安全性,目前的DH算法的安全性依赖于解决离散对数的困难性。离散对数问题在使用当今的计算机条件下,只能在指数时间内才能被解决。但是随着量子计算机与量子算法的出现,离散对数问题已被证明可用量子计算机在多项式时间内解决,这也就意味着DH算法在量子时代将不再那么安全。

一方面,为了防止DH算法受到中间人攻击,SSH在密钥协商阶段不仅要支持DH算法,还需要支持RSA、SHA256等算法,复杂性相对较高。另一方面,量子密码学技术迅猛发展。这些量子密码技术的研究严重威胁着当前依赖于数字理论的公钥密码体制,给SSH安全性带来了严重威胁,且Shor算法的提出使得依赖于离散对数困难性的密码算法不再那么安全,DH算法也随之面临巨大挑战,如果DH算法不能保证通信双方协商共享密钥的安全性,那么SSH提供安全服务就无从谈起。随着量子算法的深入研究,使得解决离散对数问题变得轻松与容易,破解DH算法协商的共享密钥也就成为了一件易事,SSH提供安全服务将受到严重质疑。

另外,现阶段SSH也被爆出了很多安全漏洞,尤其是SSH协议在建立连接的过程中,不对通信双方是否被非法入侵或控制进行验证,通信双方均无法确定对端的可信状态,无法确定对方是否被攻击者入侵或非法控制,为攻击者进行攻击提供了机会。尽管现阶段SSH协议有诸多优点,拥有众多用户,但也确实存在着一些漏洞与不足,比如容易受到选择密文攻击、SQL注入等,对这些已现存的问题进行改进成为目前亟待解决的技术问题。



技术实现要素:

本发明所要解决的技术问题是针对现有技术中存在的上述不足,提供一种基于后量子密钥交换实现SSH协议的方法和基于后量子密钥交换实现SSH协议的系统,其使用量子密码学理论知识以达到能够抵抗量子计算机攻击的目的,保证网络安全。

解决本发明技术问题所采用的技术方案是该基于后量子密钥交换实现SSH协议的方法,包括密钥交换步骤,该密钥交换步骤包括:

客户端和服务器从第一参数的高斯分布上随机采样,分别计算客户端的公私密钥对和服务器的公私密钥对;

客户端从第二参数的高斯分布上随机采样,计算客户端临时会话公钥,并将客户端公钥和客户端临时会话公钥发送至服务器;

服务器接收客户端公钥和客户端临时会话公钥,对客户端进行身份验证,如果验证不能通过,服务器将直接断开链接,否则进行下一步;

从第二参数的高斯分布上的随机采样,计算服务器临时会话公钥;

服务器根据客户端临时会话公钥、客户端向量、服务器临时会话公钥、服务器向量、以及服务器在第一参数和第二参数的高斯分布上的随机采样,计算服务器临时会话变量以及临时会话消错变量,进而根据服务器临时会话变量以及临时会话消错变量计算服务器共享密钥初始种子;

服务器根据客户端向量、服务器向量、客户端临时会话公钥、服务器临时会话公钥、临时会话消错变量和服务器共享密钥初始种子,利用后量子算法生成此次会话的最终服务器共享密钥;

客户端根据服务器公钥对服务器进行身份验证;

客户端通过服务器的身份认证,根据客户端临时会话公钥、客户端向量、服务器向量、服务器临时会话公钥、以及客户端在第一参数和第二参数的高斯分布上的随机采样,计算客户端临时会话变量,进而根据客户端临时会话变量以及临时会话消错变量计算客户端共享密钥初始种子;

客户端根据客户端向量、服务器向量、客户端临时会话公钥、服务器临时会话公钥、临时会话消错变量和客户端共享密钥初始种子,利用后量子算法生成此次会话的最终客户端共享密钥;

服务器或客户端任一身份验证不能通过,则密钥交换终止。

优选的是,服务器临时会话公钥ks为:

ks=(pcc+x)(ssd+rs)+2gs

其中:

c=H1(client,server,x),为客户端向量;

x=arc+2fc,为客户端临时会话公钥;

rci和fci为客户端从第二参数为β的高斯分布χβ上的随机采样值,q为正整数;

d=H1(server,client,y,x),为服务器向量;

y=ars+2fs,为服务器临时会话公钥;

rsi,fsi,gsi为服务器从第二参数为β的高斯分布χβ上的随机采样值,q为正整数;

pc=asc+2ec,为客户端公钥;

sci和eci为客户端从第一参数为α高斯分布χα上的随机采样值,q为正整数,sc仍为客户端私钥;

以及,临时会话消错变量w为:

w=Cha(ks)

其中:Cha()为特征关联函数。

优选的是,根据(w,y,ps),服务器共享密钥初始种子σs为:

σs=Mod2(ks,w)

其中:Mod2()为模2函数,Mod2(v,w)=(v+w·(q-1)/2)modqmod 2,qmod2n=1,单位矩阵v∈Mq,w∈{0,1};

服务器共享密钥sks为:

sks=H(client,server,x,y,w,σs)。

优选的是,客户端临时会话变量kc为:

kc=(psd+y)(scc+rc)+2gc

其中:

gci为服务器从第二参数为β的高斯分布χβ上的随机采样值,q为正整数;

ps=ass+2es,为服务器公钥;

ssi和esi为服务器从第一参数为α高斯分布χα上的随机采样值,q为正整数,ss仍为服务器私钥。

5.根据权利要求4所述的基于后量子密钥交换实现SSH协议的方法,其特征在于,根据(w,y,ps),客户端共享密钥初始种子σc为:

σc=Mod2(kc,w)

其中:Mod2()为模2函数,Mod2(v,w)=(v+w·(q-1)/2)modqmod 2,qmod2n=1,单位矩阵v∈Mq,w∈{0,1};

客户端共享密钥skc为:

skc=H(client,server,x,y,w,σc)。

优选的是,在密钥交换步骤之前,还包括:验证通信双方的可信状态的步骤,为:

发送验证客户端可信状态的请求到服务器;

服务器收到客户端的请求后,随机生成一个M位的第一随机数,将第一随机数与验证自身可信状态的请求到客户端,其中M为自然数;

客户端收到第一随机数与验证请求后,对应生成一个M位的第二随机数,然后向可信请求完整性度量,并将第一随机数和配置寄存器值、度量日志SML加密,将加密结果、第二随机数以及TPM公钥一起发送到服务器;

服务器收到数据后,判断此客户端是否是请求建立SSH连接的第一个客户端,如果是,检查本地是否存在可信凭证,如果本地存在可信凭证且该可信凭证仍然在有效期内,则直接进行下一步;否则,则需要先向本机可信请求完整性度量,然后将第二随机数和自己的配置寄存器值、度量日志SML加密,将加密结果和TPM公钥一起发送到客户端;

服务器根据客户端发送的数据验证客户端的可信状态,如果验证通过,生成可信验证通过凭证,该凭证包含客户端IP、客户端唯一标识符、本机服务器的IP与标识符、生成该凭证的时间、凭证有效期,并使用客户端发送的TPM公钥进行加密,将加密结果与验证通过信息一起发送到客户端;

客户端收到数据后,验证服务器的可信状态,如果验证通过后,客户端同样生成一个可信凭证,内容包括服务器IP、服务器唯一标识符、本机客户端的IP与标识符、生成该凭证的时间、凭证有效期,并使用服务器发送的TPM公钥进行加密,将加密结果与验证通过信息一起发送到服务器;

服务器收到可信凭据后,使用自己的TPM私钥解密该可信凭据,并将其保存在本地,如此则双方的可信状态均以验证通过,否则直接断开连接。

一种基于后量子密钥交换实现SSH协议的系统,包括密钥交换模块,该所述密钥交换模块包括第一密钥单元、第二密钥单元和第一验证单元、第二验证单元,其中:

所述第一密钥单元,位于服务器,用于完成下述功能:

从第一参数的高斯分布上随机采样,计算服务器的公私密钥对;

在所述第一验证单元通过客户端的身份认证后,从第二参数的高斯分布上的随机采样,计算服务器临时会话公钥;

根据客户端临时会话公钥、客户端向量、客户端临时服务器向量、以及服务器在第一参数和第二参数的高斯分布上的随机采样,计算服务器临时会话变量以及临时会话消错变量;

以及,根据服务器临时会话变量以及临时会话消错变量计算服务器共享密钥初始种子;

根据客户端向量、服务器向量、客户端临时会话公钥、服务器临时会话公钥、临时会话消错变量和服务器共享密钥初始种子,利用后量子算法生成此次会话的最终服务器共享密钥;

所述第一验证单元,位于服务器,用于接收客户端公钥和客户端临时会话公钥,对客户端进行身份验证,如果验证不能通过,服务器将直接断开链接,否则进行后续认证;

所述第二密钥单元,位于客户端,用于完成下述功能:

从第一参数的高斯分布上随机采样,计算客户端的公私密钥对;

从第二参数的高斯分布上随机采样,计算客户端临时会话公钥,并将客户端公钥和客户端临时会话公钥发送至服务器;

在所述第二验证单元通过服务器的身份认证后,根据客户端临时会话公钥、客户端向量、服务器向量、服务器临时会话公钥、以及客户端在第一参数和第二参数的高斯分布上的随机采样,计算客户端临时会话变量,进而根据客户端临时会话变量以及临时会话消错变量计算客户端共享密钥初始种子;

以及,根据客户端向量、服务器向量、客户端临时会话公钥、服务器临时会话公钥、临时会话消错变量和客户端共享密钥初始种子,利用后量子算法生成此次会话的最终服务器共享密钥;

所述第二验证单元,位于客户端,用于根据服务器公钥对服务器进行身份验证,如果验证不能通过,终止密钥交换,否则进行后续认证。

优选的是,在所述第一密钥单元中:

服务器临时会话公钥ks为:

ks=(pcc+x)(ssd+rs)+2gs

其中:

c=H1(client,server,x),为客户端向量;

x=arc+2fc,为客户端临时会话公钥;

rci和fci为客户端从第二参数为β的高斯分布χβ上的随机采样值,q为正整数;

d=H1(server,client,y,x),为服务器向量;

y=ars+2fs,为服务器临时会话公钥;

rsi,fsi,gsi为服务器从第二参数为β的高斯分布χβ上的随机采样值,q为正整数;

pc=asc+2ec,为客户端公钥;

sci和eci为客户端从第一参数为α高斯分布χα上的随机采样值,q为正整数,sc仍为客户端私钥;

以及,临时会话消错变量w为:

w=Cha(ks)

其中:Cha()为特征关联函数;

根据(w,y,ps),服务器共享密钥初始种子σs为:

σs=Mod2(ks,w)

其中:Mod2()为模2函数,Mod2(v,w)=(v+w·(q-1)/2)modqmod 2,qmod2n=1,单位矩阵v∈Mq,w∈{0,1};

服务器共享密钥sks为:

sks=H(client,server,x,y,w,σs)。

优选的是,在所述第二密钥单元中,

客户端临时会话变量kc为:

kc=(psd+y)(scc+rc)+2gc

其中:

gci为服务器从第二参数为β的高斯分布χβ上的随机采样值,q为正整数;

ps=ass+2es,为服务器公钥;

ssi和esi为服务器从第一参数为α高斯分布χα上的随机采样值,q为正整数,ss仍为服务器私钥;

以及,根据(w,y,ps),客户端共享密钥初始种子σc为:

σc=Mod2(kc,w)

其中:Mod2()为模2函数,Mod2(v,w)=(v+w·(q-1)/2)modqmod 2,qmod2n=1,单位矩阵v∈Mq,w∈{0,1};

客户端共享密钥skc为:

skc=H(client,server,x,y,w,σc)。

优选的是,还包括验证可信模块,以验证通信双方的可信状态,所述验证可信模块包括位于服务器的第一可信单元和位于客户端的第二可信单元,用于完成下述功能:

所述第二可信单元发送验证客户端可信状态的请求到所述第一可信单元;

所述第一可信单元收到客户端的请求后,随机生成一个M位的第一随机数,将第一随机数与验证自身可信状态的请求到所述第二可信单元,其中M为自然数;

所述第二可信单元收到第一随机数与验证请求后,对应生成一个M位的第二随机数,然后向TPM请求完整性度量,并将第一随机数和配置寄存器值、度量日志SML加密,将加密结果、第二随机数以及TPM公钥一起发送到所述第一可信单元;

所述第一可信单元收到数据后,判断此客户端是否是请求建立SSH连接的第一个客户端,如果是,检查本地是否存在可信凭证,如果本地存在可信凭证且该可信凭证仍然在有效期内,则直接进行下一步;否则,则需要先向本机可信请求完整性度量,然后将第二随机数和自己的配置寄存器值、度量日志SML加密,将加密结果和TPM公钥一起发送到所述第二可信单元;

所述第一可信单元根据所述第二可信单元发送的数据验证客户端的可信状态,如果验证通过,生成可信验证通过凭证,该凭证包含客户端IP、客户端唯一标识符、本机服务器的IP与标识符、生成该凭证的时间、凭证有效期,并使用客户端发送的TPM公钥进行加密,将加密结果与验证通过信息一起发送到客户端;

客户端收到数据后,验证服务器的可信状态,如果验证通过后,所述第二可信单元同样生成一个可信凭证,内容包括服务器IP、服务器唯一标识符、本机客户端的IP与标识符、生成该凭证的时间、凭证有效期,并使用服务器发送的TPM公钥进行加密,将加密结果与验证通过信息一起发送到所述第一可信单元;

所述第一可信单元收到可信凭据后,使用自己的TPM私钥解密该可信凭据,并将其保存在本地,如此则双方的可信状态均以验证通过,否则直接断开连接。

本发明的有益效果是:该基于后量子密钥交换实现SSH协议的方法和基于后量子密钥交换实现SSH协议的系统,使用后量子密钥交换协议和可信认证方法来解决SSH协议潜在的一些威胁。其中的后量子密钥交换协议可以解决目前的SSH协议中密钥交换阶段的共享密钥可能被攻破的问题,可信认证可以解决使用SSH协议进行通信的双方平台不可信的问题。

附图说明

图1为SSH协议架构示意图;

图2为现有的SSH协议远程登录流程图;

图3为本发明实施例1的基于后量子密钥交换实现SSH协议的方法中密钥交换流程图;

图4为本发明实施例1的基于后量子密钥交换实现SSH协议的方法中可信证明流程图。

具体实施方式

为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明基于后量子密钥交换实现SSH协议的方法和基于后量子密钥交换实现SSH协议的系统作进一步详细描述。

本发明的技术构思在于:截止到目前,对现阶段SSH协议的改进方案都是利用现代密码学技术进行的改进,还从未涉及利用量子密码学技术进行改进。本发明即利用量子密码学技术对上述的技术问题进行改进。采用量子算法可以在多项式时间内解决离散对数问题,还在建立SSH连接之前确保通信双方的状态是可信的,以兼顾SSH协议的安全性和可信性。

本发明提供了一种基于后量子密钥交换算法的可信SSH协议认证的改进方法,当用户使用改进后的SSH协议进行远程登录服务器时,客户端和服务器在进行版本协商后,分别向对端发送可信证明请求,然后对自身进行完整性度量并将结果发送到对端,最后根据对端发送的数据验证对方的可信状态。可信验证通过后SSH将利用后量子密钥交换算法来完成客户端与远程服务器之间的密钥协商阶段以及双方身份认证阶段,这些改变用户无需关心底层实现原理,也无需改变之前的登录方法。该方法不仅用户透明性强,速度快,算法简单易理解,还能够在不降低原有SSH远程登录安全性的前提下,一方面提供后量子计算机功能,即防止通信双方生成的共享密钥被量子计算机攻破;另一方面还能够验证客户端和服务器两方的可信状态。

实施例1:

本实施例提供一种基于后量子密钥交换实现SSH协议的方法,能有效防止通信的客户端和服务器生成的共享密钥被量子计算机攻破;另一方面还能够验证客户端和服务器两方的可信状态。

对SSH改进方案的协议结构为目前SSH协议规定的三层体系架构,具体的协议架构参考图1。SSH由下到上依次为传输层、用户认证、建立连接,会话建立流程包括版本协商、算法协商和密钥协商、用户认证和请求连接。

目前,通信双方利用SSH协议进行远程登录的流程如图2所示。

第一步,版本协商:客户端与服务器互相发送自己的协议版本号、软件版本号进行版本协商,以确定是否继续会话,版本协商成功后进行以下步骤。此阶段发送的信息均以明文方式进行传输;

第二步,算法协商:客户端和服务器分别发送自己支持的公钥算法列表、加密算法列表、压缩算法列表等等,双方根据对端和自身支持的算法协商出此次会话最终将要使用的各类算法。其中,对于密钥协商算法,尽管理论上是可以协商的,但是实际上,SSH目前必须且唯一支持的就是DH算法;

第三步,密钥协商:客户端和服务器利用DH密钥交换算法进行协商共享密钥。此阶段需要RSA算法、SHA256算法进行协助,以降低被攻破的概率;

第四步,用户认证:客户端将用户密码以密文的形式发送到服务器,服务器则对用户的身份进行合法性认证;

第五步,建立连接:用户认证成功后,客户端发送会话请求,服务器针对客户端的请求类型作出反应,双方建立连接,进行数据传输。

现阶段SSH协议中使用DH算法进行协商密钥,同时为了防止受到中间人攻击,利用RSA算法和SHA256算法进行签名认证,以确保通信双方身份的合法性。这些算法的协同工作保障了共享密钥的高安全性。但是随时量子时代的不断临近与计算机技术的飞速发展,SSH将面临着巨大的挑战与风险。

基于上述现状,本实施例提出了一种基于后量子密钥交换协议的可信SSH认证改进方案,来使SSH密钥交换阶段能够抵抗量子计算机的攻击,提升SSH的安全性,延续SSH在量子时代的生存寿命。具体是基于量子密码学的格理论,R-LWE(Ring-Learning With Errors)问题复杂性最终可以规约到格上SVP(Shortest Vectors Problem)问题,而SVP问题已被证明是NP困难的。因此,基于R-LWE的认证密钥交换算法在能够很好的抵抗量子计算的攻击,且它还具有计算速度快、易于理解等优点。

本实施例的基于后量子密钥交换实现SSH协议的方法,当客户端与服务器建立SSH连接时,双方首先向对端发送可信证明请求,然后分别向自己的可信请求(TPM请求,TPM即Trusted Platform Module,可信平台模块)完整性度量,并将相关信息发送到对端以及验证对端的可信状态,当双方的可信状态均验证通过后,双方开始密码协商。进行密钥协商时,双方分别从参数相同的高斯分布上随机采样,计算自己的公私密钥对,之后将自己的公钥发送至对端并接收对方的公钥,并验证对方的身份,然后计算此次会话的临时公私密钥对以及其他一些所需的变量,计算完成后将数据发送至对方,同时计算自己此次会话的共享密钥。从而实现确保终端的可信状态,以及实现了抵抗量子计算机的密钥协商流程,提供了高安全性的远程登录流程。

如图3所示,该基于后量子密钥交换实现SSH协议的方法中的核心步骤,即密钥交换步骤包括:

客户端和服务器从第一参数的高斯分布上随机采样,分别计算客户端的公私密钥对和服务器的公私密钥对;

客户端从第二参数的高斯分布上随机采样,计算客户端临时会话公钥,并将客户端公钥和客户端临时会话公钥发送至服务器;

服务器接收客户端公钥和客户端临时会话公钥,对客户端进行身份验证,如果验证不能通过,服务器将直接断开链接,否则进行下一步;

服务器通过客户端的身份认证,从第二参数的高斯分布上的随机采样,计算服务器临时会话公钥;

服务器根据客户端临时会话公钥、客户端向量、服务器临时会话公钥、服务器向量、以及服务器在第一参数和第二参数的高斯分布上的随机采样,计算服务器临时会话变量以及临时会话消错变量,进而根据服务器临时会话变量以及临时会话消错变量计算服务器共享密钥初始种子;

服务器根据客户端向量、服务器向量、客户端临时会话公钥、服务器临时会话公钥、临时会话消错变量和服务器共享密钥初始种子,利用后量子算法生成此次会话的最终服务器共享密钥;

客户端根据服务器公钥对服务器进行身份验证;

客户端通过服务器的身份认证,根据客户端临时会话公钥、客户端向量、服务器向量、服务器临时会话公钥、以及客户端在第一参数和第二参数的高斯分布上的随机采样,计算客户端临时会话变量,进而根据客户端临时会话变量以及临时会话消错变量计算客户端共享密钥初始种子;

客户端根据客户端向量、服务器向量、客户端临时会话公钥、服务器临时会话公钥、临时会话消错变量和客户端共享密钥初始种子,利用后量子算法生成此次会话的最终客户端共享密钥;

服务器或客户端任一身份验证不能通过,则密钥交换终止。

在服务器侧,服务器临时会话公钥ks为:

ks=(pcc+x)(ssd+rs)+2gs

其中:

c=H1(client,server,x),为客户端向量,client为客户端主机,server为服务器主机;

x=arc+2fc,为客户端临时会话公钥;

rci和fci为客户端从第二参数为β的高斯分布χβ上的随机采样值,q为正整数(例如q=5);这里经过多次采样,将多次采样的结果之和作为结果,以增加采样的随机性。

d=H1(server,client,y,x),为服务器向量;

y=ars+2fs,为服务器临时会话公钥;

rsi,fsi,gsi为服务器从第二参数为β的高斯分布χβ上的随机采样值,q为正整数(例如q=5);

pc=asc+2ec,为客户端公钥;

sci和eci为客户端从第一参数为α高斯分布χα上的随机采样值,q为正整数(例如q=5),sc仍为客户端私钥;

以及,临时会话消错变量w为:

w=Cha(ks)

其中:Cha()为特征关联函数;

根据(w,y,ps),服务器共享密钥初始种子σs为:

σs=Mod2(ks,w)

其中:Mod2()为模2函数,Mod2(v,w)=(v+w·(q-1)/2)modqmod 2,qmod2n=1,单位矩阵v∈Mq,w∈{0,1};

服务器共享密钥sks为:

sks=H(client,server,x,y,w,σs)。

在客户端层,客户端临时会话变量kc为:

kc=(psd+y)(scc+rc)+2gc

其中:

gci为服务器从第二参数为β的高斯分布χβ上的随机采样值,q为正整数(例如q=5);

ps=ass+2es,为服务器公钥;

ssi和esi为服务器从第一参数为α高斯分布χα上的随机采样值,q为正整数(例如q=5),ss仍为服务器私钥;

根据(w,y,ps),客户端共享密钥初始种子σc为:

σc=Mod2(kc,w)

其中:Mod2()为模2函数,Mod2(v,w)=(v+w·(q-1)/2)modqmod 2,qmod2n=1,单位矩阵v∈Mq,w∈{0,1};

客户端共享密钥skc为:

skc=H(client,server,x,y,w,σc)。

优选的是,在密钥交换步骤之前,还包括:验证通信双方的可信状态的步骤,为:

发送验证客户端可信状态的请求到服务器;

服务器收到客户端的请求后,随机生成一个M位的第一随机数,将第一随机数与验证自身可信状态的请求到客户端,其中M为自然数;

客户端收到第一随机数与验证请求后,对应生成一个M位的第二随机数,然后向可信请求完整性度量,并将第一随机数和配置寄存器值、度量日志SML加密,将加密结果、第二随机数以及TPM公钥一起发送到服务器;

服务器收到数据后,判断此客户端是否是请求建立SSH连接的第一个客户端,如果是,检查本地是否存在可信凭证,如果本地存在可信凭证且该可信凭证仍然在有效期内,则直接进行下一步;否则,则需要先向本机可信请求完整性度量,然后将第二随机数和自己的配置寄存器值、度量日志SML加密,将加密结果和TPM公钥一起发送到客户端;

服务器根据客户端发送的数据验证客户端的可信状态,如果验证通过,生成可信验证通过凭证,该凭证包含客户端IP、客户端唯一标识符、本机服务器的IP与标识符、生成该凭证的时间、凭证有效期,并使用客户端发送的TPM公钥进行加密,将加密结果与验证通过信息一起发送到客户端;

客户端收到数据后,验证服务器的可信状态,如果验证通过后,客户端同样生成一个可信凭证,内容包括服务器IP、服务器唯一标识符、本机客户端的IP与标识符、生成该凭证的时间、凭证有效期,并使用服务器发送的TPM公钥进行加密,将加密结果与验证通过信息一起发送到服务器;

服务器收到可信凭据后,使用自己的TPM私钥解密该可信凭据,并将其保存在本地,如此则双方的可信状态均以验证通过,否则直接断开连接。

以下将对本实施例中的基于后量子密钥交换实现SSH协议的方法在建立SSH远程连接过程进行详细说明,分为六个步骤:

第一步:版本协商。

版本协商之前,双方首先建立TCP连接:由客户端向服务器发送TCP请求连接。

TCP连接成功建立之后,客户端进入等待阶段。服务器将发送第一个报文到客户端,报文内容为SSH协议版本号和软件版本号。其中协议版本号包括主版本号和次版本号,报文内容如下:

“SSH-<主协议版本号>.<次协议版本号>-<软件版本号>\n”

客户端收到报文后,返回服务器一个报文,内容为自己的相关版本号,且内容的格式与服务器发送的报文一致。

服务器收到客户端发送过来的版本号后,与自己的版本号进行比较,以确定是否兼容。如果不兼容,则直接断开TCP连接,如果兼容,服务器生成一个数字,标识此客户端是第几个与自己请求建立SSH连接的主机,然后进入到下一阶段。

第二步:验证可信。

通信双方的可信验证自系统加电启动开始,一直到最后应用程序,这之间的每一步都将进行度量,并将度量值扩展到PCR(Platform Configure Register,平台配置寄存器)中。同时,双方还将每一步的度量操作、度量结果以及这些中间状态保存进存储度量日志SML(Storage Measure Log)内。

验证通信双方的可信状态详细流程如图4所示,具体说明如下:

1客户端首先发送验证自身可信状态的请求到服务器;

2服务器收到客户端的请求后,随机生成一个M位(,M为自然数,一般为160)的第一随机数RandNum1,然后将该第一随机数与验证自身可信状态的请求到客户端;

3客户端收到第一随机数与验证请求后,首选也随机的对应生成一个M位的第二随机数RandNum2,然后向TPM请求完整性度量,并将第一随机数RandNum1和PCR值、度量日志SML加密,最后将加密结果、第二随机数RandNum2以及TPM公钥一起发送到服务器;

4服务器收到数据后,首先要判断此客户端是否是请求建立SSH连接的第一个客户端,如果是,检查本地是否存在可信凭证,如果本地存在可信凭证且该可信凭证仍然在有效期内,则直接进行下一步;否则,则需要先向本机TPM请求完整性度量,然后将随机数RandNum2和自己的PCR值、度量日志SML加密,将加密结果和TPM公钥一起发送到客户端;

5服务器根据客户端发送的数据验证客户端的可信状态,如果验证通过,生成可信验证通过凭证,该凭证包含客户端IP、客户端唯一标识符、本机服务器的IP与标识符、生成该凭证的时间、凭证有效期,并使用客户端发送的TPM公钥对这些信息进行加密,将加密结果与验证通过信息一起发送到客户端;

6客户端收到数据后,验证服务器的可信状态,同理,如果验证通过后,客户端同样生成一个可信凭证,内容包括服务器IP、服务器唯一标识符、本机客户端的IP与标识符、生成该凭证的时间、凭证有效期,并使用服务器发送的TPM公钥对这些信息进行加密,将加密结果与验证通过信息一起发送到服务器;

7服务器收到可信凭据后,使用自己的TPM私钥解密该可信凭据,并将其保存在本地。此时,双方的可信状态均以验证通过,可以进行下面的步骤,否则直接断开连接。

第三步:算法协商。

由于SSH设计的灵活性,目前SSH可以协商的算法种类有很多种,例如,数据加密算法、密钥交换算法、压缩算法、身份认证算法以及完整性校验算法等。客户端和服务器将自己支持的算法列表发送到对端,每种算法类型列表的第一个算法为首选算法,且服务器以客户端的算法优先级作为考虑。如果双方某一算法类型没有共同的算法,那么此次会话将终止。

本实施例在于利用基于R-LWE的后量子认证密钥交换算法完成密钥协商,因此设置基于R-LWE的后量子认证密钥交换算法为密钥协商的首选算法。

第四步:密钥协商。

整个密钥交换过程主要分为三个步骤,交换数据两次,流程可参考图3。

为了方便描述密钥交换的整个过程,定义如下参数:

n为安全参数,且n必须是2的幂数,函数f(x)=xn+1;

q为一个奇素数,定义q=2w(logn)

定义R=Z[x]/<f(x)>,它是Z[x]上的所有多项式模f(x)的一个环,同理定义Rq=Zq[x]/<f(x)>。

函数H1的定义如公式(1-1)所示:

由公式(1-1)可以看出函数H1的作用是将一个字符串映射到上的一个采样结果χγ,其中γ是一个正实数。函数H的定义为H:{0,1}*→{0,1}k,它是密钥生成函数,一般为哈希函数,使用不同的哈希函数,就可以得到不同位数的密钥。

以下是详细介绍密钥交换的整个过程:

1客户端首先生成自己的公私密钥对:从第一参数为α高斯分布χα上随机采样,通过计算得到sc和ec,然后计算pc=asc+2ec,计算成功后将sc和pc分别作为自己的私钥和公钥,即客户端私钥sc和客户端公钥pc,并将二者全部保存在本地。这里应该理解的是,本实施例采用高斯分布来达到抵抗量子计算机攻击的目的,以下的各计算公式与高斯分布对应。

2服务器首先进行的也是生成自己的公私密钥对:从与客户端相同的第一参数为α的高斯分布χα上随机采样并计算得到ss和es,并计算ps=ass+2es,计算成功后将ss和ps分别作为自己的私钥和公钥,即服务器私钥ss和服务器公钥ps,并将二者并保存在本地。此阶段可以与客户端同时进行。

3客户端成功生成自己的公私密钥对后,从第二参数为β的高斯分布χβ上随机多次采样计算得到rc和fc,计算客户端临时会话公钥x=arc+2fc,最后将计算结果即客户端临时会话公钥x和客户端公钥pc一起发送至服务器。而服务器计算完自己的公私密钥对后进入等待阶段。

4服务器收到客户端发送过来的数据后,首先将客户端发送过来的客户端公钥pc与自己的本地数据库进行对比,验证客户端主机的身份。如果本地数据库不存在该客户端对应的客户端公钥pc,说明是首次连接,则将客户端公钥pc、IP以及客户端的名字保存到本地数据库中。通常情况下,不存在身份不通过的可能,首次连接只需要把对方发送过来的数据保存,然后继续连接即可。

如果存在,并且客户端身份验证通过后,同样地在第二参数为β的高斯分布χβ上随机采样并计算得到rs、fs和gs,计算服务器临时会话公钥y=ars+2fs

同时按照公式(1-2)计算服务器临时会话变量ks

ks=(pcc+x)(ssd+rs)+2gs (1-2)

其中:客户端向量c=H1(client,server,x),服务器向量d=H1(server,client,y,x),临时会话变量是仅为了此次会话才生成的临时公钥,会话结束后就自动删除,以保证较高的安全性。

随后,服务器为了消除错误,优选按照公式(1-3)计算临时会话消错变量w。

w=Cha(ks) (1-3)

其中:Cha()为特征关联函数,定义如下:

设qmod2n=1,单位矩阵则定义特征关联函数Cha()计算公式如(1-4)所示:

其中:v∈Mq,即v是Mq中的元素。

服务器成功计算出这些数据后,将计算结果(w,y,ps)一起发送至客户端。数据发出后,服务器利用公式(1-5)计算服务器共享密钥初始种子σs

σs=Mod2(ks,w) (1-5)

其中:Mod2()为模2函数,定义如下:

设qmod2n=1,单位矩阵则定义模函数Mod2的计算公式如(1-6)所示:

Mod2(v,w)=(v+w·(q-1)/2)modqmod 2 (1-6)

其中v∈Mq,w∈{0,1}。对于Mq中的任意一个元素v,可以通过简单计算即可证明u=v+Cha(v)·(q-1)/2mod q是E中的元素。

这里应该理解的是,共享密钥初始种子虽然在一定程度上可以视为最终协商的共享密钥,但是出于安全性考虑,它可能会被攻击者根据双方交换的信息计算出来,所以不能直接用于共享密钥,这里先使用哈希函数进行额外的处理。

最后,服务器利用上面计算的数据计算服务器共享密钥,计算公式如(1-7)所示:

sks=H(client,server,x,y,w,σs) (1-7)

其中:H()函数为一般为哈希函数,例如SHA256哈希函数。

此时的服务器共享密钥sks就是密钥协商算法最终计算得到的共享密钥,用以加密后续要传输的数据,保障该次会话的安全。

5客户端收到服务器发送过来的数据(w,y,ps)后,首先进行的是身份认证,将服务器公钥ps与本地保存服务器公钥相关的数据库进行对比,如果本地数据库不存在该服务器的相关信息,则将该服务器公钥ps、IP以及名称保存在本地数据库。如果存在,且身份验证通过,则从第二参数为β的高斯分布χβ上随机采样gc,根据公式(1-8)计算客户端临时会话变量kc

kc=(psd+y)(scc+rc)+2gc (1-8)

同样的,定义c=H1(client,server,x),d=H1(server,client,y,x)

最后,客户端计算客户端共享密钥初始种子σc和客户端共享密钥skc,计算公式分别如公式(1-9)和公式(1-10)所示:

σc=Mod2(kc,w) (1-9)

skc=H(client,server,x,y,w,σc) (1-10)

skc即为客户端密钥协商阶段生成的客户端共享密钥。

客户端和服务器在成功计算出自己的共享密钥之后,向对端发送SSH2_MSG_NEWKEYS消息,告诉对方自己共享密钥已经生成,至此密钥协商阶段结束。可以进行下一步骤。

以下内容将先对上述计算过程进行验证:

由公式(1-7)和公式(1-10)可知,客户端共享密钥skc和服务器共享密钥sks的计算函数相同,函数参数类型基本相同,只有σc和σs是不同的,因此要想证明skc和sks相等,就可以转换为证明σc和σs是相等的。σc和σs的计算公式分别为公式(1-11)和公式(1-12)所示:

σc=Mod2(kc,w) (1-11)

σs=Mod2(ks,w) (1-12)

由公式(1-11)和公式(1-12)可以看出,σc和σs都是使用函数Mod2(k,v),且函数的第二个输入参数w也是相同的,换句话说,即σc和σs是否相等由第一个输入参数kc和ks来决定。那么判断σc和σs是否相等就可以转换为判断kc和ks是否相同。客户端和服务器计算kc和ks的方法分别为公式(1-13)和公式(1-14)所示。

其中:而

结合公式(1-13)和公式(1-14)以及和可以得到公式(1-15):

时,则认为ki和kj相等。因此,在实际应用中,选取参数时,注意选取的参数能够满足此条件即可保障kc和ks相等。因此,联立公式(1-11)-公式(1-15),σc和σs是相等的,因此skc和sks相等。

此密钥交换算法的安全性依赖于R_LWE搜索型问题的困难性。即在R-LWE分布中,给定ai和bi,求解能够满足等式bi=<ai,s>+ei的向量s是非常困难的,即使使用量子计算机进行计算,也只能在指数时间内进行求解,并且密钥交换阶段在不需要支持其他身份认证算法的条件下,也完成了对通信双方的身份认证,防止中间人攻击,提升了SSH传输层的安全性。

此外,SSH支持多种加密算法,例如DES、3DES、AES等,这些加密算法所需要的密钥位数不同,且不一定就是256位,但是例如本方案中最终生成的共享密钥是固定的256位,那么为了能够很好的使用该密钥,就需要继续处理此共享密钥。当所需密钥小于256位时比较方便,只需要取出前面所需要的位数即可,例如加密算法需要128位密钥,那么取出共享密钥的前128位数据作为加密密钥即可。但是当所需要的密钥大于256位时,就需要进行额外的运算了。具体的计算方法如(1-16)-(1-18)所示:

k1=SHA256(sk||session_id) (1-16)

k2=SHA256(sk||k1) (1-17)

k3=SHA256(sk||k1||k2) (1-18)

当需要的密钥大于256位时,按照公式(1-16)计算k1,加密密钥K=sk||k1

如果需要的密钥大于512位,则按照公式(1-17)计算k2,加密密钥K=sk||k1||k2

若需要的密钥长度按照公式(1-17)计算还是不够,则按照公式(1-18)计算k3,加密密钥K=sk||k1||k2||k3

依次类推,直至按照上述方法加长密钥到需要的密钥长度为止。

这样,在客户端和服务器成功计算出共享密钥之后,分别将两者的版本号、共享密钥等信息作为哈希值的输入计算此次会话的ID,该会话ID在这次整个会话的过程中将不再改变。计算公式如(1-19)所示:

Hash=SHA256(C_V||S_V||pc||y||w||ps||x||sk) (1-19)

其中C_V和S_V分别为客户端和服务器的版本号字符串,sk为共享密钥,||为连接符。

第五步:用户认证。

成功协商出共享密钥后,双方进入到认证阶段。首先客户端发送用户认证请到求服务器,服务器收到该请求后,向客户端返回自己支持的认证方式列表,同时检查自己对认证超时和认证次数上限的配置信息。随后客户端从服务器支持的认证列表中选择出自己首选的认证方法,然后将该认证方式所需要的信息发送到服务器进行认证,如果认证成功,双方进入到下一阶段。否则,断开连接。

SSH主要支持两种认证方式:基于主机的认证方式和基于口令的认证方式。但是由于密钥协商部分已经对客户端和服务器的身份进行了认证,因此,此阶段的用户认证方式不再建议使用基于主机的认证方式,推荐使用基于口令的认证方式,因为这样不仅完成了对通信主机的身份认证,还能够对使用用户的身份进行认证,进一步提高通信的安全强度。

第六步:请求连接。

认证成功后,客户端则发送会话请求,服务器收到客户端请求后及时进行处理。会话请求包括以下几类:请求伪终端、打开shel l、执行命令、启动X转发、启动TCP/IP端口转发、申请压缩数据、启动认证代理等等。

综上,该基于后量子密钥交换实现SSH协议的方法提供了一种基于R-LWE后量子认证密钥交换算法的可信SSH改进方法:当客户端和服务器使用SSH进行远程连接时,双方先将自己的协议版本号、软件版本号等信息发送到对端进行版本协商。版本协商成功后,双方分别向对端发送可信证明请求并验证对方的可信状态,当双方的可信状态均验证通过后,双方开始算法协商和密钥协商。密钥协商阶段双方均从同一参数的离散高斯分布上采样,计算自己的公私密钥对,以及其他必需的中间变量,之后将自己的公钥和其他数据发送至对端,完成身份认证与共享密钥的生成,此共享密钥由后量子算法生成,能够抵抗量子攻击,提高密钥协商阶段的安全性,防止共享密钥被第三方破解。共享密钥生成后,双方利用此密钥加密之后要传输的数据,完成用户认证和连接请求部分。

可见,该基于后量子密钥交换实现SSH协议的方法,通过在SSH传输层阶段利用基于R-LWE的后量子认证密钥交换算法以及可信计算技术改进SSH的方案,首先利用可信计算技术,在SSH算法协商之前验证通信双方的可信状态,以防止其中一方可能被黑客攻击而另一方完全不知的情况,其次利用基于R-LWE的后量子认证密钥交换算法完成密钥协商与身份认证,然后利用协商出的共享密钥对数据加密传输,最终完成远程安全服务过程。从而,将基于R-LWE的后量子认证密钥交换算法与可信计算技术整合进SSH协议中,简化SSH密钥协商阶段,提高建立连接速度,防止共享密钥被量子计算机破解,提升SSH抵抗量子计算攻击的能力。同时验证了主机的可信状态,提升了SSH会话安全性,也大大降低了通信一方被另一方非法控制的可能性。

实施例2:

本实施例提供了一种基于后量子密钥交换实现SSH协议的系统,能有效防止通信的客户端和服务器生成的共享密钥被量子计算机攻破;另一方面还能够验证客户端和服务器两方的可信状态。

该基于后量子密钥交换实现SSH协议的系统包括密钥交换模块,密钥交换模块包括第一密钥单元、第二密钥单元和第一验证单元、第二验证单元,其中:

第一密钥单元,位于服务器,用于完成下述功能:

从第一参数的高斯分布上随机采样,计算服务器的公私密钥对;

在第一验证单元通过客户端的身份认证后,从第二参数的高斯分布上的随机采样,计算服务器临时会话公钥;

根据客户端临时会话公钥、客户端向量、客户端临时服务器向量、以及服务器在第一参数和第二参数的高斯分布上的随机采样,计算服务器临时会话变量以及临时会话消错变量;

以及,根据服务器临时会话变量以及临时会话消错变量计算服务器共享密钥初始种子;

根据客户端向量、服务器向量、客户端临时会话公钥、服务器临时会话公钥、临时会话消错变量和服务器共享密钥初始种子,利用后量子算法生成此次会话的最终服务器共享密钥;

第一验证单元,位于服务器,用于接收客户端公钥和客户端临时会话公钥,对客户端进行身份验证,如果验证不能通过,服务器将直接断开链接,否则进行后续认证;

第二密钥单元,位于客户端,用于完成下述功能:

从第一参数的高斯分布上随机采样,计算客户端的公私密钥对;

从第二参数的高斯分布上随机采样,计算客户端临时会话公钥,并将客户端公钥和客户端临时会话公钥发送至服务器;

在第二验证单元通过服务器的身份认证后,根据客户端临时会话公钥、客户端向量、服务器向量、服务器临时会话公钥、以及客户端在第一参数和第二参数的高斯分布上的随机采样,计算客户端临时会话变量,进而根据客户端临时会话变量以及临时会话消错变量计算客户端共享密钥初始种子;

以及,根据客户端向量、服务器向量、客户端临时会话公钥、服务器临时会话公钥、临时会话消错变量和客户端共享密钥初始种子,利用后量子算法生成此次会话的最终服务器共享密钥;

第二验证单元,位于客户端,用于根据服务器公钥对服务器进行身份验证,如果验证不能通过,终止密钥交换,否则进行后续认证。

在第一密钥单元中:

服务器临时会话公钥ks为:

ks=(pcc+x)(ssd+rs)+2gs

其中:

c=H1(client,server,x),为客户端向量;

x=arc+2fc,为客户端临时会话公钥;

rci和fci为客户端从第二参数为β的高斯分布χβ上的随机采样值,q为正整数(例如q=5);

d=H1(server,client,y,x),为服务器向量;

y=ars+2fs,为服务器临时会话公钥;

rsi,fsi,gsi为服务器从第二参数为β的高斯分布χβ上的随机采样值,q为正整数(例如q=5);

pc=asc+2ec,为客户端公钥;

sci和eci为客户端从第一参数为α高斯分布χα上的随机采样值,q为正整数(例如q=5),sc仍为客户端私钥;

以及,临时会话消错变量w为:

w=Cha(ks)

其中:Cha()为特征关联函数;

根据(w,y,ps),服务器共享密钥初始种子σs为:

σs=Mod2(ks,w)

其中:Mod2()为模2函数,Mod2(v,w)=(v+w·(q-1)/2)modqmod 2,qmod2n=1,单位矩阵v∈Mq,w∈{0,1};

服务器共享密钥sks为:

sks=H(client,server,x,y,w,σs)。

在第二密钥单元中,

客户端临时会话变量kc为:

kc=(psd+y)(scc+rc)+2gc

其中:

gci为服务器从第二参数为β的高斯分布χβ上的随机采样值,q为正整数(例如q=5);

ps=ass+2es,为服务器公钥;

ssi和esi为服务器从第一参数为α高斯分布χα上的随机采样值,q为正整数(例如q=5),ss仍为服务器私钥;

以及,根据(w,y,ps),客户端共享密钥初始种子σc为:

σc=Mod2(kc,w)

其中:Mod2()为模2函数,Mod2(v,w)=(v+w·(q-1)/2)modqmod 2,qmod2n=1,单位矩阵v∈Mq,w∈{0,1};

客户端共享密钥skc为:

skc=H(client,server,x,y,w,σc)。

优选的是,该基于后量子密钥交换实现SSH协议的系统还包括验证可信模块,以验证通信双方的可信状态,由于增加了验证可信模块,那么就需要要求每一台通信主机内置TPM(Trusted Platform Module,可信平台模块)芯片。验证可信模块包括位于服务器的第一可信单元和位于客户端的第二可信单元,用于完成下述功能:

第二可信单元发送验证客户端可信状态的请求到第一可信单元;

第一可信单元收到客户端的请求后,随机生成一个M位的第一随机数,将第一随机数与验证自身可信状态的请求到第二可信单元,其中M为自然数;

第二可信单元收到第一随机数与验证请求后,对应生成一个M位的第二随机数,然后向TPM请求完整性度量,并将第一随机数和配置寄存器值、度量日志SML加密,将加密结果、第二随机数以及TPM公钥一起发送到第一可信单元;

第一可信单元收到数据后,判断此客户端是否是请求建立SSH连接的第一个客户端,如果是,检查本地是否存在可信凭证,如果本地存在可信凭证且该可信凭证仍然在有效期内,则直接进行下一步;否则,则需要先向本机可信请求完整性度量,然后将第二随机数和自己的配置寄存器值、度量日志SML加密,将加密结果和TPM公钥一起发送到第二可信单元;

第一可信单元根据第二可信单元发送的数据验证客户端的可信状态,如果验证通过,生成可信验证通过凭证,该凭证包含客户端IP、客户端唯一标识符、本机服务器的IP与标识符、生成该凭证的时间、凭证有效期,并使用客户端发送的TPM公钥进行加密,将加密结果与验证通过信息一起发送到客户端;

客户端收到数据后,验证服务器的可信状态,如果验证通过后,第二可信单元同样生成一个可信凭证,内容包括服务器IP、服务器唯一标识符、本机客户端的IP与标识符、生成该凭证的时间、凭证有效期,并使用服务器发送的TPM公钥进行加密,将加密结果与验证通过信息一起发送到第一可信单元;

第一可信单元收到可信凭据后,使用自己的TPM私钥解密该可信凭据,并将其保存在本地,如此则双方的可信状态均以验证通过,否则直接断开连接。

本实施例的基于后量子密钥交换算法的可信SSH协议改进方法,当用户使用改进后的SSH协议进行远程登录服务器时,SSH将首先验证通信双方的主机是否可信,然后再利用后量子密钥交换算法来完成客户端与远程服务器之间的密钥协商阶段以及双方身份认证阶段,这些过程用户无需关心底层实现原理,也无需改变之前的登录方法。本方法不仅用户透明性强,速度快,算法简单易理解,还能够在不降低原有SSH远程登录安全性的前提下,提供可信证明和后量子计算机功能,进一步增强SSH的安全性。

可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1