密码学作业ch10
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10.1公钥密码学有关密钥分配的两种不同用途是什么?
答:公开密钥加密也称为非对称密钥加密,是由Diffie与Hellmann 两位学者所是出的单向函数与单向暗门函数为基础,为发讯与收讯的两方建立加密金钥。
公钥加密的另一用途是身份验证:用私钥加密的信息,可以用公钥拷贝对其解密。
10.2列出4种公钥分配方法。
答:1、临时锁定公钥/自由的扩散\PGO的公钥环
2、公开的目录服务(在线方式)
3、公钥授权
4、通过证书中心CA(离线中心方式)
10.3公钥目录的主要成分是什么?
答:1、公开的目录服务
目录的维护得由信得过的机构执行
每个用户在目录里有意向(身份信息,其公钥)
面对面的审核和注册
可以更新或废止
提供网络的访问手段,可公开查询
2、目录中新的安全负担太重也是性能瓶颈
仍存在假冒问题
10.4什么是公钥证书?
答:公钥证书,通常简称为证书,是一种数字签名的声明,它将公钥的值绑定到持有对应私钥的个人、设备或服务的身份。
大多数普通用途的证书基于X.509v3证书标准。
10.5使用公钥证书方案应满足那些要求?
答:CA是受信任的权威机构,有一对公钥私钥
每个用户自己产生一对公钥和私钥,并把公钥交给CA申请证书CA以某种可靠的方式核对申请人的身份及其公钥,并用自己的私钥“签发”证书
证书主要内容有:用户公钥持有人签和签发人的信息用户有效期间签名等。
X.509是公钥证书的格式标准。
证书在需通信是临时交换,并用CA的公要验证
有了CA签名保证的用户共要,则可进行下一步的身份验证和交换会话密钥等。
10.6简要说明Diffie-Hellman密钥交换。
答:首次发表的公开密钥算法出现在Diffie和Hellman的论文中,这篇影响深远的论文奠定了公开密钥密码编码学。
由于该算法本身限于密钥交换的用途,被许多商用产品用作密钥交换技术,因此该算法通常称之为Diffie-Hellman密钥交换。
这种密钥交换技术的目的在于使得两个用户安全地交换一个秘密密钥以便用于以后的报文加密。
Diffie-Hellman密钥交换算法的有效性依赖于计算离散对数的难度。
简言之,可以如下定义离散对数:首先定义一个素数p的原根,为其各次幂产生从1到p-1的所有整数根,也就是说,如果a是素数p的一个原根,那么数值
amodp,a2modp,...,ap-1modp
是各不相同的整数,并且以某种排列方式组成了从1到p-1的所有整数。
对于一个整数b和素数p的一个原根a,可以找到惟一的指数i,使得b=aimodp其中0≤i≤(p-1)
指数i称为b的以a为基数的模p的离散对数或者指数。
该值被记为inda,p(b)。
基于此背景知识,可以定义Diffie-Hellman密钥交换算法。
该算法描述如下:
1、有两个全局公开的参数,一个素数q和一个整数 , 是q 的一个原根。
2、假设用户A和B希望交换一个密钥,用户A选择一个作为私有密钥的随机数XA<q,并计算公开密钥YA= XAmodq。
A对XA的值保密存放而使YA能被B公开获得。
类似地,用户B选择一个私有的随机数XB<q,并计算公开密钥YB= XBmodq。
B对XB的值保密存放而使YB能被A公开获得。
3、用户A产生共享秘密密钥的计算方式是K=(YB)XAmodq。
同样,用户B产生共享秘密密钥的计算是K=(YA)XBmodq。
这两个计算产生
相同的结果:
K=(YB)XAmodq
=( XBmodq)XAmodq
=( XB)XAmodq(根据取模运算规则得到)
= XBXAmodq
=( XA)XBmodq
=( XAmodq)XBmodq
=(YA)XBmodq
因此相当于双方已经交换了一个相同的秘密密钥。
4、因为XA和XB是保密的,一个敌对方可以利用的参数只有q、 、YA和YB。
因而敌对方被迫取离散对数来确定密钥。
例如,要获取用户B的秘密密钥,敌对方必须先计算
XB=ind ,q(YB)
然后再使用用户B采用的同样方法计算其秘密密钥K。
Diffie-Hellman密钥交换算法的安全性依赖于这样一个事实:虽然计算以一个素数为模的指数相对容易,但计算离散对数却很困难。
对于大的素数,计算出离散对数几乎是不可能的。
下面给出例子。
密钥交换基于素数q=97和97的一个原根 =5。
A和B分别选择私有密钥XA=36和XB=58。
每人计算其公开密钥YA= 36=50mod97
YB= 58=44mod97
在他们相互获取了公开密钥之后,各自通过计算得到双方共享的
秘密密钥如下:
K=(YB)XAmod97=4436=75mod97
K=(YA)XBmod97=5058=75mod97
从|50,44|出发,攻击者要计算出75很不容易。
10.7什么是椭圆曲线?
答:椭圆曲线密码学(ECC,Ellipticcurvecryptography)是基于椭圆曲线数学的一种公钥密码的方法。
椭圆曲线在密码学中的使用是在1985年由NealKoblitz和VictorMiller分别独立提出的。
ECC的主要优势是在某些情况下它比其他的方法使用更小的密钥——比如RSA——提供相当的或更高等级的安全。
ECC的另一个优势是可以定义群之间的双线性映射,基于Weil对或是Tate对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。
不过一个缺点是加密和解密操作的实现比其他机制花费的时间长。
椭圆曲线密码学的许多形式有稍微的不同,所有的都依赖于被广泛承认的解决椭圆曲线离散对数问题的困难性上,对应有限域上椭圆曲线的群。
对椭圆曲线来说最流行的有限域是以素数为模的整数域(参见模运算)<math>GF(p)</math>,或是特征为2的伽罗华域GF(2m)。
後者在专门的硬件实现上计算更为有效,而前者通常在通用处理器上更为有效。
专利的问题也是相关的。
一些其他素数的伽罗华域的大小和能力也已经提出了,但被密码专家认为有一点问题。
10.8什么是椭圆曲线的零点?
答:若椭圆曲线上的三个点同在一条直线上,则它们的和为O(称为无穷远点或零点的元素)。
从这个定义出发我们可以定义椭圆曲线加法的运算规则:
1.O是加法的单位元。
这样有O=-O;对椭圆曲线上的任何一点P,有P+O=P。
2.一条垂直的线与椭圆曲线相交于两点,这两点具有相同的x 坐标,设为P1(x,y)和P2(x,-y)。
这条直线与曲线也在无穷远点相交,因此P1+P2=O且P1=-P2,因此一个点的负元是具有相同x坐标和相反的y坐标的点。
图1说明了这一情形。
3.要计算x坐标不相同的两点Q和R之和,则在Q和R间作一条直线并找出第三个交点P1,显然存在有唯一的交点P1(除非这条直线在Q或R处与该椭圆曲线相切,此时我们取P1=Q或P1=R),因此Q+R+P1=O,从而Q+R=-P1。
图1说明了这种情形。
4.要计算Q的两倍,则作一条切线并找出另一交点S,那么Q +Q=2Q=-S
10.9椭圆曲线上同在一条直线上的三个点的和是什么?
答:若椭圆曲线上的三个点同在一条直线上,则它们的和为O(称为无穷远点或零点的元素)。