当前位置:

OFweek电子工程网

IC设计

正文

从指令集、微结构、代工生产方面分析隐藏在CPU背后的风险

导读: 虽然现在国内对自主可控的标准依旧没有形成统一的观点——很多马甲CPU公司都坚称自己的产品符合自主可控的标准。但这些导致CPU存在安全风险的因素却实实在在的摆在眼前。

  OFweek电子工程网讯 近日,中国计算机学会(CCF)在太原晋祠宾馆举行了“2016第二届自主安全产业生态创新发展论坛”,中国工程院院士倪光南、中国工程院院士沈昌祥、全国信息安全标准化技术委员会副主任委员韩俊、工信部软件与集成电路促进中心软件处副处长魏威,以及自主安全产业的专家学者、企业代表出席论坛。在论坛上,参会人员对什么是自主可控,如何发展自主可控核心技术等话题进行了讨论。

  虽然现在国内对自主可控的标准依旧没有形成统一的观点——很多马甲CPU公司都坚称自己的产品符合自主可控的标准。但这些导致CPU存在安全风险的因素却实实在在的摆在眼前。

  令集就是一个编码集合。它是用一些代码表达读、写等操作,命令计算机做各种运算的一套命令标准。指令集可分为复杂指令CISC、精简指令RISC、超长指令集VLIW。CISC的典型代表是X86,RISC的典型代表有ARM、MIPS、Power。

  隐藏于指令集的安全风险

  CISC和RISC在竞争的过程中相互学习、取长补短,CISC指令集在解码阶段实现向RISC类指令的转化,将后端流水线转换成类RISC的形式。随着技术发展,RISC指令集也达到数百条甚至上千条,两者在指令集上殊途同归了。而超长指令集的典型代表就是Intel的安腾,由于VLIW与CISC、RISC软件生态不兼容的原因,VLIW已经很罕见了。

  一些网络文章中将指令集视为“黑科技”,并以中国大多IC设计公司采用国外指令集为理由来贬低国内IC设计公司的技术水平,其实这种言论是非常值得商榷的。在技术上,重新定义指令集难度近乎于零,美国也一度禁止将单独的指令集申请为专利,而真正有价值的是围绕指令集建设的软件生态和指令集的发展权——正如华为海思购买ARM的指令集授权,其本质是为了能够兼容ARM的软件生态,并非该指令集有多么高的技术含量。ARM能够把ARM阵营的IC设计公司变成自己的马仔,正是因为其严禁其他公司修改指令集,掌握了ARM指令集的发展权。

  虽然指令集仅仅是一个编码集合,但并不意味着其不存在猫腻——国内单位经过测试,发现X86指令集存在未公开指令,包括加解密、浮点操作在内共计二十余条。其中,有三条指令在用户模式就可以使机器死机或重启,作用机制直接穿透各种软件保护措施,防护软件却不能感知;普通应用程序中嵌入一条即可使系统宕机——Intel可以利用这些未公开指令轻而易举的黑掉用户,虽然Intel在和平时期未必会这样做,但Intel确实拥有黑掉用户的能力。

  隐藏于微结构的安全风险

  微结构也被称为CPU核,很大程度上决定了CPU的性能、功耗、安全性等要素,我们日常所说的双核、四核、八核CPU芯片,其实是将2、4、8个微结构(CPU核)的接口互联并集成到一片硅片上。

  开发一款优异的微结构有多难呢?我们可以从不可替代性的角度进行分析。目前,虽然国内拥有一大批IC设计公司,但具备高性能微结构开发能力的CPU公司却寥寥无几,国内CPU公司大多采取购买国外CPU核授权的方式开发所谓的国产CPU。具体来说,华为海思、展讯、全志、瑞芯微、新岸线等公司虽然已经卖出了数以亿计的手机、平板芯片,但已经商用的产品中没有一片芯片的CPU核是自主开发的,全部都是购买ARM的CPU核授权。

  正因此,由于都是购买ARM设计的微结构,所以基于ARM结构的国产芯片的性能、功耗、安全性都由ARM决定,中国ARM阵营IC设计公司在性能、功耗、安全性方面根本不具备话语权,能够做主的,仅仅是把这些ARM微结构组合成双核、四核、还是八核的芯片,以及在后端设计方面,在ARM留有的冗余范围内,将主频定得高一点还是低一点。

  虽然笔者没有明确证据证明ARM出售的CPU核是否存在后门,但经过国内单位的测试,X86芯片确实存在功能不明确的“多余”模块——这些模块不是一般意义的调试接口,而是由特定的CPU芯片引脚控制,可读写CPU内部状态寄存器、读写指定存储区域、激活特定的微代码段执行某个处理流程、对CPU进行复位。

  另外,有人认为由于能够拿到源码,因此ARM芯片就是安全可控的,这种说法其实也是非常值得商榷的。

  首先,熟悉IC设计的开发者应该都知道,一个IP设计公司在对第三方提供其设计好的IP时,即便是较开放的软核授权,也不会做到所有代码可读可修改,而是包装了好多模块,其中有些可以配置、有些可以修改,而在大部分模块内部都不可能进行随意修改。

  其次,即便拿到源码,也存在“看得见,但看不懂”的问题。虽然对研发单位来说,员工在自己写的代码里设置后门,可能会在code review的过程中被发现,但第三方在没有设计文档和验证环境等技术支持下,要想发现设计单位埋设的后门却非常困难。而且设计单位可以对源码进行变量置乱,所有变量全部用随机字母和数字代替,在这种情况下,第三方想要破解源码中埋设的后门近乎是一件不可能完成的任务。因此,国内ARM阵营IC设计公司能够读懂源码的多寡,其实取决于ARM想让你看懂多少。

1  2  下一页>  
责任编辑:Trista
免责声明: 本文仅代表作者个人观点,与 OFweek电子工程网 无关。其原创性以及文中陈述文字和内容未经本站证实, 对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅 作参考,并请自行核实相关内容。

我来说两句

(共0条评论,0人参与)

请输入评论

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

文章纠错
x
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码: