___2017

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
受不了xxxx恶心人的行为,遂搬迁至博客园。
始发:2017-12-12 18:54:47

以下摘自《图解密码技术》

第1章 环游密码世界

加密:encrypt
解密:decrypt
明文:plaintext
密文:ciphertext

密码学家的工具箱6个重要工具:

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

根据密钥的使用方法,可以将密码分为对称密码和公钥密码两种。
对称密码(symmetric cryptography)是指在加密和解密时使用同一密钥的方式。
公钥密码(public-key cryptography)则是指在加密和解密时使用不同密钥的方式。
公钥密码又称为非对称密码(asymmetric cryptography)。

单项散列函数保证的是数据的完整性(integrity),即数据是正牌的而不是伪造的
消息认证码(message authentication code):用于确认消息是否来自所期望的对象、是否被篡改,能够保证完整性并提供认证(authentication)机制。
数据签名(digital signature):防止伪装、篡改、否认等威胁的技术。就是一种将现实世界的签名和盖章移植到数字世界中的技术。
伪随机数生成器(Pseudo Random Number Generator):模拟产生随机数列的算法,承担密钥生成的职责。

加盐(salt):具体来说就是在原有材料(用户自定义密码)中加入其它成分(一般是用户自有且不变的因素),以此来增加系统复杂度。当这种盐和用户密码相结合后,再通过摘要处理,就能得到隐蔽性更强的摘要值。

  • 不要使用保密的密码算法
  • 使用低强度的密码比不进行任何加密更危睑
  • 任何密码总有一天都会被破解
  • 密码只是信息安全的一部分

 

第2章 历史上的密码——写一篇别人看不懂的文章

密钥空间(keyspace):一种密码能够使用的“所有密钥的集合”。

  • 凯撒密码
  • 简单替换密码
  • Enigma:是由德国人阿瑟·谢尔比乌斯( Arthur Scherbius)于20世纪初发明的一种能够进行加密和解密操作的机器。谢尔比乌斯使用能够转动的圆盘和电路,创造出了人类手工所无法实现的高强度密码。在刚刚发明之际,Enigma 被用在了商业领域,后来到了纳粹时期,德国国防军采用了 Enigma,并将其改良后用于军事用途。

 

第3章 对称密码(共享密钥密码)——用相同的密钥进行加密和解密

同一个比特进行两次xor之后就会回到最初的状态
能够产生不可预测的比特序列,对于密码技术贡献巨大,这种不可预测的比特序列称为随机数。

由于无法判断得到的是不是正确的明文,因此一次性密码本(one-time pad)是无法破译的。一次性密码本是无条件安全的(unconditionally secure)。


对称密码算法:

  • DES:Data Encryption Standard,可以短时间内破解
  • 3DES:Triple-DES
  • AES:Advanced Encryption Standard。1997年,NIST开始公开募集AES;1998年,满足NIST募集条件的密码算法共15个;1999年,在募集到的15个算法中,5个算法入围了AES最终候选算法名单;2000年10月2日,Rijndael力压群雄,被选为AES标准算法。Rijndael是由比利时密码学家Joan daemen和Vincent Rijmen设计的分组密码算法。

 

第4章 分组密码的模式——分组密码是如何迭代的

分组密码的模式:DES和AES都属于分组密码,它们只能加密固定长度的明文。如果需要加密任意长度的明文,就需要对分组密码进行迭代,而分组密码的迭代方法就称为分组密码的“模式

  • ECB模式: Electronic code book mode(电子密码本模式),将明文分组后直接加密
  • CBC模式: Cipher block chaining mode(密码分组链接模式)
  • CFB模式: Cipher feed back mode(密文反馈模式)
  • OFB模式: Output feed back mode(输出反馈模式)
  • CTR模式: Counter mode(计数器模式)

 

第5章 公钥密码——用公钥加密,用私钥解密

公钥密码:公钥加密,私钥解密
Diffie-Hellman:解决密钥配送问题

公钥密码( public - key cryptography)中,密钥分为加密密钥和解密密钥两种。发送者用加密密钥对消息进行加密,接收者用解密密钥对密文进行解密。加密密钥是发送者加密时使用的,而解密密钥则是接收者解密时使用的。也就是说,解密密钥从一开始就是由接收者自己保管的,因此只要将加密密钥发给发送者就可以解决密钥配送问题了,而根本不需要配送解密密钥。

RSA(公钥密码算法):现在公钥密码的事实标准。
其他公钥密码:ElGamal、Rabin、椭圆曲线密码。

 

第6章 混合密码系统——用对称密码提高速度,用公钥密码保护会话密钥

混合密码系统:用对称密码提高速度,用公钥密码保护会话密钥。
伪随机数生成器,用于产生会话密钥。

 

