密码学基础

本文基于《深入浅出密码学——常用加密技术原理与应用》

密码学与数据安全导论

密码学与本书内容概述

在这里插入图片描述

密码编码学 cryptology

  • 密码使用学 cryptography

    一种为了达到隐藏消息含义目的而使用的密码书写的科学。

  • 密码分析学

    在某些情况下也指一种破译密码体制的技巧。

    密码分析是确保密码体制安全的唯一方法,它是密码学中不可缺少的部分。

本书的重点在于密码使用学,将详细介绍最重要的实用加密算法。这些实用的加密算法已经在相当长的时间内抵御各种密码分析,有的加密算法甚至需要几十年的时间才能破译。

在密码分析方面,本文将只提供破解已介绍的加密算法的最新结果,比如破译RSA方案的因式分解方法的记录。

密码使用学的三个分支

  • 对称算法 Symmetric Algorithm

    双方共享一个密钥,并使用相同的加密方法和解密方法。

    如今对称密码仍广泛应用于各个领域,尤其在数据加密和消息完整性检查方面

  • 非对称算法 Asymmetric Algorithm 也叫 公钥算法 Public-Key Algorithm

    与对称密码学一样,在公钥密码学中用户也拥有一个密钥;但不同的是,他同时还拥有一个公钥。

    非对称算法既可以用在诸如数字签名和密钥建立的应用中,也可用于传统的数据加密中。

  • 密码协议 Cryptographic Protocol

    粗略地讲,密码协议主要是针对密码学的应用

    对称算法和非对称算法可以看作实现安全Internet通信的基础。密码协议的一个典型示例就是传输层安全协议TLS方案,现在所有的Web浏览器都已使用这个方案。

对称密码学

基础知识

对称加密方案有三个别称:对称密钥(Symmetric-key)、秘密密钥(secret-key)和单密钥(single-key)。

四个基本概念

  • 明文(plaintext或cleartext)

  • 密文(ciphertext)

  • 密钥(key)

  • 密钥空间(key space):所有可能密钥组成的集合称为密钥空间。

一个可靠的加密体制中,所使用的加密算法和解密算法都是公开且已知的,唯一需要保密的就是密钥。

看上去,如果加密算法保密应该会使得这个系统更难破译,但保密的算法也可能是未测试的算法,而证明某个加密算法是否强壮的唯一方法就是将其公开,让更多的密码员对其进行分析。

简单对称加密:替换密码

替换密码的目标是加密文本,其思路非常简单:将字母表中的一个字符用另一个字符替换。

替换表是替换密码的关键,替换表就是替换密码的密钥。

破译替换密码的方法

  • 蛮力攻击或穷尽密码搜索

    在这里插入图片描述

    理论上来讲,蛮力攻击总是可以破解对称密码;而实际上蛮力攻击是否可行则取决于密钥空间的大小。如果在多台现代计算机上测试所有的密钥需要花费大量的时间,比如几十年,则这个密码可以称为对蛮力攻击是计算安全的
    替换密码的密钥空间 = 26 × 25 × . . . × 3 × 2 × 1 ≈ 2 88 替换密码的密钥空间 = 26\times 25 \times ... \times3 \times 2 \times 1 \approx 2^{88} 替换密码的密钥空间=26×25×...×3×2×1288
    即使使用上万台高端PC来搜索这个密钥也需要耗费几十年的时间。似乎替换密码算法是安全的。然而这个结论是错误的,因为还存在着另一种更强大的攻击方法。

  • 字母频率分析

    蛮力攻击将密码看作一个黑盒,即我们不会分析密码的内部结构。使用字母频率分析可以轻易地破解替换密码。

    替换密码最大的缺点在于:每个明文符号总是映射到相同的密文符号。这就意味着明文中的统计属性在密文中得到了很好的保留。

    在实际字母频率攻击中,我们可以利用一下几种语言特性

    1. 密文中字母的频率分布与给定语言有着紧密的联系,即使在相对较短的密文中也成立。尤其是最常用的字母总是很容易被认出来。
    2. 第一条特性可以推广到查看连续两个、三个或者四个等密文字母。
    3. 假设我们发现了单词分隔符,就很轻易地找到一些高频的段单词,比如THE、AND等。

    在破译替换密码体制时,我们通常会将以上列举的是那种特性结合起来使用。

由替换算法破译方法可知:

  1. 好的密码应该隐藏被加密文本的统计属性,密文字符看上起应该是而杂乱无章的。
  2. 此外,对一个强壮的加密函数而言,仅仅密钥空间大是不够的。

密码分析

密码分析概览

