close
当前位置: 物联网在线 > 物联网设计开发 > 传感澳门美高梅娱乐城 >

使用单芯片将固件安全性添加到物联网设计

在日益安全的物联网领域,物联网开发人员在应用程序生命周期的各个阶段都面临着快速开发和更严格安全性的冲突。尽管许多新兴解决方案都带有加密机制,但物联网设计需要能够解决更广泛的安全威胁。
为了让他们这样做,物联网应用程序需要建立在设备级别的安全引导和固件更新的基础上建立的信任根。
本文将展示如何使用Microchip Technology的单个安全设备,开发人员可以快速实施确保物联网应用程序安全所需的一系列安全机制。

物联网安全的诸多威胁

与任何嵌入式系统一样,物联网设计也面临着不断的威胁。随着黑客利用新的攻击手段,开发人员急于关闭安全漏洞。在部署的设备中,更新IoT固件的需求增加了安全性的潜在弱点。例如,即使使用简单的固件验证检查,也可能使软件暴露。在这种情况下,开发人员可能希望查询一些外部资源进行验证可能会试图用黑客代码替换固件。然而,即使是相对新手,黑客也可以用忽略这种验证检查的代码替换固件。
单独使用加密来锁定固件并不能确保补救措施。即使是加密也可能会被攻击,例如选择的密文攻击,黑客通过研究目标系统的解密过程来确定加密密钥。这些类型的攻击可能难以缓解,但通过加密进行身份验证被称为有效的防御措施。
然而,在构建资源受限的物联网设备时,使用传统的基于软件的安全方法的开发者面临增加的复杂性和性能问题。Microchip Technology的CEC1702密码嵌入式控制器的可用性使开发人员能够在开发过程中尽可能减少额外的工作,同时对设计性能影响最小,从而解决了更高的安全性问题。

全功能的MCU

设计为支持的IoT安全要求的各种性质,CEC1702结合了ARM ®皮质® -M4F处理器与外围设备的一个完整的石板,包括一个多通道模拟-数字转换器(ADC),个UART,GPIO,所以PWM输出,LED接口,多个计数器/定时器以及多个I 2 C和SPI控制器(图1)。
Microchip Technology CEC1702密码嵌入式控制器的框图
图1:Microchip Technology CEC1702加密嵌入式控制器将高性能ARM Cortex-M4F内核与通用外设结合在一起,并专门支持认证和加密。(图片来源:Microchip Technology)
虽然该设备可以满足典型的物联网设计的功能要求,但其独特之处在于其安全性能。CEC1702将诸如安全存储和数据保护机制等基本安全特性与多个集成密码引擎相结合。除了多用途的AES加密引擎之外,该器件还包括加密哈希引擎和公钥引擎,为多种算法提供硬件支持,包括RSA,椭圆曲线Diffie-Hellman(ECDH)和椭圆曲线数字签名算法(ECDSA)等等。由于硬件安全引擎可以比基于软件的方法快几个数量级执行加密算法,因此开发人员可以使用强大的加密和认证,而不会影响应用程序的性能。
在硬件设计层面,开发人员可以在物联网设计中使用CEC1702作为独立的MCU,或者通过SPI连接将设备添加到现有的基于MCU的设计中,只需少量额外的工作。对于他们的物联网软件设计,开发人员可以使用CEC1702的加密和认证功能来实现物联网设备和云之间的安全通信。
除了提供更安全通信的传统需求外,该设备的安全机制还为更广泛的生命周期安全需求提供关键支持,包括预引导固件身份验证和安全固件更新。凭借其对固件进行身份验证的能力,CEC1702提供了硬件基础,以创建位于连接系统(包括物联网)安全核心的信任根。

安全启动

