网络安全实践和密码学原理
概览
网络空间安全:是指保护网络空间环境、组织和用户资产的一系列工具、政策、安全理念、安全防护措施、指导方针、风险管理方法、行动、培训、最佳实践、保证和技术的集合。组织和用户的资产:包括连接的计算设备、人员、基础设施、应用、服务、通信系统系统,以及网络空间环境中的所有传输和/或存储的信息。网络空间安全力求确保组织和用户的资产在网络空间环境中免受相关安全风险,实现和维护安全属性。总体安全目标包括:可用性(availability) 、完整性(integrity),包括数据真实性( authenticity )和不可否认性(nonrepudiation)、 机密性(confidentiality)
信息安全:指保护信息的保密性、完整性和可用性。此外,还可能涉及真实性、可问责性、不可否认性和可靠性等其他属性。网络安全:保护网络及其服务免受未经授权的修改、破坏或泄露,并确保网络能够正确执行关键功能,没有产生有害副作用。
第一章 计算机与网络安全概念
计算机安全:对于一个自动化的信息系统,采取保护措施确保信息系统资源(包括硬件、软件、固件、信息/数据和通信)的完整性、可用性和保密性。
这个定义给出了计算机安全最核心的三个关键目标:就是所谓的CIA三元组
保密性(Confidentiality)该术语包含两个相关的概念:- 数据保密性: 确保隐私或秘密信息不向非授权者泄露,也不被非授权者使用。
- 隐私性:确保个人能够控制或确定与其自身相关的哪些信息是可以被收集的、被保存的,这些信息可以由谁来公开以及向谁公开。
完整性(Integrity)该术语包含两个相关的概念:- 数据完整性 确保信息和程序只能以特定和授权的方式进行改变。
- 系统完整性 确保系统以一种正常方式来执行预定的功能,免于有意或无意的非授权操纵。
可用性(Availabiity):确保系统能工作迅速,对授权用户不能拒绝服务。确保及时和可靠地访问与使用信息。可用性的缺失是对信息和信息系统访问和使用的中断。
虽然CIA三元组对于安全目标的定义已经很清晰,但在某些安全领域中,还需要一些额外的安全概念来呈现更完整的安全定义:
真实性(Authenticity):一个实体是真实性的、可被验证的和可被信任的特性。对传输信息来说,信息和信息的来源是正确的。也就是说,能够验证那个用户是否是他声称的那个人,以及系统的每个输入是否均来自可信任的信源。可追溯性(Accountability):这一安全目标要求实体的行为可以唯一追溯到该实体。这一属性支持不可否认性、阻止、故障隔离、入侵检测和预防、事后恢复,以及法律诉讼。因为无法得到真正安全的系统,我们必须能够追查到对安全泄露负有责任的一方。系统必须保留他们活动的记录,以允许事后的审计分析,进而跟踪安全事件或解决争执。
下图是网络与计算机安全的基本需求:
OSI安全架构
例题:ISO/OSI安全服务不包括数据过滤服务
OSI安全架构主要关注安全攻击、安全机制和安全服务,它们简短地定义如下:
- 安全攻击:任何危及信息系统安全的行为。
- 安全机制:用来检测、阻止攻击或从攻击状态恢复到正常状态的过程(或实现该过程的设备)。
- 安全服务:加强数据处理系统和信息传输的安全性的一种处理过程或通信服务,目的在于利用一种或多种安全机制进行反攻击。
安全攻击
安全攻击是安全威胁的具体体现
安全威胁可以分为内部威胁和外部威胁,70%-80%的安全事件来自于内部。安全威胁也可以分为自然威胁和人为威胁,精心设计的人为威胁最大。人为威胁分为无意威胁(偶然事故)和有意威胁(恶意攻击),恶意攻击分为主动攻击和被动攻击
被动攻击的特性是对传输进行窃听和监测。攻击者的目标是获得传输的信息信息内容的泄露和流量分析都属于被动攻击。
假如信源和信宿在网络通信的过程中,被某一中间设备窃听了信息,但是没有对数据信息更改,对于信源和信宿双方来说,信息并没有问题,能正常使用,所以难以检测。
第二种被动攻击是流量分析,它有些微妙。假设我们已使用方法隐藏了消息内容或其他信息流量,攻击者即使截获了消息也无法从消息中获得信息。加密是隐藏内容的常用技巧。但即使我们对消息进行了恰当的加密保护,攻击者仍具有可能获取这些消息的一些模式。攻击者可以确定通信主机的身份和位置,可以观察到传输消息的频率和长度。攻击者可以利用这些信息来判断通信的某些性质。
这时候可以改变传输信息的模式,假设平时传输信息都是在晚上发送,并且是较小数据的信息,那么就可以在白天发送无意义字符来混淆视线
主动攻击包括对数据流进行修改或伪造数据流,具体分为四类:伪装、重放、消息修改和拒绝服务。
- 伪装是指某实体假装成其他实体。伪装攻击通常还包含其他形式的主动攻击。例如,截获认证信息,并在认证信息完成合法验证之后进行重放,无权限的实体就可通过冒充有权限的实体获得额外的权限。
- 重放是指攻击者未经授权地将截获的信息再次发送。
- 消息修改指未经授权地修改合法消息的一部分,或延迟消息的传输,或改变消息的顺序,例如,将消息“Allow John Smith to read confidential file accounts”修改为“Allow Fred Brownto read confidential file accounts”.
- 拒绝服务阻止或禁止对通信设施的正常使用或管理。这种攻击可能针对的是具体的目标。比如,某实体可能会查禁所有发向某目的地(如安全审计服务)的消息。拒绝服务的另一种形式是破坏整个网络,或者使网络失效,或者使网络过载以降低其性能。
安全服务
X.800将安全服务定义为: 在通信开放系统中,为系统或数据传输提供足够安全的协议层服务。RFC4949中给出的定义可能更清晰:安全服务是一种由系统提供的对系统资源进行特殊保护的处理或通信服务;安全服务通过安全机制来实现安全策略。
X.800将这些服务分为5类共14个特定服务(参见表1.2)。下面逐类进行讨论。
安全机制
表1.3列出了X.800中定义的安全机制。
由表可知,这些安全机制分为两类:一类在特定的协议层实现,如TCP或应用层协议;另一类不属于任何协议层或安全服务。本书将在后文中详述这些机制,在此暂时只讨论加密机制的定义。X.800对可逆和不可逆加密机制进行了区分。可逆加密机制是一种单纯的加密算法,数据可以加密和解密。不可逆加密机制包括用于数字签名和消息认证应用中的散列算法与消息认证码。
根据X.800中的定义,表14给出了安全服务和安全机制的关系
传统加密技术
对称加密,也叫传统加密或单钥加密。首先,我们来定义一些术语。原始的消息为明文,而加密后的消息为密文。从明文到密文的变换过程被称为加密;从密文到明文的变换过程被称为解密。
明文(palintext):原始可理解的消息或数据,是算法的输入。加密算法:加密算法对明文进行各种代替和变换。密钥(key):密钥也是加密算法的输入。密钥独立于明文和算法。算法:根据所用的特定密钥而产生不同的输出。算法所用的确切代替和变换也依靠密钥。密文(ciphertext):作为算法的输出,看起来完全随机而杂乱的消息,依赖于明文和密钥。对于给定的消息,不同的密钥产生不同的密文,密文看上去是随机的数据流,并且其意义是不可理解的。解密算法:本质上是加密算法的逆运算。输入密文和密钥,输出原始明文。
In other words, we do not need to keep the algorithm secret; we need to keep only the key secret.
换句话说,我们不需要对加密算法保密,我们只需要对密钥保密。
安全的密码
什么样的密码是安全的,或者说能够投入使用的?
加密算法的安全性通常分为两类:
- 信息论安全(无条件安全)
- 一次一密(One-Time Pad, OTP):这是唯一一种被证明在信息论上是绝对安全的加密算法。其原理是使用与明文长度相同的随机密钥,对每一位明文进行异或操作加密,解密时使用相同的密钥进行反向操作。只要密钥是完全随机的、只使用一次且不被泄露,那么无论攻击者拥有多少计算资源,都无法破解出明文。例如,如果攻击者截获了密文,他们无法通过任何方法推断出明文,因为每个密文都对应着无数种可能的明文,且每种可能性都存在。
计算安全- 破译密码的代价超出密文信息的价值。
- 破译密码的时间超出密文信息的有效生命期。
传统密码的安全使用要满足如下两个要求:
加密算法必须是足够强的。至少,我们希望这个算法在敌手知道它并且能够得到一个或者多个密文时也不能破译密文或计算出密钥。这个要求通常用一种更强的形式表述为:即使敌手拥有一定数量的密文和产生这些密文的明文,他(或她)也不能破译密文或发现密钥。- 发送者和接收者必须在某种安全的形式下获得密钥并且必须
保证密钥安全。如果有人发现该密钥,而且知道相应的算法,那么就能解读使用该密钥加密的所有通信。
密码编码学(加密学)
密码编码学具有以下三个独立特征:
- 转换明文为密文的运算类型,所有的加密算法都基于两个原理:
代替和置换,代替是将明文中的每个元素(如位、字母、位组或字母组等)映射成另一个元素:置换是将明文中的元素重新排列。上述运算的基本要求是不允许有信息丢失(即所有的运算是可逆的)。大多数密码体制,也称为乘积密码系统,都使用了多层代替和置换。 - 所用的密钥数,如果发送方和接收方使用相同的密钥,这种密码就称为
对称密码、单密钥密码、秘密钥密码或传统密码。如果发收双方使用不同的密钥,这种密码就称为非对称密码、双钥或公钥密码。 - 处理明文的方法分组密码每次处理输入的一组元素,相应地输出一组元素。流密码则是连续地处理输入元素,每次输出一个元素。
密码分析学(解密)
攻击密码系统的典型目标是恢复使用的密钥而不是仅仅恢复出单个密文对应的明文。攻击传统的密码体制有两种通用的方法:
- 密码分析学:密码分析学攻击依赖于算法的性质、明文的一般特征或某些明密文对。这种形式的攻击企图利用算法的特征来推导出特定的明文或使用的密钥。
穷举攻击:攻击者对一条密文尝试所有可能的密钥直到把它转化为可读的有意义的明文。平均而言,获得成功至少要尝试所有可能密钥的一半。
根据攻击者对于信息的多少,将密码攻击分为几种类型:
| 攻击类型 | 密码分析者已知的信息 |
|---|---|
| 唯密文攻击 | - 加密算法 - 密文 |
| 已知明文攻击 | - 加密算法 - 密文 - 用(与待解的密文)同一密钥加密的一个或多个明密文对 |
| 选择明文攻击 | - 加密算法 - 密文 - 分析者选择的明文,及对应的密文(与待解的密文使用同一密钥加密) |
| 选择密文攻击 | - 加密算法 - 密文 - 分析者选择的一些密文,及对应的明文(与待解的密文使用同一密钥解密) 自由选择密文,相当于能够使用加密机 |
| 选择文本攻击 | - 加密算法 - 密文 - 分析者选择的明文,及对应的密文(与待解的密文使用同一密钥加密) - 分析者选择的一些密文,及对应的明文(与待解的密文使用同一密钥解密) 能够访问加密机和解密机 |
传统加密技术分为两类:
一类是代换技术,也叫代替加密,是将明文中的每个元素映射到其他元素的加密方式。而另一类是置换加密,并不直接改变原文的对应关系,而是重新排列元素顺序。
例题:
- 利用了密文统计特性的攻击是( )
- 选项:A. 差分密码分析;B. 线性密码分析;C. 暴力攻击;D. 中间人攻击
- 答案:B
- 解析:线性密码分析(B)通过分析明文、密文和密钥的线性关系,利用密文统计偏差破解密码;差分密码分析(A)基于明文差异与密文差异的关系,二者均属于统计攻击。暴力攻击(C)穷举所有密钥,中间人攻击(D)伪造身份介入通信。
代替加密
代替技术是将明文字母替换成其他字母、数字或符号的方法。如果把明文看成是二进制序列的话,那么代替就是用密文位串来代替明文位串。
凯撒密码Caesar
凯撒密码的机制很简单,就是对于明文中的每个字母,使用字母表的后三位来替换,得到加密后的密文。
凯撒密码的三个重要特性是我们可以采用穷举攻击分析方法:
密钥只有25个,既字母表向后移的位数已知加密和解密算法- 验证性解密后,
容易判别出明文信息是否是想要的
单表替换
Caesar密码仅有25种可能的密钥,是远不够安全的。通过允许任意代替(不是按照偏移量对应,而是任意选择),密钥空间将会急剧增大。在继续之前,我们先定义术语置换。有限元素的集合S的置换是S的所有元素的有序排列且每个元素只出现一次。例如,如果S={a,b,c},则S有6个置换{abc,acb,bac,bca,cab,cba}
如果密文行是26个字母的任意置换,那么就有26!或大于4x10种可能的密钥(因为第一个元素有26种选择方式,第二个有25种方式……),这比DES的密钥空间要大10个数量级,好像可以抵挡穷举攻击了。这种方法被称为单表代替。
但是这样的方法虽然能抵挡穷举攻击,但是无法阻止密码分析攻击,因为根据语法和语言的特性(单词的使用频率,字母的使用频率),攻击者还是能够通过分析从而得到“缺口”:
单表代替密码较容易被攻破,因为它带有原始字母使用频率的一些统计学特征。一种对策是对每个字母提供多种代替,称为同音词(就像一个读音可以代表多个单词的同音词一样),一个明文单元也可以变换成不同的密文单元。比如字母e可以替换成16,74,35,和21,循环或随机地选取其中一个同音词即可。如果对每个明文元素(字母)分配的密文元素(如数字等)的个数与此明文元素(字母)的使用频率成一定比例关系,那么使用频率信息就完全被破坏了。
然而,即使采用了同音词方法,明文中的每个元素仅仅只对密文中的一个元素产生影响,多字母语法模式(比如双字母音节)仍然残留在密文中,从而使得密码分析相对简单。有两种主要的方法可以减少代替密码里明文结构在密文中的残留度:一种是对明文中的多个字母一起加密;另一种是采用多表代替密码。每一种我们都会简单地提及。
多字母替换之Playfair
Playfair算法一次对两个字母进行加密操作。
解密过程与加密类似,但方向相反:
- 同一行的字母:用它们左边的字母代替。
- 同一列的字母:用它们上面的字母代替。
- 不同行不同列的字母:同样形成矩形,用同一行另一顶点的字母代替。
本质是将两个字母(ac)替换成另两个字母 de(忽略中间的替换规则,即使根据两个明文字母的不同位置选择不同规则,也只是多常数级操作穷举,多四种情况),将25个字母按某种规律填入矩阵中。有26×26个字母对,所以要根据音节频率来识别出对应的字母对要困难得多。
但是,根据William Friedman在1942年指出其安全性很低,主要原因有如下:
- 密钥空间相对较小:Playfair密码的密钥空间为25!(约10^26),虽然比单表代替密码的密钥空间大,但在现代计算能力面前,仍然存在被暴力破解的风险。
- 保留双字母组合模式:Playfair密码对双字母进行加密,虽然破坏了单字母的频率信息,但双字母组合的频率模式仍然可能保留,攻击者可以通过分析双字母组合的频率来破解密码。
Hill密码
Hill密码能抵御频率分析攻击,不能抵御已知明文攻击
- 频率分析抵抗性:Hill 密码基于矩阵线性变换,将多个明文字符映射为密文字符,能打破单字母的频率分布规律,因此抵抗传统的单字母频率分析。
- 已知明文攻8击脆弱性:若攻击者获取一组明文-密文对,可通过线性代数求解矩阵逆元来破解密钥,因此无法抵御已知明文攻击。
例题
在 Hill 密码中,明文 "AB" 加密后为 "CD" ,密钥矩阵2×2,求密钥矩阵(模26, A=0)。
多表代替之Vigenère
对简单单表代替的改进方法是在明文消息中采用不同的单表代替。这种方法一般称之为多表代替密码。所有这些方法都有以下的共同特征:
采用相关的单表代替规则集。密钥决定给定变换的具体规则。
Vigenère密码是一种多表代替密码,由意大利密码学家Blaise de Vigenère在19世纪提出。它的代替规则集由 26个Caesar 密码的代替表组成,其中每一个代替表是对明文字母表移位0~25次后得到的代替单表。每个密码由一个密钥字母来表示,这个密钥字母用来代替明文字母a,故移位3次的Caesar 密码由密钥值d来代表。
- 密钥生成:选择一个关键词作为密钥,密钥的长度通常与明文相同或循环使用。
- 加密过程: 明文第一个字母s,密钥第一个字母为c表示将s对应到后移两位的凯撒密码表,以此类推
加密一条消息需要与消息一样长的密钥。通常,密钥是一个密钥词的重复,例如一个长度为15的明文需要加密,选定的密钥词是apple,那么需要重复3次。
这样的特性导致了其漏洞的产生(如果两个相同的明文序列之间的距离是密钥词长度的整数倍,那么产生的密文序列也是相同的),假设我们加密后的密文中相隔两处出现了“QWE”,中间的间隔就可以推断出密钥词的长度从而进行穷举。
Vernam密码
以上的密码都有可能通过密钥和明文之间的分布特征来破译,那么选择一种密钥无关明文的加密方式就是一种可能性的尝试。
一次一密
一次一密的最重要的特点是:密钥完全随机
置换加密
置换密码是将明文之间进行置换,最简单的例子就是栅栏技术,按照对角线的顺序写出明文,按行的顺序读出作为密文。
但是这种技巧很容易被密码分析者察觉,于是有了矩阵打乱的加密技巧
轮转机
轮转机(Rotor Machine)是一种用于加密和解密信息的机电设备,它在20世纪的密码学中扮演了重要角色,特别是在第二次世界大战期间的恩尼格玛密码机(Enigma machine)中得到了广泛应用。轮转机通过一系列可旋转的转子(rotors)来实现多轮的替换和移位操作,从而提供复杂的加密变换。下面是对轮转机的总结:
基本原理
- 转子结构:轮转机的核心是多个可旋转的转子,每个转子本质上是一个
替换表,将输入的字母映射到另一个字母。转子可以旋转,从而改变其内部的替换对应关系。 - 多轮替换:明文通过多个转子进行逐层替换,每个转子提供一层替换操作,增加了加密的复杂性。
- 周期性变化:转子在每次加密操作后会旋转一定的位置,使得加密变换具有周期性变化,进一步提高了加密的安全性。
工作过程
- 明文输入:用户输入明文字符。
- 转子替换:明文字符通过第一个转子进行替换,得到一个中间结果。
- 反射器处理:中间结果通过反射器(reflector)进行进一步替换,反射器的作用是确保加密和解密过程的一致性。
- 逆向替换:反射器处理后的结果通过转子的逆向替换,最终得到密文字符。
- 转子旋转:每次加密操作后,转子会按照一定的规则旋转,为下一次加密做准备。
安全性特点
- 复杂替换:多层转子的替换操作使得加密过程非常复杂,难以通过简单的频率分析来破解。
- 动态变化:转子的旋转使得加密变换动态变化,增加了破解的难度。
- 密钥空间大:转子的初始位置、转子的排列顺序以及反射器的配置等都构成密钥的一部分,提供了较大的密钥空间。
优缺点
- 优点:轮转机提供了比单表代替密码更高的安全性,其复杂的机械结构和多轮替换使得密码分析更加困难。
- 缺点:轮转机的机械结构相对复杂,容易出现故障。此外,其加密安全性依赖于转子的设计和密钥的管理,如果这些方面存在漏洞,仍然可能被破解。
历史意义与影响
轮转机,尤其是恩尼格玛密码机,在密码学史上具有重要地位。它代表了机械加密技术的一个高峰,其复杂性和安全性在当时是非常先进的。然而,随着计算技术的发展和密码分析方法的进步,轮转机逐渐被更先进的电子和计算机加密技术所取代。
轮转机的出现和发展为现代密码学奠定了基础,其设计理念和工作原理对后续的加密算法和密码学理论产生了深远的影响。
隐写术
严格意义上来说,隐写术并不属于加密的一种技术,而是属于保障信息安全(隐藏明文信息的一种)。
有两种办法可用来隐藏明文信息。
隐写术,它可以隐藏信息的存在;- 而密码学则是通过对文本信息的不同转换而实现信息的对外
不可读
经典的例子是一段极其平常的文字中,每一句的首字母连在一起就拼成了隐藏的信息。
在历史上还出现过其他的隐写术技术:
- 字符标记: 选择一些印刷字母或打字机打出的文本,用铅笔在其上书写一遍。这些标记需要做得在一般场合下辨认不出,除非将纸张按某个角度对着亮光看。
- 不可见墨水: 有些物质用来书写后不留下可见痕迹,除非加热或加之以某种化学物质。
- 针刺: 在某些字母上刺上小的针孔,这一般是分辨不出来的,除非对着光线。
- 打字机的色带校正; 用黑色的色带在行之间打印。用这种色带打印后的东西只在强光下可见。
分组密码-DES
流密码的加密速度通常快于分组密码 - 流密码逐位加密,无需分组填充,速度通常更快。
例题
- 任何分组密码都能转换成流密码使用。
- 答案:×
- 解析:虽然分组密码和流密码都是常见的加密方式,但并非任何分组密码都能简单地转换成流密码使用。分组密码按固定长度的分组进行加密,而流密码是逐位或逐字节加密,它们的加密模式和原理存在差异,有些分组密码转换为流密码可能会面临效率、安全性等问题。
- 哈希函数的输出长度固定,且无法从输出反推输入。
- 答案:√
- 解析:哈希函数的一个重要特性就是其输出长度是固定的,并且具有单向性,即从哈希值很难反向推导出原始输入。这使得哈希函数在数据完整性校验、数字签名等领域有广泛应用。
- 对 x 位哈希函数,寻找一条原像期望尝试 $2^{x}$ 次。
- 答案:×
- 解析:对 x 位哈希函数,根据哈希函数的特性和概率计算,寻找一条原像期望尝试次数约为 $2^{x-1}$ 次,而不是$2^{x}$次。
- CTR 第 i 块密钥流计算式:$S_i = E_K(IV + ___)$。
- 答案:i(或计数器值)
- 解析:CTR(计数器)模式中,初始向量(IV)与计数器值(如i)组合后作为分组密码的输入,生成的密文块即为密钥流。计数器每块递增 1,确保不同块的密钥流不同,避免重复加密导致的安全漏洞。
- 分组密码的雪崩效应是指:
- 选项:A. 明文微小变化导致密文显著变化;B. 密钥微小变化导致密文显著变化;C. 以上都是;D. 以上都不是
- 答案:C
- 解析:雪崩效应要求明文或密钥的微小变化(如 1 位翻转)会导致密文大幅改变,这是分组密码的重要安全特性。AES、DES 等算法均通过多轮变换实现该效应。
- DES 的分组长度,有效密钥长度,迭代轮数分别是
- 解答: 分组长度64 有效密钥56 迭代轮数16
两大设计原则
克劳德·香农在1945年的论文《密码学的数学理论》中提出,分组密码学的两大设计原则分别是:混淆和扩散
混淆:通过非线性变换模糊明文与密文、密钥之间的统计关系,例如AES的S盒通过字节替换提供非线性特性。扩散:将明文的统计特性扩散到密文中,使每个密文位受多个明文位影响,例如AES的MixColumns操作通过矩阵乘法实现字节间的扩散。
Feistel密码结构
- Feistel 是密码设计的一个结构,而DES就是采用这种结构设计的一个密码产品。
- Feistel 中要求轮函数F必须可逆
DES加密
DES 密钥 64 位中 8 位为奇偶校验,有效密钥长度 56 位。
例题:
- 2DES 有 112bits 密钥,足以抗穷举攻击,但因中间人攻击存在,故没被选为 DES 的替代算法。
- 答案:×
- 解析:2DES 虽然名义上有 112 位密钥,但由于中途相遇攻击,其有效密钥长度大大缩短,不能有效抵抗穷举攻击。它没被选为 DES 替代算法主要是因为安全性不足,而非题目中所说的情况。
- DES加密算法S盒
输入 6 位,输出 4 位
有限域
群、环和域都是数学理论中的一个分支–即抽象代数或称为近世代数的基本元素。
在抽象代数中,我们关心的是其元素能进行代数运算的集合,也就是说,可以通过很多种方法,使集合上的两个元素运算后得到集合中的第三个元素。这些运算方法都遵守特殊的规则,而这些规则又能确定集合的性质。
什么是群
在抽象代数中,操作符·具有一般性:可以指加法,乘法,或某些其他的数学运算。
例如:{Z, 加法}就是一个群,下面进行证明:(Z表示整数)
封闭性:任何两个正数a,b相加的结果都属于正数结合律:任意正数a+(b+c) = (a+b)+c单位元:很容易看出,0就是该群的单位元,任意数+0都等于本身逆元:对于任意正数,其相反数就是逆元,相加等于单位元0{Z, 乘法}就不是一个群,因为不满足A4性质
很容易看出,单位元是1,因为任何数×1都等于本身
但是,对于一个正数a,要使
a × a’ = 1,a’ 需要等于a的倒数,但是因为a属于整数,倒数不一定属于整数,所以不满足
置换群比较抽象,可以看下面两个文章理解、
有限群和无限群
如果一个群的元素是有限的,则该群称为有限群,并且群的阶就等于群中元素的个数。否则,称该群为无限群。
交换群
(A5)交换律:对于G中任意的元素a、b,都有a·b=b·a成立。
加法运算下的整数集合(包括正整数、负整数和零)是一个交换群。乘法运算下的非零实数集合是一个交换群。前面例子中的集合S,是一个群,但对于n>2,它不是交换群。
循环群
在群中将幂运算定义为对元素进行重复对应运算的操作,如在{Z, 加法}群中,a的三次幂表示a+a+a,而且,定义a的0次幂作为单位元e,并且a的-n次幂=(a’)的n次幂,其中a‘是a在群内的逆元素。如果群中的每一个元素都是一个固定元素a(a∈G)的幂,即a的k次幂(k为整数),则称群G是循环群。我们认为元素a生成了群G,或者说a是群G的生成元。
循环群总是交换群,它可能是有限群或无限群。
整数的加法群是一个无限循环群,它由1生成。在这种情况下,幂被解释为用加法合成的,因此n是1的n次幂。
什么是环
环是群上再加限制条件的集合
什么是域
域F,有时记为 {F,+,×},是有两个二元运算的集合,这两个二元运算分别称为加法和乘法,且对于F中的任意元素a、b、c满足以下公理:
- (A1-M6) F是一个整环:也就是说F满足从A1到A5以及从M1到M6的所有原则。
- (M7) 乘法逆元:对于F中的任意元素a(除0以外),F中都存在一个元素a的-1次使得
aa^-1 = (a^-1)a = 1成立。
有限域GF(p)
有限域的阶必须是素数的n次方- 所以GF(10)不存在
题目:
- GF(2⁸)的元素是次数≤7 的多项式,最高次为 7 次
多项式运算
我们只讨论单变元多项式,且可把多项式运算分为三种:
- 使用代数基本规则的普通多项式运算。
- 系数运算是模p运算的多项式运算,即系数在 GF(p) 中。
- 系数在 GF(p) 中,且多项式被定义为模一个n次多项式 m(x) 的多项式运算
高级加密标准AES
- AES在
GF(2^8)上使用的本原多项式是x^8 + x^4 + x^3 + x + 1 - 当
密钥长度分别为128,192,256bit时,AES加密需要10,12,14轮
- AES 支持 128/192/256 位密钥;分组长度固定 128 位。
- 答案:√
- 解析:AES(高级加密标准)规定了支持 128 位、192 位和 256 位的密钥长度,同时其分组长度固定为 128 位,以确保加密的安全性和一致性。
- AES MixColumns 使用的矩阵在域 (GF(2^8)) 上行列式为 ___
- 答案:3(或 0x03)
- 比较AES几种加密的方式
| 模式 | 安全性特点 | 使用场景 |
|---|---|---|
| ECB(电子密码本) | - 明文分组独立加密,相同明文生成相同密文,易暴露数据模式(如图片加密时出现重复图案)。 - 不抵抗选择明文攻击,安全性最低。 | 仅适用于短数据(如密钥),实际应用中极少使用。 |
| CBC(密码分组链接) | - 前一组密文与当前明文异或后加密,消除明文模式,安全性较高。 - 需初始向量(IV),且 IV 必须唯一,否则易受攻击。 | 常用加密模式,如磁盘加密、VPN 隧道,但加密效率受分组依赖限制。 |
| CTR(计数器) | - 将计数器值与密钥加密生成密钥流,与明文异或,无需填充,支持并行计算,效率高。 |
公钥密码学(非对称密码学)
非对称密码常常是指含有两个密钥的算法: 公钥和私钥。从公钥中推出私钥在计算上不可行的。
任何人能通过公钥加密原文,但是无法通过公钥解密,只能通过私钥才能获得正确的结果
例题:
- 非对称加密中每个用户管理密钥数为:
在非对称加密中,每个用户通常有一对密钥:一个公钥和一个私钥。公钥可以公开,而私钥必须保密。因此,每个用户实际需要管理 2 个密钥(公钥和私钥)。所以正确答案是 B. 2 个。
- 数字信封结合了对称加密和非对称加密,用于解决:
数字信封主要用于解决 密钥分发 的问题。它通过非对称加密保护对称密钥,确保只有特定的接收方可以解密并使用对称密钥来解密数据。因此,正确答案是 C. 密钥分发。
公钥密码体制
公钥密码体制有6个组成部分:
明文:算法的输入。它们是可读信息或数据加密算法:加密算法对明文进行各种转换。公钥和私钥:算法的输入。这对密钥中一个用于加密,一个用于解密。加密算法执行的变换依赖于公钥或者私钥。密文:算法的输出。它依赖于明文和密钥,对给定的消息,不同的密钥产生的密文不同解密算法:该算法接收密文和相应的密钥,并产生原始的明文。
公钥密码对算法的要求
公钥密码的性质决定了需要有这样特点的算法:
RSA加密算法
RSA体制是一种分组密码,其明文和密文均是0至某n-1之间的整数,通常n的大小为1024位二进制数或309位十进制数,也就是说n小于$2^{1024}$。
算法过程
RSA 算法使用乘方运算,明文以分组为单位进行加密,每个分组的二进制值均小于n,对于每个明文和密文分组,加密和解密的过程都如下:
加密过程
$$
C = M^e \mod n
$$
解密过程
$$
M = C^d \mod n = (M^e)^d \mod n = M^{ed} \mod n
$$
简化计算
因为RSA算法的核心是大整数之间的幂运算和mod运算,当数字过大的时候,需要计算的量就十分的庞大,需要简化计算提高效率
- 模算术里的求幂运算:$$ [(a \bmod n)\times(b \bmod n)]\bmod n=(a\times b)\bmod n $$
- 高次幂计算优化:例如计算 $x^{16}$,直接依次相乘需 15 次乘法。但若重复计算中间结果的平方($x^2$、$x^4$、$x^8$、$x^{16}$),仅需 4 次乘法即可完成。
- 模运算下的指数拆分:对于 $x^{11} \bmod n$,将指数 11 拆分为 $1 + 2 + 8$,即 $x^{11} = x \cdot x^2 \cdot x^8$。先分别计算 $x \bmod n$、$x^2 \bmod n$、$x^8 \bmod n$,再利用模运算性质 $[(a \bmod n) \times (b \bmod n)] \bmod n = (a \times b) \bmod n$,计算 $[(x \bmod n) \times (x^2 \bmod n) \times (x^8 \bmod n)] \bmod n$。通过这种方式,减少运算次数,提升计算效率,尤其在处理 RSA 中较大指数时,该策略能有效降低计算复杂度。
米勒-拉宾素性检验(MillerRabbin)算法详解_米勒拉宾素性检验-CSDN博客
【朝夕的ACM笔记】数论-Miller Rabin素数判定 - 知乎
例题
- 下列不是对称加密算法的是( )
- 选项:A.AES;B.SM4;C.RSA;D.ChaCha20
- 解析:RSA 是非对称加密算法,其他均为对称算法。
- 答案:C
- 不是对称加密算法优点的是
对称加密算法的优点包括:
- A. 效率高:对称加密通常比非对称加密更高效。
- C. 适合加密大量数据:对称加密算法适合加密大量数据,因为其速度快。
- D. 速度快:对称加密算法的加解密速度快。
而 B. 密钥管理简单 并不是对称加密算法的优点,因为对称加密需要安全地分发和管理密钥,密钥管理相对复杂。因此,B 是正确答案。
欧拉函数
裴蜀定理
https://baike.baidu.com/item/%E8%A3%B4%E8%9C%80%E5%AE%9A%E7%90%86
例题:存在x,y使得21x+25y=1吗?
根据裴蜀定理,如果 a、b 是整数,且 gcd (a, b) = d,那么对于任意的整数 x、y,ax + by 都一定是 d 的倍数;反之,一定存在整数 x、y,使得 ax + by = d。因为 gcd (25, 21) = 1 ,所以存在整数 x 和 y 使得 25x + 21y = 1。
概率性加密算法
ElGamal加密算法在加密过程中,每次加密相同的明文会产生不同的密文,因为它使用了随机数 k。这种特性使得它具有概率性,增加了密码分析的难度。
ElGamal加密算法在加密过程中,不能使用同一个随机数,使用同一个随机数的后果是攻击者可以利用两次加密的密文和已知的部分信息(如明文的某些特征),通过数学计算获取私钥,从而破解密文,严重影响加密的安全性。
例题:
随机数质量常常用两大指标来衡量:随机性和不可预测性
哈希算法
首先,理解什么是hash函数?
Hash函数H将可变长度的数据块M作为输入,产生**固定长度的Hash值 **h = H(M)。
称M是h的原像。因为H是多对一的映射,所以对于任意给定的Hash值h,对应有多个原像。如果满足x≠y且H(x)=H(y),则称为碰撞。
- 哈希碰撞:不同的输入值经过哈希算法的计算,输出了同样的值,这就是hash碰撞
例题:
- 生日攻击针对哈希“碰撞”而非哈希“原像” 答案:√
- 解析:生日攻击的原理是基于概率统计中的生日问题,通过寻找哈希函数输出值相同(即碰撞)的不同输入,来达到攻击目的。它并不关注找到与给定哈希值对应的原始输入(原像),而是利用碰撞来伪造消息等进行攻击。
- 分组加密算法和哈希函数最大的不同是可逆性 答案:√
- 解析:分组加密算法需要具备可逆性,即能够根据密文和密钥解出明文;而 Hash 函数是单向函数,从哈希值无法还原出原始输入数据,这是二者在实现过程中的最大区别。
- 安全哈希算法 SHA-1 的输出长度为 160 位
- 生日攻击的复杂度约为 $2^{ℓ/2}$,其中 ℓ 为哈希值的长度
- MD5 算法的主要安全问题是存在高效的碰撞攻击
- 针对哈希函数的碰撞抗性主要通过生日攻击来实现,因此选项 C 是正确答案
- d
消息验证码
- 消息认证码需要使用密钥,而哈希函数不需要。
- 答案:√
- 解析:消息认证码(MAC)是带密钥的哈希函数,通过使用共享密钥对消息进行计算得到认证码,用于验证消息的完整性和来源真实性;而普通哈希函数计算时不需要密钥,只是对输入数据进行固定长度的哈希值计算。
- MAC 既能鉴别数据源又能校验完整性。
- 答案:√
- 解析:消息认证码(MAC)利用共享密钥对消息进行计算生成认证码,接收方使用相同密钥重新计算 MAC 并与接收到的 MAC 对比。如果二者相同,既能证明消息在传输过程中未被篡改(校验完整性),又能说明消息来自持有相同密钥的合法发送方(鉴别数据源)。
- 关于 MAC 的描述,它不提供机密性保护
数字证书
例题:
- 数字证书不得在公网上公开。 答案:×
- 解析:数字证书的有效期是由证书颁发机构(CA)设定的,而不是证书持有者。CA 在颁发证书时,会根据自身的策略和相关标准,确定证书的有效期限,以保证证书的安全性和可靠性。
- 数字证书的有效期由证书持有者自行设定。 答案:×
- 解析:数字证书的有效期是由证书颁发机构(CA)设定的,而不是证书持有者。CA 在颁发证书时,会根据自身的策略和相关标准,确定证书的有效期限,以保证证书的安全性和可靠性。
- 数字签名标准(DSS)推荐使用的哈希算法是 SHA-1
- 数字签名不具备的特性是机密性,因此选项 C 是正确答案。
其余期末例题
VPN “隧道模式” 会封装原 IP 首部实现地址隐藏。



























