公钥体系用于认证数据概述及其缺陷
RSA和ECC公钥密码体系除了用于给密钥加密以便传输之外,也可用于认证数据的出处,维护数据的完整性和不可否认性.如果甲方需要向乙方证明数据M的确出于甲方,甲可用私钥将M加密得到C,然后将M和C同时送给乙方乙方用甲方的公钥将C解密并将其与M对照.因为只有甲方拥有私钥,所以如果两者相等,则乙方可确认数据M的确出自甲方.甲方也可用上述方法向乙方证明自己的身份,他只需将数据M写成“我是甲”即可.
甲方欲使用公钥密码体系将密钥加密传递给乙方,首先需要知道乙方的公钥甲方欲使用公钥密码体系向乙方证明自己的身份,则乙方需要知道甲方的公钥.因为公钥不保密,所以公钥可经一般的电子邮件传递或在用户网页上公布.这样做简单易行,但却有一个问题,就是公钥的主人真伪难辨.攻击者可以伪装他人,引诱别人把攻击者自己的公钥当成他人的公钥.所以必须设计有效方法确认公钥的主人. 这种方法通常需要一个被各方信赖的机构的介入.比如,类似于使用互联网域名服务站查询IP地址,可以设立一个公钥服务中心用于查询用户的公钥.如果每个IP地址只有一把公钥,这个设想是容易做到的,但一个IP地址可能会有许多用户,而每个用户可能又有多把公钥,因此使用公钥中心查询用户公钥的做法将会产生大量额外通信,因为用户在每次应用中都将访问公钥服务中心查询收信方或送信方的公钥,使公钥中心成为通信瓶颈,故不切实际.
公钥证书
公钥确认方法中最简单、最常用也是最有效的手段是使用公钥证书,简记为PKC.公钥证书也称为数字证书,由公钥证书机构签发.证书机构是一个可信赖的政府机关或商业机构,简记为CA.它使用公钥体系,并将其公钥发布在CA网页上或网传给所有的用户.CA给每个用户的公钥签发一个公钥证书,它是一个被CA的私钥加密过的电子文件,包含用户名、用户公钥、证书签发日期、证书签发机构和证书有效日期等信息,注意:因为公钥证书较长,所以证书机构通常只对公钥证书的散列值加密,当甲方需要使用乙方的公钥时,甲方首先从乙方获得乙方的公钥证书,然后用CA的公钥将证书解密确认证书的确来自CA,并从公钥证书中获得乙方的公钥和其有效日期,CA的公钥可事先存在用户的机器上,因此用户无须在每次通信中都访问CA网站. 使用公钥证书有助于维护数据的不可否认性:如果乙方持有甲方用私钥认证的数据和甲方的公钥证书,则甲方便难以向他人否认数据出自甲方,除非甲方能够证明其私钥在数据认证前已经被盗.
数字签名
用数据认证码或散列数据认证码作为数字签名能有效地防止第三者伪造数据,但却不能防止通信双方自己伪造数据,也不能防止通信双方否认数据出于己方,这是因为通信双方拥有共享密钥,所以不能向他人证明数据到底来自哪一方.
在网络通信中认证数据最有效的方法是使用公钥密码系统和公钥证书.甲方为了认证一个即将送往乙方的数据M,首先求出数据的散列值h=H(M),然后 用其私钥
K
A
r
K{^r_A}
KAr?将散列值加密得E
K
A
r
(
h
)
_K{^r_A}(h)
K?Ar?(h),并用此作为甲方对该数据的数字签名.甲方将数据和其数字签名(M,E
K
A
r
(
h
)
_K{^r_A}(h)
K?Ar?(h))以及甲方的公钥证书CA(
K
A
u
K{^u_A}
KAu?)一同传送给乙方.乙方用公钥机构的公钥将甲方的公钥证书解密,得甲方的公钥
K
A
u
K{^u_A}
KAu?,然后用其将E
K
A
r
(
h
)
_K{^r_A}(h)
K?Ar?(h)解密得h,并验证是否h=H(M)而验证甲方数字签名的有效性.这是最常用的数字签名方式.
一个操盘手必须在众多投机者中找到主要市场,这些投机者只要有合适的机会可以为他的资本带来巨大的收益,他们就会甘愿承担比普通交易更高的风险。我自己从来不相信盲目的赌博。我可能大手笔操作,也可能只买进100股。但无论是哪种情形,我必须给自己足够的操作理由。
|