1、背景:

YS私有通信是hk研发的一款用于探测或设置hk设备的设备网络搜索软件,其基于hk的私有多播或广播协议实现。由于其自身拥有和hk同样长久的历史,早期在设计时未考虑到安全性因素,导致该协议存在被攻击的风险。

2、威胁分析:

2.1、攻击手段:

(1)、嗅探:

         由于YS私有通信协议是基于明文传输的,当用户使用支持YS私有通信协议的客户端和设备通信时,处于同一个局域网内的攻击者可以嗅探到两者之间的通信数据,导致信息泄漏。常见的敏感信息包括:口令、设备验证码和设备版本信息等。一旦攻击者获取到这些信息,即可进一步进行攻击利用,比如:登录设备植入后门等。

(2)、篡改:

         意指攻击者劫持明文通信包,将参数篡改后再放行发送给设备,由于YS私有通信协议本身不存在校验信令数据完整性的机制,所以会当正常请求进行处理,导致攻击成功。

(3)、伪造:

         意指攻击者捕获明文通信包后进行保存,后续再对报文进行重放。对于“写”操作来说,此类攻击危害比较大,比如:设置设备参数。如果攻击者不停对设备进行重放请求,可能导致设备拒绝服务。由于YS私有通信协议本身不存在对重放的抵御设计,所以会不停处理来自外界的请求,不管该请求是不是真实的用户发起的。

2.2、攻击示意图 :

3、解决方案:

3.1、方案描述: 

         以上3方面牵涉到数据的保密性、完整性问题,通常来说,可以通过使用SSL协议来解决,但是YS私有通信协议本身不是应用层而是基于网络层的协议,故直接使用SSL并不适合。但就通信安全层面来讲,加密和数字签名是解决以上问题的常用方案。

(1)、加密:

         加密分为对称加密和非对称加密两种算法,由于非对称加密算法对性能损耗较大,通常只用于小数量的数据报文交换,比如:SSL中交换对称加密密钥的场景;对称加密有具有良好的性能,适用于进行大量数据的加密通信。现今比较典型的对称加密算法有AES和3DES等,为适应当代主流,本文推荐使用AES128或AES256。对称加密密钥可由用户输入的设备验证码转换而来,由于设备本身拥有验证码,同样可以换算出对称加密密钥,因此,可以对接收到的密文进行解密获取明文。

(2)、消息摘要:

简单地说,消息摘要就是对数据报文所作的密码变换,这种变换允许接收者来确认数据的来源和完整性,此外,如果在进行摘要时加入时间戳或一次性随机token,可以有效防止数据被伪造重放。本文建议使用HMAC-SHA1算法来实现对发送数据的摘要,该算法要求通信双方必须预先协商一个共同的密钥作为摘要和验摘的机制,这个密钥可以通过设备验证码转换而来,和加密类似,摘要时,由用户输入设备验证码并转换成摘要密钥,而设备本身就拥有设备验证码,故可以进行验摘,关于HMA-SHA1的详细介绍和java实现,请参考附录。

注意:加密是一个可选项,当信令体存在敏感信息时才需要进行加密,而摘要是建议在每一个信令都实施的。

3.2、流程图:

         流程图展示了详细的过程和处理步骤:

 

3.3、样例:

4、方案对比:

先前方案

本次方案

优点

1、实现简单,双方能够通信即可。

1、加入了数据签名和加密机制,弥补了先前方案的所有欠缺。

缺点

1、未做数据签名校验,无法保证数据完整性。

2、未对敏感数据进行加密,可能导致信息泄漏。
3、没有防伪造重放机制。

1、实现稍微复杂,需要加入新的参数和数据签名校验机制。

2、需要考虑前后版本兼容性问题。

5、附录:

         HMAC-SHA1的JAVA实现代码如下:

import javax.crypto.Mac;

import javax.crypto.SecretKey;

import javax.crypto.spec.SecretKeySpec;

 

public class HMACSHA1 {

  

      private static final String MAC_NAME = "HmacSHA1"; 

      private static final String ENCODING = "UTF-8";

 

     public static byte[] HmacSHA1Encrypt(String encryptText, String encryptKey) throws Exception  

     {        

         byte[] data=encryptKey.getBytes(ENCODING);

         //根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称

         SecretKey secretKey = new SecretKeySpec(data, MAC_NAME);

         //生成一个指定 Mac 算法 的 Mac 对象

         Mac mac = Mac.getInstance(MAC_NAME);

         //用给定密钥初始化 Mac 对象

         mac.init(secretKey); 

        

         byte[] text = encryptText.getBytes(ENCODING); 

         //完成 Mac 操作

         return mac.doFinal(text); 

     } 

 }

