OPTEE之ARM安全扩展
目录
一、BTI(Branch Target Identification)
二、如何使能OP-TEE core的BTI
三、如何使能TA的BTI
一、BTI(Branch Target Identification)
分支目标识别(BTI)是ARMv8.5(及Armv9.0)扩展,它为间接分支及其目标提供了控制流完整性(CFI)保护,从而有助于限制JOP(Jump Oriented Programming)攻击。
ARM8.5-A引入了分支目标指令(BTI),BTI也被称为着陆台(landing pads)。可以对处理器进行配置,使间接分支(BR和BLR)只允许target着陆台指令。如果间接分支的目标不是目标着陆台,则会生成分支目标异常。
二、如何使能OP-TEE core的BTI
要在支持BTI的CPU上的TEE内核中使用BTI,请启用CFG_CORE_BTI选项。
OP-TEE内核利用了GCC/clang工具链中的一些内置组件。因此,为了使用CFG_CORE_BTI选项,请确保GCC工具链已使用——enable-standard-branch-protection构建,否则OP-TEE将无法构建。默认库如libgcc.a是用标志(-branch-protection=none)构建的,因此与启用分支保护不兼容。Arm GNU编译器团队正在寻找为用户提供方便访问支持BTI的库的方法。在短期内,他们计划创建文档,使用户能够更容易地自己构建支持BTI的库。从长远来看,他们将开始讨论如何确保支持BTI的库自动提供给用户。请联系GCC团队了解更多信息。同时,构建一个启用BTI的GCC工具链是可能的,请参考Q:如何构建启用BTI的GCC?(OPTEE常见13类问题与解答_安全二次方security²的博客-CSDN博客)
clang toolchain也存在同样的问题。因此,当使用clang构建带有CFG_CORE_BTI=y的OP-TEE时,必须在启用BTI保护的情况下构建builtins(在llvm的“compiler-rt”项目中找到)。关于如何在启用BTI的情况下构建compiler-rt,我们有一些说明。这些可以在Q:如何构建启用了BTI的LLVM编译器?(OPTEE常见13类问题与解答_安全二次方security²的博客-CSDN博客)
三、如何使能TA的BTI
要使用BTI对TA和用户模式库的支持,请启用CFG_TA_BTI选项。这将确保OP-TEE提供给TA和TA的所有库都是用BTI选项构建的。
当由ldelf加载TA时,在启用TA保护之前,将在运行时检查它们在ELF中的BTI NOTE属性。
在构建TA时,需要确保所使用的任何外部库都具有分支保护。这可以通过使用带选项-n的readelf命令检查库来完成。启用BTI的库将在.note.gnu.property section中拥有BTI NOTE属性。如果不是这样,编译将停止并发出警告,这样做是为了警告用户。
注意:BTI支持目前与CFG_VIRTUALIZATION和CFG_WITH_PAGER选项不兼容。
参考:Arm Security Extensions — OP-TEE documentation documentation
相关文章:
OPTEE之ARM安全扩展
目录 一、BTI(Branch Target Identification) 二、如何使能OP-TEE core的BTI 三、如何使能TA的BTI 一、BTI(Branch Target Identification) 分支目标识别(BTI)是ARMv8.5(及Armv9.0)扩展,它为间接分支及其目标提供了控制流完整性(CFI)保护,从而有助于限…...

Vue [Day4]
组件的三大组成部分 组件的样式冲突 scoped <style scoped></style>data 是一个函数 components/BaseButton.vue <template><div class"BaseButton"><button click"count--">-</button><span>{{ count }}</…...
google chrome 官方下载
官方渠道: 1、链接直接打开就可以下载,最新版实时更新。 32位(x86):https://dl.google.com/tag/s/installdataindex/update2/installers/ChromeStandaloneSetup.exe 64位(x64):htt…...

