立即注册
查看: 782|回复: 0

物联网的实用安全性

已绑定手机
可私信我给嵌入式资料
发表于 2021-3-31 17:10:01 | 显示全部楼层 |阅读模式 来自 四川省成都市
随着越来越多的物联网系统被部署,一项关键的启用技术已成为IBM的消息队列遥测传输(MQTT)协议。MQTT是一种易于使用的发布和订阅体系结构,带有开源服务器和客户端,例如Mosquito服务器和Paho嵌入式客户端。 但是,许多早期系统的设计都没有任何形式的通信安全性,它们发送的未加密数据包很容易被拦截和解码。 现代密码系统的一个重要设计规则称为“ Kerckhofs原理”,它指出“系统的安全性必须取决于密钥的保密性而不是算法的保密性”。这意味着您只应使用经过充分研究和信任的算法,而不能使用秘密的专有系统。作为工程专业人士,我们应抵制政府在执法机构的主持下限制研究或削弱算法的任何企图。
强烈的建议是仅使用久经考验且受信任的算法以及受到积极支持的广泛使用的源代码库。这通常意味着使用开放源代码库,例如open-SSL。但是,这样的库不适用于像微控制器这样的小型受限设备。在这里,我们有一个更好的选择,即称为mbed-TLS的加密库的形式。mbed-TLS库是专门为小型嵌入式系统开发的,高度模块化的最小占用空间的库。

mbed-TLS库最初是作为称为Polar SSL的商业库开发的。2015年,Polar被ARM收购,Polar SSL库被纳入ARM的Mbed IoT平台内的安全组件。然后,将Polar SSL库重命名为mbed-TLS,并免费提供了Apache V2.0许可或GPL v2许可的商业和非商业用途。

密码库需要提供一系列安全服务,以使我们能够设计安全的系统。这些服务中最明显的是用于确保用户数据机密性的密码。虽然支持多种密码,但是当前的最佳实践是使用高级加密标准(AES)。我们还需要确保数据的完整性,这是通过哈希算法,尤其是由美国国家科学技术研究院(NIST)发布的安全哈希算法(SHA)系列来完成的。

不再建议使用原始的SHA-1算法,并且任何新系统都应至少使用SHA-2。我们还需要提供不可否认性,如果发送了一条消息,我们需要确定是谁发送的。如果两个用户可以事先同意密码,那么我们可以使用消息认证码(MAC),这将同意数据的完整性和来源。也可以使用公共密钥密码系统对消息进行签名。这在RSA系统中尤其优雅,但也有专用系统,例如数字签名算法(DSA)。

随机数生成
许多安全协议的基石之一是加密强度高的随机数生成器。一个典型的系统将通过将真实的随机数据(熵)收集到一个熵池中来工作。对于实时通信来说,此过程通常太慢,因此,将熵池中的随机值用作伪随机数生成器的种子值。虽然mbed-TLS库提供了一系列伪随机数生成器,但设计人员是否支持将随机值收集到熵池中。那么,如何知道您是否有足够好的随机数生成器呢?幸运的是,美国国家科学技术研究所提供了一个统计测试套件,其中包含十五个测试,可用于验证您的随机数生成器。除了广泛的密码算法之外,mbed-TLS库还包括一组抽象层,这些抽象层为每个安全服务提供了高级API。例如,这允许您开发一个系统,其中安装了一定范围的密码,同时使用通用API从安装的套件中选择密码算法,然后使用抽象的API加密和解密数据,而与基础密码算法无关。现在,大多数主要的芯片供应商都提供了基于Cortex-M的微控制器,其中包括加密处理器。通常,该密码处理器将提供对称密码,哈希和MAC算法的硬件实现。mbedTLS库提供了一系列软件挂钩,可以启用这些挂钩来使用硬件加密处理器来代替软件算法。顾名思义,mbed-TLS库旨在支持传输层安全协议。TLS协议的关键部分是使用公共密钥加密来协商会话密钥。使用最广泛的公钥密码是RSA非对称密码。尽管mbed-TLS支持此功能,但由于密钥尺寸非常大且需要进行计算,因此它不是最适合小型微控制器的系统。幸运的是,可以使用椭圆曲线密码术来实现RSA的替代方法,例如Diffie Hillman密钥协议。使用椭圆曲线代替线性数字线可减少所需的密钥大小和总体计算量。为了获得与具有128位密钥的AES密码相同的安全级别,要求RSA系统的密钥大小超过3000位,而Diffe Hellman系统的椭圆曲线实现方案仅需要256位密钥大小。简单的方法是在可能的情况下使用椭圆曲线密码术。

在初始TLS握手期间,将以X.509证书的形式交换参与者的公钥。证书由以“抽象语法符号1”(ASN.1)格式存储的用户数据组成,并使用一组“专有编码规则”(DER),以确保存在一种唯一的方式来对证书数据进行编码。创建DER二进制数据后,然后将其转换为base 64,并以ASCII字符形式存储在“隐私增强邮件(.pem)”文件中。如果您正在运行自己的网站,则必须生成自己的证书,并由受信任的证书颁发机构对其进行签名。但是,如果您要设计自己的封闭系统,则可以创建和管理自己的证书。mbed-TLS库包含用于创建和读取X.509证书的源代码和命令行工具。另一个有用的工具是XCA。这是一个易于使用的Windows或OS X应用程序,允许您创建签名并管理自己的X.509证书,并且在开发或管理小型系统时非常有用。TLS协议中使用的所有加密算法都是为通用计算机(例如PC和服务器)设计的,因此,它们对于小型微控制器不是理想的选择。NSA在2013年发布了两个新的分组密码家族,分别称为Simon和Speck。这些密码是专门为非常受限的设备而设计的,这些设备通常是用户作为物联网中的节点。“ Speck”密码被设计为软件实现,而“ Simon”密码已针对硬件实现进行了优化。当前有可用的参考实现,并且计划将这两个密码添加到mbed-TLS的未来版本中。mbed-TLS库主要与安全通信有关,并且是ARM更广泛的安全计划的一部分。ARM平台安全体系结构是一个框架,旨在使开发人员能够分析安全威胁,然后设计并实施适当的体系结构。

尽管这是相当新的东西,但它可以补充具有信任区安全技术的新一代ARMv8-M(Cortex-M23和Cortex-M33)微控制器。

  • 一牛网商城 一牛网直播
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
微信客服扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表