首页 > 其他 > 详细

密码与安全

时间:2020-10-03 09:37:27      阅读:51      评论:0      收藏:0      [点我收藏+]

1:数字签名

1.1:消息摘要

消息摘要是数据库的数字指纹。

SHA-1(安全散列算法),无论数据有多长,都压缩成160位序列(20字节),只能表示2^160个不同的签名。因为这个数字已经很大了,存在相同的指纹的概率微乎及微。

还有一种著名的算法就是MD5,java对这两种摘要算法提供了实现。现在人们在这两种算法中发现了微妙的规律性,也用很多密码人员建议避免使用MD5,而使用SHA-1,知道更强的加密算法出现。

如果把消息和它的指纹分开传输,就可以判断消息有没有被篡改过,但是若是消息和指纹同时被截获了,对消息进行篡改,再重新计算指纹,那就是一件很容易的事了。毕竟消息摘要算法都是公开的,不需要使用秘钥,数字签名解决了这个问题。

1.2:消息签名

计算秘钥的算法:RSA/DSA

(RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现今的三十多年里,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多)

DES算法好在加/解速度快,密钥量短,采用对称加密

RSA算法好在网络容易实现密钥管理,便进行数字签名,算法复杂,加/解速度慢,采用非对称加密

RSA的速度。

由于进行的都是大数计算,使得RSA最快的情况也比DES慢上100倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。

由公钥加密的内容可以并且只能由私钥进行解密,并且由私钥加密的内容可以并且只能由公钥进行解密。也就是说,RSA的这一对公钥、私钥都可以用来加密和解密,并且一方加密的内容可以由并且只能由对方进行解密。可用于验证hTTPS中各种密钥的加密。

技术分享图片

1.3:校验签名:

对签名进行校验就需要使用到证书了,传输人想把他的公共秘钥提供给接收者,那么他必须导出一个证书文件,通过jdk配有的keytool工具(使用命令行操作)导出(他主要负责管理秘钥库,证书数据库和私有/公有秘钥对),之后传输人就可以把证书发送给接收者,接收者收到后想判断是否得到了正确的证书,他可以给通过电话,询问证书的指纹,对比时候一致,然后就可以把它导入到秘钥库里面(不要把没有确认过的证书放到里面,所有程序都会通过这些证书对签名进行校验),之后传输人就可以把签名过的文档发给接收者了,同样提供了工具对jar文件进行签名和校验

上面说的是密码技术中的通过数字签名进行认证这一重要技术,还有一种重要技术就是加密。

2:加密

认证成功之后,该消息的本身内容是直白可见的,但是他只保证了消息是内有被篡改过,所以需要加密来保障消息不被其他人查看

2.1:对称加密:

DES即数据加密标准,被证明可以使用穷举法进行破解,后来出现了高级加密标准,即AES

秘钥必须是随机的,不然容易被暴力破解

2.2:公共密钥密码

接受者拥有一对密钥,包含一个公共秘钥和一个与之相匹配的私有秘钥(必须对应,公共秘钥加密的数据,可以通过私用秘钥解密,不能通过公钥解密),他把公钥发给发送者,发送者通过公钥进行加密,然后把密文发给接收者,接收着用私钥对它进行解密,但是这个加密过程非常复杂,要比对称加密的慢得多,通过公共密钥算法对大量信息进行加密是不切实际的。

2.3:将公共密钥和快速的对称密钥结合起来解决问题

技术分享图片

这样只要用公共密钥算法对数据很小的对称密钥进行加密就可以了

最普通的公共秘钥算法是RSA,

RSA的运用场景:SSH

SSH远程登录主要有两种登录类型:口令登录以及密钥登录

  1. 数字证书

主要包含这几大块:

· 证书的发布机构

· 证书的有效期

· 公钥

· 证书所有者(Subject)

· 签名所使用的算法

· 指纹以及指纹算法

数字证书可以保证数字证书里的公钥确实是这个证书的所有者(Subject)的,或者证书可以用来确认对方的身份。

SSL是基于非对称加密的原理,在这之上还进行了对称加密的数据传输。当传送数据量过大的时候,客户端和服务器之间互相商定了一个对话密钥(session key),使用这个对话密钥来进行对称加密加快运算速度。(浏览器地址栏显示“锁的标识”,点击锁型标识显示单位/个人认证信息,这种证书也是类似于驾驶证、护照和营业执照的电子副本,因为配置在服务器上,也称为SSL服务器证书。)

技术分享图片
技术分享图片

非对称加密有公钥和私钥两个概念,私钥自己拥有,不能给别人,公钥公开。根据应用的不同,我们可以选择使用不同的密钥加密:

    1. 签名:使用私钥加密,公钥解密。用于让所有公钥所有者验证私钥所有者的身份并且用来防止私钥所有者发布的内容被篡改,但是不用来保证内容不被他人获得。
    2. 加密:用公钥加密,私钥解密。用于向公钥所有者发布信息,这个信息可能被他人篡改,但是无法被他人获得。

密码与安全

原文:https://www.cnblogs.com/shineipangtuo/p/13763438.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!