技术标签: Android开发笔记 ESE Android 9.0 NFC SecureElement
NFC |
Near Field Communication,近场通信,一种基于13.56 MHz 的短距离通信技术。 |
NFCC |
NFC Controller,NFC 控制器,负责 NFC 无线信号的调制解调 |
SE |
Secure Element,安全芯片,拥有独立的内存、ROM、CPU,可以认为是一种微型计算机。 |
eSE |
Embedded Secure Element,焊在主板上的安全芯片,与主CPU独立 |
applet |
SE 中的应用程序 |
TEE |
Trusted Execution Environment,可信执行环境,存在于主 CPU 中的一块安全运行环境 |
REE |
Rich Execution Environment,富执行环境,普通 Android 运行环境,区别于 TEE |
I2C |
一种总线, 连接 REE 和 NFCC 之间 |
SPI |
Serial Protocol Interface,一种总线,用于连接 TEE 和 eSE |
APDU |
特指发送给 SE 的指令 |
TSM |
Trusted Service Management,可信服务管理,接收来自客户端的关于管理 SE 内容的请求,包括在 SE 安装、个人化、删除 applet 等操作,生成相应的 APDU |
CAP |
特指 applet 的安装文件,类似 PC 上的 jar 包 |
AID |
Application Id,SE 中对象的标识符,类似 java 语言中的类名。 |
OMA |
Open Mobile API,由 simalliance 组织定义的一套访问 SE 的接口 |
JCOP |
Java Card Open Platform,泛指 SE 中的 Java 操作系统 |
什么是SE?
安全元件(Secure Element)简称SE,通常以芯片形式提供。为防止外部恶意解析攻击,保护数据安全,在芯片中具有加密/解密逻辑电路。SE是一个CPU卡,可以运行智能卡应用程序。SE可封装成各种形式,常见的有智能卡和嵌入式安全模块(eSE)等。
什么是ESE?
嵌入式安全元件(embedded Secure Element)简称ESE,焊在主板上的安全芯片,与主CPU独立。eSE能实现银行卡的作用,可在手机中模拟实现一张或多张智能卡,简单的说,就是可以将按GP(GlobalPlatform)卡片规范编写的Java卡应用程序Applet运行在手机的eSE环境中,实现一机替代多张传统物理卡片,每个Applet由唯一的AID标识符来识别,可以是银行卡、储值卡、公交卡等。
ESE与SE的关系?
ESE是SE的一种实现形式,一般由手机制造厂商在手机出厂前集成在手机内部。
还有两种常见的实现为:一种是UICC 通用集成电路卡,就是我们平时所使用的手机SIM卡;另外一种是Micro SD 以SD存储卡的形式存在,通过插入SD卡槽集成到手机上。由独立的SE制造商制造和销售。
ESE与NFC的关系?
嵌入式安全模块(eSE)是针对NFC终端产品开发的产品,采用了满足CCEAL5+安全等级要求的智能安全芯片, 内置安全操作系统,满足终端的安全密钥存储、数据加密服务等需求。可广泛应用于金融、移动支付、城市交通、医疗、零售等领域,既能保护线上支付的安全,又能配合NFC作为线下支付的钱包使用。
ESE与TEE(Trusted Execution Environment)的关系?
SE千般好,但受限于硬件隔离,独立的计算和存储资源,导致SE的计算性能差、数据传输速度慢,限制了SE的应用场景。而当今移动互联网发展迅速,迫切需要一个更好的安全生态。因此TEE应运而生。TEE OS是一个硬件安全执行环境,提供了代码和数据的安全防护、外置设备的安全访问等功能,可以安装和卸载执行其中的安全应用TA(TEE Application)。跟SE相比,是一个相对不那么安全,但运行速度更快、功能更丰富的安全环境。如Android手机中的指纹访问,起指纹存储和校验就在运行速度更快的TEE OS中完成。
带有NFC功能的Android设备大多都支持NFC卡仿真,在Android设备中加入eSE安全芯片也就是为了给模拟卡提供更高级别的安全保障;另外移动运营商提供的SIM卡中大多也有集成支持安全元件;且在Android4.4版本开始引入了另一种HCE(基于主机的卡仿真)安全元素,这允许Android通过应用程序模拟卡并直接与NFC读卡器对话。
当用户使用安全元件提供NFC卡仿真时,手机中的NFC控制器将来自读卡器的所有数据直接路由到安全元件SE中,SE本身执行与NFC终端读卡器通信,并且交易中根本不涉及Android应用程序。事务完成后,Android应用程序可以直接查询安全元素以获取事务状态并通知用户,app可以通过OMAPI发送APDU指令来与SE中的Applet通信交互。
当用户使用HCE模拟NFC卡时,数据将路由到直接运行Android应用程序的主机CPU。相比SE卡仿真,使用HCE需要在手机屏幕亮起时才能进行刷卡操作,因为当设备的屏幕关闭时HCE服务是不起作用的。
早在Android2.3.4中就已经引入了访问内置SE的API,但这些API在SDK中一直是隐藏状态的,而且使用需求系统级权限,这就意味着只有手机制造商才能发布使用SE的应用程序,限制了SE应用程序的发展。
在Android 9中Google将GlobalPlatform OpenMobile API的实现添加至平台中,统一了SE的相关访问接口。在支持的设备上,应用可以使用OMAPI API访问安全元素(SE),以启用智能卡支付等安全服务。硬件抽象层(HAL)提供了必要的API,用于枚举多种可用的Secure Elements(如eSE,UICC等)。
具体关系类图如下:
1.官方开发文档 wx.login 可以获取code2.微信PC端内存HOOK获取小程序Code3.抓PC包{微信小程序基本都是基于HTTPS的,在开发调试小程序时,普通的抓包软件是抓不到的,所以我们想要抓包首先需要配置证书 SSL推荐软件 fiddler 或 Charles1.fiddler配置抓取Https包1.下载最新版fiddler2.下载并安装Fiddler证书生成器3打开Fiddler,点击工具栏中的Tools—>Options4.点击https设置选项,勾选选择项5
程序员应该知道的操作系统基础知识在多线程并发环境下,经常出现一些意想不到的错误,例如数值的累加,错的原因可能涉及到计算机原理以及JAVA方面的一些知识。下面我们就先从CPU的多级缓存开始说起;CPU缓存缓存存在的意义:CPU缓存存在的意义分两点(局部性原理):时间局部性:如果某个数据被访问,那么在不久的将来它很可能被再次访问。空间局限性:如果某个数据被访问,那么与它相邻的数据很快也可能被访问。我们先来认识一下整体结构,看一张图片,如下:CPU Core : CPU核心Cache :
最近在学习线程相关的内容,所以把学习过程中的心得记录下来,相信大家常用 ThreadPool.QueueUserWorkItem()或者Thread thd=new Thread(new ThreadStart(test)))但是应该很少人知道用ThreadPool.RegisterWaitForSingleObject(高手除外啦),我也是最近才知道。让我来给各位看官解...
目录一、虚拟机二、虚拟机组成1.栈栈帧2.程序计数器3.方法区对象组成4.本地方法栈5.堆GCGC案例一、虚拟机同样的java代码在不同平台生成的机器码肯定是不一样的,因为不同的操作系统底层的硬件指令集是不同的。同一个java代码在windows上生成的机器码可能是0101.......,在linux上生成的可能是1100.......
在织梦DEDECMS建站过程中,调用全站的最新文章时,程序会自动调用网站中所有已发布的文档,如果我们不想调用某个栏目下的文章时,应该如何操作呢?下面讲一下如何让DEDECMS不调用指定栏目下的文章的方法。设置DEDE屏蔽某个栏目的方法首先把不需要调用的栏目设置为“隐藏”;用FTP软件打开自己网站的空间,找到以下文件:/include/taglib/arclist
简介本文为您提供了在 Microsoft ADO.NET 应用程序中实现和获得最佳性能、可伸缩性以及功能的最佳解决方案;同时也讲述了使用 ADO.NET 中可用对象的最佳实践;并提出一些有助于优化 ADO.NET 应用程序设计的建议。本文包含: • 有关 .NET 框架包含...
软件熵(Software entropy)是指软件的无序程度。软件熵可用来说明软件在经过不断修改后,无序程度提高的现象。尽管软件开发几乎不受任何物理定律的约束,熵(entropy)对我们的影响却很大。熵是一个来自物理学的概念,指的是某个系统中的 “无序” 的总量,遗憾的是,热力学定律保证了宇宙中的熵倾向于最大化,当软件中的无序增长时,程序员们称之为 “软件腐烂(softwar...
华为mate30可以成功安装google服务,但是需要认证机型。一般都是会失败的,即使偶尔会成功,果断时间也会失效,估计是google的封杀吧清除google服务,不需要重制手机,用adb也可以完全卸载;删除google 部分服务Google play service1 adb uninstall com.google.android.gmsGoogle Play Store2.ad...
降低chrome浏览器安全性,可以让其实现跨域,在环境变量后面添加这一句就可以实现:--args --disable-web-security
文章目录ORM的概述JAP的概述JAP与hibernate的关系JPA入门案例的搭建JPA中的API介绍JPA中的增删查改JPA中的复杂查询maven坐标ORM的概述ORM(Object-Relational Mapping)表示对象关系映射。基于面向对象的思想,将对象与关系型数据库进行映射。简单而言,ORM就是建立实体类和数据库表之间的关系,从而达到操作实体类就相当于操作数据库表的目的。...
二维平面上的点无法用一条直线分开,可以将其按照一定规则映射到三维空间中,用超平面将其分开 转载于:https://www.cnblogs.com/yan456jie/p/5369522.html...
入手查找issue选择label:“start:contributions welcome”issue说明提出PR(Pull Respose)遵守规范