什么是对称加密(Symmetric Key Encryption)?
对称加密采用了对称密码编码技术,它的特点是加密和解密使用相同的密钥,用这个密钥都能去加密或解密 。
基本过程:
甲方(主导方或者服务器方)生成加密密钥,将密钥私下共享给乙方(客户方或者受众方),当甲方或者乙方用密文信息交换时,均用此钥将明文加密生成密文或者密文解密生成明文
常见的对称加密算法:
DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES
常用的对称加密算法:
AES、DES
生成密钥的算法公开、计算量小、加密速度快、加密效率高、密钥较短
一方面:双方共同的密钥,有一方密钥被窃取,双方都影响。另一方面:如果为每个客户都生成不同密钥,则密钥数量巨大,密钥管理有压力。
应用场景:
登录信息用户名和密码加密、传输加密、指令加密(如扣款、下单操作)
非对称加密
什么是非对称加密(Asymmetric Key Encryption)?
非对称加密算法需要一对密钥(两个密钥):公开密钥(publickey)和私有密钥(privatekey)(简称公钥,私钥)。公开密钥与私有密钥生成时是一对,用公钥加密只能是对应的私钥解密,同理用私钥加密只能用对应的公钥解密。
基本过程:
甲方(主导方或者服务器方)生成一对密钥(也就是公钥和私钥)并将其中的一把公用密钥向其它方公开或者私下共享;得到该公用密钥的乙方使用该公钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把对应的私钥对加密后的信息进行解密。相当于甲方和乙方各持一把钥匙。此时乙方可以是一“人”或者多“人”。
常见的非对称加密算法:
RSA、ECC、Diffie-Hellman、El Gamal、DSA(数字签名用)
常用的非对称加密:
RSA、 ECC
安全高(几乎很难破解)
加解密相对速度慢、密钥长、计算量大、效率低
应用场景:
HTTPS(ssl)证书里制作、CRS请求证书、金融通信加密、蓝牙等硬件信息加密配对传输、关键的登录信息验证。
RSA与ECC对比
这两个生成公私密钥对的算法都是基于数学上的当前计算机未解决的数学问题
RSA对极大整数做因数分解的难度决定了RSA算法的可靠性,ECC椭圆曲线密码编码学。
RSA一般加密小量的数据,ECC多用移动设备,两者相比同样的安全性ECC密钥更短,速度更快。传输数据量小。
(1) RSA签名算法适合于:Verify操作频度高,而Sign操作频度低的应用场景。比如,分布式系统中基于capability的访问控制就是这样的一种场景。
(2) ECDSA签名算法适合于:Sign和Verify操作频度相当的应用场景。比如,点对点的安全信道建立
细说对称加密与非对称加密对比
在管理方面:非对称加密比对称加密更有优势,对称加密的密钥管理和分发上比较困难,不是非常安全,密钥管理负担很重。
在安全方面:非对称加密算法基于未解决的数学难题,在破解上几乎不可能。到了对称加密 AES 虽说从理论来说是不可能破解的,但从计算机的发展角度来看。非对称加密安全性更具有优越性;
在速度方面:比如对称加密方式AES 的软件实现速度已经达到了每秒数兆或数十兆比特。是非对称加密公钥的 100 倍,如果用硬件来实现的话这个比值将扩大到 1000 倍。
对称加密优缺点:对称加密相比非对称加密算法来说,加解密的效率要高得多、加密速度快。
非对称加密优缺点:安全性更高,公钥是公开的,密钥是自己保存的,不需要将私钥给别人。缺点:加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
摘要(Hash算法)
摘要特别的地方在于它是一种单向算法,单向散列函数一般用于产生消息摘要,用户可以通过hash算法对目标信息生成一段特定长度的唯一hash值,却不能通过这个hash值重新逆向获得目标原文信息。(非可逆到原明文,相同的明文产生相同的摘要)
常见的Hash算法
MD2、MD4、MD5、HAVAL、SHA、SHA-1
常用的Hash算法
MD5、SHA-1
应用场景:
1, Hash算法常用在不可还原的密码存储、信息完整性校验。
2,文档、音视频文件、软件安装包等用新老摘要对比是否一样(接收到的文件是否被修改)
3, 用户名或者密码加密后数据库存储(数据库大多数不会存储关键信息的明文,就像很多登录功能的忘记密码不能找回,只能重置)
4,数字签名和数据检索。
SHA-1 与 MD5 的比较 :
因为二者均由 MD4 导出,SHA-1 和 MD5 彼此很相似。相应的,他们的强度和其他特性也是相似。
安全性:最显著和最重要的区别是 SHA-1 摘要比 MD5 摘要长 32 位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对 MD5 是 2128 数量级的操作,而对 SHA-1 则是 2160 数量级的操作。这样,SHA-1 对强行攻击有更大的强度;对密码分析的安全性:由于 MD5 的设计,易受密码分析的攻击,SHA-1 显得不易受这样的攻击;
速度:在相同的硬件上,SHA-1 的运行速度比 MD5 慢
数字签名非常简单,它是对上文中的摘要进行加密后得到数字签名。
也就是说,数字签名是由明文本身的内容经过hash算法计算得到digest摘要,然后用甲方(或者发起方或者直接代号A)的私钥加密而来的。简单理解就是,数字签名 = 对摘要加密
它主要解决你给了我摘要,但是谁知道这个摘要到底是不是你的摘要。如何保证你给的摘要在到我手上之前没被修改。所以就用了对方的私钥加密摘要。如果此时不是个人,而是信任的机构所做的签名,其实就是公证。
上文中非对称加密、Hash摘要的应用场景都是提起到数字证书。也就是说数字证书是基于他们生成的。
数字证书是A(或者说甲方)向数字证书中心(CA)申请的,是由A的个人(或甲方的机构企业)信息,公钥等经过CA的私钥加密而来的。相当于进行公证。而数字证书中心(CA)就是根证书的生产单位,很多Windows系统的浏览器根证书都是由一个或多个可信根的证书颁发机构。(微软、苹果也有根证书颁发机构机构)。
过程如下:
1,产生数字证书请求(我求你办事需要你盖章,我准备的东西)
由于原文可能数据很大,非对称加解密比较耗时导致时间长,网络传输数据量大,所以证书请求生成时,需要对原文或者信息进行hash摘要(MD5或者SHA的方式),这样不管原信息多长,就得到固定的短信息摘要,然后再用A(或者甲方)的私钥进行数字签名(对摘要加密) 。然后将签名+个人(或机构企业)信息+公钥三者要素合成一个CRS(证书请求)让CA(数字证书中心)去生成数字证书(就是CA私钥加密),或者说你给盖章。这样CA就会给你一个相当于公证认可后的数字证书。
生成证书请求
2,拿到CA的签名的证书后解密过程
【PS:证书是可以上下关联的,比如经过根证书得到的子证书的机构还可以生成证书,相当于多次加密,此时证书解密需要过程会层层CA公钥解密】
应用场景:
常见的https的证书、区块链证书、一些金融开户或者蓝牙链接传输等。