提起自动化,很多人想当然地认为是高深莫测的理论和尖端技术,自己无缘与之“攀亲”,殊不知,自动化早已悄然出现在我们身边和我们的家庭,日夜伴随着我们,比如家庭中的全自动洗衣机、洗碗机、消毒柜、遥控电视机、空调机等等。家庭自动化的进一步发展,是利用微计算机、传感器及各种电子电气设备实现家庭环境、生活、信息、医疗保健、家庭财务、文化娱乐等活动的全面自动控制。
恒温器与智慧型手机互动
在消费领域,家庭自动化可能是物联网(IoT)解决方案最大的机会。家庭自动化生态系统包括许多不同参与者:云端服务供应商(可能是一个标准组织或家庭自动化平台企业的所有人)、业主、他们的家人和客人、安装公司、零售商、配件供应商、连接本地网路与云端的桥接器供应商、合约制造商、经销商、晶片供应商和IP供应商。
这种家庭自动化生态系统要在一个真正的大众市场取得成功,必须满足若干要求。特别是,它必须能以简单和一致的方法来设定新装置,并且能够透过简单的智慧型手机应用程式或经由语音控制,同时控制来自不同厂商的装置。
其次,必须具备透过云端支援远端存取以及为室内所有装置实现自动化的能力。最后也最重要的是,为了确保高效率,必须要有强大和可靠的安全保障措施,以及低成本、低功耗的高效率微控制器。
其中一些要求可以透过家庭自动化平台解决,例如,苹果的HomeKit架构。本文主要讨论为家庭自动化所用的MCU提供高效率的安全保障时所面临的挑战。基于成本考虑,效率是必要的:如果能以较少的处理器周期执行相同的加密演算法,就可以采用速度较慢且成本更低的处理器和记忆体模组。
如果用软体就能高效率地实现,就不需要专用的硬体加速器。再者,处理器周期更少也意味着功耗也相对地降低了——这对于以电池供电的装置来说至关重要。如同所有的通讯协议一样,家庭自动化协议定义了端点之间如何交换讯息,例如在智慧型手机和恒温器之间。
透过家庭自动化协议实现资料交换
如果协议支援安全性,它也会定义用于确保应用资料验证、完整性与保密性的加密演算法。人们当然不希望自家大门轻易被骇入,所以,好的演算法和较长的密钥至关重要。
密码学家DanBernstein及其团队开发的演算法,就是这种良好且有高运算效率的演算法之一。他们开发的演算法是根据椭圆曲线的特性,在密码社群中拥有良好信誉。这些演算法目前用于TLS、OpenSSH、Tor、HomeKit等,且得到越来越多密码资料库的支援。
这些演算法吸引人的特性之一是,它们可防范边侧通道攻击。对装置进行这些攻击并不昂贵,因为它们可能只需要对作业中的晶片所泄漏的功耗、辐射或其它资讯进行非破坏性测量。如果泄漏的资料以某种方式与当前正处理中的机密资料有关,就可能从其中推断出机密资料。边侧通道攻击的花样越来越多,例如众所周知的简单功率分析(SPA)和差分功率分析(DPA)攻击。目前,它们看起来是最常见的此类攻击。
Bernstein演算法使其更易于避免此类攻击,但仅凭它们本身也无法保证免疫。协议的设计和实施也要发挥作用。良好的协议设计可以缓解DPA攻击,其要点是,即使重复发送相同的秘密资料,协议也不会发送相同的位元模式。
另一方面,对付SPA攻击需要详细地建置加密密码,以确保无论处理什么秘密资料,都能执行相同的操作序列,因此,秘密资料的差异就不会导致执行时间或功耗的变化(功耗安全程式)。
这需要一些技巧,因为它必须避免’ifthenelse’的程式分支。对于只使用执行于恒定数量时脉周期的处理器指令,同样需要审慎地进行。例如,ARMCortex-M3可实现比Cortex-M0更有用的乘法指令,但基于上述考虑,这里就不该如此使用,因为它并不一定会用相同的时脉周期数来执行而产生资料相关性。
由于乘法指令对于这里所讨论的演算法是最具性能攸关的指令,所以,MCU将理想地提供一种快速、单周期的乘法器。CortusAPS3RPCPU核心刚好可以满足这些条件,它是广泛采用的APS3R核心之增强版。
它采用哈佛架构和一个3阶管线。该核心使用简单的向量中断结构,以低软体开销确保快速、即时的中断回应。核心连接至Cortus的周边介面包括乙太网路10/100MAC和USB2.0设备。
虽然整合客制的协同处理器与APS3RP核心极其容易,而且一些公司的确也以这种方式打造出安全的通讯解决方案,但对于本文讨论的演算法来说,却并不是具成本效益的方式。尤其是得益于快速乘法器,整合了APS3RP的50MHzSoC可以用软体执行所有必要的加密演算法,且其速度够快到不至于让用户分心。
为了获得最佳性能(并确保上面讨论的时序不变异),该软体中最具时间关键的部份是用Cortus组合语言编写的,其余的部份则用可携式C完成。
对于OberonHAP加密元件来说,家庭装置与智慧型手机或其它控制器的初始配对必须建置另一种演算法。这就是史丹佛远端密码(StanfordRemotePassword;SRP)演算法。在进行配对期间,SRP执行约6,400万次乘法指令集。透过在质域采用减少模组化等新颖的加乘演算法,可能将执行指令数降低到约800万。
同样重要的是,可能把这种「记忆体吞噬」(memorygreedy——对MCU来说一点也没错!)演算法所需的RAM减少到2.5KB。该演算法的某些建置已知需要200KB以上,即使是一款好的建置通常也需要10KB以上。
在加密领域,有充份的理由对新的演算法或演算法组合抱持怀疑态度,所以,针对这种新方法的正确性证明加以开发。业界的独立专家后来对这一数学证明进行了审核,并证明其正确性。
理想情况是,硬体和软体供应商密切合作,达到最佳的硬体/软体搭配,并将软体、硬体和数学技巧呈现给客户。Cortus和Oberonmicrosystems正以这种方式合作,将OberonHAP加密元件与APS3RP核心整合在一起,以低闸数的处理器实现高性能的加密作业。
OberonHAP加密元件中最重要的加密功能包括:
SRP是增强的密码认证金钥议定协议;Curve25519是一种椭圆曲线,提供128位元的安全性;Ed25519是一种数位签章机制——EdDSA的具体实现;ChaCha20是由DanielJ.Bernstein等人开发的串流密码;Poly1305是由DanielJ.Bernstein等人创造的一种讯息认证码。它可用于验证资料的完整性和讯息的真实性;HKDF-SHA512是基于HMAC-SHA512的金钥推导函数。