目录
- 密码学概念与法律
- 密码安全分析
- 密码体制分类 - 私钥密码/对称密码体制
- 密码体制分类 - 公钥密码/非对称密码体制
- 密码体制分类 - 混合密码体制
密码学概念与法律
密码学主要是由密码编码以及密码分析两个部分组成,密码编码就是加密,密码分析就是把我们的密文变化成相应的明文,就是解密
跟密码相关的有两个法律,密码法在2020年1月1日起开始实施。2005年,实施了电子签名法
密码学相关的一些概念,罗列了一些明文密文,加密解密、加密算法、解密算法,密钥,明文就是需要保护的一些信息,密文就是我们用密码学的一些技术手段把明文经过一系列的变化和处理而变成加密的消息,这就是密文
加密就是把明文变换成密文的过程叫加密,解密正好相反。加密算法,它是加密过程中使用的一系列运算规则,我们把它叫做加密算法,解密算法是解密过程当中运用的一系列操作,规则是密钥
举个例子,你压缩一个文件,可能你要加密压缩,你需要输入一个密码,那这就是密钥
密码安全分析
唯密文攻击就密码的分析者,他只拥有一个或者多个用同一个密钥生成的密文,其他啥都不知道,这叫唯密文攻击
第二种已知明文攻击,就密码的分析者或者叫密码的破译者,他根据已经知道的某些明文对应的密文来进行密码破解,他知道某些明文,并且知道这些明文它对应的密文是什么,这是他知道的信息
选择明文攻击是密码分析者能够选择明文并获取相应的密文,就是对我们攻击者更有利一点,你能够选择一些明文,然后得到这些明文的密文,这种是对密码分析者、对破译者是十分有利的,适合用于攻击计算机文件系统和数据库系统
第四个密文验证攻击,分析者可以对于任何选定的密文,能够验证这个密文是否合法,知道这个密文是不是通过相应的合法的算法生成出来的,它只能验证你是否合法,也就是yes or no,具体的内容,他也分析不出来,他只能知道你给的这个密文是不是通过我们加密的算法来生成的,别的他都不知道
第五种叫选择密文攻击,是密码分析者能够选择密文并获得相应的明文。这也是对密码分析者十分有利的一种情况,它主要用来攻击公钥密码体制,特别是数字签名,你能选择一定的密文,并且获得它的明文
有人说选择密文或者明文攻击,这不就破译了,我把我的密文全部选择,然后你把所有的明文都给解析出来了,这不就破译了,这里面需要注意的是它是能够选择,但不能全选,只能选择一部分密文,然后获取相应的明文信息,这叫选择密文攻击
密码体制分类 - 私钥密码/对称密码体制
密码体制的分类主要分成三类,私钥、公钥和混合密码体制
私钥密码体制,又称对称密码体制,该体制的特点是加密和解密的密钥是相同的。像我们对一个文件进行加密,密码一二三,你把加密之后发给其他人,他解密也是用一二三去解密,这就是加密和解密的密钥相同,这就是对称密码体制
明文通过一个密钥加密,然后转换成密文,密文通过一个密钥解密成为明文,其中加密和解密密钥这两个东西是一样的。消息的收发双方必须事先通过安全的渠道交换密钥。
在这种对称密钥体制里边,比较大的一个难题就是你要通过安全渠道交换密钥。反正不要走同一个信道,万一同时被截获了,那就加密跟没加密一样,所以在这种密码体制里面,你要解决通过安全渠道去交换密钥。就这种私钥密码体制或叫对称密码体制,它的优点是加密的速度是比较快的
密文紧凑,比如说10t的明文,我加完密之后依旧是10t或者10.2t,这就是紧凑,没有多大变化。
使用长密钥时,比较难破解
3DES,我们常用的密钥是112位,所以DES是不太安全的,容易被破解,但3DES就比较安全了,密钥比较长,甚至我们可以用更长的密钥,密钥比较长就比较难破解,所以它这种算法还是比较安全的,缺点就是密钥的分配比较难,我怎么把我的密钥从a传到b是比较麻烦的,你要保证密钥分配的安全问题
第二个是密钥管理问题,比如说我的系统里边,它有很多用户,比如说abcd,AB之间要保存一对密钥,AD之间一对,AC之间一对,CD之间一对,BC之间一对,然后BD之间还有一对,如果用户一多密钥就比较多,密钥的管理是一个很大的难题
它的密钥一共是二的n×n- 1个密钥,n就是表示我们通信主体的数量,如果你想一下有1000个用户要通信,那算下来,密钥是非常多的,怎么去管理就会成为一个大的难题,第三个是无法进行原认证,这里边我们提到的对策密码体制,它的缺点其实都是我们后面要讲的,非对策密码体制或叫公钥密码体制,它的优点
密码体制分类 - 公钥密码/非对称密码体制
公钥密码,也叫非对称密码体制,就是加解密加密和解密,它的密钥是不一样的
公钥密码体制,非对称密码体制加密和解密的密钥就是不相同的
它的优点是密钥分发方便,因为公钥是公开的,它有两个密钥。公钥密码体制,有两个密钥,第一个公钥是公开的,另外一个是私钥自己保存的,每个人都只有两个密钥,如果1000个人,一共2000个密钥,每个人一个公钥,一个私钥,而且私钥是自己保存的,公钥公开,相当于我自己保存的就只有私钥,1000个用户,1000个私钥,所以它的分发是比较方便的,密钥数量比较少,密钥分发方便
密钥分发有专门的公钥密码算法,密钥的保管比较少,支持数字签名
缺点是加密的速度会比较慢,因为计算量很大,所以它不太适合用于大量数据的加密。大量数据的加密,一般我们还是用对称密码算法,因为它速度会比较快,第二个缺点就是数据的膨胀率太高了,就实体的数据,用公钥密码算法一加密,加完之后变成100t了,
这玩意儿膨胀率太高了
其实在实际的应用当中是公钥密码算法和私钥密码算法两个一起用的,就是对称和非对称一起去用
在非对称密码体制里边,每个实体,每个用户,他有两个密钥,一个公钥,一个私钥,公钥是公开的,私钥自己保存,公钥加密,用私钥去解密,这个可以用于实现我们的保密通信
比如说a要向b发一个数据,是用b的公钥进行加密,b收到之后用自己的私钥进行解密,因为b收到之后,b才能用自己的私钥进行解密,如果a发出来,c收到不能解密,因为c是默认是没有b的私钥的,私钥自己保存,只有自己有,这样就实现了保密通信
用私钥进行加密,对方用公钥进行解密,这样可以实现数字签名,
主要是为了防止抗抵赖性,私钥只有你自己有,你用私钥进行加密之后,我如果能用你的公钥进行验证,就表示的确是你用私钥进行加密的,这个过程其实也叫私钥签名的过程,公钥解密也叫公钥验证的过程
常见的非对称加密算法,首先最重要的是rsa,没有之一了,它的密钥可以是512位,也可能是1024位,计算量极大,难以被破解
其他的非对称加密算法,还有ecc、背包算法、DH等等。
密码体制分类 - 混合密码体制
我们的对称和非对称都有一些问题,对称它最大的问题,就是密钥分发,密钥管理,无法进行原认证,那这些问题正好是非对称的优点
非对称的优点,加密速度快,密纹紧凑,难以破解。非对称密码缺点是速度慢,数据膨胀率高,正好你的优点就是我的缺点,两个融合一下,这就互补了,融合一下就是混合密码体制
混合密码体制是发送方用对称密钥进行数据的加密,然后再用接收方的公钥来加密对称密钥,然后再一起发送给接收方,接收方先用自己的私钥解密得到对称密钥,然后用对称密钥解密得到明文
哈希算法来验证消息的完整性