用于对事务进行认证的系统和方法

文档序号:7969656阅读:206来源:国知局
专利名称:用于对事务进行认证的系统和方法
技术领域
本发明一般地涉及I2C总线上发生的通信的领域。
背景技术
这些其它系统inter-IC总线(集成电路间总线),一般称为IIC或I2C总线,是一种在系统中各个集成电路之间提供通信链路的控制总线。目前尚无保证I2C通信通道安全的标准方法,因此像所有的不安全系统一样,采用I2C通信的系统容易受到攻击和篡改。例如,一个稍微老练的攻击者可以偷偷地打开诸如服务器之类的一台采用I2C总线的机器,并在I2C总线上安装一个常用的I2C写工具。该I2C写工具使得可以监听总线上的业务,在计算机安全领域这种监听通常被称为窥探(snoop)。这将使得攻击者可以确定总线上的资源是启用的还是禁用的。经由掌握这些信息,攻击者能够对I2C总线上发生的合法事务进行复制(并且复制出的事务表现得如同合法事务本身一样)。
这些其它系统I2C总线会如此容易受到攻击的一个原因是,I2C总线是一种定义明确的开放总线,并且多个主控(master)可以合法地驻留在总线上并和平地共存。在现有技术的多主控环境中,每个主控都会意识到由其它主控发起的事务正在总线上发生,但它们不能确定这些其它事务是合法事务还是由入侵者发起的非法事务。在单主控环境中,可以将主控编制为检测正在发生的任何其它事务(即不是由该单一主控发起的事务)并在假设这些事务是非法的情况下进行操作,然而,老练的攻击者可以对该主控发起的业务进行修改并且这种修改可以不被检测到。因此,攻击者基本上能在I2C总线上透明地进行通信。这使得非法主控得以进入总线,与总线上的器件进行通信,并对这些器件上的数据进行修改和/或读取而不会让整个系统知道已经发生了这些事件。
这些其它系统因此,希望能够对I2C总线上发生的通信进行认证,以确保这些通信是合法的。

发明内容
这些其它系统本发明能在无需修改现有I2C器件的情况下实现对标准I2C总线上发生的通信(事务)的认证。使用认证代理和共享密钥来对总线上发生的读写事务进行认证。除了可以验证事务的合法性外,对I2C事务的认证经由使得基板管理控制器(BMC)可以快速确定并指出错误而增强了总线以及总线上的器件的可靠性和适用性。
在优选实施例中,B在MC和认证代理之间共享密钥。BMC和认证代理分别对总线上传送的数据执行加密散列(hash),并且将由BMC创建的散列值与由认证代理针对同一事务数据创建的散列值相比较。匹配则表明此事务是合法无误的,不匹配则表明此事务是非法或错误的。使用密钥防止了攻击者对总线上的事务进行伪认证。
附图表明

