YS端对端之间SSL通信安全问题
1、简介:
传统的互联网,SSL通信主要基于客户端和服务器之间,在物联网时代,端和端之间的加密通信将变得很普遍,在YS业务中主要的端和端通信为:
(1)、客户端(移动APP,YS工作室和web)和设备之间的双向通信。
(2)、设备和设备之间的双向通信。
为保障用户通信安全,端和端之间的通信实施SSL通信。
注:实际上是基于客户端的hik的SDK和设备之间的通信,使用了hik SDK的客户端都可以和hik的设备进行通信。
主要的场景图如下:

2、业务需求:
端和端之间能够实现基于长链接和短链接的SSL双向通信。
3、风险分析
(1)、设备出厂使用的都是相同的证书,攻击者可以在任意一台设备上导出证书,进而对客户端向设备发起的SSL通信进行中间人劫持攻击,由于该证书包含公、私钥,故能够解密SSL握手通信过程截取对称密钥,同时也无法用证书来判断目标设备的真伪,同样的,设备证书也可以劫持设备和设备之间的SSL通信。
(2)类似地,如果hik SDK也使用一样的证书,攻击者也可以导出hik SDK内置证书,劫持设备向客户端发起的SSL通信(比如报警信息推送)。
4、解决方案:
(1)、客户端SDK和设备厂商时不带证书,客户端第一次使用SDK和设备第一次启动时自动生成证书,同时保留生成刷新证书的接口。
优点:安全性高,软件层面改动小,可实客户端和设备现双向的证书有效性验证。
缺点:客户端SDK在低端手机上生成证书时间会比较慢,第一次使用用户体验较差,而设备由于在出厂前必须经过开机测试,故出厂时已经在设别内生成证书,所以在用户这边不受影响,但在供应链环节会增大生成时间,影响产能。
(2)、提供动态证书生成接口,出厂设备或发布的客户端SDK包拥有一个默认证书,在使用默认证书产生通信后,可以调用该接口更新设备证书。
优点:安全性较高,扩展性好,也可实客户端和设备现双向的证书有效性验证。
缺点:软件开发成本高,第一次使用默认证书进行SSL通信时还是可能会被劫持,且只能做成可选项,用户基本不会使用。
(3)、模拟SSL通信协议,每次SSL通信均动态生成非对称加密算法(比如RSA)密钥。
优点:安全性高,能解决对称密钥被解密获取的问题。
缺点:软件开发成本高,需要熟悉SSL协议,且不能用来验证证书有效性。
YS端对端之间SSL通信安全问题的更多相关文章
- 应用java多线程实现server端与多client之间的通信
应用多线程来实现server与多线程之间的通信的基本步骤 1.server端创建ServerSocket,循环调用accept()等待client链接 2.client创建一个Socket并请求和se ...
- Python_架构、同一台电脑上两个py文件通信、两台电脑如何通信、几十台电脑如何通信、更多电脑之间的通信、库、端口号
1.架构 C/S架构(鼻祖) C:client 客户端 S:server 服务器 早期使用的一种架构,目前的各种app使用的就是这种架构,它的表现形式就是拥有专门的app. B/S架构(隶属于C/ ...
- [C语言]一个很实用的服务端和客户端进行TCP通信的实例
本文给出一个很实用的服务端和客户端进行TCP通信的小例子.具体实现上非常简单,只是平时编写类似程序,具体步骤经常忘记,还要总是查,暂且将其记下来,方便以后参考. (1)客户端程序,编写一个文件clie ...
- WCF开发的流程-服务端和客户端之间的通讯(内含demo讲解)
讲解技术之前,恳请博友让我说几句废话.今天是我第一在博客园发布属于自己原创的博文(如有雷同,那是绝对不可能的事,嘿嘿).之前一直是拜读各位博友的大作,受益匪浅的我在这对博友们说声谢谢,谢谢你们的共享! ...
- SSL、TLS协议格式、HTTPS通信过程、RDP SSL通信过程
相关学习资料 http://www.360doc.com/content/10/0602/08/1466362_30787868.shtml http://www.gxu.edu.cn/college ...
- SSL 通信原理及Tomcat SSL 配置
SSL 通信原理及Tomcat SSL 双向配置 目录1 参考资料 .................................................................. ...
- SSL 通信原理及Tomcat SSL 双向配置
SSL 通信原理及Tomcat SSL 双向配置 目录1 参考资料 .................................................................. ...
- SSL、TLS协议格式、HTTPS通信过程、RDP SSL通信过程(缺heartbeat)
SSL.TLS协议格式.HTTPS通信过程.RDP SSL通信过程 相关学习资料 http://www.360doc.com/content/10/0602/08/1466362_30787868 ...
- Tomcat6和Tomcat7配置SSL通信的比较
<Tomcat6和Tomcat7配置SSL通信的比较> 作者:chszs,转载需注明.博客主页: http://blog.csdn.net/chszs 在项目开发过程中,尝尝会遇到Tomc ...
随机推荐
- CSS3学习之linear-gradient(线性渐变)
转自:http://www.cnblogs.com/rainman/p/5113242.html CSS3 渐变(gradients)可以让你在两个或多个指定的颜色之间显示平稳的过渡. 以前,你必须使 ...
- NET面试题 (四)
1, 面向对象的思想主要包括什么? 封装.继承.多态. TLW: 封装:用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内部. 继承:子类拥有父类的所有数据和操作. 多态:一 ...
- 如何让 linux unzip 命令 不输出结果
unzip xx.zip > /dev/null 2>&1 unzip xx.zip > /dev/null前半部分是将标准输出重定向到空设备, 后面的2>&1 ...
- 【20160811】noip模拟-未完
T1 T2 T3 小奇回地球 [问题描述] 简单来说,它要从标号为1的星球到标号为n的星球,某一些星球之间有航线.由于超时空隧道的存在,从一个星球到另一个星球时间可能会倒流,而且,从星球a到b耗费的时 ...
- 汕头市队赛 yyl杯1 T1
A SRM 05 - YYL 杯 R1 背景 傻逼题 描述 给一个序列,序列里只有两种元素1和2.现在要从序列里选出一些非空子序列使得子序列里两种元素数量相同.问有多少种方案数? 输入格式 多组数据 ...
- MongoDB安装成为Windows服务
使用以下命令将MongoDB安装成为Windows服务.笔者的MongoDB目录为C:\Program Files\MongoDB\Server\3.6\bin 切换到C:\Program Files ...
- C++ 迭代器容器学习
set的一个用法 . difference找差集 union合并set intersection找到交集 #include<iostream> #include<string> ...
- 两个kernel.org国内镜像
两个kernel.org国内镜像 https://mirror.tuna.tsinghua.edu.cn/kernel/v4.x/testing/ http://mirror.bjtu.edu.cn/ ...
- POI导入导出小案例
一.HSSF 97-2003 需要jar:poi-3.9.jar 简单示例:生成EXCEL //93---2003 String [] titlie={"id","nam ...
- selenium 截图 添加时间戳
在自动化程序中运行的代码报错信息或者是相关日志有可能并无法直观的判断出错信息.因此截图是避免不了的.为了避免因为重复运行或者是图片名称相同导致截图被覆盖. 建议在截图时使用时间戳,保证截图图片名称的唯 ...