在一个典型的基于MCU的物联网系统中,CEC1702将通过SPI连接到主机MCU和CEC1702(图2)存储固件的外部闪存。当系统上电时,CEC1702开始运行,保持主MCU复位状态,直到验证用于启动主MCU的应用代码的安全性。
Microchip CEC1702的图表
图2:通过共享SPI总线工作,Microchip CEC1702使用其集成的安全机制来确保主机应用处理器仅运行经过验证的固件。(图片来源:Microchip Technology)
信任的根源在于CEC1702的安全引导所需的固件认证的顺序方法(图3)。当CEC1702上电时,它首先在工厂运行加载在ROM中的启动固件。由于这个ROM代码不能改变,启动过程中的第一步固有地建立在一个可靠的基础上。虽然开发人员可以选择加载应用程序固件而无需进行身份验证或加密,但使用这些安全机制有助于在引导过程结束时保持信任链。使用这些安全机制,CEC1702引导ROM代码对设计在CEC1702上运行的应用程序固件进行身份验证和解密。
在这个序列的最后一步,CEC1702认证和解密设计在主机MCU应用处理器上运行的应用程序固件。由于代码在每个步骤都经过验证,所以主机应用程序处理器上运行的最终代码图像是可信的,从而完成信任根。
Microchip CEC1702引导过程示意图(点击放大)
图3:CEC1702启动过程对启动过程中的每个步骤应用验证检查,以建立物联网安全所需的信任根。(图片来源:Microchip Technology)
在安全引导过程中,CEC1702使用集成的Efuse一次性可编程(OTP)存储器中的安全数据,根据固件信封(图4)中包含的信息验证固件。为了进行身份验证,设备使用Efuse中保存的公钥来验证图像生成期间创建的固件信封的ECDSA签名(如下所述)。由于该签名是使用客户持有的私钥创建的,因此此阶段的固件验证可确保固件源的合法性。
Microchip图像生成过程示意图
图4:图像生成过程用每个固件图像包含验证和解密图像所需的安全信息。(图片来源:Microchip Technology)
尽管映像加密是可选的,但是如前所述,认证和加密的组合增加了额外的安全保护。当开发者使用加密的固件时,CEC1702使用ECDH密钥交换在解密阶段跟随认证过程来创建解密密钥。
在这个过程中,CEC1702使用Efuse中包含的(不同的)私钥作为生成正确的解密密钥的ECDH算法的一部分(图5)。
Microchip CEC1702的图表处理ECDH密钥交换机制
图5:CEC1702处理ECDH密钥交换机制,使用嵌入式Efuse存储器中保存的数据以及与固件映像一起传输的数据。(图片来源:Microchip Technology)
这里,设备将Efuse中保存的NIST P-256曲线生成器点(图5中的Gx,Gy),Efuse中保存的私钥(图5中的s)和公钥(图中的Rx和Ry项4)嵌入到固件信封中以得出用于最终解密固件图像的密钥(图5中的Kx)。
这种方法的一个明显的优点是底层椭圆曲线方法能够用相对较短的密钥提供非常强大的安全性。

快速发展

