APP下载

一种基于CPK的远程认证方案

2018-11-15陈亚茹

信息安全研究 2018年11期
关键词:私钥密钥椭圆

陈亚茹 陈 庄 齐 锋

(重庆理工大学计算机科学与工程学院 重庆 400054)

远程认证系统是指客户端(PC、智能终端等)通过网络发送指令到服务器端,服务器对其进行身份认证,身份认证成功之后,客户端可以访问内部服务器,并且可以控制相应终端完成任务,若身份认证失败则客户端无法访问内部网络.

随着宽带网络的接入和企业跨域性办公模式[1]的兴起,为了解决客户端通过网络安全接入到企业内部网络的问题,业界提出了多种远程接入系统,其中包括有线和无线的方式:昂贵的远程拨号接入、配置复杂的 IPsec VPN、VPDN、远程桌面虚拟化等加密技术.目前,远程桌面虚拟化接入是个浪潮[2].认证体系主要解决身份认证和密钥交换问题,身份认证是对身份的鉴别,密钥交换用来实现数据的传输.在目前的密码技术中,密钥建立是系统核心.

昂贵的远程拨号接入[3],是供应商提供的一种远程访问网络资源的接入方式.Radius协议基于Microsoft SQL Server2000建立数据库连接,记录用户上网信息;同时增加数据库管理员来管理数据库以及对用户进行收费等功能.采用MD5加密实现用户的认证、授权和计费功能,对于用户密钥、NAS共享密钥都是以明文的形式记录在Radius服务器中;然后把MD5加密的数据与接收到信息的密文进行比较.利用MD5的单向性保证了密文传输的安全,但是在认证过程中需要对MD5进行16次操作,每次操作是一个非线性运算,造成服务器响应超时和昂贵的费用问题.改进的Radius协议[4]首先通过MD5加密共享密钥,把加密的密文分别存储在不同的文件. 通过这种方式虽然减少操作次数,但是远程拨号接入属于运营商收费的有线模式,不适用于无线网的企业移动办公.

IPSecVPN[5]提供一种端到端的连接方式,是专门为远程用户接入企业网络的移动办公的解决方案.在客户端访问公司专用网络过程中需要经历终端用户认证、VPN对终端接入认证、终端无线传输认证.通过用户名@域名认证的安全强度明显低于数字签名.

PKI(public key infrastructure)[6]是基于数字签名的认证方式,是目前最流行的认证方式,采用CA中心提供OCSP协议,证书是通过LDAP目录发布的,通过在线方式验证身份真伪.在认证过程中密钥和数字证书是分离的,通过CA证书完成密钥验证服务.随着用户的增加,PKI[7]认证过程需要大量网络资源的支持,无法实现跨域认证,并且需要昂贵的维护证书成本.因此,在互联网快速发展下,PKI认证技术无法满足需求,如容量低、无法实现跨域认证、密钥管理繁琐等.而CPK认证实现去中心化、离线、跨域和密钥交换.

CPK[8]是基于ECC算法的认证方式.CPK算法的根本在于公、私钥的构建和管理,不需要证书在线验证公钥真伪,实现离线认证,解决了PKI身份认证中的密钥托管问题[9].计算离散对数困难性保证了公、私钥矩阵构建的安全. Diffie-Hellman算法[10]虽然采用计算离散对数的困难性保证了会话密钥的安全,但是无法实现身份认证和抵挡中间人的攻击.ECDH[11]是目前唯一实现认证和密钥建立的协议,虽然有较强的安全性,但是不能抵御中间人攻击.文献[12]指出在CPK算法中ECDSA私钥的重要性,私钥安全成为关键.文献[13]虽然解决了客户端登录服务器不稳定性的问题,但是没有实现多用户登录的并发机制.

针对现有的远程认证方案中待解决的客户端私钥泄露、ECDH密钥协议受到中间人攻击、多用户无法并发登录的问题,本文提出了一种基于随机数的CPK认证方案,实现了一种虚拟的专用网络,无论员工身在何处都可以使用电脑安全地访问企业内部网络.该算法是在原CPK基础上对密钥协商协议进行改进,用随机数和口令对用户标识进行绑定,不同私钥有不同的随机数,不存在线性关系.随机数的不固定性保证了签名数据的不固定性,这样就实现了客户端在通过无线网向服务器传输指令时都是不同随机数的签名数据,避免了非法分子攻破用户私钥的风险,解决了ECDH密钥协商协议遭受中间人攻击的问题.

1 椭圆曲线密码体制

1.1 椭圆曲线的参数选取

