《图解密码技术 (密码)》第一章 —— 环游密码世界


一、密码

1、Alice 和 Bob

名称说明
Alice一般角色
Bob一般角色
Eve窃听者,可窃听通信内容
Mallory主动攻击者,可妨碍通信、伪造消息等
Trent可信的第三方
Victor验证者

接下来,“密码”一词指的是 安全传送消息的方法,即cryptography,通常包括 密码算法和密钥等部分,并不是我们俗称的,在 网站和ATM中输入的那种“密码",即 password、passphrase 或 pin,为了以示区别,本书中将后者统一翻译为 “口令“

2、发送者、接收者、窃听者

 发出邮件的 Alice 称为 发送者sender,而收到邮件的 Bob 则称为 接收者receiver,被发送的信息有时也统称为 消息message在这里插入图片描述
 在邮件传输的过程中,存在被恶意 窃听者 偷看的可能性。
窃听者Eve 并不一定是人类,有可能是安装在通信设备上的某种 窃听器,也可能是安装在邮件软件和邮件服务器上的某些 程序
在这里插入图片描述

3、加密与解密

 Alice 可以将消息 加密 (encrypt),Bob 需要对加密过的消息进行 解密 (decrypt) 后才能看到原始的消息。

  • 明文:加密之前的消息。
  • 密文:加密之后的消息。

 将消息加密后发送的话,即使消息被窃听,窃听者得到的也只是密文,而无法得知加密前的明文内容。

4、密码保证了密码的机密性

 Alice 和 Bob 通过运用 密码 (cryptography) 技术,保证了邮件的 机密性 (confidentiality),即为了不让 窃听者Eve 读取邮件的内容。

5、解密与破译

  • 解密:正当的接收者 将密文还原为明文称为 “解密”。
  • 破译:接收者以外的其他人 试图将密文还原为明文,则称为 密码破译 cryptanalysis,简称为 破译,有时也称为 密码分析
  • 破译者:进行破译的人称为破译者 (cryptanalyst)。

二、对称密码与公钥密码

1、密码算法

 用于解决复杂问题的步骤,通常称为 算法 algorithm
 从明文生成密文的步骤,也就是加密的步骤,称为 “加密算法”,而解密的步骤则称为 “解密算法”
 加密、解密的算法合在一起统称为***密码算法

2、密钥

 密码算法中需要 密钥 key。现实世界中的 “钥”,是像钥匙的微妙而复杂的小金属片。
 密码算法中,则是像 203554728568477650354673080689430768 这样的一串非常大的数字。在这里插入图片描述

3、对称密码与公钥密码

 根据 密钥的使用方法,可以将 密码 分为 对称密码公钥密码

  • 对称密码 symmetric cryptography 是指在加密和解密时 使用同一密钥 的方式 (关于对称密码,我们将在 第3章 和 第4章 详细讲解)。
  • 公钥密码 public-key cryptography 是指在加密和解密时使用 不同密钥 的方式。因此,公钥密码又称为 非对称密码 asymmetric cryptography (关于公钥密码,我们将在 第5章 详细讲解)。在这里插入图片描述

对称密码 有多种别名,如 公共密钥密码 common-key cryptography、传统密码 conventional cryptography、私钥密码 secret-key cryptography、共享密钥密码 shared-keycryptography等。

4、混合密码系统

 将 对称密码和公钥密码 结合起来的方式称为 混合密码系统 hybrid cryptosystem,这种系统结合了 对称密码和公钥密码的优势 (关于混合密码系统,我们将在 第6章 详细讲解)。


三、其他密码技术

 密码技术所提供的并不仅仅是 基于密码的机密性,用于检验消息是否被篡改的完整性、以及用于 确认对方是否是本人的认证 等都是密码技术的重要部分。

1、单向散列函数

单向散列函数 是一种 保证完整性 的密码技术。关于单向散列函数,我们将在 第7章详细讲解。
 想象一下,我们在网页下载某个软件,如何知道我们下载的软件和开发者上传的是一样的没有被恶意植入或修改呢?
 为了防止该事件发生,软件发布者通常会在发布该软件的同时,发布该软件的 散列值1,散列值就是用 单向散列函数 one-way hash function 计算出来的数值。
 下载该软件的人可以自行计算所下载文件的散列值,然后与软件发布者公布的散列值进行对比。如果两个散列值一致,就说明下载的文件与发布者所发布的文件是相同的。

2、消息认证码

 为确认消息是否来自所期望的通信对象,可以使用 消息认证码 message authentication code 技术。消息认证码是一种能 够保证完整性提供认证 的密码技术 (关于消息认证码,我们将在 第8章 详细讲解)。
 通过使用 消息认证码,不但能够确认消息 是否被篡改,而且能够确认消息 是否来自所期待的通信对象

3、数字签名

 假设 Bob 刚刚收到了一封来自 Alice 的邮件,内容是 “以100万元的价格购买该商品”。

  • 伪装:邮件的发送者 (From: —栏的内容) 很容易被伪造,因此确实存在别人 伪装 spoofing 成 Alice 的风险。
  • 篡改:有可能 Alice 原本写的是 “1万元”,而在邮件传输的过程中被某些别有用心的人进行了 篡改,将 1万元 改成了 100万元。
  • 否认:还有这样一种风险,即 Alice 真的向 Bob 发送了内容为 “以100万元的价格购买该商品” 的邮件,但后来 Alice 又不想买了,于是便谎称 “我当初根本没发过那封邮件”。像这样 事后推翻自己先前主张的行为,称为 否认 repudiation

 能够防止上述伪装、篡改和否认等威胁的技术,就是 数字签名 digital signature
 用上面的例子来说,Alice 可以对 “以100万元的价格购买该商品” 的内容加上数字签名后再通过邮件发送,而 Bob 则可以对该数字签名进行 验证 verify。通过这样的方式,不但可以 检测出伪装和篡改,还能够 防止事后否认
 数字签名是一种能够确保完整性、提供认证并防止否认的密码技术 (关于数字签名,我们将在 第9章 详细讲解)。

