一种控制调试端口的方法和系统、以及测试方法与流程

文档序号:20686027发布日期:2020-05-08 18:50阅读:255来源:国知局
一种控制调试端口的方法和系统、以及测试方法与流程

本发明涉及计算机技术领域,尤其涉及一种控制调试端口的方法和系统、以及测试方法。



背景技术:

随着片上系统技术的发展,芯片上集成的功能模块越来越多,其内部信号难以观测,芯片在设计和验证阶段需要调试模块辅助排错,软件开发同样需要调试的支持。因此,调试是产品开发阶段的一个必须的功能。然而,一旦产品进入市场,调试对于产品来说是一个很大的安全威胁,攻击者可以利用调试端口(如jtag端口)对产品进行攻击。

目前对调试端口的处理方式主要有两种。一种方式是在产品进入市场后,一直保持调试端口开放。但这种方式会对产品的安全性造成很大的影响。攻击者可以通过调试端口读取产品的大量敏感数据并进行攻击。另一种方式是在产品进入市场时,彻底关闭调试端口,使其无法被重新使能。这种方式同样存在弊端。如果产品出现较复杂的问题,彻底关闭调试端口就大大增加了调试的难度,这种方式对于开发者来说很不灵活。

因此,需要一种控制调试端口的方案,以解决上述弊端。



技术实现要素:

为此,本发明提供了一种控制调试端口的方法和系统、以及测试方法,以力图解决或至少缓解上面存在的至少一个问题。

根据本发明的一个方面,提供了一种控制调试端口的方法,包括步骤:接收来自控制装置的第一密钥并验证第一密钥;如果第一密钥验证通过,则通知控制装置发送控制指令至验证装置、并由验证装置根据第二密钥生成控制指令的签名;接收由控制装置发送的签名和控制指令;以及对所述签名进行验证,并在签名验证通过时,根据控制指令对调试端口进行控制。

可选地,根据本发明的方法还包括步骤:响应于用户操作,进入触发状态;以及在触发状态下接收到来自控制装置的控制调试端口的请求时,返回确认消息。

可选地,在根据本发明的方法中,控制指令为将调试端口从不允许调试状态改变为允许调试状态的调试使能指令。

可选地,在根据本发明的方法中,在签名验证通过时根据控制指令对调试端口进行控制的步骤之后,还包括步骤:响应于用户的重启操作,将调试端口的状态由允许调试状态改变为不允许调试状态。

可选地,在根据本发明的方法中,验证第一密钥的步骤包括:计算第一密钥的散列值;判断该散列值与预设值是否一致;若该散列值与预设值一致,则第一密钥验证通过。

可选地,在根据本发明的方法中,如果第一密钥验证通过则通知控制装置发送控制指令至验证装置的步骤包括:在第一密钥验证通过时生成随机数;以及将随机数发送给控制装置,以便通知所述控制装置生成控制指令,并将所述控制指令与随机数发送至验证装置,以便验证装置生成签名时,包括控制指令和随机数。

可选地,在根据本发明的方法中,如果第一密钥验证通过则通知控制装置发送控制指令至验证装置的步骤还包括:如果第一密钥验证通过,则缓存第一密钥。

可选地,在根据本发明的方法中,对签名进行验证的步骤包括:根据第一密钥对签名进行验证。

可选地,在根据本发明的方法中,第一密钥和第二密钥具有对应关系。

可选地,在根据本发明的方法中,调试端口为jtag调试端口。

根据本发明的再一方面,提供了一种控制调试端口的方法,包括步骤:接收来自控制装置的第一密钥并验证第一密钥;如果第一密钥验证通过,则通知控制装置发送控制指令至验证装置,并由验证装置根据第二密钥生成控制指令的签名;接收由验证装置发送的签名和由控制装置发送的控制指令;以及对签名进行验证,并在签名验证通过时,根据控制指令对调试端口进行控制。

根据本发明的再一方面,还提供了一种控制调试端口的方法,包括步骤:接收来自控制装置的第一密钥并验证第一密钥;如果第一密钥验证通过,则通知控制装置生成控制指令、并根据第二密钥生成控制指令的签名;接收由控制装置发送的签名和控制指令;以及对签名进行验证,并在签名验证通过时,根据控制指令对调试端口进行控制。

