一种针对Android设备的无线数据安全传输方法技术

技术编号:15795331 阅读:144 留言:0更新日期:2017-07-10 12:05
本发明专利技术公开了一种针对Android设备的无线数据安全传输方法,包括数据传输中数据结构的定义;传输控制指令的定义和解析;待传输数据的定义和解析;指令与数据的校验、加密以及密钥分发。本发明专利技术的有益效果如下:能够自定扩展操作指令,支持自定义的数据格式传输,能够对传输过程中的每一组数据进行严格校验,保证其完整性和正确性能够使用多种无线传输方式进行可扩展的数据安全传输。

【技术实现步骤摘要】
一种针对Android设备的无线数据安全传输方法
本专利技术涉及信息安全
,特别涉及一种针对Android设备的无线数据安全传输方法。
技术介绍
Android是应用最广泛的移动应用系统。很多需要移动终端且有数据回传需求的系统均会采用android作为其客户端。通常情况下,无线数据传输方式有很多种,包括ftp服务、http服务以及smb服务等等。但这些服务仅能在应用层对数据的安全性进行定义。要保证安全,ftp服务需要依赖自己的账户,smb服务也需要依赖共享服务的账户控制功能,http服务需要依赖专门的服务器,且安全性需要通过https得以保障。与此同时,这些方法无法自主扩展控制指令。例如ftp必须通过定义好的指令通过队列进行单文件操作,smb无法扩展控制指令。这就使得这些方式在对传输流程有自主定义需求的应用场景中显得不够灵活和自由。借助这些服务无法满足更高的安全传输目标,同时也会明显增加开发成本和维护成本。
技术实现思路
本专利技术针对现有技术的不足,提供了一种针对Android设备的无线数据安全传输方法。为解决以上问题,本专利技术采用的技术方案如下:一种针对Android设备的无线数据安全传输方法,包括以下步骤:1:定义数据结构;1.1:定义用于传输的数据结构,首先定义transfer_base容器,该容器包含三个字段,分别为sequence,ctrl,data,其结构和字段顺序为sequence、ctrl、data;sequence用于标示当前包在某个传输通道上的传输会话中的传输序列;ctrl用于存放控制指令,标示针对该数据包的控制指令;data用于存放该数据包的具体数据。1.2:数据及指令定义,为实现通道内数据包的顺序管控及操作控制,定义变量和常量,用于描述这些控制信息;2:以无线连接方式创建控制通道和数据通道;将有通信需求的两个设备命名为A和B;确定如下规则:data通道中,A仅写数据,B仅读数据;ctrl通道仅传输指令相关的数据,且A和B均能够写入和读取;sequence数值在每次发出包后都会自增1,ctrl通道的sequence是根据接收到的指令包的sequence数据确定的,data通道是发送方定义的;3:数据传输与校验,包括以下步骤:3.1:A将待传输数据拆分为多个片段,每个片段大小可自定义,记录片段数量,对于文件暂不拆分,只计算分包数,在传输过程中具体实时分段;3.2:在ctrl_socket中,A向B发出数据包,指令为data_trans_info,数据为sequence范围和创建了data_socket的端口列表,用#符号间隔;3.3:B接收到指令为data_trans_info的数据包后,取出Sequence范围数据以及用到的端口列表,记录在内存中,用于传输中的对照;Sequence范围以数组形式按顺序存放在B内存中,根据端口列表记录需要读取数据的data_socket连接;3.4:按照预定的片段大小将数据放入transfer_base结构,并根据这段数据在整个片段链中的位置为其sequence赋值,用该段数据的md5信息填充data_[MD5]并将该数据放入指令部分;3.5:A在创建的data_socket列表中获取一个通道,并向其内部写入拼装好的transfer_base结构的数据,以“#;”间隔;3.6:接受数据并校验;B在收到data_socket通道中的数据后,首先取出其编号,然后从指令部分获取到data_[MD5]中的MD5信息,校验数据区的MD5是否与之匹配;不匹配,则丢弃该数据包,创建transfer_base结构数据,指令为date_recall,并向data区域写入刚才丢弃的数据包的sequence;将该结构数据写入ctrl_socket并发出。A收到该指令数据后取出数据区域的sequence,并重新封装数据,使用该sequence,经过data_socket发送至B;匹配,则将该数据包取出,写入到既定位置,并在3.3步骤中获取并暂存的sequence数组中移除相应的数据;3.7:扩展指令的解析;针对扩展指令,首先从ctrl_socket中获取指令包;如果指令属于自定义指令,则按照扩展指令进行处理;所有的扩展指令都会优先于传输流程进行执行,确保自定义扩展指令能够在传输前生效;3.7:传输结束;3.7.1:首先是A端将所有待发送的数据传输完毕后,新建一个transfer_base结构,写入data_finish,数据区留空,通过ctrl_socket通道发送至B;3.7.2:B收到data_finish指令后,检查步骤3.3中获取并暂存的sequence数据;如果所有数据均被移除,则可以确认文件接收完整,发送使用transfer_base结构包装的data_complete指令;如果还有未移除的sequence条目,则逐一使用3.6不匹配的步骤向A请求这些数据并存储,直至下一次收到data_finish指令,参照上述步骤完成传输;3.7.3:A收到data_complete指令后,主动关闭所有data_socket,仅留ctrl_socket;3.7.4:B持续监听ctrl_socket,并发出next_ctrl指令包。如果发送之后没有收到A的任何新指令,则未来每30秒发送一次,直到设定的timeout时间到,自动关闭ctrl_socket;作为优选,所述步骤1.2创建计数变量如下:ctrl_gloable_sequence,用于在ctrl_socket通道中描述控制指令包的先后顺序;data_gloable_sequence,用于在data_socket通道中描述数据包的先后顺序。作为优选,所述步骤1.2创建常量如下:next_ctrl,用于通知对方自己已经做好接受下一个ctrl包的准备;data_[MD5],用在data通道,用于标示该数据包中数据的md5信息,MD5字段可以被改写;data_trans_info,表示该包的数据区域是用于告知对方为每个数据包拟定的sequence编号以及本次使用的data通道编号;data_finish,表示data通道上主动发送数据一方的数据已经发送完成;data_complete,表示接受数据一方已经完整接收了所有数据包且无错误;date_recall,表示接受数据的一方发现某个数据未收到,或收到但是无法通过校验,请求对方重新发送指定sequence的数据包;ctrl_recall,表示并未收到控制数据,请求另一方重新发送或断开连接,其数据区域存放的是下一个数据包应该被赋予的sequence;data_custom_M,表示该指令为数据通道的自定义指令,转交自定义流程处理,M可自定义;ctrl_cuntom_N,表示该指令为控制通道的自定义指令,转交自定义流程处理,N可自定义;0data_query_port,用于请求对方告知当前可用的端口;data_target,用于告诉对方本次data通道需要使用的对方的端口号;data_port_available,用于告诉请求连接的一方可用端口范围。作为优选,所述步骤2中创建控制通道的具体步骤如下:2.1.1:在A向B发起socket连接,创建成功后命名为ctrl_sock本文档来自技高网...

