密码编码学与网络安全
对课程期末考试的个人复习总结
一、概述
- 三个目标(CIA):机密性(防泄漏),完整性(防篡改),可用性
其他性质:真实性(认证)、责任可追溯性 - OSI安全框架=X.800:
1)为有效评价安全需求,并进行评估和选择,管理员需要定义安全需求并给出措施。
(为了有效评价一个机构的安全需求,并对各种安全产品和策略进行评估和选择,负责安全的管理员需要以某种系统的方法来定义安全需求并描述满足这些需求的措施)
2)定义和提供安全需求的系统化方法
3)提供学习概貌
4)关注三个方面:安全攻击,安全机制,安全服务 -
安全攻击:任何危及信息系统安全的行为
1)被动攻击:
了解或利用系统信息,不影响系统资源。
2种:内容泄露:未经许可泄露信息给攻击者,不修改信息
流量分析:确定主机身份和位置,判断通信性质
常见手段:搭线监听,无线截获
特点:不易发现,重在预防(虚拟专用网VPN,加密保护)
2)主动攻击:
改变系统资源,影响系统运作;涉及数据流的篡改或产生
4种:假冒;重放;篡改消息;拒绝服务
特点:能检测,不易预防,措施(自动审计、入侵检测和完整性恢复) -
安全机制:检测、阻止攻击或从攻击状态恢复到正常状态的过程(或实现该过程的设备)
保护系统免受侦听,阻止安全攻击,恢复系统的机制。
特点:没有单一机制能提供所有安全服务;一个机制是其他机制的基础 -
安全服务:加强数据处理系统、信息传输的安全性的一种处理过程或通信服务。
目的在于利用一种或多种安全机制阻止安全攻击
安全服务通过安全机制来实现。没有单一的安全机制可以实现所有的安全服务,一个安全机制往往是构成其他安全机制的基础
1)X.800:为系统协议层提供的服务,保证安全性
可认证性,访问控制,机密性,完整性,不可否认性,可用性
2)RFC 2828:系统提供的保护资源的服务
三种基本安全服务:认证、访问控制、数据保密性
其他安全服务:数据完整性、不可否认性 -
认证:保证通信的真实性。保证通信的实体是它所声称的实体。
对等实体认证:用于逻辑连接时为连接的实体的身份提供可信性
数据源认证:在无连接传输时保证收到的信息来源是声称的来源
二、分组密码:DES和AES
定义:把明文分组当作整体,产生一个等长的密文分组,并且可逆
设计思想:扩散(通过置换),混淆(通过代换)
- 扩散:将明文及密钥的影响尽可能迅速地散布到较多个输出的密文中(将明文冗余度分散到密文中)
- 混淆:使作用于明文的密钥和密文之间的关系复杂化,是明文和密文之间、密文和密钥之间的统计相关特性极小化,从而使统计分析攻击不能奏效
- 置换:明文通过某种处理得到类型不同的映射(eg:重新排列字符)
- 代换:明文由其它的字母、数字或符号所代替(eg:凯撒密码)
AES
- 使用Rijndael算法(分组密码算法,分组长度和密钥长度相互独立,都可以改变)
- AES参数 AES参数.png
- 步骤:字节代换(代换),行移位(置换),列混淆(代换),轮密钥加(代换)
- 字节代换:查表。将高4位作为行值,低4位作为列值,从16×16的S-BOX中的对应位置取出元素作为输出
- 行移位:第n行循环左移n-1字节(也使得某列的4个字节被扩展到了4个不同的列)
- 列混淆:按列操作,每一列分别与矩阵相乘,得到一列新数据,替代原来的列(基本运算均为GF(2^8)上的运算)
- 轮密钥加:128位的状态位与128位的轮密钥异或(矩阵与密钥矩阵异或)
- AES的每一步操作都可逆;解密算法与加密算法的结构不相同;解密算法比加密算法效率要低
- 轮密钥加开始,轮密钥加结束;仅在轮密钥加阶段使用密钥
- 过程:第0轮是轮密钥加,后n-1轮是4个步骤,最后1轮只有字节代替、行移位、轮密钥加3个阶段(每轮输入1个或多个4×4矩阵,输出1个4×4矩阵)(解密过程最后1轮也只有3个阶段)
- AES优点/原则:
国际加密标准;
抗攻击能力强(线性攻击,差分攻击)
结构简单,效率高,应用广泛 -
密钥调度算法
其中4×4(16个字节/4个字)的k矩阵是输入;g是一个复杂的函数,每逢生成下标是4的倍数的字,就要用到g函数
密钥调度算法 - G函数
字变成字节,字节循环左移1位
利用S-BOX进行字节代换
和轮常量Rcon[j]= (Rc[ j ],0,0,0)异或;其中Rc[1]=1,Rc[ j ]=2×Rc[ j-1] (GF(28)上的运算) -
GF(28)上的运算
加法:异或
乘法: GF(2^8)乘法 生成元:gi;i=0,...,254;gi可以跑遍整个域
乘法逆元:A的乘法逆元A',满足A×A'=1 - S-BOX构造(高字节是行,低字节是列)
先求出{xy}的逆(十六进制){xy}-1,{00}的逆是{00}本身
将{xy}-1以此循环左移1、2、3、4位得到a,b,c,d
S-BOX中对应的值 = {xy}-1 ⊕ a ⊕ b ⊕ c ⊕ d ⊕ {63} - 异或的性质
{03}·x = ( {02}·x ) ⊕ x
分组密码工作模式:
定义:是一项增强密码算法或者使算法适应具体应用的技术。(分组密码是加密固定长度的分组,而工作模式提供了加密任意数量的明文的方法)
模式 | 描述 | 典型应用 |
---|---|---|
电码本(ECB) | 用相同的密钥分别对明文分组独立加密(要填充) | 单个数据的传输(eg:加密密钥) |
密文分组链接(CBC) | 加密算法的输入是上一个密文组和下一个明文组的异或。第一块明文和初始向量IV异或(要填充) | 面向分组的通用传输、认证 |
密文反馈(CFB) | 移位寄存器初始值IV,加密后取结果的前s位和s位明文异或,得到第一轮密文(s位)。移位寄存器左移s位,低字节补充s位的上一轮密文;作为新的加密算法输入 | 面向数据流的通用传输、认证 |
输出反馈(OFB) | 与CFB类似,只是加密算法的输入是上一次加密的输入,且使用整个分组而不仅仅使用s位 | 噪声信道上的数据流的传输(eg:卫星通信) |
计数器(CTR) | 每个明文分组都与一个经过加密的计数器相异或。对每个后续分组计数器递增 (模2b,b为分组长度),最后一个分组仅用剩下的位数做异或 | 面向分组的通用传输、用于高速需求 |
CTR优点:硬件软件效率高(并行加密);基本加密解密不依靠明文密文,因此可以进行预处理;加密数据块的随机访问;安全;简单
分组密码各工作模式的反馈特征
三、密码学 公钥
- 三种误解:
1)公钥密码比传统密码安全(没有谁比谁安全,安全性只依赖于密钥长度和破译密文所需的计算量)
2)公钥密码是通用方法,传统密码已经过时(相反,公钥密钥所需的计算量大,只能用在密钥管理和签名这类应用中)
3)公钥密码实现密钥分配简单 - 解决的问题
1)密钥交换
2)加密解密
3)数字签名 - 组成成分
1)明文、密文
2)公钥、私钥:算法的输入。这对密钥中一个用于加密,一个用于解密。加密算法执行的变换依赖于公钥或者私钥。(任意一个都可用来加密,另一个用来解密)
3)加密算法、解密算法 -
公钥密码体制满足的要求
一般要求:
1)同一算法用于加密和解密,但加密和解密用不同密钥
2)发送方拥有加密或解密密钥,而接收方拥有另一密钥
安全性要求:
1)两个密钥之一必须是保密的
2)若没有其他信息,则解密消息是不可能,至少是不可行的
3)知道算法、其中一个密钥、若干密文;但不足以确定另一个密钥
对公钥密钥的要求:
1)产生一对密钥在计算上是容易的
2)用公钥和明文,发送方产生相应的密文在计算上是容易的
3)接收方用私钥解密得到明文的过程,在计算上是容易的。
4)有公钥,攻击者确定私钥在计算上不可行
5)有公钥、密文,攻击者要得到明文在计算上不可行
6)加密函数和解密函数的顺序可以交换(用公钥解密私钥加密的东西和用私钥解密公钥加密的东西,是一样的) - 数字签名:用密钥对消息的认证符进行加密,加密的结果可作为数字签名(认证符是消息的函数,消息的任何修改都会引起认证符的变化。而密钥加密后可以用公钥解密,并且密钥只有发送人拥有)
- 上述数字签名无法保证保密性(因为公钥可以被他人得到)。满足保密性又提供认证功能的方法:2对密钥对,先用其中一对密钥的私钥加密,再用另一对密钥的公钥加密。
- 应用:加密解密、数字签名、密钥交换
RSA
-
密钥生成过程
RSA密钥产生、加密、解密
-
算法的基本运算方法:
- 求e:随机选择,满足 gcd(e,Φ(n))=1 的概率为0.6
- 求d:
way A:egcd
way B:找出d,使得de=kΦ(n)+1,即,k=0,1,…… - 模指数运算:
way A:利用模算术性质 (a×b) mod n = [(a mod n) × (b mod n)] mod n
way B:快速模幂算法,计算 ab mod n;其中c不是必需的,引入仅仅为了便于解释算法,c的终值是指数b;整数b化为2进制数,k为b的2进制数的位数。(一言以蔽之,让f初值为1,循环k次,每次让 f = (f × f) mod n,若此次循环中b对应的二进制数的位为1,则让 f = (f × a) mod n)
快速模幂算法
way C:
1)CRT加速计算M = Cd mod n
将mod n变成mod p、mod q;分别计算Vp = Cd mod p,Vq = Cd mod q
让q' = q-1 mod p,p' = p-1 mod q
M = (Vpqq' + Vqpp') mod n
2)用Fermat定理(若a和p互素,则ap-1 ≡ 1 mod p)简化Vp和Vq的计算
比如让Vp = Cd mod p中的指数d不断减去p-1(即mod p-1) - 挑选素数:
1)随机选择一个奇整数 n
2)随机选择一个整数 a < n
3)执行诸如Miller-Rabin之类的概率素数测试。若n未通过测试,则拒绝n并转到第一步
4)若n通过足够多的测试次数,则接受n;否则转到第二步
-
RSA安全性建立在哪种事实上:大整数质数分解的困难
实际就是公钥密码体制的要求
1)可以找到e,d,n;使得对所有M<n,有Med=M mod n(Euler定理的推论:MkΦ(n)+1=M mod n)
2)对所有M<n,计算Me和Cd是比较容易的
3)由e和n确定d是不可行的 - 对RSA的攻击
方法:
1)穷举攻击:穷举可能的私钥
2)数学攻击:实质是试图分解两个素数的成绩(从n求出p、q;直接确定Φ(n);直接确定d)
3)计时攻击:依赖于解密算法的运行时间(解决方法:不变的幂运算时间、随机延时、隐蔽(执行幂运算前将密文乘上一个随机数))
4)基于硬件故障的攻击:应用产生签名过程中处理器发生的故障
5)选择密文攻击CCA:利用RSA算法的性质
本质:
1)分解n或phi(n);考虑x2-(p+q)x+pq=(x-p)×(x-q);从左式可以确定p、q;因为其2个系数pq=n、p+q=n+1-phi(n)
2)利用素数生成的不合理性
3)利用e和d选取的不合理性分解n
RSA相关内容
-
针对RAS的CCA攻击
1)利用性质:E(PU,M1)×E(PU,M2)=E(PU,[M1×M2])。对密文修改,发送给接收方,接收方解密得到无意义字段,攻击方通过无意义字段获得明文。
2)步骤:
C=Me mod n
计算X=(C×2e) mod n
得到解密后的Y=Xd mod n
实质上,X=(C mod n)×(2e mod n)=(Me mod n)×(2e mod n)=(2M)e mod n
因此Y =(2M) mod n
(构造一个Y'=(3M)mod n,则M=Y'-Y)
3)解决方法:加密前对明文进行随机填充,使得密文随机化,从而让上述的性质不成立 -
gcd(a,b)=gcd(b,a mod b);a≥b,不断迭代直到b=0时,返回a
gcd(a,b)=gcd(b,a)=gcd(-a,b)=gcd(|a|,|b|) -
egcd
1)作用:求出最大公因子d,而且可以得到2个整数x,y;他们满足ax+by=d=gcd(a,b)
2)过程
way A:初始矩阵不断进行行运算得到结果矩阵(第三列出现0)
进行的行运算操作:a所在的行 = a所在的行 - b所在行 × n;其中a是a、b中的较大数,n是保证 b×n < a 成立的最大正整数
3)运用:e与Φ(n)互素,ed ≡ 1 mod Φ(n),求d
即ed mod Φ(n) ≡ 1 mod Φ(n) ,即求e在mod Φ(n)下的乘法逆元
那么有 Φ(n)x+ed = gcd(Φ(n),e) = 1 (该式子两边同时mod Φ(n)即可得到上面的式子)
所以求d即求ax+by=d=gcd(a,b)中的y - Fermat定理:ap-1 ≡ 1 mod p;其中p是素数,a是整数且不能被p整除
Fermat小定理:ap ≡ a mod p;其中p是素数,a是任意整数 - 欧拉函数Φ(n):小于n且与n互素的正整数的个数
素数p:Φ(p) = p-1
素数p,q:Φ(pq)=(p-1)×(q-1) - 欧拉定理:aΦ(n) ≡ 1 mod n;对于任意a,n,有gcd(a,c)=1
推论:aΦ(n)+1 ≡ a mod n;其中a,n任意
欧拉定理是Fermat定理的更一般形式 -
中国剩余定理CRT
1)用途:加速模运算,使得模m的大数运算转化到相对较小的数的运算
2)例子:x ≡ 2 mod 5;x ≡ 3 mod 7;我们可以唯一得到x ≡ 17 mod 35;其中模数35等于5×7(逆过来便可化成较小的数的模运算)
3)定理:
中国剩余定理 CRT确定的唯一式子
- 同余的性质
1)n|(a-b),则a ≡ b mod n
2)传递性
3)先进行四则运算再取模 = 先取模后再进行四则运算后再取模 - 模运算的性质
1)加法消去律成立和加法逆元的存在是一致的
2)乘法消去律成立和乘法逆元的存在是一致的:a和n互素
eg:(a×b) ≡ (a×c) mod n,则b ≡ c mod n
即当一个整数与n互素时,他才会在Zn中存在一个乘法逆元
四、密码学 密钥交换
Diffie-Hellman
-
DH协议
1)作用:密钥交换
2)安全性是建立在下述事实上:求关于素数的模素数幂运算相对容易,而计算离散对数却非常困难;对于大素数,求离散对数被认为是不可行的(b ≡ ai mod p,指数i成为b的以a为底的模p离散对数)
3)本原根(生成元):对于素数p,其本原根a的幂可以产生1到p-1之间所有的整数
求证a为p的本原根:ap-1 ≡ 1 mod p,且对于任意的an,没有一个的值同余于1 mod p。其中n为小于p-1的正整数 -
基本过程
Diffie-Hellman密钥交换
XA和XB最好应同时大于1小于q-1(Fermat定理,否则根据公钥容易知道XA和XB)
-
可能存在的攻击
1)重播攻击
2)中间人攻击:中间人生成2个私钥,然后计算2个公钥。在A和B进行公钥交换的时候截获,并将自己的公钥分别返回给A和B。这样攻击者就分别和AB进行了密钥交换(原因:没有对通信的参与方进行认证;可以通过数字签名和公钥证书来克服)
ElGamal密码体制
关于密钥K的计算本质上和DH协议是一样的(即C1本质上就是YB),Elgamal只是补充了对明文M的加密解密(C2=KM mod q;M=(C2K-1) mod q)
这样还可以让K作为一次性密钥,用于加密解密信息(比如将信息分组,然后每个分块用唯一的K,这样可以防止攻击者利用信息的某一分块计算出其他分块,若M1已知,则很容易计算出M2)
椭圆曲线密码体制
-
Zp*上的椭圆曲线
公式 y2 mod p = (x3+ax+b) mod p
乘法被定义为重复相加。如4P=P+P+P+P
Zp*上的椭圆曲线算术
五、Hash与MAC
Hash
将任意长报文(一般会被填充为固定长度分组的整数倍)映射成一个较短的定长输出报文的函数 h = H(M)(相对易于计算),为文件、报文或其他的分组数据产生“数字指纹”(Hash常被用于判断数据是否被更改过,而不是加密解密函数)
-
功能
消息认证
数字签名
产生单向口令文件
入侵检测、病毒检测
构建随机函数PRF、做伪随机数发生器PRNG -
安全需求
1)单向性:对任意给定的码y, 寻求x使得H(x)=y在计算上是不可行的
2)弱抗碰撞性:任意给定分组x, 寻求不等于x的x', 使得H(x)= H(x')在计算上不可行
3)强抗碰撞性:寻求任何的(x,x')对,使得H(x)=H(x')在计算上不可行
4)伪随机性
生日悖论指出弱抗碰撞性和强抗碰撞性对Hash函数的安全性的要求的差距
单向性和抗碰撞性相互独立 -
安全Hash算法的一般结构
将输入消息分为L个固定长度的分组,每一分组长b位,最后一个分组不足b位时需要将其填充为b位,最后一个分组包含输入的总长度(增加攻击难度)
安全Hash算法的一般结构如果压缩函数具有抗碰撞能力,那么迭代Hash函数也有抗碰撞能力;由此可见,设计安全Hash函数可简化为设计具有抗碰撞能力的压缩函数问题,并且该压缩函数的输入是定长的。
- Keccak设计的新思想
海绵结构(可视为轻量密码):
新的压缩函数(主要操作是xor和rot,无查表和元素运算) - 海绵结构
1)参数:
f(迭代函数)、r(位速率:输入分组的位长度)、pad(填充算法)
2)过程:
为了格式统一,任意消息都需要进行填充
状态变量s的初值全部置为0
如果输出长度L满足 L ≤ b,那么吸水阶段完成后,则返回 s 的前 L 位,海绵结构运行结束
否则进入挤压阶段,s的前 r 位作为输出分组Z0;然后用迭代函数 f 更新 s;再将新的 s的前 r 位作为输出分组Z1;直到得到输出分组Z0、Z1……链接后的总长度大于 L 。则将链接后的输出分组 Z 的前 L 位返回
海绵结构 -
SHA-3的基本迭代结构(最基本的了解,eg:5个步骤干了什么)
将1600bit的输入变成5×5矩阵,每个单位有64bit(1个字)
函数 | 类型 | 描述 |
---|---|---|
θ | 代换 | 某一位的值 = 该值⊕前一列5个字对应bit的异或⊕后一列5个字分别右移1位后对应bit的异或 |
ρ | 置换 | x=y=0则不变(即字[0,0]不变);其他字在字内进行循环移位 |
π | 置换 | x=y=0则不变(即字[0,0]不变);其他字互相移位 |
χ | 代换 | 某一位的值 = 该值⊕((下一行对应bit的值⊕1)AND (下下一行对应位的值)) |
ι | 代换 | 字[0,0]与圈常数进行异或 |
MAC
可以产生认证符的函数类型:Hash、消息加密、消息认证码MAC
认证技术:报文认证:消息完整性;实体认证(用户认证):发送者非冒充
认证定义:防止主动攻击的重要技术
-
报文认证码的基本构造方法
CMAC 2)HMAC
1)CMAC
其中K为密钥,Mi为消息的不同分组,K1、K2为由密钥K生成的2个新密钥
L = E(K,0b),K1=L · x,K2=L · x2;其中乘法(·)是GF(2b)上的乘法;x和x2是域GF(2b)的1次和2次多项式(二元表示分别为b-2个0,后跟10;b-3个0,后跟100)
K+为在K左边填充0,得到的b位数;ipad=0x36,opad=0x5c(两个数不断重复,凑够b位);Yi为消息的不同分组
HMAC -
报文认证码的应用
1)直接在报文后面加MAC(不具有保密性)
2)与明文捆绑的认证:在明文后加上MAC;再加密
3)与密文捆绑的认证:先将明文加密;再加上MAC -
报文认证码相比于常规加密的优点(特点)
1)适用于报文广播(并不需要每个点都有密钥);
2)报文加密解密的工作量比较大;
3)某些应用不关心报文的保密而只关心报文的真实性;
4)认证函数与保密函数的分离能提供结构上的灵活性(认证与保密可在网络协议的不同层次进行).
5)认证码可延长报文的保护期限,同时能处理报文内容(使用加密,当报文解密后,保护就失效了).
6)要求加密不可逆
7)认证函数更不易被攻破
8)不能提供数字签名(因为收发双方共享密钥) -
MAC的安全需求
1)某个报文M的MAC必须要短小
2)要有认证性,发送接受双方必须共享“秘密”
3)Hash还不足以保证安全(Hash不依赖于密钥)
4)避免“加密”运算
六、数字签名
MAC可以保护信息交换双方不受第三方攻击,但不能处理通信双方自身发生的攻击
-
基本概念
1)特征:能验证签名者、签名日期和时间;能认证被签的消息内容;签名能由第三方仲裁,以解决争执(具有认证功能)
2)目标:防止报文被伪造,用于保证数据的完整性
3)操作:签名者对改报文产生一串公开且他人无法伪造的数据串 - 构造 数字签名过程中关键部分的简单描述
-
针对数字签名的攻击(签名伪造)
1)攻击类型:唯密钥攻击、已知消息攻击、一般选择消息攻击、定向选择消息攻击、适应性选择消息攻击
2)何为成功的攻击方案:完全破译、通用伪造、选择伪造、存在性伪造 -
ElGamal密码体制
1)产生公钥/私钥对:
随机生成私钥XA,使得1<XA<q-1
计算YA = αXA mod q
公开公钥{q,α,YA}
2)产生数字签名:
选择随机整数K,使得 1 ≤ K ≤ q-1,且gcd(K,q-1)=1
计算S1 = αK mod q
计算K-1 mod (q-1)
计算S2 = K-1 (m-XAS1) mod (q-1)
签名对包括(S1,S2)
3)验证签名:
计算V1 = αm mod q
计算V2 = (YA)S1(S1)S2 mod q
若V1 = V2 则签名合法 -
Schnorr
1)产生公钥/私钥对:
选择素数p、q,使得 q 是 p 的素因子
选择整数α,使得 αq = 1 mod p
选择随机整数 s,0<s<q,s作为用户的私钥
计算 v = α-s mod p,作为用户公钥
2)产生数字签名:
选择随机整数r,0<r<q,并计算 x = αr mod p 。与消息M无关,可以预处理
将x附在消息M后,一起计算Hash值 e = H( M || x )
计算 y = ( r + se) mod q
签名对包括(e,y)
3)验证签名:
计算 x' = αyve mod p
验证是否有 e = H( M || x' ) -
DSA
DSA
1)参数:p为素数 ;q为(p-1)的素因子;
2)公钥私钥对:随机数 x 作为私钥;公钥 y = gx mod p
3)签名:计算r,s;r = ( gk mod p) mod q;s = [ k-1 ( H(M) + xr) ] mod q;其中k是随机生成的,且对每次签名都是唯一的
4)令M',r',s'为接收方收到的M,r,s;用下图所示的公式进行验证
-
三种签名的对比
Schnorr比ElGamal高效;DSS(DSA)是Schnorr+ElGamal;Schnorr形式最简洁漂亮,有许多应用
七、认证系统
- 证书定义、功能
定义:数字证书就是把公钥与其所有者的身份进行绑定的文档
绑定方法:权威机构(证书颁发机构)的数字签名
功能:信息保密性、网络通讯双方身份确定性、不可否认性、不可修改性 - 证书链
多个CA为不同用户发放证书,不同CA之间相互认证,为对方发放证书。
eg:A通过不同CA(X1、X2X3……)获取B的公钥。X1<<X2>>X2<<X3>>...XN<<B>> - PKI基本概念、功能
公钥基础设施
1)定义:由硬件、软件、人、策略和程序构成的一整套体系,这些程序是用来创建、管理、存储、分发和撤销建立在非对称密码算法之上的数字证书。用来提供可靠易用的公钥密码操作的系统的总称
2)功能:安全、便捷、高效地获得公钥。保障大型开放式网络环境下网络和信息系统安全。
3)应用:安全登录、终端用户透明、全面的安全性
4)基本要求:
提供基础服务
为整体应用系统提供安全基本框架
可被应用系统中任何需要安全的应用和对象使用
接口要求统一、标准、便于使用
适用于多种环境
通用性和实用性
八、认证协议
重点协议!!!
- 弱认证(基于口令的认证,口令弱)
1)脆弱性:字典攻击、工作站劫持、用户误用、搭线窃听
2)离线字典攻击
条件:口令在字典中;可以判断选用的口令是否正确
3)泄漏:网络明文传输、口令文件非法访问
4)解决方法:用单向hash函数对口令进行散列(加盐操作)
作用:防止重复口令被发现;增加离线字典攻击难度;难以发现用户在不同系统中用同一口令
5)对抗“猜口令攻击”:“后退”技术、断开连接、禁用机制、蜜罐 - 强认证(质询-应答认证,密钥强)
协议设计与分析
1)单边认证
单边认证,使用时间戳
① A --> B:Ek(tA, B)
单边认证,使用随机数
① A <-- B: rB
② A --> B: Ek(rB,B)
2)双边认证
双边认证,使用随机数
① A <-- B : rB
② A --> B: Ek(rA, rB, B)
③ A <-- B: Ek(rB, rA)
双边认证,使用hash函数
① A <-- B : rB
② A --> B: rA,Hk(rA, rB, B)
③ A <-- B: Hk(rB,rA,A)
3)基于公钥密码体制的单边协议
基于公钥解密与证据
① A <-- B : h(r), B, PA(r,B)
② A --> B: r
4)基于公钥体制的实体认证(双边)
Needham-Schroeder 协议
① A --> B: EncB(r1, A)
② A <-- B: EncA(r1, r2)
③ A --> B: r2
5)基于签名的实体认证
基于时间戳的单边认证
① A --> B: CertA, TA, B, SigA(TA, B)
基于随机数的单边认证
① A <-- B : rB
② A --> B: CertA, rA, B, SigA(rA, rB,B)
基于随机数的双边认证
① A <-- B : rB
② A --> B: CertA, rA,B, SigA(rA, rB,B)
③ A <-- B: CertB, A, SigB(rB, rA,A)
九、安全策略、模型、访问控制
-
基本概念
1)安全策略:为系统定义安全
3)系统状态:授权状态、非授权状态
3)三种定义
保密性:设X是实体的集合,并设I是信息。如果X中成员不能获取信息I,那么I关于X具有保密性。
完整性:设X是实体的集合,并设I是某些信息或某种资源。如果X中所有成员都信任I,那么I关于X具有完整性。
可用性:设X是一个实体的集合,并设I是一种资源。如果X中所有成员都可以访问I,那么I关于X具有可用性。
4)
安全机制是实施安全策略的某些部分的实体或规程
安全模型是表达特定策略或策略集合的模型
5)访问控制:防止未经授权使用资源,包括防止以非授权方式使用资源
6)访问控制基本元素:主体(进程),客体(资源),访问权
7)访问控制矩阵
主体:行(能力表C-List)
客体:列(访问控制列表ACL)
矩阵元素:权限 -
安全策略模型的种类
-
访问控制的三种方式
1)自主访问控制(DAC):基于请求者的身份和访问规则、实体可授权
2)强制访问控制(MAC):基于安全许可(实体的能力)和安全标记(资源的敏感度)、实体不能对另一实体授权(BLP模型)
3)基于角色的访问控制(RBAC):基于角色而非身份的控制;不给单独用户授权,而是授权角色 -
BLP模型的基本思想
1)防止主体读取安全密级比他的安全许可更高的客体。本质是强制型访问控制,但结合了自主型访问控制
2)简单安全条件:不向上读(S可以读O,当且仅当lo≤ls,且S对O具有自主型读权限。)
3)星号属性:不向下写(S可以写O,当且仅当ls≤lo,且S对O具有自主型写权限。)
4)考虑保密性,不考虑完整性,可用性 (保密性模型)