《图解密码技术》读后的总结

《图解密码技术》我认为是一本密码学入门的易读书,身边的几个做密码相关工具的朋友都推荐我看看,这次有时间就看了下。

本书是我11月份开始阅读的,一共用了25天,每天读完后都会把一些我认为是重点的章节和内容做个总结并写在印象笔记中,这样做的目的是之后在使用的时候可以快速的查找到不用在去翻书,并可以让我随时可以查看。如果各位有时间并对密码学感兴趣建议还是去买本书读下。在读书之前我以为我会读不懂,但读后确实通俗易懂,并且对程序员很有帮助。

内容是我一点一点按照书中的文字敲的,有些我认为不错的图,我都拍了下来。因为本书的内容太多,我会分多篇进行发布。

有句话说的好,要带着疑问去读一本书,这样会让你随时都会有收获。

以下为我在读书之前对密码学存在的一些疑问:

1、密码学家工具箱6个重要的工具具体指什么:

对称密码、公钥密码、单向散列函数、消息认证码、数字签名和伪随机数生成器。

2、每个技术是为了解决什么问题的

3、PKI公钥基础设施

4、SSL/TLS

5、密码技术的完美组合

 
下边开启图解密码技术的学习:

学习的前绪
我们平时使用的淘宝或者QQ使用的用户名和密码、刷信用卡或者在ATM机上取钱输入的密码 其实就是向系统证明你才是这个账号或银行卡的主人的一种证据,跟“天王盖地虎!”“宝塔镇河妖!”差不多一回事。严格来说,这种密码应该叫做口令(对应英文中的password、passcode或者pin)
 
正式学习的开始
 
第1部分 密码
第一章 环游密码世界
 
A(发送者)给B(接收者)发邮件 E(窃听者)可以去窃听邮件
A不想让别人看到邮件内容,于是决定加密(encrypt)后再发送出去,加密之前的消息称为明文(plaintext),加密之后的消息称为密文(ciphertext)。
B收到来自A的加密邮件,但是无法直接阅读密文,于是B需要对密文进行解密(decrypt)之后再阅读。解密就是将密文恢复成明文的过程。
这里A和B就是通过运用密码(cryptography)技术,保证了邮件的机密性(confidentiality)。
 
什么叫密码算法? 1.3.1
用于解决复杂问题的步骤,通常称为算法(algorithm)。从明文生成密文的步骤,也就是加密的步骤,称为加密算法,而解密的步骤则称为解密算法。加密、解密的算法合在一起统称为密码算法
 
密码算法中需要密钥(key)。
《图解密码技术》读后的总结_第1张图片
 
 
无论是在加密还是解密时,都需要知道密钥。
 
正如保险柜的钥匙可以保护保险柜中存放的贵重物品医院,密码中的密钥可以保护你的重要数据。即使保险箱再坚固,如果要是被盗,则里面的贵重物品也会被盗。同样地,我们也必须注意不要被密码的密钥被他人窃取。
 
能够防止伪装、篡改、和否认等威胁的技术,就是数字签名(digital signature)。数字签名就是一种将现实世界中的签名和盖章移植到数字世界中的技术,它也是一种重要的密码技术。
例如:A对内容加上数字签名后再通过邮件发送,而B则可以对该数字签名进行验证(verify)。通过这样的方式,不但可以检测出伪装和篡改,还能够防止事后否认。
 

有很多种类的密码技术,其中以下六种发挥着尤其重要的作用:

1、对称密码

2、公钥密码

3、单向散列函数

4、消息认证码

5、数字签名

6、伪随机数生成器

在本书中,我们将上述六种技术统称为密码学家的工具箱。

《图解密码技术》读后的总结_第2张图片《图解密码技术》读后的总结_第3张图片

