简述数字签名的原理。

简述数字签名的原理。
【正确答案】:答:签名是针对某一文件的,数字签名也必须针对某一电子文件,加上签名者个人的数字标记形成“数字签名”电子文件,这个电子文件从网上发送出去,接收方要能识别签名,具有认证性;从法律角度,具有不可否认性:发送方确实签署了,而接收方确实收到了。
数字签名用一般的加密方法是无法完成的。它的基本原理是:发送者A用自己的私钥KSA对消息M加密后,得密文c,B收到密文c后,用A的公钥KPA解密后,得消息M'。如果可得消息M',且M和M'一致,即KSA和KPA是一对密钥,M是经电加密的——说明M是经过A“签字”的,因为只有A有这个私钥KSA。而对于消息M,B可同时通过其他途径直接从A处得到。
上述的基本原理是严格的,但不“实用”,因为用双钥密码体制加密消息M是非常慢的。与单钥密码体制加密消息的速度相比,双钥的要慢1000倍以上。即使以后计算机的速度大幅度地提高,情况依然如此。因为为了防止破密,加密的复杂性和位数也会提高的。因此,在实际应用中,不是直接加密消息M,而是加密消息M的消息摘要H(M);消息摘要是很短的,用双钥密码体制加密它是很快的。消息用散列函数处理得到消息摘要,再用双钥密码体制的私钥加密就得到数字签名。这是实际使用的实现数字签名处理的方法。
归纳一下,数字签名实际使用原理是:消息M用散列函数H得到消息摘要h₁=H(M),然后发送方A用自己的双钥密码体制的私钥KSA对这个散列值进行加密:EKSA(h₁),来形成发送方A的数字签名。然后,这个数字签名将作为消息M的附件和消息M一起发送给消息接收方B。消息的接收方B首先把接收到的原始消息分成M'和EKSA(h₁)。从M'中计算出散列值h₂=H(M'),接着再用发送方的双钥密码体制的公钥KPA来对消息的数字签名进行解密DKPA(EKSA(h₁))得h₁。如果散列值h₁=h₂,那么接收方就能确认该数字签名是发送方A的,而且还可以确定此消息没有被修改过。