第一部分 密码学
网络与协议安全基础
1). CIA三元组:
保密性(Confidentiality), 完整性(Integrity), 可用性(Availability), 真实性(Authenticity), 可追溯性(Accountability)。
2). 安全的三个概念:
绝对安全: 无条件安全,香农指出仅当密钥长度和明文一样长时,才能达到无条件安全;
计算安全: 破解该密码系统所需要的努力超过了破译者的破译能力;满足 价值有效性,时间有效性的加密算法称为计算上安全的;
可证明安全: 通过理论证明,破译算法的计算量不低于求解该算法所基于的数学难题的计算量。(RSA 基于大整数分解问题)
3). 不同层次安全模型
攻击类型和密码破译者掌握的信息:
唯密文: 加密算法,截获的部分密文;
已知明文: 加密算法,截获的部分密文,一个或多个明密文对;
选择明文: 加密算法,截获的部分密文,自己选择的明文消息及相应的密文;
选择密文: 加密算法,截获的部分密文,自己选择的密文消息及相应的明文;
4). 科尔霍夫原则: 系统的保密性不依赖于对加密体制或算法的保密,仅依赖于密钥。
5). 重放攻击: 重放攻击(Replay Attack)是一种网络攻击形式,攻击者通过拦截并重放合法用户之前发送的有效数据包,来冒充合法用户进行未授权操作。
DES
DES是一种用56位密钥来加密64位数据的对称加密算法,其核心部件包含两次置换(初始置换和逆初始置换),密钥控制下的16轮迭代加密以及轮密钥的生成。
- 轮迭代表示为: L*I=R(I-1)** ; RI**=L(I-1)⊕f(RI-1,K(I-1)**)*
图1 DES的算法框图 图2 DES轮结构的第i轮
F函数表示为:fRI-1*,KI**=P(SE(RI-1)⊕KI**)*
![](https://img-blog.csdnimg.cn/direct/c7e7743d34ab4d13bcf39e764d8bf355.png)
图3 F函数
- 密钥生成步骤包含:
1). 初始置换PC-1: 从64位主密钥中提取56位有效密钥(重排主密钥同时去掉奇偶校验位;
2). 分割以及循环移位: 56位密钥等分为两部分,每一部分进行循环左移(1,2,9,16轮左移一位,其余轮左移两位);
3). 子密钥生成 PC-2: 每一轮循环移位后的两部分合并为56位,经过置换选择2将密钥压缩为48位子密钥Ki。
DES的强度
完全依赖于所使用的密钥,算法是公开的;DES使用S-盒实现小块的非线性变换,达到混乱目的,使用P置换实现大块的非线性变换,达到扩散的目的。
DES的安全性
1). 雪崩效应: 当输入发生最微小的变化时,导致输出的剧变
2). 弱密钥: 若给定初始密钥K,各轮的子密钥Ki都相同,则称给定密钥为弱密钥;弱密钥使得DES在选择明文攻击下的搜索量减半,在这种情况下,攻击者只需将密文再经过一次加密即可还原明文。
AES
AES总体结构: 明文分组128位,密钥长度182,192或256位。
1). 字节代换: 一个S盒完成分组中的按字节代换(非线性);
2). 行移位: 简单的置换,对四行的矩阵进行,第一行不变,第二行左移一个字节,第三行左移两个字节,第四行左移三个字节;
3). 列混淆: 利用在域GF(2^8)上的算术特性的代换,即通过有限域上的多项式乘法实现每个字节都依赖列中的所有字节;
4). 轮密钥加: 利用当前状态矩阵和本轮子密钥进行按位异或.
图4 单轮AES的结构
目前AES算法本身是安全的
3DES
双重DES存在中途相遇攻击的问题,即由于EK1P*=DK2**(C)*,因此只需用所有可能的密钥加密明文P并将结果存储,然后用所有可能的密钥解密密文C,寻找两种情况下相同的结果,复杂度为o(2^56)。
3-DES使用两个密钥进行三次加密:E-D-E,即C=EK1**(DK2**(EK1**(P))), 若K1=K2,则相当于单次加密。
分组密码的工作模式
1). 电码本模式(ECB): 每个明文组独立地以同一密钥加密。用于传送短数据;
2). 密码分组链接(CBC): 加密算法的输入是当前明文组与前一密文组的异或。用于传送数据分组,认证;
3). 密码反馈(CFB): 每次只处理输入的j比特,将上一次的密文作为加密算法的输入以产生伪随机输出,该输出再与当前明文异或以产生当前密文。用于传送数据流,认证;
4). 输出反馈(OFB): 与CFB类似,不同之处是上一次加密算法的输出作为本次加密算法的输入。用于噪声信道上传送数据流;
5). 计数器(CTR): 对计数器依次用K加密后与明文异或。适合并行,可随机访问,高速。
流密码和RC4
按位处理明文消息,即用一个伪随机的流密钥与明文按位异或,流密钥的随机性完全摧毁了明文消息的统计特性;不能重复使用流密钥,否则系统会被破解。RC4算法由Ron Rivest于1987年提出,是密钥长度可变,面向字节的流密码算法。
1). RC4算法关键变量:
密钥流:密钥流的长度和明文的长度是对应的;
状态向量S:长度为256个单元,每个单元是一个字节,每个单元都是0-255之间的8比特数,但是排列顺序发生了改变;
临时向量T:和S长度一样,若密钥长度为256字节,则将密钥的值赋给T,否则轮转地将密钥的每个字节赋值给T;
密钥K:长度为1-256字节,通常取16字节;密钥长度与明文和密钥流长度无必然关系。
2). RC4算法的组成:主要包含四部分:
密钥编排,使用KSA算法根据用户密钥生成S盒;
产生密钥流:使用PRGA算法生成密钥流用于加密数据;
加密:密钥流与明文进行异或运算得到密文;
解密:密钥流与密文进行异或运算得到明文。
3). RC4的安全性:
可以抵御已知的各种攻击,加密的结果是“非线性”的,RC4是流密码,绝不重复使用密钥。
随机数发生器
1). 随机数的应用:随机数产生器是流密码的关键;用于相互鉴别,以防止重放攻击;会话密钥的产生;公开密钥的产生如RSA算法中产生密钥;一次一密中的密钥流。
2). 伪随机数产生器:
图5 随机数发生器
图6 循环加密生成随机数
公钥加密技术
- 公钥密码体制:
1). 对称密码体制的问题:加解密能力是捆绑在一起的,基于比特模式;密钥更换,传递和交换需要可靠的信道,密钥分发困难;密钥管理困难,N个用户加密通信的实现需要C=N(N-1)/2个密钥;无法满足不相识的人之间通信的保密要求;不能实现数字签名。
2). 非对称密码体制的基本特点:加解密能力是分开的,基于数学函数;密钥分发简单;需要保存的密钥量大大减小,N个用户需要N对密钥;可满足不相识人之间的保密通信;可以实现数字签名。
- 公钥算法的特点和组成:
1). 公钥算法特点:仅根据密码算法和加密密钥来确定解密密钥在计算上不可行;两个密钥的任何一个都可用来加密,另一个解密;
2).公钥密码体制的组成:明文,加密算法,公钥和私钥,密文,解密算法。
3). 公钥算法的步骤:
密钥分配:用户产生一对密钥,将公钥公开,私钥自己保留;
加密消息:若Bob要给Alice发送消息,则用Alice的公钥对消息加密,实现保密性;
认证:需要认证时示证方用自己的私钥加密消息(签名),验证方用示证方的公钥解密消息(验证),成功解密则认证成功。
- RSA算法:
1). 算法流程:
随机选择两个秘密大素数p,q;
计算公开模数n;
计算秘密的欧拉函数φ*n=(p-1)(q-1)*;
选择一个与φ**n
互素的公开数e;
用欧几里得算法求e的模φ**n逆元,即e**d mod φn=1,*求私有数d;
得公钥(e,n),私钥(d,n);
加密:*C=Me*mod n
解密:*M=Cdmod n=(Memod n)d=M* (M<n)
2). 安全性:
RSA算法的安全性依赖于大整数分解问题
- DH密钥交换
DH密钥交换算法是一种公钥分发机制,算法的安全性依赖于求解离散对数问题(DLP)。
1). 基本流程:
通信双方约定一个大素数q和模q的本原根α(公开);
各方分别选择一个秘密钥,XA,XB <q,计算公钥y*A=αXA mod q,yB**=αXB mod q *并交换;
双方共享的密钥KAB计算为:K*AB=yAXB** mod q=yBXA** mod q* ;KAB是双方用对称密码通信时共享的密钥;
攻击者要想获取X,必须解决DLP问题。
图7 DH密钥交换算法
- 中间人攻击
图8 对DH算法的中间人攻击
消息认证技术
消息认证是一种允许通信者验证接收消息是否可信的措施,主要指消息的完整性。
- 安全散列函数:为文件、消息或其他数据块产生“指纹”,浓缩任意长的消息到一个固定长度的值h= H(M).
1). 对安全散列函数的要求:
抗原像攻击(单向性):对于预先给定的Hash值找不到对应的原数据;
输入长度可变,输出长度固定;
效率高;
抗弱碰撞性:对于任何给定的分组x,找到满足y≠x且H(x)=H(y)的y在计算上不可行;
抗强碰撞性:找到任何满足H(x)=H(y)的偶对(x,y)在计算上不可行;
伪随机性:H的输出满足伪随机性的测试标准。
2). SHA-512逻辑:
步骤一:附加填充位:填充消息使其长度模1024与896同余,即使消息长度满足要求,仍然需要填充,因此填充位数在1-1024之间。填充由一个1和后续的0组成;
步骤二:追加长度:在消息后再附加128位的块,是128位无符号整数,表示填充前消息的长度;
步骤三:初始化Hash缓冲区:Hash函数的中间结果和最终结果保存在512位的缓冲区中,用8个64位的寄存器表示,8个寄存器初始化为以下整数:
图9 SHA-512寄存器的初始化
步骤四:以1024位的分组为单位处理消息。算法的核心是具有80轮运算的模块F;
步骤五:输出512位的Hash值。
图10 SHA-512的基本结构
SHA-512算法的特性:Hash码的每一个位都是全部输入位的函数。基本函数F多次复杂重复的运算使得结果充分混淆;根据生日攻击原理,找到两个具有相同摘要的消息的复杂度为2256,而给定摘要寻找消息的复杂度为2512。
- 消息认证码:
Hash函数存在中间人攻击的缺陷,即攻击者可以同时篡改消息和哈希值而不被察觉。
消息认证码(MAC)的优点:可以验证消息的完整性,还可以验证数据确实是从原始方发送的未经篡改的消息。
1). 基于Hash函数的MAC:HMAC
算法流程:
1.在密钥K左边填充0,得到b位的K+;
2.K+与ipad执行异或,产生b位分组Si;
3.M附加在Si后;
4.将H作用于步骤3所得的结果;
- K+与opad执行异或,产生b位分组S0;
6.将步骤4中的散列码附加在S0后;
7.将H作用于步骤6所得的结果并输出该函数值。
图11 HMAC算法
HMAC的安全性:任何建立在嵌入散列函数上的MAC,其安全性在某种程度上依赖于该散列函数的强度
2). 基于分组密码的MAC
2.1). 基于密文的MAC:CMAC 算法基本流程如下:
图12 CBC-MAC算法
2.2). 具有密码块链式信息认证码的计数器(CCM)
加密并MAC(E&M)方案的改进,可提供认证与加密;组成CCM的关键算法是AES加密算法,CTR工作模式和CMAC认证算法,在加密和MAC算法中共用一个密钥K。
CCM加密过程的输入包括三个部分:
将要被认证和加密的数据,即明文P;
将要被认证但不需要加密的数据A;
临时量N作为负载和相关数据的补充,对于消息在生命周期内,N取值唯一,防止重放攻击。
图13 CCM的认证部分
图14 CCM的加密部分
版权归原作者 zzzxllll 所有, 如有侵权,请联系我们删除。