数字签名技术
1)对称加密与非对称加密
对称加密:对文件的加密和解密采用的都是同一个密钥,有IDEA和DES两种加密算法
非对称加密:有一对公钥和私钥 如果我们使用公钥加密,必须得用私钥解密;如果使用私钥加密,则必须使用公钥解密。
当使用的加密和解密式两种不同的密钥 我们称之为非对称加密
2)信息摘要:
对数据进行处理,得到一段固定长度的结果。
一般在进行数字签名的时候我们先对文件使用HASH算法计算其信息摘要,然后对该摘要进行数字签名。
信息摘要特点有:
1.输出长度固定,所以输出长度与输入长度无关
2. 不可逆,输出数据无法推倒出输入数据
3.对输入数据很敏感,对于极小的变化输出数据也会发生明显的变化
4.防碰撞 用不同数据得到相同结果的可能性极低
3) 数字签名原理
我们可以用一张图来弄懂数字签名的原理.对于原报文.我们计算完摘要之后会把它用私钥进行加密 然后 把原报文.公钥和机密之后的数字签名传给另一方 另一方需要得到摘要 它的对比方式是.
对于数字签名使用公钥解密得到加密前的摘要 在对原报文采用原先得到摘要时的单项哈希算法来得到摘要 从而对比摘要是否被掉包或是被更改.
数字签名算法——RSA算法(非对称加密)
RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。
RSA算法支持公钥加密、私钥解密以及私钥加密、公钥解密。
公钥密码体制即公开密钥密码体制,也称非对称密码体制或双密钥密码体制。1978年由美国麻省理工学院的Rivest、Shamir和Adleman共同提出了第一个有效的公钥密码体制——RSA公钥密码体制,目前RSA仍然应用于网络银行、电子贸易等许多电子商务领域。
一、RSA公钥密码原理
1. 参数定义与密钥生成
(1)用户首先秘密选择两个大素数p,q,然后计算出N=pq。
(2)用户计算出p-1和q-1的最小公倍数n,然后随机选择一个整数e,满足1<e<n,且e和n互素,将其作为加密密钥,有时也称e为加密指数。
(3)然后用户利用加密密钥e和n可容易地计算出脱密密钥d,使得:ed (mod n)=1,有时也称d为脱密指数。
(4)用户将加密密钥及大合数(e,N)公布为其公开参数,而将两个大素数p,q及脱密密钥d严格保密作为秘密参数。
2. 加密、解密公式
设明文为m,密文为c,E表示加密算法,D表示脱密算法,于是有:
加密:c=E(m)=m^e(mod N)
解密:m=D(c)=c^d(mod N)
RSA算法用C++实现:之后显示的结果
手写大数类 实现 +-*/% << >>等运算符号重载
然后依照RSA加密算法来实现
根据上面的算法
加密:c=E(m)=m^e(mod N)
解密:m=D(c)=c^d(mod N)
我们应该实现大数类的幂运算和求余数运算
幂运算可以用快速幂算法运算 也就是二进制乘法运算
算法实现效果图如下: 代码:
URL:
https://github.com/KevinJey/RSA-Algorithm
再次简述以下实现过程:
实现过程:
1 随意选择两个大的质数p和q,p不等于q,计算N=p*q。
2 根据欧拉函数,求得r = (p-1)(q-1)
3 选择一个小于 r 的整数 e,求得 e 关于模 r 的模反元素,命名为d。(模反元素存在,当且仅当e与r互质)
将 p 和 q 的记录销毁。
数字签名算法 DSA
DSA算法不能用于加密和解密 也不能进行密钥交换 只能用于签名 所以它比RSA要快很多 安全性于RSA差不多
数字签名算法和公钥加密算法的区别是什么呢?
签名算法用来确保信息发布人的身份和信息的完整性,不能用来做加密传输,所以必须伴着信息原文或者信息摘要一起发送和公布才能被验证。RSA是公钥加密体系,可以用来加密传输,也可以实现签名验证。
数字签名算法——ECDSA
椭圆曲线数字签名算法ECDSA是使用椭圆曲线密码ECC对数字签名算法DSA的模拟。
ECC于RSA相比有以下的优点:
1) 同样的密钥长度下,安全性更高。
2) 计算量小 速度快 再处理私钥的速度上远比RSA DSA要快很多
3) 存储空间占用小 ECC的密钥尺寸和系统参数比RSA DSA要小很多 所以占用的存储空间要小得多
4) 低带宽要求
比特比所使用的数字签名算法就是椭圆曲线数字签名算法
对称加密算法
OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES算法里面不仅仅是常用的DES算法,还支持三个密钥和两个密钥3DES算法。
非对称加密算法
OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用户密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA算法则一般只用于数字签名。
当然也有ECC ECDSA两种数字椭圆曲线数字签名算法
数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发
送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
数字签名是个加密的过程,数字签名验证是个解密的过程。
摘要命令
OPENSSL实现了五种信息摘要算法,分别是:MD2 MD5 MDC2 SHA RIPEMD
sha算法包括了sha1和sha
摘要的作用一般有:
1.确认数据完整性 2.保存密码,有些密码是直接再数据库中采用MD5保存的
另外摘要的一个重要特性——摘要不可逆
对文件1.txt使用求md5摘要:
生成密码和BASE64
生成密码需要使用的标准命令为passwd用法如下:
-1
:使用
md5
加密算法
生成密钥对
使用rsa
openssl rsa -in 1.txt -out 567.pub -pubont
创建证书
使用openssl工具创建CA证书和申请证书时,需要先查看配置文件,配置文件中对证书存放的位置等相关信息都有明确的定义 具体可以参考
/etc /pki /tls /openssl.cnf 文件
先创建为CA所提供的目录文件
指明证书的开始编号
umask 077表示只用root用户才有权限对其进行操作
openssl genrsa -out PATH bitnum
表示能够在指定路径下生成 4096为的私钥
创建证书openssl req -new -x509 -key PATH -out DESTPATH -days 3650
生成自签证书
命令中用到的选项解释:
-new:表示生成一个新证书签署请求
-x509:专用于CA生成自签证书,如果不是自签证书则不需要此项
-key:生成请求时用到的私钥文件
-out:证书的保存路径
-days:证书的有效期限,单位是day(天),默认是365天
颁发证书
在需要使用证书的主机上生成证书请求
生成私钥→ 生成证书签署请求并填写信息
CA服务器拿到证书签署请求后颁发证书
当然也可以通过openssl CA -revoke PATH 以此吊销证书