在这里插入图片描述

  1. 经典密码分析 Classical Cryptanalysis,也叫数学密码分析

    古典密码分析可以理解为从密文y中恢复明文x,或从密文y中恢复密钥k的一门科学。

    密码分析可分为两类:一类是发现加密方法内部结构的分析攻击;另一类是将加密算法看作黑盒,试图测试所有可能密钥进行破解的蛮力攻击

  2. 实施攻击 Implementation Attack

    通过旁道分析获得密钥,比如测量处理私钥的处理器的能耗。

    实施攻击对大多数情况下针对的是攻击者可以物理访问的密码体制,绝大多数针对远程系统的基于Internet的攻击通常不会考虑这种方法。

  3. 社会工程攻击 Social Engineering Attack

    通过行贿、勒索、跟踪或侦探等手段来获得密钥,这种攻击方式总是与人有关。

实施攻击和社会工程攻击在实际应用中非常强大。但本书假设所有密码破译都基于数学密码分析。

Kerckhoffs原理

在这里插入图片描述

合适的密钥长度

只有蛮力攻击是已知的最好的攻击方法时,我们才会考虑讨论对称加密算法中密钥长度的问题。对称算法和非对称算法所要求的密钥长度完全不同。比如长度为80位的对称密钥所提供的安全性和1024位的RSA密钥的安全性相当。

下表给出了对称密码不同的密钥长度抵抗蛮力攻击的能力。

在这里插入图片描述

对于安全对称密码而言,大的密钥空间只是必要但不充分条件。这个密钥也必须足够强壮,能够抵御分析攻击

模运算与多种古典密码

本节将以两个古典密码为例来介绍整数的模运算。尽管古典密码不再适用,但是模运算在现代密码学中仍然占据重要的地位,在非对称算法中尤其如此。

本节将细致的讨论凯撒密码和仿射密码。

凯撒密码:简单地将字母表中的字母向后移动相同的位数,当到达字母表的尾部时,再从头开始循环。这种循环方式类似于模运算中的数字。

为了让字母的计算更切实可行,我们可以给字母表里的每个字母赋一个值。这样使用凯撒密码加密就变成了与一个固定值的模加法。除了简单地与某个常数相加外,也可以使用与一个常数相乘的方法,这就是我们将要介绍的仿射密码(affine cipher)

模运算

几乎所有的加密算法(即对称加密算法和非对称加密算法)都基于有限个元素的运算。而我们习惯的绝大多数数集都是无穷的,比如自然数集和实数集。模运算则是在有限整数集中执行算数运算的简单方法。

在这里插入图片描述

  1. 余数的计算
  2. 余数不唯一
  3. 等价类中所有成员的行为等价。选择易于计算的。
  4. 从数学角度看,选择等价类中的任何一个元素对最后的结果都没有任何影响。

整数环

在这里插入图片描述

需要关注环的以下特点

  1. 如果环内任何两个数相加或相乘得到的结果始终在环内,那么这个环就是封闭的。

  2. 加法和乘法是可结合的,即加法和乘法均满足结合律。

  3. 加法中存在中性元素0,使得下式成立
    对每个 a ∈ Z m 都有 a + 0 = a   m o d   m 。 对每个a\in\Z_m都有a+0=a\ mod \ m。 对每个aZm都有a+0=a mod m

  4. 环中的任何元素a都存在一个负元素-a,使得 a + (-a) = 0 mod m,即加法逆元始终存在

  5. 乘法中存在中性元素1,使得下式成立
    对每个 a ∈ Z m 都有 a × 1 = a   m o d   m 。 对每个a\in\Z_m都有a \times 1=a\ mod \ m。 对每个aZm都有a×1=a mod m

  6. 不是所有元素都存在乘法逆元。
    假设 a ∈ Z ,乘法逆元 a − 1 可以定义为: a ⋅ a − 1 = 1   m o d   m 。 假设a\in\Z,乘法逆元a^{-1}可以定义为:a \cdot a^{-1}=1\ mod \ m。 假设aZ,乘法逆元a1可以定义为:aa1=1 mod m
    如果a的乘法逆元存在,则可以除以a。即一个元素的乘法逆元存在时才能作为除数。

  7. 找出某元素的乘法逆元比较困难,但是可以通过一种简单方法来判断一个给定元素a的逆元是否存在:
    当且仅当 g c d ( a ,   m ) = 1 , a ∈ Z 存在乘法逆元 a − 1 。 其中 g c d 表示最大公约数,即同时能除 a 和 m 的最大整数。 如果 g c d ( a ,   m ) = 1 ,那么 a 和 m 就被称作为互素或互质。 即:若 a 和 m 互素,则 a ∈ Z 存在乘法逆元 \begin{align} & 当且仅当gcd(a,\ m)=1,a\in\Z存在乘法逆元a^{-1}。\\ & 其中gcd表示最大公约数,即同时能除a和m的最大整数。 \\ & 如果gcd(a,\ m)=1,那么a和m就被称作为互素或互质。\\ & 即:若a和m互素,则a\in \Z存在乘法逆元 \end{align} 当且仅当gcd(a, m)=1aZ存在乘法逆元a1其中gcd表示最大公约数,即同时能除am的最大整数。如果gcd(a, m)=1,那么am就被称作为互素或互质。即:若am互素,则aZ存在乘法逆元

    在这里插入图片描述

  8. 对环内的元素,满足乘法的分配律

