概述
基本概念
- 网络空间(Cyberspace):是信息时代人们赖以生存的信息环境,是所有信息系统的集合。
- 网络空间安全:信息存储、信息传输和信息处理中的信息安全保障问题。
- 信息安全:是指防止对知识、事实、数据、功能的未经授权的使用与误用、以及未经授权的修改、未经授权的拒绝使用而采取的措施。
- 信息论的基本观点:信息只有存储、传输和处理三种状态。
传统的信息安全主要研究确保信息的以下属性:
- 秘密性 信息不被未授权者知晓的属性。
- 完整性 信息是正确的、真实的、未被篡改的、完整无缺的属性。
- 可用性 信息可以随时正常使用的属性。
从系统的观点来看,信息安全应包括一下几个层面
- 设备安全
- 数据安全(早期的信息安全)
- 行为安全
- 内容安全
研究方向及内容
- 密码学
- 网络安全
- 系统安全
- 信息内容安全
- 信息对抗
密码学
发展
古典密码
古典密码学主要有两大基本方法:
- 代换密码:明文字母被替换,但顺序保持不变。
- 单表代换:一个明文字母对应的密文字母是确定的(一对一)
- 多表代换:以一系列(两个以上)代换表依次对明文消息的字母进行代换(一对多)
- 多字母代换:使用一个或多个字母替换另一个或多个字母来加密消息。(多对多)
- 置换密码/换位密码:明文字母保持不变,但顺序被打乱。
一般地,先用代换技术加密,再用置换技术二次加密。
代换和置换这两种操作实际上形成了现代密码学的雏形,它们充分体现了Shannon 密码学的思想:扩散 (Diffusion) 与混淆 (Confusion) 。
eg:典型的古典密码
- 单表代换——恺撒密码
- 恺撒密码是一种代换密码,其基本思想为:通过将字母按顺序推后N位来起到加密作用。
- 广义的恺撒密码指移动K个位置的加密体制,因此又可称为移位密码
- 多表代换——维吉尼亚密码
- 构造维吉尼亚多表代换字母表方阵,根据密钥来决定用哪一行的密表来进行代换。秘钥中每一个字母都作为索引来确定采用某个代换表,加密时需要循环使用代换表(容易出现重复密文序列)完成明文字母到密文字母的代换,最后所得到的密文字母序列即为密文。
- 维吉尼亚多表代换字母表方阵:
- 多字母代换——普莱费尔密码
- 思想:将明文中的双字母组合作为一个单元,并将这些单元转换为密文的双字母组合(字母数为奇数,则会将无效数填充到末尾)。
- 步骤:编写密码表、分组、代换
- 编写密码表:基于一个5×5的字母矩阵(没有J,明文J用I替代),先从左上填入该密钥的字母,然后将剩余字母按字母表顺序填入。
- 分组:对明文分组,如果某组中有2字母相同,则在中间插入一个任意填充字母,再重新分组。
- 代换:
- 同行代换规则:明文字母将由其右边的字母代换;
- 同列代换规则:明文字母将由它下面的字母代换;
- 不同行不同列代换规则:明文第一个字母将由与第一个字母同行、与第二个字母同列的字母替换;明文第二个字母将由与第二个字母同行、与第一个字母同列的字母替换。
- 置换密码——栅格换位和矩形换位
- 栅格换位:
- 栅格换位:将明文字母按照锯齿状排布,然后按照先上后下、从左至右的顺序读出密文。
- 四行栅格换位:
- 矩形换位:
- 可以构造一个任意维数的矩阵,将明文消息按从左至右的顺序写入矩阵。按列由上到下的顺序读出密文。
- 费纳姆密码——一次一密密码
- 费纳姆密码的基本原理是:将明文与密钥都转换为二进制(ASCII),然后进行模2 加法(比特XOR, 即异或)运算。
- 如果M(明文字母)=C(密文字母)=K(密钥)={0,1}n,则费纳姆密码就是代换密码的特例
- 如果密钥串只使用一次,那么费纳姆密码就是一次一密密码。
现代密码学
Shannon的“保密系统的通信理论”, 开辟了用信息论研究密码学的新方向,奠定了现代密码理论的基础。:以概率统计的观点对消息源、密钥源、接收和截获的消息进行数学描述和分析,用不确定性和唯一解距离来度量密码体制的保密性
密码体制五大特性:
- 保密性 (Confidentiality)
- 完整性 (Integrity)
- 可用性 (Availability)
- 认证性 (Authentication)
- 不可否认性 (Non-Repudiation)
- 信息加密:是利用单钥或双钥密码算法把明文变换成密文并通过公开信道送到接收者手中。(数字信号加密,真保密系统)
- 信息隐藏:也被称为“信息隐匿”或"信息隐形"。 秘密信息被嵌入表面上看起来无害的宿主信息中,攻击者无法直观地判断他所监视的信息中是否含有秘密信息。(模拟保密变换)
量子密码
概要
- 密码学:包括密码编码学、密码分析学,其常被看成是数学的一个分支
- 密码编码学:使消息得到保密的技术和科学
- 密码设计学:研究利用数学来构造加密机制的科学
- 密码分析学:破译密文的技术和科学。在未知密钥情况下,利用可能获取的一切信息(明文、密文)来获取密钥、明文;发现密码系统的缺陷。
密码破译方式:
- 唯密文破译(Ciphertext-Only Attack)
- 定义:分析者仅通过截获的密文进行分析,试图推导出明文或密钥。
- 特点:
- 最常见的密码分析类型。
- 攻击难度最大,因缺乏额外信息辅助。
- 已知明文破译(Known-Plaintext Attack)
- 定义:分析者不仅掌握密文,还拥有部分已知的明文-密文对,试图从中推断密钥或解密其他密文。
- 特点:
- 利用已知的明文与密文对应关系降低破解难度。
- 选择明文破译(Chosen-Plaintext Attack)
- 定义:分析者可主动选择任意明文并获取对应的密文,从而确定未知密钥。
- 前提条件:
- 攻击者已知加密算法。
- 可自由选择明文并观察加密结果。
- 典型应用:
- 常用于破解双钥(公钥)密码系统加密的信息。
- 选择密文破译(Chosen-Ciphertext Attack)
- 定义:分析者能够选择特定密文并通过解密机获取对应明文,目标是推导加密密钥。
- 前提条件:
- 攻击者已知加密算法。
- 可选择密文并获取解密后的明文。
- 典型应用:
- 主要针对公钥密码体制(如RSA)。
- 对数字签名系统的攻击尤为有效。
数学基础
群、环、域
椭圆曲线
整数分解
整数分解又称为素因数分解,即任意一个大于1的自然数N,可以被唯一分解为有限个素数的乘积。
即:N = p1e1 × p2e2 × ... × pkek
其中 p1, p2, ..., pk 为素数,e1, e2, ..., ek 为其对应的指数。
典型算法:
- 试除法(Trial Division)
- 原理:逐个测试小于等于 √N 的素数是否能整除 N。
- 特点:
- 最简单但效率最低,适用于小整数分解。
- 时间复杂度:O(√N)。
- 二次筛法(Quadratic Sieve, QS)
- 原理:通过寻找满足 x2 ≡ y2 mod N 的非平凡解分解 N。
- 特点:
- 适用于50~100位的整数。
- 曾破解RSA-129(1994年)。
- 椭圆曲线方法(Elliptic Curve Method, ECM)✅
- 原理:利用椭圆曲线群运算寻找非平凡因子。
- 特点:
- 对中等大小的因数(10~40位)高效。
- 数域筛法(General Number Field Sieve, GNFS)
- 原理:在代数数域中构造同余关系。
- 特点:
- 最快的通用分解算法(适用于>100位整数)。
- 曾破解RSA-768(2009年,232位)。
- RSA公钥算法(Rivest-Shamir-Adleman)
- 算法类型:分组密码,基于可逆模指数运算
- 安全性基础:大整数分解的困难性
- 应用:既可用于消息加密,也可用于数字签名
- 性能特点:
- 硬件实现比DES慢约1000倍
- 软件实现比DES慢约100倍
- 标准化情况:
- 已被ISO、ITU、IETF和SWIFT等组织采纳
- 目前多使用RSA公司的PKCS系列标准
- 安全事件:RSA-155(512位密钥)于1999年被成功分解
模运算
模运算又称同余运算,指对于给定的正整数 m(模数),两个整数 a 和 b 如果满足 m 整除 (a - b),则称 a 和 b 对模 m 同余,记作:a ≡ b mod m
一般地,定义Zn为小于n的所有非负整数集合,即Zn ={0,1, …,n-1},称Zn为模n 的同余类集合。
典型算法
- 快速幂取模算法(Fast Exponentiation)
- 原理:利用二分法思想快速计算大数幂的模运算
- 特点:
- 时间复杂度:O(log n)
- 广泛应用于RSA等公钥密码算法
- 欧几里得算法(Extended Euclidean Algorithm)✅
- 目的:欧几里得算法是一种求两个整数最大公因子的快速算法
- 设a,b是两个任意正整数,gcd(a,b)=gcd(b,a mod b)
- eg:(77,33)=(33,77mod33)=(33,11)=(11,0)=11
- 应用:
- 计算模反元素(模逆元)
- RSA密钥生成中的重要步骤
- 中国剩余定理(Chinese Remainder Theorem, CRT)✅
- 目的:解决一组同余方程组的求解问题
- 原理:
- eg:
- 应用:
- 加速RSA解密运算
- 密码学中的门限方案
- 蒙哥马利模乘(Montgomery Modular Multiplication)
- 原理:通过数制转换优化模乘运算
- 特点:
- 避免除法操作
- 硬件实现效率高
中国剩余定理
密码系统(体制)
定义
一个密码系统(体制)可用一个五元组来表示(M,C,K,E,D)
- 明文mi和明文空间M
- 明文:需要秘密传送的可以读得懂的消息,是易于理解的信息。对计算机而言,是指数字化的信息。可是文本、图像等二进制序列。明文可被存储、传输、加工。
- 明文空间: M={m=(m1,m2,…,ml)|mi∈X, 1≤ i≤ l }
明文长度为l,X称为明文字母表
- 密文Ci和密文空间C
- 密文:明文经过密码变换后的不可读消息,不易被理解的信息。对计算机而言,也是以二进制形式存在的信息。
- 密文空间: C={c=(c1,c2.,…,ct)| ci∈Y, 1≤ i≤ t },
密文长度为t, Y称为密文字母表
- 加密:由明文到密文的数学变换
- 解密:从密文恢复出明文的数学变换
- 加密算法E
在Ke的控制下,完成M到C的加密变换规则, 本质上是M到C的映射
加密:c=Eke(m) - 解密算法D
在Kd的控制下,完成C到M的解密变换规则 ,本质上是C到M的映射
解密:m=Dkd(c)=Dkd(Eke(m)) - 密钥空间K={(Ke,Kd)}
密钥k: 加密算法E、解密算法D的运行控制参数
K={k=(k1,k2,…,ks)| ki∈B, 1≤ i≤ s }, 密钥长度为s, B称为密钥源字母表
分类
- 按保密内容来分
- 受限制的(restricted)算法:保密性基于保持算法的秘密
- 基于密钥(key-based)的算法:保密性基于对密钥的保密,算法是公开的
- 按密钥数量来分
- 对称密码算法(symmetric cipher):单密码体制
- kd=ke,或kd与ke间存在某种易于发现的关系;
- 最大的问题:ke需要在加密方和解密方间进行交换,密钥的传输和分配是最大问题
- 非对称密钥算法(asymmetric cipher):双密码体制
- Kd≠ ke,且Kd和ke间不存在某种易于发现的关系,不存在密钥交换问题。
- Ke不需要保密,可以公开;只有Kd需要保密
- 按明文处理方式分类
- 分组密码(block cipher)
- 将明文分成固定长度的组,用同一密钥和算法对每一块加密,输出也是固定长度的密文。
- 流密码(stream cipher)
- 又称序列密码。加密和解密双方使用相同伪随机加密数据流(pseudo-random stream)作为密钥。
- 流密码的密钥长度会与明文的长度相同,加解密均按位(如异或)运算。
保密系统模型
公开信道保密通信
保障传输的信息内容不被第三方(攻击者)获得
密码算法
序列密码
- 概念
- 定义:序列密码,又称为流密码,属于对称密码体制,它一次只对明文消息的单个字符(通常是二进制位)进行加解密变换。其加解密过程通过明文/密文与密钥流的模二加(异或运算)实现。其核心安全机制依赖于密钥流的随机性和不可预测性,而非复杂的数学变换。
- 原理:在序列密码中,将明文消息按一定长度(长度较小)分组,对各组用相关但不同的密钥逐位加密产生相应的密文,相同的明文分组会因在明文序列中的位置不同而对应于不同的密文分组,接收者用相同的密钥序列对密文序列逐位解密恢复出明文。
- 分类:
- 同步序列密码:密钥序列的产生需要收发双方进行同步,密钥序列的产生完全独立于明文消息和密文消息
- 自同步序列密码:密钥序列的产生是密钥及固定大小的以往密文位的函数
- 密钥流生成器(KG)
- 关键要求:
要求 | 说明 | 反例(不安全设计) |
---|---|---|
长周期 | 周期应≥2^128 | 4位LFSR周期仅15 |
不可预测性 | 已知前100位不能猜101位 | Geffe生成器可被线性攻击 |
统计随机性 | 通过NIST测试套件 | 简单LFSR输出有偏差 |
密钥敏感性 | 改1位密钥流全变 | 弱密钥导致部分密钥流相同 |
- 实现:
- 反馈移位寄存器(FSR)
- 由移位寄存器和反馈函数(Feedback Function)组成。
- 移位寄存器是由位组成的序列,其长度用位表示,每次移位寄存器中所有位右移一位,最左端的位根据寄存器中某些位计算得到,由寄存器某些位计算最左端位的部分被称为反馈函数,最右端一个寄存器移出的值是输出位。移位寄存器的周期是指输出序列从开始到重复时的长度。
- 反馈移位寄存器(FSR)
- 流程:
- 步骤1:密钥流生成
输入:初始密钥 K=0101(示例)
KG工作(以LFSR为例):
输出:10110010...简单LFSR示例(4位寄存器,反馈位[3,2]) state = 0b1101 # 初始状态=K for _ in range(8): bit = (state ^ (state >> 1)) & 1 # 计算新位 state = (state >> 1) | (bit << 3) print(state & 1, end='') # 输出密钥流
输出密钥流:KS=10110010
2. 步骤2:加密过程
明文:P=01101001(ASCII字母 'i')
逐位XOR:明文: 01101001 密钥流: 10110010 ----------------- XOR 密文: 11011011
- 步骤3:解密过程
密文:C=11011011
相同密钥流:KS=10110010
逐位XOR:
密文: 11011011 密钥流: 10110010 ----------------- XOR 明文: 01101001 # 恢复原文
- 步骤1:密钥流生成
评论