跳转至

信息安全原理 - 对称&非对称密钥加密 核心笔记

一、密码学发展背景

  1. 计算机时代的密码学:计算机最初作为密码破解工具诞生(如1944年破解德军密码的Colossus Mark 2),同时推动密码学发展,密码算法从机械旋转转向二进制位运算,加解密速度大幅提升,衍生出对称密钥加密非对称密钥加密两大体系。
  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)传统分发方式

  1. 一方生成密钥并物理交付给另一方;
  2. 第三方生成密钥并物理分发给通信双方;
  3. 用旧密钥加密新密钥进行传输;
  4. 通过与第三方的加密连接获取密钥。

(2)典型解决方案:KDC(密钥分发中心)

作为可信第三方,为通信双方安全分发共享密钥,是对称加密中密钥分发的核心方案。

三、非对称密钥加密(Asymmetric/Public Key Cryptography)

1. 诞生背景

解决对称加密的两大核心问题: 1. 密钥分发安全问题(无法安全传输共享密钥); 2. 身份认证/不可否认性问题(无法证明信息发送方身份,易被篡改/冒充)。 地位:密码学历史上最伟大的革命,依赖数学单向函数而非简单的代换/置换。

2. 核心定义

也叫公钥加密,加密和解密使用不同的密钥: - 公钥(KU):公开传播,用于加密/验证签名; - 私钥(KR):由用户秘密保存,用于解密/生成签名。 核心基础单向函数(正向计算容易,逆向计算在计算上不可行)。

3. 公钥密码系统六要素

明文、公钥(KU)、私钥(KR)、加密算法、密文、解密算法。

4. 公钥加密的核心要求

  1. 密钥生成容易(快速生成公钥/私钥对);
  2. 加密/解密计算效率可接受;
  3. 由公钥推导私钥在计算上不可行;
  4. 仅知公钥和密文,无法还原明文;
  5. 支持加密和签名双向使用。

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)

首个可实现加密和签名的公钥算法,应用最广泛。

① 数学基础
  1. 欧拉函数\(\phi(n)\):小于n且与n互质的正整数个数;
  2. 若n为素数,\(\phi(n)=n-1\)
  3. 若n=pq(p/q为不同素数),\(\phi(n)=(p-1)(q-1)\)
  4. 欧拉定理:若a与n互质,则\(a^{\phi(n)} \equiv 1 \pmod n\)
  5. 费马小定理:欧拉定理的特例,若p为素数,则\(a^p \equiv a \pmod p\);若a不被p整除,则\(a^{p-1} \equiv 1 \pmod p\)
  6. 核心单向函数:大素数乘法(两个大素数相乘容易,分解乘积为原素数在计算上不可行)。
② 密钥生成步骤
  1. 选择两个大素数p和q(至少100位),计算\(n=pq\)\(\phi(n)=(p-1)(q-1)\)
  2. 选择公钥e:满足\(1<e<\phi(n)\),且e与\(\phi(n)\)互质
  3. 计算私钥d:满足\(e \times d \equiv 1 \pmod {\phi(n)}\)(d是e在模\(\phi(n)\)下的乘法逆元);
  4. 公钥对外公开:\((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. 常见误解澄清

  1. 公钥加密并非比对称加密更安全:两者安全性均依赖密钥长度和解密计算量,抗密码分析能力无优劣之分;
  2. 公钥加密并未取代对称加密:公钥加密计算开销大,仅适用于密钥管理和数字签名,而非大量数据加解密。

3. 实际应用方案(混合加密)

公钥加密+对称加密结合,兼顾安全性和效率: 1. 用非对称加密(如RSA)安全分发对称加密的会话密钥; 2. 用对称加密(如AES)加密/解密实际的大量业务数据。

4. 公钥加密的三大应用领域

  1. 加密/解密:解决密钥分发问题,保证信息机密性;
  2. 数字签名:解决身份认证和不可否认性问题,保证信息完整性;
  3. 密钥交换:如DH算法,为对称加密协商共享会话密钥。

五、核心总结

  1. 对称加密是现代数据加解密的核心,高效但存在密钥分发问题,代表算法为DES/3DES/AES,基于Feistel结构为主;
  2. 非对称加密解决了密钥分发和身份认证问题,是密码学的革命,代表算法为RSA/DH,依赖数学单向函数;
  3. 实际工程中采用混合加密体系,公钥加密用于密钥管理,对称加密用于数据加解密;
  4. 密码系统的安全性核心依赖密钥(而非算法),需保证密钥的生成、传输、保存安全。

  5. 攻击RSA的方法

  6. 直接破解密文m(暴力破解,1<m<n)
  7. 根据(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. 三种安全模式

  1. 仅认证:对消息生成哈希值,用发送方私钥签名,接收方用发送方公钥验证;
  2. 仅机密性:生成会话密钥加密消息,用接收方公钥加密会话密钥,一同发送;
  3. 认证+机密性:先对消息签名,再将“消息+签名”用会话密钥加密,同时加密会话密钥,实现双重安全。

五、课程总结

本部分内容围绕信息安全的身份认证、消息完整性、不可否认性、机密性四大核心需求,依次讲解了数字签名(解决不可否认与身份认证)、单向哈希函数(解决长文档签名与消息摘要)、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
  • 手机的授时来自于基站,基站联网,通过时间服务授时