第7章 单向散列函数——获取消息的“指纹”

单向散列函数(one-way hash function也叫消息摘要函数、哈希函数、杂凑函数),一个输入+一个输出,输入称为消息message,输出称为散列值(hash value也叫消息摘要或指纹),散列值(长度固定,与消息长度无关)用来检测消息的“指纹”(数据的完整性)。

单向散列函数性质:

  1. 根据任意长度的消息计算出固定长度的散列值
  2. 能够快速计算出散列值
  3. 消息不同散列值也不同
  4. 具备单向性

单向散列函数例子:

  • MD4和MD5,散列值128bit
  • SHA-1(160bit)、SHA-256、SHA-384、SHA-512(统称SHA-2)
  • RIPEMD-160
  • SHA-3

 

第8章 消息认证码——消息被正确传送了吗

消息认证码:一种确认完整性并进行认证的技术,作用:判断消息是否被篡改以及是否有人伪装成发送者发送了该消息。

消息认证码的输入:任意长度的消息+收发双方之间共享的密钥。
输出:固定长度的数据,称为MAC。

消息的完整性(Integrity),就是“消息没有被篡改”这一性质,完整性也叫一致性。
消息的认证(authentication)指的是“消息来自正确的发送者”这一性质。

消息认证码应用实例:
SWIFT(环球银行金融电信协会)、IPsec、SSL/TLS

 

第9章 数字签名——消息到底是谁写的

数字签名(digital signature)-两种行为:
1、生成消息签名:sender根据消息内容计算数字签名的值,意味着“我认可该消息的内容”。
2、验证消息签名:检查该消息的签名是否真的属于sender。
使用各自专用的密钥完成

数字签名对签名密钥和验证密钥进行了区分,使用验证密钥是无法生成签名的。此外,签名密钥只能由签名的人持有,而验证密钥则是任何需要验证签名的人都可以持有。
实现数字签名,可以采用公钥密码(RSA)机制。

数字签名的方法:
1、直接对消息签名
2、对消息的散列值签名

 

第10章 证书——为公钥加上数字签名

证书-为公钥加上数字签名
公钥证书(Public-Key Certificate, PKC),由认证机构(Certification Authority, CA)施加数字签名。简称证书。

认证机构就是能够认定“公钥确实属于此人”并能够生成数字签名的个人或者组织。认证机构中有国际性组织和政府所设立的组织,也有通过提供认证服务来盈利的一般企业,此外个人也可以成立认证机构。

证书标准规范X.509,X.509证书大体上包含以下3部分内容:
  • 签名前的证书——签名对象的信息
  • 数字签名算法——对证书签名时所使用的算法
  • 数字签名——对证书施加的数字签名

 

其他

SSL/TLS是世界上应用最广泛的密码通信方法。比如说,当在网上商城中输人信用卡号时,我们的Web浏览器就会使用 SSL/TLS进行密码通信。使用SSL/TLS可以对通信对象进行认证,还可以确保通信内容的机密性。


SSL( Secure Socket Layer,安全套接层)是1994年由网景( Netscape)公司设计的一种协议,并在该公司的Web浏览器 Netscape Navigator中进行了实现。随后,很多Web浏览器都采用了这一协议,使其成为了事实上的行业标准。

SSL已经于1995年发布了30版本。


TLS( Transport Layer Security,传输层安全)是IETF在SSL3.0的基础上设计的协议。在1999年作为RFC2246发布的TLS1.0,实际上相当于SSL3.1。

 

PGP,密码技术的完美组合
PGP是于1990年左右由菲利普·季默曼( Philip zimmermann)个人编写的密码软件,现在依然在世界上被广泛使用,具备现代密码软件所必需的几乎全部功能。PGP这个名字是 Pretty good privary(很好的隐私)的缩写。你有没有过发送“性命攸关”的邮件的经历呢?自己发送的邮件如果能够平安到达指定的接收者就能活命,相反,如果万一被人窃听到就没命了。出于政治等原因,世界上有很多人都处于这样一种状况之中,而PGP就是为了保护处于这样极端状况下的人们的隐私而开发的密码软件。PGP的历史可谓是一波三折,让人感觉像是在读一部谍战小说。如果想了解PGP幕后的故事,可以读一读 Garfinkel所著的PGP: Pretty good privacy一书。


PGP可以在MS-DOS、 Windows、UNIX、 Macintosh等很多平台上运行,版本包括商用版和免费版。此外还有一个由GNU遵照 Opengpg(RFC4880)规范编写的叫作 Gnupg(GNU Privacy guard)的免费软件。

posted on 2020-06-15 11:39  yin'xiang  阅读(355)  评论(0编辑  收藏  举报