SSL中ECC数字证书的设计与实现.doc
SSL中ECC数字证书的设计与实现第24卷第12期2007年12月计算机应用与软件ComputerApplicationsandSoftwareV01.24No.12Dec.2007SSL中ECC数字证书的设计与实现陆洁茹朱艳琴(江苏工业学院计算机科学与工程系江苏常州213164)(苏州大学计算机科学与技术学院江苏苏州215006)摘要针对当前SSL协议中使用RSA证书的局限性,提出了将ECC数字证书应用于SSL握手协议的交互过程,并且设计和实现了签发及验证该ECC证书的PKI系统.关键词ECCPKISSLX.509证书数字签名密钥协商DESIGNANDIMPLEMENTATIoNoFECCDIGITALCERTIFICATEINSSLPRoToCoLLuJieru?ZhuYanqin(DepartmentofComputerScienceandEngineeringJiansuPolytechnicUniversity,ChangzhOU213164,Jiangsu,China)(ComputerScienceandTechnologySchool,SoochowUniversity,Suzhou215006,Jiangsu,China)AbstractConsideningthelimitationofusingRSAcertificateinSSLprotocol,ECCdigitalcertificateisappliedtoSSLhandshakeprotocolAPKIsystemisdesignedandimplementedformakingandverifyingtheECCcertificate.KeywordsECCPKISSLX.509certificateDigitalsignatureKeyexchange0引言安全套接字层SSL(SecureSocketLayer)协议是网络安全传输中使用最广泛的协议.它位于TCWIP层和应用层之间,为应用层程序提供一条全透明的安全网络传输通道.该协议目前普遍使用的是RSA公钥密码体制.考虑到ECC(EllipticCurveCD'ptography)与RSA相比的强大优势,本文使用ECC数字证书传递ECC公钥,并将ECDSA签名应用于SSL协议中,以缓解使用RSAEI益产生的瓶颈问题.1基于ECC的SSL握手协议设计1.1SSL协议概述SSL协议分为握手和数据传输两个阶段.握手阶段对服务器进行认证并确立用于保护数据传输的加密密钥,一般采用公钥密码体制实现.握手完成后,数据被分成经过保护的记录进行传输.使用SSL协议虽然保证了两台机器的安全通信,但给网络传输造成了额外的负荷.目前SSL主要使用RSA公钥实现身份认证和密钥协商.由于ECC具有安全性能高,密钥长度短,计算量小,处理速度快,占用存储空问小和带宽要求低等更强大优势,用ECC代替RSA应用于SSL协议能够显着提高SSL的性能.1.2基于ECC数字证书的SSL握手过程本文在SSL握手协议中引入ECC数字证书,将ECC数字证书作为ECC公钥及证书所有者身份信息的载体,提供身份认证,ECDH密钥协商和完整性等服务.握手过程分为四个阶段进行,如图1所示.客逋信双方建Servertlello立一次连接Certificate服务器端发送nificaReques证书并索要客ServerIIelloDone户端证书roninPtp客户端发送证clientKyExchall书,密钥交换以及证书验证消息CertificateVerifyChangeCipherSp!协商共享密钥,Finished双方发送结束握手消息L"IllkslleO图1SSL握手协议1.2.1第一阶段通过两条消息在客户端和服务器端之间建立安全联系:协商同一个协议的版本号,加密组,压缩方法及产生随机值.本文选择的加密组是TLSECDHECDSAWITHRC4128一SHA,即使用ECDH密钥协商算法,ECDSA签名算法,SHA消息摘要算法和RC4128加密算法.1.2.2第二阶段服务器端发送Certificate消息,即服务器的ECC证书.证书中的主体公钥Q和公钥算法参数中的椭圆曲线基点G将被用于客户端的ECDH密钥协商.服务器端发送cercificateRequsest消息,要求客户端提供主收稿日期:20051223.江苏省自然科学基金项目(BK2004039)资助.陆洁茹,硕士生,主研领域:计算机网络安全.第12期陆洁茹等:SSL中ECC数字证书的设计与实现39体公钥用作ECDSA签名的证书进行身份认证.服务器端发送ServerHelloDone消息,握手协议的Hello段结束,服务器等待客户端响应.1.2.3第三阶段客户端发送Certificate消息.作为对服务器端Certifica.teRequsest消息的响应,客户端发送基于ECDSA公钥的证书.该证书与服务器端证书不同,仅用于客户端的身份认证,不用于ECDH密钥协商.因为ECDH密钥协商算法要求双方密钥基于同一条椭圆曲线生成,在实际应用中会造成一定的局限性.仅采用ECC汪书用作身份认证,既发挥了它的优势,又保证了实现的灵活性和安全性.客户端发送clientKeyExchange消息.客户端收到服务器端ECC证:枵并验证其有效性和真实性后,从中解析服务器主体公钥Q及椭圆曲线参数.客户端基于该椭圆曲线生成临时密钥对用于ECDH密钥协商,其中公钥为Q:kG(k为客户端私钥):计算共享密钥K:QXk.将Q通过此消息发送给服务器.客户端发送CertificateVerify消息:客户端在Certificate消息中发送了基于ECDSA公钥的ECC数字证书,表示该证书绑定的主体公钥用于ECDSA数字签名.客户端使用与该公钥匹配的私钥对上面所有收到和发出的消息进行ECDSA签名,并把签名信息附在该消息中发送给服务器.1.2.4第四阶段服务器端获得客户端ECC证书后,先验证合法性,再验证该证书类型是否是它在cenicateRequest消息中要求客户端所发送的证书类型.服务器端获得客户端用于密钥协商的公钥Q后,协商出共享密钥K=QXk(k为服务器端私钥).此时,通信双方已经协商出共享密钥,可以用于后序数据传输的加密解密.服务器端获得客户端ECDSA签名信息后,从客户端ECC证书中解析出主体公钥,用ECDSA算法验证签名信息.如果验证通过,则客户端确实拥有与该公钥匹配的私钥,他的身份真实有效.当ChangeCipherSpec消息验证密钥交换过程成功后,Finished消息立即发送,之后,双方就可以开始发送应用层数据了.2数字证书结构在SSL握手阶段,服务器端和客户端分别提供了基于ECC的数字证书用于身份认证和密钥协商等安全服务.这就需要设计出ECC数字证书的格式并实现证书的签发.2.1数字证书格式数字证书即"网络身份证",由可信第三方发证机构为用户签发.它包含用户的公钥以及一些其他信息,带有发证机构的数字签名,具有不可伪造性.X.509是当前使用最广泛的一种证书格式.它的结构如表1所示.表1X.509证书结构字段描述CertificateFommtVersion证书版本号(vl,v2,v3)CertificateSerialNumber证书序列号SignatureandHashing证书签发者的签名和Hash算法AlgorithmfortheCA标识证书签发者的签名算法参数(可SignatureAlgorithmParameters选)IssuerName证书签发者唯一标识名证书有效期(包括生效和失效时ValidityPeriod间)SubieetNanle主体(证书所有者)唯一标识名SubjectPublicKey主体公钥算法标识AlgorithmIdentifierSubjectPublicKey主体公钥算法参数AlgorithmParametersSubjectPublicKey主体公钥Extensions证书扩展项(可选)CASignature证书签发者的数字签名目前的数字证书大多是RSA证书,ECC证书与其不同之处主要有:主体公钥信息和证书签发者的签名信息.2.2ECC数字证书文法描述2.2.1主体公钥信息(1)主体公钥算法标识ECC公钥的对象标识(OID)为1.2.840.10045.2.1,表示"ECPublicKey".(2)主体公钥算法参数双方使用ECC证书通信时,有时不仅需要知道对方的公钥值,还需要知道对方的公钥是基于哪条椭圆曲线生成的.例如,双方进行ECDH密钥协商时就要求ECC公钥基于同一条椭圆曲线生成.该字段主要包括的参数有选定的曲线curve,基点base,基点的阶n,余因子cofator以及用于标识素数域或二进制域的fieldlD.该结构用ASN.1文法描述如下:Parameters:=CHOICE;ecParametersECParameters,namedCurveCURVES.&id(CurveNames),implicitlyCANULLECParameters:=SEQUENCEversionINTEGERecpVerl(1)(ecpVer1),fileldlDFieldlDFieldTypes,curveCurve.baseECPoint,orderINTEGER,cofactorINTEGEROPTIONAL,.通常有三种方法指定参数:直接指定,可用于签发自签名证书.由标准中指定的OID来表示,用于使用标准推荐的椭圆曲线产生的密钥.为了保证安全性,通常不建议用户自定义生成椭圆曲线,而是使用标准中推荐的椭圆曲线(如FIPS标准中由NIST定义的椭圆曲线).省略,椭圆曲线参数从颁发者根证书中继承,本系统cA为用户颁发的证书采用该方法.(3)主体公钥根据ECC算法,公钥是ECPoint类型,表示椭圆曲线上的一个点,将该值作为BITSTRING类型的ASN.1编码保存在该字段中.2.2.2证书签发者签名信息(1)签名算法标识CA使用SHA1消息摘要算法和ECDsA签名算法对证书签名,OlD为1.2.840.10045.4.1,表示计算机应用与软件2007生"ECDSAWITHSHAI".(2)签名算法参数证书由CA签名,签名算法参数可以从CA根证书的主体公钥信息中获得,此字段设置为空.(3)数字签名计算证书的SHAI消息摘要和ECDSA数字签名(r,s),将签名值作为BITSTRING类型的ASN1编码保存在该字段中.该结构用ASN.1文法描述如下:ECDSA-SigValue:SEQUENCErINTEGER.sINTEGER3ECC数字证书的颁发和验证3.1基于ECC的PKI环境构建为了实现SSL握手协议中服务器端和客户端ECC证书的传输,本系统构建了一个PKI环境,在ECC公钥体制基础上实现证书的申请,签发,查找,验证,管理和撤销等功能.它主要包括安全服务器,注册中心RA,认证中心CA,证书/CRL库和数据库系统构架图如图2所示.下面介绍CA颁发ECC证书以及ECC证书验证的实现过程图2基于ECC的PKI系统3.2ECC数字证书的签发用户端通过安全服务器进行证书申请,申请经RA审批后,由CA为其签发证书并发布到证书库中,用户通过安全服务器从证书库中获取证书.(1)系统初始化CA选取一条在SEC2(StandardsForEfficientCryptography)标准中推荐的椭圆曲线,生成ECC密钥对,使用ECDSA签名算法自签发ECC根证书.再分别为RA和安全服务器颁发ECC证书,具体过程类似于为用户颁发证书.(2)用户提出申请用户获取CA的ECC根证书后解析主体公钥信息中的椭圆曲线参数,基于该椭圆曲线生成ECC密钥对,保证了用户和CA的密钥基于同一条椭圆曲线产生,增强了互操作性.用户将公钥和其他信息生成证书请求,用私钥进行ECDSA签名后,传送给安全服务器.(3)RA审核用户身份RA获得用户证书申请后,使用ECDSA算法验证其签名,并对用户身份逐步进行审核.如果审核通过,则附上RA签名,递交给CA服务器.(4)CA签发ECC数字证书CA用ECDSA算法验证RA签名后,解析出证书申请中的各个字段包括用户信息和公钥信息等,按照3.2介绍的ECC证书结构设置证书版本,序列号,有效期和公钥信息等字段.最后CA对已经生成的证书进行ECDSA签名,保存在证书颁发者签名字段中.CA将签发的ECC证书发布到证书库中,用户可以通过安全服务器查询和下载.3.3ECC数字证书的验证用户从证书库或通信另一方获取证书后,需要进行证书的解析和验证.具体流程如图3所示.图3证书的验证(1)获得证书后构造出证书链,链表头的证书为当前实体证书.(2)根据ECC证书的结构,从当前证书中解析出相关字段,用于以下步骤的验证.(3)解析出ValidityPeriod字段,判断当前证书是否在有效期之内.(4)解析出证书中的ECDSA签名字段,用根证书中的公钥验证签名.如果验证通过,证明该证书没有被篡改.(5)用户通过安全服务器从证书库中获取最新发布的证书撤销列表(CRL),如果当前证书的序列号存在丁CRL中,表明该证书已被吊销,证书验证失败.(6)若当前证书是根证书则证书验证成功,否则,如果在最大路径限制内则继续向上递归查找.若当前路径已经超出最大路径限制则证书验证失败.4安全性能分析本系统将ECC数字证书应用于SSL协议的握手阶段.服务器端提供ECC证书用于身份认证和密钥协商,并要求客户端提供基于ECDSA公钥的证书.客户端在CertificateVerify消息中对已发出和接收到的消息进行签名,由眼务器端用客户端ECC证书中的公钥对签名进行验证以认证客户端身份.在握手阶段双方互相提供证书认证各自身份,有效防止了中问方的攻击.在SSL握手协议中,除了认证通信双方的身份,还需要协商共享密钥,对后序数据加密传输.在ClientKeyExchange消息中,客户端基于服务器端ECC证书的主体公钥参数生成临时ECDH密钥用于协商共享密钥,与使用固定ECDH密钥相比,安全性和兼容性都有很大的提高.ECC与目前应用最广泛的公钥算法RSA相比有很强大的优势,在相同安全等级下,它减少了计算时间和存储空间,提高了网络的利用率.将ECC应用于SSL握手协议时,计算量比较集中的部分是客户端和服务器端协商共享密钥的ECDH算法.而使用RSA时,则是服务器端用RSA私钥解密客户端发送的ClientKeyExchange消息.表2给出了两台机器在相同硬件条件和安全等级下通信,分别使用ECC和RSA加密组进行ECDH和RSA解密的几组对比.从表中我们可以看到在每个不同的安全等级中,ECC性能显着优于RSA.随着安全强度的不断增加,密钥长度也随之增加,ECC体现出的性能更是优越.因此,用ECC代替RSA应用于SSL协议中,更加适合未来网络的发展要求.(下转第62页)62计算机应用与软件2007,年依照图3所示的过程,我们首先对工艺品库中的图像做16维DDH特征向量和7维Hu不变矩特征向量计算,并把23维特征向量存人数据库对应字段.利用欧式距离定义两幅图像A和B相似度函数:5=1一ma=1X【USj厂西一(3)W为图像第i维的权值.S的取值在01之间,S取值越大,A,B越相似.检索时,我们首先使用图3所示过程提取检索图像的23维特征向量,并设置其23维特征向量的初始权值为(1/23,1/23,1/23),然后通过公式(3)计算检索图像与库中各图像的相似度并把结果根据相似度降序排列显示,最后通过用户反馈的图像经过公式(2)调整权值向量.4.2实例验证.验证过程对工艺品库的253幅图片做组合算法,DDH算法和Hu形状不变矩检索算法做实验,并通过做多次查询来验证相关反馈算法.将检索结果按照图像的相似度从左到右,从上到下排列下面列出其中一幅图像的检索结果,取前4幅图像的显示结果,如图4所示._(C)采用DDH算法的检索结果图4从图4(a),(b),(c)的结果可以看出,采用了DDH和Hu形状不变矩组合检索算法比单独采用其中一种的检索精度和效果更好.同时,经过对不同类型的工艺品图像做实例验证,当相关反馈算法中m取为3时,检索效果和效率能达到最好.5结论本文针对工艺品图像库的检索需求,提出了综合基于距离分布直方图和Hu形状不变矩的检索算法,该算法能较好地描述图像的形状和空间分布信息,具有良好的平移,缩放和旋转不变性,并通过基于权值调整的相关反馈技术对检索结果再处理.实验证明,采用该算法建立的图像检索系统能有效地进行工艺品图像的检索,具有良好的实用价值.参考文献1黄琦,孙守迁,潘云鹤,等.面向斑铜工艺品的布局问题求解算法昆明理工大学:自然科学版,2001,4:3540.2HuangJ,eta1.Imageindexingusingcolorcorreloglanls.InternationalConfereneeComputerVisionPatternRecognition.1997:762768.3窦建军,文俊,刘重庆.基于颜色直方图的图像检索技术.红外与激光工程,2005.2:8488.4黄勇,王崇骏,王亮,等基于形状不变矩的图像检索算法的研究计算机应用研究,2004,7:256260.:5郭丽,孙兴华,黄元元,等.距离分布直方图及其在商标图案检索中的应用.中国图像图形,2002.10:(7)10271031.6JHUMINGKUEI.VisualPatternRecognitionbyMomentInvariants,IRETransactionsonInformationTheory,.1962(2):1791877姚玉荣,章毓晋.利用小波和矩进行基于形状的图像俭索.中国图像图形,2000,5A(3):206210.8牛蕾,倪林.基于内容的图像检索中的相关反馈算法.汁算机工程与应用,2004,32:6570.19LinHweiJen,KaoYangTa,YenShwuHuey,eta1.Astudyofshapebasedimageretrieval,proceedingsofthe24ICDCSW'04.10MichaelKazhdan,ThomasFunkhouser,SzymonRusinkiewicz.Rotationinvafiantsphericalharmonicrepresentationof3Dshapedescriptors,EurographicsSymposiumonGeometryProcessing,2003.11王家文,曹宇.MATLAB6.5图形网像处理.国防工业出版社,2004:323329(上接第40页)表2RSA与ECC算法性能比较密钥长度ECC.16ORSA.1024ECC.224RSA-2048时间(nls)3.698755l256.18操作/秒271.3l14.3195.517.8性能比2.4:111:1密钥长度比1:6.41:915结论本文设计了基于ECC证书的SSL握手协议,构建了签发和验证ECC征书的PKI环境.分析表明,将ECC证书应用于SSL协议中,在提高网络传输安全性能与传输效率的同时,有效地减少了网络资源的消耗.在网络高度发展的今天,人们不仅希望网络传输的安全性能够日益提高,而且希望在网络传输中能够保护更多的通信数据.如果使用传统RSA公钥体制,势必会造成随着安全性能的提高,通信量的增加而导致网络负荷激增,响应时间延迟等一系列的矛盾.将ECC引人SSL协议中就能够很好地解决这一矛盾.参考文献:1EricRescorla.SSL与TkS.崔凯,译.中国电力出版社,2002,10.:2ECCCipherSuitesforTLS.draftitef-tlsece-09.IE下FInteruetDraft,2(105.3ECCinX.509.SECGX.509WGWorking1)oeument.WorkingGroupDraft.1999.4RobeflZueeherato.UsingAPKIBasedUponEllipticCurveCryptography.http:/www.entrust.eum,2003.5SEC2:RecommendedEllipticCurveDomainParameters.StandardsforEfficientCu'ptographyGroup,2000.6VipulGupta,DouglasStebila,SheuelingChangShantz.IntegratingElip-ticCurveCryptoga'aphyintotheWeb'sSecurityInfrastructure,2004.