本文转自:http://www.eetop.cn/blog/html/28/1561828-6339369.html

首先来说:在芯片中增加安全防护(safety)和信息加密(security)特性需要付出额外的代价,如何去评估和控制这种代价其影响是非常深远的。并不是说所有的技术应用都能带来相应的回报。

从目前来看,还没有人能够很好地将安全防护和信息加密的特性集成到他们的设计当中去。很大程度上是因为我们还没有对其施加足够的重视,只有一些密集的高强度的恶意攻击才会引起工业界的注意。除此之外,我们对安全防护以及信息加密在芯片设计当中的应用也没有一个很好的解决方案。对于如何在成本,性能,风险以及收益当中权衡,也不是非常清楚。

将安全防护与信息加密放在一起考虑并共同设计是一个新的趋势,但是同时也增加了芯片设计的复杂性和设计难度。首先,这两个领域的技术发展在工业界的成熟度并不相同。第二,很多公司相信他们只需要处理好其中的一个方面即可,但是汽车行业告诉我们,信息安全影响着人身的安全防护,二者是紧密联系的。有趣的是,在德语中安全防护(Safety)与信息加密(Security)都是用一个词-sicherheit来表示的。

将安全防护和信息加密融入到芯片产品当中去并不是使用一个新的工具或者集成一个新的IP所能解决的。它需要我们改变设计和生产流程而不仅仅是在功能文档上增加几点说明或者在当前工艺节点上新增几项设计流程。同时我们也要转变我们的设计思维方式,因为安全防护和信息加密需要从一开始就融入到设计当中。

Cadence DSG事业部产品管理总监Rob Knoth表示:“很重要的一点就是:设计人员需要重新安排他们任务的优先级并且深刻理解成本,性能以及收益之间的折衷。”我们需要重新考虑我们的设计时间表,并且由于上市时间窗口的限制,我们需要在本来就极具挑战性的设计时间表上来重新考虑安全防护和信息加密,这些都是非常困难的。

在越来越多的芯片中,忽视安全防护和信息加密不再仅仅只是一个可有可无的问题。Imagination Technologies的MIPS业务部门的业务发展高级经理Tim Mace指出,随着芯片的功能越来越强大,同时也被用于一些更加独立自主的系统当中,芯片是否能够正确快速地分析和应对环境变得越来越重要,甚至在某些情况下是极其关键的。而这些安全漏洞可能源于设计本身又或者是故意的恶意企图。因此芯片的安全性变得非常重要,越来越多的客户要求芯片必须解决安全防护和信息加密问题。这些对芯片的要求,风险以及折衷方案都需要我们认真理解并达到相应的标准。

在考虑安全防护和信息加密时,必须考虑三类漏洞:随机的,系统的,恶意的。每种漏洞都需要不同的方法来应对和分析,而每种方法都会对产品的进度和成本产生不同的影响

随机漏洞

或许三类漏洞里面最容易分析的就是随机漏洞了。我们已经有一系列的工具和技术可以帮助我们在硬件中检查和排除这类漏洞。该方法与半导体测试技术还没有使用扫描测试技术之前的测试方法类似。首先创建一个故障模型,该模型至少能够包含每个节点的固定0(stuck at 0)或者固定1(stuck at 1)障碍,故障模拟则能够帮助发现设计的功能是否被更改过。对于一个对安全性要求极高的芯片,我们会希望每个漏洞都被发现或者漏洞不会影响系统的正常工作。Knoth解释说:“这样可以防止诸如电子迁移(EM)等随机故障或者在整个产品生命周期中出现瞬态故障等情况的发生。”

问题是如何才能够做到这一点。Kurt Shuler解释说:“为了创建一个非常安全的系统,我们可以简单的复制系统中的所有模块,甚至每个芯片上的所有IP(我们已经看到有人在实践当中这样做了),像这样盲目创建冗余系统或许可以保证芯片达到ASIL-D标准,但是却损失了很多的性能,裸片的面积以及带来了很大的软件复杂性。”

当然更好地方式是有可能的,而这肯定也是各个公司相互竞争的关键所在。Mace指出:“并非所有的冗余设计都会使用简单的重复设计。对于通信和存储领域,冗余系统可以通过奇偶校验或者ECC保护的形式来实现,而且功能级别的冗余还可以通过再次使用现有的硬件检查之前的操作来实现,这虽然会增加一点功耗但却可以节省芯片面积。”

