BIOS安全的制作方法

文档序号:17745208发布日期:2019-05-24 20:35阅读:314来源:国知局
BIOS安全的制作方法

基本输入/输出系统(bios)是由系统(例如,计算机)在执行引导以将各种硬件接口初始化时所使用的固件,并且用以在系统操作时向该系统提供各种服务。一种bios标准被称为统一可扩展固件接口(uefi),其被用在许多个人计算机中。uefi指定若干个引导变量,这些引导变量可以在系统操作时被更新,以对bios如何进行操作加以调整。这些变量中的一些被定义为认证变量并且被用于帮助防止对bios和系统本身的恶意攻击。

附图说明

结合以下结合附图所做的详细描述,可以更全面地理解本申请。

图1示出了与bios安全相关联的示例存储器。

图2示出了与bios安全相关联的示例操作的流程图。

图3示出了与bios安全相关联的示例操作的另一流程图。

图4示出了与bios安全相关联的示例系统。

图5示出了示例bios。

图6示出了示例系统和方法以及等同物可在其中进行操作的示例计算设备。

具体实施方式

描述了与基本输入/输出系统(bios)安全相关联的系统、方法以及等同物。系统bios将配置设置存储在专用于bios的闪存中。这些设置中的一些是安全敏感的并且由在系统管理模式(smm)下运行的bios代码进行管理。随着针对smm的恶意攻击的增加,这些安全敏感的设置可能会被暴露,并潜在地允许攻击者破坏smm的安全功能。这可能会致使例如bios以及具有受损bios的系统进一步受到损害。

为了保护这些设置,bios可以被配置为在bios闪存中存储两个敏感变量集:活动版本以及保存版本。bios闪存还可以存储自先前引导以来对变量所做的更新的有序列表。此外,可以将保存版本的描述存储在安全闪存中。取决于安全闪存中的可用资源,该描述可以是保存的变量的副本、保存的变量的哈希等。当在系统引导期间加载了变量时,可以将活动版本与安全闪存中的描述进行比较。如果两者匹配,则在系统上次进行操作时没有对活动版本做出改变,并且该引导可以正常进行。

如果存在差异,则可以对来自有序列表的更新进行验证并将该更新应用于保存版本以创建敏感变量的更新版本。如果更新版本与活动版本匹配,则在先前系统操作期间对活动版本所做的改变会被授权,并且如上所述,系统可以正常引导。然而,如果更新版本与活动版本不匹配,或者其中一个更新失败,则保存版本、活动版本和更新中的至少一个可能已被不经意地破坏或者通过恶意攻击而被破坏。这可以导致bios采取动作以例如恢复到先前已知的安全状态、警告对bios进行操作的系统的用户,或者采取与重申对系统的控制和/或防止今后发生类似的攻击相一致的一些其他动作。

图1示出了与基本输入/输出系统(bios)安全相关联的示例存储器。应当理解,图1中所描绘的项目是说明性的示例,并且许多不同的系统、设备等可以根据各种示例来进行操作。

图1示出bios存储器100。bios存储器100可以是例如闪存,该闪存由系统的bios使用以存储与运行bios相关联的设置、指令等。系统可以依赖于bios以例如执行与启动或引导系统以及系统进行操作时相关联的各种功能。这些功能可以包括例如加载操作系统、检测系统部件、将系统部件彼此连接等。

当执行这些功能时,bios可以依赖于存储在bios存储器100中的各种设置和/或变量。这些设置中的一些可以是例如安全敏感黑名单、白名单等。作为说明,统一可扩展固件接口(uefi)标准指定了由uefi标准描述为认证变量的平台密钥(pk)、密钥交换密钥(kek)、禁止签名数据库(dbx)、签名数据库(db)、时间戳签名数据库(dbt)等。这些认证变量如果受到损害,则可能会阻止系统进行操作,并允许恶意代码的操作等。因此,认证变量通过由在系统管理模式(smm)(一种特权执行模式)下操作的bios代码进行管理从而得到保护。然而,即使是smm也会受到攻击。

