【技术分享】几维安全CTO刘柏江:IoT时代LLVM编译器防护的艺术

发布者:几维安全小编
发布于:2018-09-12 13:56

「随着物联网时代的开启,需要解决的安全问题会愈来愈多,而代码安全是其他安全方案的底层支撑。面对芯片架构繁多,运行环境复杂的嵌入式物联网设备,传统的代码安全方案都将会失效,LLVM编译器为我们带来了终极代码安全解决方案。」

日前,几维安全CTO刘柏江在2018 ISC互联网安全大会“网络安全技术创新及应用论坛”上发表了题为《IoT时代LLVM编译器防护的艺术》的主题演讲。

刘柏江,几维安全CTO,联合创始人,KiwiVM的缔造者

移动互联网、万物互联网,归根结底都是硬件组成,软件驱动。软件代码承载着我们生活的方方面面,利用App打车、购物、支付、聊天等无一不是通过代码来实现具体的服务功能。然而由于黑灰产的存在,裸奔的代码将会给我们的生活带来各种糟糕的体验和危险。尤其是随着物联网时代的开启,需要解决的安全问题会愈来愈多,而代码安全是其他安全方案的底层支撑。面对芯片架构繁多,运行环境复杂的嵌入式物联网设备,传统的代码安全方案都将会失效,LLVM编译器为我们带来了终极代码安全解决方案。架构无关、函数粒度、强度可调,堪称代码安全防护的艺术,也是今天要分享的实操性非常强的技术。

万物互联,代码安全先行

安全圈的同仁们最近几年都提到一个观点:万物互联,安全先行。但这里的安全是一个宽泛的概念,它可能是指设备的物理安全,防止丢失或者被盗;也可能指芯片以及操作系统安全,防止底层漏洞被恶意利用;还可能指物联网设备承载的业务安全,防止用户隐私数据泄漏。

这些安全我称之为策略安全,它们是通过设计完备的规则以及良好的代码实现来达到保护的目的。但是这类安全问题我们绝大多数人是遇不到的,它们属于Intel、ARM、Apple、Google这类芯片和操作系统巨头公司的考虑范畴。

软件代码是科技公司最宝贵的财富之一,代码安全是我们每位IT从业者都可能会遇到的问题,也是很有必要去解决的问题。代码加密能带来如下好处:第一,防止核心算法被重构,保护软件资产;第二,提升策略安全的强度;第三,加大破解难度,延长破解时间,为运营争取更多的有利窗口期;第四,提高破解成本,将逆向菜鸟拒之门外。

物联网时代已经来临

从2007年iPhone的诞生到现在,移动互联网已趋于成熟,万物互联网也已打响军备竞赛,比如Google的Android Things、阿里的AliOS Things,他们都在为新一轮的物联网平台布局。可以预见,未来我们身边将有数不清的与生活息息相关的智能终端设备。作为对策略安全的一个强力补充,代码安全也将会继续为整个生态安全贡献力量。

芯片体系多

在PC时代,三大主流的桌面操作系统均跑在x86体系下面。而到了移动互联网时代,我们主要面对的芯片体系是arm,但是arm有thumb、arm、arm64三种不同的指令集,这已经开始有点让咱们这些做安全和逆向的人感到心力交瘁了。然而到了物联网时代,鉴于成本、使用场景、性能要求等因素,物联网设备所使用的微处理器芯片体系可能会多到让人难以置信,足以让安全开发者们癫狂。

运行内存小

不像PC或者手机动不动就是几个G的内存容量,物联网设备的运行内存容量相较PC或手机要小得多的,它们的内存可能只有少得可怜的几十几百K。

运行环境复杂

物联网操作系统运行的环境有如下特点:第一,跑在种类繁多的芯片架构上;第二,运行在内存一般偏小的环境;第三,受限于功耗硬件性能低下。这些特性给我们做代码安全提出了不小的挑战。在引入我们新型的代码加密方案之前,我们先看看历史方案的做法以及缺陷。

传统黑盒代码加密及局限

首先,我们科普两个简单的概念。黑盒代码加密处理的对象是最终的软件执行体,它们都是以二进制的方式存在,比如Windows的exe、Android的so以及dex;白盒代码加密处理的对象是源代码,它们都是以文本的方式存在,需要用对应的编译器才能转换成二进制,比如C/C++/Objecti-


声明:该文观点仅代表作者本人,转载请注明来自看雪