书信或文件是根据亲笔签名或印章来证明其真实性的。为了在计算机网络中传送的文电进行盖章,就要使用数字签名。
数字签名必须保证的三大特征:
a.报文鉴别:接收者能够核实发送者对报文的签名,也就是说接收者能够肯定和确认报文就是发送者发送的,其他人无法伪造报文。
b.报文完整性:接收者能够确信收的到数据和发送者发送的数据时完全一样的,没有被别人篡改。
c.不可否认:发送者事后不能抵赖对报文的签名。
公钥算法实现数字签名:
A用其私钥SKA对报文X进行D运算,得到某种不可读的密文,然后把这种密文发送给B。B为了核实签名,用A的公钥PKA进行E运算还原出明文X。
注:任何人用A的公钥PKA进行E运算后都可以得出A发送的明文,所以这种通信方式并非为了保密,而是为了进行签名和核实签名,即确认此明文的确是A发送的。
上述实现中
a.除A外没有人持有A的私钥PKA,所以除A外没有人能够产生这样的密文,满足报文鉴别
b.其他人如果对报文进行篡改,由于没有得到A的私钥,对报文的篡改就会导致密文无法被公钥PKA进行还原,即无法得到可读的明文,那么接收者就知道报文被篡改,满足了报文完整性。
c.若A要抵赖曾发送报文给B,B可以把得到的密文和解读出的明文X公示给第三公证人,第三公证人很容易用PKA去证实A确实发送X给B,满足了不可否认。
这三项特点的关键都在于没有其他人能够持有A的私钥SKA。
加解密和数字签名可以同时实现。