密码编码学与网络安全——学习笔记
目录
一、引言
1、攻击的分类
可能导致安全被破坏发生的行为就称为攻击。
被动攻击 |
消息内容的泄漏 |
这种攻击包括搭线窃听,对文件或程序的不正当拷贝 |
流量分析 |
获取消息的格式,长度,通信双方的位置等敏感信息 |
|
主动攻击 |
阻断 |
切断通信路径或端系统,破坏网络和系统的可用性 |
窜改 |
修改数据文件中的数据,破坏系统的完整性 |
|
重演 |
捕获一个数据单元,在以后的某个时机重传 |
|
伪造 |
假冒另一个实体发送信息或一个非授权方将伪造的客体插入系统中,破坏真实性的攻击 |
|
拒绝服务 |
通过耗尽目标系统的资源,危害目标系统的正常使用 |
|
恶意代码 |
病毒、蠕虫、特洛伊木马、恶意脚本等 |
|
抵赖 |
包括源发抵赖、交付抵赖 |
被动攻击和主动攻击的区别:
- 被动攻击不涉及到对数据的更改,难以被检测到,但可以防止。
- 主动攻击对数据流进行操作,难以绝对预防,但是容易检测到。
2、安全服务
安全服务:加强数据处理系统和信息传输安全性的一系列服务。
认证 |
保证通信的实体是它所声称的实体,保证两个实体是可信的 |
访问控制 |
每个试图获得访问控制的实体必须被识别后才能获得其相应的权限 |
数据保密性 |
对信息或资源的隐藏,使得信息不被未授权者访问 |
完整性 |
网络中传输的信息数据必须保持初始状态,没有第三方能够修改数据内容 |
不可否认性 |
防止任一通信实体否认行为。否则发送方会一直给收方发送信息占用资源 |
可用性 |
指对信息或资源的期望使用能力 |
3、安全机制
安全机制 |
内容 |
安全服务 |
加密机制 |
将数据转换为不可知形式 |
|
数字签名机制 |
解决网络通信中特有的安全问题 |
否认,伪造,冒充,篡改 |
访问控制机制 |
按事先确定的规则决定主体对客体的访问是否合法 |
访问控制 |
数据完整性机制 |
发送实体,接收实体的完整性 |
假冒、丢失、重发、插入或修改数据 |
交换认证机制 |
交换信息的方式来确认实体身份的机制 |
|
业务流量填充机制 |
对抗非法者在线路上监听数据并对其进行流量和流向分析 |
流量分析 |
路由控制机制 |
可使信息发送者选择特殊的路由,以保证数据安全 |
|
公证机制 |
需要各方都信任的实体,公证机构进行仲裁 |
不可否认性 |
4、安全的几点基本认识
- 没有绝对的安全,只有绝对的不安全。
- 安全是一个动态实践的过程,安全问题的解决必须重视整体系统的规划和安全策略的制定。
- 人是安全机制中最薄弱环节。
二、密码学加密技术
1、密码学基本概念
- 密码学:是研究信息系统安全保密的科学。
- 处理明文的两种方法:分组密码(将明文分成固定长度的组,对每一块加密,输出固定长度密文),流密码(序列密码每次加密一位或一字节明文)
- 对密码的两种攻击方法:密码分析法,穷举法
- 无条件安全:除了一次一密的方案外,没有无条件安全的算法,理论上都可以用穷举法解出来。
- 非对称密钥算法:加密密钥和解密密钥不相同,从一个很难推出另一个。
- 对称密码算法:加密密钥和解密密钥相同。Y=E(K,X)加密算法公开,密码安全性取决于密钥的保密性。
- 解密算法:接收者对密文解密所采用的一组规则称为解密算法。
- 加密算法:对明文进行加密操作时所采用的一组规则称作加密算法。
- 密码分析学:主要研究加密消息的破译或消息的伪造。
- 密码编码学:主要研究对信息进行编码,实现对信息的隐蔽。
2、经典加密技术
1.替换:将明文字母替换成其他字母,数字或者符号的方法
(1)凯撒密码:明文的字母由其它字母或数字或符号代替,代表例子有凯撒密码。就是将字母循环移位。C=E(k,p)=(k +p) mod 26
缺点:结构过于简单,密码分析员只使用很少的信息就可预言加密的整个结构。仅有26种可能替换(A 映射到 A—Z)可以循环试验穷举得到结果。
(2)单表替换密码:不仅仅将字母移位,还打乱顺序重新排列。
破解方法:通过语言学中每个字母的使用频率不同可以推算。
2.置换
置换密码:通过调整字母的顺序来保密,没有替换原有的字母
栅栏技术:将偶数位的字母下移形成新一行,按照行的顺序写出密文。
置换密码:把明文按照给定的列数一行行的写入。
3.转轮机
当只有一个同的时候字母破解密码:经过26个明文字母后(不一定是A到Z),圆筒回到原始位置。于是得到一个周期为26的多表代换算法,即每次取26, 52, 78……位置上的对应明文和密文,他们可以看做一组,取27 53 79 ……位置上的为一组。
三、分组密码
1、分组密码概念
(1)流密码:每次加密数据流的一位或者一个字节
分组密码:将一个明文分组作为整体加密,得到与明文分组等长的密文分组。
分组密码的实质是,设计一种算法,能在密钥控制下,把n比特明文简单而又迅速地置换成唯一n比特密文,并且这种变换是可逆的(解密)
(2)乘积密码:依次使用两个或者两个以上的基本密码,所得的结果的密码强度强于单个密码的强度。
(3)扩散:使用明文的统计特征消散在密文中,这可以通过让每个明文文字尽可能的影响多个密文数字。(明文与密文之间)
混淆:尽可能的使密文和加密密钥间的统计关系变得复杂,阻止攻击者发现密钥。(明文与密钥之间)
(4)分组密码设计要求:
- 分组长度足够大(64~128比特)
- 密钥量要足够大(64~128)
- 算法足够复杂(包括子密钥产生算法)
- 加密、解密算法简单,易软、硬件实现
- 便于分析(破译是困难的,但算法却简洁清晰)
2、DES加密
DES:数据加密标准,明文64位,密钥长度56位,密文64位。
加密:密文=IP-1(fk2(SW(fk1(IP(明文)))))
解密:明文=IP-1(fk1(SW(fk2(IP(密文)))))
S盒的计算:将S盒的输入(二进制数)的第一位和最后一位组成一个2位的二进制数,用来选择行(行从0开始),将去掉收首的中间的二进制数用来选择列(列从0开始)。例如011001,去行01=1即第一行,1100=12位第12列。去除的数字为9,即1001作为S盒的输出。
雪崩效应:明文或密钥某一位发生变化导致密文很多位发生变化。
DES加密过程:
1 |
给定明文X,通过一个固定的初始置换IP来排列X中的位,得到X0。 |
2 |
计算函数F的16次迭代, 根据下述规则来计算LiRi(1<=i<=16) |
3 |
对比特串R16L16使用逆置换IP-1得到密文Y。Y=IP-1(R16L16) |
四、公钥密码
1、公钥密码概念
- 非对称密码体制,加密算法和解密算法使用不同的密钥,一个为公钥一个为私钥。
- 公钥密码比传统密码更安全(×)
- 公钥密码是一种通用的方法,所以传统密码已经过时。(×)
- 公钥密码组成:6个组成部分:明文、加密算法、公钥、私钥、密文、解密算法
公钥密码体制的要求:
2、RSA加密算法
1 |
选中两个素数 p=7,q=17 |
2 |
计算n=pq n=7*17=199 |
3 |
欧拉公式φ(n)=(p-1)(q-1) φ(n)=6*16=96 欧拉函数:对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目φ(n),若n为质数则φ(n)=n-1 |
4 |
选择e,选取整数1<e<φ(n)与φ(n)互素:e=5 |
5 |
求e的逆元d,ed≡1 mod φ(n) 即de mod φ(n)=1 d=77 |
6 |
计算密文C,C=Me(mod n),其中M=19 则C=66 |
7 |
机密计算明文M,M=Cd(mod n) |
此中的公钥为{d,n},私钥为{e,n}
五、AES高级加密标准
分组密码:分组长度128位,密钥长度可指定为128位,192位,或256位。
AES的过程:
(1)加密和解密算法的输入是一个128位的分组。这个分组被描述为4×4的字节方阵。这个分组被复制到state数组,并在加密或解密的各个阶段被修改。
(2)密钥,密钥也被描述为字节的方阵。这个密钥接着被扩展为密钥字阵列。每个字是4个字节,128位的密钥最终被扩展为44字节的序列。
(3)AES参数
密码有N轮组成,其中轮数依赖于密钥长度,如16字节密钥是10轮。
(4)详细结构
字节替代:用一个S盒完成分组的字节到字节的替换。
行移位:第0行左移0字节;第1行左移1字节……第n行左移n字节。
正向行位移变换:第n行左移n字节 第0行不移(行数从0开始);
逆向行位移变换:第n行右移n字节 是正向行位移的逆过程;
列混淆:每一列乘以一个矩阵生成该列的新值。
轮密钥加:将当前分组和扩展密钥的一部分按位异或。
性质:AES的雪崩效应比DES强。
六、消息认证
- 消息认证:原来检验消息完整性的一种机制或服务。消息认证确保收到的数据额与发送的一样,且发送方的身份真实。
- 数字签名:是一种认证机制,它确保消息的生产者可以添加一个起签名左右的码字。通过计算消息的hash值并用生产者的私钥加密hash值生成签名,签名保证了消息的来源和完整性。
- 直接数字签名的威胁:(1)直接数字签名依赖于发送方私钥的安全性,发如果送方否认以前发送的某条消息,那么他可以称自己的私钥丢失或被盗用,或者其他人伪造了他的私钥。(我们可以通过增加时间戳的方式和规定私钥泄露后及时向管理中心报告的方式解决)(2)发送方X的的私钥可能在T时刻被盗用,但攻击者可以用X的签名签发一条消息并加盖一个在T或T之前的时间戳(解决办法是使用数字证书管理中心CA管理)
- 消息认证码MAC:一种需要使用密钥的算法,可变长度的消息和密钥作为输入,产生一个认证码,将该数据块附加在原消息之后,拥有密钥的接收方可以计算认证码来验证消息的完整性。MAC=CK(M),M为可变长的消息;K为通信双方共享的密钥C为单向函数(1)MAC算法不要求可逆性而加密算法必须是可逆的。(2)对称加密既可提供认证,又可以提供保密性,但是这不是绝对的。
消息认证 |
伪装;内容修改;顺序修改;计时修改 |
数字签名 |
伪装;内容修改;顺序修改;计时修改;发送方否认;接收方否认 |
七、散列函数
单向散列函数——hash函数
hash函数:将任意长度的消息M映射成一个固定长度散列值h的函数,h=H(M)
hash函数用途:用于消息认证和数字签名。
hash函数特点:
改变消息的任何一位或者多位,都会导致散列码的改变。
● 给定M,很容易计算h,便于软硬件实现,能用于任何大小的消息。
● 给定h,根据H(M)=h反推M很难。(单向性)
● 给定M,找到另一M’满足H(M)=H(M’)很难。(弱抗攻击性)
Hash函数的过程:
- 消息的位填充:扩展后的消息长度位N*1024bit,填充用10000…….
Hash与MAC(消息认证码)的区别于联系:
联系:hash不包含密钥作为参数,而MAC包含,MAC即带密钥的hash函数,MAC将密钥和数据块作为输入,产生hash值作为MAC码,然后传输出去。
区别:MAC就是E(K,H(M)),长度可变的消息M和密钥K作为输入,输出固定长度的值。
MAC算法不要求可逆性而加密算法必须是可逆的。
MD5
- 填充消息:n*512位为原消息+填充位+64位消息长度(附加);
- 初始化缓冲区
- 将填充好的文件进行分组 ,每组 512位 ,共有N组;
- 使用算法处理每组数据;
- 进行四轮操作,四轮操作的不同之处在于每轮使用的非线性函数不同。
- 由A、B、C、D四个寄存器的输出按低位字节在前的顺序(即以A的低字节开始、D的高字节结束)得到128位的消息摘要。输出计算结果。
八、数字签名
1.数字签名
1、数字签名的特征:
(1)必须能够验证作者及其签名的日期时间。
(2)必须能够认证签名时刻的内容。
(3)签名必须能够由第三方验证,以解决争议。因此,数字签名功能包含了认证的功能。
2、数字签名的分类:
- 从接收者验证签名的方式分类:直接数字签名;仲裁数字签名
- 从计算能力上分类:无条件安全的数字签名;计算上安全的数字签名
- 从签名者在一个数字签名算法中所能鉴别的消息个数分类:
一次性的数字签名;多次性的数字签名
直接数字签名 |
A→B: EPRa[M]对整个消息加密; A→B: M||EPRa[H(M)]对消息摘要加密; |
验证模式的有效性依赖于发送方私钥的安全性,可以加一个时间戳。 |
仲裁数字签名 |
X→Y的签名消息首先送到仲裁者A, A检查其来源和内容,将消息加上日期一起发给Y |
|
数字签名算法:
仲裁签名的算法:
(1)对称加密方式,仲裁者可看见消息。
(2)对称加密方式,仲裁者不可以看见消息。
存在的问题:
- A和发送方联手可以否认签名的信息;
- A和接收方联手可以伪造发送方的签名;
(3)公钥加密方式,仲裁者不可以看见消息
优点:
1、在通信之前各方之间无须共享任何信息,从而避免了联手作弊;
2、即使KRx暴露,只要KRa未暴露,不会有错误标定日期的消息被发送;
3、从X发送给Y的消息的内容对A和任何其他人是保密的。
缺点:用公钥对消息加密了两次。
2、DSS数字签名标准
DSS的特点:DSS的签名比验证快得多;DSS不能用于加密或者密钥分配;
3、盲签名
(1)消息内容对签名者不可见。
(2)签名被接收者泄漏后,签名者无法追踪签名。
签名者不能将盲签名和盲消息对应起来。
应用: 电子选举(公证人是签名者)
4、群签名
群签名:盲签名允许消息者先将消息盲化,而后让签名者对盲化的消息进行签名,最后消息拥有者对签字除去盲因子,得到签名者关于原消息的签名。
盲签名就是接收者在不让签名者获取所签署消息具体内容的情况下所采取的一种特殊的数字签名技术。
群签名三个特性:
1)只有群的成员能够代表这个群签发消息;
2)签名的接收者能验证它是这个群的一个合法签名,但不知道它是群中哪一个成员产生的。
3)在后来发生的争端中,借助于群成员或一个可信机构能识别出那个签名者。