YS私有通信协议安全整改方案的更多相关文章

  1. Spring实现类私有方法测试通用方案

    现实的业务场景中,可能需要对Spring的实现类的私有方法进行测试. 场景描述: 比如XXXService里有 两个函数a.函数b. 而实现类XXXServiceImpl中实现了函数a.函数b,还包含 ...

  2. redis 进程使用root用户启动 -- 整改方案

    最近内部风险整改, 各种进程使用root身份进行启动不符合要求, 于是各路神仙各施其法,为的就是让 某进程不以root 启动: 先以 redis 为例: 原有进程如下: #超一流标准的执行文件位置及配 ...

  3. 3.SDL落地方案

    01.安全培训 安全意识培训(全员) 邮件安全 钓鱼邮件 邮件伪造 第三方转存 检查发件人 开启二次验证 邮件转发 第三方代收 邮件附件敏感信息加密 病毒防范 什么是木马病毒 我安装哪些杀毒软件? 定 ...

  4. 物联网常见通信协议RFID、NFC、Bluetooth、ZigBee等梳理

    1  概述 在上一篇文章<物联网常见通信协议与通讯协议梳理[上]-通讯协议>中,对物联网常用通信协议和通讯协议作了区分,并对通讯协议进行了分享:本文将对常用的通信协议进行剖析,重点面向市场 ...

  5. Linux 服务器用户权限管理改造方案与实施项目

    Linux 服务器用户权限管理改造方案与实施项目 在了解公司业务流程后,提出权限整改方案改进公司超级权限root泛滥的现状. 我首先撰写方案后,给boss看,取得boss的支持后,召集大家开会讨论. ...

  6. 移动端IM开发需要面对的技术问题

    1.前言 这两年多一直从事网易云信 iOS 端 IM SDK的开发,期间不断有兄弟部门的同事和合作伙伴过来问各种技术细节,干脆统一介绍下一个IM APP的方方面面,包括技术选型(包括通讯方式,网络连接 ...

  7. 物联网安全拔“牙”实战——低功耗蓝牙(BLE)初探

    物联网安全拔“牙”实战——低功耗蓝牙(BLE)初探 唐朝实验室 · 2015/10/30 10:22 Author: FengGou 0x00 目录 0x00 目录 0x01 前言 0x02 BLE概 ...

  8. Dubbo 如何成为连接异构微服务体系的最佳服务开发框架

    从编程开发的角度来说,Apache Dubbo (以下简称 Dubbo)首先是一款 RPC 服务框架,它最大的优势在于提供了面向接口代理的服务编程模型,对开发者屏蔽了底层的远程通信细节.同时 Dubb ...

  9. 为什么不直接使用socket ,还要定义一个新的websocket 的呢

    大致概念: TCP/IP 协议,是网络七层协议的第四层,本身没有长连接或短连接的区别: HTTP 是基于 TCP 协议之上的「短连接」应用层协议,它的出现极大简化了网络应用的实现门槛,丰富了应用: S ...

随机推荐

  1. 日常开发技巧:使用notify-send发送通知

    背景 在终端执行一些需要较长时间的命令时,会切换到别的界面.但为了知道是否执行完成,需要时不时地切换过去看一眼.很麻烦. 解决方式 为了减少这种麻烦,可以使用notify-send,发送桌面通知.no ...

  2. python 学记笔记 SQLalchemy

    数据库表是一个二维表,包含多行多列.把一个表的内容用Python的数据结构表示出来的话,可以用一个list表示多行,list的每一个元素是tuple,表示一行记录,比如,包含id和name的user表 ...

  3. java===java基础学习(4)---字符串操作

    java中的字符串操作和python中的大致相同,需要熟悉的就是具体操作形式. 关于具体api的使用,详见:java===字符串常用API介绍(转) package testbotoo; public ...

  4. smb windows中使用的文件共享协议(主要用于与windows互通)

    主要是samba服务. SMB协议又成为CIFS(Common Internet File System)协议 samba服务功能: 1文件共享 2打印共享 3加入windows2000/2003/2 ...

  5. BZOJ 3656: 异或 (组合数取模 CRT)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3656 大意:经过一通推导,问题变成求\[\binom N M \mod P\],其中N,M<= ...

  6. mongodb循环

     var rds = db.REGIPATIENTREC.find({mzh:{$lt:"0"},usrOrg:"石景山中西医结合医院"}); var show ...

  7. Convolutional Neural Networks卷积神经网络

    转自:http://blog.csdn.net/zouxy09/article/details/8781543 9.5.Convolutional Neural Networks卷积神经网络 卷积神经 ...

  8. Linux系统格式化磁盘+挂载分区

    1.查看可使用的磁盘: $fdisk -l 2.对磁盘进行分区: $fdisk /dev/vdb 3.格式化磁盘: $fdisk -l --查看已经分区的磁盘 $mkfs -t ext4 /dev/v ...

  9. memcached安装+绑定访问ip

    安装: 1.由于memcached是基于libevent的,需要安装libevent,libevent-devel $yum -y install libevent libevent-devel 2. ...

  10. AC日记——餐巾计划问题 洛谷 P1084

    餐巾计划问题 思路: 氧气优化水过: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 4005 #define ...