互联网安全性问题
谈到互联网安全,会想起中间人攻击,DNS劫持,代理服务器等,对于这么多的危险,怎么保证我们的系统真的足够安全呢?
一个有效的方法:End to End Encryption(端对端加密)
怎么去理解端对端加密呢?核心有如下两点:
- 客户端和服务端交换期间,数据是加密的
- 既然加密,就用到加密的key,每个客户端使用到的加密key都应该不一样
解决方法:
- 模拟Https的加密流程,生成一个sessionKey,用于加密交互时的数据
- 这种方式经过骇客的评估,确实有效地防止被攻击
流程
- 前端请求后端拿到public key
- 前端生成一个16位的cKey(UUID),用public key加密,传给后端
- 后端拿到加密内容后,用private key解密,拿到cKey
- 后端又生成一个16位的sKey(UUID),然后两个key一起做异或,生成一个sessionKey
- 将cKey,sKey,sessionKey保存到DB,而且数据要进行加密的,并且有一个sessionId(UUID)作为唯一标识,sessionId不用加密
- 然后用cKey加密sKey和sessionId返回给前端,前端用自己的cKey解密,拿到sKey
- 然后前端做一次异或,生成一个sessionKey保存在App的runtime
- 每次请求的参数,以userId=1&name=AA这样的一个字符串用sessionKey进行加密,然后sessionId放在请求的header中,
- 后端拿到数据后,先根据sessionId找到数据库对应的sessionKey 和 IV,然后解密这两个值,然后再用这另个值来解密encData。
问题一:End to End Encryption 过程中,需要拿到后端的公匙,可不可以再改进?
问题关键:
- 现在服务端的public key、private key是固定的,放在服务器的一个安全机器上,能不能将其改成可变的?
解决思路:
- 每次用户需要生成sessionKey的时候,先用deviceId作为key,在redis中查查,看有没有对应吖pubic key、private key,如果有就拿出来用,如果没有就重新生成一对。
- 因为deviceId每台机器都不一样,所以生成的public key、private key是不一样的。
问题二:即使做好了加密,如果被人拦截到请求的所有数据,怕不怕被用来重复提交
问题关键:
- 这种敏感的请求,应该有个超时时间来记录什么时候无效
- 同时,不能重复使用
解决思路:
- 客户端发起请求时,生成一个timeStemp,这是当前提交的时间。
- 服务端拿到请求后,首先检查timeStemp,跟当前时间比较,看是否超过5分钟,如果超过就是无效的,如果不超过就是有效的。
- 那在这5分钟的时间内,怎么保证不会被重复请求呢?
- 使用redis做分布式锁,设置一个clientRef(16位UUID)作为key,在第一次请求时,看拿不拿得到redis的一个key。
- 如果拿得到,证明已经执行过了,可以直接抛异常。
- 如果拿不到,证明还没有执行过,那就执行请求。
- key的超时时间是5分钟,5分钟后自动删除,这样就可以补充这5分钟的空隙了。
问题三:如果跟第三方系统交互,要防止请求数据被中间人篡改了,怎么办?
关键问题:
- 怎么检查被篡改过?数字签名
解决思路:
- 先跟第三方约定数字签名的加密算法,如:SHA256
- 第三方请求过来时,生成timeStamp,clientRef,以及request json body一起组成一串字符串,用算法进行加密,名字叫signature(数字签名)
- 第三方请求中,header中,放timeStamp,clientRef,signature
- 我们服务端收到请求后,将timeStemp,clientRef,request json body,以相同的规则,组成字符串,再用算法进行加密
- 加密后的值和signature比较,看是否相等
- 如果相等就没问题,不相等就抛异常
如何改进:
- 可以从加密算法中改进,可以用Hash,对称加密,非对称加密(事先要把public key的证书给第三方)
- timeStamp,clientRef,signature,组成字符串的规则可以跟第三方约定好,保证不会那么容易被猜到
相关推荐
从Netware网络安全性问题谈学校教学网络的管理.pdf
基于对抗样本的神经网络安全性问题研究综述.pdf
信令安全性应该是VoIP安全性应该关注的首要问题。VoIP网络的信令通常包括呼叫建立、呼叫控制、特定业务和功能接入以及用户特权的限制。信令加密能够同时保护服务器和客户端。对VoIP网络的信令系统进行加密极为重要,...
网上银行 网络 支付 安全性问题 我国网上银行安全性问题分析
计算机网络建设安全性问题及对策.pdf计算机网络建设安全性问题及对策.pdf计算机网络建设安全性问题及对策.pdf计算机网络建设安全性问题及对策.pdf计算机网络建设安全性问题及对策.pdf计算机网络建设安全性问题及对策...
软件安全性测试 网络与安全 ch06.pdf 安全性测试初步接触.ppt 网站挂马方式分析.txt 网络学堂.chm
加强无线网络安全性.pdf
无线传感器网络路由的安全性问题分析,从多个角度来分析网络中可能遇到的问题以及解决的大致方法
基于深度学习算法的计算机网络安全性分析.pdf
本书是一本实用的网络安全性设计指南,可以帮助读者掌握有关保护公司网络基础设施的各种知识和方法。本书共分为四部分,系统而全面地介绍了有关网络安全的理论基础知识和技术发展状况,通过对影响网络安全方面的各种...
研发期间安全性更新报告管理规范(试行).pdf研发期间安全性更新报告管理规范(试行).pdf研发期间安全性更新报告管理规范(试行).pdf研发期间安全性更新报告管理规范(试行).pdf研发期间安全性更新报告管理规范(试行).pdf...
浅谈如何确保互联网数据传输的安全性,互联网安全需要人人重视。
因此网络安全包括组成网络系统的硬件、软件及其在网络上传输信息的安全性,使其不致因偶然的或者恶意的攻击遭到破坏,网络安全既有技术方面的问题,也有治理方面的问题,两方面相互补充,缺一不可。
针对不同网络拓扑结构对系统安全性的影响,对不同属性节点比例对系统安全性影响进行了对比分析,突出了分系统之间的连接关系对装备系统安全性的影响,为信息化条件下的复杂装备系统安全性评估提供了依据。
本文从增强网络安伞性的需求出发,介绍了虚拟 局域网技术的概念、原理、分类及其应用,并对虚拟局域网技术任网络安全性方面的应用作j.分析。
研发期间安全性更新报告管理规范(试行).docx研发期间安全性更新报告管理规范(试行).docx研发期间安全性更新报告管理规范(试行).docx研发期间安全性更新报告管理规范(试行).docx研发期间安全性更新报告管理规范(试行)...
电力供应链:实现安全性、可持续性和弹性.pdf 电力供应链:实现安全性、可持续性和弹性.pdf 电力供应链:实现安全性、可持续性和弹性.pdf 电力供应链:实现安全性、可持续性和弹性.pdf 电力供应链:实现安全性、可...
Ixia Active SSL增强网络安全性.pdf
1.2影响因素 影响网络安全性问题的因素包含了网络资源的共享与开放、网络系统设计不完善、人为恶意攻击等。资源共享是为了让网络得以应用,让任意使用者可以经过互联网访问里面的信息资源。所以一般非法入侵之人仅仅...
总结了目前电梯硬件中存在的安全问题、视频、数据传输线路的安全性问、基本网络安全问题