课题A:确定高级密码学概念
密码学元素
密码学的学科包含几个自概念:
密码学元素 | 描述 |
---|---|
混淆(Confusion) | 使加密密钥和密文之间的关系变得尽可能复杂和隐蔽的技术。混淆可以防止攻击者选择性的生成明文消息的加密版本并寻找他们关系中的某些模式。 |
扩散(Diffusion) | 即使在明文输入中发生轻微变化也能使密文温升剧烈变化的一种技术。扩散能防止攻击者选择性的确定由相同密钥加密的部分消息。 |
冲突(Collision) | 两个不同的明文输入产生完全相同的密文输出。如果加密算法易受冲突影响,其完整性就会减弱,并且攻击者可以用另一个能产生相同密文的消息替换的这个消息。 |
模糊(Obfuscation) | 正如你所见,模糊处理使得源代码变得更加难以阅读。因此模糊处理与加密类型。但是模糊处理中不涉及密钥的使用——任何知道模糊算法的人都能将代码转换回可读形式。因此模糊代码的安全性比加密数据更低。 |
伪随机数生成(PRNG) | 这是一种由算法产生伪随机数的过程,伪随机数是指由着近似随机性的数字,但不是真正的随机。伪随机数是基于初始种子状态生成的,这是定义数字生成第一阶段的一个数字。然后种子状态通过一个数学公式输出伪随机数。加密密钥的生成倾向于使用伪随机数。 |
完全正向保密(Perfect forward secrecy/PFS) | 当某个会话期间使用的一个密钥受到损害时,这种会话加密特性能确保之前由该密钥加密的数据不会受到影响。如果攻击者恰好窃取到私钥,PFS可以防止攻击者破坏以往的会话。 |
散列概念
散列一个明文输入会产生一个固定长度的密文输出,被称为消息摘要,反之则不然。但是如果攻击者在彩虹表中计算大量消息摘要,则明文输入可能是可预测的。密码盐(cryptographic salt)通过为每个明文输入输入添加一个伪随机值来缓解彩虹表攻击的影响。它能对摘要造成重大改变。如果盐本身发生变化,那么使用不同盐的相同明文输入将生成两个独特的摘要。
盐值通常与散列数据存储在一起,因此盐本身不会被隐藏,但即使攻击者知道特定会话的盐值,他们也需要结合这个盐值来计算新的唯一彩虹表,这是不可行的。在任何包含密码散列的安全系统中,为散列添加盐值都是必须的。
与密码盐有关的是一个临时数(nonce)。临时数是仅指使用一次的数字。盐可以在会话之间改变,但也可以保持不变——正如其名称所暗示的,临时数永远不会重复。鉴于盐通常用于散列密码的情况下,认证协议中更常使用临时数来防止重放攻击。
盐和临时数都可以被认为是初始化向量(IV),这是一种通用术语,描述了用于初始化加密任务的任何指,以确保么米格输出都是唯一的。虽然IV通常用于双向加密方法而非单向散列的环境下,但这些术语经常被混合使用。
数据状态
有三种主要的数据状态,每种状态都有各自的密码相关性。
- 静止数据(Data at reset)主要是指被存储在各种介质上的任何数据,不会从一种介质移动到另一种介质。可能禁止的数据类型的示例包括存储在数据库中的财务信息,归档试听媒体,操作策略和其他管理文档,系统配置数据等等。根据其敏感程度的级别,禁止数据可以由管理数据的软件或存储数据的硬件进行加密。在发生违规事件时,加密的静止数据通过防止攻击者向公众或其他未授权方传播私人数据支持了数据的机密性。
- 传输中的数据(Data in transit)主要是指在媒介之间移动的任何数据,例如通过专用网络或互联网传输。可能正在传输的数据类型的示例包括网站流量,远程访问流量,云存储库之间的数据同步等等。在数据可以被认为是静止之前,它通常会在计算机之间传输。加密这些数据能防止中间人攻击危及传输通道和流经它的任何数据。
- 正在使用的数据(Data in use)是指当前正在被创建,删除,读取或写入的任何数据。可能正在使用的数据类型的示例包括在文字处理应用程序中打开的文档,当前正在被修改的数据库数据,操作系统运行时生成的时间日志等等。当用户使用数据时,这些数据通常需要先进行解密,因为它从静止状态变为使用状态。数据在整个工作会话中可能会保持未加密状态,使其处于危险之中。但是有些机制能够加密存储在内存中的数据,使第三方无法解码信息。
密钥交换
密钥交换(Key exchange)是指加密密钥在实体之间传输时使用的任何方法,以便能够使用加密算法。
为了使发送者和接受者能交换加密消息,每一方都必须准备好加密被发送的消息并解密被接收的消息。他们需要准备的内容取决于所使用的加密技术。如果他们使用代码,则两者都需要相同的代码薄副本。如果他们使用密码(cipher),他们将需要适当的密钥:
- 如果密码是对称密钥密码,则两者都需要相同密钥副本。
- 如果密码是具有公钥/公钥属性的非对称密钥密码,则任何需要加密消息的实体都需要收件人的公钥。
密钥交换有两种基本类型:带内(in-band)和带外(out-of-band)。带内密钥交换使用与共享数据相同的路径,而带外交换则使用不同的路径,例如电话呼叫或实际会议。对称密钥加密需要带外密钥交换以避免密钥被拦截。、
数字证书
数字证书(digital signature)是以用户私钥加密的消息摘要。非对称加密算法可以与散列算法一起使用来创建数字签名。发送方创建消息文本的散列版本,然后使用发送方的私钥加密散列本身。加密的散列作为数字签名附加到消息上。
发送方向接受方提供签名消息和相应的公钥。接收方使用公钥来解密签名以显示发送方的散列版本。这种方式可以证明发送方的身份,因为如果公钥和私钥不匹配,接收方就将无法解密签名。然后接收方用公钥创建文档的新散列版本并比较这两个散列值。如果它们匹配,就证明数据没有被修改。因此数字签名能同时支持身份验证和完整性。由于特定的加密散列值对发送方来说是唯一的,因此数字签名也支持不可否认性。
数字签名是一种散列,随后才是被加密的概念。如果没有加密,对方就能轻易地:
- 拦截文件和散列。
- 修改文件。
- 重新创建散列。
- 将修改后的文件和散列发送给接收方。