1. 为什么会出现这种技术?
为了安全,例如:保护指纹虹膜的生物特征数据
2. 为了确保数据安全各家公司都做了些什么?
Arm公司提出的了trustzone技术,用一根安全总线(称为NS位)来判断当前处于secure world还是non-secure world状态,状态的切换由ATF(arm trusted firmware)来完成
3. 有哪些Normal world os
Linux,Android
4. 有哪些secure world os
OP-TEE,Trusty,QSEE,SierraTEE
5. 什么是TEE?
TEE全称为Trusted execute environment,也就是信任执行环境。TEE是基于trustzone技术搭建的安全执行环境
6. TEE需要硬件支持吗?
是的,硬件软件缺一不可,两者相辅相成。所谓的硬件是集成到处理器中的功能
7. TEE硬件视图
8. TEE软件视图
9. TEE OS是统一的吗?
不是,目前各家厂商和组织都有各自的实现方式,但是所有方案的外部接口都会遵循GP(GlobalPlatform)标准
10. 各家厂商和组织的TEE OS到底有何区别?
TA的添加和加载时的校验有所区别
11. OPTEE-OS属于哪家厂商的?
属于Trustonic的
12. OPTEE-OS全称是什么?
Open-source Portable Trusted Execution Environment OS
13. 到底是如何实现安全的呢?
当处于secure world状态,那么就会执行TEE OS部分的代码,当处于non-secure world状态时,就执行linux kernel部分的代码
14. Linux内核能直接访问TEE部分的资源吗?
Linux kernel不能直接访问TEE部分的资源
15. Linux 内核如何才能访问TEE部分的资源呢?
Linux kernel能通过特定的TA(Trust Appliaction)和CA(Client Application)来访问TEE部分特定的资源
16. TA都做了些什么?
处理保密信息,如信用卡pin码,私有密码,客户数据,受DRM (Digital Rights Management,数字版权管理)保护的媒体;
为正常内核提供服务,以便不用协调正常内核就可以充分利用保密信息
17. OP-TEE都包括些什么内容?
Secure world OS(optee_os)、normal world client(optee_client)、test suite(optee_test/xtest)以及linux驱动
18. OP-TEE软件架构
产品开发团队负责开发一个运行在linux上的client application(CA)和一个运行在OP-TEE上的trusted application(TA),CA使用TEE client API与TA通信,并且从TA获取安全服务。CA和TA使用共享内存进行通信。
19. TEE启动流程
理论上来说,在启动过程中,OP-TEE必须尽可能早的启动(bootloader的运行优先于OP-TEE会带来一个缺陷,触碰敏感数据)。在一个典型的linux启动过程中,rom bootloader加载/执行一个第一阶段bootloader(如:SPL,MLO,SBL1,FSBL),这个第一阶段bootloader然后执行一个第二阶段bootloader(如:U-Boot,LittleKernel),这个第二阶段bootloader会执行linux内核,所有的这些过程来自一个安全世界上下文。
在一个基于ARMv7的处理器上,附有TEE的典型启动流程是SPL加载OP-TEE和U-Boot,然后跳转到OP-TEE,一旦OP-TEE初始化完毕,OP-TEE就会切换到非安全上下文,并且跳转到U-Boot中。OP-TEE代码会继续放在内存中,以便为linux内核提供安全服务。
在一个基于ARMv8的处理器上,TEE启动流程还涉及到一个SPL加载ARM Trusted firmware的步骤。SPL跳转到arm trusted firmware,这个firmware随后与OP-TEE共同协作,OP-TEE转而跳转到处于非安全上下文的U-Boot中。
在一个ARMv8平台上,ARM Trusted firmware提供一个监视器代码去管理安全世界和非安全世界之间的切换,而在ARMv7平台上这一功能是被嵌入到OP-TEE中的。
20. OP-TEE对linux的支持情况是怎样的?
针对OP-TEE的linux内核驱动出现在内核版本4.12及其以上的版本,如果您运行的内核版本较老,那么您需要backport 补丁(https://lwn.net/Articles/716737/)。当然您也需要做以下操作来使能此驱动:
20.1 设置内核配置项:CONFIG_OPTEE=y
20.2 添加设备树节点(可以参考这里https://github.com/nodeax/linux-at91/commit/6f4de47f0265d75a7d3a1335b5191d464d611ebe)
(可选操作:编译OP-TEE OS时使能CFG_DT=y,这样就能在运行时添加必要的节点)
21. OP-TEE OS为TA提供了安全数据存储设备
数据要么以某种加密/授权的方式存储在linux文件系统/data/tee中,要么就是存储在一个Emmc RPMB(Replay Protected Memory Block,重放保护内存块)的分区中
22. TEE能减少硬件成本
TEE能替代专用的安全芯片。
23. TEE能最小化应用程序的修改
为了访问硬件特性,许多安全芯片给用户空间程序提供OpenSSL引擎接口。一个相同的模型能够通过开发一个TEE client app作为OpenSSL引擎与TA之间的接口,因此能够最小化用户空间程序的任何修改。Trusted Application将需要实现密钥管理和加密操作等接口。OP-TEE OS包含libtomcrypt,这个库提供各种各样的对称/非对称/椭圆曲线加密函数,因此TA 大部分工作是负责输入校验和调用合适的OP-TEE 核心API
24. TEE加密操作架构示例
25. 参考资料
https://www.timesys.com/security/trusted-software-development-op-tee/
什么是OPTEE-OS的更多相关文章
-
<;OPTEE>;Trusted Application结构分析
最近又开始和Trusted Zone打起了交道,需要把Linaro开发的开源安全系统optee os移植到实验室的老板子上.不过导师要求我先开发一个应用,在普通环境和安全环境分别有一个程序,称为hos ...
-
NodeJs之OS
OS Node.js提供了一些基本的底层操作系统的模块OS. API var os = require('os'); console.log('[arch] 操作系统CPU架构'+os.arch()) ...
-
Node.js:OS模块
os模块,可以用来获取操作系统相关的信息和机器物理信息,例如操作系统平台,内核,cpu架构,内存,cpu,网卡等信息. 使用如下所示: const os = require('os'); var de ...
-
Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验
Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...
-
Mac OS 使用 Vagrant 管理虚拟机(VirtualBox)
Vagrant(官网.github)是一款构建虚拟开发环境的工具,支持 Window,Linux,Mac OS,Vagrant 中的 Boxes 概念类似于 Docker(实质是不同的),你可以把它看 ...
-
Mac OS、Ubuntu 安装及使用 Consul
Consul 概念(摘录): Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,比如 Airbnb 的 SmartStac ...
-
java 利用ManagementFactory获取jvm,os的一些信息--转
原文地址:http://blog.csdn.net/dream_broken/article/details/49759043 想了解下某个Java项目的运行时jvm的情况,可以使用一些监控工具,比如 ...
-
让 ASP.NET vNext 在 Mac OS 中飞呀飞。。。
写在前面 阅读目录: 娓娓道来 Install ASP.NET vNext Command Line Tools 安装 Homebrew 使用 Homebrew,安装 KVM Install Subl ...
-
Mac OS X 上编写 ASP.NET vNext (二) IDE配置
上一篇中介绍了如何在OS X上搭建.Net运行时.不过光有运行时还不够,还需要有一个好用的IDE,有了IDE的支持,OS X上的开发才称为可能. 和上篇类似,这里先列举出具体步骤,个人可以根据自己的情 ...
随机推荐
-
MSIL解析一(转)
转自:http://www.cnblogs.com/Yahong111/archive/2007/08/15/857140.html 在网上发现了一个非常好的MSIL教程,可惜是英文版的,于是就翻译了 ...
-
添加mongodb支持
最近花了些时间,将引擎的存储换成了mongodb. 私下,我觉得现有的存储机制极为落后.现在写数据的操作交由单独的进程完成,该进程兼当数据缓冲与持续化数据的责任.此次引擎的更换,只是简单的利用mong ...
-
CSS: inline-block的应用和float块高度塌陷
普通流高度塌陷: 当块float浮动时,不会对块布局产生影响,块仍然会按照左右或者上下的顺序排列.但是会影响文档的排列,当文档的高度超过块的高度时,块的高度会产生塌陷现象. 高度塌陷解决方法: ...
-
hdu 5035 概率论
n服务形式,各服务窗口等候时间指数公布,求所需的等待时间. 解: 相两点:首先,等到轮到他,然后就是送达时间. 潜伏期期望每个表单1/ki(1/ki,宣布预期指数公式).总的等待时间预期1/(求和ki ...
-
Java多线程中的单例模式
一.在多线程环境下创建单例 方式一: package com.ietree.multithread.sync; public class Singletion { private static cla ...
-
$_SERVER[&#39;HTTP_REFER&#39;] 和 session cookie 关系
对Session和Cookie的区分与理解 先说session 对SESSION的争论好象一直没有停止过,不过幺麽能理解SESSION的人应该占90以上.但还是讲讲,别嫌老~ 有一些人赞成用SESSI ...
-
Python pip源更改
将pip源设置为阿里源 windows 打开文件资源管理器(文件夹地址中) 地址栏上面输入 %appdata% 在这里面新建一个文件夹pip 在pip文件夹里面新建一个文件叫做 pip.ini,内容如 ...
-
UITabView使用详解
在开发iphone的应用时基本上都要用到UITableView,这里讲解一下UITableView的使用方法及代理的调用情况 - (void)viewDidLoad { [super viewDidL ...
-
linux任务计划 chkconfig工具 systemd管理服务 unit介绍 target介绍
linux任务计划 任务计划:特定时间备份数据,重启服务,shell脚本,单独的命令等等. 任务计划配置文件:cat /etc/crontab [root@centos7 ~]# cat /etc/c ...
-
Java Integer Cache
Java Integer Cache Java 代码 public class IntegerDemo { public static void main(String[] args) { Integ ...