根据本发明的又一方面,提供了一种控制调试端口的方法,调试端口布置在测试设备上,包括步骤:发送控制调试端口的请求给测试设备;在接收到来自测试设备的确认信息时,返回第一密钥,以便测试设备验证第一密钥;在第一密钥验证通过时生成控制指令;将控制指令发送给验证装置,以便验证装置利用第二密钥生成控制指令的签名;以及将签名和控制指令发送给测试设备,以便该测试设备根据第一密钥对签名进行验证,并在签名验证通过时根据控制指令对调试端口进行控制。

可选地,在根据本发明的方法中,第一密钥与测试设备相关联,在接收到来自测试设备的确认信息时、返回第一密钥的步骤还包括:在接收到来自测试设备的确认信息时,返回与该测试设备相关联的第一密钥给该测试设备。

可选地,在根据本发明的方法中,将控制指令发送给验证装置的步骤还包括:在第一密钥验证通过时,接收到来自测试设备的随机数;将控制指令和随机数发送给验证装置,以便验证装置生成签名。

可选地,在根据本发明的方法中,控制指令为将调试端口从不允许调试状态改变为允许调试状态的调试使能指令,且第一密钥和第二密钥具有对应关系。

可选地,在根据本发明的方法中,调试端口为jtag调试端口。

根据本发明的另一个方面,提供了一种测试方法,包括步骤:响应于测试请求,检测测试设备上调试端口的状态;当调试端口的状态为不允许调试状态时,通过执行如上所述的方法将调试端口的状态变为允许调试状态;以及通过调试端口对测试设备内部的节点进行测试。

根据本发明的再一个方面,提供了一种控制调试端口的系统,包括:测试设备,测试设备上布置有调试端口,测试设备包括连接管理模块、鉴权模块和状态控制模块,其中连接管理模块适于在接收到控制调试端口的请求时,返回确认信息,还适于接收来自控制装置的第一密钥;鉴权模块适于验证第一密钥,并在第一密钥验证通过时指示控制装置生成控制指令;连接管理模块还适于接收由控制装置发送的签名和控制指令;鉴权模块还适于根据第一密钥对签名进行验证;状态控制模块适于在签名验证通过时根据控制指令对调试端口进行控制;控制装置,包括输入输出接口和控制单元,其中,输入输出接口适于发送控制调试端口的请求给测试设备,且在接收到来自测试设备的确认信息时,返回第一密钥;控制单元适于在第一密钥验证通过时生成控制指令;输入输出接口还适于将控制指令发送给验证装置,且将签名和控制指令发送给测试设备;以及验证装置,适于在接收到来自控制装置的控制指令时,利用第二密钥生成控制指令的签名。

可选地,在根据本发明的系统中,控制指令为将调试端口从不允许调试状态改变为允许调试状态的调试使能指令。

可选地,在根据本发明的系统中,在测试设备中,状态控制模块还适于响应于用户的重启操作,将调试端口的状态由允许调试状态改变为不允许调试状态。

可选地,在根据本发明的系统中,在测试设备中,鉴权模块还适于计算第一密钥的散列值,并判断该散列值与预设值是否一致,若该散列值与预设值一致,则第一密钥验证通过。

可选地,在根据本发明的系统中,在测试设备中,鉴权模块还适于在第一密钥验证通过时生成随机数,并经由连接管理模块将随机数发送给控制装置。

可选地,在根据本发明的系统中,在控制装置中,输入输出接口还适于在接收到来自测试设备的确认信息时,返回与该测试设备相关联的第一密钥给该测试设备。

可选地,在根据本发明的系统中,第一密钥和第二密钥具有对应关系。

可选地,在根据本发明的系统中,调试端口为jtag调试端口。

根据本发明的再一个方面,提供了一种计算设备,包括:至少一个处理器;和存储有程序指令的存储器,其中,程序指令被配置为适于由至少一个处理器执行,程序指令包括用于执行如上所述任一方法的指令。

根据本发明的再一个方面,提供了一种存储有程序指令的可读存储介质,当程序指令被计算设备读取并执行时,使得计算设备执行如上所述的任一方法。