第二章 历史上的密码
1、凯撒密码
      凯撒密码是通过将明文中所使用的字母表按照一定的字数“平移”来进行加密的
      凯撒密码的解密过程是使用与加密时相同的密钥进行反向的平移操作。
      可以通过将密钥全部尝试一遍的方式来破译,这种方法称为暴力破解(brute-force attack)。
2、简单替换密码
     将明文中所使用的字母表替换为另一套字母表的密码称为简单替换密码(simple substitution cipher)。
     虽然用暴力破解很难破译简单替换密码,但使用被称为频率分析的密码破译方法,就能够破译简单替换密码。就是通过每个字母出现的频率来分析破解。
3、Enigma
    Enigma是一种能够进行加密和解密操作的机器。    在20世纪初发明后用于军事用途。 
    Enigma是一种由键盘、齿轮、电池和灯泡所组成的机器,通过一台机器就可以完成加密和解密两种操作。

 

 
每个人都可以拥有相同品牌的锁,但每个人都有不同的钥匙。锁的设计是公开的—锁匠都有带有详细图的书,而且绝大多数好的设计方案都在公开专利中进行了描述—但是钥匙是秘密的。
 
第三章 对称密码
1、编码
计算机的操作对象并不是文字,二是由0和1排列成的比特序列
将像是世界中的东西映射为比特序列的操作称为编码(encoding)。例如:ASCII;
2、XOR
XOR运算,中文名叫异或
3、一次性密码本-绝对不会被破译的密码
4、DES
DES是一种对称密码。DES已经能够被暴力破解,强度大不如前了。
DES是一种将64比特的明文加密成64比特的密文的对称密码算法,它的密钥长度是56比特。尽管从规格上来说,DES的密钥长度是64比特,但由于每隔7比特会设置一个用于错误检查的比特,因此实质上其密钥长度是56比特。
DES的结构(Feistel网络)
在Feistel网络中,加密的各个步骤称为轮(round),整个加密过程就是进行若干次轮的循环。
5、三重DES
三重DES是为了增加DES的强度,将DES重复3次所得到的一种密码算法,也称为TDEA,通常缩写为3DES。
三重DES并不是进行三次加密,而是加密->解密->加密的过程。三重DES对DES具备向下兼容性。
三重DES的解密过程和加密正好相反,是以密钥3、密钥2、密钥1的顺序执行解密->加密->解密的操作。
6、AES
对称密码的新标准-AES
AES(Advanced Encryption Standard)是取代其前任标准(DES)而成为新标准的一种对称密码算法。全世界的企业和密码学家提交了多个对称密码算法作为AES的候选,最终2000年从这些候选算法中选出了一种名为Rijndael的对称密码算法,并将其确定为了AES。
Rijndael的分组长度和密钥长度可以分别以32比特为单位在128比特到256比特的范围内进行选择。不过在AES的规格中,分组长度固定为128比特,密钥长度只有128、192和256比特三种。
 
3.8.4应该使用哪种对称密码呢(书71页)
DES和三重DES尽管在一些重视兼容性的环境中还会继续使用,但他会逐渐被AES所取代。
现在大家应该使用的算法是AES,因为它安全、快速,而且能够在各种平台上工作。
 
第四章 分组密码的模式
DES和AES都属于分组密码,它们只能加密固定长度的明文。如果需要加密任意长度的明文,就需要对分组密码进行迭代,而分组密码的迭代方法就称为分组密码的“模式”。
分组密码有很多模式,如果模式的选择不恰当,就无法充分保证机密性。分组密码的主要模式有ECB、CBC、CFB、OFB、CTR等。
 
4.2.1分组密码和流密码 (书中77页)
密码算法可以分为分组密码和流密码两种。
 
分组密码(block cipher)是每次只能处理特定长度的一块数据的一类密码算法,这里的“一块”就称为分组(block)。此外,一个分组的比特数就称为分组长度(block length)。
例如:DES和三重DES的分组长度都是64比特。这些密码算法一次只能加密64比特的明文,并生成64比特的密文。
AES的分组长度为128比特,因此AES一次可加密128比特的明文,并生成128比特的密文。
 
