对称加密 & 非对称加密
明文: 明文指的是未被加密过的原始数据。
密文:明文被某种加密算法加密之后,会变成密文,从而确保原始数据的安全。密文也可以被解密,得到原始的明文。
密钥:密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥,分别应用在对称加密和非对称加密上。
对称加密:对称加密又叫做私钥加密,即信息的发送方和接收方使用同一个密钥去加密和解密数据。对称加密的特点是算法公开、加密和解密速度快,适合于对大数据量进行加密,常见的对称加密算法有DES、3DES、TDEA、Blowfish、RC5和IDEA。
其加密过程如下:明文 + 加密算法 + 私钥 => 密文
解密过程如下:密文 + 解密算法 + 私钥 => 明文
对称加密中用到的密钥叫做私钥,私钥表示个人私有的密钥,即该密钥不能被泄露。
其加密过程中的私钥与解密过程中用到的私钥是同一个密钥,这也是称加密之所以称之为“对称”的原因。由于对称加密的算法是公开的,所以一旦私钥被泄露,那么密文就很容易被破解,所以对称加密的缺点是密钥安全管理困难。
非对称加密:非对称加密也叫做公钥加密。非对称加密与对称加密相比,其安全性更好。对称加密的通信双方使用相同的密钥,如果一方的密钥遭泄露,那么整个通信就会被破解。而非对称加密使用一对密钥,即公钥和私钥,且二者成对出现。私钥被自己保存,不能对外泄露。公钥指的是公共的密钥,任何人都可以获得该密钥。用公钥或私钥中的任何一个进行加密,用另一个进行解密。
被公钥加密过的密文只能被私钥解密,过程如下:
明文 + 加密算法 + 公钥 => 密文, 密文 + 解密算法 + 私钥 => 明文
被私钥加密过的密文只能被公钥解密,过程如下:
明文 + 加密算法 + 私钥 => 密文, 密文 + 解密算法 + 公钥 => 明文
由于加密和解密使用了两个不同的密钥,这就是非对称加密“非对称”的原因。
非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
在非对称加密中使用的主要算法有:RSA、Elgamal、Rabin、D-H、ECC(椭圆曲线加密算法)等。
证 书: 数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机构的公章)后形成的一个数字文件。
私 钥: 私有,只能解开本公钥加密的数据(用于解密),用它加密的数据只能被本公钥解密(用于签名)。
公 钥: 公有,只能解开本私钥加密的数据(用于验证),用它加密的数据只能被本私钥解密(用于加密)。
签 名: 用私钥加密,签上自己的名,证明自己合法。
验 证: 用公钥解密,验证别人是否合法。
加密和解密:
发送方利用接收方的公钥对要发送的明文进行加密,接受方利用自己的私钥进行解密,
其中公钥和私钥匙相对的,任何一个作为公钥,则另一个就为私钥.但是因为非对称加密技术的速度比较慢,所以,一般采用对称加密技术加密明文,
然后用非对称加密技术加密对称密钥,即数字信封技术.
签名和验证:
发送方用特殊的hash算法,由明文中产生固定长度的摘要,然后利用自己的私钥对摘要进行加密,这个过程就叫签名。
接收方利用发送方的公钥对加密的摘要进行解密操作,得到结果A。对明文也进行hash操作产生摘要B。最后,把A和B作比较。
此方式既可以保证发送方的身份不可抵赖,又可以保证数据在传输过程中不会被篡改。
证书预置和申请
1:客户端会预置根证书, 里面包含CA公钥
2:服务器去CA申请一个证书
3: CA用自己的签名去签一个证书,指纹信息保存在证书的数字摘要里面, 然后发送给服务器
一次访问流程简化如下:
1: 客户端 sayHello
2: 服务器返回证书
3-1: 客户端验证证书内容有效性(过期时间, 域名是否相同等)
3-2: 验证证书的有效性 (是否被串改), 通过本地根证书的CA公钥解密数字摘要,看是否匹配。
3-3:如果数字签名验证通过, 就可以使用服务器证书里面提供的公钥进行下一步通信。
日常使用场景:
因为黑客也有服务器的公钥,所以在截取后可以打开服务器的密文,也可以模拟客户端获取一些信息。所以最好是两对公私钥,客户端用服务器的公钥加密传输,服务器用客户端的公钥加密传输
总结:
1:公钥私钥成对出现,私钥只有自己知道,用公钥加密数据,用私钥来解密数据
2:大家可以用我的公钥给我发加密的信,我自己可以用对应的私钥进行解密。
3:大家用我的公钥解密信的内容,看看能不能解开,能解开,说明是经过我的私钥加密了,就可以确认确实是我发的了。
4:用私钥加密数据(数字签名),用公钥来验证数字签名。
在实际的使用中,公钥不会单独出现,总是以数字证书的方式出现,这样是为了公钥的安全性和有效性。
参考:
加密解密(2)*客户端,服务器,CA(Certificate Authority),公钥,私钥,证书,签名,验证 - 释迦&牟尼 - 博客园
网友评论