根据本发明的方案,当待测试的设备(以下简称为测试设备)接收到控制调试端口的请求时,先验证第一密钥。在第一密钥验证通过后生成相应的控制指令,并利用第二密钥来生成控制指令的签名。而后利用第一密钥对该签名进行验证,在签名验证通过后,方可根据控制指令对调试端口进行控制。这样,通过这种调试端口使能过程中的身份认证方式,确保了测试设备的安全。

另外,在设备出厂前将调试端口置于不允许调试状态(即,关闭调试端口),这样,就可以大大减少设备被攻击的风险;同时,当设备出现问题时,开发人员可以通过执行本发明的控制调试端口的方法来将调试端口重新使能,将调试端口置于允许调试状态(即,打开调试端口),来进行调试。这就同时兼顾了调试端口所面临的安全性(防黑客利用)和灵活性(开发者调试bug)的需求。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。

图1示出了根据本发明一个实施例的控制调试端口的系统100的示意图;

图2示出了根据本发明一个实施例的计算设备200的示意图;

图3示出了根据本发明一个实施例的控制调试端口的方法300的交互流程图;

图4示出了根据本发明另一个实施例的控制调试端口的方法400的流程示意图;

图5示出了根据本发明再一个实施例的控制调试端口的方法500的流程示意图;以及

图6示出了根据本发明一个实施例的测试方法600的流程图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

图1示出了根据本发明一个实施例的控制调试端口的系统100的示意图。如图1所示,系统100中包括测试设备110、控制装置120和验证装置130。应当指出,图1仅作为示意,本发明的实施例对系统100中所包含的各部分的数量并不做限制。测试设备110可以是计算机、手机、平板、各种应用专用设备等。另外,为实现本发明的目的,测试设备110上布置有调试端口。在根据本发明的一个实施例中,调试端口是jtag(jointtestactiongroup)端口,以供专用的jtag测试工具对测试设备内部的节点进行测试。设备生产商在设备出厂前会生成一个密钥对,即第一密钥和第二密钥,其中第一密钥是密钥对中公开的部分,第二密钥是非公开的部分。在一种实施例中,采用rsa加密算法生成第一密钥和第二密钥,但不限于此。且在设备上预置一个预设值,该预设值与密钥对中的第一密钥相关联。在一个优选的实施例中,在测试设备110上预置第一密钥的散列值来作为预设值。根据本发明的实施方式,测试设备110可以利用多种方式来存储预设值,如flash闪存或者otp(onetimeprogrammable)寄存器等,不限于此。

控制装置120可以是计算设备,包括桌面计算机和笔记本计算机配置的个人计算机、或者是服务器等。开发人员通过控制装置120来控制测试设备110的调试端口。在控制装置120上预置有上述第一密钥,且关联存储第一密钥和测试设备110的标识号。

验证装置130可以是服务器,例如可以是物理上位于一个或多个地点的远程云服务器。在验证装置130上预置第二密钥。同时,验证装置130上还可以预存第二密钥与测试设备110的关联关系。需要说明的是,验证装置130也可以实现为控制装置120上的一部分,以完成利用第二密钥生成签名的过程,本发明的实施例对此不做过多限制。

在根据本发明的一种实现场景中,测试设备110与控制装置120之间通过usb或其他通信方式连接。以调试端口为jtag端口为例,测试设备110与控制装置120之间通过jtag所支持的线缆建立连接。另一方面,控制装置120与验证装置130之间通过网络建立连接。

如图1所示,测试设备110包括:连接管理模块112、鉴权模块114和状态控制模块116。

其中,连接管理模块112用于实现与控制装置120之间的通信。例如,通过连接管理模块112接收来自控制装置120的控制调试端口的请求、并返回确认信息给控制装置120。又如,通过连接管理模块112接收来自控制装置120的第一密钥。鉴权模块114验证第一密钥,并在第一密钥验证通过时指示控制装置120生成控制指令。具体地,鉴权模块114通过如下方式来验证第一密钥:先计算第一密钥的散列值,再判断该散列值与预设值是否一致,若该散列值与预设值一致,则确认第一密钥验证通过。同时,在确认第一密钥验证通过时,鉴权模块114还会生成随机数,并经由连接管理模块112将该随机数发送给控制装置120,并指示控制装置120生成控制指令。

