将物联网设备连接到云端的安全解决方案

发布时间:2019/3/20 10:23:40

尽管人们越来越意识到需要安全性,但开发人员经常发现自己在安全性方面采取了快捷方式,将物联网设备连接到云端。在许多情况下,合适的安全机制的复杂性,微型电池供电的物联网设备中可用的有限内存和处理资源以及运输产品的需求之间的冲突似乎是不可克服的。

解决这些问题和为简化物联网设备中安全功能的实施,Microchip Technology和Google合作创建了一种方法,将Microchip的安全硬件功能与称为JSON Web令牌(JWT)的简单数据结构相结合。结果是确保物联网设备与Google Cloud IoT服务之间相互身份验证的简便方法。

本文将介绍物联网设备安全威胁,并介绍当前用于应对该威胁的设备。它将确定安全漏洞以及开发人员和嵌入式系统设计人员如何使用JWT关闭它们。

物联网设备的安全漏洞

对物联网设备的攻击可以采取多种形式,绝不仅限于大规模的物联网部署。对于希望利用用于分布式拒绝服务(DDoS)攻击的僵尸网络中的许多单个设备的资源的黑客来说,即使是的物联网也是一个很有吸引力的目标。因此,每一类物联网设备的设计者都不可避免地需要通过基于硬件的强大安全机制来保护他们的系统,从而阻止攻击。

例如,使用系统内存或闪存存储用于加密和身份验证的私钥会使IoT设备容易受到攻击。更糟糕的是,黑客可以窃取这些密钥并使用它们来访问物联网网络和附加的公司资源。

安全IC

Microchip Technology的CryptoMemory和CryptoAuthentication IC等专用安全设备具有硬件功能基于保护私钥和其他秘密数据的机制。 EEPROM阵列集成在这些器件中,提供安全存储,只能通过器件的SPI或I 2 C串行接口访问的加密安全机制(图1)。因此,这些设备提供了一种向任何物联网设备设计添加安全存储和其他安全功能的简单方法。

图1:Microchip Technology硬件安全设备(如AT88SC0204C CryptoMemory IC)提供安全存储,使用集成加密机制保护对片上EEPROM的访问。 (图片:Microchip Technology)

Microchip CryptoAuthentication系列的成员(如ATECC608A)增强了安全存储基础,并支持安全设计中常用的加密算法。在其硬件功能中,该器件具有多种算法的硬件加速功能,包括:

非对称加密算法:

FIPS186-3椭圆曲线数字签名算法(ECDSA)

FIPS SP800-56A椭圆曲线Diffie-Hellman(ECDH)

NIST标准P256椭圆曲线加密(ECC)

对称加密算法:

SHA-256哈希密码术

基于哈希的消息身份验证代码(HMAC)密码术

AES-128密码术

AES-GCM( Galois字段乘法)密码学

密钥派生函数(KDF):

伪随机函数(PRF)KDF

基于HMAC的提取 - 并且扩展KDF(HKDF)

对于加密来说,这组加密功能代表了支持更别安全协议所需的全面机制列表。身份验证和安全数据交换。例如,KDF功能提供了传输层安全性(TLS)协议所需的基本机制,用于在交换甚至开始之前验证数据交换会话中的参与者。

在此协议中,TLS会话以客户端向服务器发送启动安全会话的请求。服务器使用其数字证书进行响应,客户端使用该证书来确认服务器的身份。在客户端以这种方式验证服务器之后,会话设置继续通过使用服务器的公钥来生成会话密钥,以加密使用PRF KDF或更强大的HDKF创建的一些随机值。

TLS身份验证协议是Internet安全的基础。称为证书颁发机构(CA)的整个证书提供商行业已经发展为支持安全通信的这一关键组件。公司从CA获得可信证书,以便在自己的服务器上安装,以支持上述标准TLS服务器身份验证协议。