在有些地方冗余系统是很有必要的。Sonics公司首席技术官Drew Wingard解释说,冗余是为了让我们可以在系统中相互检查,当预测行为的状态复杂性和任务本身一样复杂时,我们就应该使用冗余系统来帮助我们检查,我们可以仅仅只复制控制逻辑的某一部分而不用复制整个模块。对于片上网络(NoC)的技术与其他类型的逻辑没有根本的区别,只是我们必须认识到NoC中复杂的逻辑操作往往是围绕着控制而不是围绕数据。

我们还面临的挑战就是要找出硬件的哪些部分是我们要特别关注的。OneSpin解决方案产品管理总监Ashish Darbari说:“这可能包括我们要冗余寄存器文件,在内存中增加ECC保护,冗余CPU内核,以便进行锁步操作(lock-step)。虽然我们可以添加一个锁步CPU,但你可能不需要复制所有的寄存器文件。 这涉及到很多计算机架构的知识而我们只需要关注的是这个CPU是否能够很好地完成锁步这项工作。”

这种方法还存在着一定的隐患。Knoth说:“我们需要非常谨慎地去考虑复制哪一部分逻辑以及如何去复制。虽然你可以简单地扩大硅片的面积,但是这并不能直接让我们的产品变得更加安全。相反会使得我们的产品变得更加复杂和更容易出错。这其中关系非常地微妙。”

Shuler总结了一下最常用的冗余技术。我们只需要在对功能安全诊断覆盖率影响最大的模块中添加冗余硬件模块,以及对一些没有足够保护的IP中增加一部分冗余模块。为了制定清晰的安全性指标以及明确需要实现功能安全保护的具体模块,需要我们对潜在的系统故障模型进行深入地分析,然后定量地去证明安全机制是否完全覆盖了这些故障或者漏洞。

如何去找到权衡的平衡点同时也取决于市场应用。OneSpin公司的Darbari说:“对于物联网芯片和一些小型设备用的芯片,我们不能建立大量的冗余系统。因为这些芯片的面积需要非常小,同时要具有良好的低功耗特性。”

在航空电子设备中,安全性是由重复性的冗余来保证的,它使用了不同设计结构的冗余系统,这种方法会大大增加设计和验证的费用,对于大部分的市场应用来说是不合理的。

Shuler说:“安全加密是需要付出很多代价的,如果系统不能达到接近实时的延时要求以及巨大的处理吞吐量要求,那么人们可能会受伤或死亡。但是,如果这个系统太昂贵,无法在经济上得到发展和配置,那么整个行业或许就失去了挽救生命的机会。”

为随机故障增加防护措施也说明了很多原来用于半导体测试的方法现在都被集成进我们的产品当中去了。Knoth说:“现在的测试都已经包含在了产品的功能需求当中了,我们不仅需要在制造过程中测试,还需要进行现场测试,以及上电测试等。测试团队需要做LBIST以及MBIST的RTL插入以及所有的功能测试例如时钟控制等。如果我们在RTL中不做这样的设计,系统很多的关键部分将无法被验证。”

除了故障模拟外,形式验证也开始发挥更大的作用。Darbari说,我们可以使用故障模拟器,也可以使用形式验证工具,来精确评估哪些漏洞是可以被观察到的,哪些是不可以的。我们的目标就是把分析的范围缩小到尽可能地精确,这样就不会有未知数。

不是所用的故障都能在RTL级别被观测到,并且故障模拟也不能评估系统级的所有故障。这也意味着从系统层面以及方法实施层面来看,不同的技术和方法适用于不同的模块级和IP级。

现在也有一些自顶向下的方法来评估系统故障的可能性。Knoth说,失效模式缺陷分析(Failure Mode Effect Defect Analysis)是一个贯穿整个系统的严格正式的过程,我们需要了解每个部件的可靠性,了解你所插入的每一个安全加密机制,了解我们能从中提取出多少覆盖率,以及我们有多大的把握能够发现每一个漏洞。这是一个十分有效的机制,从制定系统架构开始一直贯穿到系统的布局布线,甚至能够发现一些诸如冗余通孔的问题。这个流程将有效地指导安全加密集成的各个方面。