图1是说明本发明的基本体系结构的框图;图2说明了如何使用I2C复用器来实现将单一I2C总线分成多个I2C总线;图3是一般地说明根据本发明在写事务中所执行的步骤的流程图;并且图4是一般地说明根据本发明在读事务中所执行的步骤的流程图。
具体实施例方式
图1是说明本发明的基本体系结构的框图。参考图1,例如BMC102之类的I2C主控经由I2C总线106连接到I2C器件104。这些单元构成了I2C系统的典型体系结构。虽然图中只示出了一个单独的I2C器件,但在同一个I2C总线上通常可以驻留多个I2C器件。
根据本发明,认证代理110连接到I2C总线106,从而使它与I2C总线106上正在通信的所有器件进行通信。从其最基本的形式上说,认证代理110包括密钥寄存器112、解密引擎113、散列寄存器114和散列引擎116。认证代理110能够与I2C总线上的所有器件进行通信,并且认证代理110本身是可寻址的,因此I2C总线上的其它器件能与它进行通信。
在图1所示的实施例中,BMC102包括通用的CPU(未示出)和非易失性存储器108,二者在同一BMC内,该通用的CPU例如带有多个I/O通道的微型计算机,包括I2C控制器。在优选实施例中,CPU应当能够实现共享密钥的加密散列算法(例如,对共享系统来说,对加密散列所进行的处理是使用对称密码、使用所存储的密钥来对该散列进行加密;对公钥系统来说,对加密散列所进行的处理是使用公钥密码、使用所存储的密钥来对该散列进行加密),或者BMC应当包含专用硬件(例如,专门用来处理散列和加密的逻辑)来执行这些任务。加密散列技术在本技术领域内是公知的,并且任意已知的散列技术和/或体系结构都可以用于本发明中。错误信号总线118连接BMC102和认证代理110,目的是使认证代理110进行信令错误检测。
认证代理110驻留在I2C总线106上,并且检测并监听总线上发生的所有I2C事务。结合本发明而利用了I2C协议的一个特征,称为重复发起条件。重复发起条件使得例如BMC102之类的总线主控可以不断地发起新的事务而不用重复判断对总线的控制。因此,总线的主控可以在维持对总线的控制的同时,用同样的数据以所期望的次数多次发出新的事务。
使用标准的发起条件,I2C主控在I2C总线上发起与I2C器件的事务,在到此特定I2C器件的事务的结尾,并不产生终止事务的停止条件,而是由I2C主控发起重复的发起条件,并且,不是利用重复传输来对目标器件进行寻址,而是由I2C主控发起对驻留在发生事务的I2C总线上的认证代理的写事务。经由使用重复发起条件,并没有得到两个独立的总线事务,而是发生了单一的连续重复事务。重复发起事务被用于在多主控环境下确保数据和散列值的正确分组。如果不使用重复发起事务,竞争主控有可能会在散列写入阶段期间赢得I2C判断,从而破坏验证过程。
重复发起事务的使用不排除实用重复发起事务来访问I2C器件(诸如I2C NVRAM(非易失性随机存取存储器))。如果认证代理不是重复发起事务之后的事务的目标,则该认证代理将继续窥探总线并使用附加的地址和数据来继续计算散列。认证代理应当将混合了读写的重复发起事务与只进行读或写的事务同等对待。本发明的BMC配置为能够正确地对这些重复发起的读/写事务计算散列。
由于认证代理窥探了总线上发生的所有事务(例如,它收到与从主控传送给I2C器件的数据相同的数据),因此该认证代理使用散列引擎116基于相同的信息创建散列值。假设传输是合法的,由于BMC是创建的所有这些信息的器件,因此它能够基于这些信息创建散列。然后BMC使用密钥对散列进行加密,并将加密后的散列传送到认证代理。然后认证代理用解密引擎113对散列进行解密,并且散列寄存器配置为使用已知的比较方法对两个散列值进行比较(即将由认证代理创建的散列值与接收自BMC的散列值相比较),该方法例如双输入的逻辑门,当两个输入相同时输出第一数字值,并且当两个输入不同时输出第二数字值。如果认证代理计算出的散列值与BMC计算出的散列值不同,则表明非法器件发起了该传输或者传输中存在错误。在任一情况下,这都是应了解的有价值的信息。然后认证代理经由错误通道118用信号通报错误。然后BMC就能采取适当的措施,即重新发送传输或确定何处出现了安全漏洞。如果总线上发生了读或写事务(并且因此监听该总线的认证代理窥探到该事务)并且认证代理没有收到BMC针对该事务而计算的散列值,那么该认证代理也会经由错误通道118用信号向BMC通报发生了错误。
认证代理和BMC应当只使用包含在所传送的字节中的信息来计算散列。START(开始)、STOP(停止)和ACK/NACK(确认/否定确认)比特都不应当用来计算散列。此外,认证代理不应当在其散列计算中包括散列传输事务。
BMC和认证代理使用相同的散列算法。BMC和认证代理可以交替地采用公钥加密法或任意其它的已知加密技术来对散列进行加密和解密。为了使用公钥方法,BMC可以创建公钥-私钥对。可以将公钥传送给认证代理中的密钥寄存器,并由BMC保存私钥。在BMC计算出事务的散列后,该BMC使用其私钥来对散列进行加密。然后认证代理使用BMC的公钥来对散列进行解密。
上述实施例提供了一种使得可以对I2C总线上发生的事务进行认证的系统,这是对现有技术的系统的重大改进。然而,老练的攻击者仍能经由试图避开认证代理110提供的篡改检测信号来切断认证代理110与I2C总线106的连接。根据本发明的优选实施例,可以附加地为图1的系统配备连接在I2C总线106与认证代理110之间的看门狗(watchdog)定时器120(定时器120用虚线示出,以表明它是可选的)。定时器120配置为在认证代理110在一段预定的时间帧内未收到I2C事务的情况下使得该在认证代理110经由错误通道118向BMC102表明错误。例如,如果定时器检测到大于单一有效事务长度的长度的暂停,系统就可以配置为表明出现了问题。
老练的攻击者还能够切断或欺骗BMC102与认证代理110之间的错误通道118。为了对付这一类攻击,在优选实施例中,BMC102配置为周期地性地寻址并且向认证代理110传送随机数据。认证代理110配置为接收这些随机数据而不对其执行任何措施。然后BMC102会以正常的方式对散列进行计算和加密并将其传送给认证代理,但BMC102周期性地在传送前故意破坏散列值。认证代理110将照常对可能已被破坏的散列值进行解密并对其进行比较,并且而适当的时候用信号在错误通道118上通报错误。由于BMC102知道它所创建的散列值是正确的还是错误的,因此,它将会预料到错误通道118上的适当的错误响应。由于在这种攻击场景中,认证代理110与BMC102之间的错误通道118已经被切断或欺骗,因此BMC不会收到这种错误信号或者BMC会收到不正确的错误信号,并且BMC都假设发生了错误并采取正确的措施。
图2说明了如何使用I2C复用器203来实现将单一I2C总线分成多个I2C总线。在这种配置中,多个认证代理210A、210B、...、210n连接到I2C总线,每个认证代理对应于一条从I2C复用器203分出的I2C总线206A、206B、...、206n。每个认证代理都必须具有一条建立在该认证代理与BMC之间的通信路径(218A、218B、...、218n),以便能够传送错误信息。而且,每个认证代理都必须得到其关联I2C总线的输出(tap off),以便使它可以窥探该I2C总线并接收散列数据。从I2C复用器203分出的各路I2C总线206A、206B、...、206n的操作与以上针对图1所述的操作基本相同。尽管图2并未示出图1所示的计时器,但如果需要的话也可以针对每个认证代理而包括该计时器。
图3是一般地说明根据本发明在写事务中所执行的步骤的流程图。处理开始,并且在步骤302中,I2C主控使用其密钥(对于HMAC(散列消息认证码)认证)、目标I2C器件的地址以及待发送给目标I2C器件的数据来计算散列值。然后,I2C主控使用它的密钥对散列进行加密。在步骤304中,I2C主控发起与目标I2C器件的写事务。
在步骤306中,认证代理窥探事务并使用其密钥和事务信息(地址和数据)来计算散列值。在步骤308中,I2C主控在I2C总线上发出发往认证代理的重复发起事务,并写入在步骤302中创建的由I2C主控计算的散列值。如果I2C主控在寻址并与认证代理进行通信时(步骤309)收到否定确认码(NAK),则该I2C主控将前进到步骤314以便进行错误确定。如果没有收到否定确认,则在步骤310中,认证代理用它的密钥对I2C主控的散列值进行解密并与它创建的散列值相比较。
在步骤312中,如果确定散列值不匹配或者如果在以STOP(停止)命令终止事务之前认证代理没有收到散列,则处理前进到步骤314,在这里事务被认定出了问题并发起调查。如果调查表明存在简单的错误,则可以重新发送该事务。如果调查表明了可能的安全漏洞,则可以采取措施弥补漏洞。简单的错误可以由BMC在完成整个事务并经由错误通道收到错误后指出。安全漏洞则可以由BMC在不需要其已经发出相关联的事务的情况下经由错误通道收到错误后指出。然后处理直接前进到步骤318,如下所述。
如果在步骤312中确定散列值确实匹配,则在步骤316中事务通过认证并且不需要任何补救措施。然后处理前进到步骤318中,在这里判断总线上是否发起了附加的事务。如果有,处理返回到步骤302中;如果没有,则处理结束。
图4是一般地说明根据本发明在读事务中所执行的步骤的流程图。处理开始,并且在步骤402中,I2C主控对目标I2C器件进行寻址并执行对来自目标I2C器件的数据的读取。在步骤404中,认证代理窥探读事务并使用其密钥(或者如果使用“散列+加密”的认证,则认证代理可以执行散列操作)和窥探到的信息来计算散列值。在步骤406中,I2C主控用它的密钥、从中读取数据的I2C器件的地址以及从中读取的数据来计算其散列。然后I2C主控用其密钥对散列进行加密。在步骤408中,I2C主控在I2C总线上发出发往认证代理的重复发起事务,并写入由I2C主控计算的散列。如果I2C主控在寻址并与认证代理进行通信时(步骤409)收到否定确认(NAK),该I2C主控将前进到步骤414中以便进行错误确定。
如果在步骤409中I2C主控没有收到否定确认,则在步骤410中认证代理对I2C主控的散列进行解密并将结果与它所计算出的散列值相比较。在步骤412中,如果确定散列值不匹配或者如果在以STOP(停止)命令终止事务之前认证代理没有收到散列,则得出事务存在问题的结论并发起对该问题的调查(步骤414)。如果在步骤412中确定存在匹配,则事务通过认证(步骤416)。
在步骤418中,确定是否有另外的事务要传送。如果有另外的事务要传送,则处理返回到步骤402。如果没有另外的事务要传送,则处理结束。
在优选实施例中,本发明的认证代理可以包括微控制器,该微控制器包含共享密钥解密引擎、加密散列引擎、散列寄存器和一次写入非易失性密钥寄存器。如果需要的话,可以用CPLD(复杂可编程逻辑器件)、ASIC(专用集成电路)或者FPGA(现场可编程门阵列)来代替微控制器。一次写入寄存器用作用于解密引擎的密钥,并且该一次写入寄存器不是可读的。可选地,器件可以实现会清除密钥寄存器中的内容的清除引脚(clear pin)或寄存器比特。散列引擎使用共享密钥(对于HMAC认证)和来自I2C总线的数据来生成散列值。将该散列值存储在散列寄存器中。如果如图2所示,I2C复用器位于BMC与I2C受控器件(slave)之间,则认证代理必须驻留在同一个I2C总线上作为待保护的器件。这将以防止未经授权的事务到达受控器件。
优选地,加密散列算法应当使用密钥来保证不能被轻易地通过仅仅检查I2C数据来重新创建散列输出,即HMAC认证。
在操作之前,应当执行初始化处理以使系统开始操作。由于BMC将在I2C总线上以密码的方式传送密钥,因此应当在物理上安全的环境中对系统进行初始化。在示例性的初始化处理中,BMC首先收到对认证代理进行初始化的命令。在该命令中包括用于所有通信的共享密钥。BMC在非易失性存储器中存储该密钥。然后BMC前进到将该密钥写入所有已连接的认证代理的一次写入寄存器。然后BMC通过对每个总线上的I2C器件执行至少一个已认证的事务来核实是否已经正确地写入了所有的认证代理密钥(如以上针对图3和图4所述)。如果在认证期间检测到错误,则清除并重新编制认证代理的密钥。在已经验证了所有的认证代理之后,系统就准备好进行正常的操作了。
作为备选,BMC的代码和认证代理可以在设计时就将密钥嵌入进去。这就可以免去初始化的过程。然而,必须使用任一已知方式特别小心地确保不能从代码更新中恢复密钥。
上述步骤可以用硬件来实现和/或使用标准的公知编程技术来实现。上述实施例的新颖性并不在于特别的编程技术,而是在于使用所描述的步骤来获得所描述的结果。具体实现本发明的软件编程代码通常可以存储在诸如BMC的永久性存储器之类的某些类型的永久性存储器中。在客户机/服务器环境中,可以利用与服务器相关联的存储器来存储这种软件编程代码。软件编程代码可以包含在用于结合数据处理系统而使用的各种已知的介质中的任意介质上,该介质诸如磁盘、硬盘驱动器或CD-ROM(压缩光盘-只读存储器)。代码可以在这些介质发布,或者以如下方式发布给用户,即,通过某种网络从一个计算机系统的内存或存储器发送到其它计算机系统,以由这些其它系统的用户所使用。将软件程序代码包含在物理介质和/或经由网络对软件代码进行分布的技术和方法都是公知的,并且在这里将不作进一步的讨论。
可以理解,附图中的每个单元以及附图中的单元的组合都可以由执行指定功能或步骤的通用的和/或专用的的基于硬件的系统来实现,或者由通用的和/或专用的硬件与计算机指令的组合来实现。
可以将这些程序指令提供给处理器以制造某种机器,使得在处理器上执行的指令生成用于实现附图中所指定的功能的装置。处理器可以执行计算机程序指令以产生一系列操作步骤,这些操作步骤由处理器来执行以产生由计算机实现的处理,使得在处理器上执行的指令提供用于实现附图中所指定的功能的步骤。因此,附图支持用于执行指定功能的装置的组合,用于执行指定功能的步骤的组合,以及用于执行指定功能的的程序指令装置。
虽然针对本发明的特定优选实施例对本发明进行了描述,但本领域的普通技术人员可以提出各种改变和修改,并且本发明应当涵盖处于所附权利要求书的范围内的这些改变和修改。
权利要求
1.一种用于对至少一个I2C总线上I2C主控与一个或多个I2C器件之间的事务进行认证的系统,包括认证代理,其连接到第一I2C总线,所述认证代理配置为监听所述第一I2C总线上发生的所有事务,识别非法事务,并将所述非法事务的标识经由信号发给所述I2C主控。
2.根据权利要求1所述的系统,其中所述认证代理包括散列引擎,其连接到所述第一I2C总线,所述散列引擎对所述第一I2C总线上发生的每个事务执行加密散列,以针对每个事务创建认证散列值;以及散列寄存器,其连接到所述第一I2C总线和所述散列引擎,所述散列寄存器将每个所述认证散列值与由所述I2C主控针对所述第一I2C总线上的它所发起的每个事务创建的验证散列值相比较,其中所述比较的结果被所述认证代理用来确定所述认证代理所监听的所述事务中的一个特定事务是合法事务还是非法事务。
3.根据权利要求2所述的系统,其中所述认证代理进一步包括密钥寄存器,其连接到所述第一I2C总线并存储接收自所述BMC的加密密钥;以及解密引擎,其连接到所述密钥寄存器并连接到所述散列寄存器,所述解密引擎使用存储在所述密钥寄存器内的所述加密密钥来对接收自所述第一I2C总线的每个事务进行解密。
4.根据权利要求3所述的系统,进一步包括定时器,其连接到所述认证代理和所述第一I2C总线,所述定时器配置为当在预定的时间内所述第一I2C总线上无事务发生时向所述认证代理发送超时信号,其中所述认证代理配置为在从所述定时器收到所述超时信号后向所述BMC发送超时事件信号。
5.根据权利要求4所述的系统,进一步包括I2C复用器,其连接在所述BMC与所述I2C总线之间,其中每个所述I2C总线都有专用的认证代理与之相连。
6.一种计算机程序产品,其用于至少一个I2C总线上的基板管理控制器(BMC)以及一个或多个I2C器件,所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有包含在所述介质中的计算机可读程序代码,所述计算机可读程序代码包括配置为监听所述第一I2C总线上发生的所有事务,识别非法事务,并将所述非法事务的标识经由信号发给所述BMC的计算机可读程序代码。
7.一种用于对至少一个I2C总线上基板管理控制器(BMC)与一个或多个I2C器件之间的事务进行认证的方法,包括用于监听所述第一I2C总线上发生的所有事务的步骤;用于识别非法事务的步骤;以及用于将所述非法事务的标识用信号发给所述BMC的步骤。
8.根据权利要求7所述的方法,进一步包括用于对所述第一I2C总线上发生的每个事务执行加密散列,以针对每个事务创建认证散列值的步骤;以及用于对将每个所述认证散列值与由所述BMC针对所述第一I2C总线上它所发起的每个事务创建的验证散列值相比较的步骤,其中所述比较的结果被用来确定所述被监听的事务中的一个特定事务是合法事务还是非法事务。
9.根据权利要求8所述的方法,进一步包括用于在密钥寄存器中存储接收自所述BMC的加密密钥的步骤;以及用于使用存储在所述密钥寄存器中的所述加密密钥来对接收自所述第一I2C总线的每个事务进行解密的步骤。
10.根据权利要求9所述的方法,进一步包括用于当在预定的时间内所述第一I2C总线上无事务发生时发出超时信号的步骤;以及用于在发出所述超时信号后向所述BMC发送超时事件信号的步骤。
全文摘要
本发明能在无需修改现有I
文档编号H04L12/40GK1988438SQ20061013934
公开日2007年6月27日 申请日期2006年9月26日 优先权日2005年12月20日
发明者贾斯廷·波特克·班德霍尔兹, 拉尔卡·M·贝冈, 安德鲁·S·海因茨曼, 费尔南多·A·洛佩斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1