密码学实践-读书笔记一二三

来源:互联网 发布:手机淘宝怎么复制宝贝 编辑:程序博客网 时间:2024/05/16 00:27

第一章 设计原理

由苏格兰Forth海湾大桥工程引入,速度与安全的矛盾之处。

同样在计算机安全中,我们首要的设计目标时常是严格的效率需求,第一优先考虑的始终是速度,即使在速度并不重要的地方下也是如此,这样就削减了安全方面的花费。没有构建安全系统的技巧。

维多利亚工程师的一条经验:如果失败就退回去采用更加保守的方法。而计算机中,只会不断抛出补丁来解决问题。

复杂性安全性不能结合在一起。
没有一个复杂的系统是安全的复杂性是安全性的最大的敌人,而复杂性总是以特性或者选项的形式出现。

想要构建安全的东西就必须简化
(倘若计算机程序有20个选项,那么就有100多万个组合,保证安全需要对这么多组合进行评估,更何况大多数的程序的选项都不止20个选项)

综上所述:我们必须要追寻的一点就是追寻:安全至上。

另外书中提到:简单的系统可以是大的系统,在系统的不同的部件之间提供一个清晰又简单的接口,称为模块化。一个好的简单接口可以把系统的其余部分与模块的细节隔离开来。

第二章 密码学背景

密码学内容宽广,含有认证、数字签名等功能。
保持一个批判的头脑,不要盲目相信一切,即使是出版物。
密码系统的作用:
密码系统是一个让一些人访问系统,让一些人不能访问的部件,扮演着锁的角色。
只有当密码系统的其他部分也是安全的,那么密码系统才是真正有用的。
即使有其他的弱点,而正确的密码系统仍然是必要的,对于密码系统的攻击是短暂而不可见的,这使得攻击者能够一次又一次地返回。
最脆弱的链接性质
一个安全系统只能与其最薄弱的连接一样坚固。(类比于木桶原理),最薄弱的链环将被先打破,链条中的其他链环再坚固也没有用。
用分层的树状结构来分析,哪一个链接是薄弱的。例如金库的攻击树:
金库攻击树

除了最薄弱的链接之外,强化任何东西都是无用的。加强每一个在特定情形下可能是最薄弱的链接都是值得的。
敌手设置
引进一个苛刻的环境,对于未来未知的攻击者,只需要找到系统中的一个脆弱点,而我们保护所有的区域。
实用的妄想狂
在这个领域工作,要像一个恶意的攻击者那样进行思考,以发现自己工作的弱点。
不断寻找系统的弱点,这是获知如何构建更安全的系统的唯一方法。
对密码学工作的批判不是人身攻击。
威胁模型:就安全系统来说,规定某些人可以访问系统,而有些人不能访问,则信任者可以攻击系统。
密码系统不是解决方案:
它只是部分解决问题,而它本身带来的问题比它解决的问题更多。

棘手的密码系统:
最脆弱的链接性质与敌手的设置
缺乏测试(即使公布也无人问津)

密码系统是安全系统中较为容易实现的部分。

第三章 密码学简介

加密:
为了防止Eve获知Alice与Bob进行会话,Alice与Bob协商一个密钥Ke,用加密函数E(Ke,m)加密消息m得到密文c。
Kerckhoffs原理:加密方案的安全性必须仅仅依赖于密钥Ke的保密性,而不依赖于算法(难以改变,可能薄弱)的保密性。
算法是公开的,尽早发现缺点。
认证:
使用一个密钥(Alice和Bob都知道这个密钥)认证密钥Ka。a=h(Ka,m),Alice把a与m都发送给Bob,h是MAC函数,Bob计算h(Ka,m)查看是否与a相同。
但是Eve仍然可以删除Alice的消息或者重放、改变消息的次序。
认证与消息编码的方案结合能够解决大多数的问题,但还是有危险。
提到了密码学中的一个误区:加密一个消息能够防治Eve改变它。

公钥加密(非对称加密)
使得分配密钥问题变得简单
Alice与Bob使用的密钥不同,且加解密算法不同
Bob使用特殊算法生成一对密钥(Sbob,Pbob),分别表示私钥与公钥。
Alice使用Pbob加密消息m得到密文c,将c发给Bob。
Bob使用私钥Sbob来解密得到m

公钥加密效率低,代价太高,因此将对称加密与公钥加密相结合,用公钥算法建立一个秘密密钥,用来加密真正的数据。

数字签名:
是消息认证码在公钥形式下的等价形式。
使用私钥签名,公钥验证。

PKI:
公钥基础设施
证书机构(CA),每一个用户把自己的公钥报给CA并向CA证明自己,CA使用数字签名签署用户Bob的公钥。
利用证书,Alice可以很容易找到Bob的公钥。
PKI优势:每一个参与方只需要向CA验证自己的公钥,并且要知道CA的公钥,Alice使用CA的公钥检验关于Bob的密钥的证书。一次注册,随处使用。
PKI设置多层CA。根颁发低层CA公钥证书,低层颁发用户的公钥。

攻击:
惟密文攻击:攻击者只有密文,最困难
已知明文攻击:既知道明文又知道密文的攻击,目标是得到加密密钥。
选择明文攻击:可以选择特殊的明文,来得到相应的密文。有两个变形:离线攻击、在线攻击。
选择密文攻击:可以选择密文与明文,得到相应的明文与密文,任何加密方案都应该经受住这一攻击。
以上攻击用于恢复明文与加密密钥。
区分攻击:非平凡的攻击方法,发现理想密码与实际密码之间的差异。
生日攻击:一个元素有N个不同的取值,大约在√N后就会有第一次的碰撞。(相同生日出现的概率超过50%的所需的人数为23)。
中间相遇攻击:与生日攻击同称为碰撞攻击。(2^32 的预先计算与2^32 的偷听,工作量小于2^64的计算)

生日攻击与中间相遇攻击的不同是:生日攻击是等待一个值在相同的元素集合中出现两次。中间相遇攻击是有两个集合并等待这两个集合出现重叠。

复杂性:
不存在安全的复杂系统
复杂性是安全性的最大敌人
“测试-修补”的开发方法
获得安全系统的唯一方式就是在一开始就构建个非常健壮的系统。
使一个系统简易化的唯一方式就是把它模块化
正确性必须是一个局部性质
不管系统的其他部分如何工作,系统的每一个部分都应该正确运转。

原创粉丝点击