因此,为了保护安全敏感的bios变量,可能需要确定它们是否已被恶意操纵,并且如果资源可用,则将它们恢复到先前的安全状态。在各种示例中,这可以部分地通过将敏感bios变量的两个副本存储在bios存储器100中来实现。这里,这些被示出为保存的变量110和活动变量120。在该示例中,四个敏感bios变量被示出为保存的变量110sv1至sv4和相应的活动变量120av1至av4。然而,在不同的示例中,可以使用更多或更少数量的敏感bios变量。

当运行bios的系统被引导时,该系统将首先检查自上次系统被操作以来活动变量120是否已被改变。虽然可以仅通过比较活动变量120和保存的变量110来检测这一点,但是有可能会恶意地对保存的变量110和活动变量120进行更新以试图逃避这种类型的检测。为了防止这种情况,可以将保存的变量描述160存储在与bios存储器100分开的私有存储器150中。私有存储器150可以由安全实体来控制,该安全实体的任务是防止bios受到损害。在各种示例中,保存的变量描述160可以是保存的变量110的副本、保存的变量110的哈希等。在私有存储器150内获取的表单式保存的变量描述160可以取决于可用于存储保存的变量描述160的系统资源、以及在检测到不匹配的情况下所需的恢复功能。

如果没有检测到活动变量120与保存的变量描述160之间的差异,则系统可以如同没有对敏感变量作出恶意攻击那样继续正常引导。如果检测到差异,则在采取安全措施之前首先确定该差异是授权修改的结果还是恶意攻击的结果。这可以通过尝试使用保存的变量110以及针对敏感变量的保存的更新130的集合重建活动变量120来实现。保存的更新130可以是在系统的先前操作期间对敏感变量所做出的更新的有序列表。因此,为了根据保存的变量110重建活动变量120,可以重新验证保存的更新130,并且按照列出保存的更新的顺序来将保存的更新130应用于保存的变量110。这可以创建更新的变量的集合(未示出)。然后可以将更新的变量与活动变量120进行比较。如果更新的变量与活动变量匹配,则无论是操纵保存的变量110、活动变量120、保存的更新130还是其组合,都不会对敏感变量做出攻击。

值得注意的是,当活动变量120通过在系统引导期间将它们与更新的变量进行比较从而得到验证时,这表明了该活动变量集是安全的活动变量集,以用于将来继续使用。因此,还可以对保存的变量110进行更新以匹配活动变量120,并且可以对保存的变量描述160进行更新以与新保存的变量110相对应。当已经应用了更新时,也可以清除保存的更新队列130。

当在对保存的变量110应用保存的更新130之后存在更新的变量与活动变量120之间的不匹配时,这表明了对敏性变量的恶意攻击。此时,可以采取安全动作以尝试修复保存的变量和/或通知对系统的安全感兴趣的实体。所采取的安全动作的规模可以取决于保存的变量描述160在私有存储器150中采用何种形式。如果保存的变量描述160是保存的变量110的副本,则可以将保存的变量和/或活动变量120恢复到已知的安全状态。如果关于敏感变量的可用信息较少,例如,如果保存的变量描述160存储保存的变量110的哈希,则恢复动作可能是不可行的。在这些场景中,可以使用当前设置、已知的安全设置集等来引导系统,并且可以通知对系统的安全感兴趣的实体。该实体可以是例如系统的用户和/或管理员、维护系统的远程逻辑等。

如所讨论的,存储了保存的变量描述160的信息的范围可以取决于私有存储器150中的可用资源以及针对更强的系统恢复选项的期望。作为说明,uefi认证变量包括白名单和黑名单,白名单和黑名单的大小可以随着时间的推移而增长。如果可用于存储保存的变量描述160的空间量限于私有存储器150,则由于例如对有限资源的多个需求,bios可能会依赖于较弱的用以保护系统的恢复选项。

