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协议,且不能用来验证证书有效性。