对于物联网应用,网络与公司广泛而深入地连接,这种单向不足以确保保护。例如,具有欺诈性证书的黑客可以将自己表示为物联网设备的合法服务器,作为更广泛攻击的一部分。

尽管存在风险,但物联网开发人员经常难以实施TLS相互身份验证协议,因为证书,密钥,使用TLS实现客户端身份验证所需的软件可能会超出许多物联网设备的功能。通过合作,Microchip Technology和Google创建了一种替代方法,将ATECC608A功能与称为JSON Web令牌(JWT)的简单数据结构相结合。结果是确保物联网设备与Google Cloud IoT服务之间相互身份验证的简便方法。

基于JWT的身份验证

在RFC 7519中指定,JWT是行业标准容器关于准备和传输JWT的实体的信息,称为索赔。 JWT结构本身包含三个部分:

标题,包括JSON名称:密码算法的名称(“alg”)的值对(例如,ECDSA的“EC256”使用NIST P-256曲线)用于签署令牌和令牌的类型(“typ”)(这些令牌的“JWT”)

Payload,包括JSON名称:每个索赔的值对

签名,它使用标头中指定的算法来编码密钥以及标头和声明集,每个单独转换为加密前的base64 URL编码表示

RFC 7519为在有效负载或其他部分中指定声明提供了极大的灵活性。该标准甚至允许在没有签名或加密的情况下创建的不安全JWT,在这种情况下,标头将包括算法的名称:值对{{alg“:”none“}。对于与Google Cloud IoT服务一起使用的JWT,Google需要签名部分以及包含三个强制声明的有效负载,包括:

“iat” - 以ISO 8601 UTC时间戳格式创建令牌时的“颁发时间”,自1970-01-01T00:00:00Z以来的秒数(例如,2019年6月30日的1561896000 12 :格林威治标准时间00:00 PM)

“exp” - 指定令牌到期时间的UTC时间戳,24小时超过“iat”值加上10分钟宽限期,以解决不同之间的系统时钟偏差客户端和服务器(例如,2019年7月1日1561982400,格林威治标准时间00:00 00:00)

“aud” - 包含开发人员Google Cloud项目ID的字符串

< p> Google的物联网设备身份验证方案将基于TLS的常规服务器身份验证与使用这些相对简单的声明创建的JWT进行物联网设备身份验证相结合。要启动新会话,IoT设备会打开一个到服务器的安全套接字,并使用前面描述的相同TLS协议对服务器进行身份验证。

此过程的下一步依赖于Google IoT云对用于物联网网络事务的轻量级消息队列遥测传输(MQTT)协议。使用安全套接字到经过身份验证的服务器,IoT设备使用其的JWT作为登录密码“登录”到该服务器的MQTT主机服务(清单1)。

虽然IoT设备发送用户名作为此登录序列的一部分,但用户名不用于身份验证。因此,传输了一个虚拟用户名(清单2)。相反,IoT设备的基于作为登录密码发送的JWT进行。由于JWT签名是标头,有效负载和设备私钥的组合,因此Google Cloud IoT服务可以验证JWT是否真正来自授权设备。对于此验证,Google Cloud IoT服务使用以前由IoT设备开发人员使用下述密钥管理流程存储在Google云中的设备公钥。与单独使用TLS相比,此方法通过混合方法提供相互身份验证,从而加快流程,同时降低物联网设备资源需求。

关键使能器

ATECC608A及其供应链的功能是此方法的关键推动因素。虽然任何MCU最终都可以从JWT报头和有效负载生成加密加密签名,但任何仅使用软件执行的方法在没有基于硬件的安全密钥存储的情况下仍然容易受到攻击。此外,对于许多资源有限的物联网设备或具有严格响应时间要求的应用,“仅软件”实现所需的处理器负载和执行延迟可能是禁止的。,没有丰富的安全算法和更协议经验的开发人员很难实现所需的软件功能。 Microchip通过其CryptoAuthLib库解决了这些问题(图2)。

图2:因为CryptoAuthLib使用硬件抽象层(HAL)将API函数和基元与底层硬件分开,所以开发人员可以定位他们的适用于各种支持设备的软件。 (图片:Microchip Technology)

Microchip CryptoAuthLib简化了安全IoT功能的实现,例如Google JWT身份验证协议,将复杂的安全操作简化为通过CryptoAuthLib应用程序编程接口(API)提供的一组函数调用。对于物联网开发人员而言,最重要的可能是Microchip CryptoAuthLib功能充分利用了诸如ATECC608A之类的Microchip加密IC,可加快设计中安全功能的执行速度。例如,清单1中对atca_jwt_finalize()的调用使用可用的加密设备(如ATECC608A)来创建用作清单2中密码的JWT。在这种情况下,ATECC608A加速JWT签名的加密,读取设计的私有来自其集成安全存储的关键,以完成前面描述的签名创建过程。

然而,即使使用复杂的软件和安全设备,由于传统上管理密钥和证书所需的方法,物联网设备仍然容易受到攻击。过去,私钥需要在外部生成并在制造,分发甚至部署期间加载到安全存储设备中。即使使用硬件安全模块和安全设施,在“需要知道”它们的设备之外短暂存在这些秘密代表了可能导致其意外或意图暴露的安全弱点。通过利用ATECC608A的功能,Microchip和Google在很大程度上消除了传统的安全漏洞。

在这种新方法中,Microchip使用ATECC608A生成密钥对的能力,而无需私钥离开设备(图3)。然后,Microchip使用中间证书对设备生成的公钥进行签名,该证书由客户提供并存储在Microchip安全设施内的安全服务器中。,Microchip安全地将公钥传输到Google Cloud IoT设备管理器中的客户帐户,该设备管理器可为每个设备存储最多三个公钥,以支持密钥轮换策略。部署后,IoT设备可以使用ATECC608A安全功能来创建前面描述的相互身份验证过程中使用的JWT。

图3:Microchip Technology和Google Cloud IoT服务相结合,简化了密钥和证书的配置,提供了一种旨在加强IoT应用安全性的受保护机制。 (图片:谷歌)

Microchip和Google之间的此次合作让开发人员可以完全卸载这一关键密钥管理流程。对于自定义要求,开发人员可以使用CryptoAuthLib API函数atcab_genkey()实现自己的密钥管理过程,这会导致ATECC608A生成密钥对,将私钥存储在其安全存储中,并返回关联的公钥。/p>

为了探索密钥生成和其他ATECC608A安全功能,开发人员可以快速建立一个围绕Microchip SAM D21 Xplained Pro评估套件构建的综合开发环境。基于Microchip ATSAMD21J18A 32位Arm ® Cortex ® -M0 + MCU,SAM D21 Xplained Pro套件提供了Microchip软件框架(ASF)支持的完整硬件平台驱动程序和代码模块。

为了评估包括ATECC608A在内的CryptoAuthentication设备,开发人员可以简单地将CryptoAuth XPRO-B附加板插入Xplained Pro板的两个扩展头之一。 Microchip提供了用于评估CryptoAuthLib与ATECC608A的安全功能的示例软件。更进一步,开发人员可以将Microchip ATWINC1500-XPRO Wi-Fi附加板插入另一个标头,以运行Microchip示例软件,该软件演示了本文中描述的相互流程,包括TLS服务器和JWT设备。

结论

虽然物联网应用安全带来了多项要求,但关键挑战通常在于为物联网设备和云资源实施相互身份验证。在资源有限的物联网系统中,传统协议可能超过可用内存和处理资源。使用Microchip Technology CryptoAuthLib库和ATECC608A CryptoAuthentication IC,开发人员可以实施基于JSON Web Tokens的更高效方法,以便将IoT设备安全地连接到Google Cloud IoT服务。

上一篇:TI推出多款新型隔离式栅极驱动器,具备出色的监控能力和高压保护
下一篇:如何采用斜率补偿技术实现电流模式控制开关稳压器的设计