加密密钥==解密密钥
(1)同步流密码
指加密时每一次加密一位或一个字节的明文
同步性 无错误传递性 主动攻击性
音频/视频数据提供版权保护
(2)自同步流密码
自同步流密码是一种有记忆变换的密码。每一个密钥与已产生的固定数量的密文位有关,*密钥由已生成的密文决定*
自同步行 错误传递有限性 主动攻击性 明文扩散性
代表:RC4、SEAL
指加密时将明文分成固定长度的组,用同一密钥和算法对每一块加密,输出也是固定的长度的,*常用于网络加密*
DES
ESede、3DES、Triple DES
AES
TEA
PBE
2.2.1电子密码本模式
EBC:每次加密均产生独立的密文分组,每组的加密结果不会对其他分组产生影响
缺点:
不能隐藏明文的模式,如果明文重复,对应的密文也会重复
优点:
易于理解,便于实现并行操作,没
有误差传递问题
用途:
适用于加密密钥,随机数等短数据,如DES
CBC:加密前需要先与前面的密文进行异或(XOR)操作后在加密
优点:
只要选择不同的初始向量(即不同的异或指)即使产生重复的信息也不会产生相同的密文,无法破解还原
缺点:
不利于并行计算,一旦出错,则会将
错误无限放大
用途:
计算机产生检测数据完整性的消息认证码MAC
CFB:密文反馈模式
OFB:输出反馈模式
CTR:计数器模式
非对称加密分为两个密钥,一个公开,一个保密。公开的密钥称为++公钥++,保密的密钥称为++私钥++
甲方(发送方)用私钥加密数据向乙方发送数据,乙方(接收方)接收到数据后使用公钥
解密数据。
乙方(发送方)用公钥加密数据向甲方发送数据,甲方(接收方)接收到数据后使用私钥
解密数据。
非对称密码算法的安全性完全依赖于基于计算复杂度的难题,例如RSA源于整数因子分解问题
在讲到对称密码体质的流密码实现方式时,曾经提到过对于信息完整性验证需要其他技术来支持,这种技术就是散列函数提供的信息认证技术
散列函数,也叫做"哈希函数","信息摘要函数","单向函数或者凑杂函数"
作用:
用于验证数据的完整性的重要技术
(1)消息长度不受限制
(2)对于给定消息,其散列值很容易计算
(3)如果两个散列值不相同,则这两个散列值的原始输入消息也不同,这个特性使得散列函数具有"确定性"的结果
(4)散列函数运算"不可逆"
(5)抗弱碰撞性,防止被伪造
(6)任意两个不同的消息散列值"一定不同"
例子:
MD ——————> 信息摘要算法
SHA ——————>安全散列算法
MAC ——————>消息认证码算法
散列函数保证数据内容的完整性,数字签名用来确保数据来源的可认证性和发送行为的不可否认性
签名者:
执行数字签名的实体成
签名算法:
签名过程中所使用的算法
验证算法:
验证签名真伪的算法
流程:
发送者通过网络将信息连同其数字签名一起发送给接受者,接受者在得到消息及其数字签名后,可以通过验证算法,来识别签名者和验证签名的真伪
其中:
RSA,是最常用的签名算法
DSA,算法是典型的数字签名算法,虽然其本身不具备数据加密和解密的功能
数字签名满足一下三个基本要求:
(1)签名者任何时候都无法否认自己曾经签发的数字签名
(2)信息接受者能够验证和确认收到的数字签名,但任何人无法伪造信息发送者的数字签名
(3)签名真伪发生争议是,可以通过仲裁机构进行仲裁
假设甲方拥有私钥,并且甲方将公钥发布给乙方;当甲方作为消息的发送方时,甲方使用私钥对消息做签名处理,然后将消息加密后连同
数字签名发送给乙方。乙方使用已获得的公钥对接收到的加密消息做解密处理,然后使用公钥
安全系数要求比较高的企业会使用双向认证,即使用两套公私钥
客户端和服务器的联接,实质上都是联接服务器的"IP地址"和"开放端口"
POST:
客户端提交数据给服务器
GET:
客户端获取服务器的数据
HTTPS协议:
https = http + ssl/tls
socket通信:
socket = tcp/udp = http/ftp
(http/https):
fidder/charels
(Socket,tcp):
wireshark/sniffer
(防止代理):
小米wifi+wpe
adb shell tcpdump -p -vv -s 0 -w /sdcard/capture.pcap //开始抓包
Ctrl+c //结束抓包
adb pull /sdcard/capture.pcap
//导出文件
由于HTTP请求C/S之间没有任何的身份确认过程,是极不安全的
第一步:对传输的信息进行加密,服务器和客户端双方共享一个密钥,这也就是之前所研究的对称加密
第二步:更改繁琐的对称加密方式,改用公钥和私钥来实现传输,即非对称加密
第三步:非对称加密的缺陷在于黑客可以通过不安全传输过程中获取公钥,即 ④中服务器发送的私钥加密信息也有可能被黑客通过公钥解密,因此,
可以采取对称加密和非对称加密结合的方式进行安全传输
若采取上述的加密方式,存在两个个问题,
(1)客户端获取如何获取公钥,(2)客户端如何确认服务器的正确性
下面就来解决这两个问题
(1)目前普遍采用获取公钥的方式是,客户端通过申购服务器(已被第三方认证过的)的"SSL"或者"TSL"证书
(2)客户端获取到证书后,马上通过访问证书相关的信息,来进行确认
最后通过这些实现了HTTPS的安全传输