另外,连接管理模块112还可以接收由控制装置120发送的签名和控制指令。鉴权模块114还可以根据第一密钥对接收到的签名进行验证。最后由状态控制模块116在签名验证通过时根据控制指令对调试端口进行控制。

在根据本发明的一些实施例中,控制指令为将调试端口从不允许调试状态(即,关闭调试端口)改变为允许调试状态(即,打开调试端口)的调试使能指令。

此外,调试端口只在该次启动的周期内处于允许调试状态,响应于用户的重启操作,状态控制模块116将调试端口的状态由允许调试状态改变为不允许调试状态。

图1中,控制装置120包括输入输出接口122和控制单元124。其中,输入输出接口122用于实现与测试设备110之间的通信。例如,通过输入输出接口122发送控制调试端口的请求给测试设备110,同时接收来自该测试设备110的确认信息,并在接收到该确认信息时,通过输入输出接口122返回第一密钥给测试设备110。控制单元124在第一密钥验证通过时生成控制指令。

另外,输入输出接口122还可以实现与验证装置130之间的通信,例如,将控制指令发送给验证装置130,以便于验证装置130生成控制指令的签名,同时,输入输出接口122接收验证装置130生成的签名,且将该签名和控制指令发送给测试设备110。

如上文所述,控制装置120上预存有测试设备和第一密钥的关联关系,故在输入输出接口122接收到测试设备110的确认信息时,会返回与该测试设备相关联的第一密钥给该测试设备。

根据本发明的实施方式,测试设备110、控制装置120和验证装置130均可以通过如下所述的计算设备200来实现。图2示出了根据本发明一个实施例的计算设备200的示意图。

如图2所示,在基本的配置202中,计算设备200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。

取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(μp)、微控制器(μc)、数字信息处理器(dsp)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(alu)、浮点数单元(fpu)、数字信号处理核心(dsp核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。

取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如ram)、非易失性存储器(诸如rom、闪存等)或者它们的任何组合。系统存储器206可以包括操作系统220、一个或者多个应用222以及程序数据224。在一些实施方式中,应用222可以布置为在操作系统上由一个或多个处理器204利用程序数据224执行指令。

计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置202经由总线/接口控制器230的通信的接口总线240。示例的输出设备242包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个a/v端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个i/o端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。

网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以是这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(rf)、微波、红外(ir)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。

计算设备200可以实现为服务器,例如文件服务器、数据库服务器、应用程序服务器和web服务器等,也可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。当然,计算设备200也可以实现为小尺寸便携(或者移动)电子设备的一部分。在根据本发明的实施例中,计算设备200被配置为执行根据本发明的控制调试端口的方法300/400/500和/或测试方法600。计算设备200的应用222中包含执行这些方法的多条程序指令。

图3示出了根据本发明一个实施例的控制调试端口的方法300的交互流程图。方法300在上述系统100中执行,如图3上述,方法300始于步骤s301。

在步骤s301中,测试设备110进入触发状态,等待来自控制装置120的控制调试端口的请求。

测试设备110的触发状态可以是响应于用户的某些特定操作而进入的。在一种实施例中,启动测试设备110,同时用户按下测试设备110上的特定按键(如开机键、home键等),此时测试设备110就进入触发状态。

在步骤s302中,控制装置120发送控制调试端口的请求给测试设备110。在根据本发明的实施例中,该调试端口为jtag调试端口。

随后在步骤s303中,测试设备110在接收到该控制调试端口的请求时,返回确认信息给控制装置120。确认信息例如可以是ack(acknowledgement),即确认字符。在数据通信中,接收单元常发送ack给发送单元来表示发来的数据已确认接收无误,故此处不再细述。

随后在步骤s304中,控制装置120在接收到确认信息后,发送第一密钥给测试设备110。

如前文所述,在控制装置120中,预先关联存储了第一密钥与测试设备的标识号,也就是说,第一密钥与测试设备110相关联。故而在接收到来自测试设备110的确认信息时,返回与该测试设备110相关联的第一密钥给该测试设备110。

随后在步骤s305中,测试设备110验证所接收到的第一密钥。

根据一种实施例,验证第一密钥的步骤包括以下两步。①先计算所接收到的第一密钥的散列值,计算散列值就是把任意长度的输入通过散列算法变换成固定长度的输出的过程,该输出就是散列值。②再判断该散列值与预设值是否一致:若该散列值与预设值一致,则表示第一密钥验证通过。