流密码(stream cipher)是对数据流进行连续处理的一类密码算法。流密码中一般以1比特、8比特或32比特等为单位进行加密和解密。
 
模式有很多种类,分组密码的主要模式有以下5种。
ECB模式:Electronic CodeBook mode(电子密码本模式)
CBC模式:Cipher Block Chaining mode(密码分组链接模式)
CFB模式:Cipher FeedBck mode(密文反馈模式)
OFB模式:Output FeedBack mode(输出反馈模式)
CTR模式:CounTeR mode(计数器模式)
 
4.3 ECB模式
将明文分组直接加密的方式就是ECB模式,这种模式非常简单,但由于存在弱点因此通常不会被使用。
《图解密码技术》读后的总结_第4张图片
 
 
4.4 CBC模式
CBC模式是将前一个密文分组与当前明文分组的内容混合起来进行加密的,这样就可以避免ECB模式的弱点。
CBC模式的全称是密文分组链接模式,之所以叫这个名字,是因为密文分组是像链条一样相互连接在一起的。
在CBC模式种,首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密。
 
如果将一个分组的加密过程分离出来,我们就可以很容易地比较出ECB模式和CBC模式的区别。ECB模式之进行了加密,而CBC模式则在加密之前进行了一次XOR。
 
当加密第一个明文分组时,由于不存在“前一个密文分组”,因此需要事先准备一个长度为一个分组的比特序列来代替“前一个密文分组”,这个比特序列称为初始化向量(Initialization Vector),通常缩写为IV。一般来说,每次加密时都会随机产生一个不同的比特序列来作为初始化向量。
 

4.5 CFB模式

CFB模式的全称是密文反馈模式。在CFB模式中,前一个密文分组会被送回密码算法的输入端。所谓反馈,这里指的就是返回输入端的意思。

4.6 OFB模式

OFB模式的全称是输出反馈模式。在OFB模式中,密码算法的输出会反馈到密码算法的输出中。

PFB模式并不是通过密码算法对明文直接进行加密的,而是通过将“明文分组”和“密码算法的输出”进行XOR来产生“密文分组”的,在这一点上OFB模式和CFB模式非常相似。

和CBC模式、CFB模式一样,OFB模式中也需要使用初始化向量(IV)。一般来说,我们需要在每次加密时生成一个不同的随机比特序列用作初始化向量。

OFB模式和CFB模式的区别仅仅在于密码算法的输出。

4.7 CTR模式

CTR模式全称是计数器模式。CTR模式是一种通过将逐次累加的计数器进行加密来生成密钥流的流密码。

CTR模式中,每个分组对应一个逐次累加的计数器,并通过对计数器进行加密来生成密钥流。也就是说,最终的密文分组是通过将计数器加密得到的比特序列,与明文分组进行XOR而得到的。

CTR模式和OFB模式一样,都属于流密码。

总结:
分组密码算法的选择固然很重要,但模式的选择也很重要。对模式完全不了解的用户在使用分组密码算法时,最常见的做法就是将明文分组按顺序分别加密,而这样做的结果就相当于使用了安全性最差的ECB模式。
 
1字节等于8比特。128比特等于16字节。
 
第5章 公钥密码
-用公钥加密,用私钥解密
 
投币寄物柜的例子。
首先,将物品放入寄物柜中。然后,投入硬币并拔出钥匙,就可以将寄物柜关闭了,关闭后的寄物柜,没有钥匙时无法打开的。
只要有硬币,任何人都可以关闭寄物柜,但寄物柜一旦被关闭,再怎么投币也无法打开。打开寄物柜需要使用钥匙,而不是硬币。
因此我们可以说,硬币是关闭寄物柜的密钥,而钥匙则是打开寄物柜的密钥
 
在对称密码中,由于加密和解密的密钥是相同的,因此必须像接收者配送密钥。用于解密的密钥必须被配送给接收者,这一问题称为密钥配送问题。如果使用公钥密码,则无需向接收者配送用于解密的密钥,这样就解决了密钥配送问题。
 
解决密钥配送问题的方法有以下几种。
通过事先共享密钥来解决
通过密钥分配中心来解决
通过Diffie-Hellman密钥交换来解决
通过公钥密码来解决
 
加密密钥和解密密钥的区别:
发送着只需要加密密钥
接收者只需要解密密钥
解密密钥不可以被窃听者获取
加密密钥被窃听者获取也没问题
 
加密密钥被称为公钥,解密密钥被称为私钥
公钥和私钥匙一一对应的,一对公钥和私钥统称为密钥对(key pair)。
 
5.4.5公钥密码无法解决的问题
1、需要判断所得到的公钥是否正确合法,这个问题被称为公钥认证问题。
2、公钥密码有一个问题就是,它的处理速度只有对称密码的几百分之一。
 
5.5 时钟运算
此章节为了让大家更好的理解RSA的算法,做的一些运算讲解章节。
 
5.6 RSA  (书中120页)
 
5.6.1 什么是RSA
公钥密码的代码,RSA是一种公钥密码算法,可以被用于公钥密码和数字签名。
 
5.6.2 RSA加密
在RSA中,明文、密钥和密文都是数字。RSA的加密过程可以用下列公式来表达,这个公式很重要。
《图解密码技术》读后的总结_第5张图片
 
 
mod为获取余数
RSA的密文是对代表明文的数字的E次方求mod N的结果。换句话说,就是将明文和自己做E次乘法,然后将其结果除以N求余数,这个余数就是明文。
对明文进行乘方运算并求mod即可,这就是整个加密的过程。
E和N是RSA加密的密钥,也就是说,E和N的组合就是公钥
 
5.6.3 RSA解密
 
对表示密文的数字的D次方求mod N就可以得到明文。换句话说,将密文和自己做D次乘法,再对其结果除以N求余数,就可以得到明文。
这里所使用的数字N和加密时使用的数字N是相同的。数D和数N组合起来就是RSA的解密密钥,因此D和N的组合就是私钥。只有知道D和N两个数的人才能够完成解密的运算。
《图解密码技术》读后的总结_第6张图片
 
 
 
5.6.4 生成密钥对

RSA的机密是求“E次方的mod N”

RSA的解密是求“D次方的mod N”

由于E和N是公钥,D和N是私钥,因此求E、D和N这三个数就是生成密钥对。

5.6.5 具体实践一下吧

具体的一个RSA密钥生成、加密已经解密的过程例子。

一些问题和解答:

公钥密码比对称密码的机密性更高吗?

这个问题无法回答,因为机密性的高低是根据密钥长度而变化的。

之后的用法:

对称密码提高处理速度,用公钥密码即决密钥配送问题,这样的方式称为混合密码系统。

第六章 混合密码系统

-用对称密码提高速度,用公钥密码保护会话密钥

混合密码系统用对称密码来加密明文,用公钥密码来加密对称密码中所使用的密钥。通过使用混合密码系统,就能够在通信中将对称密码和公钥密码的优势结合起来。

混合密码系统的组成机制:

用对称密码加密消息

通过伪随机数生成器生成对称密码加密中使用的会话密钥

用公钥密码加密会话密钥

从混合密码系统外部赋予公钥密码时使用的密钥

著名的密码软件PGP、以及网络上的密码通信所使用的SSL/TLS都运用了混合密码系统。

怎样才算是高强度的混合密码系统呢?混合密码系统运用了伪随机数生成器、对称密码和公钥密码,因此其中每一种技术要素的强度都必须提高。然而实际上还不尽如此,这些技术要素之间的强度平衡也非常重要。

 

 

你可能感兴趣的:(开发的技巧,密码学,RSA,密码技术)