信息安全原理 - 对称&非对称密钥加密 核心笔记¶
一、密码学发展背景¶
- 计算机时代的密码学:计算机最初作为密码破解工具诞生(如1944年破解德军密码的Colossus Mark 2),同时推动密码学发展,密码算法从机械旋转转向二进制位运算,加解密速度大幅提升,衍生出对称密钥加密和非对称密钥加密两大体系。
- 第三代密码学:即计算机密码学,是现代密码学的诞生标志。
二、对称密钥加密(Symmetric Key Cryptography)¶
1. 核心定义¶
也叫共享/保密密钥加密,加密和解密使用同一密钥(或可通过简单变换得到),密钥为通信方的共享秘密,遵循Kerckhoffs原则(密码系统的安全性仅依赖密钥,而非算法本身)。 核心缺陷:密钥分发问题(通信双方需安全获取共享密钥)。
2. 分组密码(Block Cipher)¶
- 定义:将明文比特流划分为固定长度(n位)的分组,独立加密每个分组,分组间无依赖。
- 常用参数:分组大小n=64/128/256位;密钥大小k=40/56/128/256位。
- 设计要求:密文每一位都与明文所有位、密钥所有位相关。
3. Feistel密码结构¶
- 提出:1973年IBM的Feistel提出,几乎所有现代对称加密算法的基础。
- 设计初衷:解决理想分组密码密钥过长问题,采用乘积密码思想,通过扩散(Diffusion)和扰乱(Confusion)实现雪崩效应。
- 扩散:让密文统计特性与明文的关系尽可能复杂(如迭代交换左右半部分)。
- 扰乱:让密文统计特性与密钥的关系尽可能复杂(如轮函数F)。
- 核心参数:分组大小(64/128位)、密钥长度(128位为主)、轮数(标准16轮)、子密钥生成算法、轮函数F(复杂度越高,抗分析性越强)。
- 特性:加密和解密流程结构一致,仅子密钥使用顺序相反。
4. 经典对称加密算法¶
(1)DES(数据加密标准)¶
- 1977年被美国国家标准局采用,基于Feistel结构,64位分组,56位有效密钥(64位密钥含8位校验位)。
- 特性:雪崩效应强,仅能被暴力破解;56位密钥在互联网时代安全性不足。
- 破解历程:1997年7万台PC联网96天破解;1998年EFF专用机3天破解;1999年超级计算机22小时破解。
(2)3DES(三重DES)¶
- 加密流程:\(C = E_{K3}[D_{K2}[E_{K1}[P]]]\)(加密-解密-加密),密钥长度最高\(56×3=168\)位。
- 特性:支持向后兼容(\(K3=K2\)或\(K1=K2\)可退化为DES),用于PGP、S/MIME等互联网应用。
(3)其他经典算法¶
| 算法 | 设计/提出方 | 核心参数 | 特性 |
|---|---|---|---|
| IDEA | 瑞典KTH、Massey&来学嘉 | 64位分组,128位密钥 | 基于Feistel,被PGP采用 |
| Blowfish | Bruce Schneier(1993) | 可变密钥(32~448位) | 轻量、加密快、低内存(<5k) |
| RC5 | MIT Rivest(1994) | 字长/轮数/密钥可配置 | 软硬兼施、低内存、高安全性 |
(4)AES(高级加密标准)¶
- 2001年成为美国新加密标准,取代DES/3DES,采用Rijndael算法。
- 核心参数:128位分组,密钥长度128/192/256位。
- 特性:免疫所有已知攻击、跨平台执行快、代码紧凑、设计简单,解决3DES软件实现慢、分组小的问题。
5. 分组密码的工作模式¶
解决分组密码无法直接加密长数据的问题,核心讲2种主流模式:
(1)ECB(电子密码本)¶
- 原理:每个明文分组独立加密,相同明文分组生成相同密文分组。
- 缺陷:易被重放攻击、构建码本攻击,安全性低。
(2)CBC(密码分组链接)¶
- 原理:引入初始化向量IV(仅使用一次),前一个密文分组与当前明文分组异或后再加密,相同明文分组生成不同密文。
- 特性:抑制重放攻击和码本构建,安全性远高于ECB。
6. 流密码(Stream Cipher)¶
- 与分组密码的区别:不划分明文分组,将明文比特流与伪随机比特流逐位异或得到密文。
- 解密:使用同一密钥生成的伪随机比特流,与密文逐位异或还原明文。
- 核心:伪随机序列生成器,需保证伪随机流的不可预测性。
7. 密钥分发问题及解决¶
(1)传统分发方式¶
- 一方生成密钥并物理交付给另一方;
- 第三方生成密钥并物理分发给通信双方;
- 用旧密钥加密新密钥进行传输;
- 通过与第三方的加密连接获取密钥。
(2)典型解决方案:KDC(密钥分发中心)¶
作为可信第三方,为通信双方安全分发共享密钥,是对称加密中密钥分发的核心方案。
三、非对称密钥加密(Asymmetric/Public Key Cryptography)¶
1. 诞生背景¶
解决对称加密的两大核心问题: 1. 密钥分发安全问题(无法安全传输共享密钥); 2. 身份认证/不可否认性问题(无法证明信息发送方身份,易被篡改/冒充)。 地位:密码学历史上最伟大的革命,依赖数学单向函数而非简单的代换/置换。
2. 核心定义¶
也叫公钥加密,加密和解密使用不同的密钥: - 公钥(KU):公开传播,用于加密/验证签名; - 私钥(KR):由用户秘密保存,用于解密/生成签名。 核心基础:单向函数(正向计算容易,逆向计算在计算上不可行)。
3. 公钥密码系统六要素¶
明文、公钥(KU)、私钥(KR)、加密算法、密文、解密算法。
4. 公钥加密的核心要求¶
- 密钥生成容易(快速生成公钥/私钥对);
- 加密/解密计算效率可接受;
- 由公钥推导私钥在计算上不可行;
- 仅知公钥和密文,无法还原明文;
- 支持加密和签名双向使用。
5. 公钥密码系统的两大应用模型¶
(1)保密模型¶
- 流程:发送方用接收方公钥加密明文,接收方用自身私钥解密密文。
- 作用:保证信息的机密性,仅接收方能解密。
(2)认证模型¶
- 流程:发送方用自身私钥加密明文(签名),接收方用发送方公钥解密验证。
- 作用:保证信息的完整性和不可否认性,证明信息由发送方发出。
6. 经典公钥算法¶
(1)Diffie-Hellman(DH)算法(1976)¶
首个公钥密码思想,核心用于密钥交换,无法直接加密明文。 - 数学基础:离散对数问题(素数p的原根g,已知\(g^a \mod p\),求a在计算上不可行)。 - 核心公式:\(g^{ab} \mod p = (g^a \mod p)^b \mod p = (g^b \mod p)^a \mod p\)。 - 密钥交换流程: 1. 双方共享素数p和原根g; 2. 爱丽丝生成私钥a,计算公钥\(A=g^a \mod p\)并发送给鲍勃; 3. 鲍勃生成私钥b,计算公钥\(B=g^b \mod p\)并发送给爱丽丝; 4. 双方分别计算共享会话密钥:\(K=B^a \mod p = A^b \mod p = g^{ab} \mod p\)。 - 安全要求:p为至少300位素数,a/b为至少100位整数,g通常选2/3/5。 - 缺陷:易受中间人攻击(攻击者冒充双方生成虚假公钥,分别与双方建立共享密钥)。
(2)RSA算法(1977,Rivest/Shamir/Adleman)¶
首个可实现加密和签名的公钥算法,应用最广泛。
① 数学基础¶
- 欧拉函数\(\phi(n)\):小于n且与n互质的正整数个数;
- 若n为素数,\(\phi(n)=n-1\);
- 若n=pq(p/q为不同素数),\(\phi(n)=(p-1)(q-1)\)。
- 欧拉定理:若a与n互质,则\(a^{\phi(n)} \equiv 1 \pmod n\)。
- 费马小定理:欧拉定理的特例,若p为素数,则\(a^p \equiv a \pmod p\);若a不被p整除,则\(a^{p-1} \equiv 1 \pmod p\)。
- 核心单向函数:大素数乘法(两个大素数相乘容易,分解乘积为原素数在计算上不可行)。
② 密钥生成步骤¶
- 选择两个大素数p和q(至少100位),计算\(n=pq\),\(\phi(n)=(p-1)(q-1)\);
- 选择公钥e:满足\(1<e<\phi(n)\),且e与\(\phi(n)\)互质;
- 计算私钥d:满足\(e \times d \equiv 1 \pmod {\phi(n)}\)(d是e在模\(\phi(n)\)下的乘法逆元);
- 公钥对外公开:\((e, n)\);私钥秘密保存:\(d\)。
③ 加解密流程¶
- 加密:明文\(m<n\),密文\(c = m^e \mod n\)(发送方用接收方公钥加密);
- 解密:明文\(m = c^d \mod n\)(接收方用自身私钥解密)。
④ 安全性¶
- 核心依赖:大整数分解问题(攻击者仅知(e,n),需分解n得到p/q,才能计算\(\phi(n)\)和d);
- 现状:2020年破解250位RSA-250(耗时2700个CPU核心年);1024位RSA已被NIST弃用;2048位RSA目前无法被有效分解。
- 常见攻击:中间人冒充公钥、暴力破解、大整数分解攻击。
7. 其他公钥算法¶
- ElGamal算法(1985):基于离散对数问题,支持加密和签名;
- 椭圆曲线密码(ECC,1985):基于椭圆曲线离散对数问题,相同安全强度下密钥长度远小于RSA,轻量高效。
四、对称与非对称加密的对比与实际应用¶
1. 核心差异¶
| 特性 | 对称密钥加密 | 非对称密钥加密 |
|---|---|---|
| 密钥使用 | 加密解密同一密钥(共享) | 加密解密不同密钥(公/私钥) |
| 密钥分发 | 存在安全问题,需KDC等方案 | 公钥可公开,无分发问题 |
| 计算效率 | 快、开销低,有专用VLSI芯片 | 慢、开销高,无低成本专用芯片 |
| 安全性依赖 | 密钥长度和暴力破解难度 | 数学单向函数的计算不可行性 |
| 身份认证 | 无法直接实现 | 可实现(数字签名) |
| 密钥数量 | 多对通信方需多组共享密钥 | 每个用户仅需1对公/私钥 |
2. 常见误解澄清¶
- 公钥加密并非比对称加密更安全:两者安全性均依赖密钥长度和解密计算量,抗密码分析能力无优劣之分;
- 公钥加密并未取代对称加密:公钥加密计算开销大,仅适用于密钥管理和数字签名,而非大量数据加解密。
3. 实际应用方案(混合加密)¶
公钥加密+对称加密结合,兼顾安全性和效率: 1. 用非对称加密(如RSA)安全分发对称加密的会话密钥; 2. 用对称加密(如AES)加密/解密实际的大量业务数据。
4. 公钥加密的三大应用领域¶
- 加密/解密:解决密钥分发问题,保证信息机密性;
- 数字签名:解决身份认证和不可否认性问题,保证信息完整性;
- 密钥交换:如DH算法,为对称加密协商共享会话密钥。
五、核心总结¶
- 对称加密是现代数据加解密的核心,高效但存在密钥分发问题,代表算法为DES/3DES/AES,基于Feistel结构为主;
- 非对称加密解决了密钥分发和身份认证问题,是密码学的革命,代表算法为RSA/DH,依赖数学单向函数;
- 实际工程中采用混合加密体系,公钥加密用于密钥管理,对称加密用于数据加解密;
-
密码系统的安全性核心依赖密钥(而非算法),需保证密钥的生成、传输、保存安全。
-
攻击RSA的方法
- 直接破解密文m(暴力破解,1<m<n)
- 根据(c, e, n)尝试破解私钥d
Class 6¶
- RSA-250(250 digits, 829 bits)
- RSA-1024(309 digits, 1024 bits)
-
RSA-2048(617 digits, 2048 bits)
-
DES:2^56 RSA 分解质因数,穷举的时间复杂度以幂级数增长
-
公钥密码学:纯数学的方式 问题:计算速度太慢
-
公钥密码学和对称密码学互补
-
对称密钥密码学:秘密共享 公钥密码学:密钥不用分享,解决加密问题
-
加密算法的安全性取决于密钥,破解密钥的方式都是穷举
-
公开密钥加密并不在防范密码攻击上比常规加密更安全(算法本身无优势)
-
账号不是个人的财产,(在agreement)公司倒闭以后游戏公司会收回
-
签名应该和内容强绑定,签名被毁内容也应该被毁。数字签名依赖其绑定的内容
-
Digital Signature Algorithm(几乎所有的公钥方法适用于数字签名)
-
数字签名实际上是算出文件的哈希值,签署哈希值
- 只要没办法找到同一个哈希值对应的另外一个文档,就可以认为这个哈希值代表这个文档
Class 8¶
- NIST hash function competition 开始于2007 2012 Keccak算法赢出
- 2015年这个算法中的一版变成了SHA-3官方标准
- MAC是和消息一起发出去的,接受者计算MAC可以验证消息是否被修改过
- H是参数,HMAC是由不同的单向哈希函数构成的,不同的H对应不同的消息验证码
- HMAC被认为比简单的单向哈希函数更难找到哈希碰撞
4. MAC与数字签名的核心区别¶
| 特性 | MAC | 数字签名(DS) |
|---|---|---|
| 密钥使用 | 收发方共享秘密密钥 | 基于公钥体系,无需共享密钥 |
| 验证方 | 仅共享密钥的特定接收方 | 所有持有发送方公钥的主体 |
| 不可否认性 | 不提供(验证方可生成MAC) | 提供(仅发送方可生成签名) |
| 效率 | 运算速度快 | 运算速度较慢 |
使用场景:无需不可否认性时用MAC(效率更高),需要解决纠纷、不可否认时用数字签名。
四、PGP(Pretty Good Privacy)¶
一款广泛应用于电子邮件和文件存储安全的工具,整合了上述所有核心密码学算法,实现一站式安全服务。
1. 核心功能¶
除数字签名、完整性验证、信息加密外,还支持数据压缩、邮件格式兼容、数据分块,跨DOS/Windows、Unix、Macintosh等多平台。
2. 技术基础¶
基于成熟的密码学算法,包括RSA、DSS、Diffie-Hellman、CAST-128、IDEA、3DES、SHA-1、MD5,独立于操作系统和硬件。
3. 发展历史¶
由Phil Zimmermann(PGP之父)开发,核心节点: 1. 1991年:首个版本发布,提供商业版、免费非商业版,开源所有源码; 2. 1993年:因加密密钥超过40位(美国当时出口管制),遭美国政府调查; 3. 1995年:《PGP源码与内部实现》出版; 4. 1997年:提交OpenPGP标准至IETF,PGP Inc.被NAI收购,源码停止开源; 5. 2002年:NAI停止PGP技术支持,原开发团队成立PGP Corporation并收购PGP知识产权; 6. 2010年:PGP Corporation被赛门铁克以3.7亿美元收购,PGP功能整合入赛门铁克安全软件,不再提供独立版本。
4. 三种安全模式¶
- 仅认证:对消息生成哈希值,用发送方私钥签名,接收方用发送方公钥验证;
- 仅机密性:生成会话密钥加密消息,用接收方公钥加密会话密钥,一同发送;
- 认证+机密性:先对消息签名,再将“消息+签名”用会话密钥加密,同时加密会话密钥,实现双重安全。
五、课程总结¶
本部分内容围绕信息安全的身份认证、消息完整性、不可否认性、机密性四大核心需求,依次讲解了数字签名(解决不可否认与身份认证)、单向哈希函数(解决长文档签名与消息摘要)、MAC(解决高效的消息完整性认证)的概念、算法、实现及安全问题,并介绍了整合所有技术的实际应用工具PGP,梳理了从基础密码学原理到工程化应用的完整逻辑。
Class 8¶
-
早期UNIX密码,DES跑25次。DES:56bits,8个可显字符(ASCII), 每个字符8位取前7位
-
早期存在/etc/passwd中,获取系统权限密码就被攻破
-
为了密码不被破解
- 第一阶段: Salting 随机选择两个字符作为密码前缀去一起哈希,代价几乎没有增加,但是大幅度提升字典攻击的难度
-
第二阶段: Shadow password:/etc/shadow,只有root权限可读
-
ten common mistake 例如:
- Leaving passwords blank or unchanged from the default value
-
using the letters
-
3q大战,360是自己写病毒,只有自己的软件能杀
-
不要在随便的环境上输入自己的密码。可以用三套密码,随便,隐私,钱
-
两个概念
- false accept : 进宿舍
- false reject : 银行取钱等场景
-
不同的场景有不同的阈值
-
Biometric Considerations
- Universality
- Uniqueness
- Permanence
- Collectability
- Performance
- Acceptability
- Circumvention
Class 10¶
- time service
- 手机的授时来自于基站,基站联网,通过时间服务授时