需要说明的是,此处采用计算第一密钥的散列值来验证第一密钥,与预置在测试设备110上的预设值相关。如前文关于系统100的描述,预设值是第一密钥的散列值,故测试设备110在接收到来自控制装置120的第一密钥后,通过计算第一密钥的散列值来与预设值相比较。应当指出,在设备出厂时可以采用其他任一种加密算法处理第一密钥来得到相应的预设值,这样,在后续验证第一密钥时,采用相同的加密算法来处理该第一密钥即可。此处仅以散列函数为例,说明预置在测试设备110上的预设值与预存在控制装置120上的第一密钥的对应关系、及由此产生的验证第一密钥的过程,但本发明的实施例不限于此。

在步骤s306中,如果第一密钥验证通过,说明测试设备110和控制装置120配对成功,此时,测试设备110通知控制装置120生成控制指令。

在根据本发明的一些实施例中,控制指令为将调试端口从不允许调试状态(即,端口关闭状态)改变为允许调试状态(即,端口开启状态)的调试使能指令。同时,厂家在生产设备时已经对应为设备配置了相应的控制指令,可以在控制装置120上预置测试设备110对应的控制指令,当第一密钥验证通过时,测试设备110就指示控制装置120生成该控制指令。例如,厂家通过烧录等方式将控制指令固定在测试设备110上,在开发人员连接测试设备110和控制装置120时,可以将测试设备110上预先固定的控制指令预存到控制装置120上。或者,控制装置120也可以在接收到来自测试设备110的通知时,从测试设备110处获取控制指令。本发明的实施例对此不做过多限制。

进一步地,步骤s306可以分两步来实现,具体可见步骤s3062和步骤s3064。在步骤s3062中,当第一密钥验证通过时,测试设备110生成随机数(记作numberonce),并发送该随机数给控制装置120。在本发明的实施例中,可以采用任一种随机数生成方法生成随机数,本发明的实施例对此不做限制。而后在步骤s3064中,控制装置120生成该测试设备110对应的控制指令,并连同该随机数一并发送至验证装置130。在根据本发明的实施例中,控制装置120可以将随机数与控制命令拼接后发送给验证装置130,亦可以将随机数和控制命令进行某种组合后发送给验证装置130,本发明的实施例对此不做限制。

此外,在根据本发明的一些实施例中,如果第一密钥验证通过,测试设备110会缓存该第一密钥。

随后,在步骤s307中,验证装置130根据第二密钥生成该控制指令的签名。在一种实施例中,验证装置130利用对应于第一密钥的第二密钥生成控制指令的签名。假设随机数记作nonce,控制指令记作cmd,那么,经验证装置130处理后生成的签名就可以表示为:sign(nonce+cmd)。需要说明的是,本发明的实施例对生成签名的具体算法不做过多限制,如上文所述,第二密钥是非公开的密钥,任何利用私钥进行数字签名的方法均可以与本发明的实施例相结合,来实现本发明的方案。

随后在步骤s308中,验证装置130将所生成的签名发送给控制装置120。

随后在步骤s309中,控制装置120将签名和控制指令发送给测试设备110。继续以步骤s307中的例子为例,控制装置120发送给测试设备110的内容为:cmd+sign(nonce+cmd)。

随后在步骤s310中,测试设备110对该签名进行验证,并在签名验证通过时,根据控制指令对调试端口进行控制。

如前文所述,在步骤s306中,测试设备110在第一密钥验证通过时,会缓存该第一密钥。这样在接收到控制指令和签名时,测试设备110可以用缓存的第一密钥对签名(即,sign(nonce+cmd))进行验证,若验证通过,则根据对应的控制指令(即cmd)对调试端口进行控制,即,将测试设备110上的调试端口由不允许调试状态变为允许调试状态。

根据再一些实施例,测试设备110在对签名进行验证的同时,还可以进一步对比签名中包含的随机数的值,与在步骤s3062中所生成的随机数是否一致,若一致再执行控制指令。

