数字签名原理 发方A 收方B 消息 消息 消息 Hash函数 Hash函数 签名 签名 消息摘要 消息摘要 解密算法 相等? 加密算法 加密 消息摘要 签名有效 私钥A 公钥A 签名无效
数字签名原理 消息 Hash函数 消息摘要 发方A 相等? 收方B 加密算法 私钥A 签名 消息 加密的 消息摘要 签名 消息 Hash函数 消息摘要 解密算法 公钥A 签名有效 y 签名无效 n
数字签名的实现方法 ■用对称加密算法进行数字签名 用非对称加密算法进行数字签名
数字签名的实现方法 ◼ 用对称加密算法进行数字签名 ◼ 用非对称加密算法进行数字签名
用对称加密算法进行数字签名 (1/2) ■Hash函数 所谓HaSh函数,即对于任意长度的信息m,经过哈希函数运算后, 压缩成固定长度的数,比如64比特,要求满足: (1)已知哈希函数的输出,要求它的输入是困难的,即已知 C=Hash(m,求m是困难的。 (2)已知m,计算 Hash(m)是容易的。 (3)已知C1=Hash(m,构造m使 Hash (m2)=c1是困难的。 (4)c=Hash(m,c的每一比特都与m的每一比特相关,并有高敏感 性。即每改变m的一比特,都将对c产生明显影响。 (5)作为一种数字签名,还要求哈希函数除了信息m自身之外,应 该基于发信方的秘密信息对信息m进行确认
用对称加密算法进行数字签名 (1/2) ◼ Hash函数 ◼ 所谓Hash函数,即对于任意长度的信息m,经过哈希函数运算后, 压缩成固定长度的数,比如64比特,要求满足: ◼ (1)已知哈希函数的输出,要求它的输入是困难的,即已知 c=Hash(m),求m是困难的。 ◼ (2)已知m,计算Hash(m)是容易的。 ◼ (3)已知C1=Hash(m1),构造m2使Hash(m2)=C1是困难的。 ◼ (4)c=Hash(m),c的每一比特都与m的每一比特相关,并有高敏感 性。即每改变m的一比特,都将对c产生明显影响。 ◼ (5)作为一种数字签名,还要求哈希函数除了信息m自身之外,应 该基于发信方的秘密信息对信息m进行确认
用对称加密算法进行数字签名 (Hash签名)(2/2) 该签名不属于强计算密集型算法,应用较广泛 ■使用这种较快Hash算法,可以降低服务器资源 的消耗减轻中央服务器的负荷 ■Hash的主要局限是接收方必须持有用户密钥的 副本以检验签名,因为双方都知道生成签名的 密钥,较容易攻破,存在伪造签名的可能
用对称加密算法进行数字签名 (Hash签名 ) (2/2) ◼ 该签名不属于强计算密集型算法,应用较广泛 ◼ 使用这种较快Hash算法,可以降低服务器资源 的消耗,减轻中央服务器的负荷 ◼ Hash的主要局限是接收方必须持有用户密钥的 副本以检验签名, 因为双方都知道生成签名的 密钥,较容易攻破,存在伪造签名的可能
用非对称加密算法进行数字签名和验证 1发送方首先用公开的单向函数对报文进行一次变换, 得到数字签名,然后利用私有密钥对数字签名进行加 密后附在报文之后一同发出。 2接收方用发送方的公开密钥对数字签名进行解密变换 得到一个数字签名的明文。发送方的公钥是由一个可 信赖的技术管理机构即验证机构(CA: Certification Authority)发布的。 3接收方将得到的明文通过单向函数进行计算,同样得 到一个数字签名,再将两个数字签名进行对比,如果 相同,则证明签名有效,否则无效
用非对称加密算法进行数字签名和验证 1 发送方首先用公开的单向函数对报文进行一次变换, 得到数字签名,然后利用私有密钥对数字签名进行加 密后附在报文之后一同发出。 2 接收方用发送方的公开密钥对数字签名进行解密变换, 得到一个数字签名的明文。发送方的公钥是由一个可 信赖的技术管理机构即验证机构(CA: Certification Authority)发布的。 3 接收方将得到的明文通过单向函数进行计算,同样得 到一个数字签名,再将两个数字签名进行对比,如果 相同,则证明签名有效,否则无效