DEN0024A_v8_architecture_PG-17.Security

本文深入探讨了ARM处理器中的TrustZone技术,旨在防止软件和简单硬件攻击,保护密码和加密密钥等敏感信息。介绍了安全系统的基本概念,包括保密性、完整性和可用性原则,并讨论了在开放系统环境中实现安全性的挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DEN0024A_v8_architecture_PG-17.Security

【translated by sky8336, 2019.06.07, Shanghai】

Chapter 17 Security 

提供一定安全级别的系统(可信系统)是一种保护资产(例如密码和加密密钥或信用卡详细信息)免受一系列可信攻击的系统,以防止它们被复制、损坏或不可用。

 

安全性通常由保密性、完整性和可用性原则定义。机密性是密码和加密密钥等资产的关键安全问题。防御修改和真实性的证明对于安全软件和用于安全的片上秘密是至关重要的。可信系统的例子可能包括为移动支付输入密码、数字权限管理和电子票务。在开放系统的世界中,安全性更难实现,因为在开放系统中,您可以在平台上下载各种各样的软件,而无意中也下载了恶意或不可信的代码,这些代码可能会篡改您的系统。

 

移动设备可以用来观看视频、听音乐、玩游戏,或者浏览网页和访问金融服务。这要求用户和银行或服务提供者都信任设备。该设备运行一个复杂的操作系统,具有高度的连通性,可能容易受到恶意软件的攻击。您可以通过软件系统设计实现某种程度的安全性,但是您可以通过CPU和系统级内存分区获得更高级别的保护。

 

ARM处理器包括特定的硬件扩展,以支持构建可信系统。编写可信操作系统或可信执行环境(TEE)系统超出了本书的范围。但是,如果您设置了Security部分字段来实现ARMv7安全扩展,请注意,这对操作系统和非特权代码(换句话说,不属于可信系统的代码)施加了一些限制。

 

软件和硬件攻击可分为以下几类:

软件攻击(Software attacks)恶意软件的攻击通常不需要对设备进行物理访问,并且可以利用操作系统或应用程序中的漏洞。

简单硬件攻击(Simple hardware attacks):这些攻击通常是被动的,大多是非破坏性的,需要访问设备和暴露在电子设备中,并使用常见的工具,如逻辑探头和JTAG运行控制单元。

实验室硬件攻击(Laboratory hardware attack):这种攻击需要复杂而昂贵的工具,如聚焦离子束(FIB)技术或功率分析技术,而且更常用来攻击智能卡设备。

 

TrustZone技术旨在防止软件和简单硬件的攻击。

 

17.1 TrustZone hardware architecture 

 

 

 

 

 

 

 

-------------------

【end-2019.06.】

 

### DEN0024A v8 架构编程指南概述 DEN0024A 是 ARM 官方发布的关于 ARMv8-A 架构的编程指南,旨在帮助开发者深入了解该架构的设计理念及其特性。ARMv8-A 是一种支持 64 位计算能力的处理器架构,在兼容传统 32 位指令集的同时引入了许多新功能以提升性能和安全性。 #### 主要内容概览 此文档涵盖了多个方面的技术细节,包括但不限于以下主题: - **架构基础** 描述了 ARMv8 的基本概念以及其与前代版本的区别[^1]。例如,它介绍了如何通过 EL(Exception Level)来定义特权级别,并解释了 AArch64 和 AArch32 这两种执行状态之间的切换机制。 - **寄存器模型** 提供了一个详细的寄存器结构说明,其中涉及通用寄存器、状态控制寄存器以及其他特殊用途寄存器。对于 AArch32 模式下的上下文保存数据结构 `cpu_context_t` ,包含了 R0-R3、LR(R14)、SCR、SPSR 及 SCTLR 等寄存器的信息[^3]。 - **内存管理单元(MMU)** 阐述了虚拟地址到物理地址映射的过程,重点讨论了页表格式和支持的大页面选项。这部分还探讨了缓存一致性维护策略。 - **异常处理框架** 对中断控制器接口进行了深入分析,并描述了各类异常条件的发生过程及其恢复流程。此外,也提到了安全扩展(Security Extensions),即 TrustZone 技术的应用场景。 - **调试与跟踪设施** 列举了一系列用于开发阶段诊断问题的功能模块,比如 Performance Monitors Unit(PMU) 和 Embedded Trace Macrocell(ETM)。 以下是基于上述资料编写的一个简单示例程序片段展示如何判断当前运行模式是否处于AArch64状态: ```c #include <stdint.h> uint64_t get_current_el(void){ uint64_t result; asm volatile ("mrs %0, CurrentEL" : "=r"(result)); return result >> 2; // Extract Exception level from bits [3:2]. } int main(){ if(get_current_el() >= 3 && ((get_current_el()%2)==0)){ printf("Running in AArch64 state at exception level %lu.\n",get_current_el()); }else{ printf("Not running in full AArch64 mode or lower privilege levels detected."); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值