写在前面:写给自己看的,很多地方可以展开写,但是笔记为了精炼,尽量不展开写了。
完整性、保密性、可用性、可控性和不可否认性
主动攻击:主动攻击包括拒绝服务攻击(DoS)、分布式拒绝服务(DDos)、信息篡改、资源使用、欺骗、伪装、重放等攻击方法。
计算机网络面临的安全威胁大致有四种:
截获、中断、篡改、伪造
其中截获信息的行为属于被动攻击
中断、篡改、伪造信息的行为属于主动攻击
代替密码:明文映射成符号
代换密码要先建立一个替换表(即密钥),加密时将需要加密的明文依次通过查表,替换为相应的字符,明文字符被逐个替换后,生成无任何意义的字符串,即密文。
凯撒密码 C = (K+P) mod 26
乘法密码 C= k * P mod 26,是简单代替密码的一种
加密规则如下:
1)如果两个字母完全相同,则不进行置换,直接将原字母输出
2)如果其中有一个字母不在字母表中,则不进行置换,直接输出
3)如果最后只剩一个字母,则将其直接输出
4)如果两个字母在同一行或者同一列,直接交换两字母的顺序后输出
5)如果两个字母不在同一行且不在同一列,则按照矩阵进行置换,如cd置换为ga
置换密码:打乱明文顺序
置换密码是对明文字符按某种规律进行位置的置换。
以某种方式连续执行两个或多个密码,以使得所得到的最后结果或乘积从密码编码的角度比其任意一个组成密码都更强。
如:先用代换密码加密后置换密码加密
隐写术,密文中隐藏信息本身,
如:数字水印
对称密码和公开密钥密码
对称密码中分为分块和流密码
流密码是明文直接与key直接做异或
代表是DES
分组密码工作模式,
2种:
ECB 电子密码本
DES 升级 3DES 和AES
AES(高级加密标准)支持128/192/256bit的key
permutation是置换
subsititution是代换
首先做一次置换IP变成48位,再与key做异或,接着做一次代换再做一次置换,完成一轮加密
EXPANSION
SUBSITITUTION
S-BOX代换
48bit -> 8个S-BOX -> 32bit
win7以下才能破解
C:WINDOWS\system32\config
sam文件存放着口令
加密过程:
基于统计随机性
随机数:
TRNG 真随机数生成器
PRNG pseudo 伪随机数生成器
原理:Xn+1 = (aXn+C) mod m
流密码加密过程
最大的特点是K种子跟着密文一起传输,加密算法仅仅只是随机数与明文做了一次异或。
RC4算法只是随机数key产生算法而已
除此之外还有CFB和OFB密钥流产生算法
使用流密码
部分见另一篇博客:《扩展欧几里得算法》:
原理gcd(a,b)算法
例子:
求17关于mod 60的乘法逆元?
P是素数,并且a与p互素
X mod m1 = b1
X mod m2 = b2
X mod m3 = b3
求X等于多少?
m = m1×m2×m3
M1 = m/m1
M2 = m/m2
M3 = m/m3
Mi-1是M关于mod mi的乘法逆元
X = ∑(Mi×Mi-1×bi) mod m
对称密码存在问题:
n个人需要Cn2把钥匙
安全通讯问题
不可否认性:发方否认发送,收方伪造发送
原理是大素数分解难题
DH对称密钥分发
Ks会话密钥,接收方用私钥解密出Ks,再用对称解密算法求出Message,这样主体部分是用对称加密,加快了运算。
本原根是什么?
怎么确保消息未被篡改的问题,又要保证是对方发送的,(身份认证和消息认证)
可以采用直接对消息进行加密的方法,可以用对称密码也可以用公钥体制,但是这么做效率低
通常使用hash或者mac算法
mac算法自带私钥key,只有双方知道
使用hash要多一步对hash值的对称加密(或者用只有双方都知道的salt值加密)。
单向性(抗原性),抗强碰撞性(任意x,y使得H(x)=H(y),生日攻击),抗弱碰撞性。
Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
(Message Authentication Codes) 带秘密密钥的Hash函数:消息的散列值由只有通信双方知道的秘密密钥K来控制。此时Hash值称作MAC。
一般指SHA家族。安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。
数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。
使用私钥加密,别人公钥能解密则证明是你发出的。
主要实现方式SHA-RSA签名,不用加密整个M,只加密hash值即可。
SSL(Secure Socket Layer)和TLS(Transport Layer Security)
SSL于1994年由Netscape公司开发,目的是为TCP/IP 连接提供数据保密、服务器认证、消息完整性以及可选的客户机认证。
SSL经历6个版本,1996年发布的SSL3.0增加了DH等算法,1999年发布的TLS1.0(相当于SSL3.1)具有更安全的MAC算法,更严密的警报,增强的伪随机功能,2008年发布TLS1.2。
握手协议用于在实际的数据传输开始前,提供客户端和服务器之间的身份认证服务,并协商安全信道中要使用的安全参数,这些参数主要有Version,Random,Session id,Cipher suite,Compression method等。
SSL握手协议被封装在记录协议中,该协议允许服务器与客户端在应用程序传输和接收数据之前互相认证、协商加密算法和密钥。
记录协议规定了记录数据的格式,利用协商结果封装从应用层接收到数据,提供如下安全服务:
1)数据传输的保密性,使用了对称加密算法;
2)数据内容的完整性,使用MAC算法。
压缩,用mac算法hash保证数据完整性,再完整用对称加密保证机密性
报文结构
此外还有许多协议协同运作,
修改密文协议:为了保障SSL传输过程的安全性,客户端和服务器每隔一段时间改变
报警协议:用来为对等实体传递SSL的相关警告,如果是一个致命等级的报警消息,立即中断连接。
Level=1,warning
certificate_expired:证书已经过期
certificate_revoked:证书已经被废弃
Level=2,fatal
bad_record_mac:收到了不正确的MAC,此时双方就需要立即中断会话。
公钥证书、证书管理机构、证书管理系统、围绕证书服务的各种软硬件设备以及相应的法律基础共同组成PKI。
CA:负责发放、管理和撤销数字证书的权威机构。
RA:registration authority,负责证书申请、审核等工作,并不给用户签发证书。RA可以设置在直接面对客户的业务部门,如银行的营业部等。
证书库:网上公共信息库,用于证书的集中存放。
CRL: Certificate Revocation List,证书使用者可以依据CRL验证某证书是否已被撤销。
X509证书是关于证书结构和认证协议的一种重要标志,用于SSL/TLS、IPsec等
示例
如何保证证书的可信度?
接收者通过CA的公钥来验证证书,如果能用CA公钥解开,说明这份证书是CA发的,可以有高可信度。
CA证书创建过程
将证书主体用hash算法得到摘要和用私钥加密摘要,附加到最后一栏
主体用hash算法得到MD(摘要),将最后一栏取出用公钥解密得出MD,做对比
https://blog.csdn.net/singxsy/article/details/110671755