密码学 (第十二讲) 数字签名(2) 张焕国 武汉大学计算机学院
密 码 学 (第十二讲) 数字签名(2) 张焕国 武汉大学计算机学院
目录 1、密码学的基本概念 2、古典密码 3、数据加密标准(DES) 4、高级数据加密标准(AES) 5、中国商用密码(SMS4) 6、分组密码的应用技术 7、序列密码 8、习题课:复习对称密码 9、公开密钥密码(1)
目 录 1、密码学的基本概念 2、古典密码 3、数据加密标准(DES 加密标准(DES) 4、高级数据加密标准( 数据加密标准(AES) 5、中国商用密码(SMS4 商用密码(SMS4) 6、分组密码的应用技术 密码的应用技术 7、序列密码 8、习题课:复习对称密码 课:复习对称密码 9、公开密钥密码(1)
目录 10、公开密钥密码(2) 11、数字签名(1) 12、数字签名(2) 13、HASH函数 14、认证 15、密钥管理 16、PKI技术 17、习题课:复习公钥密码 18、总复习/检查:综合实验
目 录 10、公开密钥密码( 公开密钥密码(2) 11、数字签名(1) 12、数字签名(2) 13、HASH函数 14、认证 15、密钥管理 16、PKI技术 17、习题课:复习公钥密码 题课:复习公钥密码 18、总复习/检查:综合实验
、利用 ELGamal密码实现数字签名 2、利用 ELGamal密码实现数字签名: )密钥选择 选P是一个大素数,p1有大素数因子,a 是一个模的本原元,将D和a公开。 0用户随机地选择一个整数x作为自己的秘 密的解密钥,1(x≤p2。 计算y= ax mod p,取y为自己的么开 的加密钥
三、利用ELGamal密码实现数字签名 2、利用ELGamal密码实现数字签名 密码实现数字签名: ⑴密钥选择 • 选P是一个大素数,p-1有大素数因子,α 是一个模p的本原元,将p和α公开。 • 用户随机地选择一个整数 随机地选择一个整数x作为自己的秘 密的解密钥,1<x≤p-2 。 • 计算 y≡αx mod p,取y 为自己的公开 的加密钥
、利用 ELGamal密码实现数字签名 (2)产生签名 设明文消息m加签名,0≤m≤-1,其签名过程如 下 用户A随机地选择一个整数k,1k(-1,且 (k,p-1)=1 计算r= ak mod p 计算s=(m-xr)k1modp-1 取(r,s)作为m的签名,并以m,r,S的形式 发给用户B mrs
三、利用ELGamal密码实现数字签名 ⑵ 产生签名 设明文消息m加签名,0≤m≤p-1,其签名过程如 下: • 用户A随机地选择一个整数 随机地选择一个整数 k,1的形式 发给用户B。 m r s
、利用 ELGamal密码实现数字签名 (3)验证签名 用户B接收:<mr,s 用户B用A的公钥y验证:a= yrs mod p, 是否成立,若成立则签名为真,否则签名为假。 签名的可验证性可证明如下: 因为s=(m-xr)k1modp-1, 所以m=xr+ ks mod p-, a am= axrtks=(arr(ak)s=ytr mod p 放签名可验证
三、利用ELGamal密码实现数字签名 ⑶ 验证签名 • 用户B接收: • 用户B用A的公钥y验证:αm =yr rs mod p, 是否成立,若成立则签名为真 若成立则签名为真,否则签名为假。 • 签名的可验证性可证明如下: 因为s=(m-xr)k-1 mod p-1, 所以 m=xr +ks mod p-1, 故 αm = αxr+ks = (αx )r (αk )s =yr rs mod p , 故签名可验证
、利用 ELGamal密码实现数字签名 (3)验证签名 安全性 0从公开密钥求私钥是离款矿数问题。 p-1要有大素数因子否则易受攻击。 为了安全,随机数k应当是一次性的。否 则时间一长,k将可能泄露。因为, X=(m-ks)rl mod p-1 如果知道了m,便可求出保密的解密钥
三、利用ELGamal密码实现数字签名 ⑶ 验证签名 • 安全性 • 从公开密钥求私钥是离散对数问题 钥求私钥是离散对数问题。 • p-1要有大素数因子 要有大素数因子,否则易受攻击。 • 为了安全,随机数k应当是一次性的 应当是一次性的。否 则时间一长,k将可能泄露。因为, x=(m-ks)r-1 mod p-1, 如果知道了m,便可求出保密的解密钥 便可求出保密的解密钥
、利用 ELGamal密码实现数字签名 (3)验证签名 安全性 如果k重复使用,如用签名m和m2于是 m,=xr+ks, mod p-1 m2=xr+ks, mod p-1 于是,(31-s2)k=(m1-m)modp-1 如果知道了m和m,便可求出k进而求出保密的解密钥。 此可知,不要随便给别签名。 不要直接对加签名,历是对 HASH(m)签名
三、利用ELGamal密码实现数字签名 ⑶ 验证签名 • 安全性 • 如果k重复使用,如用k签名m1和m2。于是, m1=xr+ks1 mod p-1, m2=xr+ks2 mod p-1, 于是,(s1-s2)k=(m1- m2) mod p-1 如果知道了m1和m2,便可求出k,进而求出保密的解密钥 进而求出保密的解密钥。 • 由此可知,不要随便给别人签名 不要随便给别人签名。 • 不要直接对m签名,而是对HASH(m) HASH(m)签名
、利用 ELGamal密码实现数字签名 3、 ELGamal密码签名的应用 美国数字签名标准(DSS)的签名算法 DSA是它的一种交形。 安全,方便。 0缺点:由于取(r,s)作为m的签名,所 以数字签名的长度是明文的两倍。数据 扩张严重
三、利用ELGamal密码实现数字签名 3、 ELGamal密码签名的应用 • 美国数字签名标准(DSS)的签名算法 DSA是它的一种变形。 它的一种变形。 • 安全,方便。 • 缺点:由于取(r,s)作为m的签名,所 以数字签名的长度是明文的两倍。数据 名的长度是明文的两倍。数据 扩张严重
四、利用椭圆曲线密码实现数字签名 个椭圆曲线密码由下面的六元组描述 T=(p, a, b, G,n,h) 其中,D为大于3素数,p确定了有限域GF (p);元素a2b∈GF(,a和b确定了椭 圆曲线;G为循环子群的生成元,n为素 数且为生成元G的阶,G和n确定了循环子 群B yxx'taxtb mod
四、利用椭圆曲线密码实现数字签名 椭圆曲线密码实现数字签名 • 一个椭圆曲线密码由下面的六元组描述: T= 其中,p为大于3素数,p确定了有限域GF (p);元素a,b∈GF(p),a a,b∈GF(p),a和b确定了椭 圆曲线;G为循环子群E1的生成元,n为素 数且为生成元G的阶,G和n确定了循环子 群E1。 y2=x3+ax+b mod p