OP-TEE初探

原创 2015年11月18日 15:09:36
研究OP-TEE有一段时间了,在这里记录下自己研究的过程,方便以后查阅,也为后来者参考。

首先介绍一下TEE,以及它与TrustZone的关系。摘录一段维基百科上对TEE(https://en.wikipedia.org/wiki/Trusted_execution_environment)的定义:The Trusted Execution Environment (TEE) is a secure area of the main processor of a smart phone (or any connected device including tablets, set-top boxes and televisions). It guarantees code and data loaded inside to be protected with respect to confidentiality and integrity.

翻译一下,TEE是智能手机主处理器中的一块安全区域,保证代码和数据的机密性和完整性。TEE中的数据不会被REE中的程序非法访问。TEE中的可信应用(TA)在隔离的环境中运行,其安全性比手机主操作系统(Rich OS,比如Android)高,并且提供比SE更丰富的功能。

TEE的规范由GlobalPlatform组织定义。

ARM中TrustZone技术可用于实现TEE。具体可参考ARM官网上对TrustZone的介绍。(http://www.arm.com/zh/products/processors/technologies/trustzone/index.php

OP-TEE是ST和Linaro合作开发的TEE开源实现。它的前世今生参考这篇文章(http://www.linaro.org/blog/core-dump/op-tee-open-source-security-mass-market/)。

OP-TEE主要由3部分组成:optee_client/optee_linuxdriver/optee_os。optee_client实现了GP定义的ClientAPI规范。optee_linuxdriver实现了访问TEE的驱动模块。optee_os是OP-TEE的核心,实现了一个可信的OS。

现在开始Build OP-TEE。

第一步,准备开发环境。
安装开发用的Linux操作系统。我在Win7 64位上安装了Ubuntu 14.04 LTS 64位的VMWare虚拟机。

第二步,安装依赖的工具
先安装repo。由于GFW的原因,无法直接访问Android官网安装repo, 可以百度其他安装方法。不再详述。
然后在Ubuntu中启动一个Terminal,执行如下命令,安装依赖的其他工具。
$ sudo apt-get install android-tools-fastboot autoconf bison cscope curl \
               flex gdisk libc6:i386 libfdt-dev libglib2.0-dev \
               libpixman-1-dev libstdc++6:i386 libz1:i386 netcat \
               python-crypto python-serial uuid-dev xz-utils zlib1g-dev

第三步,下载OP-TEE源代码
下载源代码的方法很简单,执行如下命令即可。
$ mkdir -p $HOME/devel/optee
$ cd $HOME/devel/optee
$ repo init -u https://github.com/OP-TEE/manifest.git -m default_stable.xml -b master
$ repo sync
第四步,获取工具链,即交叉编译器
$ cd build
$ make -f toolchain.mk toolchains
下载过程很漫长,我下了5个小时。

第五步,编译源码,并启动QEMU模拟器运行OP-TEE
$ make -f qemu.mk all
$ make -f qemu.mk run-only
最后,放一张QEMU启动后的截图。


optee开源项目的学习

因为研究生阶段选的是trustzone的研究方向,所以最近在一直看这方面的东西。前不久在github上找到这个optee的开源项目,于是fork来学习一下。 地址:https://github.com...
  • fanguannan0706
  • fanguannan0706
  • 2015年04月11日 12:11
  • 6219

10.OP-TEE OS启动(一)

如果个系统有ATF(ARM Trusted Frimware)(ARF的部分,请参考ATF的相关文档),OP-TEE OS属于bl32阶段被启动,通过在bl31阶段调用opteed_enter_sp函...
  • shuaifengyun
  • shuaifengyun
  • 2017年05月23日 11:33
  • 2155

TrustZone——开源库—Linaro—OP-TEE

想研究安全系统源码的有福气了。以前OVOS的代码缺少TA相关的实现。这次的版本,基本框架都有了。先看看架构图吧。         几家大公司做的,可能是ST牵头,页面有ST的LOGO。代码质量较高。...
  • forestcell
  • forestcell
  • 2015年07月22日 15:59
  • 3905

OP-TEE xtest 功能记录

现有的用于测试的xtest TA(Trusted Application)共有8个,分别涵盖了内核测试、内部API测试、客户端API测试、加密测试、创建失败测试等方面,笔者对各测试功能进行统计,用于对...
  • u010071291
  • u010071291
  • 2016年03月29日 17:30
  • 2800

trustzone与OP-TEE介绍导读

如果系统芯片支持trustzone技术且支持TEE,那么TEE将在系统中提供一个安全的运行环境,用于保护系统中的重要数据和安全操作。通常一个完成的系统除了有bootloader和kernel,reco...
  • shuaifengyun
  • shuaifengyun
  • 2017年06月25日 14:23
  • 3527

OP-TEE设计结构(一)

OP-TEE design目录 介绍 平台初始化 安全监视器调用函数-SMC SMC操作 SMC接口 使用SMC接口进行通信 线程操作 Translation tables Translation...
  • u010071291
  • u010071291
  • 2016年03月10日 09:25
  • 4142

OP-TEE TA:读写寄存器数据

最近想为OP-TEE的Trusted OS开发一个触摸屏驱动,在查询代码的时候发现直接调用TA修改TZPC寄存器的值是不可行的,原因是user TA的运行采用了沙盒机制,所以无法直接访问寄存器所映射的...
  • u010071291
  • u010071291
  • 2016年04月27日 15:49
  • 2775

Trustzone OP-TEE 在QEMU平台上的编译、运行与测试

一.OP-TEE介绍 TEE背后的基本思想就是将和安全服务提取到独立的安全环境中去运行,当主系统有安全相关的操作时,通过发动请求到安全环境获取系统预定义的服务。基于此OP-TEE可以分为三个部分,T...
  • u010071291
  • u010071291
  • 2016年03月01日 17:11
  • 3634

OP-TEE 在QEMU以及FVP平台上的编译、运行与测试

主要步骤根据optee在github的build说明https://github.com/OP-TEE/build来完成,主要参考了http://blog.csdn.net/u010071291/ar...
  • u012406115
  • u012406115
  • 2017年02月24日 20:02
  • 769

0.使用Qemu运行OP-TEE

由于在线支付和互联网的发展,在手机和互联网电视领域,甚至物联网领域安全越来越显得重要。而android一直被诟病的就是运行速度慢和安 全问题。关于安全问题,这点无可厚非,谁叫android是开源的呢?...
  • shuaifengyun
  • shuaifengyun
  • 2017年05月09日 20:02
  • 2240
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OP-TEE初探
举报原因:
原因补充:

(最多只允许输入30个字)