随着最近提款机被骇客入侵的事件已经不只是电影情节,社群软体、通讯软体帐号被盗用的新闻不绝于耳,骇客手法不断精进,社会大众也都开始注意到了这个一直存在的安全议题。其实不单纯是在个人的帐号密码保密上需要被注意,对于产品在生产线上与线上软体更新时的安全问题,更是所有产品开发商所密切关注的。
针对资安问题,其实学术论文与相关的演算法很多。其中主要可分成三个面向讨论之,那就是资讯隐蔽(Privacy)、资料完整性(Integrity)和身分认证(Authenticity)。
在资料完整性(Integrity)的面向上,一般我们都利用杂凑函数(Hash Function)搭配金钥(Key)将欲保护的资料进行单向计算获得一个杂凑认证码(MAC- Message Authentication Code),该资料经过传输或复制或存放一段时间之后,若透过同样的杂凑函数运算后的认证码不变则可代表该资料的完整性,过程中资料内容没有变动。著名的杂凑函数为SHA, MD5与CRC等等。
在资讯隐蔽(Privacy)的面向上,一般我们将资讯加解密的方式分为对称式(Symmetric)和非对称式(Asymmetric)两大类,其主要差异是在对于资料加密与解密时使用相同或是不同的密码(Key)。对于采用相同密码进行加解密的演算法(Symmetric Cipher)来说,其概念上较为单纯,计算较快,著名演算法(Cipher)有DES, 3DES, AES.. 等等。而非对称式加解密(Asymmetric Cipher)的著名演算法如RSA, ECC..等,其在使用上较为安全,但计算上就相对复杂。
不管是对称式或非对称式的加解密机制,密码的保护是最重要的一件事情,对称式加解密演算法(Symmetric Cipher)主要的缺点就是容易在发派密码(Key)到加密端时被盗取,或者因防范措施需加倍严谨而造成密码库相当庞大。举例说明某老师请其该班100名学生们缴交期末作业时采用某密码加密,若大家共用同一组密码,则该密码被其他人发现的机会大增,且学生们都能互相破解他人的作业,为此该老师只好发放100组不同的密码给每位同学,如此一来储存与管理密码的困难增加了很多。
该状况若老师采用非对称加解密方式(Asymmetric Cipher)进行,因为加解密采用不同的密码(Public/Private Key),他只需要发放同一组开放的加密密码(Public Key)给每位同学,就算有其他人盗取该密码也无法解开加密过后的档案,同学间也无法破解他人的档案,而唯一可以解密的密码(Private Key)是在老师手上,因为不需对外派送,所以安全性增加许多。
Microchip在16位元,32位元MCU与MPU上皆提供硬体加速引擎供程式设计师处理资料加解密与资料认证工程:
PIC24GB2 和PIC24GB4系列产品
* 提供硬体Symmetric Cipher AES, DES和3DES,
* 另外在密码(Key)的存放上也加入了一次性烧录密码(OTP Key)和能动态产生的软体密码(SRAM Key),因为在加解密时是硬体模组在运作,所以在程式中与通讯中并无法得知该密码,拥有高等级的安全性。
* 内建的硬体乱数产生器(Random Number Generator)亦可以应用在各式加解密演算法当中。
PIC32MZ系列产品
* 同样包含了硬体Symmetric Cipher AES, DES 和3DES,
* 另外还有硬体模组可计算MD5、SHA1、SHA-256、AES-GCM和HMAC等杂凑函数(Hash Function)。
MPU32系列产品
* 提供硬体Symmetric Cipher AES和3DES
* 支援软体Asymmetric Cipher RSA与ECC
* 硬体乱数产生器(Random Number Generator)
* 硬体杂凑引擎 SHA
* DDR Encryption
* Tamper Detection
* PCI Pre-certification
面对现今产品的资安需求,MCU能够内建硬体加解密运算引擎是很重要的功能,主要提供快速的运算与硬体层面的密码保护,如此一来,产品开发商才能方便地让其产品在通讯、在线升级、配件认证(如印表机如何认证原厂墨水夹)、甚至是工厂生产上能跟得上这个社会的脚步,拥有新时代的资安等级。
(本文作者颜睿妤为Microchip工程师)