一种客户端和服务端协作生成数字签名的方法技术

技术编号:15394885 阅读:76 留言:0更新日期:2017-05-19 06:35
本发明专利技术公开了一种客户端和服务端协作生成数字签名方法,包括:客户端接收来自外部应用的数字签名请求,并根据该数字签名请求发送签名原文m和用户个人识别信息ID给服务端,服务端根据用户个人识别信息ID检测用户私钥是否已经被撤销,如果没有被撤销则服务端根据接收到的用户个人识别信息ID在其自身中查找对应的第二私钥d2,利用该第二私钥d2对签名原文m进行数字签名,以生成第一签名信息S1,并将第一签名信息S1发送给客户端。本发明专利技术能够解决现有方法中存在的用户必须随身携带硬件安全设备以完成数字签名操作所造成的用户使用复杂度高,以及客户端密钥不能被及时作废所导致用户的签名操作不能被终止的技术问题。

【技术实现步骤摘要】
一种客户端和服务端协作生成数字签名的方法
本专利技术属于信息安全领域,更具体地,涉及一种客户端和服务端协作生成数字签名的方法。
技术介绍
目前,业务系统多采用基于数字证书的公钥基础设施(PublicKeyInfrastructure,简称PKI)系统来保障业务数据安全,数字证书是由证书授权(CertificateAuthority,简称CA)或第三方CA签发的,以数字证书为核心的公钥密码机制可以对网络上传输的信息进行加密和解密、数字签名和验证,以确保网络上传递消息的机密性、完整性以及交易实体的真实性,以及签名的不可否认性,进而保障网络应用的安全性。在以数字证书为核心的PKI系统中,数字签名由客户端调用用户数字证书对应的私钥来独立计算完成。常用的数字签名算法包括RSA签名算法和基于椭圆曲线密码的数字签名算法,其中基于椭圆曲线密码的数字签名算法包括国际上使用最广泛的椭圆曲线数字签名算法(EllipticCurveDigitalSignatureAlgorithm,简称ECDSA)和中国国家密码标准的SM2数字签名算法。然而,上述数字签名算法存在以下几个技术问题:第一,数字证书对应的用户私钥是由用户生成,并由用户保管,容易被黑客窃取,为了保障用户私钥的安全,目前通行的做法是使用专门的硬件安全设备(譬如智能卡、U盾、智能密钥设备等)来存储和保护用户私钥,但这就要求用户必须购买并随身携带该硬件安全设备才能完成数字签名操作,从而既增加了用户使用的成本,也增加了用户使用的复杂度。第二,由于用户私钥是存储在客户端,并在客户端使用,因此用户可以随时生成数字签名;如果用户丢失数字证书,或因用户离职需要作废数字证书,服务端不能及时将用户私钥的客户端部分作废,并终止用户的签名操作。
技术实现思路
针对现有技术的以上缺陷或改进需求,本专利技术提供了一种客户端和服务端协作生成数字签名的方法,其目的在于,解决现有方法中存在的用户必须随身携带硬件安全设备以完成数字签名操作所造成的用户使用复杂度高,以及客户端密钥不能被及时作废所导致用户的签名操作不能被终止的技术问题。为实现上述目的,按照本专利技术的一个方面,提供了一种客户端和服务端协作生成数字签名方法,包括以下步骤:(1)客户端接收来自外部应用的数字签名请求,并根据该数字签名请求发送签名原文m和用户个人识别信息ID给服务端,其中该用户个人识别信息ID可包括用户名,和/或客户端使用公钥密码算法对其自身生成的第一私钥d1进行处理后得到的第一公钥P1;(2)服务端根据用户个人识别信息ID检测用户私钥是否已经被撤销,如果没有被撤销则进入步骤(3),否则过程结束;(3)服务端根据接收到的用户个人识别信息ID在其自身中查找对应的第二私钥d2,利用该第二私钥d2对签名原文m进行数字签名,以生成第一签名信息S1,并将第一签名信息S1发送给客户端;(4)客户端利用第一私钥d1对签名原文m和第一签名信息S1的组合进行数字签名,以生成完整签名信息S,并将完整签名信息S返回给外部应用。优选地,生成第一签名信息S1的步骤如下:(3-1)根据第二私钥d2和签名原文m并使用以下公式获得椭圆曲线点P2:P2=H(d2,m)*G或根据个人用户识别信息ID、第二私钥d2和签名原文m并使用以下公式获得椭圆曲线点P2:P2=H(ID,d2,m)*G其中H表示哈希算法,G为数字签名算法采用的椭圆曲线的基点,*表示椭圆曲线的点乘运算;(3-2)将计算获得的椭圆曲线点P2赋值给第一签名信息S1。优选地,步骤(4)中使用的数字签名算法是SM2椭圆曲线签名算法,且步骤(4)具体包括以下子步骤:(4-1)生成随机数k∈[1,n-1],并获得椭圆曲线上的点k*G,其中n为使用的数字签名算法中椭圆曲线的阶;(4-2)根据步骤(4-1)获得的椭圆曲线上的点k*G和第一签名信息获取椭圆曲线点P1=k*G+S1,其中+表示椭圆曲线的点加运算;(4-3)根据步骤(4-2)中获得的椭圆曲线点P1和用户个人识别信息获取签名结果第一要素r=(e+x1)modn,其中e=H(Z||m),Z表示用户个人识别信息的摘要值;x1表示P1点的横坐标,y1表示P1点的纵坐标;(4-4)根据第一私钥d1、随机数k、步骤(4-3)得到的签名结果第一要素r获取签名结果第二要素s=((1+d1)-1·(k-r·d1))modn;(4-5)将步骤(4-3)获得的签名结果第一要素r和步骤(4-4)中获得的签名结果第二要素s合成,以得到完整签名信息S。优选地,步骤(4)中使用的数字签名算法是SM2椭圆曲线签名算法,且步骤(4)具体包括以下子步骤:(4-1)生成随机数k∈[1,n-1],并根据该随机数和第一签名信息获取椭圆曲线点P1=k*S1,其中n为使用的数字签名算法中椭圆曲线的阶;(4-2)根据步骤(4-1)中获得的椭圆曲线点P1和用户个人识别信息获取签名结果第一要素r=(e+x1)modn,其中e=H(Z||m),Z表示用户个人识别信息的摘要值;x1表示P1点的横坐标,y1表示P1点的纵坐标;(4-3)根据第一私钥d1、随机数k、步骤(4-2)得到的签名结果第一要素r获取签名结果第二要素s=((1+d1)-1·(k-r·d1))modn;(4-4)将步骤(4-2)获得的签名结果第一要素r和步骤(4-3)中获得的签名结果第二要素s合成,以得到完整签名信息S。优选地,步骤(4)中使用的数字签名算法是ECDSA椭圆曲线签名算法,则步骤(4)具体包括以下子步骤:(4-1)生成随机数k∈[1,n-1],并获得椭圆曲线上的点k*G,其中n为使用的数字签名算法中椭圆曲线的阶;(4-2)根据步骤(4-1)获得的椭圆曲线上的点k*G和第一签名信息获取椭圆曲线点P1=k*G+S1,其中+表示椭圆曲线的点加运算;(4-3)根据步骤(4-2)中获得的椭圆曲线点P1获取签名结果第一要素r=x1modn,其中x1表示P1点的横坐标;(4-4)根据第一私钥d1、随机数k、步骤(4-3)得到的签名结果第一要素r获取签名结果第二要素s=k-1·(e+r·d1)modn;其中e等于H(m);(4-5)将步骤(4-3)获得的签名结果第一要素r和步骤(4-4)中获得的签名结果第二要素s合成,以得到完整签名信息S。优选地,步骤(4)中使用的数字签名算法是ECDSA椭圆曲线签名算法,则步骤(4)具体包括以下子步骤:(4-1)生成随机数k∈[1,n-1],并根据该随机数和第一签名信息获取椭圆曲线点P1=k*S1,其中n为使用的数字签名算法中椭圆曲线的阶;(4-2)根据步骤(4-1)中获得的椭圆曲线点P1获取签名结果第一要素r=x1modn,其中x1表示P1点的横坐标;(4-3)根据第一私钥d1、随机数k、步骤(4-2)得到的签名结果第一要素r获取签名结果第二要素s=k-1·(e+r·d1)modn;其中e等于H(m);(4-4)将步骤(4-2)获得的签名结果第一要素r和步骤(4-3)中获得的签名结果第二要素s合成,以得到完整签名信息S。优选地,生成第一签名信息S1的步骤如下:(3-1)根据第二私钥d2和签名原文m并使用以下公式获得椭圆曲线点P2:P2=H(d2,m)*G或根据个人用户识别信息ID、第二私钥d2和签名原文m本文档来自技高网
...
一种客户端和服务端协作生成数字签名的方法

