最近在开发过程当中,接触到信息的完整性问题,其实我犯了一个比较低级的错误,那就是即便用户隐私信息进行了保密操做,保护了用户数据及相关资源安全,但依然是无法避免数据的篡改,因此通用的作法是对数据进行签名和校验(好比MD5和数字签名等,公司用的是ECC
签名)。
接着这个话题,我深刻了解一下信息安全,本文一共有两个篇章,篇章一主要是围绕CIA
原则来说解怎样有效的防护DDos
或CSRF
攻击等,以及在数据传输过程当中,加解密算法的原理。
经常使用的密码学能够划分两种:html
起源于古代战争中,为了防止书信被截获后重要信息泄漏,人们开始对书信进行加密。算法
1.内容:安全
通讯双方使用同一个秘钥,使用加密算法配合秘钥来加密,解密时使用加密过程的彻底逆过程配合秘钥来解密。
简单来讲就是: 对文字进行规则替换来加密,对密文进行逆向的规则化替换来解密。网络
咱们经常使用经典的加密算法有:编码
DES(56位秘钥,秘钥过短而被废弃)
AES(126位,192位,256位秘钥,如今最流行)
复制代码
2.做用:加密
加密通讯,防止信息在不安全网络截获后,信息被人读取或篡改。spa
3.破解思路:3d
4.反破解: 一种优秀的对称加密算法标准是,让破解者找不到比穷举法更有效的手段,而且穷举法的破解时间足够长code
5.缺点: 密钥泄漏: 不能在不安全的网络上传输密钥,一旦密钥泄漏则加密通讯失败。cdn
6.Base64 将二进制数据转换成64个字符组成的编码算法
广义:全部的计算机数据都是二进制数据 狭义:非文本数据即为二级制数据
将原数据每6位对应成 Base64
索引表中的一个字符编排成一个字符串(每一个字符8位)
将二进制数据扩充了存储和传输途径(例如能够把数据保存到文本文件,能够经过聊天对话框或者短信的形式发送二进制数据,能够在URL中加入简单的二进制数据)
普通的字符串通过Base64
编码的结果,被肉眼变得不可读,所以能够在必定的条件下放偷窥。
由于自身的原理(6位 变 8位),所以每次Base64编码以后,数据会增大1/3,因此会影响传输和存储。
比特币使用的编码方式,去掉Base64
的数字0
,字母大写I
,以及"+"和"/"符号,用于比特币地址表示
在URL的字符串中,对一些不用于特殊的保留字符,使用百分号%
为前缀单独编码,以免解析错误等问题
2.做用: 使用非对称加密通讯,能够在不可信网络上将双方的公钥传给对方,而后在发消息前分别对消息使用对方公钥来加密和使用私钥来签名,作到不可信网络上可靠秘钥传播及加密通讯。
3.经典算法: RSA(可用于加密和签名),DSA(仅用于签名,但速度更快)
4.优缺点:
5.破解思路:
和对称加密不一样在于,非对称加密的公钥容易得到,所以制造原文和密文没有那么难的事
因此,非对称加密的关键只在于,如何找到一个正确的私钥,能够解密全部通过公钥加密的密文。找到这样的私钥即为成功破解。
经过公钥推断出私钥一般是一种思路(例如 RSA),但每每最佳法是穷举法
只是和对称加密破解的区别在于,对称加密破解是不断尝试本身的新秘钥是否能够将本身拿到的原文和密文进行加密和解密
非对称加密的破解本质是不断拿本身私钥和公钥是否能够互解
6.反破解:
和对称加密同样,非对称加密算法优秀的标准在于,让破解者找不到比穷举法更有效的破解手段。