摘要:在嵌入式相关的网络设备中,为了解决网络透明传输带来的安全问题,人们普遍采用TLS协议用于加密信息,避免消息被破解,同时提供身份验证机制避免接入钓鱼网站,校验数据完整性防止数据被篡改等,但又由于自身需要对消息进行加解密的计算带来了不小的性能开销和内存占用,导致一
在嵌入式相关的网络设备中,为了解决网络透明传输带来的安全问题,人们普遍采用TLS协议用于加密信息,避免消息被破解,同时提供身份验证机制避免接入钓鱼网站,校验数据完整性防止数据被篡改等,但又由于自身需要对消息进行加解密的计算带来了不小的性能开销和内存占用,导致一些片上资源受限的设备被迫只能采用透明传输的方式来进行通信,在通信中遭受隐私泄露的风险,为了改善这一现象,可以采用以下解决办法。
1、采用精简TLS库
与OpenSSL、JSSE(JavaSecureSocketExtension)之类的算法库运行在X86等通用计算平台上不同,这类算法库从设计之初就定位为全面的工具包。它们旨在提供广泛的加密功能,支持多种密码学标准和技术,并且能够紧跟最新的安全协议和算法的发展。这种全面性使得OpenSSL和JSSE等库在兼容性和前瞻性方面表现得非常好,然而,这种全面性也伴随着资源消耗的问题。由于这些库需要支持大量的算法和协议,因此它们通常会占用更多的内存和计算资源。对于那些资源受限的设备,显然是无法承受的,在这种情况下,采用精简的TLS算法库成为一种更为合理的选择。
mbedTLS:这是一个专为嵌入式系统设计的安全库,它提供了TLS/DTLS协议的支持,并且非常注重代码的小巧和高效。mbedTLS允许用户通过配置来裁剪不必要的组件,从而进一步减少内存占用。
官方代码仓库:https://github.com/Mbed-TLS/mbedtls.git
wolfSSL:这个库同样针对嵌入式系统进行了优化,提供了轻量级的TLS实现。它支持最新的TLS版本,并且包含了一些高级特性,比如对硬件加速器的支持。
官方代码仓库:https://github.com/wolfSSL/wolfssl.git
tinydtls:这是一个非常小巧的DTLS库,特别适合用于资源极其有限的设备。它专注于DTLS协议,适用于需要轻量级安全通信的物联网场景。
官方代码仓库:https://github.com/eclipse/tinydtls.git
这些精简的TLS库虽然可能不像OpenSSL那样提供广泛的功能集,但它们能够很好地满足特定应用场景下的安全需求,同时保持较低的资源消耗。在确保安全性的前提下,最大限度地利用有限的硬件资源。
2、优化证书的存储和使用方式
通常情况下,单个TLS证书在不包含扩展信息的情况下,其大小约在1~2KB之间。如果存储的是整个证书链,那么总大小可能会显著增加。此外,证书的格式也会影响其大小,在资源受限的设备上,直接使用完整的证书链进行认证可能不是最佳选择,为了优化内存使用,可以考虑以下几种策略:
压缩算法:可以将用户证书通过压缩算法(如gzip或zlib)压缩后再存储于片上存储器中。当需要使用证书时,再将其解压。虽然这种方法能够减少存储空间的需求,但它会在运行时增加额外的CPU开销来处理压缩和解压操作,因此需要根据设备的具体性能做取舍。
分包加载:对于较大的证书或证书链,可以在加载到内存时采用分包的方式进行处理。即根据单个传输包的大小限制,将证书分成若干个小块逐一加载。这样可以避免一次性加载大量数据而导致内存溢出的问题。
只读访问:如果应用场景不需要对证书内容进行修改,可以直接使用指向片上存储器中证书位置的指针,并以只读方式访问证书数据。这种方式完全省去了将证书复制到RAM中的步骤,从而极大地节省了运行时的内存开销。
采取这些措施可以帮助确保即使在内存有限的环境中也能有效地管理和使用TLS证书,同时保持系统的安全性和性能。在设计和实现这些方案时,应仔细评估每种方法的成本与收益,确保它们符合特定的应用需求和技术约束。
3、硬件加速
随着设备安全性的要求不断提高,加密算法也在不断演化升级。然而,这些加密算法往往涉及到大量的数学运算,这些运算如果完全依赖于通用CPU来执行,不仅会极大地消耗处理器资源,还会导致性能瓶颈,特别是在处理大量并发的安全请求时,单纯依靠CPU进行加密算法的计算显得非常不理智且低效。因此,为了提高处理效率并减少功耗,人们开始将专门设计的硬件加速器集成到芯片内部。这些硬件加速器是专门为特定类型的加密运算优化的,能够以极高的速度和效率完成任务。
AES加速器:用于快速执行AES对称加密和解密操作。AES是目前广泛使用的块密码标准,其硬件加速器可以显著提升加密/解密的速度,这对于需要实时加密的应用尤为重要,比如无线通信和视频流传输。
HASH加速器:用于加速哈希函数的计算,例如SHA-256或MD5等。哈希函数常用于生成消息摘要,确保数据完整性,并在数字签名和认证过程中起到关键作用。通过专用硬件加速器,可以大幅度提高哈希计算的速度,从而加快整个安全协议的执行过程。
RSA加速器:用于加速RSA公钥加密算法中的大数运算。RSA算法在SSL/TLS握手、电子邮件加密等领域有广泛应用。由于RSA涉及的大整数运算极其复杂,使用专用的硬件加速器可以显著减少加密和解密所需的时间。
除了上述提到的加速器外,还有其他类型的硬件加速器,如ECC加速器,用于椭圆曲线加密算法;以及随机数生成器(RNG),用于产生高质量的随机数,这对加密算法来说至关重要。
通过将这些专有的硬件设备集成到芯片中,不仅可以大大加速加密算法的计算速度,还能降低整体系统的功耗,因为相比软件实现,硬件加速器通常具有更高的能效比。此外,它们还能够减轻主处理器的工作负担,使其能够专注于其他更重要的任务,从而提升了整个系统的响应性和稳定性。总之,硬件加速器的引入是应对日益增长的安全需求和性能要求的一种有效解决方案。
串口服务器_数传电台_4G DTU_遥控开关_LoRa/ZigBee/WiFi/蓝牙模块-成都亿佰特电子科技有限公司官网
来源:亿佰特物联网应用