8个特点简言之,我们可以在环内进行加法,减法和乘法运算。

环和带模运算的整数运算在公钥密码学中占有非常重要的位置。

实际应用中涉及的整数长度通常都是150到4096位,高效的模运算显得尤为重要。

移位密码(凯撒密码)

移位密码实际上是替换密码的一个特例

移位密码的加密过程和解密过程如下:

在这里插入图片描述

移位密码一点都不安全,针对移位密码的攻击方式有两种:

  1. 密钥空间共有26个元素。可以采用蛮力攻击方法。
  2. 与替换密码一样,也可以使用字母频率分析方法。

仿射密码

在这里插入图片描述

在这里插入图片描述

公钥密码学简介

对称密码学已经使用了至少4000年,而公钥密码学则是崭新的领域,它最早于1967年被公开介绍。

对称密码学与非对称密码学

回顾对称密码学

绝大多数公钥算法都基于数论函数。对称密码的目标通常是让输入和输出之间不存在紧凑的数学描述关系。

一个对称系统必须满足一下两个属性:

  1. 加密和解密使用相同的密钥
  2. 加密函数和解密函数非常类似

现代对称算法都非常安全快速,并被广泛使用,比如AES或3DES。然而,对称密码方案也存在一些缺点。

  1. 密钥分配问题:密钥分配时必须使用一个安全的信道。
  2. 密钥个数:即解决了密钥分配问题,我们还可能需要处理大量的密钥。在拥有n个用户的网络中,如果每对用户之间都需要一个单独的密钥对,则整个网络需要的密钥对数是:n*(n-1)/2
  3. 对欺骗没有防御机制

公钥密码学的基本原理

为了克服这些缺点,有了这一思路:加密这用来加密消息的密钥没有必要保密。基于这一思路有了一个方案:接受者可以公开一个众人皆知的加密密钥,接受者还拥有一个用于解密的匹配密钥,即密钥由两部分组成:公开部分Kpub和保密部分Kpr

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

从目前的的讨论可知:非对称密码学看上去是一个实现安全应用非常合适的工具。现在的问题是如何构建一个公钥算法。后面介绍的公钥算法都来自于同一个公共原理,即单向函数

在这里插入图片描述

在这里插入图片描述

公钥密码学的实用性

安全机制

公钥算法的主要安全机制(主要功能)

  • 密钥建立
  • 不可否认性
  • 身份标识
  • 数据加密

公钥方案的主要缺点:计算量非常大,算法非常慢。

因此,实际的数据加密基本上不使用公钥密码学。

对称加密在提供不可否认性和密钥建立功能方面表现平平,但是数据加密速度很快。公钥算法在密钥建立和提供不可否认性方面表现很好。二者可以很好的互补,为充分利用这两者的优点,更实用的协议通常是混合协议,即对称密码算法和公钥算法的综合,如常用与安全Web连接的SSL/TLS协议,或作为Internet通信协议一部分的IPsec协议

重要的公钥算法

具有实用性的公钥算法总共只有三种类型

  • 整数分解方案:因式分解大整数是非常困难的。这类算法的代表是RSA。
  • 离散对数方案
  • 椭圆曲线方案

密码长度与安全等级

在这里插入图片描述

公钥算法的基本数论知识

欧几里得算法

欧几里得算法用于计算两个正整数的最大公约数

在这里插入图片描述

扩展的欧几里得算法

扩展的欧几里得算法可以用来计算模逆元

在这里插入图片描述

在这里插入图片描述

欧拉函数

在这里插入图片描述

在这里插入图片描述

使用定理6.3.1的前提是:我们必须知道m的因式分解。

费马小定理与欧拉定理

费马小定理

费马小定理在素性测试和公钥密码学的其他很多方面都非常有用。在做指数模操作时,此定理得到的结果将非常令人惊讶。

在这里插入图片描述

在这里插入图片描述

欧拉定理

将费马小定理的模数推广到任何整数模,就可以得到欧拉定理

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值