系统漏洞

如何发现系统漏洞是现代验证领域的一个具有里程碑意义的挑战。简单来说我们要确定设计是否实现了功能描述文档中描述的所有功能,以及是否达到了相应的指标要求。虽然业界有很多的工具来帮助我们应对这个挑战,但这也确实是行业中最棘手的一个难题。

Darbari说,我们如何才能知道我们已经做好了充足的工作呢?虽然覆盖率可以指导我们找到差距,但是我们还需要考虑完备性的问题。“是否所有的要求都得到了正确的验证呢?是否在测试平台中存在过分约束的情况呢?运行过程中是否存在着隐藏的漏洞呢?”等等这些问题无时无刻不在困扰着验证工程师们。(路桑觉得也很丧,项目经理经常挑战verifier们怎么signoff验证是完备的呢?)

上述这些问题依然是EDA厂商近几年来投入最大的地方。拥有更大容量,更高性能以及更多功能的新工具和技术一直在被不断开发出来。形式验证在最近几年也取得了很大的进展。

验证其实是一个比较单一简单的概念,它就是来比较两个独立开发的模型,因为两个独立开发的模型出现相同的设计失误的概率非常小。这两个模型就是通常我们所说的待测设计测试平台。我们一般会使用工具来进行精确地比较,因为我们人自己缺乏严格证明两个模型的功能是否一样的能力,或者证明待测设计所包含的行为是测试平台所包含的子集的能力。(路桑认为这是哲学层面上对于验证的理解,路桑桌上也放着几本西方哲学...最近还放一盒折纸)

验证行业的发展正在逐步接近这一目标。Darbari解释说,顺序等价性检查可以帮助我们证明两个设计的模型是否在功能上是等价的。我们可以使用C语言创建一个模型然后再用RTL创建一个模型,然后来比较这两个模型。这两个模型的基础都没有太大改变,解决问题的方法也没有太大改变。我们也可以在设计流程的早期就开始做这些工作,我们现在拥有的形式验证技术就可以帮助我们在早期实现这一目标。

另外,Accellera正在研究便携式激励标准。Breker Verification Systems首席执行官Adnan Hamid解释说,这使得我们可以在比UVM还要抽象的层次上定义我们的验证意图模型。该模型定义了系统内部所有的功能路径,并有助于确保系统级验证的完成。该模型还可以在未来进行其他类型的验证分析,例如系统级的故障注入以及定义一些理论上无法达到的功能边界。(路桑认定这是下一个提高系统性验证效率的方向,不过要验证、软件和系统各方面坐在圆桌一同买单才可以)

硬件只是系统的一半。Knoth补充说,我们希望软件方面也采用同样严格的方法来防止系统性漏洞的产生,系统性的漏洞一般都非常隐蔽,让人难以捉摸。(软件总会抱怨硬件遗漏漏洞,硬件总会不理解软件为什么不可以软件修复而在那里叽叽歪歪)

另外,新的硬件架构正在对验证的某些方面提出质疑。Shuler指出,例如用来执行类似神经网络处理或者自主驾驶等任务的多处理芯片,在其中实现功能安全特性是一个特别困难的挑战。即使系统没有漏洞,安全性也可能受到诸如系统性能超载或者恶劣天气等外部条件的影响,这些都可能导致系统对外部输入产生错误的判断。(国内的地平线机器人公司前不久发布的盘古处理器值得最终在产品上验证其性能)

有一个ISO 26262工作小组正在研究如何解决这个问题。Shuler补充说:“我们称之为预期功能的安全性(Safety of The intended Function)该团队试图去证明某一个非常复杂的系统的安全性,这个系统甚至不可能进行完备的验证。”

