发送方A用自己的秘密密钥签名并用接受者B的公开密钥加密,B收到报文后用自己的秘密密钥解密,再用A的公开密钥核实签名
那看你想对什么做数字签名了。
是文件还是传输的数据?
可以用openssl相关的工具实现,也可以自己写程序实现。
加密也一样。
几种典型的普通签名方案
1、RSA公钥密码签名方案
RSA是使用最广泛的公钥密码系统,它可以用在保密性和数字签名中。1977 年由Rivest ,Shamir 和Adleman 首次实现了著名的RSA 密码系统。一个最简单的RSA的签名方案就是用私钥加密用公钥验证。
(1)产生两个大素数p和q
(2)计算n=pq和Φ(n)=(p-1)(q-1)
(3) ed1(mod (Φ(n)). 值n和e公开,值p,q,d保密
(4)签名sig(x)= modn
验证ver(x,y)=真,当且仅当x = (mod n).
安全性讨论:RSA签名算法的安全性是基于整数分解问题的困难性。两种对它 的攻击方法是:数学攻击,对两个素数乘积的因子分解;定时攻击,这个依赖于解密算法的运行时间。RSA算法对选择密文攻击比较脆弱,因此在实际运用过程中,要先利用一个单向散列(one-way hash)函数对消息进行散列(hash)处理,尽管Hash算法是公开的,但要根据Hash值计算出明文在统计学上看是不可能的。
应用前景:RSA是较早开始使用的公钥密码体制,经受了多种攻击的
检验,但没有一种对其产生致命的影响,因此RSA的安全性是较高的。
RSA被用于SET协议的CA证书当中,可用于手机签名。RSA最大的缺
点在于RSA需要的密钥长度太长,运算的时间较长,而且随着因式分
解技术的发展,要获得较高的安全性,所要求的密钥长度就要更长,
这对一些密钥存储空间较小,或者处理器较慢的机器是不利的。目前还是RSA在公钥密码体制当中使用得最多。
2、ELgamal签名方案
ELgamal 数字签名方案是ELGamal等人于1985年提出的基于纯数字签名目的的签名方案,是继RSA之后的最著名的数字签名方案.该方法的修正形式已被美国NIST作为数字签名标准(DSS),应用较为广泛。
参数 :p 是一大素数.g是Zp的生成元。私钥x,x
签名 : 签名方选择一个随机数k,k
验证 :如果gm=YrRsmodp 成立,则认可签名(r,s)有效。否则.认为无效签名。
安全性讨论:ELGamal签名方案的安全性基于离散对数的难求解性。在实际使用中不能泄露随机数k,不能使用相同的k对两个不同消息进行签名,否则很容易泄漏私钥。
应用前景:
3、椭圆曲线密码签名方案
椭圆曲线密码体系,即基于椭圆曲线离散对数问题的各种公钥密码制是利用有限域上的椭圆曲线有限群代替基于离散对数问题的密码体制中的有限循环群而得到的.一类新型密码体制1985年 N.Koblitz和V.Miller第 一次提出将椭圆曲线应用到公钥加密算法中。,椭圆曲线密码体制逐步成为一个十分令人感兴趣的密码学分支,在椭圆曲线上实现各种已知的密码体制已是公钥密码学领域的一个重要课题.
安全性分析:。椭圆曲线密码体制的安全性是基于有限域上椭圆曲线离散对数问题的困难性,有限域上椭圆曲线离散对数问题比有限域上的离散对数问题要困难得多,它是一个很困难的数字问题,因此椭圆曲线加密体制的安全性很高。目前求解ECDLP(椭圆曲线上的离散对数问题)最有效的方法是Pollard-p方法.