-
Notifications
You must be signed in to change notification settings - Fork 3
/
chapter01.tex
121 lines (61 loc) · 6.03 KB
/
chapter01.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
\section{基本概念}
\subsection{签名方案定义}
签名方案也叫数字签名。签名方案有别与传统的手写签名,一个写在文件里的传统的手写签名用于确定需要对此文件负责的那个人,生活中手写签名无处不在,例如签署合同、签收快递或者银行开户等等。签名方案市一种以电子形式存储的签名方法,经过数字签名后的文件能够通过网络传输,数字签名是传统签名的数字化,传统手写签名容易被模仿伪造,比较不安全,而数字签名被绑在被签文件上,然后任何一个人都可以使用公开的验证算法对此数字签名进行验证,一个安全有效的签名方案可以阻止伪造签名的可能性。一个数字签名通常由两部种互补的算法组成,签名算法跟验证算法。A拥有一个私有的密钥$k$,用$k$和签名算法$sig_k$来对消息$m$签名,签名后的消息$sig_k(m)$可以使用一个公开的验证算法$ver_y$来对消息进行验证,验证通过说明$sig_k(m)$是A签名的文件。
一个签名方案的定义$(P,A,R,S,V)$:
(1)P是消息集合。
(2)A是签名集合。
(3)R为密钥空间。
(4)对每一个$K \in R$,都有签名算法$sig_K \in S$和一个与之对应的验证算法$ver_k \in V$。$x \in P$, $y \in A$组成的$(x,y)$为签名消息。每一个消息$(x,y)$、$sig_K:P→A$和$ver_K:P×A→{ture,false}$都满足:$ver_K(x,y)$:if $y=sig_K(x)$ ture else false。
数字签名应满足以下要求:
(1) 能与所签文件绑定
(2) 不可抵赖性,签名着不能否认自己的签名
(3) 收方能够验证或确认发方的签名
(4) 签名不能被伪造
\subsection{代理签名定义}
在现实世界里,人们经常需要把自己的某些权力委托给一些可靠的代理人,让他们代表自己去行使一些权力。在这些可以委托的权力当中就包括了人们的签名权。委托签名的古老传统 的方法是使用个人印章,因为个人印章可以在人们之间灵活地传递。而数字签名是手写签名的电子数字化的形式,但是早前的时间里,数字签名并不能提供代理签名的功能。 1996年,Mambo、Usuda和Okamoto提出了代理签名的概念,并提供了一种解决这个问题的方法。由于代理签名在现实应用中起着重要作用,所以当代理签名方法一提出,便受到广泛的关注,国内外学者对其进行了深入的探讨与研究。
代理签名的方案应该满足以下4条基本特征:
1) 不可伪造性:只有原始签名者和代理签名者才可以执行有效的签名操作。
2) 可验证性:验证者收到经过代理签名操作的消息后,可以鉴定出此消息的签名是原始签名者认可的有效签名。
3) 不可否认性:代理签名者对一个消息进行签名后,他就不能向任何人否认他对此消息行使过代理签名操作。
4) 可区分性:对一份签名后的消息,所有人都可以分辨出对此份消息进行签名者的具体身份。
如果严格按照以上所有特征去检验,现有的所有代理签名方案都是有缺点不完美的。因此,设计一个安全性高又实用的代理签名方案有待密码研究学着的进一步研究。
\subsection{elgamal签名方案}
本方案来源于维基百科,是由Standford大学的 Tather ElGamal提出。Elgamal签名方案是一种数字签名算法,它的安全性是基于计算离散对数的难度,该算法被广泛应用,该方案由三个部分组成:
\subsubsection{系统参数初始化}
1)h是一个单向哈希函数。
2)P是一个大素数。
3)g是GF(p)的本元原。
\subsubsection{密钥生成}
1)签名方选取私钥$x$,$1<x<p-1$。
2)计算公钥$y=g \textasciicircum x$ $mod(p)$。
3)得到公钥为$(y,g,p)$,存放于公用文件中。
4)私有密钥为$x$,签名者自己保留。
\subsubsection{签名生成}
要对一个消息m签名,签名者要执行下列步骤:
1)随机生成一个$k$,$1<k<p-1$并且$gcd(k,p-1)=1$;
2)计算$r=g \textasciicircum k$ $mod(p)$;
3)计算$s=(h(m)-rx)k \textasciicircum -1 (mod$ $p-1)$;
4)$(r,s)$即为消息$m$的签名。签名者每次签名都重复这些步骤。
\subsubsection{签名验证}
消息m的签名$(r,s)$的验证过程如下:
1)$0<r<p,0<s<p-1$;
2)计算$temp1=g \textasciicircum h(m)$;
3)计算$temp2=y \textasciicircum r * r \textasciicircum s(mod$ $p)$;
4)$Temp1=temp2$;
5)若满足以上所有条件,则接受签名,否则拒接。
\subsubsection{签名验证的正确性}
$h(m)=xr+sk(mod$ $p-1)$,由费马小定理:
$g \textasciicircum h(m)=g\textasciicircum xr*g \textasciicircum ks=((g\textasciicircum x)\textasciicircum r)*((g\textasciicircum k)\textasciicircum s)=y\textasciicircum r*r\textasciicircum s(mod$ $p)$。
\subsection{基于Elgamal算法的代理签名方案}
本处知识来源于参考文献[9]创始人:蔡庆华,孙全尚。这里假设授权签名者为A,代理签名者为B。
\subsubsection{授权过程\&代理密钥对的生成}
(1) A选择一随机数$k$;
(2) 计算$K=g\textasciicircum k$ $mod$ $p$;
(3) 计算$d=x+kK$ $mod$ $p-1$;
(4) 将$(d,K)$秘密共享给B;
(5) B收到$(d,K)$验证$g\textasciicircum d=y*K\textasciicircum k$ $mod$ $p$,若等式成立则$(d,K)$是一个有效的代理密钥,反之B拒绝此密钥。
\subsubsection{代理签名的生成过程}
B使用使用代理密钥d对消息进行Elgamal签名得到签名$(R,s)$,$(R,s)$就是B代表A对消息生成的代理签名。
\subsubsection{方案的安全性分析}
此代理签名方案具有不可伪造性,除了授权签名者和代理签名者外,别人都无法伪造一个有效的代理签名;可验证性:任何人可验证该代理签名是不是为有效签名。
但同时此代理签名方案也存在着一些不足之处,代理签名者可不承认自己曾对消息进行过的代理签名操作,因为授权签名者和代理签名者都可以进行一样的代理签名。