【技术保护点】
一种针对Android设备的无线数据安全传输方法,其特征在于包括以下步骤:1:定义数据结构;1.1:定义用于传输的数据结构,首先定义transfer_base容器,该容器包含三个字段,分别为sequence,ctrl,data,其结构和字段顺序为sequence、ctrl、data;sequence用于标示当前包在某个传输通道上的传输会话中的传输序列;ctrl用于存放控制指令,标示针对该数据包的控制指令;data用于存放该数据包的具体数据;1.2:数据及指令定义,为实现通道内数据包的顺序管控及操作控制,定义变量和常量,用于描述这些控制信息;2:以无线连接方式创建控制通道和数据通道;将有通信需求的两个设备命名为A和B;确定如下规则:data通道中,A仅写数据,B仅读数据;ctrl通道仅传输指令相关的数据,且A和B均能够写入和读取;sequence数值在每次发出包后都会自增1,ctrl通道的sequence是根据接收到的指令包的sequence数据确定的,data通道是发送方定义的;3:数据传输与校验,包括以下步骤:3.1:A将待传输数据拆分为多个片段,每个片段大小可自定义,记录片段数量,对于文件暂不拆分,只计算分包数,在传输过程中具体实时分段;3.2:在ctrl_socket中,A向B发出数据包,指令为data_trans_info,数据为sequence范围和创建了data_socket的端口列表,用#符号间隔;3.3:B接收到指令为data_trans_info的数据包后,取出Sequence范围数据以及用到的端口列表,记录在内存中,用于传输中的对照;Sequence范围以数组形式按顺序存放在B内存中,根据端口列表记录需要读取数据的data_socket连接;3.4:按照预定的片段大小将数据放入transfer_base结构,并根据这段数据在整个片段链中的位置为其sequence赋值,用该段数据的md5信息填充data_[MD5]并将该数据放入指令部分;3.5:A在创建的data_socket列表中获取一个通道,并向其内部写入拼装好的transfer_base结构的数据,以“#;”间隔;3.6:接受数据并校验;B在收到data_socket通道中的数据后,首先取出其编号,然后从指令部分获取到data_[MD5]中的MD5信息,校验数据区的MD5是否与之匹配;不匹配,则丢弃该数据包,创建transfer_base结构数据,指令为date_recall,并向data区域写入刚才丢弃的数据包的sequence;将该结构数据写入ctrl_socket并发出;A收到该指令数据后取出数据区域的sequence,并重新封装数据,使用该sequence,经过data_socket发送至B;匹配,则将该数据包取出,写入到既定位置,并在3.3步骤中获取并暂存的sequence数组中移除相应的数据;3.7:扩展指令的解析;针对扩展指令,首先从ctrl_socket中获取指令包;如果指令属于自定义指令,则按照扩展指令进行处理;所有的扩展指令都会优先于传输流程进行执行,确保自定义扩展指令能够在传输前生效;3.7:传输结束;3.7.1:首先是A端将所有待发送的数据传输完毕后,新建一个transfer_base结构,写入data_finish,数据区留空,通过ctrl_socket通道发送至B;3.7.2:B收到data_finish指令后,检查步骤3.3中获取并暂存的sequence数据;如果所有数据均被移除,则可以确认文件接收完整,发送使用transfer_base结构包装的data_complete指令;如果还有未移除的sequence条目,则逐一使用3.6不匹配的步骤向A请求这些数据并存储,直至下一次收到data_finish指令,参照上述步骤完成传输;3.7.3:A收到data_complete指令后,主动关闭所有data_socket,仅留ctrl_socket;3.7.4:B持续监听ctrl_socket,并发出next_ctrl指令包;如果发送之后没有收到A的任何新指令,则未来每30秒发送一次,直到设定的timeout时间到,自动关闭ctrl_socket。...

【技术特征摘要】
1.一种针对Android设备的无线数据安全传输方法,其特征在于包括以下步骤:1:定义数据结构;1.1:定义用于传输的数据结构,首先定义transfer_base容器,该容器包含三个字段,分别为sequence,ctrl,data,其结构和字段顺序为sequence、ctrl、data;sequence用于标示当前包在某个传输通道上的传输会话中的传输序列;ctrl用于存放控制指令,标示针对该数据包的控制指令;data用于存放该数据包的具体数据;1.2:数据及指令定义,为实现通道内数据包的顺序管控及操作控制,定义变量和常量,用于描述这些控制信息;2:以无线连接方式创建控制通道和数据通道;将有通信需求的两个设备命名为A和B;确定如下规则:data通道中,A仅写数据,B仅读数据;ctrl通道仅传输指令相关的数据,且A和B均能够写入和读取;sequence数值在每次发出包后都会自增1,ctrl通道的sequence是根据接收到的指令包的sequence数据确定的,data通道是发送方定义的;3:数据传输与校验,包括以下步骤:3.1:A将待传输数据拆分为多个片段,每个片段大小可自定义,记录片段数量,对于文件暂不拆分,只计算分包数,在传输过程中具体实时分段;3.2:在ctrl_socket中,A向B发出数据包,指令为data_trans_info,数据为sequence范围和创建了data_socket的端口列表,用#符号间隔;3.3:B接收到指令为data_trans_info的数据包后,取出Sequence范围数据以及用到的端口列表,记录在内存中,用于传输中的对照;Sequence范围以数组形式按顺序存放在B内存中,根据端口列表记录需要读取数据的data_socket连接;3.4:按照预定的片段大小将数据放入transfer_base结构,并根据这段数据在整个片段链中的位置为其sequence赋值,用该段数据的md5信息填充data_[MD5]并将该数据放入指令部分;3.5:A在创建的data_socket列表中获取一个通道,并向其内部写入拼装好的transfer_base结构的数据,以“#;”间隔;3.6:接受数据并校验;B在收到data_socket通道中的数据后,首先取出其编号,然后从指令部分获取到data_[MD5]中的MD5信息,校验数据区的MD5是否与之匹配;不匹配,则丢弃该数据包,创建transfer_base结构数据,指令为date_recall,并向data区域写入刚才丢弃的数据包的sequence;将该结构数据写入ctrl_socket并发出;A收到该指令数据后取出数据区域的sequence,并重新封装数据,使用该sequence,经过data_socket发送至B;匹配,则将该数据包取出,写入到既定位置,并在3.3步骤中获取并暂存的sequence数组中移除相应的数据;3.7:扩展指令的解析;针对扩展指令,首先从ctrl_socket中获取指令包;如果指令属于自定义指令,则按照扩展指令进行处理;所有的扩展指令都会优先于传输流程进行执行,确保自定义扩展指令能够在传输前生效;3.7:传输结束;3.7.1:首先是A端将所有待发送的数据传输完毕后,新建一个transfer_base结构,写入data_finish,数据区留空,通过ctrl_socket通道发送至B;3.7.2:B收到data_finish指令后,检查步骤3.3中获取并暂存的sequence数据;如果所有数据均被移除,则可以确认文件接收完整,发送使用transfer_base结构包装的data_complete指令;如果还有未移除的sequence条目,则逐一使用3.6不匹配的步骤向A请求这些数据并存储,直至下一次收到data_finish指令,参照上述步骤完成传输;3.7.3:A收到data_complete指令后,主动关闭所有data_socket,仅留ctrl_socket;3.7.4:B持续监听ctrl_socket,并发出next_ctrl指令包;如果发送之后没有收到A的任何新指令,则未来每30秒发送一次,直到设定的timeout时间到,自动关闭ctrl_socket。2.根据权利要求1所述的一种针对Android设备的无线数据安全传输方法,其特征在于所述步骤1.2创建计数变量如下:ctrl_gloable_sequence,用于在ctrl_socket通道中描述控制指令包的先后顺序;data_gloable_sequence,用于在data_socket通道中描述数据包的先后顺序。3.根据权利要求2所述的一种针对Android设备的无线数据安全传输方法,其特征在于所述步骤1.2创建常量如下:next_ctrl,用于通知对方自己已经做好接受下一个ctrl包的准备;d...

【专利技术属性】
技术研发人员:梁效宁杨博
申请(专利权)人:四川艾特赢泰智能科技有限责任公司
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1