信息安全涉及信息的保密性、可用性、完整性和可控性。保密性就是保证信息不泄漏给未经授权的人;可用性就是保证信息以及信息系统确实为授权使用者所用;完整性就是抵抗对手的主动攻击,防止信息被篡改;可控性就是对信息以及信息系统实施安全监控。综合起来说,就是要保障电子信息的有效性。
“数据”是组成信息的基本元素之一,数据安全是信息安全的“核安全”。通过保证数据的安全,从而可实现保证信息安全。
本文主要讲解对数据进行主动保护的几种常用的密码算法。
Base64
是基于64个可打印字符(A~Z , a~z , 0~9,+,/、再加上作为垫字的=,实际有65个字符)来表示二进制数据的表示方法。
应用:
计算机中的字节共有256个组合,对应就是 ASCII 码,而 ASCII 码的 128~255 之间的值是不可见字符。而在网络上传输数据时,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一些不同,那些不可见字符就有可能被处理错误。所以就先把数据先做一个 Base64 编码,变成可见字符,这样出错的可能性就大降低了。
编码原理
- 将二进制3个字节归成一组,共24位,再拆分成4组,每组6位;
- 统一在6位二进制前补两个0凑足8位;
- 将补0后的二进制转为十进制;
- 从Base64编码表获取十进制对应的Base64编码;
实例:编码Man的结果为TWFu
Base64索引表
处理过程
- 转换时,将3字节的数据,先后放入一个24位的缓冲区中,先来的字节占高位。
- 若数据不足三个字节,则剩下的位用0补足。每次取出6个位,按照其值选择查表选择对应的字符作为编码后的输出。
- 不断进行,直到全部输入数据转换完成。
- 若原数据长度不是3的倍数时,剩下1个输入数据,则在编码结果后加个
=;剩下2个输入数据,则在编码结果后加2个=。
特点
- 可以将任意数据进行Base64编码.
- 所有的数据都能被编码为并只用65个字符就能表示的文本文件。
- 对文件或字符串进行Base64编码后将比原始大小增加33%。
- 能够逆运算
- 不够安全,但却被很多加密算法作为编码方式
信息安全原则及面临的威胁
信息安全原则
- 在网络上"不允许"传输用户隐私数据的"明文"
- 在本地"不允许"保存用户隐私数据的"明文" 信息安全面临的威胁
- 机密性(被窃听,秘密泄露)
- 完整性(篡改,信息被修改)
- 认证(伪装,伪装成通信双方)
- 不可否认性(否认,事后不承认是自己发送的)
常用加密方式
单向散列函数
单向散列函数也称为消息摘要函数、哈希函数或者杂凑函数。
单向散列函数输出的散列值又称为消息摘要或者指纹
特点
- 对任意长度数据散列得到定长的散列值
- 消息不同,则散列值一定不同
- 消息相同,则散列值一定相同
- 散列计算速度快,非常高效
- 具备单向性,无法逆推计算
散列函数的应用
- 搜索:多个关键字,先对每个关键字进行散列,然后多个关键字进行或运算,如果值一致则搜索结果一致。
- 版权:对文件进行散列判断该文件是否是正版或原版的。
- 文件完整性验证:对整个文件进行散列,比较散列值判断文件是否完整或被篡改。 经典算法
- MD5:产生128bit的散列值。
- SHA-1:产生160bit的散列值。
- SHA-2:SHA256、SHA384、SHA512,分别产生256bit、384bit、512bit的散列值。
对称加密
特点
-
加密/解密使用相同的密钥
-
是可逆的
经典算法
-
DES:数据加密标准,是一种将64bit的明文加密生成64bit的密文,但每隔7bit会设置一个用于错误检查的bit,因此密钥长度实质上是56bit。目前已经可以在短时间内被破解,所以不建议使用。
-
3DES:使用3个密钥,对消息进行:密钥1加密+密钥2解密+密钥3加密, 若3个密钥相同,则结果与普通的 DES 是等价的。目前还被一些银行等机构使用,但处理速度不高,安全性逐渐暴露出问题。
-
AES:取代DES 成为新标准的一种对称加密算法,的密钥长度有128、129、256bit三种,目前已经逐步取代DES、3DES ,成为首选的对称加密算法。一般来说,我们也不应该去使用任何自制的密码算法,而是应该使用AES,它经过了全世界密码学家所进行的高品质验证工作。 密码算法可以分为分组密码和流密码两种:
-
分组密码:每次只能处理特定长度的一组数据的一类密码算法。一个分组的bit数量就称之为分组长度。DES和3DES的分组长度都是64bit。即每次只能加密64bit的明文,并生成64bit的密文。AES的分组长度有128bit、192bit和256bit可以选择。
-
流密码:对数据流进行连续处理的一类算法。流密码中一般以1bit、8bit或者是32bit等作为单位俩进行加密和解密。 ECB分组模式
ECB模式的全称为Electronic CodeBook模式。又成为电子密码本模式。特点:
- 使用ECB模式加密的时候,相同的明文分组会被转换为相同的密文分组。
- 类似于一个巨大的明文分组→密文分组的对照表。
CBC分组模式
CBC模式全称为Cipher Block Chainning模式(密文分组链接模式|电子密码链条),特点:
- 在CBC模式中,首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密。
非对称加密
非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey),公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密
特点
- 使用公钥加密,使用私钥解密(解决密钥配送问题)
- 公钥是公开的,私钥保密
- 加密处理安全,但是性能极差
经典算法—RSA
RSA 原理
- 求N,准备两个质数p和q,N = p x q
- 求L,L是p-1和q-1的最小公倍数。L = lcm(p-1,q-1)
- 求E,E和L的最大公约数为1(E和L互质)
- 求D,E x D mode L = 1 RSA加密小实践
- p = 17,q = 19 =>N = 323
- lcm(p-1,q-1)=>lcm(16,18)=>L= 144
- gcd(E,L)=1 =>E=5
- E乘以几可以mode L =1? D=29可以满足
- 得到公钥为:E=5,N=323
- 得到私钥为:D=29,N=323
- 加密 明文的E次方 mod N = 123的5次方 mod 323 = 225(密文)
- 解密 密文的D次方 mod N = 225的29次方 mod 323 = 123(明文)
混合密码系统
- 对称加密的缺点:不能很好地解决密钥配送问题(密钥会被窃听)
- 非对称加密的缺点:加密解密速度比较慢
- 混合密码系统:是将对称加密和非对称加密的优势相结合的方法。 解决了非对称加密速度慢的问题;并通过非对称加密解决了对称加密的密钥配送问题;网络上的密码通信所用的 SSL/TLS 都运用了混合密码系统。
会话密钥(session key) ,为本次通信随机生成的临时密钥,作为对称加密的密钥,用于加密消息,提高速度。
加密步骤(发送消息)
- 首先,消息发送者要拥有消息接收者的公钥
- 随机生成一个会话密钥,用会话密钥加密需要发送的消息(对称加密)
- 用消息接收者的公钥,加密会话密钥(非对称加密)
- 将2、3步生成的加密结果,一并发给消息接收者 发送出去的内容包括:
- 用会话密钥加密的消息(加密方法:对称加密)
- 用公钥加密的会话密钥(加密方法:非对称加密) 解密步骤(收到消息)
- 消息接收者用自己的私钥解密出会话密钥
- 再用第1步解密出来的会话密钥,解密消息
数字签名
想象以下场景:A发给B的内容有可能是被篡改的,或者有人伪装成A发消息给B,或者就是A发的,但A否认 。如何确定这段消息的真实性?如何识别篡改、伪装、否认?——数字签名
数字签名原理
消息发送者
- 对"消息"进行散列得到 "消息摘要"
- 使用自己的私钥对"消息摘要" 加密(数字签名)
- 把数字签名附着在"报文"的末尾一起发送给接收方 消息接收者
- 对"消息" 进行散列得到 "报文摘要"
- 使用公钥对"数字签名" 解密
- 对结果进行匹配
如果有人篡改了消息内容或签名内容,签名验证失败,证明内容被篡改了 。数字签名的作用不是为了保证机密性。
数字签名的作用:
- 确认消息的完整性
- 识别消息是否被篡改
- 防止消息发送人否认
数字证书
如果遭遇了中间人攻击,那么公钥将可能是伪造的,所以需要使用数字证书来验证公钥的合法性。
说到证书,首先联想到的是驾驶证、毕业证、英语四六级证等等,都是由权威机构认证的。
密码学中的证书,全称叫公钥证书(Public-key Certificate,PKC),跟驾驶证类似,里面有姓名、邮箱等个人信息,以及此人的公钥,并由认证机构(Certificate Authority,CA)施加数字签名。
CA 就是能够认定“公钥确实属于此人”并能够生成数字签名的个人或者组织,有国际性组织、政府设立的组织,有通过提供认证服务来盈利的企业,个人也可以成立认证机构。
数字证书的内容包含:公钥、认证机构的数字签名。