在没有检测到恶意动作的系统的成功引导之后,保存的变量110和活动变量120将匹配(例如,sv1将具有与av1相同的值)。这可能是因为在系统先前操作期间没有做出改变,或者是因为保存的变量110被更新以匹配活动变量120。在系统操作期间,可以对敏感变量做出各种改变。这些改变可能是授权的或未授权的,这取决于是否通过适当的通道并使用适当的认证信息来做出改变。该认证信息可以是系统特定的并且取决于所使用的bios的类型。当完成授权改变时,对活动变量120做出改变,其中保存的变量110在整个系统操作期间都保持它们的状态。授权改变也可以被记录在保存的更新130队列中,以便在下次启动系统时使用。可以存储这些改变,以便确保可以在将来的时间点根据保存的变量110来再现活动变量120。

在保存的变量描述160存储保存的变量110的副本的示例中,可以从bios存储器100中省略保存的变量110,并且将保存的变量描述160视为保存的变量110。在该示例中,活动变量120可以直接与保存的变量描述160进行比较,并且保存的更新130可以被应用于加载到存储器中的保存的变量描述160的副本,以生成更新的副本。此外,当保存的变量描述160包括保存的变量110的副本时,保存的变量描述160还可以包括保存的变量110的哈希,以加速活动变量120和保存的变量110的初始比较。

应当理解,在以下描述中,阐述了许多具体细节以提供对示例的透彻理解。然而,应当理解,可以在不限于这些具体细节的情况下实践示例。在其他情况下,可以不对方法和结构进行详细描述以避免不必要地混淆对示例的描述。而且,示例可以彼此组合使用。

如本文所使用的“模块”包括但不限于硬件、固件、存储在计算机可读介质上或在机器上执行的软件、和/或执行功能或动作和/或从另一模块、方法和/或系统引发功能或动作的每种组合。模块可以包括软件控制的微处理器、分立模块、模拟电路、数字电路、编程模块设备、包含指令的存储器设备等。模块可以包括门、门的组合或其他电路部件。在描述了多个逻辑模块的情况下,可以将多个逻辑模块合并到一个物理模块中。类似地,在描述了单个逻辑模块的情况下,可以在多个物理模块之间分发该单个逻辑模块。

图2示出了与基本输入/输出系统(bios)安全相关联的示例方法200。方法200可以在用于存储处理器可执行指令的非暂时性处理器可读介质上体现。当由处理器执行时,所述指令可以使处理器执行方法200。在其他示例中,方法200可以存在于专用集成电路(asic)的逻辑门和/或ram内。在一些示例中,可以在系统管理模式(smm)bios代码被加载到smmbios区域之后但是在非bios代码在cpu上运行之前执行方法200。这可以确保方法200在安全环境中进行操作,其中smm本身受到损害的风险很低并且假设在操作系统开始运行时smm可能会受到损害。

方法200包括在250处检测活动的bios设置与保存的bios设置之间的不匹配。在各种示例中,活动的bios设置和保存的bios设置可以是在安装有bios的系统或设备的引导期间由bios使用的bios变量。如以上所讨论的,bios可以使用统一可扩展固件接口(uefi)标准来进行操作。因此,bios设置可以是uefi变量。此外,uefi变量可以是uefi标准中描述的uefi认证变量。

在一个示例中,检测活动的bios设置与保存的bios设置之间的不匹配可以包括将活动的bios设置的哈希与保存的bios设置的哈希进行比较。保存的bios设置的哈希可以存储在安全存储器中。在另一示例中,检测活动的bios设置与保存的bios设置之间的不匹配可以包括将活动的bios设置集的哈希与保存的bios设置的哈希进行比较。保存的bios设置的哈希可以存储在安全存储器中。在该示例中,活动的bios设置集可以包括活动的bios设置,并且保存的bios设置集可以包括保存的bios设置。检测活动的bios设置与保存的bios设置之间的不匹配还可以包括对活动的bios设置和存储在安全存储器中的保存的bios设置的副本进行比较。

