密码学系列之七:数字签名

简介: 密码学系列之七:数字签名


1. 概述

1.1 基本概念

数字签名(Digital Signature),也称电子签名,是指附加在某一电子文档中的一组特定的符号或代码。它利用密码技术对该电子文档进行关信息提取并进行认证形成,用于标识签发者的身份以及签发者对电子文档的认可,并能被接收者用来验证该电子文档在传输过程中是否被篡改或伪造。

为了满足在网络环境中身份认证数据完整性不可否认性等需求,数字签名应具有以下特点:

  • 可信性信:签名使文件的接收者相信是签名者在文件上签名的。
  • 不可重用性:签名不可重用,即同一消息在不同时刻的签名是有区别的。
  • 不可改变性:在文件签名后,文件不能改变。
  • 不可伪造性:签名能够证明是签名者而不是其他人在文件上签名,任何人都不能伪造签名。
  • 不可否认性:在签名者否认自己的签名时,签名接收者可以请求可信第三方进行仲裁。

1.2 签名原理

1.2.1 形式化定义

数字签名的形式化定义如下:

(1)系统初始化

系统初始化产生签名方案的基本参数( M , s , K , S i g n , V e r ) (M,s,K,Sign,Ver)(M,s,K,Sign,Ver)

其中,M MM为消息空间,S SS为签名空间,K KK为密钥空间,包含私钥和公钥,S i g n SignSign为签名算法集合,V e r VerVer为签名验证算法集合。

(2)签名产生过程

k = ( k 1 , k 2 ) ∈ K k=(k_1,k_2) \in Kk=(k1,k2)K,其中k 1 k_1k1是公钥,k 2 k_2k2是私钥,签名算法s i g n k 2 : M → S , s i g n k 2 ∈ S i g n sign_{k_2}:M \to S, sign_{k_2} \in Signsignk2:MS,signk2Sign

对于任意消息m ∈ M m \in MmM,消息签名s = s i g n k 2 ( m ) s = sign_{k_2}(m)s=signk2(m), s ∈ S s \in SsS,形成签名消息组( m , s ) (m,s)(m,s)发送给签名验证者。

(3)签名验证过程

对于k 1 ∈ K k_1 \in Kk1K,有相应的签名验证算法:v e r k 1 : M × S → { T r u e , F a l s e } , v e r k 1 ∈ V e r ver_{k_1}:M \times S \to \{True,False\},ver_{k_1}\in Ververk1:M×S{True,False}verk1Ver

签名验证者收到( m , s ) (m,s)(m,s)后,计算v e r k 1 ( m , s ) ver_{k_1}(m,s)verk1(m,s),若v e r k 1 ( m , s ) = T r u e ver_{k_1}(m,s)=Trueverk1(m,s)=True,则签名有效,否签名无效:

v e r k 1 ( m , s ) = { T r u e , i f s = s i g n k 2 ( m ) , F a l s e i f s ≠ s i g n k 2 ( m ) ver_{k_1}(m,s) = \begin{cases} True, & if \quad s = sign_{k_2}(m), \\ False & if \quad s \neq sign_{k_2}(m) \end{cases}verk1(m,s)={True,Falseifs=signk2(m),ifs=signk2(m)

对于每一个k ∈ K k \in KkK,签名函数s i g n k 2 sign_{k_2}signk2和签名验证函数v e r k 1 ver_{k_1}verk1是容易计算的。

一般情下s i g n k 2 sign_{k_2}signk2可公开也可不公开,并且在签名算法中要求保证私钥的安全性;而验证函数v e r k 1 ver_{k_1}verk1是公开的,同时还要求对任意的消息m mm,从集合S SS中计算s ss使得v e r k 1 ( m , s ) = T r u e ver_{k_1}(m,s)=Trueverk1(m,s)=True是非常困难的,即攻击者对消息m mm产生有效签名s ss是不可能的。

1.2.2 签名过程

  • 发送方A将消息用Hash算法产生一个消息摘要(Message Digest)
  • 发送方A用自己的私钥对消息摘要进行加密,这个加密后的息摘要就是数字签名
  • 发送方A将消息与签名发给接收方B
  • 接收方B接收到消息及其名后,用发送方A的公钥解密这个签名,获得由发送方A生成的消息摘要
  • 接收方B用发送方A所用Hash算法重新生成所获得消息的摘要,对比这两个摘要。若相同说明签名是发送方A针对这个消息的有效签名,否则签名无效。

2 基于RSA的签名方案

2.1 实现过程

(1)初始化:生成公私密钥对

选取两个大素数p 、 q p、qpq(不可泄露),计算n = p q n=pqn=pqn nn的欧拉函数φ ( n ) = ( p − 1 ) ( q − 1 ) \varphi(n) = (p-1)(q-1)φ(n)=(p1)(q1)

随机选取整数e ( 1 < e < φ ( n ) ) e(1<e<\varphi(n))e(1<e<φ(n))作为公钥,满足g c d ( e , φ ( n ) ) = 1 gcd(e,\varphi(n))=1gcd(e,φ(n))=1,即e eeφ ( n ) \varphi(n)φ(n)互素

使用Euclid扩展算法计算私钥:d ≡ e − 1   m o d   φ ( n ) d \equiv e^{-1} \bmod \varphi(n)de1modφ(n),即e ee的逆元

(2)签名过程

设待签名的消息为m ∈ Z n m\in Z_nmZn,签名者利用安全的Hash函数产生消息摘要h = H ( m ) h=H(m)h=H(m),然后计算签名:s ≡ h d   m o d   n s \equiv h^d\bmod nshdmodn

(3)验证过程

签名接收者收到消息m mm和签名s ss,计算消息摘要h = H ( m ) h=H(m)h=H(m),然后,检验等式h   m o d   n ≡ s e   m o d   n h \bmod n \equiv s^e \bmod nhmodnsemodn。若成立,则签名有效;否则签名无效。

2.2 安全性分析

RSA签名方案还存在签名可重用的问题,即对同一消息在不同时刻签名是相的。这个问题可以通过在签名中引人随机数来解决,在后面提到的数字签名方案中对此解决方法均有所体现。

3 基于离散对数的签名方案

基于离散对数问题的签名方案是数字签名方案中较常用的一类,包括ElGamal签名方案、Schnorr签名方案、DSA签名方案等。

3.1 ElGamal签名体制

T.ElGamal于1985年提出了既可以用于加密又可以用于数字签名的ElGamal密码体制。ElGamal数字签名方案的修正形式已被美国NIST作为数字签名标准(DSS,Digital Signature Standard)。ElGamal数字签名方案是一种非确定性的签名方案,即对给定的一个消息,由于选择的随机数不同而有不同的数字签名,并且验证算法能够将它们中的任何一个作为有效的签名而接受。

3.1.1 实现过程

(1)初始化:生成公私密钥对

随机选择一个大素数p pp,且要求p − 1 p-1p1有大素数因子,g ∈ Z p ∗ g \in \boldsymbol Z^{*}_pgZp是一个本原元(Z p Z_pZp是一个有p pp个元素的有限域,Z p ∗ Z^{*}_pZpZ p Z_pZp中的非零元构成的乘法群)

选择随机数x ∈ R Z p − 1 ∗ x \in _RZ^*_{p-1}xRZp1∗ *表示除去零元,R RR表示随机选取),计算y ≡ g x   m o d   p y \equiv g^x \bmod pygxmodp

公钥:( p , g , y ) (p,g,y)(p,g,y)

私钥:x xx

(2)签名过程

设待签名的消息为m mm,签名者利用安全的Hash函数产生消息摘要h = H ( m ) h=H(m)h=H(m),然后选择随机数k ∈ R Z p ∗ k \in _RZ^*_{p}kRZp,计算:

{ r ≡ g k   m o d   p s ≡ ( h − x r ) k − 1   m o d   ( p − 1 ) \begin{cases} r \equiv g^k \bmod p \\ s \equiv (h-xr)k^{-1} \bmod (p-1)\end{cases}{rgkmodps(hxr)k1mod(p1)

对消息m mm的签名为( r , s ) (r,s)(r,s)

(3)验证过程

签名接收者收到消息m mm和签名( r , s ) (r,s)(r,s),计算消息摘要h = H ( m ) h=H(m)h=H(m),然后,检验等式y r r s ≡ g h   m o d   p y^rr^s \equiv g^h \bmod pyrrsghmodp。若成立,则签名有效;否则签名无效。

3.1.2 安全性分析

随机数k kk的选取和保管对私钥x xx的保密性至关重要。如果k kk值泄露,则容易计算私钥x xx

此外,随机数k kk不能重复使用,多次签名时选取的多个k kk之间应无关联,否则容易计算出私钥x xx

随机数k kk的使用也保证了签名方案的不可重用性,不同时刻选取的随机数不同,即使对同一消息进行签名,也会产生不同的结果,避免了RSA签名中出现的签名重用问题。

3.2 Schnorr签名体制

C.Schnorr于1989年提出了Schnorr签名体制,该方案具有签名速度较快、签名长度较短等特点。

3.2.1 实现过程

(1)初始化:生成公私密钥对

随机选择一个大素数p 、 q p、qpqq qqp − 1 p-1p1的大素数因子

选择生成元g ∈ Z p ∗ g \in \boldsymbol Z^{*}_pgZp,且g q ≡ 1   m o d   p , g ≠ 1 g^q \equiv 1 \bmod p,g \neq 1gq1modp,g=1

选择随机数1 < x < q 1<x<q1<x<q,计算y ≡ g x   m o d   p y \equiv g^x \bmod pygxmodp

公钥:( y , g , p , q ) (y,g,p,q)(y,g,p,q)

私钥:x xx

(2)签名过程

设待签名的消息为m mm,签名者选择随机数1 ≤ k ≤ q − 1 1 \le k \le q-11kq1,计算:

{ r ≡ g k   m o d   p h = H ( m , r ) s ≡ ( x h + k )   m o d   q \begin{cases} r \equiv g^k \bmod p \\ h= H(m,r)\\s \equiv (xh+k) \bmod q\end{cases}rgkmodph=H(m,r)s(xh+k)modq

对消息m mm的签名为( h , s ) (h,s)(h,s),其中H HH为Hash函数

(3)验证过程

签名接收者收到消息m mm和签名( e , s ) (e,s)(e,s),计算r 1 ≡ g s y − e   m o d   p r_1 \equiv g^sy^{-e} \bmod pr1gsyemodp

然后,检验等式h = H ( m , r 1 ) h = H(m,r_1)h=H(m,r1)。若成立,则签名有效;否则签名无效。

3.2.2 安全性分析

ElGamal数字签名方案中g ggZ p ∗ Z^{*}_pZp的生成元,而在Schnorr数字签名方案中通过引入素数q qq,选择g ggZ p ∗ Z^{*}_pZpq qq阶子群的生成元。

从穷尽搜索签名者私钥的角度而言,ElGamal签名的安全性较高,因为它的生成元的阶为p − 1 p-1p1,大于Schnorr签名生成元的阶q qq。除此之外,Schnorr数字签名方案的安全性与ElGamal数字签名方案相似。

3.3 DSA签名体制

1994年12月美国国家标准和技术研究所(NIST,National Institute of Standard and Technology)正式颁布了数字签名标准(DSS,Digital Signature Standard),该标准在EIGamal和Schnorr数字签名方案的基础上设计的。

由于DSS较好的兼容性和适用性,得到了广泛应用,数字签名标准DSS中的算法常称为DSA(Digital Signature Algorithm)。

(1)初始化:生成公私密钥对

随机选择大素数p pp(长度在512 512512~1024 10241024bit)、q qq(160 160160bit),q qqp − 1 p-1p1的大素数因子(p − 1 p-1p1能被q qq整除)。

选择g ≡ h ( p − 1 ) / q   m o d   p g \equiv h^{(p-1)/q} \bmod pgh(p1)/qmodp,其中整数h hh满足1 < h < p − 1 1<h<p-11<h<p1,且g > 1 g>1g>1

选随机数1 < x < q 1<x<q1<x<q,计算y ≡ g x   m o d   p y \equiv g^x \bmod pygxmodp

公钥:( p , q , g , y ) (p,q,g,y)(p,q,g,y)

私钥:x xx

(2)签名过程

设待签名的消息为m mm,签名者选择随机数k kk,计算:

{ r ≡ g k   m o d   p s ≡ [ H ( m ) + x r ] k − 1   m o d   q \begin{cases} r \equiv g^k \bmod p \\ s \equiv [H(m)+xr]k^{-1} \bmod q\end{cases}{rgkmodps[H(m)+xr]k1modq

其中,H HH为SHA1算法。

(3)验证过程

签名接收者在收到消息m mm和签名( r , s ) (r,s)(r,s)后,计算:

{ w ≡ s − 1   m o d   q u 1 ≡ H ( m ) w   m o d   q u 2 ≡ r w   m o d   q v ≡ ( g u 1 y u 2   m o d   p )   m o d   q \begin{cases} w \equiv s^{-1} \bmod q \\ u_1 \equiv H(m)w \bmod q \\u_2 \equiv rw \bmod q \\ v \equiv (g^{u_1}y^{u_2} \bmod p) \bmod q\end{cases}ws1modqu1H(m)wmodqu2rwmodqv(gu1yu2modp)modq然后,检验等式v = r v=rv=r。若成立,则签名有效;否则签名无效。

3.4 离散对数签名体制

3.4.1 三种签名体制的对比

如前所述,ElGamal签名方案的提出是3种方案中最早的,也是后两种方案的基础。Schnorr签名方案可以看作ElGamal签名方案的一种变型,它缩短了签名长度。而DSA 签名方案是EGamal签名方案的另一种变型,同时也吸收了Schnorr方案的一些设计思想。

由于采用的签名算法各不相同,三种方案的签名验证等式和过程也不尽相同。根据计算量和签名长度,量对比和分析这3种方案的效率如下。其中,由于模加、模减、求逆运算所用时间远远低于求幂、乘积、Hash求值等运算所需时间,可忽略不计。

签名体制 签名 验证 签名长度
ElGamal T e + T h + 2 T m T_e+T_h+2T_mTe+Th+2Tm 3 T e + T h + T m 3T_e+T_h+T_m3Te+Th+Tm ∣ p ∣ + ∣ p − 1 ∣ |p|+|p-1|p+p1∣
Schnorr T e + T h + T m T_e+T_h+T_mTe+Th+Tm 2 T e + T h + T m 2T_e+T_h+T_m2Te+Th+Tm ∣ q ∣ + ∣ 2 H ( m ) ∣ |q|+|2H(m)|q+∣2H(m)
DSA T e + T h + 2 T m T_e+T_h+2T_mTe+Th+2Tm 2 T e + T h + 3 T m 2T_e+T_h+3T_m2Te+Th+3Tm 2 ∣ q ∣ 2|q|2∣q

其中,T e T_eTe:幂运算的计算量;T h T_hTh:散列计算的计算量;T m T_mTm:乘积运算的计算量。

可以看出,Schnorr方案的签名过程计算量相对较少,速度较快,尤其有些计算与消息无关,可预先完成,这也能够减少签名的时间。Schnorr方案的验证过程计算量也相对较少,生成的签名值长度也较短(取决于∣ q ∣ + ∣ 2 H ( m ) ∣ |q|+|2H(m)|q+∣2H(m))。因此,Schnorr比较适合在智能卡等环境中应用。

另外两种方案中的个别计算也可以预先进行,而RSA方案是不可预先计算的。

3.4.2 离散对数签名体制的一般形式

ElGamal、Schnorr、DSA三种签名体制都可归结为基于有限域的离散对数签名体制的特例,离散对数签名体制的一般形式总结如下:

(1)初始化

随机选择大素数p ppq qqq qqp − 1 p-1p1的大素数因子(p − 1 p-1p1能被q qq整除)

选择生成元g ∈ Z p ∗ g \in \boldsymbol Z^{*}_pgZp,且g q ≡ 1   m o d   p , g ≠ 1 g^q \equiv 1 \bmod p,g \neq 1gq1modp,g=1

选随机数1 < x < q 1<x<q1<x<q,计算y ≡ g x   m o d   p y \equiv g^x \bmod pygxmodp

公钥:( p , q , g , y ) (p,q,g,y)(p,q,g,y)

私钥:x xx

(2)签名过程

设待签名的消息为m mm,签名者计算h = H ( m ) h=H(m)h=H(m)H HH为安全的 Hash 函数

选择随机数k kk,满足1 < k < q 1<k<q1<k<q,计算r ≡ g k   m o d   p r \equiv g^k \bmod prgkmodp

从方程a k ≡ b + c x (   m o d   q ) ak \equiv b+cx(\bmod q)akb+cx(modq)中解出s ss

对消息m mm的签名为( r , s ) (r,s)(r,s)

方程的系数a 、 b 、 c a、b、cabc有许多种不同的选择方法,可取表中某一行三个值的任意排列,r ′ ≡ r   m o d   q r' \equiv r \bmod qrrmodq

(3)验证过程

签名接收者收到消息m mm和签名( r , s ) (r,s)(r,s)后,验证r a ≡ g b y c   m o d   r^a\equiv g^by^c \bmodragbycmod,若成立,则签名有效;否则签名无效。

如针对上表第一行的a , b , c a,b,ca,b,c(忽略正负)的可能签名和验证等式如下:

签名等式 验证等式
r ′ k ≡ ( s + m x )   m o d   q r'k \equiv (s+mx) \bmod qrk(s+mx)modq r r ′ ≡ g s y m   m o d   p r^{r'} \equiv g^sy^m \bmod prrgsymmodp
r ′ k ≡ ( m + s x )   m o d   q r'k \equiv (m+sx) \bmod qrk(m+sx)modq r r ′ ≡ g m y s   m o d   p r^{r'} \equiv g^my^s \bmod prrgmysmodp
s k ≡ ( r ′ + m x )   m o d   q sk \equiv (r'+mx) \bmod qsk(r+mx)modq r s ≡ g r ′ y m   m o d   p r^s \equiv g^{r'}y^m \bmod prsgrymmodp
s k ≡ ( m + r ′ x )   m o d   q sk \equiv (m+r'x) \bmod qsk(m+rx)modq r s ≡ g m y r ′   m o d   p r^s \equiv g^my^{r'} \bmod prsgmyrmodp
m k ≡ ( s + r ′ x )   m o d   q mk \equiv (s+r'x) \bmod qmk(s+rx)modq r m ≡ g s y r ′   m o d   p r^m \equiv g^sy^{r'} \bmod prmgsyrmodp
m k ≡ ( r ′ + s x )   m o d   q mk \equiv (r'+sx) \bmod qmk(r+sx)modq r m ≡ g r ′ y s   m o d   p r^m \equiv g^{r'}y^s \bmod prmgrysmodp

所列6个不同的签名方案,加上负号总共是24 2424个,使用列出的a 、 b 、 c a、b、cabc的其他可能值则总数是120 120120个。

此外,还可以定义r rr产生更多类似DSA的方案:r ≡ ( g k   m o d   p )   m o d   q r \equiv (g^k \bmod p) \bmod qr(gkmodp)modq,使用相同的签名等式。

并定义验证等式如下:{ u 1 ≡ a − 1 b   m o d   q u 2 ≡ a − 1 c   m o d   q r ≡ ( g u 1 y u 2   m o d   p )   m o d   q \begin{cases} u_1 \equiv a^{-1}b \bmod q \\ u_2 \equiv a^{-1}c \bmod q \\ r \equiv (g^{u_1}y^{u_2} \bmod p) \bmod q\end{cases}u1a1bmodqu2a1cmodqr(gu1yu2modp)modq类似这样的处理可产生多达13000 1300013000种变型,所有的变型具有相同的安全性,可从中选择一个容易计算的有效方案。

4. 基于椭圆曲线的签名方案

DSA(Elliptic Curve Distal Signature Algorithm)是基于椭圆曲线的公钥密码体制在数字签名中的一个实现方案,即在椭圆曲线有限域上实现DSA算法,其安全性依赖于基于椭圆曲线的有限群上的离散对数难题。

与基于RSA的数字签名和基于有限域离散对数的数字签名相比,在相同的安全强度条件下,ECDSA方案签名长度短、存储空间小、计算速度快,特别适用于计算能力和存储空间有限、带宽受限、要求高速实现的场合(如智能卡中应用)。

5. 特殊数字签名

在数字签名的实际应用当中,一些特殊的场合往往有特殊的需求。例如,为保护信息拥有者的隐私,产生了盲签名;为了实现签名权的安全传递,产生代理签名;为了实现多人对同一个消息的签名,产生了多重签名等。

5.1 代理签名

代理签名是指原始签名者把他的签名权授权给代理者,代理者代表原始签名者行使他的签名权。当验证者验证代理签名时,验证者既能验证这个签名的有效性,也能确信这个签名是原始签名者认可的签名。

(1)代理签名分类

代理签名按照原始签名者给代理签名者的授权形式可分为

  • 完全委托的代理签名
  • 部分授权的代理签名(非保护代理者的代理签名、保护代理者的代理签名)
  • 带授权书的代理签名

完全委托的代理签名指原始签名者将他的私钥(或含私钥的物理设备)秘密交给代理签名者,代理签名者可使用这个钥签署各种消息。代理签名者生成的代理签名与原始签名者产生的签名是一样的。

部分授权的代理签名指原始签名者利用他的私钥计算出一个新的代理私钥,并通过安全通道将其交给代理签名者,代理签名者可用这个代理私钥签署消息并生成代理签名。所产生的代理签名与原始签名者利用自己的私钥生成的签名是不同的,验证者能分辨出原始签名者的签名和代理者的签名。

带授权书的代理签名指由原始签名者产生授书给代理签名者,此授权书是利用原始签名者的私钥签署产生的,除了包含某代理签名者可代理行使签名权力外,还包含一些特殊的信息,如代理期限、可签署消息的类型等。代理签名者得到授权书后,再利用自己的私钥生成代理私钥并利用这个代理私钥签署所代签的消息,并将此授权书包含在签名中,而验证者在验证代理签名时首先检查其授权书,判断代理授权是否有效。如果通过检查,则进一步验证代理签名本身的有效性。如果验证通过,为有效的代理签名,否则代理签名无效。

(2)代理签名方案

1997年,由S.Kim.S.Park和D.Won提出了一种带授权书的代理签名方案,简称KPW方案。其主要思想是代理签名者利用自己私钥和由原始签名者签名的授权书产生代理私钥来生成代理签名,其中授权书m w m_wmw是指包括原始签名者标识、代理签名者标识、代理权限的有效期、代理签名信息的范围等信息的文件。

除KPW代理签名方案之外,基于离散对数的代理签名方案还有1996年M.Mambo、K.Usuda 和 E.Okamoto 提出的MUO代理签名方案、1997年Petersen 和 Horster提出的PH代理签名方案等。将基于离散对数的代理签名思想移植到椭圆曲线密码体制中,又能够演变出多种基于椭圆曲线的代理签名方案。

5.2 盲签名

盲签名是D.Chaum于1982年首次提出的一种具有特殊性质的数字签名,这种签名要求签名者能够在不知道被签名文件内容的情况下对消息进行签名

即使签名者在以后看到了被签名的消息及其签名,签名者也不能判断出这个签名是他何时为谁生成的。直观上讲,这种签名的生成过程就像签名者闭着眼睛对消息签名一样,所以形象地称为“盲”数字签名。

由于盲签名解决了人们关注的匿名性问题,广泛应用于电子货币、电子投票、电子拍卖等应用中。

(1)盲签名分类

根据“盲”程度不同,盲签名方案通常分为强盲签名、弱盲签名、部分盲签名。

R ( m ) R(m)R(m)是将消息m mm盲化后得到的盲消息,S i g n ( R ( m ) ) Sign(R(m))Sign(R(m))是对盲消息R ( m ) R(m)R(m)的签名,S i g n ( m ) Sign(m)Sign(m)是去盲后得到的真实消息m mm的签名。

强盲签名指签名者无法建立S i g n ( R ( m ) ) Sign(R(m))Sign(R(m))S i g n ( m ) Sign(m)Sign(m)的联系的签名,也称为完全盲签名。

弱盲签名指签名者仅知道S i g n ( R ( m ) ) Sign(R(m))Sign(R(m))而不知道S i g n ( m ) Sign(m)Sign(m),但一但公开S i g n ( m ) Sign(m)Sign(m),签名者就可以建立两者间的联系,即签名者能把盲签名 S i g n ( R ( m ) ) Sign(R(m))Sign(R(m))的行为与消息m mm的内容关联起来。

部分盲签名的特殊性在于除了被签名的消息m mm外还包含由消息拥有者和签名者共同产生的消息m 1 m_1m1(包括消息m mm的范围、有效期等),在部分盲签名过程中,消息m 1 m_1m1一直是公开的,即盲化后签名为S i g n ( R ( m ) , m 1 ) Sign(R(m),m_1)Sign(R(m),m1),最终消息拥有者获得S i g n ( m , m 1 ) Sign(m,m_1)Sign(m,m1)

(2)盲签名实现步骤

盲签名方案中,消息的拥有者即需要盲签名服务的实体A称为用户,而提供盲签名服务的实体B称为签名者。当用户A需要签名者B对消息进行签名时,按下列操作步骤来实现:

  • 用户A对待签名的消息进行盲化处理,使得消息的具体内容对于签名者B而言是乱码,亦称盲消息;
  • 用户A将盲消息发送给签名者B
  • 签名者B对所收到的盲消息进行数字签名
  • 签名者B将盲消息及其签名一起交给用户A
  • 用户收到签名做去盲处理,即得到签名者B对原消息的签名并能够验证盲签名

5.3 多重数字签名

在数字签名应用中,有时需要多个用户对同一文件进行签名和认证。能够实现多个用户对同一文件进行签名的数字签名方案称为多重数字签名(Digital Multi-signature)方案

根据不同的签名过程,多重数字签名方案可分:

  • 有序多重数字签名(Se quential Multi-signature)方案
  • 广播多重数字签名(Broadcasting Multi-signa ture)方案

多重数字签名(Digital Multi-signature)方案包括消息发送者(Issuer)、消息签名者(Signers)和签名验证者(Verifier)。在广播多重签名方案中还包括签名收集者(Collector)。

有序多重数字签名方案中,消息发送者规定消息签名顺序,然后将消息发送到第一个签名者,除了第一个签名者外,每一位签名者收到签名消息后首先验证上一签名的有效性,如果签名有效,将签名消息发送到下一个签名者继续签名;如果签名无效,拒绝对消息签名,终止整个签名过程。当签名验证者收到签名消息后,验证签名的有效性。典型方案为ElGamal有序多重数字签名方案

广播多重数字签名方案中,消息发送者同时将消息发送给每一位消息签名者进行名,签名者将消息签名后消息发送到签名收集者,由收集者对签名消息进行整理并发送签名验证者,签名验证者验证多重签名的有效性。典型方案为Harn广播多重数字签名方案

5.4 群签名

1991年,Chaum和Heyst首次提出群签名(Group Signature)(组签名)方案。群签名方案允许组中合法用户以用户组的名义签名,具有签名者匿名,只有权威者才能辨认签名者身份等多个特点。一般来说,群签名的参与者由群成员(签名者)、**群管理员(GC,Group Center)签名接受者(签名验证者)**组成。

群在实际生活中有广泛的应用,如某公司董事会决定对某个职员进行处罚,并委托某个董事进行。该董事代表董事会对处罚相关事宜进行签名,需要使用群签名。这样,受罚者只知道处罚是董事会集体做出的决定,不会通过签名联系到具体办理的董事。若处罚出现争议,那么,董事会的董事长作为群管理员能够揭示签名董事的身份。

5.5 不可否认签名

普通数字签名可以复制且任何人都可验证其有效性,这对于公开性之类文件是可以的,但对一些文件如个人或公司信件、特别是有价值文件的签名,如果也可随意复制和验证,就会造成损失,这就需要不可否认签名。

不可否认签名本质的是在无签名者合作条件下不可能验证签名的有效性,从而可以防止他所签文件的复制或散布。这一性质使签名者可以控制产品的散发,在电子出版系统和知识产权保护中有所应用。

不可否认的签名由三个部分组成:签名算法、验证协议和不可否认算法

由于这种签名需要在签名者合作下才能验证,因此这会给签名者一种“否认”机会,即在不利签名者时签名者拒绝合作以否认他曾签署消息,不可否认算法就是防止签名者的“否认”。签名者也可利用不可否认算法向法庭或公众证明一个签名确实不是来自他的,如果签名者拒绝参与或者不配合执行签名验证协议,就表明这个签名就是由他签署的。

5.6 其他数字签名

为满足不同需求和应用,还有其他多种数据签名方案,如门限数字签名(Threshold Digital Signature)、失败——停止签名(Fail-Stop Signature)、一次性签名、条件签名、前向安全签名、变色龙签名(Chameleon Signature)、同时生效签名(Concurrent Signature)。

相关文章
|
3天前
|
安全 网络安全 区块链
软件体系结构 - 数字签名
软件体系结构 - 数字签名
18 1
|
3天前
|
机器学习/深度学习 算法 安全
密码学系列之六:公钥密码体制
密码学系列之六:公钥密码体制
|
3天前
|
安全 算法 量子技术
密码学系列之十:量子密码
密码学系列之十:量子密码
|
Rust 算法 数据安全/隐私保护
【密码学】一文读懂XTEA加密
本篇文章,我们来看一下上一次讲过的TEA加密算法的一个升级版XTEA, 相比于TEA, XTEA的安全性显然是更高的,其中的过程要比TEA稍微复杂一点点。
1034 0
【密码学】一文读懂XTEA加密
|
3天前
|
安全 算法 数据安全/隐私保护
密码学系列之八:密码协议
密码学系列之八:密码协议
|
3天前
|
人工智能 分布式计算 安全
【现代密码学】笔记1.2 -- 对称密钥加密、现代密码学的基本原则《introduction to modern cryphtography》现代密码学原理与协议
【现代密码学】笔记1.2 -- 对称密钥加密、现代密码学的基本原则《introduction to modern cryphtography》现代密码学原理与协议
118 0
|
3天前
|
机器学习/深度学习 安全 算法
【现代密码学】笔记9-10.3-- 公钥(非对称加密)、混合加密理论《introduction to modern cryphtography》
【现代密码学】笔记9-10.3-- 公钥(非对称加密)、混合加密理论《introduction to modern cryphtography》
40 0
|
算法 安全 数据安全/隐私保护
【密码学】 一篇文章讲透数字签名
数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。数字签名可以识别消息是否被篡改, 并验证消息的可靠性, 也可以防止否认。
462 0
【密码学】 一篇文章讲透数字签名
|
算法 数据安全/隐私保护
【密码学】密码学概述
每个人都有自己的秘密,如果不加密,在网上传输很容易被监听。如果涉及到金钱相关,密码泄露以后很容易造成损失。所以都会利用加密 cryptography 技术,保证信息的机密性 confidentiality。信息被加密以后变成了密文在网上传播,接收者拿到密文进行解密 cryptanalysis,解密以后就可以看到明文。对称密码 (symmetric cryptography)是指在加密和解密时使用同一密钥的方式。对应的加密方式是对称加密。目前广泛使用 AES。对称密码有多种别名,公共密钥密码(common-k
143 0
【密码学】密码学概述
|
算法 数据安全/隐私保护
数字签名技术
通过阅读本篇文章,你可以了解到如下知识: 1. 数字签名是什么 2. 数字签名的作用 3. 签名 和 验签的流程 4. RSA、RSA2 签名算法
262 0