文献[14]提出椭圆曲线的概念,利用椭圆曲线有限域的点集构成离散对数系统,即椭圆曲线密码体制(elliptic curve cryptography, ECC),是目前比较流行的公钥密码体制.设椭圆曲线参数为T=(p,a,b,G,n)[15],定义椭圆曲线为y2=(x3+ax+b) modp.其中p是一个大素数,Fp为有限域,a,b是Fp上的整数,G为椭圆曲线E(Fp)上的基点,n为素数,是基点G的阶.

1) 选择p.考虑到计算的可行性和系统的安全性,一般要求p>2160.

2) 随机生成参数a.b,a,b∈Fp且(4a3+27b3) modp≠0.

3) 计算点G的阶n满足nG=0(需要用算法实现)[16].

1.2 椭圆曲线离散对数问题

ECC[17]是建立在基于椭圆曲线的离散对数问题上的密码体制,给定椭圆曲线上的一个点G,一个整数k,求解Q=kG很容易;给定一个点G,Q,知道Q=kG,求整数k是一个难题.ECDH即建立在此数学难题之上.

当我们使用ECDSA进行签名时,k的保密性非常重要.如果我们的签名操作都用一样的k或者我们的随机数生成器存在可预测性,攻击者可能猜出私钥.

1.3 ECDH协议

ECDH是基于ECC的DH(Diffie-Hellman)密钥交换算法[18].

1) 客户端A生成随机数rA,计算QA=rAG.rA∈[1,n-1],A→B:QA.rA为私钥,QA为公钥,QA为曲线上的点.以下同理.

2) 服务器端B生成随机数rB,计算QB=rBG.rB∈[1,n-1],B→A:QB.

3) A收到B发来的QB后,计算rBQB=rArBG.

4) B收到A发来的QA后,计算rBQA=rBrAG=rArBG.

可以看出共享会话密钥KAB=rArBG.攻击者可以截取G,QA=rAG,QB=rBG,为了获得会话密钥,必须求出rA或rB,这就出现了1.2节的难题.因此,ECDH协议安全性极高,但不能实现双向认证,无法抵御中间人攻击.

2 一种改进的认证方案

2.1 改进的方案

改进的方案通过实现双向认证来抵御中间人的攻击,由密钥协商和密钥验证组成.A和B双方共享一个口令s,这个s只有管理员拥有权限.A和B利用s协商整数分别是t和-t,-t是t的加法逆元.具体过程如下:

1) 密钥协商

① 客户端A生成随机数rA,计算QA=(rA+t)G.rA∈[1,n-1],A→B:QA.

② 服务器端B生成随机数rB,计算QB=(rB+t)G.rB∈[1,n-1],B→A:QB.

③ A收到B发来的QB后,计算X=QB+(-t)G=rBG,KAB=rAX=rArBG.

④ B收到A发来的QA后,计算Y=QA+(-t)G=rAG,KBA=rBrAG=rArBG=KAB.

2) 密钥验证

① A计算:TA=tKAB=trArBG.A→B:TA.

② B计算:TB=tKBA=trBrAG.B收到A发来的TA后验证TA和TB是否相等.若相等,双方协商相同的会话密钥,则B相信自己获得正确QA,A获得正确的QB.

③ B计算:TB=tQA=t(rA+t)G.B→A:TB.

④ A计算:TA=tQA=t(rA+t)G.验证TA和TB是否相等.若相等,则A相信B获得了QA,也相信双方协商相同的会话密钥.

2.2 新方案下数字签名的加解密过程

利用会话密钥KAB进行加密通信.过程如下:

1) 客户端A选取随机数rA,计算公钥为QA=(rA+t)G.A→B:QA.

2) 服务器端B选取随机数rB,计算公钥QB=(rB+t)G.B→A:QB.

3) A发送的明文数据经过散列函数运算生成报文M的散列码,即h=H(M).

4) 用私钥rA对h签名生成标识认证码IDA,即IDA=SignrA(h).

5) 根据ECC算法首先计算X=QB+(-t)G作为密钥交换字段,其次计算XG作为会话密钥KAB.

6) B在椭圆曲线E选取一点编码Z,并产生随机数rB.计算C1=Z+rB(QA-tG),C2=rBG.

7) 将加密后报文code、认证标识码IDA、密钥字段、C1、C2封装成数据包发送出去.

9) 用KAB对接收到的code解密,即C1-rAC2=Z+rB(QA-tG)-rArBG=M1,然后计算散列码h1=H(M1).

10) 利用QA对IDA进行验证得到h,然后h和h1比较,若h=h1,接收报文,否则丢弃.

