cos中的文件结构(DF/EF/MF/FID/AID/SFI..)
来源:互联网 发布:医疗网络咨询培训 编辑:程序博客网 时间:2024/06/03 11:18
刚开始接触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,等等。。。。。。
总之,既要熟悉规范,但是又不能把某个行业应用的规范奉为号令天下的圣旨。
规范并不是试图对复杂的公钥基础设施结构的全部实施作出规定,而旨在为各国提供一种实施办法,使其能够在若干领域(如主动认证、防非法浏览和访问控制等)做出选择,从而可逐渐实施更多的功能,而又不会与整个架构不相容。
谁拥有技术,谁就拥有话语权;而话语权就是规范的制定。在别人的基础上开发,不仅仅是遵守,更多的是方便,在全球化大背景之下,规范是必不可少的;当然按部就班肯定是不好的,在学会实用的情况下,勇于探索才是我们应该不懈追求的!
非常感谢:http://blog.sina.com.cn/s/blog_4df8400a0102vkbr.html
- cos中的文件结构(DF/EF/MF/FID/AID/SFI..)
- MF、DF、EF文件
- μCOS-III文件结构
- CTK 中的 MANIFEST.MF 文件
- CPU卡COS系统文件结构详解
- jar文件中的mainifest.mf文件详解
- OGR根据FID删除矢量中的某个要素(多边形)
- ASP.NET MVC学习---(二)EF文件结构
- jar包中的MANIFEST.MF文件解析
- jar包中的MANIFEST.MF文件学习
- 交换机中的VID,PVID和FID
- 交换机中的VID,PVID和FID
- JAR包中的MANIFEST.MF文件详解以及编写规范
- JAR包中的MANIFEST.MF文件详解以及编写规范
- 读取SIM卡中的EF文件流程
- SIM卡中的ef文件介绍
- μCOS 系列专题—内核结构(1)
- 关于MANIFEST.MF文件
- [转]oracle中exp,imp的使用详解
- Canvas drawImage 宽度和高度失效
- Echarts3 主题设置
- Linux使用nfs映射远程服务器磁盘目录
- Python目录下中没有Script文件夹
- cos中的文件结构(DF/EF/MF/FID/AID/SFI..)
- Win7技巧
- 用CSS固定DIV层在页面顶部和底部(兼容IE6)
- PHP apache X-sendfile扩展实现文件下载
- 次表面反射二
- SpringMVC史上最全最强详细示例实战教程
- 关于javascript的匿名函数
- BZOJ 4013: [HNOI2015]实验比较
- PHP性能分析,测试