需要说明的是,在上述步骤s309中,签名和控制指令由控制装置120合并后发送至测试设备110。当然,在测试设备110具备与验证装置130的通信能力的情况下,也可以由验证装置130将生成的签名(即,sign(nonce+cmd))直接发送给测试设备110、同时由验证装置130通知控制装置120发送控制指令(即cmd)给测试设备110,这样,在步骤s310中,测试设备110在接收到由验证装置130发送的签名和由控制装置120发送的控制指令时,再对签名进行验证。

至此,利用系统100执行控制调试端口的方法300执行完毕。根据本发明的实施方式,控制指令只在本次触发状态下有效,即,调试端口只在本次启动的生命周期内被置于允许调试状态。在允许调试状态下,测试设备110响应于用户的重启操作,将调试端口的状态由允许调试状态改变为不允许调试状态。这样,需要重复上述步骤s301-步骤s310才可以再次将调试端口的状态变为允许调试状态。

根据本发明的方案,当测试设备110接收到控制调试端口的请求时,先验证第一密钥。在第一密钥验证通过后指示控制装置120生成相应的控制指令,并由验证装置130利用对应于第一密钥的第二密钥来生成控制指令的签名。而后测试设备110会利用第一密钥对该签名进行验证,在签名验证通过后,方可根据控制指令对调试端口进行控制。这样,通过这种调试端口使能过程中的身份认证方式,确保了测试设备的安全。并且,在测试设备110上只预存第一密钥的散列值,由验证装置130来统一管理第二密钥(即私钥),能够进一步提高安全性。

另外,在设备出厂前将调试端口置于不允许调试状态(即,关闭调试端口),这样就可以大大减少设备被攻击的风险;同时,当设备出现问题时,开发人员可以通过执行方法300来将调试端口重新使能,将调试端口置于允许调试状态(即,打开调试端口),来进行调试。这就同时兼顾了调试端口所面临的安全性(防黑客利用)和灵活性(开发者调试bug)的需求。

进一步地,根据本发明的方案,调试端口处于允许调试状态只在一个启动周期内有效,重启后需要再次通过认证流程(即,执行方法300)才能打开,以确保调试端口只在设备被测试时被打开,防止滥用。

方法300的执行涉及到系统100中的各个部件,为此,在图4中示出了根据本发明另一个实施例的控制调试端口的方法400的流程示意图。图4所示的方法400适于在测试设备110中执行,是图3所示方法的进一步说明。

如图4所示,方法400始于步骤s410,测试设备110在接收到来自控制装置120的控制调试端口的请求时,返回确认信息。本步骤同前文步骤s303,故此处不再进行赘述。

根据本发明的另一些实施方式,步骤s410除步骤s303外,还包括步骤:响应于用户操作,测试设备110进入触发状态,在触发状态下接收到来自控制装置120的控制调试端口的请求时,返回确认信息。根据本发明的实施方式,测试设备110可以是响应于用户的某些特定操作而进入触发状态。例如,用户启动测试设备110,同时按下测试设备110上的特定按键(如开机键、home键等),此时测试设备110就进入触发状态。

随后在步骤s420中,测试设备110接收来自控制装置130的第一密钥并验证该第一密钥。根据一种实施例,验证第一密钥的步骤包括:先计算第一密钥的散列值,再判断该散列值与测试设备110上的预设值是否一致,若该散列值与预设值一致,则第一密钥验证通过。本步骤同前文步骤s305,故此处不做展开。

如果第一密钥验证通过,则在随后的步骤s430中,测试设备110通知控制装置120生成控制指令、并由第二密钥生成控制指令的签名。在一种实施例中,控制指令为将调试端口从不允许调试状态改变为允许调试状态的调试使能指令。本步骤同前文步骤s306,故此处不做展开。关于第一密钥、第二密钥的关系在前文中关于系统100的相关描述中已经说明,此处亦不做展开。

在一些实施例中,如果第一密钥验证通过,测试设备110还会缓存该第一密钥。在步骤s440中,测试设备110接收由控制装置120发送的签名和控制指令(应当指出,如前文所述,签名和控制指令可以由控制装置120一起发送至测试设备110,也可以由验证装置130和控制装置120分别发送,不限于此)。随后在步骤s450中,测试设备110对签名进行验证,并在签名验证通过时,根据控制指令对调试端口进行控制。这两步骤的具体内容,可参考前文步骤s310的相关描述,此处不再赘述。