Misc取证学习
文章目录 Misc取证学习磁盘取证工具veracryto挂载fat文件DiskGenius 磁盘取证例题[RCTF2019]disk 磁盘[](https://ciphersaw.me/ctf-wiki/misc/disk-memory/introduction/#_2)内存取证工具volatility 内存取证例题数字取证赛题0x01.从内存中获取到用户admin的密码并且破解密码 …...
vue打包到jar资源访问被shiro拦截
1.shiro放发对静态资源的拦截// filterMap.put("/202307171550/**", "anon"); // filterMap.put("/config/**", "anon"); // filterMap.put("/index.html", "anon"); 2.装载资源访问 priva…...
选择排序(指针法)
描述 用选择法对10个整数排序。 输入 输入包含10个整数,用空格分隔。 输出 输出排序后的结果,用空格分隔。 输入样例 1 3 1 4 1 5 9 2 6 5 3 输出样例 1 1 1 2 3 3 4 5 5 6 9 输入样例 2 2 4 6 8 10 12 14 16 18 20 输出样例 2 2 4 6 8 1…...

8.6 day07 休息+剑指offer
文章目录 06从尾到头打印链表03数组中重复的数字04二维数组中的查找05 替换空格06重建二叉树背英语单词,看了二十页 06从尾到头打印链表 从尾到头遍历链表 方法一就是用栈来辅助,栈的结构是先进后出的,将链表中的元素加入到栈中去࿰…...

K8S系列文章 之 容器存储基础 Volume
Volume Volume是容器数据卷。我们经常创建删除一些容器,但有时候需要保留容器中的一些数据,这时候就用到了Volume。它也是容器之间数据共享的技术,可以将容器中产生的数据同步到本地。实际就是把容器中的目录挂载到运行着容器的服务器或个人…...

【CHI】架构介绍
Learn the architecture - Introducing AMBA CHI AMBA CHI协议导论--言身寸 1. AMBA CHI简介 一致性集线器接口(CHI)是AXI一致性扩展(ACE)协议的演进。它是Arm提供的高级微控制器总线架构(AMBA)的一部分。…...

hcip的ospf综合实验
题目 拓扑图 IP地址分配及环回 R1 < Huawei>sy Enter system view, return user view with CtrlZ. [Huawei]sysname r1 [r1]int g0/0/0 [r1-GigabitEthernet0/0/0]ip add 172.16.0.1 27 Aug 6 2023 19:03:33-08:00 r1 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol I…...

AP5179 高端电流采样降压恒流驱动IC SOP8 LED车灯电源驱动
产品描述 AP5179是一款连续电感电流导通模式的降压恒流源,用于驱动一颗或多颗串联LED输入电压范围从 5 V 到 60V,输出电流 最大可达 2.0A 。根据不同的输入电压和外部器件, 可以驱动高达数十瓦的 LED。内置功率开关,采用高端电流…...
vue3+vite项目配置ESlint、pritter插件
配置ESlint、pritter插件 在 Vue 3 Vite 项目中,你可以通过以下步骤配置 ESLint 和 Prettier 插件: 安装插件: 在项目根目录下,打开终端并执行以下命令安装 ESLint 和 Prettier 插件: npm install eslint prettier e…...

K8S kubeadm搭建
kubeadm搭建整体步骤 1)所有节点进行初始化,安装docker引擎和kubeadm kubelet kubectl 2)生成集群初始化配置文件并进行修改 3)使用kubeadm init根据初始化配置文件生成K8S的master控制管理节点 4)安装CNI网络插件&am…...

Squeeze-and-Excitation Networks阅读笔记一
文章目录 Abstract1 INTRODUCTION Abstract 卷积算子(convolution operator)是卷积神经网络(cnn)的核心组成部分,它使网络能够通过融合每层局部接受域内的空间和通道信息来构建信息特征。广泛的先前研究已经调查了这种…...

LabVIEW开发3D颈动脉图像边缘检测
LabVIEW开发3D颈动脉图像边缘检测 近年来,超声图像在医学领域对疾病诊断具有重要意义。边缘检测是图像处理技术的重要组成部分。边缘包含图像信息。边缘检测的主要目的是根据强度和纹理等属性识别图像中均匀区域的边界。超声(US)图像存在视觉…...
python10.4.3
10.4.3重构 错误实例 import jsondef laoyonghu(): #获取老用户名字filenameusername.jsonwith open(filename) as f:usernamejson.load(f)return usernamedef xinyonghu(): #获取新用户名字filenameusername.jsonusernameinput("whats your name:")with ope…...

系统架构设计高级技能 · 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】
系列文章目录 系统架构设计高级技能 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】 系统架构设计高级技能 系统质量属性与架构评估(二)【系统架构设计师】 系统架构设计高级技能 软件可靠性分析与设计…...

Vue中,$forceUpdate()的使用
在Vue官方文档中指出,$forceUpdate具有强制刷新的作用。 那在vue框架中,如果data中有一个变量:age,修改他,页面会自动更新。 但如果data中的变量为数组或对象,我们直接去给某个对象或数组添加属性,页面是识…...

K8s中的Ingress
1.把端口号对外暴露,通过ip端口号进行访问 使用Service里面的NodePort实现 2.NodePort缺陷 在每个节点上都会起到端口,在访问时候通过任何节点,通过节点ip暴露端口号实现访问 意味着每个端口只能使用一次,一个端口对应一个应用…...
c++调用ffmpeg api录屏 并进行udp组播推流
代码及工程见https://download.csdn.net/download/daqinzl/88155241 开发工具:visual studio 2019 播放,采用ffmpeg工具集里的ffplay.exe, 执行命令 ffplay udp://224.1.1.1:5001 主要代码如下: #include "pch.h" #include <iostream>…...

UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...

linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...