58、嵌入式终端中间件安全与动态翻译虚拟化技术

嵌入式终端中间件安全与动态翻译虚拟化技术

在当今的计算机领域,嵌入式终端的安全以及虚拟化技术是备受关注的话题。本文将为大家介绍关于嵌入式终端中间件安全的相关技术,以及一种基于动态翻译的虚拟化模型。

嵌入式终端中间件安全:SEN XServer

SEN XServer在嵌入式终端中间件安全方面发挥着重要作用,它主要涉及操作管理、请求处理、资源控制以及策略文件配置等方面。

操作与请求处理

首先,我们来看一些基本的操作和对应的解释,如下表所示:
| 操作 | 解释 |
| — | — |
| Window:addchild | 将子窗口附加到父窗口 |
| Window:destroy | 销毁窗口 |
| Window:map | 在屏幕上显示窗口 |
| Drawable:draw | 在可绘制对象上绘制 |
| Drawable:copy | 从可绘制对象复制像素 |
| Cursor:assign | 将光标关联到窗口 |

同时,对于X请求和资源的操作集合也有明确规定,例如CreateWindow这个X请求需要三个操作:
1. 对于父窗口的Window:addchild操作。
2. 对于使用的像素图的Drawable:copy操作。
3. 对于使用的光标的Cursor:assign操作。

SEN XServer处理X请求的步骤如下:
1. 识别SEN XServer接收X请求的连接。
2. 通过连接识别所属的域。
3. 识别所有X资源。
4. 检查该域是否有权限执行X请求所需的所有操作。
5. 如果该域有执行权限,SEN XServer处理X请求;否则,丢弃该请求。

下面是这个处理流程的mermaid流程图:

graph TD;
    A[接收X请求] --> B[识别连接];
    B --> C[识别域];
    C --> D[识别X资源];
    D --> E[检查权限];
    E -- 有权限 --> F[处理请求];
    E -- 无权限 --> G[丢弃请求];
资源控制

SEN XServer对X资源的使用进行管理,主要是对内存消耗的管理。内存类型分为以下三种:
1. 非共享内存(RT1):SEN XServer创建非共享X资源时消耗的内存。
2. 共享内存(RT2):SEN XServer创建共享X资源时消耗的内存。
3. 工作内存(RT3):SEN XServer工作和管理X客户端时消耗的内存。

对于非共享内存,当创建非共享X资源时,SEN XServer会将一定量的非共享内存添加到该资源所有者的内存消耗中。如果X客户端的内存消耗超过指定的最大内存量,SEN XServer将不再为其分配内存。而对于共享内存和工作内存,由于共享X资源的所有者是SEN XServer,工作内存也用于SEN XServer,所以SEN XServer会将相应的内存量添加到自身的内存消耗中。

策略文件

策略文件由域策略、访问控制策略和资源控制策略组成,它定义了以下三个关键元素:
1. 域策略 :定义了每个域中X客户端的完整路径名,SEN XServer可以通过X客户端的完整路径名来识别其所属的域。
2. 访问控制策略 :定义了各个域对X资源有权执行的操作。具有执行操作权限的域称为源域,X资源所有者所属的域称为目标域。策略文件为每个源域针对目标域定义了操作。
3. 资源控制策略 :定义了每个域的最大内存量(以字节为单位)。

以下是一个策略文件的示例:

[SYSTEM 2097152] /usr/X11R6/bin/xcalc /usr/X11R6/bin/xclock
[DOWNLOAD 1048576] /usr/local/bin/dlbrowser
/usr/local/bin/dlmessenger
domain SYSTEM {
    {SYSTEM Window:addchild}
    {SYSTEM Drawable:copy}
    {SYSTEM Cursor:assign}
    {DOWNLOAD Window:addchild}
    {DOWNLOAD Drawable:copy}
    {DOWNLOAD Cursor:assign}
}
domain DOWNLOAD {
    {DOWNLOAD Window:addchild}
    {DOWNLOAD Drawable:copy}
    {DOWNLOAD Cursor:assign}
}

在这个示例中,定义了两个域:SYSTEM域和DOWNLOAD域。 /usr/X11R6/bin/xcalc /usr/X11R6/bin/xclock 属于SYSTEM域,它们各自最多可消耗2097152字节的内存; /usr/local/bin/dlbrowser /usr/local/bin/dlmessenger 属于DOWNLOAD域,各自最多可消耗1048576字节的内存。同时,不同域的客户端对不同域的X资源执行操作的权限也有明确规定。

动态翻译虚拟化模型

除了嵌入式终端中间件安全,虚拟化技术也是本文的一个重要内容。传统的微内核和虚拟机监视器(VMM)在运行操作系统方面各有优缺点。

微内核与VMM对比

微内核是一种小型操作系统,仅支持最少的API集合,它具有高度的可移植性,但提供的接口是抽象的硬件接口,与现有硬件接口不同,因此运行现有操作系统时需要修改其架构相关部分。而虚拟机监视器则能让多个操作系统在单个硬件上运行,其提供的接口与特定的现有硬件接口几乎相同,运行操作系统时无需或只需进行最小修改,但它的实现高度依赖处理器架构和特定硬件,可移植性较低。

类型 优点 缺点
微内核 高度可移植性 接口不灵活,与其他真实硬件接口不兼容,运行现有操作系统需修改架构相关部分
虚拟机监视器 无需修改或只需最小修改即可运行操作系统 实现高度依赖处理器架构和特定硬件,可移植性低
新的虚拟化模型

为了结合微内核和虚拟机监视器的优点,我们提出了一种新的虚拟化模型:在便携式微内核上构建灵活的动态翻译器。该模型的概述如下:

在便携式微内核上运行灵活的机器模拟器,模拟器提供与现有架构接口兼容的接口。例如,模拟器可以提供架构A的接口,执行未修改的操作系统,并且可以重新配置以支持不同架构的操作系统。模拟器的实现依赖于微内核接口,而不依赖于主机架构。底层微内核隐藏硬件接口,为模拟器提供统一接口。当底层硬件发生变化时,只需修改微内核中与架构相关的小部分,从而大大降低了系统的移植成本。

相关工作

在介绍具体的实现之前,我们先了解一些相关的现有技术:
- Bochs :一个模拟x86架构机器的机器模拟器,能够运行基于x86架构构建的未修改的来宾操作系统。其代码用C++编写,可以在各种操作系统上编译运行,但支持新硬件平台的可移植性依赖于主机操作系统的实现。
- Xen :利用了称为准虚拟化的虚拟化技术,提高了来宾操作系统的性能,但需要对要虚拟化的来宾操作系统进行修改。此外,Xen的实现高度依赖x86架构,可移植性较低。
- VMware Workstation :可以运行基于x86架构构建的未修改的操作系统,作为应用程序运行在Linux和Windows等通用操作系统上。它通过将VMM作为设备驱动程序安装在特权级别,以使用特权级指令来提高来宾操作系统的运行性能,但同时增加了对主机操作系统和主机硬件架构的依赖性。

原型系统实现

我们通过将QEMU机器模拟器移植到L4Ka::Pistachio微内核(简称L4)并结合Kenge环境,实现了该模型的原型系统。

  • QEMU :是一个便携式机器模拟器,模拟包括CPU、内存和硬件设备在内的整个计算机接口。它运行在Linux、Windows、Mac OS X和Free BSD等通用操作系统上,支持多种处理器架构作为主机和来宾架构。为了提供运行来宾程序的虚拟CPU,QEMU采用动态翻译技术,将来宾指令拆分为由主机指令组成的伪微代码,并将翻译后的代码块存储在缓冲区中作为翻译块(TB)进行重用。QEMU还提供虚拟设备,原QEMU的虚拟设备使用主机通用操作系统的函数和库实现,由于L4不支持这些库,我们对虚拟设备进行了修改以在L4环境中运行。
  • L4Ka::Pistachio :是一个便携式微内核,仅提供支持线程管理、地址空间管理和IPC的基本功能。现代操作系统支持的功能被移到用户级别,并实现为服务器和库,例如设备管理被实现为设备服务器,应用程序通过与设备服务器交互来访问硬件。
  • Kenge和Iguana :由于L4仅提供基本功能,我们使用Kenge环境来帮助开发L4应用程序。Kenge包括系统构建环境、库和服务器,其中Iguana服务器管理内存、CPU等资源,并为L4中的应用程序提供创建和删除线程、映射和取消映射内存区域等高级功能。QEMU在L4上使用Kenge提供的一些POSIX函数,但并非所有QEMU使用的POSIX函数都由Kenge提供,因此我们添加了一些函数以帮助移植。
虚拟设备实现

在L4环境中,QEMU的虚拟设备有两种不同的实现模型:
- 设备服务器模型 :设备服务器是运行在L4上的特殊应用程序,负责管理特定硬件设备的I/O。尽管设备服务器运行在非特权模式下,但被授予访问硬件设备的权限。QEMU通过L4提供的IPC功能与设备服务器交互,当来宾操作系统向虚拟硬件写入数据时,通过IPC将数据传输到相应的设备服务器,设备服务器接收数据后调用设备驱动程序函数执行实际的设备输出。当多个来宾操作系统共享单个真实设备时,设备服务器需要进行输入输出的仲裁,但该模型的缺点是来宾操作系统与设备服务器之间频繁的IPC会触发频繁的上下文切换。
- 内部设备驱动模型 :QEMU通过与自身链接的模块直接与硬件接口。在这种模型中,由于数据不经过设备服务器,因此没有IPC开销,但一个真实设备不能在多个来宾操作系统之间共享。例如,移植后的QEMU使用VGA设备驱动程序库访问VGA设备,来宾操作系统直接写入真实的VRAM。

综上所述,SEN XServer为嵌入式终端中间件提供了安全保障,而基于动态翻译的虚拟化模型则结合了微内核和虚拟机监视器的优点,为操作系统的运行提供了新的解决方案。通过这些技术,我们可以提高嵌入式终端的安全性和灵活性,同时降低系统的移植成本。

嵌入式终端中间件安全与动态翻译虚拟化技术

性能评估与未来展望

在实现了基于动态翻译的虚拟化模型的原型系统后,我们对其性能进行了评估。评估结果显示,该原型系统的性能并不理想。这主要是由于在运行过程中存在一些性能瓶颈,例如动态翻译过程中的开销、频繁的上下文切换等。

为了改善系统性能,我们提出了一些未来的优化方向:
1. 优化动态翻译算法 :对QEMU所采用的动态翻译技术进行优化,减少翻译过程中的时间开销。可以研究更高效的指令拆分和代码生成方法,提高翻译块(TB)的生成和重用效率。
2. 减少上下文切换 :针对设备服务器模型中频繁的IPC导致的上下文切换问题,可以探索新的通信机制或优化IPC流程,降低上下文切换的频率和开销。
3. 硬件加速 :考虑利用硬件加速技术,如GPU加速、FPGA加速等,来提高系统的整体性能。通过将一些计算密集型任务卸载到硬件加速器上,可以减轻CPU的负担,提高系统的运行速度。

应用场景与潜在价值

这种结合了嵌入式终端中间件安全和动态翻译虚拟化技术的方案,具有广泛的应用场景和潜在价值:
1. 嵌入式设备安全 :在嵌入式设备中,安全性是至关重要的。SEN XServer的访问控制和资源控制策略可以有效防止恶意软件的攻击和资源滥用,保护设备的安全运行。例如,在工业控制、智能家居等领域,嵌入式设备可能会面临各种安全威胁,通过应用这些安全技术,可以确保设备的稳定性和可靠性。
2. 多操作系统环境 :动态翻译虚拟化模型允许在同一硬件上同时运行多个不同的操作系统,这对于需要同时支持多种应用程序的场景非常有用。例如,在企业级服务器中,可以同时运行Windows和Linux操作系统,满足不同用户的需求。
3. 硬件兼容性 :由于模拟器可以重新配置以支持不同架构的操作系统,因此可以提高硬件的兼容性。对于一些老旧的硬件设备,可以通过运行模拟器来支持新的操作系统和应用程序,延长硬件的使用寿命。
4. 开发与测试 :在软件开发和测试过程中,虚拟化技术可以提供一个隔离的环境,方便开发人员进行调试和测试。开发人员可以在模拟器上运行不同版本的操作系统和应用程序,而不会影响到实际的硬件设备。

总结

本文介绍了嵌入式终端中间件安全和动态翻译虚拟化技术的相关内容。SEN XServer通过操作管理、请求处理、资源控制和策略文件配置等功能,为嵌入式终端中间件提供了安全保障。而基于动态翻译的虚拟化模型则结合了微内核和虚拟机监视器的优点,在便携式微内核上构建灵活的动态翻译器,实现了系统的高可移植性和兼容性。

虽然目前原型系统的性能还存在一些问题,但通过未来的优化和改进,有望进一步提高系统的性能和稳定性。这些技术的应用将为嵌入式设备的安全运行、多操作系统环境的支持以及硬件兼容性的提升等方面带来显著的价值。

以下是整个技术方案的关键要点总结:
| 技术要点 | 描述 |
| — | — |
| SEN XServer | 实现嵌入式终端中间件的安全管理,包括操作管理、请求处理、资源控制和策略文件配置 |
| 动态翻译虚拟化模型 | 在便携式微内核上构建灵活的动态翻译器,结合微内核和虚拟机监视器的优点 |
| QEMU | 便携式机器模拟器,模拟整个计算机接口,采用动态翻译技术运行来宾程序 |
| L4Ka::Pistachio | 便携式微内核,提供基本的线程管理、地址空间管理和IPC功能 |
| Kenge | 辅助开发L4应用程序的环境,提供系统构建环境、库和服务器 |
| 虚拟设备 | 提供现有硬件设备的接口,有设备服务器和内部设备驱动两种实现模型 |

通过对这些技术的深入研究和应用,我们可以为嵌入式终端的安全和虚拟化提供更加有效的解决方案,推动相关领域的发展。

下面是整个系统的工作流程mermaid流程图:

graph LR;
    A[嵌入式终端] --> B[SEN XServer];
    B --> C[资源控制];
    B --> D[访问控制];
    E[便携式微内核L4] --> F[QEMU机器模拟器];
    F --> G[虚拟设备];
    G --> H[设备服务器模型];
    G --> I[内部设备驱动模型];
    C --> J[内存管理];
    D --> K[操作权限检查];
    F --> L[动态翻译];
    L --> M[翻译块重用];

这个流程图展示了嵌入式终端中间件安全和动态翻译虚拟化技术的整体工作流程,从嵌入式终端到SEN XServer的安全管理,再到微内核上运行的模拟器和虚拟设备,以及动态翻译和资源管理等关键环节,清晰地呈现了整个系统的架构和运行机制。

总之,嵌入式终端中间件安全和动态翻译虚拟化技术为我们提供了一种新的思路和方法,在提高系统安全性、可移植性和兼容性方面具有重要的意义。随着技术的不断发展和完善,相信这些技术将在更多的领域得到广泛的应用。

源码地址: https://pan.quark.cn/s/d1f41682e390 miyoubiAuto 米游社每日米游币自动化Python脚本(务必使用Python3) 8更新:更换cookie的获取地址 注意:禁止在B站、贴吧、或各大论坛大肆传播! 作者已退游,项目不维护了。 如果有能力的可以pr修复。 小引一波 推荐关注几个非常可爱有趣的女孩! 欢迎B站搜索: @嘉然今天吃什么 @向晚大魔王 @乃琳Queen @贝拉kira 第三方库 食用方法 下载源码 在Global.py中设置米游社Cookie 运行myb.py 本地第一次运行时会自动生产一个文件储存cookie,请勿删除 当前仅支持单个账号! 获取Cookie方法 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 按刷新页面,按下图复制 Cookie: How to get mys cookie 当触发时,可尝试按关闭,然后再次刷新页面,最后复制 Cookie。 也可以使用另一种方法: 复制代码 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 控制台粘贴代码并运行,获得类似的输出信息 部分即为所需复制的 Cookie,点击确定复制 部署方法--腾讯云函数版(推荐! ) 下载项目源码和压缩包 进入项目文件夹打开命令行执行以下命令 xxxxxxx为通过上面方式或取得米游社cookie 一定要用双引号包裹!! 例如: png 复制返回内容(包括括号) 例如: QQ截图20210505031552.png 登录腾讯云函数官网 选择函数服务-新建-自定义创建 函数名称随意-地区随意-运行环境Python3....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值