除此之外,方法400还包括步骤:在根据控制指令对调试端口进行控制后,响应于用户的重启操作,将调试端口的状态由允许调试状态改变为不允许调试状态。也就是说,调试端口的允许调试状态只在一个启动周期内有效,当测试设备110关闭或重启时,调试端口自动恢复不允许调试状态。

图5示出了根据本发明再一个实施例的控制调试端口的方法500的处理流程的示意图。图5所示的方法500适于在控制装置120中执行,是图3和图4所示的方法300和方法400的进一步说明。

在图5中,方法500始于步骤s510,控制装置120发送控制调试端口的请求给测试设备110。一般地,在系统100内各部分建立连接后,用户启动测试设备110,使其进入触发状态,此时,用户就可以操作控制装置120发送控制调试端口的请求给测试设备110了。

之后,在步骤s520中,控制装置120在接收到来自测试设备110的确认信息时,返回第一密钥,由测试设备110去验证第一密钥。其中,第一密钥与测试设备相关联,并且预先关联存储在控制装置120中。故,控制装置120在接收到来自测试设备110的确认信息时,返回与该测试设备110相关联的第一密钥给该测试设备110。本步骤的详细说明可参考前文步骤s304的描述,此处不做展开。

随后在步骤s530中,控制装置120在第一密钥验证通过时生成控制指令。其中,控制指令为将调试端口从不允许调试状态改变为允许调试状态的调试使能指令。关于控制指令的进一步说明可参见前文步骤s306中的相关描述,此处不做展开。

在步骤s540中,控制装置120将生成的控制指令发送给验证装置130,以便验证装置130利用(对应于第一密钥的)第二密钥生成控制指令的签名(关于验证装置130生成签名的过程可参考前文步骤s307的描述)。根据一种实施例,在第一密钥验证通过时,控制装置120接收到来自测试设备110的随机数,将控制指令和随机数一并发送给验证装置130,以便验证装置130生成签名。关于第一密钥、第二密钥的关系在前文中关于系统100的相关描述中已经说明,此处不做展开。

随后,在步骤s550中,控制装置120将签名和控制指令发送给测试设备110,以便该测试设备110根据第一密钥对签名进行验证,并在签名验证通过时根据控制指令对调试端口进行控制(关于测试设备110对签名进行验证的过程可参考前文步骤s310的描述)。

应当指出,当验证装置130被实现为控制装置120上的一个部分时,在步骤s530中,控制装置120在第一密钥验证通过时生成控制指令,随后在步骤s540中,控制装置120根据第二密钥生成该控制指令的签名。具体地执行过程可参考上文关于步骤s530和s540的阐述,此处不再进行赘述。

根据本发明的实施方式,还公开了一种测试方法600。图6示出了根据本发明一个实施例的测试方法600的流程示意图。如图6所示,方法600始于步骤s610,响应于测试请求,检测测试设备上调试端口的状态。为保证设备安全,在设备出厂时,会关闭设备上的调试端口(即让调试端口处于不允许调试状态),当用户需要对设备进行测试时(统称作测试设备),先检测该测试设备上的调试端口的状态。优选地,调试端口为jtag端口。

若检测到调试端口的状态为不允许调试状态,则在随后的步骤s620中,通过执行控制调试端口的方法将该调试端口的状态变为允许调试状态。控制调试端口的方法在前文中已经进行了详细的阐述,具体可参考关于图3、图4和图5的相关描述,此处不做展开。

应当指出,若检测到调试端口的状态为允许调试状态,则直接通过调试端口对该测试设备内部的节点进行测试。

随后在步骤s630中,通过调试端口对测试设备内部的节点进行测试。通过jtag端口对设备内部的节点进行测试(如,通过jtag端口访问设备中cpu的内部寄存器和挂在cpu总线上的设备)的方法,属于本领域技术人员已知内容,此处不再做赘述。方法600旨在提供一种当调试端口处于不允许调试状态时、通过控制调试端口的状态来进行测试的方案,以解决测试设备上调试端口所面临的安全性(防黑客利用)和灵活性(开发者调试bug)的矛盾需求。

这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、u盘、软盘、cd-rom或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。

在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的方法。

以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。

在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。

如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。

尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的而非限制性的,本发明的范围由所附权利要求书限定。

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