4、伪随机数生成器与临时密钥 (会话密钥)

伪随机数生成器 Pseudo Random Number Generator, PRNG 是一种能够模拟产生 随机数列 的算法。随机数和密码技术有关,这样说大家可能会感到意外,但实际上随机数确实承担着 密钥生成 的重要职责。
 例如在 Web 中进行 SSL/TLS 通信时,会生成一个 仅用于当前通信临时密钥 (会话密钥),这个密钥就是基于伪随机数生成器生成的。如果生成随机数的算法不好,窃听者就能够推测出密钥,从而带来通信机密性下降的风险。
 关于伪随机数生成器以及随机数的话题,我们将在 第12章 详细讲解。


四、密码学家的工具箱

 上述六种技术统称为密码学家的工具箱:对称密码、公钥密码、单向散列函数、消息认证码、数字签名、伪随机数生成器。
 为了梳理之前讲过的内容,我们将信息安全所面临的威胁与用来应对这些威胁的密码技术之间的关系用一张图 (图1-8) 表来表示出来。在这里插入图片描述


五、隐写术与数字水印

 密码是一种能够让消息内容变得无法解读的技术,英文叫作 cryptography。
 除此之外,其实还有另外一种技术,它 不是让消息内容变得无法解读,而是能够隐藏消息本身,这种技术称为 隐写术 steganography

例如:
我们先准备一段话,
很容易看懂的就可以,
喜闻乐见的当然更好。
欢迎你尝试将另一句话嵌在这段话中,
你会发现这其实就是一种隐写术。(藏头诗)

 隐写术的目的是 隐藏消息本身,但如果搞清楚了嵌入消息的方法,也就可以搞清楚消息的内容。因此,隐写术并不能代替密码
数字水印技术 就运用了隐写术的方法。数字水印是一种将 著作权拥有者及购买者的信息 嵌入文件中的技术。但是仅凭数字水印技术是 无法对信息进行保密的
密码 隐藏的是 内容隐写术 隐藏的是 消息本身。通过将密码与隐写术相 结合,就可以同时产生两者所各自具备的效果。


六、密码与信息安全常识

 刚刚开始学习密码的人常常会对以下这几条感到不可思议,因为它们 有悖于 我们的一般性常识:

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

1、不要使用保密的密码算法

 “由公司自己开发一种密码算法,并 将这种算法保密,这样就能保证安全。”,这种想法是大错特错的,我们应该使用那些已经公开的、被公认为强度较高的密码算法。
 这样做的原因主要有以下两点:

1.1、密码算法的秘密早晚会公诸于世

1.2、开发高强度的密码算法是非常困难的

  密码算法的强度并不能像数学一样被严格证明,只能通过 事实来证明,如果专业密码破译者经过数年的尝试仍然没有破解某个密码算法,则说明这种算法的强度较高。
 试图通过 对密码算法本身进行保密 来确保安全性的行为,一般称为 隐蔽式安全性 (security by obscurity),这种行为是危险且愚蠢的。

2、使用强度低的密码比不进行任何加密更危险

 正确的想法应该是:与其使用低强度的密码,还不如从一开始就不使用任何密码。
 我的理解是,强度低的密码会给人一种安全感,有了这种安全感,人们就容易将重要信息大胆地加密放在网上,这无异于直接将重要的信息公开。但是不使用密码,人们就不会随便将重要的信息放在网上。

3、任何密码总有一天会被破解 (量子密码)

 无论使用任何密码算法所生成的密文,只要将 所有可能的密钥 全部尝试一遍,就总有一天可以破译出来。因此,破译密文 所需要花费的时间,与要 保密的明文的价值 之间的权衡就显得非常重要。
 严格来说,绝对不会被破解的密码算法其实 是存在的,这种算法称为 ==一次性密码本 (one¬time pad) , 但它并不是一种现实可用的算法。关于这个话题,我们会在 3.4节 详细探讨。
 此外,还有另外一种技术被认为有可能造就完美的密码技术,那就是 量子密码。关于量子密码,我们会在 15.4.1节 进行介绍。

4、密码只是信息安全的一部分

 我们还是回到 Alice 给Bob 发送加密邮件的例子。即便不去破解密码算法,也依然有很多方法能够知道 Alice 所发送的邮件内容。
 例如,攻击者可以不去试图破译经过加密的邮件,而是转而攻击 Alice 的电脑以获取加密之前的邮件明文。
 最近,社会工程学 (social engineering) 攻击开始流行起来。例如,办公室的内线电话响起,电话里说:“你好,我是IT部。由于需要对您的电脑进行安全检査,请您将密码临时改为XR2315。”而实际上拨打电话的有可能就是一名攻击者。
 上面提到的这些攻击手段,都与密码的强度毫无关系。要保证良好的安全性,就需要理解 “系统” 这一概念本身的性质。复杂的系统 就像一根由 无数个环节 相连组成的链条,如果用力拉,链条就会从其中 最脆弱的环节 处断开。因此,系统的强度 取决于其中 最脆弱的环节的强度
 最脆弱的环节并不是密码,而是人类自己。关于这个话题,我们会在最后一章进行深人的思考。


  1. 散列值 hash,又称哈希值、密码校验和 cryptographic checksum、指纹 fingerprint、消息摘要 message digest。 ↩︎

  • 21
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值