导图社区 OSG9第六章 密码学和对称密钥算法
第六章 密码学和对称密钥算法,CISSP(Certification for Information System Security Professional)即信息系统安全专业认证,这一证书代表国际信息系统安全从业人员的权威认证
编辑于2023-07-14 11:28:53 广东关于GBT 35273—2020个人信息安全规范的思维导图,本标准规定了开展收集、存储、使用、共享、转让、公开披露、删除等个人信息处理活动应遵循的原则和安全要求。
CISSP(Certification for Information System Security Professional)即信息系统安全专业认证,这一证书代表国际信息系统安全从业人员的权威认证
CISSP(Certification for Information System Security Professional)即信息系统安全专业认证,这一证书代表国际信息系统安全从业人员的权威认证
社区模板帮助中心,点此进入>>
关于GBT 35273—2020个人信息安全规范的思维导图,本标准规定了开展收集、存储、使用、共享、转让、公开披露、删除等个人信息处理活动应遵循的原则和安全要求。
CISSP(Certification for Information System Security Professional)即信息系统安全专业认证,这一证书代表国际信息系统安全从业人员的权威认证
CISSP(Certification for Information System Security Professional)即信息系统安全专业认证,这一证书代表国际信息系统安全从业人员的权威认证
第六章 密码学和对称密钥算法
6.1 密码学基本知识
密码可为已存储(静态)、通过网络传送(传输中/动态)和存在于内存(使用中/处理中)的敏感信息提供保密性、完整性、身份认证和不可否认性保护
6.1.1 密码学的目标
1. 保密性
保密性是指为存储的信息或个人和群体之间的通信保守秘密,它或许是被提得最多的一 个密码系统目标
两大密码系统
对称密码系统(symmetric cryptosystem) ,使用一个共享秘密密钥,提供给密码系统的所有用户
非对称密码系统(asymmetric cryptosystem) ,使用为系统每个用户单独组合的公钥和私钥
2. 完整性
完整性(integrity)确保数据没有在未经授权的情况下被更改。
消息完整性可通过使用加密的消息摘要来实现;这个摘要被称为数字签名(digitalsignature)
3. 身份认证
身份认证(authentication)用于验证系统用户自称的身份,是密码系统的一项主要功能
挑战-应答协议
4. 不可否认性
不可否认性(non-repudiation) 向接收者保证:消息发自发送者,而且没有人冒充发送者。
不可否认性由公钥或非对称密钥密码系统提供
6.1.2 密码学的概念
明文(plaintext):一条消息在进入编码形式之前被称作明文消息,用字母P表示
密文(ciphertext) :一条消息的发送者用一种密码算法给明文消息加密(encrypt) ,生成一条密文 消息,用字母C表示
所有密码算法都靠密钥(key)维持安全。多数情况下,密钥无非是一个数。它通常是一个极大的二进制数,但尽管如此,它也仅是一个数而已
密钥空间:是一个特定的数值范围,而某一特定算法的密钥在这个范闱内才有效
密钥空间由位大小(bit size)决定。位的大小其实也就是密钥内二进制位(0 和 1) 的数量。密钥空间指的是从全 0 密钥到全 1 密钥的范围。换句话说,密钥空间是从 0 到 2n 的数范围,其中 n是密钥的位大小。因此,一个 128 位密钥的值的范围是 0 到 2-128次方一大致是3.40282367 X 10-38
科克霍夫原则(Kerckhoffs's principle, 也叫科克霍夫假设):是说,只要密钥不被别人掌握,那么即便有关密码系统的一切都是公开的,密码系统也应该是安全的
创建和执行秘密代码和密码的技艺叫密码术(cryptography)
而与这套实践规范并行的另一项技艺叫密码分析(cryptanalysis)
密码术和密码分析合在一起,就是我们通常所说的密码学(cryptology)
代码或密码在硬件和软件中的具体实现叫密码系统(cryptosystem) 。
联邦信息处理标准(FIPS)140-2“ 密码模块安全要求“定义了可供联邦政府使用的密码模块的硬件和软件要求
6.1.3 密码数学
1. 布尔数学
布尔数学(Boolean mathematics) 为用于构成任何计算机神经系统的位和字节定义了规则。
一个电路只会有两种可能的状态一“开”和“关“,前者代表有电流存在,后者代表不存在电流
科学家把“开”状态称作真(true)值,把“关”状态称作假(false)值
逻辑运算往往在整个布尔词(而非单个值)上进行
2. 逻辑运算
AND(与):''AND” 运算(用符号 “^” 表示)检查两个值是否都为真,X 和 Y 都为真时输出值才为真
OR(或):“OR” 运算(用符号 “V” 表示)检查输入值中是否至少有一个为真
NOT(非):"NOT” 运算(用符号”~”表示)只是颠倒一个输入变量的
Exclusive OR(XOR异或):最重要和最常用的一 “ExclusiveOR" (异或)函数。数学文献把它写成 XOR 函数,通常用符号 “⊕” 表示,只有当一个输入值为真的时候, XOR 函数才返回一个真值
3. 模函数
模函数非常简单,它是一次除法运算之后留下的余数
模函数在等式中通常用其缩写 “mod" 表示,不过有时也用运算符"%”表示
4. 单向函数
单向函数(one-way function) 是能方便地为输入的每种可能组合生成输出值的—种数学运算,们这运算会导致无法恢复输入值。
5. nonce
密码常通过给加密过程添加随机性来获得强度。实现这一点的方法之一就是使用 nonce 。nonce 是一个随机数,可在数学函数中充当占位符变量。
nonce 每次被使用时都必须是一个唯一的数。比较有名的 nonce 例子之一是初始化向量(IV) ,这是一个随机位串,长度与块大小相同,针对消息执行 XOR 操作
零知识证明
你向某个第三方证明,你确实知道一个事实,但不把这个事实本身披露给该第三方常,通过口令和其他秘密鉴别符实现
分割知识
当执行某项操作所要求的信息或权限被分散到多名用户手中时,任何一个人都不会具有 足够的权限来破坏环境的安全
分割知识(split knowledge):这种把职责分离和双人控制融于一个解决方案的做法叫分割知识
密钥托管(keyescrow)概念是体现分割知识的最佳例子
采用密钥托管后,密码密钥会被给一个第三方妥善保存
恢复代理(recovery agent) :当满足某些条件时,第三方可以用托管密钥来恢复授权用户的访问权限或自行解密资料。这个第三方叫恢复代理
N 之取 M 控制(M of N Control)要求代理总数心):至少有 M 个代理同时在场时才能执行高安全级任务
八之取三控制:在被指派执行密钥托管恢复任务的八个代理中,只有当三个代理同时在场时才能从密钥托管数据库中提取一个密钥(其中 M 总是小于或等于 N) 。
代价函数(work function)或代价因子:从耗费成本和/或时间的角度测算破解一个密码系统时需要付出的努力,从而衡量密码系统的强度
6.1.4 密码
代码
代码/暗号:是由代表单词和矩语的符号构成的密码系统;尽管代码有时是保密的,但它们并不一定提供保密性保护
旗语和莫尔斯电码也是代码的例子
例如,一个间谍用“老鹰已着陆”这句话来报告敌军派来-架飞机这一消息。
需要记住,代码作用于单词和短语,而密码作用于字符、位和块。
密码
密码则始终要隐藏消息的真实含义。将消息从明文转变成密文
移位密码(transposition cipher):通过一种加密算法重新排列明文消息的字母,形成密文消息。解密算法只需要逆向执行加密位移便可恢复原始消息。
简单的移位密码颠倒了消息的字母顺序,使 “apple" 变成 “elppa”
替换密码(substitution cipher):通过加密算法用一个不同的字符替换明文消息的每个字符或位
最早成名的替换密码凯撒密码(Caesar cipher)
Vigenere 密码
单次密本(one-time pad)/Vemam 密码:是极其强力的一种替换密码。单次密本为明文消息中的每个字母使用一个不同的替换字母表,认为是无法破解的只使用一次,最安全
要求
单次密本必须随机生成
单次密本必须处于物理保护之下,以防泄露。
每个单次密本必须只使用一次。
密钥必须至少与将被加密的消息一样长
单次密本始终未被推广使用,这主要是因为人们实在难以生成、分发和保护所要求的冗长密钥
单次密本算法之所以强度高,主要是因为它使用了一个极长的密钥。
运动密钥密码/滚动密码(running key cipher) :这种密码也叫书密码(book cipher) 。在这种密码中,加密密钥与消息本身一样长,而且往往选自一部普通图书、一张报纸或一本杂志
块密码
块密码(block cipher) 在消息“块“上运算,在同一时间对整个消息执行加密算法
移位密码是块密码的例子,一整个单词块颠倒
流密码
流密码(stream cipher)一次在消息(或消息流)的一个字符或一个位上运行
凯撒密码是流密码的一个例子。单次密本也是一种流密码,因为算法在明文消息的每个字母上单独运行。
混淆和扩散
混淆(confusion):混淆运算时,明文和密钥之间有着极复杂的关系,以至于攻击者不能只靠改动明文和分析结果密文来确定密钥
扩散(diffusion) :使用扩散运算时,明文中发生的一点变化会导致多个变化在整个密文中传播
例子:一种密码算法首先进行一次复杂的替换,然后通过移位重新排列被替换密文的字符位置。在这个例子中,替换带来的就是混淆,移位带来的就是扩散。
6.2 现代密码学
当今常用的三类算法:对称加密算法、非对称加密算法和哈希算法。
6.2.1 密码密钥
早期密码学有一条“通过隐匿获得安全”的主导原则(方法是把算法的细节藏匿起来,不让外人知道)
现代密码系统不依靠算法的保密性,依靠一个或多个密码密钥的保密性
密钥管理实践规范
始终安全地存储密钥,如果你必须通过网络传输密钥,则应采取适当的方式,使密钥免遭未经授权的泄露
可能以随机性高的方法选择密钥,充分利用整个密钥空间
密钥不再被需要时,安全地将它们销毁。
6.2.2 对称密钥算法
对称密钥算法依靠一个分发给所有通信参与者的“共享秘密“加密密钥
这个密钥被各方用来加密和解密消息,因此,发送者和接收者拥有一个共享的密钥拷贝
对称密钥加密法也叫秘密密钥密码(secret key cryptography)和私钥密码(private key cryptography)
临时密钥(ephemeral key) :有时候,对称密钥会与只用于一次会话的短暂密钥一起使用。这种情况下使用的密钥被称为临时密钥
最常见的例子是传输层安全(TLS)协议,它用非对称密码建立 一条加密信道,然后切换到使用临时密钥的对称密码
对称密钥加密法有几个弱点
密钥分发是主要问题。双方在通过一个对称密钥协议建立通信之前,首先必须找到一种安全的方法来交换秘密密钥,如果这时没有现成的安全电子信道可供使用,则往往需要采用一种安全的线下密钥分发方法(即带外交换)。
对称密钥加密法不提供不可否认性。由于任何通信方都能用共享的秘密密钥对消息进行加密和解密,因此无法证明一条消息到底是从何处发出的
算法缺乏可扩展性。如果通信群体规模较大,将很难使用对称密钥加密法。只有在每个可能的用户组合都共享一个私钥的情况下,才能在群体内的个人之间实现安全的私密通信。
密钥必须经常重新生成。每当有参与者离开通信群体时,该参与者知道的所有密钥都必须弃用
优势
对称密钥加密法的主要优势在于它的运算速度。对称密钥加密非常快,往往比非对称算法快 1 000 到 10000 倍
6.2.3 非对称密钥算法
非对称密钥算法(asymmetric key algorithm)可提供解决方案以消除对称密钥加密的弱点。
公钥算法(public key algorithm)是非对称算法中最常用的例子。在这些系统中,每个用户都有两个密钥:一个是所有用户共享的公钥,另一个是只有用户自已知道并保守秘密的私钥
非对称密钥加密法的主要优点
添加新用户时只需要生成一个公钥-私钥对
便于从非对称系统移除用户
只需要在用户私钥失信的情况下重新生成密钥。
非对称密钥加密可提供完整性、身份认证和不可否认性
密钥分发简便易行
不需要预先建立通信关联
公钥密码的主要弱点是运算速度缓慢
混合密码(hybrid cryptography):综合使用对称与非对称密码的方法叫混合密码
对称和非对称密码系统比较
6.2.4 哈希算法
消息摘要(也叫哈希值或指纹)是由哈希算法生成的消息内容归纳(与文件校验和没什么不同)。
碰撞(collision) :一个哈希函数为两种不同方法产生相同值的情况被称为碰撞 ,而碰撞的存在通常会导致哈希算法贬值。
6.3 对称密码
6.3.1 密码运行模式
密码的运行模式是指密码算法为实现抵御攻击的充分复杂度而采用的转换数据的不同方式
电子密码本(Electronic Code Book, ECB):模式是最容易理解的简单模式,也是最不安全的模式
每次处理一个64位块
密码块链接(Cipher Block Chaining, CBC):每块未加密文本在被加密之前,都要先借助前面刚生成的密文块接受异或(XOR)运算,初始向量(IV)
密码反馈(Cipher Feedback, CFB):模式是 CBC 模式的流密码版
输出反馈(Output Feedback, OFB):模式下,密码以与 CFB 模式几乎完全相同的方式运行
计数器(Counter, CTR):模式使用了与 CFB 和 OFB 模式类似的流密码。
Galois/计数器模式(Galois/Counter Mode, GCM):采用标准 CTR 加密模式,并添加了数据真实性控制,可确保接收方所接收数据的完整性。
加密过程添加身份认证标记(authentication tag)
带密码块链接消息验证码的计数器模式(CCM):与GCM类似,把保密性模式与数据真实性流程结合到了一起
GCM 和 CCM 模式都同时包含了保密性和数据真实性。它们因而被称作经过验证的加密模式
ECB 、 CBC、 CFB、 OFB 和 CTR 模式只提供保密性,因而被称作未经验证的模式
6.3.2 数据加密标准
美国政府于 1977 年发布“数据加密标准”,并提议将其用作所有政府通信的标准密码系统
DES
DES不安全
DES 是一种 64 位块密码,共有 5 种运行模式
电子密码本(ECB)模式
密码块链接(CBC)模式
密码反馈(CFB)模式
输出反馈(OFB)模式
计数器(CTR)模式
DES 的所有模式都是一次性在 64 位明文上进行运算,以生成 64 位密文块。 DES 使用的密钥长 56 位
DES 规范要求使用 64 位密钥。但是在这 64 位中,只有 56 位含密钥信息。余下的 8 位应该包含奇偶校验信息,以确保其他 56 位准确无误。但是实践中很少使用这些奇偶校验位。你将 56 这个数字记住即可
DES 通过长长的一系列异或(XOR)运算生成密文。这个过程会为每个加密/解密操作重复16遍加密
6.3.3 三重 DES
改进版的 DES, 即“三重 DES''(3DES),应该避免使用 3DES
DES-EEE3 用所有的 3 个密钥依次给数据加密,可表示为: E(Kl,E(K2,E(K3, P)))
DES-EEE3 和 DES-EDE3 应该具有 168 位有效密钥长度。然而,针对这一算法的已知攻击把算法的有效强度降到了 112 位
DES-EEE3 是当前被 NIST 认为安全的唯一一个 3DES 变体
6.3.4 国际数据加密算法IDEA
“国际数据加密算法”(International Data Encryption Algorithm,IDEA)块密码,对称加密
IDEA 是用一个128 位密钥开始运算的
使用的 5 种模式(ECB 、 CBC、 CFB、 OFB 和 CTR)下运行
常用于“优良保密协议" (Pretty Good Privacy, PGP)安全邮件软件包中
6.3.5 Blowfish
Bruce Schneier 的 Blowfish 块密码是 DES 和 IDEA 的另一个替代方案
Blowfish 允许密钥长度变化(其中最短为相对不太安全的 32 位,最长为极强的 448 位),扩展了 IDEA 的密钥强度
6.3.6 Skipjack
Skipjack 算法被美国政府在联邦信息处理标准(FIPS)185“ 托管加密标准”(EES) 中批准使用
Skipjack 在 64 位文本块上运行。它使用 80 位密钥,支持 DES 支持的 4 种运行模式。
6.3. 7 Rivest Ciphers(RC)
Rivest-Shamir-Adleman (RSA) Data Security 公司的 Ron Rivvest 多年来创建了 系列对称密码,业界称之为Rivest Ciphers(RC)算法家族
RC4 是 Rivest 于 1987 年开发的一种流密码,在随后的几十年里被广泛使用,允许使用 40~2048 位的长度可变密钥。集成到WEP/WIF-FI WPA/SSL/TLS等协议中
RC5 是一种块大小可变(32、 64 或 128 位)的块密码,所用密钥大小为 0~2040 位
RC6 是作为 RC5 的下一个版本而开发的一种块密码。它采用 128 位块大小,允许使用128 、 192 或 256 位对称密钥。
6.3.8 高级加密标准(AES)
2001 年 11 月, NIST 发布 FIPS 197, 强制规定美国政府必须用 AES/Rijndael 给所有敏感非涉密数据加密
高级加密标准(Advanced Encryption Standard,AES):密码允许使用 3 种密钥强度: 128 、 192 和 256 位。 AES 只允许处理 128 位块,但 Rijndael 超出了这个规定,允许密码学家使用与密钥长度相等的块大小。
6.3.9 CAST
CAST 算法是另一个被集成进一些安全解决方案的对称密钥块密码家族,使用 Feistel 网络
两种表现形式
CAST-128 用大小为 40~128 位的密钥对 64 位明文块进行 12~16 轮 Feistel 网络加密。
CAST-256 用大小为 128 、 160 、 192 、 224 或 256 位的密钥对 128 位明文块进行48 轮
CAST-256 算法曾经是“高级加密标准”的候选算法,但是没有被选中。
Twofish
Bruce Schneier(也是 Blowfish 的创造者)开发的 Twofish 算法是 AES 的另一个终极品
Twofish 是一种块密码。它在 128 位数据块上运行,能够使用长达 256 位的密码密钥
Twofish 独有两项技术
预白化处理(prewhitening) 指第 1 轮加密前用一个单独的子密钥对明文进行异或运算。
白化后处理(postwhitening) 指第 16 轮加密后执行同样的运算
6.3.10 比较各种对称加密算法
6.3.11 对称密钥管理
密钥管理实践(key managemen)包括涉及秘密密钥的创建、分发、存储、销毁、恢复和托管的防护手段
1. 创建和分发对称密钥
线下分发: 这种在技术上最简单(但存在物理上的不便)的方法涉及密钥材料的物理交换
公钥加密 :许多通信者希望享受秘密密钥加密的速度好处而免去分发密钥的麻烦
Diffie-Hellman(DH) : 有时,无论是公钥加密还是线下分发,都不能满足需求。双方可能需要直接相互沟通,但他们之间没有可用来交换密钥材料的物理手段,而且没有现成的公钥基础设施以便交换秘密密钥
2. 存储和销毁对称密钥
绝不将加密密钥与被加密数据保存在同一个系统里,否则会让攻击者轻易入侵!
对于敏感密钥,考虑安排两个人各持一半片段
基于软件的存储机制可把密钥作为数字对象保存到使用它们的系统里,例如,把密钥存进本地文件系统
基于硬件的存储机制是专用于管理密钥的硬件设备。
3. 密钥托管和恢复
公平密码系统:在这种托管方法中,用于通信的秘密密钥被分解成两个或多个片段,每个片段都被交付给一个独立的第三方保管
托管加密标准:这种托管方法向政府或另一授权代理提供了解密密文的技术手段。专门针对 Clipper 芯片提出的
当相关人员从讥构离职,而其他员工需要访问被加密的数据时,或者当密钥丢失时,密钥托管和恢复机制会体现出它们的价值。
密钥恢复代理(recovery agent, RA)能够恢复分配给各个用户的加密密钥
6.4 密码生命周期
算法和协议管治控制
规定机构可接受的密码算法,如 AES、 3DES 和 RSA
根据被传输信息的敏感性识别可与每种算法配套使用的可接受密钥长度。
枚举可用的安全交易协议,如 TLS