怎么在便携式手持嵌入式设备中实现安全的数字数据传输

news2024/11/25 22:58:55

为了实施附加的安全性,一些密码算法也可以指定一组不应从设备公开的常数值。这些存储在设备中的,需要防止未经授权暴露的秘密密钥和秘密值在一系列文章中被称为“秘密密钥”。

秘密密钥存储在设备内部,甚至在设备的整个生命周期中都存在。设备中实施的硬件和软件安全措施必须挫败未经授权的访问尝试,以检索这些秘密密钥。此外,设备中存在诸如根CA证书之类的数据可以公开但应防止未经授权的修改而被公开。

如果可以修改根CA证书,则攻击者可以通过替换伪造的根CA证书,使设备接受任何证书,从而破坏目的证书和安全通信。因此,同样重要的是,不要对设备中的数据(例如根CA证书)进行未经授权的修改。嵌入式物联网学习路线领取

设备内的安全级别取决于受保护内容的性质。在设备处理用户受限制的数据(如受复制保护的* 视频)的情况下,设备安全的需求比在个人数据(如个人文件或银行交易)的用户私有数据的情况下更为重要。

在用户的私人数据的情况下,通常会发生这种情况,因为用户在破坏此类数据时将遭受直接损失,因此他/她有责任限制对存储在设备中的秘密密钥和其他安全内容的物理访问。

同样,安全数据传输协议的一般实现建议为每个设备使用唯一的密钥。因此,如果任何设备的硬件安全性受到威胁,则不会影响网络中其他任何设备的安全性。

但是,在用户限制数据的情况下,破坏单个设备的秘密密钥会导致损害该设备处理的所有受复制保护的内容的安全性。因此,一个易受攻击的设备可以帮助未经授权的设备访问受版权保护的内容,对其进行解密并分发无数内容。

安全SoC(片上系统 )可以设计

安全SoC(下面的图4),其中包含必需的硬件和软件支持,以增强设备内的安全性,从而抵御损害设备安全性的物理攻击。

该安全SoC通过在芯片内部保留诸如处理秘密密钥的Secure ROM之类的组件,为秘密密钥提供了物理保护。在执行期间,受保护的安全密钥将以明文形式加载到RAM,在此期间,可以监视到RAM 的总线以访问秘密密钥。

通过为安全SoC的内部RAM中的秘密密钥或涉及秘密密钥的加密操作的中间值分配缓冲区,可以防止这种情况发生。这样可以防止受保护的密钥可用于Secure SoC之外的任何总线。

安全SoC中的安全引导加载程序可确保设备使用具有正确进程特权的正版操作系统或固件进行引导。操作系统配置的MMU(内存管理单元)允许访问内部RAM中的缓冲区,而这些缓冲区仅涉及密钥操作。具有特殊OS特权的安全进程。

如果硬件制造商对Secure ROM进行了限制或预先编程,则可以使用万能钥匙对Secure ROM进行编程。该主密钥可用于加密设备密钥并将其存储在内部ROM中。嵌入式物联网学习路线领取

图4。安全SoC通过将处理秘密密钥的组件(如Secure ROM)保留在芯片内部,从而为秘密密钥提供物理保护。

在安全SoC的理想情况下,必须满足几个条件:

1)无法从物理上访问安全ROM以检索密钥。

2)无法监视SecureSoC内部的总线以获得受保护的数据或密钥。

3)应该无法删除或更换安全SoC中的任何组件,或者应防止SoC无法工作。

物理保护级别可以根据受保护内容的值而变化。保护可以仅仅是在进行物理访问尝试时篡改SoC以将SoC中所有存储的内容清零。

篡改检测保护方法不会阻止攻击者从芯片中获取数据,而只会使您知道芯片是否已被篡改。调零需要特殊的电源和硬件支持,这使得芯片更加昂贵。

该NIST(国家标准技术研究所)发出FIPS140-2 [9]发布指定不同级别的硬件的,涉及敏感信息的存储和转让的设备andsoftware安全要求。

现在,让我们更详细地了解安全SoC中每个组件的作用:1) ROM,2) 内部RAM和安全进程,3) securebootloader和代码签名,4)加密/解密引擎以及5)系统定时”以及它们如何有助于确保安全存储秘密密钥和其他受保护的数据。

安全ROM。 在设备的持久性存储中安全地存储设备密钥的一种方法是在存储之前对密钥进行加密。因此,即使有人设法从持久性存储中获取数据,他/她也将永远无法理解秘密密钥。

要加密任何数据,通常需要两件事:加密算法和加密密钥。如果使用任何众所周知的算法(如AES)对密钥进行加密,则加密的强度仅与用于加密的密钥的保密性一样强。

因此,再次面临着用于存储用于加密密钥的密钥所面临的相同问题。除非使用仅设备制造商已知的加密算法,否则将重复此问题。

