梆梆资讯

梆梆资讯

苹果Touch ID安全”保险箱“再次被攻破,密钥安全该怎么

2017-08-22

笔者昨天在网上看到一条消息,说 iPhone 5s的Secure Enclave遭遇黑客入侵,密钥被披露,在新加坡的黑客大会上还有人为iPhone 5s的Secure Enclave固件提供了提取工具。如果消息属实,意味着iPhone 5s将成为继iPhone 6之后第二个Secure Enclave被破解的苹果手机。看完这条新闻笔者内心极为震惊,曾经属于苹果的安全神话屡被攻破,甚至连苹果Touch ID最好的安全“保险箱”Secure Enclave也不再是黑客“禁区”,相继沦陷。

在这里笔者不想猜测Secure Enclave被攻破后密钥泄露所可能带来的危害,而是希望通过分析该事件背后的本质原因,让安全从业者更为深入地认知密钥安全。正所谓“鉴于往事,有资于治道”,安全也是如此,历史是最好的老师。

苹果Secure Enclave安全区为什么不再安全

在iPhone 5S上市后,苹果公司发表了一份有关iOS安全的白皮书,根据白皮书的描述,苹果公司在A7芯片中集成了一个Secure Enclave协处理器,用来管理、核对和存储用户的指纹信息。Secure Enclave协处理器是一个独立的系统,有独立的安全启动顺序和软件升级机制,如下图所示:

安全区硬件架构


苹果正是通过Secure Enclave构建了一个芯片级安全区,这是一个独立的安全空间,它与手机系统其它部分完全隔离,是一个外部无法访问的黑盒。在这里,指纹传感器和Secure Enclave内建一个共享密钥A,然后系统根据这个共享密钥A随机生成一个唯一的密钥B,来加密保护TouchID数据。如果使用中要调用指纹数据,整个过程都会有AES密钥随机加密保护。在这个过程中,指纹传感器与Secure Enclave共享唯一密钥A,使得每一台设备的指纹传感器与手机A7处理器是一对一的绑定关系。

苹果这种芯片级安全方案,几乎可以让任何Touch ID用户产生“高枕无忧”的错误安全感,因为他们相信指纹加密信息和密钥都被完整放进了一个绝对安全的黑色“保险箱”。但是这真的安全吗?黑客再次用事实证明,实际情况并非如此。

正所谓“不怕贼偷,就怕贼惦记”,而密钥正是黑客所惦记的东西。世界上没有绝对的安全,一旦那个黑色“保险箱”被人打开,其将彻底成为“白盒”,那把唯一能打开你加密信息的密钥也就赤裸裸摆在黑客眼前了。

保护一滴水,最好办法是把它放进大海里

如果想进入一个铜墙铁壁的房子,最明智的办法是“偷取”房门钥匙。对于黑客而言偷密钥肯定比攻破加密算法容易得多。因此密钥一定会被黑客盯上,其安全问题时刻面临巨大挑战。曾几何时,人们认为把密钥锁进“保险柜”已经很安全了,可苹果Secure Enclave芯片级安全区被攻破事件却打破了人们的美梦,更何况市场上大多数应用系统采用密钥保护方式。黑客可以通过简单的调试工具,对运行在终端设备上的应用程序进行反编译,于反编译后的程序中找到加密算法,在运行的内存中轻松找到完整密钥,这时所有加密信息都犹如明文般赤裸裸摆在了黑客面前。

那密钥安全防护到底应该怎么才安全?笔者认为既然防不住黑客对密钥的窃取,那就让密钥“消失”。正如保护一滴水那样,最好的办法就是把它放进大海里。


动态密钥白盒:让密钥“消失”的新一代防护体系

密钥白盒是将密码算法白盒化的过程,从本质上说是提高加解密程序的复杂度,致使逆向人员无法分析还原出密钥。密钥白盒可分为静态密钥白盒和动态密钥白盒。前者是将密钥和加密算法绑定混淆,生成密钥白盒,一个密钥对应一个密钥白盒,以库文件形式存在,需要在开发应用程序时集成到工程里。因此在进行密钥更新时非常麻烦,只能引用一些热更新技术解决,且类似技术会长期伴随着兼容性、个别机型闪退等问题。

为解决静态密钥白盒更新密钥时的局限性,国内移动安全领导厂商梆梆安全设计出了动态密钥白盒,它包括白盒库和白盒密钥。在密码程序运行的任何阶段,原始密钥信息完全融入到加解密算法之中,原始密钥信息已经不存在,即只能输入明文得到密文,或者相反操作得到明文。同时还可以在保持白盒库不变的情况下更换密钥,极大提升了白盒密码产品的灵活性。


动态密钥白盒的重要意义就是保护终端密钥安全,所以凡是有需要保护密钥的应用场景,都可以利用安全密钥白盒系统生成的白盒库和白盒密钥进行有效保护。下面介绍几个典型的应用场景:

(1)设备身份认证

白盒密钥支持“一人一密”、“一机一密”,并且白盒库可以与设备指纹相绑定,从而达到身份识别的用途。

(2)通讯协议保护

在移动互联网、物联网等应用场景中,应用开发商都有一些私有的通讯协议需要保护,尤其是物联网应用CPU计算能力都有限,而梆梆安全可以提供轻量级白盒库,在性能、体积、资源消耗等方面都满足物联网的苛刻条件。

(3)本地数据保护

软件开发者可以将白盒加密算法用于本地资源文件的加密保护,防止重要的本地资源文件被窃取、被篡改。

写在最后:


这个世上没有绝对的安全,因此再坚固的“黑盒”也会被人攻破变成“白盒”,千万不要认为将密钥放到一个自认为坚不可摧的“保险箱”中就安全了。保护密钥最安全办法就是让密钥消失,这样就可以让黑客失去攻击目标,再强大的攻击也会变得毫无意义了。

友情链接:

京公网安备 11010802024511号

Copyright ©2022. All Rights Reserved 京ICP证160618号  京ICP备11006574号-1