技术标签: 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等)。
具体关系类图如下:
c语言中图形驱动程序功能In this Advance Learning Tutorial of C / C ++ today, we are going to tell you about some of the functions that can be used to make the program more attractive. This works on both text and ...
题目描述我们都知道:1+2+3+ … + 49 = 1225现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015比如:1+2+3+…+1011+12+…+2728+29+…+49 = 2015 就是符合要求的答案。请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交。(对于示例,就是提交10)。输出注意:需要你提交的是一个整数,不要填写任何多余的内容。无脑枚举即可for i in range(1,49): for j in range(i+2,49):
本次实验我们将会分析lab06-01.exe,lab06-04.exe两个文件。先来看看lab06-01.exe要求解答的问题Q1由main函数调用的唯一子过程中发现的主要代码结构是什么Q2位于0x40105f的子过程是什么Q3这个程度的目的是什么尝试运行会发现程序一闪而过载入peview分析,查看其导入表可以看到WININET.dll,其中其中的InternetGetConnectState函数。利用Windows Internet(WinINet)API,应用程序可以使用http协议访问
背景生产环境Jenkins版本进行了升级,发现代码中直接使用http调用Jenkins REST API的方法失效了,都是同样的错误,No valid crumb was included in the request。百度的结果搜索了具体的错误信息,发现都是一样的,就是说把Jenkins的CSRF给关闭了,但是我在Jenkins上面没有找到关闭CSRF的入口。就像下面这张图。然后百度得知,Jenkins高版本关闭了页面上面取消CSRF防护的入口,本来也不推荐关闭。解决方法一这边我当时是
先定义分页用的PageBean和反射用的ReflectUtils工具类import java.lang.reflect.Field;import java.lang.reflect.Modifier;import java.util.HashMap;import java.util.LinkedList;import java.util.List;import java.util.Map...
import aircv as acimport uiautomator2 as u2import timeimport randomd=u2.connect('172.21.236.63')def run(img):while(True):d.screenshot("qp.jpg")imobj=ac.imread('C:\Users\bj\Desktop\qp\'+img+'.jpg')imsr...
JavaScript XMLJSX 是一个看起来很像 XML 的 JavaScript 语法扩展vue 4.2.3 可以直接使用jsx语法vue [email protected]/cli 4.2.3vue create vue-jsx-demosrc/App.vue<template> <div id="app"> <HelloWorld /&g...
Docker概述Dcoker可以解决软件跨环境迁移的问题Docker安装参考链接为了避免每次命令都输入sudo,可以设置用户权限,注意执行后须注销重新登录sudo usermod -a -G docker $USER例如:当前用户为ningansudo usermod -a -G docker ningan安装完成之后,查看docker版本命令:docker -vdocker --versionDocker架构菜鸟教程Docker 包括三个基本概念:镜像(Image):D
这篇文章是我的Golang后端开发学习成长路线,从0开始学习go语言,我目前是大三,学校教过基本的C语言、C++、java、python,还有408的四个计算机核心课程。希望我的学习路线对你有帮助。
如图所示,第一幅图片是Sheet1,第二幅图片是Sheet2,要根据1中的矿床名称将2的第一行自动填充为类型(因为2与1的数据大不相同,所以不可直接复制粘贴,数据量大),要用到VLOOKUP函数,将鼠标放在Sheet2的A2单元格上,输入=VLOOKUP(B2,Sheet1!A1:B403,2,0),这个B2是目标表格所查找的内容,就是矿床名称,在Sheet1中去寻找依据,向下自动填充并可得到所有...
一、键、值接作函数1.array_values($contact):不保留键名,按照索引,对数组排列2.array_keys($contact,'可选参数',‘可选参数true/false’):若设置可选参数,则按照可选参数返回键名,若不设置,直接返回数组的键名,false为不依赖默认参数类型3.in_array(‘value’,'$contact','可选参数true/false'):检查数组中是否存在某值,true类型必须完全一致,搜索值若为字符串,设置true后,则区分大小4.a
哈喽,大家好 我是xy???。 从我最初接触vue3版本到现在已经有一年的时间。由于 vue3.2 版本的发布,<script setup> 的实验性标志已经去掉,已经陆陆续续有不少公司开始使用 vue3.2开发项目了。这篇文章就来帮助大家如何快速使用 vue3.x,typeScript, vite 搭建一套企业级的开发脚手架 ??。废话不多说,直接上手开搞 ??搭建前准备Vscode: 前端人必备写码神器Chrome:对开发者非常友好的浏览器(反正我是很依赖它的)Nodejs&a.