单人给一个公司做网站费用,wordpress 标签 图片,比较知名的设计网站有哪些,设计师素材网站e文章目录 第六章 通过认证帧定时实现VulCAN的非once同步6.1 问题陈述6.2 方法概述6.3 动机和缺点6.3.1 认证帧定时隐蔽通信6.3.2 VulCAN的梵蒂冈后端Nonce同步的应用 6.4 设计与实现6.4.1发送方6.4.2 接收方6.4.3 设计参数配置6.4.4 实现 6.5 安全注意事项6.5.1 系统模型6.5.2攻… 文章目录 第六章 通过认证帧定时实现VulCAN的非once同步6.1 问题陈述6.2 方法概述6.3 动机和缺点6.3.1 认证帧定时隐蔽通信6.3.2 VulCAN的梵蒂冈后端Nonce同步的应用 6.4 设计与实现6.4.1发送方6.4.2 接收方6.4.3 设计参数配置6.4.4 实现 6.5 安全注意事项6.5.1 系统模型6.5.2攻击者简介-级别1:网络攻击者6.5.3 攻击者配置文件-级别2:软件攻击者6.5.4 已知Nonce机制威胁6.5.5 安全措施6.5.6 新的VulCAN攻击扩展梵蒂冈后端:消息抑制6.5.7中断可信执行 6.6 结论 第七章 结论7.1 贡献7.2 局限性和未来工作7.3 最后的想法 第六章 通过认证帧定时实现VulCAN的非once同步
鉴于在openmsp430硬件上利用中断驱动的 iat 的良好结果该机制可以明智地应用于更具体、更实际的上下文中。本章激励并讨论了 VulCAN 中应用程序和相应的认证流量之间的时序作为这种隐蔽带宽的具体来源并提出了将其用于非once同步的目的以减轻当前 VulCAN 设计中的性能和安全相关问题。从这个讨论中可以看出尽管隐蔽传输有缺点但它可以大大有利于现有的安全解决方案即使只暴露很少的补充带宽
6.1 问题陈述
在身份验证的通信中消息新鲜度保证的实现已被证明是一个非常重要的挑战[51,37]。大多数解决方案基于将一些新鲜度值或nonce关联到每个消息其唯一性是通过身份验证的先决条件。虽然有效但这种临时机制意味着在带宽消耗和安全保证之间难以权衡。实际上为每个消息显式传输nonce需要增加流量吞吐量这鼓励降低nonce大小。然而更大的nonce空间可以更有力地保证nonce的唯一性从而保证新鲜度因为有更多的唯一值可用。
因此许多身份验证协议[36,34]只显式传输部分nonce值而将其剩余部分隐式存储并由身份验证通信的参与者适当更新。这种方法对带宽使用和安全属性都有好处但是当这些隐式nonce段由于消息丢失、欺骗或组件重置而在参与者之间不同步时就会中断。 图6.1:VulCAN的vatiCAN后端基于IAT的非once同步的高级概述与原始 VulCAN 设计的差异用灰色表示
具体来说在VulCAN中实现了两种可选的身份验证协议即LeiA[36]和vatiCAN[34]它们都使用了这种部分隐式的nonce值。当前的VulCAN设计没有适当的措施来从隐式随机数不同步中恢复不涉及系统范围内的随机数广播如果这样的广播发生广播本身需要额外的带宽使用会丢弃有效的流量。在这种情况下vatiCAN 特别脆弱因为它假定了完全隐式的临时值因此在消息丢失的情况下它对临时去同步的抵抗力为零。相比之下LeiA 只隐式呈现nonce值的上半部分从而适应某种程度的nonce非同步。第2.2.5节更详细地讨论了源自这些非一次性同步机制的特定于vulCAN的挑战。
6.2 方法概述
从本质上讲本章提出了对VulCAN的梵蒂冈后端的扩展通过利用隐蔽带宽旨在加强其nonce机制从消息丢失中恢复的能力。本节通过关注它与当前VulCAN设计的不同之处对这种方法的工作原理进行了高层次的概述。图6.1作为该方案的说明性指南并指出了原始VulCAN的结束位置以及该扩展的开始位置。为了避免混乱本文和图形概述中都省略了几个步骤但这些步骤将在本章的其余部分进行更详细的讨论。
在原始的VulCAN设计中通过VulCAN认证的连接从发送方到接收方的消息传输过程如下。首先发送方传输手头的消息或应用程序消息。然后它使用本地nonce计算一条消息认证码(MAC)。最后它传输带有该MAC的第二条消息称为身份验证消息。在接收到应用程序消息后接收方使用其本地nonce计算出应用程序消息的MAC并将其与随后接收到的认证消息中携带的MAC进行比较。如果两个mac相等则认证通过接收方接受该应用消息;否则则丢弃该应用消息。
在此VulCAN扩展中发送方在发送身份验证消息之前引入延迟这是其本地nonce值的N个最低有效位的编码。接收方像以前一样继续但是监视消息对的间隔到达时间。如果使用其本地nonce进行身份验证失败它不会立即丢弃手头的应用程序消息。相反它用从获得的到达间隔时间中解码的位替换其本地nonce的N个最低有效位然后使用该新nonce计算不同的MAC并使用该nonce重新进行身份验证。
因此这种方法将第4章和第5章中讨论的IAT通道迁移到VulCAN的实际上下文中。更具体地说这里使用第5.4节的中断驱动实现因为它被评估为提供最高的可靠性。后者在应用程序消息之间的计时中携带其隐蔽的有效负载而本实例利用了它们相对于其身份验证帧的单独计时。除此之外它们还采用了相同的秘密通信机制在这种方法中这种机制被用于VulCAN的梵蒂冈后端非即时同步的特定目的。
6.3 动机和缺点
本节激发了第6.2节中提出的方法的本质更具体地说一方面是在隐蔽传输中使用身份验证帧定时另一方面是在VulCAN的梵蒂冈后端将隐蔽带宽应用于非once同步。这种区别是明确的以强调当超越本文讨论的特定方法的上下文时两者如何能够独立于另一方受益于VulCAN设计。
6.3.1 认证帧定时隐蔽通信
透明度。VulCAN库完全控制应用程序消息的发送和接收以及身份验证消息。因此利用这种隐蔽带宽所需的所有与时间相关的操作都可以嵌入到VulCAN库中而不会影响其用户界面。 然而应该注意的是当利用身份验证帧时间时使用VulCAN的实时方面会受到影响。更具体地说由于接收端的VulCAN库只有在经过身份验证后才将应用程序消息传播给接收端的高级逻辑因此延迟身份验证帧会延迟应用程序帧的处理。因此由于这些时间考虑这种利用不能被认为是完全透明的。
向后兼容性。由于原始的VulCAN库在发送和接收CAN流量时不依赖于任何身份验证帧定时管理因此这里描述的隐蔽传输仅仅是对其现有功能的扩展并且在启用它时不会破坏与硫化节点的兼容性。此外与原始VulCAN相比它没有引入任何额外的CAN总线负载而只是在发送端由于有效负载到时间编码而增加了额外的计算负载以及在接收端进行反向计算和到达时间监控。 然而在功能上依赖于CAN数据包计时的应用程序取决于它们对这些计时偏差的敏感性当它们的硫化CAN节点转换到使用此扩展时可能会中断因为它的实时后果已经在前面的透明度参数中描述过。因此这种方法不提供绝对的向后兼容性。
应用程序的独立性。尽管在第4章和第5章中介绍的IAT通道要求其底层应用程序使用周期性通信但这种方法中使用的IAT通道没有施加这样的约束。由于隐蔽信息不是在后续应用消息之间通过定时传输而是在每个单独的应用消息及其相应的认证帧之间通过定时传输因此这里使用的IAT信道不依赖于应用间消息定时从而减轻了前几章中讨论的信道所带来的通信周期性先决条件。 与前面提到的论点类似必须在应用程序独立性的声明中引入细微差别。实际上应用程序属性可以限制这个IAT通道的带宽因为身份验证帧不能延迟到后续应用程序消息之后而不丢失这些消息。因此高流量的VulCAN应用程序提供较低的隐蔽带宽在极端情况下为零。
6.3.2 VulCAN的梵蒂冈后端Nonce同步的应用
2 N 长度消息丢失突发恢复。显式(虽然隐蔽)传输N个最不重要的本地nonce位允许在身份验证消息到达时成功桥接发送方和接收方的本地nonce值之间最大为2n的间隙。出于安全考虑如第6.5节所述只有接收方的随机数落后于发送方的随机数才能恢复这在梵蒂冈相当于从消息丢失中恢复。
实际上梵蒂冈保证单调递增的本地nonce值这些值在发送方(接收方)成功的消息传输(到达)时更新这意味着发送方较高的本地nonce意味着一些传输没有相应的到达。此外在每次成功传输/到达时梵蒂冈将本地nonce值增加1,nonce间隙为2n对应于丢失的后续消息。相比之下当前的VulCAN设计完全牺牲了消息丢失恢复以便在其梵蒂冈后端抵御重放攻击如2.2.5节所述这种方法可以部分减轻这种攻击。
6.4 设计与实现
本节将讨论通过在VulCAN的梵蒂冈后端进行身份验证帧定时操作来管理非once同步的建议方法作为第6.2节中给出的高级概述的详细阐述。包括发送端和接收端逻辑每个逻辑都由图形表示支持。该设计的灵感来自于为AUTOSAR提出的基于计数器的非once同步机制[37]主要是在接收端处理部分隐式传输的非once。进一步给出了关于这种设计的配置的一些考虑以一种比前面6.3节中使用的更实际的方式来说明这种方法的动机和缺点。最后对该设计的实际实现进行了讨论。
6.4.1发送方
在原始的VulCAN设计中发送节点在每次经过认证的消息传输中首先发送当前的消息然后计算其对应的MAC值并毫不延迟地将该值作为第二条消息的有效载荷传输。
在这种可选的nonce同步机制中发送方将用于MAC计算的nonce的N个最低有效位编码为一个传输间隔时间然后通过延迟该认证有效载荷的传输来建立。在这种设计中延迟是由执行适当长度的忙碌等待循环引起的。ITT编码进一步通过将要传输的N个nonce位所形成的数字乘以时序间隔δ来完成。图6.2图形化地表示了在发送端执行的逻辑与原始VulCAN设计不同的步骤用灰色表示。
6.4.2 接收方
在原始VulCAN设计中认证通信通道上的接收节点首先接收应用程序消息然后使用其本地nonce值计算期望的MAC值然后接收相应的认证帧。如果后者携带的有效载荷等于预期的MAC则身份验证成功并将应用程序消息继续传递给接收方的高级逻辑。否则该应用程序消息将被丢弃。
该设计的第一个扩展主要驻留在CAN驱动软件中并容纳IAT值的集合。首先将一个循环IAT缓冲区添加到接收器的软件中该缓冲区保存应用程序消息和身份验证消息的到达间隔时间CAN驱动程序软件和VulCAN库都可以访问该缓冲区。IAT值的注册被嵌入到CAN驱动软件中使用一种类似于5.4节IAT通道实现的中断机制。在每个CAN消息到达时触发一个中断其ISR需要测量其相对于前一个到达的时间并将该值存储在IAT缓冲区中。该ISR包含在附录A中其中显示它仅包含5行C代码。此外在接收机的软件中增加了一个IAT索引即由这个扩展的CAN驱动程序在消息到达时更新以表示IAT缓冲区中最近注册值的位置。与IAT缓冲区一样该索引可以由VulCAN库和这个扩展的CAN驱动程序访问。 图6.2:在VulCAN的梵蒂冈后端利用身份验证帧时间进行非once同步时的发送端消息传输流程图 图6.3:在VulCAN的梵蒂冈后端利用身份验证帧时间进行非once同步时的接收方消息接收流程图与原始VulCAN设计的差异用灰色表示。N表示秘密传输的nonce位的数量δ表示使用的IAT值粒度。而是指一个保存IAT值的缓冲区。
与原始VulCAN设计的差异用灰色表示。N表示秘密传输的nonce位的数量δ表示使用的IAT值粒度。
其次VulCAN库本身的梵蒂冈后端被扩展为针对消息身份验证失败的额外操作。在这种情况下首先根据存储在IAT缓冲区中的最新身份验证帧的时间构造一个新的暂定nonce并通过将IAT索引添加到该IAT缓冲区的起始地址来定位到内存中。在构造新的nonce时首先通过将相应的IAT值除以δ(参见第6.4.1节)获得N个nonce位Ndec然后与接收器本地nonce值的N个最低有效位Nrec进行比较。如果Ndec超过Nrec则接收器的本地非once最低有效位被Ndec替换。否则在替换完成之前该局部nonce值的上32−N位部分加1。
基于新的nonce在接收端计算第二个MAC值然后将其与接收到的MAC值进行比较。如果它们相等则在第二次尝试时身份验证成功并且将手头的应用程序消息传播到接收方的应用程序逻辑。但是如果身份验证再次失败则将接收方的nonce设置为发生第一次身份验证失败的原始本地值并且丢弃处于危险中的应用程序消息。
图6.3说明了这些接收端操作用灰色表示了对原始VulCAN实现的补充。在概述中显示的执行流分支指的是中断驱动的IAT值注册方法如第5.4节中实现的也就是说注册是在嵌入在CAN驱动软件中的中断服务例程的执行中完成的。
6.4.3 设计参数配置
第6.3节介绍了这种方法的动机和缺点。到目前为止在配置设计参数时存在的权衡尚未量化本节将对此进行描述。
隐式传输的nonce位的数量(N)。通过身份验证帧定时隐式传输的最不重要的nonce位的数量N需要仔细考虑底层应用程序的属性以及针对消息丢失的目标健壮性。 N的值越高意味着在一个身份验证帧延迟中编码的比特越多这意味着可能出现更大的延迟。实际上编码更多的比特需要更多的ITT/IAT值的变化并且在编码可能性之间给定固定的定时间隔δ这意味着需要建立更大的延迟(参见第6.4.1节)。正如第6.3节所讨论的这种延迟可能会破坏VulCAN应用程序子集的向后兼容性。然而正如第6.3节所解释的那样只要2n的消息丢失突发就可以被这个提议的方案克服。从这个角度来看更高的N值是可取的这在确定N时引入了向后兼容性和消息丢失健壮性之间的权衡。
IAT编码粒度(δ)。δ值表示ITT/IAT值的粒度即区分不同非once位编码的时序间隔。在定义此值时还需要在通道可靠性和向后兼容性之间进行权衡。 较高的δ意味着IAT值可能会受到(攻击者)总线噪声的更广泛影响然后导致接收器将其解码为意外的非once位这意味着该机制比使用较低的δ值时更可靠。先前IAT通道实现的评估(第4.3节5.3节5.4.3节)证实了这一说法。然而这样高的δ值会导致更大的认证帧延迟这意味着会出现6.3节中提到的向后兼容性问题。因此在配置此设计时δ的选择是一个重要的考虑因素。
6.4.4 实现
利用MCP2515 [25] CAN控制器在启用Sancusenabled的MSP430[46]硬件上实现了这种非once同步策略。现有VulCAN库的梵蒂冈后端相应扩展了非once同步其MCP2515驱动程序2用于CAN到达中断处理以及IAT缓冲区管理。总之这些附加功能将本节中介绍和讨论的执行流付诸实践。附录B讨论了评估该实现的场景以及相应获得的结果。
此实现可在https://github.com/Stienvdh/vulcan/tree/iat-nonce上公开用于在VulCAN中合并上游。
6.5 安全注意事项
由于nonce机制已经用于安全目的这种nonce同步方法经过精心设计不会损害安全保证也不会通过使用该方案扩展而扩大VulCAN的攻击面。从这个角度来看本节将讨论考虑到的系统模型和攻击者配置文件以及为防止后者比原始VulCAN设计中更有效而采取的安全措施。
6.5.1 系统模型
图6.4显示了讨论这种非即时同步方法的安全属性时所考虑的系统模型。它由一个发送方和一个接收方组成它们都是硫化ECU并通过一个经过认证的连接进行通信该连接建立在CAN总线上该总线也可以被第三个恶意ECU访问。由于此nonce同步方案是作为VulCAN的扩展而制定的因此假定发送方和接收方都通过在受信任的Sancus飞地中执行的适当扩展的VulCAN库来管理经过身份验证的CAN通信。它们各自的CAN驱动软件和CAN收发器硬件位于可信环境之外因此被认为处于攻击者的控制之下。接收器ECU还被认为提供了一个非可信定时器外设用于测量认证帧时间以及一个存储这些时间的IAT缓冲区。
6.5.2攻击者简介-级别1:网络攻击者
正如前面描述的CAN网络攻击所证明的[12,35]并在2.1.2节中详细阐述CAN网络本质上提供的安全性很低。通过扩展建立在CAN通信基础上的时序通道例如这里提出的时序通道容易受到多种安全威胁。这种1级攻击者模型认为恶意方可以通过远程代码注入[27]或物理车辆访问在连接到can总线的ECU上执行任意代码而基于vulcan的身份验证通信是通过can总线进行的但不参与其中。它的位置相应地在图6.4的系统模型插图中以流氓ECU的形式表示和指示。
这个1级攻击者可以成功地影响这种方法中使用的时序通道如下所示。请注意这些操作属于IAT传输本身而不是其底层CAN通信。然而两者显然是相互依赖的这导致大多数IAT通道攻击者的能力遵循第2.1.2节中列出的CAN网络攻击者能力。
A1:窃听。由于CAN采用广播通信而不强制执行总线访问控制因此攻击者可以窃听和记录数据包的间隔到达时间从而可以窃听所有的IAT信道有效负载。然而由于nonce值可以在不影响安全保证的情况下被披露(参见第2.2.5节)因此这种攻击者的能力不会造成任何伤害因此将不再关注。然而所有CAN流量的披露确实为攻击者提供了调度和/或CAN网络架构知识这可能是其他攻击者能力的先决条件[12]。
A2:消息操作。攻击者可以通过多种方式延迟构成IAT值的CAN流量。例如注入高优先级虚拟帧或者定时的0位传输可能会导致合法的can传输由于其仲裁机制的性质而延迟(参见第2.1.1节)或者目标节点可以暂时强制进入总线关闭模式[12,35]。因此所有的IAT值都容易被修改。请注意攻击者可以通过分别延迟身份验证和应用程序帧来增加或降低IAT值这意味着攻击者可以导致任意IAT值的形成。
A3:删除消息。为了从这个隐蔽的通信通道中删除IAT有效负载相应的CAN数据包将被删除例如通过CAN总线泛洪[12]或选择性DoS攻击(参见2.1.2节)。攻击者没有办法在不抑制相应CAN帧的情况下从这个时序通道中删除IAT有效负载因为它们的存在不可避免地会被检测到并且它们的时序因此被记录下来。
A4:插入消息。与A3类似通过在目标can总线上插入两个相应的can帧可以将IAT值插入到该IAT通道中。由于1级攻击者可以自由访问该总线因此她可以在总线上放置任意两条具有任意到达时间的消息。
请注意那些插入的消息需要具有正确的ID以便它们的到达间隔时间被硫化接收节点注册因为第5.4.1节中描述的消息ID屏蔽和过滤也包含在此设计中。更具体地说VulCAN规定为其相应的身份验证帧使用等于应用程序消息ID加1的消息ID。为了使IAT值插入工作因此第二个插入消息的ID必须等于第一个消息的ID加1并且后者必须等于目标VulCAN通信通道使用的ID。
6.5.3 攻击者配置文件-级别2:软件攻击者
超越1级配置文件VulCAN[51]假设一个更强大的攻击者能够在所有未受sancus保护的软件模块中任意执行代码。因此它既可以像一级攻击者那样控制非硫化节点也可以控制硫化节点上的非封装模块。这里考虑的系统模型像VulCAN设计一样明确地将CAN驱动程序软件从其可信计算基础中排除这意味着驱动程序操作被认为是不可信的并且处于二级攻击者的控制之下。使用该驱动程序逻辑将所有CAN流量传播到VulCAN软件超越它会使攻击方处于理想的中间人位置如图6.4所示。
同一系统模型说明了Level 2攻击者如何进一步控制计时器外设在接收端测量身份验证帧时间这导致其测量结果被认为是不可信的。此外它的IAT缓冲区也处于2级攻击者的控制之下使得其内容不可信。最后第6.4.2节讨论了CAN驱动软件如何负责将一个不可信的索引更新到该IAT缓冲区以定位最近的IAT值。这些考虑因素导致了下面列出的攻击者能力。请注意2级攻击者也具有A1-A4能力因为它比1级攻击者更强大。
A5:秘密的信息操纵。与第1级概要文件中讨论的IAT消息操作能力A2相反第2级攻击者能够在不入侵所涉及的CAN总线的情况下改变IAT值。在接收端它可以接管can驱动软件、IAT缓冲区内容或定时外设从而导致注册任意值并将其用作所谓的身份验证帧定时。
A6: IAT缓冲区位置操作。CAN驱动软件在图6.4所示的系统模型中被认为是不可信的并且需要对IAT缓冲区进行写访问。因此该缓冲区被放置在未受保护的内存中因此处于2级攻击者的控制之下。使用这个扩展的VulCAN库从该缓冲区读取IAT值这种情况将导致可信软件解除对不可信内存位置的引用。由于受信任模块被授予对私有和公共内存位置的访问权限二级攻击者可以在不破坏VulCAN功能的情况下将该IAT缓冲区部分或全部放置在enclave内存中。依赖于IAT值和攻击者可观察到的VulCAN执行属性例如身份验证的通过/失败随后可能泄露受保护的数据因为在这种情况下这些数据被用作所谓的IAT值。
A7: IAT索引操作。接收器的IAT缓冲区的索引表示最近收集的IAT值的位置由CAN驱动程序软件更新因此处于2级攻击者控制之下以及用于可信VulCAN代码中的IAT值检索。因此攻击者可以通过提供相应的索引试图使受信任的代码解除对任意(可能受保护的)内存位置的引用。此外与A6功能类似攻击者可以将IAT索引定位在内存中的受保护位置并从解引用该位置的受信任VulCAN库推断出私有信息。
6.5.4 已知Nonce机制威胁
由于这里描述的IAT通道用于Nonce同步因此必须仔细设计以便之前讨论的攻击者能力不能用于针对该Nonce机制的恶意活动因此它旨在建立的新鲜度保证。以下攻击场景描述了nonce机制通常如何作为攻击媒介以及这些威胁如何在原始VulCAN实现中呈现出来。
重播攻击。通过记录CAN流量然后在同一总线上重放它可以欺骗重用nonce值的应用程序使其接受恶意的、重放的流量为真实的。这样预期的新鲜度保证就被打破了因为消息可以被多次接受和处理。这种情况通常被称为重放攻击。 VulCAN的设计承认用于消息认证的梵蒂冈协议特别容易受到高级重放攻击[51]并通过显式禁用其梵蒂冈后端中的非once重用来减轻这种威胁代价是消息丢失恢复如第2.2.5节详细解释的那样。
人工nonce增量。通过增加接收方认为发送方使用的nonce而没有收到有效身份验证的消息来正确地导致这样的增加后续发送方消息在该接收方的身份验证失败因为它们的MAC是使用与该接收方期望的不同的nonce计算的。如果仔细实现这种攻击还可能导致接收方的非once重用从而导致重放攻击。 通过在两个VulCAN后端使用单调增加的随机数以及在认证帧计算中使用秘密会话密钥VulCAN攻击者[51]只能以重播攻击的形式发起这种增量攻击如上所述。实际上由于假定它们不拥有所使用的会话密钥因为它驻留在受sancus保护的内存中因此它们无法为消息和nonce值构建有效的身份验证有效负载而底层VulCAN应用程序已经传输/使用了这些值。然而构造有效的身份验证有效负载是在VulCAN中导致nonce增量的唯一可能方法因为nonce管理是在封闭执行中完成的。
6.5.5 安全措施
这种提议的非once同步方法的设计目的是不损害VulCAN的安全属性即在面对1级和2级攻击者时不会扩大其对重播攻击和人工非once增量的脆弱性如第6.5.4节所述。下面列出的所有安全措施都是在一个受保护的Sancus模块中执行的因为它们形成了图6.4中系统模型中所描述的VulCAN飞地的扩展。
M1: ITT (IAT)编码(解码)。在这里描述的机制中nonce位和ITT/IAT值之间的编码和解码是一个简单的乘法和/除以参数δ。在不那么强大的攻击者配置文件中这种方法可以被设计为提供额外的安全保证但由于攻击者可以窃听并任意操纵所有IAT值(参见第6.5.4节)因此这种设计在算法上尽可能简单是合理的。
M2:单调递增的随机数。该方案要求每当使用接收方的本地nonce值进行身份验证失败时使用通过解码相应的身份验证帧定时构造的不同的nonce进行第二次尝试(参见第6.4.2节)。该构造明确地设计为只产生高于原始本地值的随机数即当接收方因为任何身份验证尝试成功而更改其本地随机数值时保证它严格高于其原始本地随机数值。
M3:认证失败时延迟nonce提交。如果使用基于IAT的nonce进行身份验证重试失败则所涉及的接收方的本地nonce将重置为其初始值该值用于第一次身份验证尝试。因此只有在使用接收方的原始或iatf构造的nonce值计算相应的身份验证帧时本地nonce值才会增加。
M2和M3的组合要求攻击该nonce机制的攻击者拥有一对有效的应用程序和认证消息并且使用严格高于目标通信通道中接收方的nonce来计算。如果没有这样的一对它在这个IAT通道上的修改、删除和插入能力就不足以发起基于这个VulCAN扩展的重播攻击或nonce增量攻击。
只有当涉及的攻击者能够为应用程序消息构造自己的有效身份验证框架或者能够重播记录的消息对时有效的消息对才可用。在硫化节点上MAC计算是在受保护的Sancus模块中完成的攻击者(Level 1或Level 2)无法访问该模块因此无法进行正确的身份验证帧计算。第二种重放记录流量的方法在VulCAN中已被禁用[51]并且由于针对这种非once同步方法的重播攻击的任何机会都与针对原始VulCAN通信发起重播攻击的机会相一致因此该方案不会引入重播攻击漏洞。
因此M1, M2和M3一起提供了这种非once同步方案对1级攻击者的弹性(参见第6.5.2节)。实际上它的任何功能都不能生成有效、有效的消息身份验证对。2级攻击者(参见第6.5.3节)也没有这种能力但它对受信任的梵蒂冈代码读取的IAT缓冲区和IAT索引的控制导致对安全措施M4和M5的额外需求。
M4: IAT缓冲区验证。攻击者能力A6描述了图6.4的系统模型如何导致可信代码解引用Level 2攻击者控制的内存位置这是泄漏封闭内存的已知攻击向量[53]。因此该缓冲区的验证在VulCAN初始化时完成。更具体地说检查它是否完全位于包围内存之外。作为这项工作的一个小贡献目前在Sancus中验证缓冲区是否完全位于受保护内存之外的功能不足被扩展为遵循良好实践[53]。此代码可在https://github.com/Stienvdh/sancus-compiler/tree/buffer-check上公开用于合并Sancus的上游。
M5: IAT缓冲区索引验证。攻击者能力A7造成了与M4中描述的可信代码解除引用不可信内存位置相同的威胁在本设计中通过验证IAT索引在可信VulCAN代码解除引用时具有0和IAT缓冲区长度之间的值来减轻这种威胁。此外该索引本身被验证位于受保护的内存之外。总之这些测量的安全性并不能阻止恶意方执行其功能A1-A7但可以减轻其可能的有害后果。 实际上以A7为例2级攻击者仍然能够将IAT索引更改为任意值但它不能利用这种能力来处理由于M5导致的可信内存泄漏。同样由于A2和A5, IAT值仍然可以被操纵但随后的有效重放攻击被安全措施M2和M3的组合禁用。
6.5.6 新的VulCAN攻击扩展梵蒂冈后端:消息抑制
尽管在此设计中采取了安全措施但它允许对VulCAN的梵蒂冈后端进行涉及消息抑制的新颖攻击。本小节介绍了一个具体的攻击场景并提出了有效的缓解措施。
攻击的场景。这种方法的动机使以前在VulCAN的梵蒂冈后端无效的消息抑制攻击场景成为可能。它与新鲜度保证没有直接关系但是当启用这个建议的非once同步策略时Level 1和Level 2攻击者都可以执行。具体地说由于这种方法允许从消息丢失中恢复因此从本质上也可以从故意的消息删除中恢复。
更具体地说攻击者能够一次选择性地抑制多达2n个后续CAN应用程序消息而所有其他消息都在接收端正常处理。这种攻击会损害车辆安全例如当故障组件的警告消息被抑制时接收方在不知情的情况下继续正常执行而当接收到这些被抑制的警告时它会启动一些反应性操作序列。相比之下在原始VulCAN设计中使用梵蒂冈后端意味着在消息抑制之后丢弃所有CAN流量(参见6.1节)。
请注意在VulCAN的LeiA后端(不受此方法影响)中此消息抑制攻击也是启用的因为它明确传输nonce值的下半部分提供与此扩展的梵蒂冈后端中形成此攻击向量相同的消息丢失阻力。
缓解。由于接收方无法区分由消息丢失或消息抑制引起的本地非once不同步因此无法检测到要执行的这种攻击场景。此外防止针对CAN的大量拒绝服务攻击[12,18,35]这使得有意的消息抑制在当前的CAN设计中远远无法实现。因此如果在其上下文中有必要则由使用此扩展VulCAN库的应用程序来增强自身对消息抑制的抵抗力。具体地说这样的应用程序可以在其CAN数据包中包含一些逻辑序列号以便能够检测通过接收端VulCAN库到达的消息流中的丢失数据包。
6.5.7中断可信执行
这种非once同步方法追求最大的认证帧定时精度是建立在5.4节讨论和评估的中断驱动的到达时间注册方法之上的。更具体地说图6.3显示了在接收端如何在CAN消息到达时触发中断在其中断服务例程中其相对于最近到达的帧的时间被注册。在图6.4所示的系统模型中这对应于接收器的CAN控制器中断接收器ECU上的执行并将控制转移到其CAN驱动模块。
由于接收器ECU同时运行可信和不可信模块因此该机制应该能够在不损害安全保证的情况下中断这两个模块。有关的ISR嵌入在不受信任的CAN驱动程序软件中这意味着中断不受信任的执行不会带来任何安全问题。相比之下受保护的飞地中断涉及退出和重新进入可信上下文如果实现不当这确实会影响安全保证
基于中断的保护模块攻击。在Sancus[31,32]以及其他tee[23]中对飞地进入和退出本身进行了深入的研究并利用它们来支持可中断飞地[9]。然而Nemesis攻击[54]已经证明了Sancus和Intel sgx保护模块的中断延迟会泄露有关封闭指令序列的信息并通过扩展封闭数据(如密码和PIN码)泄露信息。在并发研究中SGXlinger[14]显示了Intel SGX中的中断延迟以泄漏有关封闭执行的更粗粒度的信息。因此如果在可信执行环境中未启用以下缓解措施则此处假设的系统模型中的接收器ECU的中断将被视为容易受到类似nemesis的侧通道攻击。
缓解1:不可中断的飞地。考虑到这些已知的可中断enclave漏洞一种天真但有效的对策是在enclave执行期间禁止中断就像最初的Sancus设计[31]一样。正如Busi等人[5]所指出的那样这种方法冒着无限的enclave执行风险危及可用性保证并限制了enclave应用程序的功能。 在这种nonce同步机制的特定上下文中当enclave中断被禁用时即使没有恶意行为者其正确的功能也确实会被破坏。实际上当在可信执行期间禁用中断时身份验证帧定时注册可能会延迟到enclave退出之后从而可能导致严重的准确性损失。实际上在enclave执行期间的任何时间到达的消息都被注册为发生在enclave出口时而不考虑它们的确切时间。根据受保护的模块软件属性这种准确性的损失可能会使这种非once机制变得无用也就是说在防止消息丢失的弹性方面对当前的VulCAN设计没有有意义的附加价值。
缓解措施2:消除侧信道。由于可中断飞地攻击主要利用由中断延迟测量产生的侧通道因此在保留飞地可中断性时它们的缓解必须明确地消除此类信息泄漏。Busi等人[5]提出了一种可证明安全的可中断飞地设计依靠完全抽象来证明其安全保证。简而言之他们的方法通过中断延迟填充扩展了现有的可中断飞地设计这样攻击者就无法从延迟测量中获得任何信息。
认证帧定时效果。如图6.3所示在这种设计中应用程序和身份验证帧到达接收器ECU时都会触发中断在此基础上它们的时间被记录在该中断的处理中。将控制转移到中断服务例程时产生的开销取决于是否中断了受信任的或不受信任的执行因为前者上下文需要退出受信任的enclave而后者不需要。然而由于到达间隔时间是在相关的ISR中测量的只要应用程序和身份验证消息到达中断不受信任的执行或受信任的执行存储在接收方IAT缓冲区中的值就不会受到这种可变性的影响除非在后一种情况下可能出现的nemesis -可利用的变化。否则当分别只有应用程序帧或其对应的身份验证帧中断一个飞地时它们的间隔到达时间将被注册为较低或较高。这些考虑在附录B中进行了评估和确认。 除了IAT效应之外接收端执行中断的性质还会影响启用此处提出的VulCAN扩展所产生的计算延迟量正如第6.3节中反复指出的那样这可能会破坏对实时敏感的VulCAN应用程序的向后兼容性。
6.6 结论
本章讨论了如何利用VulCAN的梵蒂冈后端中的身份验证帧定时进行非一次性同步。提出这种方法的动机在于当前VulCAN设计中与性能和安全性无关的挑战以及从隐蔽通信中获得的向后兼容性和透明性的好处。该方案对用于认证帧计算的nonce值的N个最低有效位进行编码用于该帧的定时。当身份验证在接收端失败时该时间将被解码为构造一个可选的nonce值并使用该值重新尝试身份验证。因此当正确建立IAT值时可以恢复多达2n的后续消息丢失而原始VulCAN设计的梵蒂冈后端则为零。
由于这种方法涉及到nonce(通常是出于安全目的而安装的)因此对这种方法的安全含义进行了彻底的研究。定义了两种攻击者模型其中一种更强大与原始VulCAN设计中考虑的攻击者模型等效。接下来安装了适当的安全措施以提供针对两种攻击者配置文件的弹性其讨论的结论是此扩展不会扩大VulCAN的攻击面除了引入消息抑制攻击向量之外VulCAN的替代LeiA后端已经容易受到攻击。最后由于该方法建立在中断驱动的时间通道上因此考虑了不同的enclave中断方法对中断可信执行的安全性和延迟的影响并针对该特定的VulCAN扩展进行了评估。
第七章 结论
在这项工作开始时提出的问题陈述解决了像CAN这样的车载网络如今如何面对强大的远程攻击者以及现有的安全措施如何有效地违背了这种安全关键汽车环境的强大性能要求。在一种资源密集程度较低的保护CAN通信的方法中TACAN[58]建议重新利用通常作为攻击向量[54,17,22]的侧信道通过使用它们提供的补充带宽来适应安全措施而不增加网络负载从而进行防御而不是伤害。
在这篇硕士论文中发现这种隐蔽通信提供了相当大的带宽和可靠性以及与现有安全实现结合时的实质性好处同时表现出很大程度的向后兼容性和透明度。
最后一章首先重申在这方面所作的贡献然后将其剩余的局限性与今后可能开展工作的领域联系起来。
7.1 贡献
下面列出了本硕士论文的主要贡献。
——对CAN中的隐蔽带宽源进行了分析并将其结果合成为矩阵结构。第3章讨论了用于确保这种探索的结构化方法及其结果的方法。
——对CAN中基于时序的隐蔽通信进行了定量评估并通过数据包到达间时间通道的几个实际实现实现。第4章考虑了Java中的概念验证实现其性能和可靠性通过第5章中讨论的低级原型得到了改进。第5.4节还展示了如何扩展该原型以在CAN到达时触发中断从而获得更高的定时精度从而进一步增强该信道的性能和可靠性。这个中断驱动的原型在https://github.com/Stienvdh/Sancus-IAT上公开发布。
——第6章提出了对现有VulCAN[51]设计的CAN消息认证的扩展。它通过扩展其非once同步方案部分解决了VulCAN当前的梵蒂冈[34]后端所面临的可用性问题并通过利用第5.4节中中断驱动的IAT通道原型中提供的隐蔽传输来确保向后兼容性和透明性。该方法的安全含义以及中断可信Sancus enclaves[31]对延迟和安全性的影响在第6.5节中进行了评估。该讨论显示了该扩展的精心设计如何不会损害VulCAN的原始安全保证除了在其梵蒂冈后端引入消息抑制攻击向量之外该攻击向量已经存在于其替代LeiA[36]后端。
这个扩展的实际实现是公开的可以在https://github.com/Stienvdh/vulcan/ tree/iat-nonce上合并VulCAN的上游。
7.2 局限性和未来工作
本节承认本硕士论文的局限性及其贡献并利用这些局限性提出研究本工作研究假设的可能未来方向。
CAN的限制。几个隐含的固定变量存在于整个硕士论文的工作中。例如在CAN的特定上下文中研究了隐蔽带宽的使用而在替代网络协议中也可能存在其他有趣的机会。其中一个这样的协议是CAN[60]它形成了CAN的扩展并且基于利用大多数嵌入式设备相对于其CAN总线速度的较高时钟频率在其超频周期内进行额外的CAN传输。这种情况可以允许更复杂的隐蔽信道例如基于这种超频时间间隔内传输的定时特性。这种方法可以允许类似于第5章中提出的定时通道而不需要其底层通信的周期性先决条件因为这种特定类型的定时信息可以包含在每个单独消息的传输中。
IAT通道原型技术依赖。第5章中提出的基于时序的隐蔽通信原型以及5.4节中讨论的中断驱动增强其应用逻辑绑定在MSP430硬件上并依赖于MCP2515控制器来调节CAN通信。推而广之该原型的评估结果是针对这些技术的。同样这个原型设计中包含了对计算延迟的几个修正如第5.1.3节所述这显然也依赖于技术。如果这个时间通道原型因此被移植到不同的硬件在未来的努力重新考虑其性能可靠性和配置是应有的。
IAT通道设计缺陷。在第四章和第五章中讨论和评估的到达间时间信道在设计上有一个相当微妙的缺陷。实际上这个IAT通道操纵每个消息与其前一个消息之间的时间间隔以便在此间隔与预定义的固定值的偏差中对有效负载进行编码。尽管这种方法在暴露隐蔽带宽方面是有效的但它可能对消息延迟产生相当大的长期影响。实际上消息的延迟(远征)相对于之前发送的消息意味着所有后续流量的绝对大小相等的延迟(远征)以保留后者假定的到达间定时属性。当相对计时的减少和增加以相同的速率发生时这种长期延迟得到补偿这降低了这种考虑的严重性。然而通过消除这一缺点可以改善IAT信道的可用性例如通过仅在每个其他消息的相对定时中编码隐蔽有效负载并使用下一个来抵消其对长期消息延迟的影响或者通过改变在这个定时信道中编码隐蔽有效负载的方法。
VulCAN扩展技术依赖。与前面讨论的IAT通道原型的局限性类似第6章中提出的VulCAN扩展的实现及其结果在附录B中显示是高度技术特定的。例如它的设计假定了CAN到达的中断机制这在其他硬件上可能不可用。第二个例子是第6.5.7节中对中断可信执行的考虑并在附录B中进行了量化这些考虑是专门针对Sancus enclaves表达的对于其他tee可能会有很大的不同[23]。
VulCAN扩展适用性限制。第6章中提出的VulCAN扩展具有相当有限的范围因为它是建立在VulCAN特定的消息认证方法上的该方法将每个消息与随后的认证帧配对控制两者的传输和到达并具有对认证流量透明的用户界面。因此所建议的方法通常不能移植到其他消息身份验证框架。此外此扩展的适用性仅限于VulCAN的梵蒂冈后端使得其LeiA对应物所面临的问题无法解释。然而建议的设计独立于它们的使用注册消息计时如果出现合适的应用程序上下文这也可能使它们有利于LeiA后端。 尽管定时注册是在不考虑其使用的情况下完成的但当前的方法无法启用隐蔽带宽的应用程序上下文因为调节认证帧定时通信的发送端逻辑目前嵌入在VulCAN代码本身中。在这种情况下未来的工作可以扩展VulCAN的用户界面以允许在传输中规范认证帧定时参数从而实现该VulCAN扩展所暴露的隐蔽带宽的通用使用。
VulCAN以外的应用。本文讨论了隐蔽传输在VulCAN消息认证方法中的实际应用。然而第3章中讨论的隐蔽通道是为CAN通信制定的这意味着它们也可以使VulCAN以外的应用领域受益。此外它们并不局限于用于消息身份验证或其他安全机制因为它们提供了可用于任何目的的补充带宽。因此当嵌入到CAN驱动软件中时它们甚至可以作为CAN通信本身的扩展来实现而不是合并到现有的应用程序和设计中。因此它们可以为CAN应用程序中的任何现有带宽短缺提供向后兼容、透明的缓解。
7.3 最后的想法
当反思这篇硕士论文的结果以及它在比问题陈述更广泛的背景下的意义时几个最终结论出现了。首先它展示了侧通道(攻击者在从受保护的内存中提取可信信息时使用的附带传输形式)如何不仅仅是要从安全实现中消除的攻击向量。相反当它们的带宽被用于容纳安全措施而不是泄露数据时它们可以加强这样的实现。对于CAN来说这种隐蔽传输的机会是具体的它们的评估显示出它们在汽车工业、工业控制、农业或任何其他使用CAN的环境中有益于实际应用的巨大潜力。
其次假定的秘密通信的实际可行性是在一个相当具体的背景下使用的实例。更具体地说它被用来提高现有消息身份验证方案的健壮性而不会损害其强大的安全保证。这种努力成功地实现了这种健壮性同时没有产生传统消息身份验证策略所不允许的额外带宽使用。虽然这种方法的范围是有限的但其结果证实了利用隐蔽带宽来增强广泛的实际应用领域的类似努力的可能性。
因此本硕士论文的结果鼓励广泛使用隐蔽通道来解决现有和/或未来安全框架甚至任何类型的良性应用逻辑所面临的众多挑战。