上述过程,窃听者只能窃取QA,C1,C2,G,QB,而通过这些求rA,rB面对1.2节中离散对数难题.因此窃取者无法获取传送的明文信息.同时,改进的方案通过一次交互,实现了数据加解密、数字签名、密钥协商的过程.

3 方案的实验验证

本系统的测试模拟于WiFi环境,运行平台为虚拟机,内存1 024 MB,硬盘80 GB,操作系统为Windows7,并设置多台Windows主机作为客户端与服务器连通,并在服务器和主机上编写ECC、Websocket、各模块代码,对100个用户进行测试.

图4 Websocket代码

3.1 客户端CPK标识与私钥生成

客户端安装浏览器,运行客户端模块.

客户端A向CPK管理密钥处发送身份证书,管理中心根据A提供的证书确定A的标识是A20220101.管理中心根据标识计算出矩阵的行列值得到了A的私钥.

其中私钥矩阵由注册密钥处的随机数加密,只有密钥注册处的管理员才有权限查看随机数,管理员用口令保存随机数,只有管理员输入口令得到随机数,才可以用随机数破解私钥矩阵.

CPK管理中心把A的标识和私钥通过离线通道发送给A.私钥生成过程如图1所示.

3.2 签名与验证

A的私钥结合随机数进行签名,把签名和标识发给CPK服务器,服务器调用注册密钥处A的公开密钥矩阵对签名进行验证,同时记录结果.服务器验证代码如图2所示.

图1 私钥生成过程

图2 服务器验证代码

3.3 应用服务器

CPK服务器验证身份之后,系统管理员可以通过基于Java 开发的Websocket技术访问CPK服务器的受控端,实现身份认证成功后客户端访问内部服务器或完成相应的任务.Websocket的连接过程和代码如图3、图4所示:

图3 Websocket连接过程

3.4 实验结果

根据模拟的实验结果统计如表1所示.

从表1可以看出,客户端A的CPK标识是A20220101,通过密钥中心计算出的私钥为7,然后私钥结合随机数进行签名,实验结果是成功的.若用户标识过期和私钥错误,实验是不成功的.实验证明随机数的不固定性保证了签名数据的不固定性,这样就实现了客户端在通过无线网向服务器传输指令时都是不同的随机数的签名数据,避免了非法分子攻破用户私钥的风险.若被非法分子破解了用户私钥矩阵,但不能访问随机数,也不会对客户端构成威胁.

表1 模拟实验结果

4 方案的性能分析

4.1 正确性分析

本文方案的算法是在原CPK基础上对密钥协商协议进行的改进,即用随机数对用户标识进行绑定,不同私钥有不同的随机数,不存在线性关系.同时客户端签名和服务器验证算法和原CPK法基本相同,其安全性与ECC体制安全性相同.

图5 用户完成登录总耗时

4.2 性能分析

本文方案实现了大量客户端的数字签名和验证的并行处理,提高了ECC算法的计算能力.本实验采用Loadrunner测试工具,对100个用户并发测试流行的PKI和传统的CPK认证方式登录测试的结果.各种方案的对比如图5、图6、表2所示:

图6 密钥验证耗时

认证方式时间消耗完成登录耗时密钥验证平均耗时PKI300.15CPK280.12本文方案270.13

通过实验测试发现,随着用户数量的增加,采用本文方案的认证方式运行时间明显优于传统的认证方式.

5 结束语

本文提出的改进CPK认证方案,有效地解决了远程接入要求之间的矛盾.提出改进方案是基于随机数的CPK算法,该算法是在原CPK基础上对密钥协商协议进行的改进,即用随机数对用户标识进行绑定和管理员有权限查看口令s,不同的私钥和t有不同的随机数,不存在线性关系,随机数的不固定性保证了签名数据的不固定性,避免了非法分子攻破用户私钥和中间人攻击的风险.本文方案具有离线传输、双向认证、操作简单等优点,实验证明了本文方案安全性高、效率高.

猜你喜欢

私钥密钥椭圆
Heisenberg群上由加权次椭圆p-Laplace不等方程导出的Hardy型不等式及应用
清扫机器人避障系统区块链私钥分片存储方法
比特币的安全性到底有多高
幻中邂逅之金色密钥
Spatially defined single-cell transcriptional profiling characterizes diverse chondrocyte subtypes and nucleus pulposus progenitors in human intervertebral discs
例谈椭圆的定义及其应用
密码系统中密钥的状态与保护*
一道椭圆试题的别样求法
TPM 2.0密钥迁移协议研究
一种基于虚拟私钥的OpenSSL与CSP交互方案