cos中的文件结构(DF/EF/MF/FID/AID/SFI..)
转载自:https://blog.csdn.net/Enjoy_endless/article/details/75108349
刚开始接触CPU卡的时候,对于各种文件、应用的定义容易模糊不清,通常不能准确地界定什么是文件?什么是应用?DF和EF的区别真的就像计算机里的目录和文档那样吗?FID、AID、SFI这些概念都在什么时候派上用场?一个EF必须依存于某个DF吗?MF是必须存在的吗?脑海里会有无数个问号奔腾而来。
其实文件的本质就是一组一组的数据而已,对这些数据的操作(选择、读取、写入/更新)是通过特定的文件操作APDU命令来完成的。所以数据才是本真,文件只是表象。某一组数据该作为什么样的文件让外界来访问,是由卡片的COS决定的。
按照规范的约定DF指的是专用文件Dedicated File的缩写,DF的作用可以等同于计算机中的目录文件,EF则是基本信息文件Elementary File,也就是说通常情况下和应用相关的数据都会存放于EF中。
为了对文件进行访问,需要给文件分配一个特定的标识。无论是DF还是EF都会有对应的两个字节长ID标识,也就是所谓的FID。而DF还会有5-16个字节长的名字,也叫做AID。EF还会有一个5位长(范围从1到30)的短文件标识,就是SFI。按照7816规范的定义,以及根据7816派生出来的一些行业应用规范的定义基本上都是这样的。无论是FID还是AID以及SFI,在可以选择的路径范围内(这句话可能稍微有点绕,体会后也就自然明白了),不同的文件(包括DF和EF)的取值都不能相同。
在一张卡片里(这里说的是卡片而不是某个应用)有且仅有一个特殊的DF,称为主文件MF,这个MF的FID默认为3F00,相当于计算机中的根目录,而且在任何时候MF都可以被选择。如果某个DF下没有子DF,只有若干EF,那么这个DF也被称作ADF,反之如果某个DF下除了有EF之外,还有子DF,那么这个父级的DF也被称作DDF。
在卡片的使用过程中,对于DF的操作只有“选择”一种而已,但是对于EF的操作则有:选择、读、写三种形式。
在文件选择操作过程中,对于DF的选择可以通过FID或者AID来实现,而对于EF的选择只有FID的方式。能够被选择的文件(无论是DF还是EF)必须在可见的路径范围内(这句话也有点绕)。
至于对EF文件的读、写可以通过SFI的方式直接进行,也可以先通过FID选择某个EF,然后再进行读写。
要特别强调的一点:以上说的这些都是和某些应用规范细细相关的,也和COS的实现细细相关。换句话说,如果你自己写一个满足某个特定应用的COS,你完全可以按照自己的意愿来。比如把MF的FID定义为8F00,比如EF也可以增加AID,比如卡片在任何时候都可以选择各级DF及其下属的EF,等等。。。。。。
总之,既要熟悉规范,但是又不能把某个行业应用的规范奉为号令天下的圣旨。
规范并不是试图对复杂的公钥基础设施结构的全部实施作出规定,而旨在为各国提供一种实施办法,使其能够在若干领域(如主动认证、防非法浏览和访问控制等)做出选择,从而可逐渐实施更多的功能,而又不会与整个架构不相容。
谁拥有技术,谁就拥有话语权;而话语权就是规范的制定。在别人的基础上开发,不仅仅是遵守,更多的是方便,在全球化大背景之下,规范是必不可少的;当然按部就班肯定是不好的,在学会实用的情况下,勇于探索才是我们应该不懈追求的!
cos中的文件结构(DF/EF/MF/FID/AID/SFI..)的更多相关文章
- 深入理解7816(5)-----关于文件DF/EF/MF/FID/AID/SFI
刚开始接触CPU卡的时候,对于各种文件.应用的定义容易模糊不清,通常不能准确地界定什么是文件?什么是应用?DF和EF的区别真的就像计算机里的目录和文档那样吗?FID.AID.SFI这些概念都在什么时候 ...
- 16.翻译系列:EF 6 Code -First中使用存储过程【EF 6 Code-First系列】
原文链接:https://www.entityframeworktutorial.net/entityframework6/code-first-insert-update-delete-stored ...
- Linux中du和df
Linux运维过程中,常常发现du和df返回值不一样,偶尔会发现区别非常大. 特定情况下,可能df看到磁盘已满,可是du推断磁盘剩余空间非常大. 文件系统分配当中的一些磁盘块用来记录它自身的一些数据. ...
- Linux中du、df显示不一致问题
Linux中du.df显示不一致问题 最近在做关于Q博士的项目的时候,用到了docker进行部署,对于后端服务可能会经常变动,于是将docker容器的jar包与宿主机目录下的jar包进行绑定,之后每次 ...
- COS中访问文件的三种方式
1.通过FID来访问文件(比如EF,DF) 2.通过SFI来访问文件(有些COS命令可以通过SFI来快速访问文件,而不需要事先选中文件) 3.通过文件名来访问文件(只能是DF文件)
- linux中的文件结构
linux下的文件结构,看看每个文件夹都是干吗用的 /bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的 ...
- maven-bundle-plugin 2.4.0以下版本导出META-INF中的内容到MANIFEST.MF中
今天终于把maven-bundle-plugin不能导出META-INF中的内容到Export-Package中的问题解决了,因为用到的第三方JAR包需要加载META-INF/XX/XX.xml这个内 ...
- 单元测试中使用Moq对EF的DbSet进行mock
刚用上Moq,就用它解决了一个IUnitOfWork的mock问题,在这篇博文中记录一下. 开发场景 Application服务层BlogCategoryService的实现代码如下: public ...
- C#中使用EntityFramework(EF)生成实体进行存储过程的调用
在EF中使用定义对象模型的方式调用一个存储过程,这个存储过程返回的是一组包含两列的值.(ProjectName,Count) 下面是存储过程: CREATE procedure [dbo].[Pro_ ...
随机推荐
- NumPy之:ndarray多维数组操作
NumPy之:ndarray多维数组操作 目录 简介 创建ndarray ndarray的属性 ndarray中元素的类型转换 ndarray的数学运算 index和切片 基本使用 index wit ...
- BUAA软件工程热身作业
写在前面 项目 内容 所属课程 2020春季计算机学院软件工程(罗杰 任健) (北航) 作业要求 热身作业(阅读) 课程目标 培养软件开发能力 本作业对实现目标的具体作用 深入认识自己,总结过往并展望 ...
- 痞子衡嵌入式:MCUBootUtility v3.3发布,可配合SBL项目使用
-- 痞子衡维护的NXP-MCUBootUtility工具距离上一个大版本(v3.0.0)发布过去4个多月了,期间痞子衡其实断断续续做个几个小版本更新,这一次痞子衡为大家带来了稳定版本v3.3.0,顺 ...
- [bug] org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 2
原因 SpringBoot启动加载yml配置文件出现编码格式错误 参考 https://www.pianshen.com/article/2431144034/
- [c++] 子类构造函数中有默认参数
子类创建对象时调用父类的构造函数: 1 #include <iostream> 2 using namespace std; 3 class Base 4 { 5 public: 6 Ba ...
- [bug] NameNode无法启动 invalid-uri-for-namenode-address
配置文件core-site.xml中设置有误 <property> <name>fs.defaultFS</name>(NameNode地址) <value& ...
- sed 's/AA/BB/' file # 将文件中的AA替换成BB,只替换一行中第一次出现的AA,替换后的结果输出到屏幕 sed 's/AA/BB/g' file # 将文件中的所有AA都替换成BB,替换后的结果输出到屏幕
生信人的自我修养:Linux命令速查手册 简佐义 四川大学 生物信息学硕士 科学求真 赢 10 万奖金 · 院士面对面 209 人赞同了该文章 许多人做生物信息学,要么不重视Linux,要么不知道 ...
- 诸神之眼 - Nmap 教程
*注: www.heihei.work 为本人测试网站,可由 官方测试网站 scanme.nmap.org代替. NO.11.扫描端口开放的服务nmap -T4 -A -v www.heiehi.wo ...
- Hive 默认分隔符
引言 Hive 中的默认分隔符是 ^A (\001) ,这是一种特殊的分隔符,使用的是 ASCII 编码的值,键盘是打不出来的 查看 Hive 默认分隔符文件 Linux 上的文件 以 \001 作为 ...
- linux服务之NFS服务篇
一.概念 NFS(Network File Server) 网络文件系统(映射).网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS: NFS允许一个系统在网络上与他人共享目录和文件. ...