【技术保护点】
一种客户端和服务端协作生成数字签名方法,其特征在于,包括以下步骤:(1)客户端接收来自外部应用的数字签名请求,并根据该数字签名请求发送签名原文m和用户个人识别信息ID给服务端,其中该用户个人识别信息ID可包括用户名,和/或客户端使用公钥密码算法对其自身生成的第一私钥d1进行处理后得到的第一公钥P1;(2)服务端根据用户个人识别信息ID检测用户私钥是否已经被撤销,如果没有被撤销则进入步骤(3),否则过程结束;(3)服务端根据接收到的用户个人识别信息ID在其自身中查找对应的第二私钥d2,利用该第二私钥d2对签名原文m进行数字签名,以生成第一签名信息S1,并将第一签名信息S1发送给客户端;(4)客户端利用第一私钥d1对签名原文m和第一签名信息S1的组合进行数字签名,以生成完整签名信息S,并将完整签名信息S返回给外部应用。

【技术特征摘要】
1.一种客户端和服务端协作生成数字签名方法,其特征在于,包括以下步骤:(1)客户端接收来自外部应用的数字签名请求,并根据该数字签名请求发送签名原文m和用户个人识别信息ID给服务端,其中该用户个人识别信息ID可包括用户名,和/或客户端使用公钥密码算法对其自身生成的第一私钥d1进行处理后得到的第一公钥P1;(2)服务端根据用户个人识别信息ID检测用户私钥是否已经被撤销,如果没有被撤销则进入步骤(3),否则过程结束;(3)服务端根据接收到的用户个人识别信息ID在其自身中查找对应的第二私钥d2,利用该第二私钥d2对签名原文m进行数字签名,以生成第一签名信息S1,并将第一签名信息S1发送给客户端;(4)客户端利用第一私钥d1对签名原文m和第一签名信息S1的组合进行数字签名,以生成完整签名信息S,并将完整签名信息S返回给外部应用。2.根据权利要求1所述的客户端和服务端协作生成数字签名方法,其特征在于,生成第一签名信息S1的步骤如下:(3-1)根据第二私钥d2和签名原文m并使用以下公式获得椭圆曲线点P2:P2=H(d2,m)*G或根据个人用户识别信息ID、第二私钥d2和签名原文m并使用以下公式获得椭圆曲线点P2:P2=H(ID,d2,m)*G其中H表示哈希算法,G为数字签名算法采用的椭圆曲线的基点,*表示椭圆曲线的点乘运算;(3-2)将计算获得的椭圆曲线点P2赋值给第一签名信息S1。3.根据权利要求2所述的客户端和服务端协作生成数字签名方法,其特征在于,步骤(4)中使用的数字签名算法是SM2椭圆曲线签名算法,且步骤(4)具体包括以下子步骤:(4-1)生成随机数k∈[1,n-1],并获得椭圆曲线上的点k*G,其中n为使用的数字签名算法中椭圆曲线的阶;(4-2)根据步骤(4-1)获得的椭圆曲线上的点k*G和第一签名信息获取椭圆曲线点P1=k*G+S1,其中+表示椭圆曲线的点加运算;(4-3)根据步骤(4-2)中获得的椭圆曲线点P1和用户个人识别信息获取签名结果第一要素r=(e+x1)modn,其中e=H(Z||m),Z表示用户个人识别信息的摘要值;x1表示P1点的横坐标,y1表示P1点的纵坐标;(4-4)根据第一私钥d1、随机数k、步骤(4-3)得到的签名结果第一要素r获取签名结果第二要素s=((1+d1)-1·(k-r·d1))modn;(4-5)将步骤(4-3)获得的签名结果第一要素r和步骤(4-4)中获得的签名结果第二要素s合成,以得到完整签名信息S。4.根据权利要求2所述的客户端和服务端协作生成数字签名方法,其特征在于,步骤(4)中使用的数字签名算法是SM2椭圆曲线签名算法,且步骤(4)具体包括以下子步骤:(4-1)生成随机数k∈[1,n-1],并根据该随机数和第一签名信息获取椭圆曲线点P1=k*S1,其中n为使用的数字签名算法中椭圆曲线的阶;(4-2)根据步骤(4-1)中获得的椭圆曲线点P1和用户个人识别信息获取签名结果第一要素r=(e+x1)modn,其中e=H(Z||m),Z表示用户个人识别信息的摘要值;x1表示P1点的横坐标,y1表示P1点的纵坐标;(4-3)根据第一私钥d1、随机数k、步骤(4-2)得到的签名结果第一要素r获取签名结果第二要素s=((1+d1)-1·(k-r·d1))modn;(4-4)将步骤(4-2)获得的签名结果第一要素r和步骤(4-3)中获得的签名结果第二要素s合成,以得到完整签名信息S。5.根据权利要求2所述的客户端和服务端协作生成数字签名方法,其特征在于,步骤(4)中使用的数字签名算法是ECDSA椭圆曲线签名算法,则步骤(4)具体包括以下子步骤:(4-1)生成随机数k∈[1,n-1],并获得椭圆曲线上的点k*G,其中n为使用的数字签名算法中椭圆曲线的阶;(4-2)根据步骤(4-1)获得的椭圆曲线上的点k*G和第一签名信息获取椭圆曲线点P1=k*G+S1,其中+表示椭圆曲线的点加运算;(4-3)根据步骤(4-2)中获得的椭圆曲线点P1获取签名结果第一要素r=x1modn,其中x1表示P1点的横坐标;(4-4)根据第一私钥...

【专利技术属性】
技术研发人员:张庆勇胡进
申请(专利权)人:北京信安世纪科技有限公司武汉信安珞珈科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1