安全防护与信息加密:一个新的挑战相关推荐

  1. 不畏失败,迎接每一个新的挑战

    亲爱的你,无论你身处何时何地,都要记得保持一颗坚强勇敢的心.无论遇到任何的挫折和困难,都要相信自己的能力和实力,勇敢面对和解决问题.每一次的挫败都标志着你接近成功的一步.所以,不要害怕失败,要勇敢挑战 ...

  2. 网络分流器|10G网络分流器:传统产品与新的挑战

    10G网络分流器:传统产品与新的挑战 网络分流器(Network Distributor)是一种网络流量过滤采集设备,工作在第三.四层,专门用于互联网流量分析领域,是一种为降低后端分析而进行流量过滤. ...

  3. 大数据项目中的QA需要迎接新的挑战

    大数据项目中的QA需要迎接新的挑战 根据IDC全球半年度大数据和分析支出指南的最新预测,到2022年全球大数据和业务分析解决方案的收入将达到2600亿美元.在大数据和业务分析解决方案上投资增长最快的行 ...

  4. print的describe的展示全部数据_大数据项目中的QA需要迎接新的挑战

    根据IDC全球半年度大数据和分析支出指南的最新预测,到2022年全球大数据和业务分析解决方案的收入将达到2600亿美元.在大数据和业务分析解决方案上投资增长最快的行业包括银行(复合年增长率13.3%) ...

  5. [译] SpaceAce 了解一下,一个新的前端状态管理库

    原文地址:Introducing SpaceAce, a new kind of front-end state library 原文作者:Jon Abrams 译文出自:掘金翻译计划 本文永久链接: ...

  6. 团队管理新思考_需要一个新的空间来思考讨论和行动

    团队管理新思考 andrew wong安德鲁·黄 Follow跟随 Sep 4 九月4 There is a need for a new space to think, discuss, and a ...

  7. Scala 中的集合(三):实现一个新的 Collection 类

    本文由 Yison 发表在 ScalaCool 团队博客. Scala 中的 collection 库是符合 DRY 设计原则的典范,它包含了大量通用的集合操作 API,由此我们可以基于标准库,轻松构 ...

  8. 为什么现代系统需要一个新的编程模型?

    摘要:如今高要求的分布式系统的建造者遇到了不能完全由传统的面向对象编程(OOP)模型解决的挑战,但这可以从Actor模型中获益. 为什么现代系统需要一个新的编程模型? Actor模型作为一种高性能网络 ...

  9. 离开,是一个新的开始

    已经离职一周了,最后一晚的酒似乎都还没有醒.一年时间,说长不长,说短不短. 第一份工作,很庆幸遇到这样一批人. 刘哥,技术部头头,JS和ASP很强,对于需求的把握,项目的分析都很有简介,一个人抗起了偌 ...

最新文章

  1. jquery操作dom
  2. [Python]小甲鱼Python视频第002课(第一个游戏)课后题及参考解答
  3. 从Golang调度器的作者视角探究其设计之道!
  4. CAN波形解析实例(1)
  5. TCPDUMP/LIBPCAP 3-PCAP 中文手册(1)
  6. python 程序耗时记录_Python学校的学生身高记录程序
  7. 52.3. HAVING
  8. chart控件做实时曲线显示_「Qt」利用QChart实现实时动态的曲线数据展示(进化版)
  9. python开发总结
  10. python web 并发 性能_Python Web Server的性能测试
  11. 剑指Offer_27_字符串的排列
  12. Atitit 信息检索 文档资料的查询与检索 目录 1. 索引法 1 1.1. 名字placeholder索引 1 1.2. 文本txt索引 1 1.3. 索引集合包zip 1 1.4. 文件名
  13. amos里CFA可行性辨别结果怎么看_本科毕业论文做问卷和数据分析应该怎么着手?(1)...
  14. 如何从被领导到领导别人
  15. python 操作微信订阅号(2022.7.1)
  16. 汇报工作的六大原则,不然怎么努力也白费
  17. Win10系统提示过期,三条命令帮你搞定
  18. 自动驾驶3-1: 自动驾驶汽车的安全保障 Safety Assurance for Self-Driving Vehicles
  19. GEE面向对象分类(先分割影像 、再计算特征、最后分类)
  20. 实验室师哥阿里巴巴面试总结----菜冬瓜

热门文章

  1. python基础入门小结(1)
  2. 论文的参考文献的英文间隔太大的解决方法
  3. 15.Scala- 文件和正则表达式
  4. [JAVA]百度官方IP查询定位
  5. 机器人专业需要学习那些理论知识
  6. 以美颜sdk为例,详解sdk接入流程
  7. 从电路交换到分组交换——TDM、ATM
  8. 深入了解JVM之类文件结构(三)
  9. 实验一 关系数据库标准语言SQL
  10. chrome 浏览器开发者工具之网络面板