方法200还包括在260处验证更新。该更新可能先前已被应用于活动的bios设置。作为说明,在执行方法200的系统的先前操作期间,系统可能已经接收到对活动的bios设置的更新。该更新可能已被验证,并被应用于活动的bios设置,然后被记录以便可以重现改变,以例如确保有能力在确定是否存在针对系统的恶意攻击时重建活动的bios设置。可以根据要更新的变量的类型来验证更新。一些变量可以依赖于例如涉及有效数字签名的密钥层次、共享秘密的知识等。

方法200还包括在270处将更新应用于保存的bios设置。这可以创建更新的bios设置。作为说明,可以在执行方法200的系统的先前操作期间,存储一系列更新。在动作270处,可以顺序地验证这些更新并将其应用于保存的bios设置,以重建更新的bios设置。以与先前应用这些更新的顺序相同的顺序来重新应用它们可以确保准确地重建活动的bios设置,假设在对一个或多个保存的bios设置、活动的bios设置、更新等进行操纵时没有发生恶意活动。

方法200还包括在280处确定更新的bios设置是否与活动的bios设置匹配。当更新的bios设置与活动的bios设置匹配时,方法200可以在动作290处开始对保存的bios设置进行更新。可以对保存的bios设置进行更新以匹配活动的bios设置。这可以确保将来保留已发现有效的改变,以便在每次引导之后都无需再重新对它们进行改变。当更新的bios设置与活动的bios设置不同时,方法200可以进行到动作290以采取安全动作。安全动作可以包括例如恢复bios设置的先前版本并引导对bios进行操作的系统。在其他示例中,安全动作可以包括引导系统并将与bios相关联的安全事件警告给实体。

图3示出与基本输入/输出系统(bios)安全相关联的方法300。方法300包括与上面参考方法200(图2)描述的那些动作类似的若干动作。例如,方法300包括在350处检测活动的bios设置与保存的bios设置之间的不匹配,在360处验证更新,在370处对保存的bios设置进行更新以创建更新的bios设置,在380处确定更新的bios设置是否与活动的bios设置匹配,在390处对保存的bios设置进行更新,并且在395处采取安全动作。

方法300还包括在310处接收对活动的bios设置进行更新的请求。方法300还包括在320处验证该请求。方法300还包括在330处将该更新应用于活动的bios设置。方法300还包括在340处存储该更新。因此,方法300示出了在执行方法300的系统的操作期间如何对bios变量进行有效改变。

图4示出与基本输入/输出系统(bios)安全相关联的系统400。系统400包括bios存储器410。bios存储器410可以存储活动bios变量集。bios存储器410还可以存储保存的bios变量集。保存的bios变量可以对活动bios变量集的已知有效先前版本进行描述。bios存储器410还可以存储排队的更新集,该排队的更新集对针对保存的bios变量集所做出的改变进行描述。

系统400还包括安全存储器420。安全存储器420可以存储保存的bios变量描述。保存的bios变量描述可以是例如保存的bios变量的副本、保存的bios变量的哈希等。

系统400还包括更新模块430。更新模块430可以验证对bios变量的更新。更新模块430还可以将该更新应用于活动bios变量。更新模块430还可以将该更新存储在bios存储器中。

系统400还包括bios安全模块440。bios安全模块可以检测活动bios变量集的成员与保存的bios变量集的相应成员之间的不匹配。可以在系统400的引导期间执行该检测。当检测到不匹配时,可以将排队的更新顺序地应用于保存的bios变量集以生成更新的bios变量集。当更新的bios变量集与活动bios变量集匹配时,可以对保存的bios变量进行更新以匹配活动bios变量集。当更新的bios变量集与活动bios变量集不匹配时,可以通过bios安全模块440来启动安全动作。