如果将设备专有算法用于秘密密钥的加密和存储,则秘密密钥的安全性仅与算法的保密性一样强。

由于代码二进制文件以明文形式存储在设备存储器中,并且有许多用于重新设计代码的工具(如“ objdump”)可用,因此暴露秘密密钥的机会不容忽视。

存储密钥的另一种方法是将其存储在Secure ROM中。安全ROM驻留在设备的安全SoC内部。安全ROM的硬件控制器先对数据解密,然后再从ROM中取回数据。此硬件支持将防止未经授权的物理访问来检索存储在Secure ROM中的秘密密钥。

包含秘密密钥或涉及秘密密钥的密码操作中间值的缓冲区在安全SoC的内部RAM中分配。因此,可以防止秘密密钥可用于Secure SoC外部的任何总线。

如果安全ROM受硬件制造商限制或预先编程,则可以使用设备主密钥对安全ROM进行编程。设备主密钥是每个设备硬件或安全SoC独有的密钥,可以进一步用于将设备秘密密钥加密和存储在安全性较低的ROM中。

Secure ROM的实现中可能存在的漏洞包括:

1. 从物理上将Secure ROM从Secure SoC中移除,将其放置在另一设备中,并尝试检索受保护的密钥。

2. 访问SecureROM和RAM之间的总线以检索受保护的密钥。

3. 在设备上运行的未经特权/未经授权的应用程序可以访问API,以从安全ROM检索密钥。

理想情况下,在设计合理的安全SoC中,不存在前两个漏洞。可以通过使用安全引导加载程序和正确的进程特权的实施来防止第三个漏洞,从而不允许未特权的应用程序运行和访问设备的受限内存位置。

内部RAM和安全进程。在安全SoC的内部RAM中分配用于秘密密钥或涉及秘密密钥的加密操作中间值的缓冲区,以防止秘密密钥可用于安全SoC之外的任何总线。

将内部RAM中的该存储区称为安全存储区。并非每个进程都应该访问该存储区。只有具有特殊操作系统特权的进程“安全进程”才能访问“安全存储区”。这类似于操作系统中具有管理特权或根特权的进程。

引导期间的操作系统将内存管理单元配置为仅允许对安全进程访问安全内存区域。同样重要的是,未经授权的用户请勿修改OS中的MMU配置代码,以访问安全存储区。

如本系列其他地方所讨论的,可以通过使用安全引导加载程序和代码签名来确保这一点。安全进程已配置为在设备启动期间启动。

操作系统应禁止任何未经授权的进程作为SecureProcess运行或启动新的Secure Process。如果设备支持,这可以防止任何下载的应用程序访问安全存储区以读取密钥。

由安全过程对秘密密钥执行的操作的结果通常是公共数据,例如加密数据或公共密钥。其他较少特权进程需要这些输出数据来执行操作,例如将输出数据传输到其他设备。特权较低的进程可以有几种调用安全进程的方法。

例如,假设安全进程在获取输入数据并开始执行之前先等待信号量。的输入数据缓冲器将是一个非安全存储器区域。特权级别较低的任何进程都可以释放输入缓冲区,并填充输入缓冲区并向安全进程发出信号,以开始执行。

安全过程在接收到信号后,使用秘密密钥对输入数据进行相应的加密操作。操作的输出放置在非安全存储器区域中,较少特权进程可以从该区域读取输出。

安全的引导加载程序和代码签名。密钥虽然受到硬件安全措施的保护,但必须通过某些API公开才能使用。必须确保无法修改设备的固件,以便未经授权的用户可以使用这些API从设备中提取秘密密钥。

固件还包含安全关键代码,例如处理安全关键硬件配置(例如内部RAM配置)以指定访问权限的代码。因此,必须拒绝任何覆盖设备固件组件的尝试。Secure Bootloader的存在可以确保这一点。

在启动之前,加载固件代码之前,Secure Bootloader会检查固件是否为真品,并在修改或更换设备固件后阻止设备启动。下面的图5显示了一个安全Bootloader实现的示例。嵌入式物联网学习路线领取

图5。公钥和私钥是由设备制造商生成的,用于签名和验证设备固件代码。设备制造商必须将私钥保密。

安全引导加载程序位于Secure SoC内部的写保护ROM上。将安全引导加载程序保留在写保护的ROM中可确保永远不会修改安全引导加载程序本身。

除了常规的引导初始化代码之外,SecureBootloader还包含固件代码的签名验证模块和用于验证固件代码的代码验证公钥。

固件代码使用设备制造商的代码验证私钥签名。安全启动加载程序在启动时通过使用代码验证公钥验证签名来检查代码的有效性。

尽管用于签名固件代码的私钥从未随设备一起发售,但设备制造商必须将其保密。用于签名固件代码的私钥保密性上的妥协使任何有权访问私钥的人都可以编写和签名安全引导加载程序可接受的代码。

如果设备的固件不可升级,则可以在没有安全启动加载程序的情况下,以更简单的方法强制执行启动加载程序中的安全级别。

在这种情况下,将整个固件写入只读存储器中并将引导加载程序配置为仅从只读存储器区域进行引导可以防止任何未经授权的固件组件在设备上运行,但是在许多情况下,不可升级的固件也会带来同样的问题设备上的许多限制。

有些文件(例如根CA证书)在修改后会导致设备安全性受到损害。此类文件还需要与设备的固件代码一起签名。

还有每个设备专用的文件,例如加密的密钥或设备证书,这些文件在修改后会阻止设备进行安全的数据传输,但不会损害设备的安全性。

这些设备专用文件的签名将在设备生产期间或设备固件升级期间引起开销,在此期间,设备制造商需要为每个设备签名固件代码。由于修改这些文件不会损害设备安全性,因此这些文件可以保存在设备中而无需进行签名。

加密和解密引擎。在许多安全协议实现中,由本系列前面讨论的密钥协商算法生成的共享机密用作主密钥,并生成用于加密和解密过程的子密钥。

当用作主密钥时,共享密钥将存储在设备中,直到协议指定的到期时间为止,并且生存期将为几天甚至几个月的量级,具体取决于用于数据传输的协议。

但是子键的生存期通常会在几秒钟的时间内变小。在这种情况下,共享机密的安全性要求更高,因此安全地存储在设备中。

但是,子密钥的安全要求并不像共享密钥或certificatePrivate-Keys之类的密钥那么重要。子密钥生成协议也将使得不可能从子密钥导出主密钥。

在用于加密和解密的密钥(子密钥)的安全性不是很关键的情况下,加密和解密引擎(模块)可以驻留在安全SoC之外。

子密钥在安全SoC内部生成,并传递到安全SoC外部的加密/解密引擎。在某些其他协议中,共享密钥或私钥本身用于加密/解密。

在这种情况下,加密/解密引擎应位于SoC内部,以防止密钥在Secure SoC外部的总线上可用。因此,可以根据用于加密和解密的密钥的安全性需求,将加密和解密引擎置于Secure SoC内部或外部。

系统定时。设备的数字证书通常带有有效期。有效期在不同的协议实现中会有所不同。

一些协议(例如SSL(安全套接字层))指定了几年或几十年的固定有效期,而其他协议(例如DTCP(数字传输内容保护)则指定了证书的无限有效期)。

嵌入式设备中的系统时间通常将具有用户界面以设置或修改系统时间。对于证书验证过程,任何设备都应维持与用户修改的系统时间不同的系统时间,以使用户无法修改系统时间以强制设备接受过期的证书。设备处于关闭状态后。

在许多情况下,设备处理有效期为20-30年或更长的证书时,未经授权修改系统时间并不是很关键。此时间范围比许多设备的寿命大得多。

而且,根CA在此时间范围内更新根证书的机会也很高。如果CA更改了根CA证书,则设备必须更新根CA证书和中间CA证书,并应从CA获取新的设备证书。嵌入式物联网学习路线领取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1020279.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅谈双十一背后的支付宝LDC架构和其CAP分析

本人汤波,superthem.com 圆领超级个体创始人,Github page地址:https://tbwork.github.io/ 看到很多人在盗用我的文章,还标记成原创,进行收费,非常令人作呕。 我的所有技术文章全部免费阅读,大家…

在Python中 作用域与命名空间的坑

前言: 嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 1. 命名空间 1.1 什么是命名空间 Namespace命名空间,也称名字空间,是从名字到对象的映射。 Python中,大…

VMware17 不可恢复错误mks解决方案

用的虚拟机VMware17版本,然后运行带HDR的unity程序,结果报错 网上找了很多解决方案,都没用。毕竟需要在不放弃虚拟机3D加速的情况下运行。 最终皇天不负有心人,亲测有效的方法: 在虚拟机名字.vmx文件里添加以下2行&a…

【整理】难得的中文开源数据集

搞大模型训练,最重要的就是高质量的数据集。 得数据者得天下。全球最大的AI开源社区Huggingface上,已经有5万多的开源数据集了,其中涉及中文的数据集只有区区可怜的151个。中国的AI产业要迎头赶上,中文的数据集是最大的短板之一。…

IOTE2023物联网展最新快讯|央企入驻,找物联网平台这一家就够了

IOTE 2023第20届国际物联网展深圳站即将于9月20-22日在深圳国际会展中心(宝安)启幕!航天科技控股集团股份有限公司旗下AIRIOT物联网平台亮相【工业物联网展区9B31-1展位】。 AIRIOT物联网平台定位于通用型物联网技术框架产品,以软…

oracle创建数据库以及用户,并导入dmp格式数据

oracle创建数据库以及用户,并导入dmp格式数据 安装可参考之前的文章https://blog.csdn.net/qq_43421954/article/details/132717546?spm1001.2014.3001.5501 首先创建表空间(也就是其他数据库所谓的数据库) 使用的是navicat,连接配置可以参…

python 异常

1.捕获异常 2.密码爆破 3.

Feign远程调用丢失请求头

前言 我们在写服务端项目的时候,总会限制对某些资源的访问,最常见的就是要求用户先登录才能访问资源,当用户登录后就会将此次会话信息保存进session,同时返回给浏览器指定的cookie键值,下次浏览器再次访问&#xff0c…

【虚拟现实】2023年VR技术的10个应用行业

1.医疗保健 现代医疗保健的培训方式离不开VR虚拟现实。。由于医疗行业的特殊性,不允许拿大量的病人来练手,但医疗又非常注重实践,一些新手医生就缺乏锻炼的机会,而VR虚拟现实技术很好的解决了这一问题。医生可以在高清晰、低延时…

【C++】搜索二叉树底层实现

目录 一,概念 二,实现分析 1. 插入 (1.)非递归版本 (2.)递归版本 2. 打印搜索二叉树 3.查找函数 (1.)非递归版本 (2.)递归版本 4. 删除函数&#x…

【Linux-Day13-生产者消费者模型】

生产者消费者模型 生产者消费者问题概述 生产者/消费者问题,也被称作有限缓冲问题。可以描述为:两个或者更多的线程共享同一个缓冲 区,其中一个或多个线程作为“生产者”会不断地向缓冲区中添加数据,另一个或者多个线程作为“消…

基于CNN-LSTM的时序预测MATLAB实战

一、算法原理 1.1 CNN原理 卷积神经网络具有局部连接、权值共享和空间相关等特性。卷积神经网络结构包含卷积层、激活层和池化层。 (a)二维卷积层将滑动卷积滤波器应用于输入。该层通过沿输入垂直和水平方向 移动滤波器对输入进行卷积,并计…

阿里云无影电脑:免费体验无影云电脑3个月

阿里云无影云电脑免费领取流程,免费无影云电脑配置为4核8G,可以免费使用3个月,阿里云百科分享阿里云无影云电脑(云桌面)免费申请入口、申请流程及免费使用限制条件说明: 目录 阿里云无影云电脑免费申请入…

汉威科技亮相上海传感器展并发表主题演讲,智能传感器大有可为

9月15日,第8届中国(上海)国际传感器技术与应用展览会圆满落幕,该展会吸引了逾400家传感领域国内外的企业、100余家专业传感应用单位、500余位传感大咖共同参与,展会观众达30000人。作为全球三大传感器展之一的盛会&…

2023年最热门的编程语言:前进的趋势和机会

2023年最热门的编程语言:前进的趋势和机会 2023年最热门的编程语言:前进的趋势和机会摘要引言1. 编程语言的热门趋势1.1 新兴编程语言的崛起1.2 编程语言的可持续性发展1.3 跨平台编程语言的兴起1.4 人工智能和机器学习编程语言的需求 2. 编程语言职业机…

Informatica使用操作流程--存储过程调用、序列生成器 使用案例5

映射 [创建]连接工作流 --创建工作流W_EMP_DEPT_COUNT,连接任务S_EMP_DEPT_COUNT,ctrls保存 --右击工作流-->通过任务启动工作流 存储数据的地方查验数据

00后卷王的软件测试面试秘籍(含文档)

前言 前段时间去面试了一个公司,成功拿到了offer,薪资也从12k涨到了20k,对于工作都还没两年的我来说,还是比较满意的,毕竟一些工作3、4年的可能还没我高。 我可能就是大家说的卷王,感觉自己年轻&#xff…

MybatisMybatisPlus 操作 jsonb 格式数据

最近有用到postgresql&#xff0c;里面的一个特色数据类型便是jsonb&#xff0c;和json差不多&#xff0c;但是查询比较快&#xff0c;关于概念&#xff0c;这里就提一句&#xff0c;不赘述。 我们先来看下用mybatisplus&#xff0c;首先是查询数据。 依赖&#xff1a; <d…

基于springboot车辆充电桩管理系统springboot000

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…

【百问百答】可靠性基础知识第八期

1、什么是加速度频谱密度值(ASD) ? 表示随机信号的各个频率分量所包的加速度方均值在频域上是如何分布的。通常用ASD表示。 2、什么是功率频谱密度值(PSD) ? 表示随机信号的各个频率分量所包的功率在频域上是怎样分布的。通常用PSD表示&#xff0c;单位&#xff1a;g2/Hz。 0…