尽管CEC1702的安全机制非常复杂,但Microchip已经不再那么容易让开发人员充分利用芯片的固件认证和加密功能。该公司的Efuse生成器工具提供了一个简单的界面来指定ECDSA和ECDH键并生成Efuse数据(图6)。生成后,开发人员可以使用任何JTAG编程器对CEC1702 Efuse OTP存储器进行编程。
Microchip Efuse发生器软件的图片
图6:Microchip Efuse发生器提供了一个简单的界面,用于创建具有相关安全数据的固件映像,用于验证和解密。(图片来源:Microchip Technology)
Microchip Technology的SecureIoT1702(DM990012)演示板为硬件开发提供了一个简单的平台,可以快速启动硬件开发。除了按钮,LED和小型LCD外,该电路板还包含用于存储固件映像的Microchip的SST26VF016 16 Mbit闪存器件。除了用于串行闪存编程,JTAG调试等的接口之外,该电路板还包含用于支持多种兼容硬件扩展电路板的MikroBUS接头。
开发人员可以将Microchip ATWINC1500 Wi-Fi咔嗒板连接到演示板上的MikroBUS扩展槽,以快速将SecureIoT1702板连接到Microsoft Azure云(图7)。
Microchip SecureIoT1702演示板和ATWINC1500 Wi-Fi扩展的图像
图7:开发人员可以使用Microchip SecureIoT1702演示板,ATWINC1500 Wi-Fi扩展和Microchip的SecureIoT1702 软件包快速连接到Microsoft Azure云。(图片来源:Microsoft Azure)
SecureIoT1702演示板已经获得了微软公司认可的具有DICE(设备身份合成引擎)硬件支持的Azure认证的物联网设备。虽然超出了本文的范围,但是DICE是一个新兴的可信设备标准,它使用单独验证阶段来指定一个安全的启动过程,以建立一个信任根(见图3)。
使用Microchip的SecureIoT1702_Azure_IoT_build软件包,开发人员可以通过Azure IoT Hub快速将SecureIoT1702开发板连接到Azure云。与其他新兴的物联网平台澳门美高梅娱乐在线一样,Azure物联网中心提供认证,设备注册以及将物联网硬件设备连接到Azure云所需的其他服务。该软件包将Azure IoT设备软件开发工具包C语言(SDK)与硬件驱动程序以及mbedTLS完整TLS(传输层安全性)堆栈相结合。
包中包含的示例软件包括预先配置的根证书,X509证书和私钥,以便开发人员可以轻松地使用Azure云进行身份验证。正如示例软件所示,开发人员只需要进行一些调用即可加载安全数据并开始发送IoT数据(清单1)。使用这种基本设计模式,开发人员可以扩展开发板的功能,甚至可以开始使用CEC1702探索安全的无线更新澳门美高梅娱乐城。
/* Setting Message call back, so we can receive Commands. */
if (IoTHubClient_LL_SetMessageCallback(iotHubClientHandle, ReceiveMessageCallback, &receiveContext) != IOTHUB_CLIENT_OK)
{
    (void)printf("ERROR: IoTHubClient_LL_SetMessageCallback..........FAILED!\r\n");
}
else
{
    (void)printf("IoTHubClient_LL_SetMessageCallback...successful.\r\n");
 
    /* Now that we are ready to receive commands, let's send some messages */
    size_t iterator = 0;
    do
    {
        if (iterator < MESSAGE_COUNT)
        {
            sprintf_s(msgText, sizeof(msgText), "{\"deviceId\": \"myFirstDevice\",\"windSpeed\": %.2f}", avgWindSpeed + (rand() % 4 + 2));
            if ((messages[iterator].messageHandle = IoTHubMessage_CreateFromByteArray((const unsigned char*)msgText, strlen(msgText))) == NULL)
            {
                (void)printf("ERROR: iotHubMessageHandle is NULL!\r\n");
            }
            else
            {
                MAP_HANDLE propMap;
 
                messages[iterator].messageTrackingId = iterator;
 
                propMap = IoTHubMessage_Properties(messages[iterator].messageHandle);
                (void)sprintf_s(propText, sizeof(propText), "PropMsg_%zu", iterator);
                if (Map_AddOrUpdate(propMap, "PropName", propText) != MAP_OK)
                {
                    (void)printf("ERROR: Map_AddOrUpdate Failed!\r\n");
                }
 
                if (IoTHubClient_LL_SendEventAsync(iotHubClientHandle, messages[iterator].messageHandle, SendConfirmationCallback, &messages[iterator]) != IOTHUB_CLIENT_OK)
                {
                    (void)printf("ERROR: IoTHubClient_LL_SendEventAsync..........FAILED!\r\n");
                }
                else
                {
                    (void)printf("IoTHubClient_LL_SendEventAsync accepted message [%zu] for transmission to IoT Hub.\r\n", iterator);
                }
 
            }
        }
        IoTHubClient_LL_DoWork(iotHubClientHandle);
        ThreadAPI_Sleep(1);
 
        iterator++;
    } while (g_continueRunning);
清单1:Microchip Azure IoT软件包包含将SecureIoT1702连接到Azure云所需的所有软件,包括演示与Azure IoT Hub交易的示例软件。(代码来源:Microchip Technology)

结论

随着物联网进一步深入到更多的应用中,物联网设备的安全性较差,对物联网和应用构成重大威胁。为了提高安全性,物联网开发人员需要采用能够在物联网系统级建立信任根的安全方法。开发人员使用传统的安全方法面临相当大的挑战,而不会显着增加设计复杂性并降低整体性能
但是,使用Microchip CEC1702加密嵌入式控制器,开发人员可以快速创建建立在可靠信任根之上的IoT应用程序。

(责任编辑:ioter)

用户喜欢...

为工业物联网设计强大的系统

物联网(IoT)和工业物联网(IoT)具有将传感器数据流转换为有用信息的共同目标。然而,对于开发人员而言,显着差异在于基本要求,包括功耗,连接性,设计可靠性和稳健性。 对于物联网...


如何快速添加环境感应工业物联网设计

测量环境参数的能力可以作为在工厂和工业应用以及智能建筑,家电和个人澳门美高梅娱乐在线中建立成熟的健康和安全特征的基础。然而,为了提供这些功能,有助于满足法规要求,开发人员需要找到有效地...


WICED™物联网设计平台

WICED(发音为wik-id)是 赛普拉斯的 IoT平台,能够快速开发和部署连接的物联网澳门美高梅娱乐在线。 嵌入式设备的无线互联网连接(WICED) 消除添加无线的复杂性 简化添加云服务 允许客户专注于他们的物联...


干货 如何轻松将多种无线澳门美高梅娱乐城添加到物联网设计中?

物联网(IoT)应用的开发人员需要确保他们的无线传感器系统能够无缝连接到基于云的软件和服务。但是,这通常需要选择和使用多个无线接口。确保它们都能满足他们的要求,可以分散更高级...


安森美半导体推出世界最紧凑的Sigfox认证的方案,其首个RF系统级封装用于低功耗物联网设计

安森美半导体推出新的可编程的RF收发器系统级封装(SiP)集成一个先进的RF系统单芯片(SOC)与周边所有物料单(包...


2017 TI杯全国大学生物联网设计竞赛完美收官

由教育部高等学校计算机类专业教学指导委员会主办,全球领先模拟和嵌入式处理半导体厂商德州仪器(TI)(NASDA...


TI CC3220 Wi-Fi 连接式物联网设计安全性的解决方案

Wi-Fi 连接是许多物联网 (IoT) 设备的关键要求,也是黑客们最喜爱的攻击目标。薄弱的安全措施会导致设备在持续的网络通信过程中容易遭到入侵。更糟糕的是,物联网设备有可能在其生命周期...


眺望未来的物联网设计

我们在系列文章中看了物联网在家庭、城市发展、营运、营销上不同面向的观点,这一波大概会是继工业革命、信息...


蓝牙Mesh解决方案加速物联网设计

蓝牙网状网络方案是智能家居、照明、beacon和资产追踪应用的理想选择,有助于扩展工业及智能家居市场...


LoRaWAN第2部分:如何使用Microchip的模块,以加快物联网设计

编者注:在这个由两部分组成的系列的第1部分, LoRaWAN第1部分:如何获取15公里无线和10年的电池寿命为物联网 ,我们看着LoRaWAN,以满足远距离的需求的能力,低电力物联网通信。 在第2部分...


博聚网