加密解密的技术:
对称加密
加密方和解密方使用是同一个密钥,加密解密的速度都很快,先将数据明文
分成数据块儿,一般来讲是大小相同的,如果到最后剩下的不能与其他数据块儿的
大小相同,那么就给它添加一些填充物,然后对每个数据块儿逐个加密,
然后把加密后的数据块儿发给对方,每一次管理一块儿,
但是,加密后的块儿怎么处理,因为每一个块儿都是单独处理,对方在破解数据时
每一块儿独立破解,也就是说这样的加密过程对反破解并没有任何帮助,
对于加密以后的数据块儿的处理有以下两种方法
ECB:每一块儿单独加密,加密一个传递一个,
CBC:加密或密文块儿链,通过抑或运算实现,每一个数据块儿,在发送给对方
之前会实现将此数据块儿与此前的数据块儿做一次抑或运算,并把结果发送给对方
所以得不到第一个块儿,得到其他也就没有用,即使是第一块,也会和一个随机数
进行抑或运算
其最大好处在于,做两次抑或运算后可以将数据还原
算法:DES:数据加密标准,使用56位的密钥长度
AES:高级加密标准,可以使用128、192、256三种长度的密钥
3DES:对原有加密3次,
Blowfish
Twofish
RC6
IDEA
CAST5
缺陷:1、一个人跟众多对象通信的时候需要记的密码过多
2、密钥分发困难,是最大的难题,没有一种可靠的手段将密钥送给一个
没有见过面的对象
非对称加密
公钥加密算法:DSA,RSA,EIGamal
加密方和解密方使用不同的密钥
功能:加密解密
用户的身份认证,RSA两者都可以实现,而DSA只能加密数据
公钥,私钥
公钥是从私钥中抽出的一段特征,公钥隐含在私钥中
现在主流的密钥长度是2048
缺陷:1、加密速度慢,比对称加密慢3个数量级 1000倍,一个数量级10倍
2、公钥加密一般不用于加密数据,主要用于实现用户认证,数据加密
主要是通过对称加密实现的
如何实现用户认证:
现在假设,有两个通信的对象,一个较小黑,一个较小白,现在小黑给小白发了
一封电子邮件,但是,小白在接受邮件的时候不希望自己的邮件的内容被篡改,
这时小黑就将邮件内容加密且说自己是小黑,并产生一个公钥和一个私钥,
私钥小黑会随身携带
而且不能外泄,公钥则连同邮件一起发给小白,这是小白拿着小黑的公钥如果能够
解密,则说明小黑就是小黑...这就实现了认证,但是如果小黑加密的数据很大,再加上
公钥加密要用很久时间,等加密好,小黑也无语了,所以小黑加密的不是数据
而是这段数据的特征值,说到特征值,下面就说一下单向加密》》》
单向加密
雪崩效应:输入的数据有一点点不同,结果会有巨大不同,主要目的在防暴力破解
单向加密就是去计算一段数据的特征值,加密过程是不可逆的,是去计算一段数据的特征码,是独一无二的,用于对
数据完整性的校验
无论你输入的数据是多长,输出的结果都是一样长度
MD5:message digest,输出结果固定长度128bit
SHA1:secure hash algorithm安全的哈希算法,输出结果固定长度160bit
身份认证:
单向加密在实现用户身份认证的时候不会去加密整段数据,而是先去计算这段数据的特征值,
把它的特征值用私钥加密,加密以后附着在数据后面,一起发给对方,在对方收到以后,对方
可以验证两方面的内容,第一用户的身份,第二数据的完整性,接收方先用发送方的公钥对其解密
如果能解密就验证了对方了身份,此时接收方会获得这段数据的特征值,然后接收方也用相同的
算法进行运算,得到一个数据的特征值,如果这两个特征值相同,则说明数据在发送过程完好无损
如果不相同,则说明数据有改动
假设还是小黑和小白通信,双方都希望在数据的发送过程中,既能实现用户身份验证,
又能实现数据加密,还能实现数据的完整性,那该怎么办呢。
现在小黑在发送数据前,先将数据用单向加密,计算出特征值,然后再用私钥解密将特征值加密
接下来会再用产生一个一次性的密码,用小白的公钥将这个密码加密然后放在数据后,最后再用对称加密
将全部加密,这时就是密文了,到了小白那里以后,小白先用自己的私钥拿到那个密码,然后再用那个
密码解密,获得数据的特征值,然后再用单向解密计算出一个特征值,如果这两个值相同,则说明
数据完好,以上过程就实现了三重验证
这三项结合起来是现在电子商务的基础。
可以实现这整个过的工具:
opssh
gpg
但是这两个过程还存在问题,小白怎样去获得小黑的公钥呢。在传输公钥的时候也有可能
出现欺骗,这怎么解决了。
IKE:互联网密钥交换,实现双方使眼色交换密钥,和密钥本身不在互联网上
传播
PKI:公钥基础设施,或公钥基础架构,CA证书颁发机构,证书内放的就是通信人的公钥信息
怎样基于证书通信:
双方在通信时都出示证件,这个证件由某个权威机构发放,只要验证证件内的有效信息
就可以验证对方的身份,但是在发证的时候怎样防止中间出现欺骗呢。
这又是一个鸡生蛋,蛋生鸡的问题,想想该如何解决呢。
所以一些操作系统在安装时就已经将一些权威的发证机构的证书放在你的电脑里了,这样在一定程度
上可以解决一些问题
证书的格式:X509,PKCS
证书废弃列表:CRL
最常见的攻击“man in the middle”主要是双方身份无法验证
会话劫持,
数据插入,
数据篡改,
这些都是常见的威胁
加密解密用于:
1、用户密码/数据嗅探 password/data sniffing
2、数据操纵,data manipulation
3、authentication manipulation 认证
4、equivalent to mailing on postcards
这几个方面
加密算法的基本法则:kerckhoff's principle
1、一般来讲加密本身并不靠算法,算法固然很关键能将明文变成密文
但是一项真正的加密过程,你的数据是否会被破解,主要不能过强依赖于算法本身,
而要依赖于密码,算法的研究周期很长,更改一个密码很简单,但是更换一个算法就麻烦了
算法需要耗费很多精力,只要算法不公开,就无从下手破解
2、电子商务的过程中不仅要保证数据加密,还要保证不被别人看见
算法:
1、随机数来源靠得住