如何检测保存的bios变量集的成员与活动bios变量集的成员之间的不匹配可以取决于如何将保存的bios变量集的描述存储在安全存储器420上。另外,如何存储保存的bios变量集的描述还可以指示出什么安全动作是可行的。例如,保存的bios变量集的描述可以是保存的bios变量集的副本。因此,检测不匹配可以涉及将活动bios变量的每个成员与保存的bios变量集的副本的相应成员进行比较。此外,因为安全存储器包括保存的bios变量集的备份,所以安全动作可以包括从安全存储器中恢复保存的bios变量。然而,一些系统400可能没有可用于在安全存储器420内存储bios变量的副本的资源。在这些情况下,保存的bios变量集的描述可以包括保存的bios变量集中的一个或多个的哈希。在这些情况下,安全动作可以涉及将bios变量的未授权操纵警告给与系统400相关联的实体。该实体可以是例如系统400的用户、负责确保系统400的安全的逻辑等。

图5示出基本输入/输出系统(bios)500。bios500可以包括数据库510。数据库510可以存储活动bios变量集。数据库510还可以存储保存的bios变量集。保存的bios变量集可以对活动bios变量集的已知有效先前版本进行描述。数据库510还可以存储排队的更新集,该排队的更新集对针对保存的bios变量集所做出的改变进行描述。

bios500还包括修改检测模块520。修改检测模块520可以检测活动bios变量集的成员与保存的bios变量集的相应成员之间的不匹配。可以在对bios500进行操作的系统的引导期间执行该检测。可以通过将对活动bios变量集的成员进行描述的数据与对保存的bios变量集的相应成员进行描述的数据进行比较来检测不匹配。可以从安全存储器(未示出)中获取对保存的bios变量集的相应成员进行描述的数据。

bios500还包括修改批准模块530。修改批准模块530可以将排队的更新集应用于保存的bios变量集。这可以生成更新的bios变量集。当更新的bios变量集与活动bios变量集匹配时,修改批准模块530还可以对保存的bios变量集进行更新。当更新的bios变量与bios变量集的相应成员不同时,修改批准模块530还可以启动安全动作。

在一些示例中,bios500还可以包括bios更新模块(未示出)。bios更新模块可以接收对活动的bios设置集的更新成员进行更新的请求。然后,bios更新模块可以验证该请求,并且在成功验证之后,将该更新应用于更新的成员。然后,bios更新模块可以将该更新的副本存储在bios数据库中。

图6示出了示例系统和方法以及等同物可以在其中操作的示例计算设备。示例计算设备可以是计算机600,计算机600包括通过总线630连接的处理器610和存储器620。计算机600包括bios安全模块640。bios安全模块640可以单独地或组合地执行以上参考示例系统、方法等描述的各种功能。在不同的示例中,bios安全模块640可以被实现为用于将处理器可执行指令存储在硬件、软件、固件、专用集成电路和/或其组合中的非暂时性计算机可读介质。

指令还可以作为临时存储在存储器620中然后由处理器610执行的数据650和/或过程660被提供给计算机600。处理器610可以是各种处理器,包括双微处理器和其他多处理器架构。存储器620可以包括非易失性存储器(例如,只读存储器)和/或易失性存储器(例如,随机存取存储器)。存储器620还可以是例如磁盘驱动器、固态盘驱动器、软盘驱动器、磁带驱动器、闪存卡、光盘等。因此,存储器620可以存储过程660和/或数据650。计算机600还可以与许多配置(未示出)中的、包括其他计算机、设备、外围设备等的其他设备相关联。

应当理解,提供对所公开的示例的先前描述,以使本领域任何技术人员能够制作或使用本公开。对这些示例的各种修改对于本领域技术人员而言将是显而易见的,并且在不脱离本公开的精神或范围的情况下,可以将本文所定义的一般原理应用于其他示例。因此,本公开并不旨在限于本文所示的示例,而是符合与本文所公开的原理和新颖的特征相一致的最广范围。

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