目录
6.1 密码学的历史里程碑
6.2 密码学的基本知识
6.2.1 密码学的目标
6.2.2 密码学的概念
6.2.3 密码数学
6.2.4 密码
6.3 现代密码学
6.3.1 密码密钥
6.3.2 对称密钥算法
6.3.3 非对称密钥算法
6.3.4 散列算法
6.4 对称密码
6.4.1 数据加密标准(DES)
6.4.2 三重DES
6.4.3 国际数据加密算法(IDEA)
6.4.4 Blowfish
6.4.5 Skipjack
6.4.6 高级加密标准
6.4.7 对称密钥管理
6.5 密码生命周期
凯撒密码:采用3字母位移。面对“频率分析”的攻击非常脆弱,英语中使用最频繁的字母:E、T、A、O、N、R、I、S、H。在加密的文本中找出常用的字母,用这些字母替换,可以尽快破解。也叫ROT3密码,轮转3密码。
1、保密性
在静止、传输、使用中的数据(活跃在内存中)的三种不同状态下始终保持私密。有两大类密码实现保密性,对称密码系统和非对称密码系统
2、完整性
确保数据没有被人未经授权而修改。消息完整性通过使用加密的消息摘要实现,这个摘要叫数字签名。
3、身份验证
用于验证系统用户所声称的身份。
4、不可否认性
向接受者保证,消息发自发送者,而且没有人冒充发送者,也可以防止发送者声称自己绝对没有发送过消息(否认消息)。不可否认性由公钥或者非对称密钥密码系统提供,秘密密钥或者对称密钥密码系统部提供不可否认性的保障。
1、明文消息
一条消息进入编码之前,叫明文消息。
2、密文消息
一条消息的发送者用一种密码算法给明文消息加密,生成一条密文消息。
所有密码算法都靠密钥维持安全。
1、布尔数学
0和1。
2、逻辑运算
与、或、非、异或。
3、模函数
一次出发运算之后留下的余数。
4、单向函数
便于为输入的没中过可能组合生成输出值的一种数学运算,但这一运算会导致无法恢复输入值。公钥加密系统全都建立在某种单向函数的基础之上。
5、Nonce
密码常通过给加密过程添加随机性来获得强度。做到这一点的方法之一就是使用Nonce。。Nonce是一个随机数,每当函数执行时,Nonce都会被一个在开始处理的那一刻生成的游戏性随机数替换。
6、零知识证明
你向某个第三方证明,你确实知道一个事实,但同时不把这个事实本身披露给该第三方,这样的机制借助密码学形成,通常通过口令和其他秘密鉴别符实现。
7、分割知识
当执行某项操作所要求的信息或者权限被分散到多名用户手中时,任何一个人都不会具有足够的权限来破坏环境的安全。这种把职责分离和双人控制融于一个解决方案的做法叫分割知识。
8、代价函数
你可以用代价函数从耗费陈本和时间的角度测量破解一个密码系统需要付出的努力衡量密码系统的强度。
对称加密密码具有两种基本类型:替代和换位。其它都是它们两个衍生。
1、代码与密码
代码作用于单词和短语,密码作用于字符和位。
2、移位密码
通过一种加密算法重新安排明文消息的字母,形成密文消息。
3、替换密码
通过加密算法用一个不同的字符替换明文消息的每个字符或者位。例如凯撒密码。
多表替换密码的例子,Vigenere密码系统。遇到周期分析的二阶式频率分析时就显得无能为力了,周期分析可以根据密钥的重复使用情况进行频率分析。
4、单次密本
是一种极其强力的一种替换密码。单词密本位明文消息中的每个字母使用一个不同的替换字母表。
把明文转换为位,用单次密本的位做异或运算,得到密文值。
优势:使用得当,能够不可破解。
劣势:生成、分发和保护所有的冗长密钥实在太难。由于密钥长度的关系,单次密本在现实中智能用于较短的消息。需要物理交换密本。
必须满足以下条件才能保证算法的完整性:
(1)单次密码本必须随机生成。
(2)单次密本必须处于物理保护之下。
(3)单次密本必须只用一次。
(4)密钥必须至少与将被加密的消息一样长。
凯撒密码、Vigenere(多表替换密码)、单次密本彼此很像。区别在于密钥长度,凯撒密码所用密钥的长度为1,Vignere密码使用的密钥要长一些(通常是一个词或者一句话),单次密本实用的密钥与消息本身一样长。
5、运动密钥密码
单次密本需要物理交换密本,为了解决这个困境,使用运动密钥密码,也叫书密码。选一本普通的书籍的某一段作为密钥。
6、块密码(分组密码)
在同一时间对整个消息执行加密算法。移位密码是块密码的一个例子。大多数现代加密算法都执行某类块密码。
消息被分成若干的组,对每组进行加密处理。
7、流密码
一次在消息流的一个字符或一个位上运行。凯撒密码是流密码个一个例子。单次密本也是一种流密码。
8、分组密码和流密码的比较
流密码不如分组密码安全和常用。
正确实施流密码的难点在于要生成一个真正随机而平衡的密钥流。许多流密码被破解的原因是它们的密钥流油冗余。
流密码的优势就是速度更快。
如果一个组 加密计算中出现了错误,这个组不能解密。如果流加密中的单个计算错误将随着流的其余部分传播。
9、初始化向量(IV)
可确保加密过程中不会产生某种模式的随机值。
如果不适用IV,那么使用两个相同的密钥加密的相同明文值将生成相同的密文。
10、混淆和扩散
密码算法依靠两种基本运算来隐藏明文消息,混淆和扩散。
明文和密钥之间有着极复杂的关系,迫使攻击者只靠改动明文和分析结果密文来确定密钥,这就是混淆。
明文中发生一点变化,会导致多个变化在整个密文中传播,这就是扩散。
替换带来的就是混淆,移位带来的就是扩散。
常用的三类算法:对称加密算法、非对称加密算法和散列算法。
早期密码学,通过隐匿算法获得安全。现代密码学把算法公开,通过一个或者多个密钥保密。
在数据加密标准(DES)出台的时候,56位密钥被认为是满足要求的,目前看需要128位。
密钥越长,破解系统的难度越大。
密钥空间有密钥的位数决定,因为由二进制表示,密钥空间数量=2^n,n为位数。通常的位数一般为128、256、512、1024。
对称密钥算法依靠一个分发给所有通信参与方的“共享秘密“加密密钥。这个密钥被所有各方用来加密解密消息,因此,发送者和接收者都拥有一个共享密钥拷贝。发送者用这个共享 秘密密钥加密,接收者用它来解密。
密钥主要用于进行海量加密,只提供保密性安全服务。对称密钥加密法也叫秘密密钥加密法和 私钥加密法。
对称密钥所需要的密钥数量=(N*(N-1))/2
对称密钥的缺点:
(1)密钥分发是主要问题。需要找到安全的电子通道,没有则线下分发(带外交换)。
(2)对称密钥加密法不提供不可否认性。每个人密钥相同,不知道是哪个人发出的。
(3)算法缺乏可伸缩性。通信规模较大,每个人都需要密钥,难度大。
(4)密钥必须经常重新生成。有参与者离开,密钥弃用。
对称密钥的优点:
加密运算速度快,适合硬件执行。密钥足够长的时候,很难被攻破。
非对称密钥算法也叫公钥算法,可提供解决方案消挕对称密钥加密的弱点。
在这些系统中,每个用户都有两个密钥:一个是所有用户共享的公钥,另一个是只有用户自已知道 并保守秘密的私钥。
换言之,如果公钥加密了一条消息,则只有对应的私钥可解密这条消息,反之 亦然。
支持数字签名技术。
述非对称密钥加密法的主要长处:
(1)添加新用户时只需要生成一个公钥-私钥对。提高了密码系统的扩展性。
(2)便于从非对称系统移除用户。
(3)有用户离开,无需重新生成密钥。
(4)可提供完整性身份验证和不可否认性。消息有特定来源。
(5)密钥分发简单。只需要把公钥提供给大家。
(6)不需要提前建立通信关联。
公钥加密法的主要弱点:
是运算速度缓慢。由于这一原因,许多需要安全传输大量数据的应 用先用公钥加密法建立连接,以此交换一个对称秘密密钥,然后安排剩余的会话使用对称加密法。
常用的对称密码系统:数据加密标准(DES)(重点)、三重DES(重点)、国际数据加密算法、Blowfish、Skipjack和高级加密标准(AES)。
由1977年美国政府颁布,目前认为已经是不安全的了。
DES 是一种 64 位块密码,共有 种运算模式:电子密码本模式(ECB)、密码块链接模式(CBC)、密码反馈模式(CFB)、输出反馈模式(OFB)、计数器模式(CTR)。
DES的所有模式都是一次在 64 位明文上进行运算,生成 64 位密文块。 DES 使用的密钥长
DES 通过长长的一系列异或(XOR)运算生成密文。这个过程会为每个加密/解密操作重复 16
3、密码反馈模式(CFB)
密码反馈(CFB)模式是 CBC 模式的流密码版。换句话说, CFB 针对实时生成的数据进行运算。
除将使用原先就有的数据变成使用实时数据这一点外, CFB 用的方式与 CBC 相同。
4、输出反馈模式(OFB)
在输出反馈(OFB)模式下, 与 CFB 模式几乎完全相同的方式运行。所不同的是, DES 不是对前一个密文块的加密版进行异或运算,而用一个种子值对明文进行异或运算。
OFB 模式的主要优势在于,不存在链接函数,传输错误不会传播, 影响后面块的解密。
5、计数器模式(CTR)
以计数器(CTR)模式运行的 DES 使用了与 CFB OFB 模式类似的流密码。但是,CRT 式不是根据以前的种子值结果为每次加密/解密运算创建种子值,而是利用一个简单的计数器为 每次运算增量。与 OFB 模式一样, CTR 模式不会传播错误。
CTR 模式允许你将一次加密或解密运算分解成多个独立的步骤。这使 CTR 模式非常
数据加密标准(DES) 56 位密钥不再被认为足以应对现代密码分析技术和 超级计算能力。但是,改进版 DES一—三重 DES(3DES) 却能通过相同的符法产生更安全的 加密。经历48轮运算。
依然是64位块密码,只是运行算法3次。
3DES 共有 4个版本。
1、DES-EEE3
使用3个不同的密钥给明文加密3遍。有效密钥长度为168位。
2、DES-EDE3
也使用 3个密钥,但是用一次解密运算替换了第二次加密运算。有效密钥长度为168位。
3、DES-EEE2
只使用两个密钥 K1 K2。有效密钥长度为112位
4、DES-EDE2
也使用两个密钥,但中间使用了一个解密运算。有效密钥长度112位
双重 DES 被拿来尝试过,但当它在攻击下被证明还不如标准 DES 更安全
国际数据加密算法块密码是在DES 算法缺乏充分密钥长度的情况下 开发出来的。
与 DES 一样, IDEA 64 位明文/密文块上运行。不过, IDEA 是用一个 128 位密 钥开始运算的。这个密钥被分解成 52 个16 位子密钥进行一系列运算。
IDEA 能在 DES 使用的5 种模式(ECB CBC CFB OFB CTR) 下运行。
Blowfish 块密码是 DES IDEA 的另一个替代方案。也在64位文本块上运行。
不过, Blowfish 允许密钥长度可变,其中最短为相对不太安全 32 位,最长为极强的 448 位,从而进一步拓展了 IDEA 的密钥强度。显而易见,密钥的加长 会导致加密/解密时间相应增加。但时间试验证明, Blowfish 这种算法比 IDEA DES 的速度要 快得多。
使用了预白化和白化后处理技术。
公众开放 Blowfish, 使用它不需要任何许可证。
与许多块密码一样, Skipjack在64 位文本块上运行。它使用 80 位密钥,支持 DES 支待的 4种运行模式。 Skipjack 很快被美国政府接受提供支持 Clipper Capstone 加密芯片的密码例程。
它支持加密密钥托管,被两家政府机构托管。
Skipjack Clipper 芯片并不受密码界欢迎,这在很大程度上是因为美国政府的现行托管规
Rijndael(读作 “rhine-doll")块密码已被选择用来代替 DES。
高级加密标准(AES)密码允许使用 种密钥强度: 128 位、 192 位和 256 位。
1、创建和分发对称密钥
用于安全交换秘密密钥的方法主要有三种:线下分发、公钥加密和 Diffie-Helhnan 密钥交换算法。
(1)线下分发
每种线下必要分发都有自己的固定缺陷。
(2)公钥加密
首先利用公钥加密建立一个初步通信连接。这个连接成功建立且各方相互验证 身份后,他们便通过这个安全的公钥连接交换秘密密钥。
(3)Diffie-Hellman
有时,无论是公钥加密还是线下分发都不够用。双方可能需要相互直接沟 通,但他们之间又没有物理手段可用来交换密钥材料,而且也没有现成的公钥基础设施便于交 换秘密密钥。这种情况下,诸如 Diffie-Hellman 的密钥交换算法会被证明是最实用的机制。
2、存储和销毁对称密钥
两个原则:
(1)绝不将加密密钥与被加密数据保存在同一个系统里
(2)对于敏感密钥,考虑安排两个人各持一半片段。这两人以后必须同时到场才能重建整
销毁一个密钥以将一名用户从一个对称 密码系统剔除是很难实现的事惰,这也是机构转而选用非对称算法的主要原因之一。
3、密钥托管和恢复
密钥托管的方法有两种:
(1)公平密码系统。
用于通信的秘密密钥被分解成两个或多个片段,每个 片段都交付一个独立第三方保管。每个密钥片段都不能单独发挥功效,但各个片段重新组合到 一起可以形成秘密密钥。政府部门得到可以访问特定密钥的合法授权后,要向每个第三方出示 法庭命令的证据,然后才能重新组合秘密密钥。
(2)受托加密标准
该标准是前文所述的 Skipjack 算法的基础。
摩尔定律:,最先进微处理器的处理能力大约每两年会提高一倍。这意味着, 处理器迟早会达到随意猜出通信所用加密密钥的强度等级。
以下是可供安全专业人员使用的算法和协议管治控制: