通用串行总线USB的充电方法、装置及终端与流程

文档序号:12719504阅读:487来源:国知局
通用串行总线USB的充电方法、装置及终端与流程

本发明涉及通信领域,具体而言,涉及一种通用串行总线USB的充电方法、装置及终端。



背景技术:

在相关技术中,手机充电,除了采用专用充电器,更多情况是插入电脑或者充电宝等充电装置来充电。有时用户可能会借别人的电脑或者充电宝充电。根据网上的报道,现在有黑客开发出可以通过通用串行总线(Universal Serial Bus,简称为USB)自动运行的病毒或者恶意程序,预置到电脑或者精心改造过的充电宝中。当用户的手机通过USB线接入电脑或者充电宝时,病毒或者恶意程序就会自动运行,或者让手机中毒,或者盗取用户的隐私信息。

Android手机通过USB数据线,会有多种连接选项。但是即使是所谓的“仅充电”选项,也并没有完全禁止USB上的其它功能,比如还可以打开ADB端口,通过ADB命令访问手机,这就是一个非常大的安全隐患例子。

针对相关技术中,USB充电不安全的问题,目前还没有有效的解决方案。



技术实现要素:

本发明提供了一种通用串行总线USB的充电方法、装置及终端,以至少解决相关技术中USB充电不安全的问题。

根据本发明的一个方面,提供了一种通用串行总线USB的充电方法,包括:

判断当前USB接口的安全充电标志位是否指示安全充电;

在所述安全充电标志位指示安全充电的情况下,屏蔽所述USB接口的USB数据通道。

进一步地,判断当前USB接口的安全充电标志位是否指示安全充电包括:

判断当前USB接口的USB设备控制器驱动层的安全充电标志位是否指示安全充电。

进一步地,判断当前USB接口的USB设备控制器驱动层的安全充电标志位是否指示安全充电之前,包括:

判断所述USB接口是否有数据线插入,以及判断所述USB接口与所述数据线的握手协议流程是否完成,其中,在有数据线插入,以及所述握手协议流程完成的情况下, 判断当前USB接口的USB设备控制器驱动层的安全充电标志位是否指示安全充电。

进一步地,判断当前USB接口的USB设备控制器驱动层的安全充电标志位是否指示安全充电之前,包括:

接收设置充电标志位指令,其中,所述充电标志位指令通过修改所述安全标志位启动或者关闭安全充电。

进一步地,屏蔽所述USB接口的USB数据通道包括以下之一:

屏蔽所述USB接口的读和写USB数据缓冲区的函数;

调用所述读和写USB数据缓冲区的函数指示屏蔽USB数据通道,其中,所述读和写USB数据缓冲区的函数内部包括所述安全充电标志位。

进一步地,所述方法还包括:

将所述安全充电标志位保存在终端处理器的预定区域。

根据本发明的另一个方面,还提供了一种通用串行总线USB的充电装置,位于终端中,包括:

第一判断模块,用于判断当前USB接口的安全充电标志位是否指示安全充电;

屏蔽模块,用于在所述安全充电标志位指示安全充电的情况下,屏蔽所述USB接口的USB数据通道。

进一步地,所述第一判断模块包括:

指示单元,用于判断当前USB接口的USB设备控制器驱动层的安全充电标志位是否指示安全充电。

进一步地,所述装置还包括:

第二判断模块,用于判断当前USB接口的USB设备控制器驱动层的安全充电标志位是否指示安全充电之前,判断所述USB接口是否有数据线插入,以及判断所述USB接口与所述数据线的握手协议流程是否完成,其中,在有数据线插入,以及所述握手协议流程完成的情况下,判断当前USB接口的USB设备控制器驱动层的安全充电标志位是否指示安全充电。

进一步地,所述装置包括:

设置模块,用于判断当前USB接口的USB设备控制器驱动层的安全充电标志位是否指示安全充电之前,接收设置充电标志位指令,其中,所述充电标志位指令通过修改所述安全标志位启动或者关闭安全充电。

进一步地,所述屏蔽模块包括:

第一屏蔽单元,用于屏蔽所述USB接口的读和写USB数据缓冲区的函数;

第二屏蔽单元,用于调用所述读和写USB数据缓冲区的函数指示屏蔽USB数据通道,其中,所述读和写USB数据缓冲区的函数内部包括所述安全充电标志位。

根据本发明的再一个方面,还提供了一种终端,包括:上述任一项所述的装置。

通过本发明,判断当前USB接口的安全充电标志位是否指示安全充电,在该安全充电标志位指示安全充电的情况下,屏蔽该USB接口的USB数据通道,解决了USB充电不安全的问题,提高了USB充电的安全性。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种通用串行总线USB的充电方法的流程图;

图2是根据本发明实施例的一种通用串行总线USB的充电装置的结构框图一;

图3是根据本发明实施例的一种通用串行总线USB的充电装置的结构框图二;

图4是根据本发明实施例的一种通用串行总线USB的充电装置的结构框图三;

图5是根据本发明实施例的Linux USB驱动架构示意图;

图6是根据本发明实施例的安全充电的流程图;

图7是根据本发明实施例的USB读写数据原始流程的示意图;

图8是根据本发明实施例的USB读写数据修改流程的示意图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

在本实施例中提供了一种通用串行总线USB的充电方法,图1是根据本发明实施例的一种通用串行总线USB的充电方法的流程图,如图1所示,该流程包括如下步骤:

步骤S102,判断当前USB接口的安全充电标志位是否指示安全充电;

步骤S104,在该安全充电标志位指示安全充电的情况下,屏蔽该USB接口的USB数据通道。

通过上述步骤,判断当前USB接口的安全充电标志位是否指示安全充电,在该安全充电标志位指示安全充电的情况下,屏蔽该USB接口的USB数据通道,实现了USB接口只充电,不能进行数据传输,解决了USB充电不安全的问题,提高了USB充电的安全性。

在本实施例中,屏蔽该USB接口的USB数据通道的方式有很多种,例如,可以通过软件层去屏蔽,也可以通过USB硬件的最底层软件屏蔽,例如,判断当前USB接口的USB设备控制器驱动层的安全充电标志位是否指示安全充电,在判断指示安全充电的情况下,通过USB设备控制器驱动层屏蔽安全充电。

在本实施例中,判断当前USB接口的USB设备控制器驱动层的安全充电标志位是否指示安全充电之前,判断该USB接口是否有数据线插入,以及判断该USB接口与该数据线的握手协议流程是否完成,其中,在有数据线插入,以及该握手协议流程完成的情况下,判断当前USB接口的USB设备控制器驱动层的安全充电标志位是否指示安全充电。

另外,判断当前USB接口的USB设备控制器驱动层的安全充电标志位是否指示安全充电之前,接收设置充电标志位指令,其中,该充电标志位指令通过修改该安全标志位启动或者关闭安全充电,在应用中,在是否开启安全充电的界面上,用户选择是否开始安全充电生成该设置充电标志位指令。

在本实施例中,可以是通过外部函数的调用屏蔽输数据通道,例如,屏蔽该USB接口的读和写USB数据缓冲区的函数,也可以修改内部函数屏蔽数据通道,例如,调用该读和写USB数据缓冲区的函数指示屏蔽USB数据通道,其中,该读和写USB数据缓冲区的函数内部包括该安全充电标志位。

在本实施例中,将该安全充电标志位保存在终端处理器的预定区域,该预定区域为安全区域,不易被恶意的程序篡改。

在本实施例中还提供了一种通用串行总线USB的充电装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图2是根据本发明实施例的一种通用串行总线USB的充电装置的结构框图一,如图2所示,该装置位于终端中,该装置包括:

第一判断模块22,用于判断当前USB接口的安全充电标志位是否指示安全充电;

屏蔽模块24,用于在该安全充电标志位指示安全充电的情况下,屏蔽该USB接口的USB数据通道。

通过上述步骤,第一判断模块22判断当前USB接口的安全充电标志位是否指示安 全充电,屏蔽模块24在该安全充电标志位指示安全充电的情况下,屏蔽该USB接口的USB数据通道,解决了USB充电不安全的问题,提高了USB充电的安全性。

在本实施例中,该第一判断模块22包括:

指示单元,用于判断当前USB接口的USB设备控制器驱动层的安全充电标志位是否指示安全充电。

图3是根据本发明实施例的一种通用串行总线USB的充电装置的结构框图二,除了图2的模块外,还包括:

第二判断模块32,用于判断当前USB接口的USB设备控制器驱动层的安全充电标志位是否指示安全充电之前,判断该USB接口是否有数据线插入,以及判断该USB接口与该数据线的握手协议流程是否完成,其中,在有数据线插入,以及该握手协议流程完成的情况下,判断当前USB接口的USB设备控制器驱动层的安全充电标志位是否指示安全充电。

图4是根据本发明实施例的一种通用串行总线USB的充电装置的结构框图三,除了图2的模块外,如图4所示,还包括:

设置模块42,用于判断当前USB接口的USB设备控制器驱动层的安全充电标志位是否指示安全充电之前,接收设置充电标志位指令,其中,该充电标志位指令通过修改该安全标志位启动或者关闭安全充电。

在本实施例中,该屏蔽模块24包括:

第一屏蔽单元,用于屏蔽该USB接口的读和写USB数据缓冲区的函数;

第二屏蔽单元,用于调用该读和写USB数据缓冲区的函数指示屏蔽USB数据通道,其中,该读和写USB数据缓冲区的函数内部包括该安全充电标志位。

在本发明的实施例中,还提供了一种终端,包括上述任一项装置。

下面结合优选实施例和实施方式对本发明进行详细说明。

本优选实施例,在手机用户界面上增加一个开关——“安全充电”,当用户要使用非信任的充电装置(别人的电脑或者充电宝等)之前,打开这个开关,手机系统软件将在USB底层驱动中完全屏蔽掉跟数据传输相关的读写操作,从而消除了手机感染病毒或者恶意程序的可能性。

本发明的优选实施例是通过软件屏蔽USB线插入手机后产生的数据读写操作函数,使得手机软件系统无法通过USB端口接收和发送数据,从而避免USB充电时恶意程序侵入手机。

本发明的优选实施例以Android手机作为示例来说明,但本发明的优选实施例并不 局限于Android手机,其它智能手机和智能设备都可以适应本方法。图5是根据本发明实施例的Linux USB驱动架构示意图,如图5所示,Android手机的USB驱动架构基于Linux USB驱动架构,可以分为三层。

一层:USB Gadget功能层。BSP/Driver开发者通常是要实现这一层,从而实现一个具体的设备驱动,如Android在此层实现了adb,mtp,mass_storage等。

二层:USB设备层。这一层是Linux内核开发维护者实现的。

三层:USB设备控制器驱动层。这一层主要是与CPU、USB控制器有关,与硬件紧密相关,涉及有寄存器、时钟、DMA等,这一层往往是由芯片厂商去实现。

本优选实施例以在最底层的USB设备控制器驱动层修改为例,阐述如何在手机上实现安全充电。图6是根据本发明实施例的安全充电的流程图,如图6所示,该流程的步骤包括:

步骤S601:用户在UI界面上打开或者关闭“安全充电”选项;

步骤S602:从上层软件逐层往下将相关命令发送到驱动层中的USB模块;

步骤S603:USB模块收到打开或者关闭“安全充电”命令;

步骤S604:判断收到的命令是打开还是关闭,如果是打开执行步骤S605,否则执行步骤S606;

步骤S605:在驱动层USB模块中设置“安全充电标准位”Fsc=1;

步骤S606:在驱动层USB模块中设置“安全充电标准位”Fsc=0;

步骤S607:判断USB数据线是否插入,判断USB握手协议流程是否完成,当两个判断都为是的情况下才执行步骤S608;

步骤S608:判断“安全充电标准位”Fsc是否为1,如果是执行步骤S609,否则执行步骤S610;

步骤S609:在USB驱动中,将读/写USB数据缓冲区的函数予以屏蔽,从而彻底屏蔽USB数据通道,然后执行步骤S611;

步骤S610:恢复USB数据通道,然后执行步骤S612;

步骤S611:手机开始进行“安全”充电,所谓“安全”充电就是本文提出的方法;

步骤S612:手机开始进行“普通”充电,所谓“普通”充电就是现有的充电方法;

需要说明的是,为了提高安全性,步骤S605和S606中可以选择将Fsc保存在ARM处理器的Trustzone区域内,避免被恶意程序篡改。该步骤可选,不执行本步骤也不影响本方法的实施。

图7是根据本发明实施例的USB读写数据原始流程的示意图,图8是根据本发明实施例的USB读写数据修改流程的示意图,如图7和图8所示,步骤S609的细节可以描述如下:原始的代码流程如图7所示,屏蔽USB数据读写的代码流程如图8所示,从图7和图8的差异可以得到本发明实施例的修改的方式,在任何调用ubc_read和ubc_write函数的地方都加上对安全充电标志位Fsc的判断,只有当安全充电标志位Fsc为0的情况下才容许调用这两个函数,其中ubc_read,ubc_write分别代表USB设备控制器驱动层中读/写数据缓冲区的示例函数,其中ubc即USB Device Control的缩写。

在本发明的实施例中,驱动层的代码修改方法有两种:

a)在任何调用ubc_read和ubc_write函数的地方都加上对安全充电标志位Fsc的判断,具体描述见图8

b)直接修改ubc_read和ubc_write函数,在函数内部加上对安全充电标志位Fsc的判断

方法a和b的区别是对安全充电标志位Fsc的判断一个放在函数外部,一个放在函数内部。方法b的优点是代码修改量小,仅仅需要修改两个函数,不像方法a需要修改较多地方。但是由于ubc_read和ubc_write函数是芯片厂商提供的,这两个函数有可能没有源代码导致无法修改。因此在有源代码的情况下优选方法b,在没有提供源代码的情况下只能采用方法a。

在本发明的实施例中,除了在设备控制器驱动层屏蔽USB数据通道,也可以选择在其之上的任何软件层予以屏蔽,但是根据软件常识,很明显在接近USB硬件的最底层软件屏蔽的效果会更好,也更安全。

通过上述优选实施例,判断当前USB接口的安全充电标志位是否指示安全充电,在该安全充电标志位指示安全充电的情况下,屏蔽该USB接口的USB数据通道,USB充电不安全的问题,提高了USB充电的安全性。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例该的方法。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述模块分别位于多个处理器中。

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可 以被设置为存储用于执行上述实施例的方法步骤的程序代码。

可选地,存储介质还被设置为存储用于执行上述实施例的方法步骤的程序代码。

可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述实施例的方法步骤。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1