目录
密码编码学与网络安全——学习笔记
一、引言
1、攻击的分类
2、安全服务
3、安全机制
4、安全的几点基本认识
二、密码学加密技术
1、密码学基本概念
2、经典加密技术
三、分组密码
1、分组密码概念
2、DES加密
四、公钥密码
1、公钥密码概念
五、AES高级加密标准
六、消息认证
七、散列函数
八、数字签名
1.数字签名
2、DSS数字签名标准
可能导致安全被破坏发生的行为就称为攻击。
被动攻击 |
消息内容的泄漏 |
这种攻击包括搭线窃听,对文件或程序的不正当拷贝 |
流量分析 |
获取消息的格式,长度,通信双方的位置等敏感信息 |
|
主动攻击 |
阻断 |
切断通信路径或端系统,破坏网络和系统的可用性 |
窜改 |
修改数据文件中的数据,破坏系统的完整性 |
|
重演 |
捕获一个数据单元,在以后的某个时机重传 |
|
伪造 |
假冒另一个实体发送信息或一个非授权方将伪造的客体插入系统中,破坏真实性的攻击 |
|
拒绝服务 |
通过耗尽目标系统的资源,危害目标系统的正常使用 |
|
恶意代码 |
病毒、蠕虫、特洛伊木马、恶意脚本等 |
|
抵赖 |
包括源发抵赖、交付抵赖 |
被动攻击和主动攻击的区别:
安全服务:加强数据处理系统和信息传输安全性的一系列服务。
认证 |
保证通信的实体是它所声称的实体,保证两个实体是可信的 |
访问控制 |
每个试图获得访问控制的实体必须被识别后才能获得其相应的权限 |
数据保密性 |
对信息或资源的隐藏,使得信息不被未授权者访问 |
完整性 |
网络中传输的信息数据必须保持初始状态,没有第三方能够修改数据内容 |
不可否认性 |
防止任一通信实体否认行为。否则发送方会一直给收方发送信息占用资源 |
可用性 |
指对信息或资源的期望使用能力 |
安全机制 |
内容 |
安全服务 |
加密机制 |
将数据转换为不可知形式 |
|
数字签名机制 |
解决网络通信中特有的安全问题 |
否认,伪造,冒充,篡改 |
访问控制机制 |
按事先确定的规则决定主体对客体的访问是否合法 |
访问控制 |
数据完整性机制 |
发送实体,接收实体的完整性 |
假冒、丢失、重发、插入或修改数据 |
交换认证机制 |
交换信息的方式来确认实体身份的机制 |
|
业务流量填充机制 |
对抗非法者在线路上监听数据并对其进行流量和流向分析 |
流量分析 |
路由控制机制 |
可使信息发送者选择特殊的路由,以保证数据安全 |
|
公证机制 |
需要各方都信任的实体,公证机构进行仲裁 |
不可否认性 |
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)流密码:每次加密数据流的一位或者一个字节
分组密码:将一个明文分组作为整体加密,得到与明文分组等长的密文分组。
分组密码的实质是,设计一种算法,能在密钥控制下,把n比特明文简单而又迅速地置换成唯一n比特密文,并且这种变换是可逆的(解密)
(2)乘积密码:依次使用两个或者两个以上的基本密码,所得的结果的密码强度强于单个密码的强度。
(3)扩散:使用明文的统计特征消散在密文中,这可以通过让每个明文文字尽可能的影响多个密文数字。(明文与密文之间)
混淆:尽可能的使密文和加密密钥间的统计关系变得复杂,阻止攻击者发现密钥。(明文与密钥之间)
(4)分组密码设计要求:
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) |
公钥密码体制的要求:
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 |
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}
分组密码:分组长度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函数:将任意长度的消息M映射成一个固定长度散列值h的函数,h=H(M)
hash函数用途:用于消息认证和数字签名。
hash函数特点:
改变消息的任何一位或者多位,都会导致散列码的改变。
● 给定M,很容易计算h,便于软硬件实现,能用于任何大小的消息。
● 给定h,根据H(M)=h反推M很难。(单向性)
● 给定M,找到另一M’满足H(M)=H(M’)很难。(弱抗攻击性)
Hash函数的过程:
Hash与MAC(消息认证码)的区别于联系:
联系:hash不包含密钥作为参数,而MAC包含,MAC即带密钥的hash函数,MAC将密钥和数据块作为输入,产生hash值作为MAC码,然后传输出去。
区别:MAC就是E(K,H(M)),长度可变的消息M和密钥K作为输入,输出固定长度的值。
MAC算法不要求可逆性而加密算法必须是可逆的。
MD5
1、数字签名的特征:
(1)必须能够验证作者及其签名的日期时间。
(2)必须能够认证签名时刻的内容。
(3)签名必须能够由第三方验证,以解决争议。因此,数字签名功能包含了认证的功能。
2、数字签名的分类:
一次性的数字签名;多次性的数字签名
直接数字签名 |
A→B: EPRa[M]对整个消息加密; A→B: M||EPRa[H(M)]对消息摘要加密; |
验证模式的有效性依赖于发送方私钥的安全性,可以加一个时间戳。 |
仲裁数字签名 |
X→Y的签名消息首先送到仲裁者A, A检查其来源和内容,将消息加上日期一起发给Y |
|
数字签名算法:
仲裁签名的算法:
(1)对称加密方式,仲裁者可看见消息。
(2)对称加密方式,仲裁者不可以看见消息。
存在的问题:
(3)公钥加密方式,仲裁者不可以看见消息
优点:
1、在通信之前各方之间无须共享任何信息,从而避免了联手作弊;
2、即使KRx暴露,只要KRa未暴露,不会有错误标定日期的消息被发送;
3、从X发送给Y的消息的内容对A和任何其他人是保密的。
缺点:用公钥对消息加密了两次。
DSS的特点:DSS的签名比验证快得多;DSS不能用于加密或者密钥分配;
(1)消息内容对签名者不可见。
(2)签名被接收者泄漏后,签名者无法追踪签名。
签名者不能将盲签名和盲消息对应起来。
应用: 电子选举(公证人是签名者)
群签名:盲签名允许消息者先将消息盲化,而后让签名者对盲化的消息进行签名,最后消息拥有者对签字除去盲因子,得到签名者关于原消息的签名。
盲签名就是接收者在不让签名者获取所签署消息具体内容的情况下所采取的一种特殊的数字签名技术。
群签名三个特性:
1)只有群的成员能够代表这个群签发消息;
2)签名的接收者能验证它是这个群的一个合法签名,但不知道它是群中哪一个成员产生的。
3)在后来发生的争端中,借助于群成员或一个可信机构能识别出那个签名者。