信息安全 – 加密算法
问题
- 什么是散列算法(信息摘要),散列算法是加密吗?
- 什么是对称加密?
- 什么是非对称加密,什么时间用公钥加密,什么时间用私钥”加密“?
- 什么是数字签名?
- 什么是数字证书?
- Https原理是什么?
加密算法
散列算法
我们从一个小故事开始,学生时代,即使我们没有写过小纸条,但也帮别人传过不少,假如最后一排的张三想给第一排的李四传纸条,而走到王五那里,王五看到后,把纸条信息给改了,李四怎么确认,这个信息有没有被别人篡改过?
简单的做法,张三可以在传递信息之前,比如结尾处写一个”共xx字“,这样王五看到后,想在后面补点什么,估计就有点棘手了,实际这个”共xx字“,我们就可以理解为摘要信息。
生成这个”摘要信息”,有个专业的名词,叫:散列算法,又叫摘要算法、哈希算法等,就是一种将字符组成的字符串转换为固定长度(一般是更短长度)的数值或索引值的方法。常见的有MD5、SHA1等。
可以看下在线工具:http://www.jsons.cn/md5/s/
示意图
还有其他用途,比如:我们网上下载一个软件,怎么保证这个软件,是否被别人修改过,植入木马等恶意程序?我们通常会发现:软件旁边一般会有MD5值或者SHA值,这个实际就是软件摘要信息,如果下载后的软件,做MD5之后,跟这个不匹配,说明软件被别人修改过。
特点:
- 无论原始字符串长度如何,都会产生固定长度的摘要信息,16位、32位、160位等。
- 不能从摘要信息反推出原始信息(彩虹表不算),也就是解密,不能称之为”加密”。
对称加密
我们更进一步,如果张三和李四,要传递一些机密信息,不想被中间人看到信息内容,我们需要怎么做?
张三可以买一把锁,只有自己和李四有钥匙,投递前先锁起来,等李四接到,再用相同的钥匙打开,这种做法实际就是对称加密,也就是同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密。
但这样还是有风险的,且不说张三、李四本身会因为保管不严,有泄露风险,张三把钥匙给李四的时候,需要明文传递,本身就有可能泄露的风险。那有没有其他办法解决,下面就是看另外一种加密方式 - 非对称加密。
非对称加密
非对称加密,就是提前产生一对密钥:公钥和私钥,公钥给别人,私钥自己保留,利用公钥加密,私钥解密,私钥”加密”,公钥”解密”。
此时李四就可以提前把自己的公钥传递给张三,张三拿着公钥加密后,就可以把信息传递给李四,这时就只有李四利用自己的私钥可以解开这个信息。
此时又有新的问题:如何证明李四收到的信息一定是张三发过来的?比如王五获取了李四的公钥,模拟张三给李四发消息,李四怎么确认,这封信一定是张三发的?
此时可以利用非对称加密的另外一个功能,数字签名。
数字签名
数字签名,也就是利用自己的私钥,给信息”加密”,实际就是给信息做签名,这个签名只有公钥可以验证成功。反过来,公钥能验签的,信息肯定来源于另外一只私钥”加密”的,从而可以证明信息来源。
下图所示:李四能用张三公钥验证成功,一定来源于张三。
事情看似得到解决,但我们再来思考一个问题:如果提前王五冒充张三,提前把自己的公钥给了李四,然后用自己的私钥签名,给李四,这样李四用假冒的公钥也可以验签的,是不是事情出现了无解?
此时最大的问题就是,李四无法证明,公钥一定来源于张三。
数字证书
既然就剩下公钥的身份证明问题,那我们是不是可以找一个专业机构,把我们的公钥经过他们证明一下就可以了,于是有了CA机构(证书授权机构),专门做数字证书的签发。下面看下数字证书有哪些构成,以百度为例:
数字证书的签发流程如下:
- 个人或者公司,通过工具生成自己的公钥和私钥
- 私钥自己保留,公钥+申请者信息+域名等,发送给CA机构
- CA核实信息无误后,把信息生成摘要信息
- 然后用自己的私钥对摘要进行签名,加上申请信息,这样产生的一个文件,就是数字证书
- CA把数字证书返回给申请者
示意图(侵删)
小结一下
非对称加密:就是公钥加密,私钥解密、私钥签名、公钥验签。
Https工作原理
这里借用一下别人的图,侵删,流程如下:
- 客户端访问站点的时候,获取CA颁发的数字证书
- 客户端验证CA证书合法后,获取里面的公钥,并生成随机码(Key)
- 利用公钥对随机码(Key)进行加密,发送给服务器端
- 服务器端,利用自己的私钥对随机码(Key)进行解密
- 然后客户端和服务器端,利用随机码作为Key,采用对称加密,进行数据传输
总结
- 什么是散列算法(信息摘要),散列算法是加密吗?
- 散列算法是一种摘要算法,把任意长度的字符串,转换为特定长度的字符串
- 散列算法不可逆,不能解密,严格上不能算加密算法
- 什么是对称加密?
- 使用相同的密钥,可以对信息进行加密和解密
- 速度相对非对称加密,速度比较块
- 什么是非对称加密,什么时间用公钥加密,什么时间用私钥”加密“?
- 利用成对的公钥对信息进行加密和解密
- 公钥加密,私钥解密,私钥签名、公钥验签
- 速度相比较对称加密,有点慢
- 希望加密信息的时候,用公钥加密
- 希望证明自己的时候,用私钥签名
- 什么是数字签名?
- 给信息添加指纹,证明信息来源
- 一般对内容的散列值再签名,减少签名长度和提高速度
- 什么是数字证书?
- 数字证书就是由 CA 机构使用自己私钥,对证书申请者的公钥进行签名认证
- 证书包含申请者公钥、域名、是否过期、申请者信息等
- Https原理是什么?
- 为什么数字证书,要用摘要做签名?
- 数据可能比较大,签名是使用非对称加密算法,比较耗时
- Https已经获取了公钥,为什么还要用对称加密进行数据传输?
- 对称加密速度快
版权声明:
作者:lichengxin
链接:https://www.techfm.club/p/55204.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论