在常见的互联网业务场景中,数据的交互,都是以明文传输的,数据加密的套路也就成了目前Web中比较常见的部分。
一、加密的意义
在 HTTP 协议下,数据是明文传输,传输的过程中,网络嗅探第三方工具可直接获取其中的数据。 如用户的密码和信用卡相关的资料,一旦被有心人获取,会给用户、平台带来极大的安全隐患。
另一方面,在非加密的传输过程中,攻击者可更改数据或插入恶意的代码等。HTTPS 的诞生就是为了解决中间人攻击的问题,但如今 HTTPS 的使用情况在国内并不乐观,基本是因为成本或者性能的考量。
二、为啥他们都要用加密?
当企业耗资上亿的研发成果,被竞争对手截取捷足先登上市新品,抢占了市场先机;当咨询公司积累多年经验的精华工具包,总结出来不到半个月,却被竞争对手抄袭,当作签单制胜的法宝;当企业投掷千金引入智慧外脑,研讨出的战略蓝图,一夜间流失市场被无数次“山寨”,企业核心竞争力由此丧失!
频频发生的企业“机密泄露”正在不断削弱企业的市场竞争力,给竞争对手可乘机会,也为企业的长远发展埋下致命的隐患。因此,企业建立完善的数据泄露防护体系、保护核心资源安全已迫在眉睫。
简而言之,就是对数据欠缺保护观念!
看看笔者这里罗列出来的新闻大事件,你就明白为啥你们的明文数据,是在给别人白嫖!!!
全球近70%酒店存在用户信息泄露,订房信息、个人资料无一幸免
作为服务提供者,互联网应用的开发人员应该为用户提供相对安全的服务,这是一种责任也是一种情怀(当然在网络中,是没有绝对的安全)。
三、常见的加密的套路有哪些?
如果当下您的项目中,涉及任何安全加密相关的内容,没有一定的技术实力,绝对绝对不要尝试自己实现加密算法。
1、对称加密
在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。不同算法的实现机制不同,可参考对应算法的详细资料。
工作过程
甲和乙是一对生意搭档,他们住在不同的城市。由于生意上的需要,他们经常会相互之间邮寄重要的货物。为了保证货物的安全,他们商定制作一个保险盒,将物品放入其中。他们打造了两把相同的钥匙分别保管,以便在收到包裹时用这个钥匙打开保险盒,以及在邮寄货物前用这把钥匙锁上保险盒。
优点
算法公开、计算量小、加密速度快、加密效率高。
缺点
数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。
2、非对称加密
对称加密算法在加密和解密时使用的是同一个秘钥;而非对称加密算法需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
在非对称加密算法中常用的算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)。
工作过程
- 乙方生成一对密钥(公钥和私钥)并将公钥向其它方公开。
- 得到该公钥的甲方使用该密钥对机密信息进行加密后再发送给乙方。
- 乙方再用自己保存的另一把专用密钥(私钥)对加密后的信息进行解密。乙方只能用其专用密钥(私钥)解密由对应的公钥加密后的信息。
在传输过程中,即使攻击者截获了传输的密文,并得到了乙的公钥,也无法破解密文,因为只有乙的私钥才能解密密文。
同样,如果乙要回复加密信息给甲,那么需要甲先公布甲的公钥给乙用于加密,甲自己保存甲的私钥用于解密。
优点
- 密钥分配简单
- 密钥的保存量少
- 可以满足互不相识的人之间进行私人谈话时的保密性要求
- 可以完成数字签名和数字鉴别
缺点
- 公钥密码是对大数进行操作,计算量特别浩大,速度远比不上私钥密码体制
- 公钥密码中要将相当一部分密码信息予以公布,势必对系统产生影响
- 在公钥密码中,若公钥文件被更改,则公钥被攻破
3、散列相关
MD5 和SHA 是目前使用比较广泛的散列(Hash)函数,也是在消息认证和数字签名中普遍使用的两种加密算法。严格来讲它们不算是种加密算法,应该叫做信息摘要算法。
应用场景
- 文件效验
- 数据签名
- 鉴权协议
MD5的特点
- 压缩性:任意长度的数据,算出的MD5值长度都是固定的。
- 容易计算:从原数据计算出MD5值很容易。
- 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
- 弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
- 强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。
SHA的特点
- 单向性:单向性即由原始消息计算出信息摘要很容易,而由消息摘要计算出原始消息在计算上则几乎是不可行的
- 抗碰撞性:要找到两个不同的原始消息生成同一个信息摘要在计算上也是不可行的
md5与sha的区别
MD5与SHA1都是Hash算法,MD5输出是128位的,SHA1输出是160位的,MD5比SHA1快,SHA1比MD5强度高。
两者很相似,都是由MD4导出,强度和特点类似。SHA-1的摘要比MD5长32位,因此SHA-1对强行攻击有更大的强度。SHA-1比MD5慢。
4、混合加密
常见的混合加密算法主要是指RSA加解密算法和DES加解密算法这两种加解密算法。随着计算机系统能力的不断发展,因为两种算法各有各优点以及缺点,单独的使用DES或RSA加密可能没有办法满足实际需求,所以就采用了RSA和DES加密方法相结合的方式来实现数据的加密。
工作过程
发送方发送数据前的处理流程:
- 信息(明文)采用DES密钥加密
- 使用RSA加密前面的DES密文
- 最终将混合信息进行传递
而接收方接收到信息后:
- 用RSA解密密文
- 再用DES解密获取明文
最终就可以得到我们要的信息(明文)。
优点
采用了双重加密,即使有恶意用户在交换密钥的时候窃取了部分密钥,也不会影响整个系统的安全性。
缺点
这种混合加密机制随着数据体越大,加解数据的时间周期也随之增加。
四、实际场景的中运用
1、对称加密
由于算法效率较高,一般用于对效率有要求的实时数据加密通信。比如在使用 VPN 或者代理进行 加密通信时,既要保证数据的保密性,又要保证不能有高的延迟,所以通常会使用对称加密算法。
2、非对称加密
主要用于秘钥交换,证书等场景。
3、散列相关
文件系列
密码存储
请求参数的签名
为了避免被拦截,参数被修改,解决方案就是对请求参数进行校验,就算拦截了请求参数修改了只要模拟不出MD5加密出来的值,在服务器过滤器直接就会进行拦截。
4、混合加密
金融、政府、军事等行业
保密通讯
物联网应用
五、总结
在实际业务场景中,若加密数据的传输场景有涉及到客户端发起,建议客户端对数据进行加密处理,不仅可以帮助后端分担部分计算压力,还能提高响应速度。
对于数据对象的摘要签名,建议使用散列相关的算法,比如MD5、SHA。
其实每种加密算法都有每种加密的优势,我们应该根据自己的使用特点来确定,由于非对称加密算法的运行速度比对称加密算法的速度慢很多,当我们需要加密大量的数据时,建议采用对称加密算法,提高加解密速度。
如果在选定了加密算法后,那采用多少位的密钥呢?一般来说,密钥越长,运行的速度就越慢,应该根据的我们实际需要的安全级别来选择,一般来说,RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。
本文技术攻略若是对你有帮助,各位老板们,动动你们的手指安排 “ 打赏+分享 ” 把~
转载请标明原处,谢谢。