前言
本文件按照 GB/T 1.1—2020《标准化工作导则 第1部分:标准化文件的结构和起草规则》的规定起草。
本文件是 GB/T 34994《可信教育数字身份》的第1部分。GB/T 34994已经发布了以下部分:
第1部分:教育卡技术要求
本文件代替 GB/T 34994.1—2017《教育卡应用规范 第1部分:教育卡技术要求》,与GB/T 34994.1—2017相比,除结构性调整和编辑性改动外,主要技术变化如下:
a) 增加了“可信教育数字身份”“人员可信教育数字身份”“学生可信数字身份”“教师可信数字身份”“毕业生可信数字身份”“法定身份信息”“教育身份信息”“网络信任身份信息”“可信教育数字身份安全码”“教育数字身份载体”“可信教育数字身份鉴权证书”“可信教育数字身份印鉴” “可信教育数字身份凭证”“教育数字身份链”“教育电子身份应用号”“教育身份应用码”“可信教育数字身份发行与管理服务中心”“可信教育数字身份发行单位”“可信教育数字身份应用单位”19个术语和定义(见3.1~3.8、3.10~3.17、3.32~3.34);
b) 删除了“电子校徽”“报文鉴别代码”“数字证书”“数字签名”“数据完整性”“SM2算法”“SM3算法”“SM4算法”“教育卡发卡与管理服务中心”“教育卡发行单位”“教育卡发行单位”11个术语和定义(见2017年版的3.7、3.11、3.14~3.19、3.24~3.26);
c) 更改了“教育电子身份安全号”“教育卡”“教育电子证件”“教育卡网上副本”4个术语和定义(见3.9、3.17、3.21、3.23,2017年版的3.1、3.2、3.6、3.8);
d) 删除了“总则”(见2017年版的第5章);
e) 用规范性引用的“GB/T 16649.4”替换“GB/T 16649.4—2010”(见5.1.1、6.1、表 B.1和 E.1, 2017年版的6.1.1、7.1、表 B.1和 D.1);
f) 用规范性引用的“GB/T 33190”替换“GB/T 33190—2016”(见表 A.30、表 A.31和表 B.1,2017年版的表 A.30、表 A.31和表 B.1);
g) 更改了教育电子身份安全号(即可信教育数字身份安全号/ESN 号)的长度(见 A.2.2,2017年版的 A.2.2);
h) 用规范性引用的“GB/T 16649.5”替换“GB/T 16649.5—2002”(见表 B.1、表 D.1和表 D.2, 2017年版的表4、表5和表 B.1);
i) 用规范性引用的“GB 18030”替换“GB 18030—2005”(见表 B.1,2017年版的表 B.1);
j) 用规范性引用的“GB/T 14916—2022”替换“GB/T 14916—2006”(见 G.1,2017年版的 F.1);
k) 更改了“教育卡背面要素与布局”相关内容(见 G.3,2017年版的 F.3)。
请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。
本文件由全国信息技术标准化技术委员会(SAC/TC 28)提出并归口。
本文件起草单位:教育部教育管理信息中心、中国电子技术标准化研究院、苏博云科数字认证有限公司、湖南中育至诚科技有限公司、华翔腾数码科技有限公司、湖南大学、中国银联股份有限公司、中国邮政储蓄银行股份有限公司、广东省教育厅事务中心、北京中育至诚网络科技有限公司、楚天龙股份有限公司、华南理工大学、武汉市教育局、广州市白云区教育局、东方新诚信数字认证中心有限公司、广州宏途数字科技有限公司、湖南工商大学、湖南科创信息技术股份有限公司、北京苏博云科可信空间数据技术有限公司、北京数码创天科技有限公司、郑州可信教育科技有限公司、锐捷网络股份有限公司、广州像素数据技术股份有限公司、中电信数智科技有限公司。
本文件主要起草人:石凌、蔡燕、张鹏、颜星、王刚、余云涛、丁林润、胡晓乐、任怀德、王红剑、邵飞吴作顺、程聂、秦拯、李春欢、刘现民、王桂亮、周炜炜、齐德昱、杨生华、艾威、李春明、徐丹、陈荣元、谭立球、孙承轩、习正克、马雪峰、范志鸿、贺建文。
本文件及其所代替文件的历次版本发布情况为:
2017年首次发布为 GB/T 34994.1—2017;
本次为第一次修订。
引言
教育数字化转型是国家数字化战略的重要组成部分。教师、学生等教育行业人员身份的数字化与可信化,是教育数字化转型的基础,为教育教学活动的数字化、教育教学数据空间的可信化提供必要的基础支撑。
2021年,教育部、中央网信办、国家发展改革委、工业和信息化部、财政部、中国人民银行等六部委印发的《关于推进教育新型基础设施建设构建高质量教育支撑体系的指导意见》,将“可信教育数字身份”作为教育新型基础设施的可信安全新型基础设施的重要组成内容,要求“推动建设教育系统密码基础设施和支撑平台,建立完善全国统一的身份认证体系”。教育部2025年发布的《中小学生学籍管理办法》已明确要求“推进基于学生基础学籍信息的‘学生可信教育数字身份’建设和应用,在不同教育应用系统间实现学生教育身份信息的可信识别和安全共享”。2025年教育部、中央网信办、国家发展改革委、科技部、工业和信息化部、公安部、财政部、人力资源社会保障部、国家数据局等部委联合发布的《教育部等九部门关于加快推进教育数字化的意见》要求建立“教育领域身份和数据可信体系”,推广可信教育数字身份的应用。因此,可信教育数字身份是教育数字化转型的重要内容之一。遵循《中华人民共和国密码法》,建设以国家电子信任源为源点的“可信教育数字身份签发管理与应用服务体系”,面向教育行业的教育教学机构(包括各级各类学校、各级教育行政管理机构、研究机构)、岗位与个人群体(包括学生、教职员工、毕业生)以及人工智能环境下的教育数字人和教育智能体,签发教育数字身份证书、可信数字身份印鉴、可信数字身份凭证,构建基于可信教育数字身份的教育网络数字信任体系,实现教育行业全域数字化系统的身份可信、数据可信、行为可信与互信互认,让系统更安全,让应用更智能,为教育改革和教育公平保驾护航。
GB/T 34994《可信教育数字身份》旨在规范可信教育数字身份的应用,拟由14个部分构成。
第1部分:教育卡技术要求。目的在于明确可信教育数字身份的应用载体———教育卡(即为智能硬件形态的教育数字身份载体之一)的相关技术要求。
第2部分:教育身份移动应用程序技术要求。目的在于明确面向教育领域的群体人员可信教育数字身份的应用入口———教育身份移动应用程序(即教育数字身份 APP,是教育数字身份载体之一)的相关技术要求。
第3部分:教育身份链应用技术要求。目的在于明确实现可信教育数字身份相关身份数据(例如,基于法定身份与教育身份依法签发的网络信任身份,以及教育电子身份应用号、教育身份应用码等相关信息)的安全上链存证、应用确权等功能的教育密码区块链系统(即教育身份链,是教育数字身份载体之一)的应用技术要求
第4部分:教育云身份认证服务应用技术要求。目的在于明确面向各类应用所提供的可信教育数字身份的认证、签名等云服务功能(即教育数字身份认证云中心服务功能)的技术要求。
第5部分:教育数字空间可信身份应用技术要求。目的在于明确可信教育数字身份在教育行业数据空间环境下的教育数字身份空间与可信教育数字人应用技术要求。
第6部分:可信教育数字身份元数据规范。目的在于明确可信教育数字身份(即“教育电子身份安全号、可信教育数字身份安全码、可信教育数字身份鉴权证书、可信教育数字身份印鉴、可信教育数字身份凭证、可信教育数字人”)的基础元数据及其表示方式
第7部分:可信教育数字身份安全码应用技术要求。目的在于明确“基于教育电子身份安全号的可信教育数字身份安全码(含人像特征值)、以二维码形态呈现的可信教育数字身份”,与第三方应用系统(包括可信教育数字人、可信教育智能体)进行数据安全交互或服务可信交互的数据组成,以及表示方式。
第8部分:教育可信身份印鉴应用技术要求。目的在于明确“面向可信教育数字身份鉴权证书持有者、可信教育数字人”所签发的电子印章与数字印鉴的应用技术要求。
第9部分:教育可信身份应用大模型技术要求。目的在于明确“基于可信教育数字身份的教育数字人、教育智能体、教育应用大模型等的可信教育射份标识,以及身份申请签发、发行管理、验证服务、应用”等的技术要求。
第10部分:教育可信身份凭证应用指南。目的在于明确“基于可信教育数字身份在教育教学活动、教育经历数字档案”、以及素质教育、智慧教育、互联网+教育、人工智能+教育等相关应用系统/平台、以及应用领域的可信化/电子化数字凭证”的应用技术要求。
第11部分:数字身份应用安全保障体系技术要求。目的在于明确保障可信教育数字身份应用生态服务体系与教育数字人、教育智能体等的安全技术要求
第12部分:可信教育数字身份生命周期服务业务规则与技术要求。目的在于明确“可信教育数字身份的申请、签发、发行、延期、冻结与解冻、挂起与解挂、变更、更新”等生命周期服务相关业务处理规则与技术要求。
第13部分:教育可信数字身份产品系统与可信智能体测试要求。目的在于明确对教育可信身份产品系统,以及使用可信教育数字身份的应用系统、可信教育智能体等系统产品的合规性,进行测试的流程、方法与技术要求。
第14部分:教育可信数字身份应用指南。目的在于明确各类应用业务系统与教育智能体使用可信教育数字身份体系的基础身份元素(例如,教育电子身份安全号、可信教育数字身份安全码、可信教育数字身份鉴权证书、可信教育数字身份印鉴、可信教育身份凭证、可信教育数字人)与应用支撑服务系统(例如,可信教育数字身份服务系统、教育数字身份链、教育数字身份认证云中心、教育数字身份 APP、教育数字身份空间等系统),在与“教育行业与地方区域以及社会化的应用业务系统与教育智能体的应用对接、应用接口、应用流程、应用开发”等的应用技术要求。
为有效推进可信教育数字身份体系的建设与应用服务,围绕可信教育数字身份应用服务体系的规划与设计,教育行业开展了大量的基础性工作。
首先,规划设计了可信教育数字身份的总体应用架构。根据实际应用的需要,可信教育数字身份的总体应用架构分为“基础设施层、服务层、第三方应用层”等三个层次。
a) 基础设施层:是教育行业统一规划建设的可信教育数字身份发行与管理服务中心体系(主要包括可信教育数字身份签发中心体系、应用生态服务支撑中心体系)相关的专用基础系统平台,实现可信教育数字身份应用相关的处理。基础设施层的各系统(不直接面向应用业务系统)需通过服务层为应用业务系统提供服务。基础设施层由“行业级可信教育数字身份认证专用基础设施”与“二级可信教育数字身份认证专用基础设施”组成
1) 行业级可信教育数字身份认证专用基础设施:由教育行业统一规划与建设,主要包括“可信教育数字身份签发中心系统、可信教育数字身份发行服务中心系统、可信教育数字身份管理中心系统、可信教育数字身份中央身份数据库、可信教育数字身份应用生态中心管理系统、可信数字人认证服务中心系统、教育密码区块链(含教育身份链)基础设施、教育密码基础设施”等行业级系统
2) 二级可信教育数字身份基础设施(即“节点系统”):由各地方教育管理机构或学校(即可信教育数字身份发行单位)自主建设,主要包括可信教育数字身份申请发行管理相关的节点基础设施、区域可信教育数字身份数据库、区块链节点基础设施、教育密码服务节点基础设施等系统。可信教育数字身份发行单位的这些“节点系统”,需与“行业级可信教育数字身份专用基础设施”进行无缝对接,实现本区域的可信教育数字身份数据与行业系统的实
时同步。
b) 服务层:用来封装基础设施层所提供的服务。面向应用业务系统提供可信教育数字身份的相关应用支撑服务。服务层由“行业级可信教育数字身份应用支撑服务系统”与“二级可信教育数字身份应用支撑服务节点系统”组成(以下统称“可信教育数字身份应用支撑系统”,简称“可信教育数字身份支撑系统”)
1) 行业级可信教育数字身份应用支撑服务系统:由教育行业统一规划与建设,主要包括:可信教育数字身份移动端应用程序(简称“教育数字身份 APP”)、教育密码区块链基座与教育数字身份链主节点、可信教育数字身份印鉴、教育可信数字身份服务中心系统、教育数字身份认证云中心系统等行业级系统。行业级可信教育数字身份应用支撑系统,需与“行业级可信教育数字身份认证基础设施”进行对接,为应用业务系统提供服务。
2) 二级可信教育数字身份应用支撑服务节点系统:由各地方/各区域的教育管理机构或学校(即可信教育数字身份应用单位)自主建设,主要包括:可信教育数字身份安全码、可信教育数字身份印鉴、可信教育数字身份凭证、教育密码区块链、可信教育数字人申请验证服务等相关应用服务的二级节点服务系统。二级可信教育数字身份应用支撑服务节点系统,需与“二级可信教育数字身份基础设施”进行对接,为应用业务系统提供服务。二级可信教育数字身份应用支撑服务节点系统,可提供“教育数字身份管理类、教育数字身份查询类”等功能与服务。
c) 第三方应用(即各类使用可信教育数字身份的应用系统或设备):根据其服务对象的范围不同,应用层则分为“第三方全国类应用、第三方地方类应用”。
1) 第三方全国类应用:面向全国行业教育群体人员提供服务的应用业务系统(或设备),可分为“移动 APP、WEB应用系统、教育智能体、教育教学设备、智能硬件设备”等类型。第三方全国类应用,需接入到“行业级可信教育数字身份应用服务支撑系统”,实现可信教育数字身份的应用落地。
2) 第三方地方类应用:面向某一地区(或学校)的教育群体人员提供服务的应用服务支撑节点系统(或设备),可分为“移动 APP、WEB应用系统、教育教学设备/智能硬件设备”等类型。对于第三方地方类应用,根据应用需求的不同,应接入“二级可信教育数字身份应用系统”或“行业级可信教育数字身份应用系统”,实现可信教育数字身份的应用落地。
若仅需实现可信教育数字身份的“数字身份管理类、数字身份查询类”等功能,第三方地方类应用可接入“二级可信教育数字身份应用服务支撑节点系统”。
若需要实现可信教育数字身份的“数字身份认证类、安全防护类”等功能,第三方地方类应用需接入“行业级可信教育数字身份应用服务支撑系统”。
其次,规划设计了可信教育数字身份的基本应用功能。根据应用对象的不同,分为“面向个人的应用功能”与“面向应用业务系统的应用功能”两类。
a) 面向个人的应用功能:面向可信教育数字身份的持有者所提供的功能,主要包括以下几类功能。
1) 数字身份管理类功能:提供本人的可信教育数字身份的申请、身份信息变更等生命周期服务。
2) 数字身份查询类功能:提供基于可信教育数字身份的身份信息展示等服务。
3) 数字身份认证类功能:提供基于可信教育数字身份的身份认证与鉴权、身份信息访问授权等服务。
4) 安全防护类功能:提供基于国产密码的个人身份印鉴、数字签名、信息加密/解密等功能。
b) 面向应用业务系统的应用功能,是指教育应用业务系统可使用的可信教育数字身份功能,主要包括以下几类功能。
1) 数字身份管理类功能:提供可信教育数字身份的批量申请、身份信息批量变更等生命周期服务。
2) 数字身份查询类功能:提供基于可信教育数字身份的身份信息核验等服务。
3) 数字身份认证类功能:提供基于可信教育数字身份的统一身份认证、身份信息访问等服务。
4) 安全防护类功能:基于可信教育数字身份的安全防护类功能,提供个人身份印鉴、数字签名、信息加密/解密、行为追溯等安全防护类功能。
最后,设计规划了可信教育数字身份的多种载体形态。根据当前的实际应用现状,可信教育数字身份载体主要包括:智能安全硬件、教育数字身份 APP、教育数字身份服务系统、教育数字身份链、教育数字身份认证云中心、可信教育身份数字空间等不同类型的教育数字身份载体
a) 智能安全硬件:可信教育数字身份客户端硬件载体,可提供“数字身份管理类、数字身份查询类、数字身份认证类、安全防护类”等基本服务功能,基于其实现方式的各异,分为不同形态的介质,例如,安全智能芯片、跨行业融合应用卡包等不同类型。
1) 安全智能芯片:使用符合本文件的安全芯片,用来存储可信教育数字身份相关数据。该类芯片可集成在智能穿戴设备、电子学生证等安全智能设备中,亦可封装成为智能IC卡、智能密码钥匙等硬件形态。
2) 跨行业融合应用卡包:使用同时符合本文件标准与相关行业的智能卡芯片标准的安全芯片存储可信教育数字身份的相关数据。该类芯片通常可封装成IC卡的形式。例如,与通信行业合作的 USIM 卡,与金融行业合作的教育金融卡/教育金融钱包(例如,数字人民币硬钱包和软钱包、银联卡和其他卡清算组织发行金融卡或钱包载体)。
b) 教育数字身份 APP:是可信教育数字身份客户端软件载体,具体表现为安装在移动终端上的移动应用。教育数字身份 APP,由教育行业统一规划与建设,可提供“数字身份管理类、数字身份查询类、数据身份认证类、安全防护类”等基本服务功能。
c) 教育数字身份服务系统:基于行业统一管理的可信教育数字身份数据,提供可信教育数字身份的生命周期服务的在线申请与在线办理等。教育数字身份服务系统,可提供“数字身份管理类”等基本服务功能。
d) 教育数字身份链:采用密码区块链技术,存储可信教育数字身份信息(例如,“法定身份信息、教育身份信息、网络信任身份信息”等重要基础身份元素,以及“可信教育数字身份安全码信息可信教育数字身份鉴权证书信息、可信教育数字身份印鉴信息、可信教育数字身份凭证信息、可信教育数字人信息”等可信应用身份元素)的相关上链数据,保障全网可信教育数字身份数据的一致性。教育数字身份链,可提供“数字身份查询类”等基本服务功能。
e) 教育数字身份认证云中心:采用云服务技术,为应用业务系统提供统一的可信教育数字身份的“数字身份查询类、数字身份认证类、安全防护类”等基本服务功能。
1 范围
本文件规定了可信教育数字身份以教育卡形态应用中的相关文件系统、命令、应用流程、卡面信息、安全以及应用接口的技术要求。
本文件适用于规范可信教育数字身份以教育卡形态的设计、生产、检测、发行、开发、应用与管理。
2 规范性引用文件
下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
GB/T 14916—2022 识别卡 物理特性
GB/T 16649.4 识别卡 集成电路卡 第4部分:用于交换的结构、安全和命令
GB/T 16649.5 识别卡 带触点的集成电路卡 第5部分:应用标识符的国家编号体系和注册规程
GB 18030 信息技术 中文编码字符集
GB/T 33190 电子文件存储与交换格式 版式文档
3 术语和定义
下列术语和定义适用于本文件。
3.1 可信教育数字身份 trusted educational digital identity
面向在校学生、在岗教师以及教育行政管理人员等教育群体人员(含教育数字人)、教育管理和学校等教育教学机构,以及教育应用业务系统、教育教学智能设备、教育智能体等对象,依据《中华人民共和国电子签名法》与《中华人民共和国密码法》,由教育行业统一规划建设、统一签发与统一管理的可信数字身份标识信息。
注:本文件的可信教育数字身份,是基于教育身份、法定身份依法签发的网络新人身份,具有“真实性、唯一性、隐私性、终身性、权威性”等基本特性。可信教育数字身份简称“可信数字身份”。
3.2 人员可信教育数字身份 personal trusted educational digital identity
面向在校学生、在岗教职员工、教育行政管理人员、教学研究人员等教育群体,签发与管理的可信教育数字身份(3.1)。
注:在本文件中,可信教育数字身份专指“人员可信教育数字身份”。人员可信教育数字身份由“法定身份信息、教育身份信息、网络信任身份信息”三类身份信息共同构成,以“可信教育数字身份安全号、可信教育数字身份安全码、可信教育数字身份鉴权证书、可信教育数字身份印鉴、可信教育数字身份凭证、可信教育数字人、可信教育智能体、可信教育数据空间”等方式应用于各类教育数字化业务系统,以及“互联网+教育、人工智能+教育”环境下的各类教育群体人员的可信身份识别与认证,实现教育群体人员隐私信息的安全保护,并提供数字签名、数据加密等密码安全与可信认证服务
3.3 学生可信数字身份 trusted educational digital identity for students
面向在校学生签发的人员可信教育数字身份(3.2)。
注:在本文件中,学生可信数字身份既可以是实体介质(例如,智能安全硬件形态的教育卡)的学生可信教育数字身份,也可以是数字化的学生可信教育数字身份(例如,可信数字学生、数字化/移动化的电子学生证、教育数字身份 APP、教育数字身份链、教育数字身份空间等教育数字身份载体形态的学生可信数字身份)
3.4 教师可信数字身份 trusted educational digital identity for teachers
面向在岗教职员工签发的人员可信教育数字身份(3.2)。
注:在本文件中,教师可信数字身份,既可以是实体介质(例如,智能安全硬件形态的教育卡)的教师可信教育数字身份,也可以是数字化的教师可信教育数字身份(例如,可信数字教师、数字化/移动化的电子教师证、教育数字身份 APP、教育身份链、教育数字身份空间等教育数字身份载体形态的教师可信数字身份)
3.5 毕业生可信数字身份 trusted education digital identity for graduates
面向应届毕业生签发的人员可信教育数字身份(3.2)。
注:在本文件中,毕业生可信教育数字身份,既可以是实体介质(例如,智能硬件形态的教育卡),也可以是数字化/移动化的毕业生可信教育数字身份(例如,可信数字毕业生、可信数字校友、数字化/移动化的电子校友证件、教育数字身份 APP、教育数字身份链、教育数字身份空间等教育数字身份载体形态的毕业生可信数字身份)。
3.6 法定身份信息 legal identity information
由公安部门等政府管理机构签发认证的个人公民身份信息。
注:法定身份主要包括姓名、性别、身份证件类型、身份证件号码、生物特征信息等。法定身份信息简称“法定身份”。
3.7 教育身份信息 educational identity information
由教育主管部门签发认证、基于教育管理信息化相关标准建立的个人的学籍、师籍、学段、工作岗位、学习或工作地址等基本信息。
注:教育身份信息主要包括姓名、学籍号、教育电子身份安全号、可信教育数字身份安全码(含教育身份应用码、生物特征)等信息。教育身份信息简称“教育身份”。
3.8 网络信任身份信息 trusted networking identity information
采用国产密码技术,由依法设立的教育电子认证服务机构为机构,岗位或个人签发的教育数字身份鉴权证书及其密钥等信息
注:网络信任身份信息主要包括可信教育数字身份鉴权证书信息、可信教育数字身份印鉴信息、可信教育数字身份凭证信息等不同类型的信息。网络信任身份信息简称“网络信任身份”或“网络身份”
3.9 教育电子身份安全号 education electronic ID security number
采用国产密码技术与教育专用算法生成的一串特殊数字,是可信教育数字身份持有人的唯一电子身份鉴别标识。
注:教育电子身份安全号作为教育群体人员教育数字身份的唯一标识,用于教育群体人员在相关的教育信息化系统、网络学习空间与网络数据空间、移动互联网以及人工智能环境下的可信教育身份识别。对于不同的应用环境与应用领域,为确保个人信息隐私保护,可为教育电子身份安全号亦称为“可信教育数字身份安全号”和“可信教育电子身份安全号”,也简称为“可信教育数字身份号”“可信身份号”或“教育身份号”
3.10 可信教育数字身份安全码 trusted educational digital identity security code
采用国产密码技术与教育专用算法生成的“基于可信教育数字身份安全号、生物特征值(例如,人脸特征值)等关联信息”的安全二维码。
注:可信教育数字身份安全码作为教育群体人员数字身份的主要入口标识,用于教育群体人员在教育信息化系统网络学习空间与教育数据空间、移动互联网与人工智能等网络环境下的可信教育身份识别,是可信教育数字身份持有人的唯一电子身份鉴别码标识。可信教育数字身份安全码亦称为“可信教育电子身份安全码”,简称“可信教育数字身份码”“可信身份码”或“教育身份码”。
3.11 教育数字身份载体 education digital identity medium
用来存储可信教育数字身份的相关身份数据,并为教育群体人员(或应用业务系统)提供访问或获取人员的可信教育数字身份相关服务的信息系统或设备
注:教育数字身份载体主要包括“智能安全硬件(例如,智能IC卡形态的教育卡)、教育数字身份 APP、教育数字身份服务系统、教育数字身份链、教育数字身份认证云中心、教育数字身份空间”等介质类型。
3.12 可信教育数字身份鉴权证书 trusted educational digital identity authentication certificate
依据《中华人民共和国电子签名法》、《中华人民共和国密码法》以及电子认证管理办法、商用密码管理条例等法律法规,由教育行业统一规划建设,可信教育数字身份发行与管理服务中心体系(即签发中心体系)依法统一签发与管理的可信教育数字身份持有者的数字身份证书,且具有法律效力
3.13 可信教育数字身份印鉴 trusted educational digital identity seal
面向教育群体人员、教育教学机构(包括下辖的二级机构、职能管理部门、业务部门与管理岗位),依据国家法律法规,由教育行业统一规划,可信教育数字身份发行与管理服务中心体系(即签发中心体系)统一签发与管理的基于国产密码与电子认证技术表征的机构印章或个人印鉴特定格式数据(包含印章印鉴图像数据、印章印鉴名称、印章印鉴所有者信息、电子签名认证证书等要素)
3.14 可信教育数字身份凭证 trusted educational digital identity credential
面向教育群体人员,依据国家法律法规,由教育行业统一规划、可信教育数字身份发行与管理服务中心体系(即签发中心体系)统一签发与管理的可信教育数字身份凭据。
注:可信教育数字身份凭证主要包括“数字化证件类凭证、教育荣誉奖励类凭证、学生成绩类凭证、教育教学活动类凭证”等类型,例如,可信电子学生证、可信电子奖状、可信电子培训证书、可信电子资格证书、可信电子转学证明、可信电子学籍证明、可信电子成绩单、可信电子教育证明、可信教育电子证件等。
3.15 教育数字身份链 education digital identity blockchain
基于教育行业统一规划建设的教育密码区块链基础设施所建立的身份应用链,实现可信教育数字身份相关数据(例如,法定身份、教育身份、网络信任身份、教育电子身份应用号、教育身份应用码等相关信息)的安全上链与可信应用。
注:教育数字身份链简称“教育身份链”。
3.16 教育电子身份应用号 education electronic ID application number
采用国产密码技术与教育专用算法,为多应用业务系统和教育智能体所生成的专有特殊数字串,作为可信教育数字身份持有人在不同应用领域的唯一应用电子身份鉴别标识,教育电子身份应用号是为“使用可信教育数字身份的教育领域(或社会化)的不同应用业务系统或教育智能体”安全生成签发的“教育数字身份服务访问的应用凭据”。
注:教育群体人员(包括学生、毕业生/校友、教师以及教育教学管理人员)可拥有多个教育电子身份应用号,且与其本人所拥有的唯一“教育电子身份安全号”密切关联。教育电子身份应用号亦称“可信教育数字身份应用号”,简称“教育可信身份应用号”或“可信身份应用号”。教育电子身份应用号的生成算法与生成签发机制,也可为可信教育数字人提供“可信教育数字人电子身份应用号”的签发与验证服务(“可信教育数字人电子身份应用号”简称“可信教育数字人身份应用号”或“可信教育数字人身份号”)。
3.17 教育身份应用码 education digital identity application code
基于教育电子身份安全号(3.9)与可信教育数字身份安全码(3.10),由使用可信教育数字身份的教育领域(或社会化)的不同业务系统或教育智能体所安全生成的“教育数字身份服务访问的应用凭据”,并以二维码的形式进行应用展示。
注:教育群体人员(包括学生、毕业生/校友、教师以及教育教学管理人员)可拥有多个教育身份应用码。教育身份应用码与教育群体人员本人拥有的“可信教育数字身份安全码”密切关联。教育身份应用码的生成算法与机制,也可为可信教育数字人提供“可信教育数字人身份应用码”的签发与验证服务(可信教育数字人身份应用码,也简称“可信数字人身份应用码”或“可信教育数字人身份码”)
3.18 教育卡 education card
存储可信教育数字身份相关数据的集成电路卡与网上副本。
根据教育卡的存在形态,教育卡分为无触点集成电路卡与网上副本。根据教育卡的应用功能,教育卡分为学生教育卡、教师教育卡、毕业生教育卡,以及电子校徽等类型。根据教育卡与行业的融合应用来分,教育卡又分为教育金融卡/金融钱包(例如,数字人民币硬钱包和软钱包、银联卡或其他卡清算组织发行的带金融功能的卡或钱包载体)、教育交通卡、教育(联名)卡等。
3.19 学生教育卡 education card for students
面向在校学生发行的教育卡(3.18)。
注:学生教育卡简称“学生卡”。
3.20 教师教育卡 education card for teachers
面向学校的在岗教职员工、教育行政管理部门的在岗管理人员发行的教育卡(3.18)。注:教师教育卡简称“教师卡”。
3.21 毕业生教育卡 education card for graduates
面向毕业生发行的教育卡(3.18)。
注:毕业生教育卡简称“毕业生卡”。毕业生教育卡亦称“校友教育卡”,简称“校友卡”。
3.22 教育电子证件 education electronic diploma
在教育机构发行的纸质本式证件中嵌入封装无触点集成电路芯片,并将持证人的可信教育数字身份相关信息、证件信息与电子签名信息等数据安全写入到该嵌入芯片内的教育证件。
注:教育电子证件分为电子毕业证(含电子毕业证明)、电子学位证(含电子学位证明),以及电子结业证(含电子结业证明)等类型。教育电子证件属于数字化证件类可信教育数字身份凭证(例如,数字化的“可信电子学生证可信电子毕业证、可信电子教师证”等)
3.23 教育卡网上副本 digitalized identity version for education card
采用国产密码技术,在生成教育卡发卡数据时同步生成的一种专有电子化数据,与实体教育卡可信唯一绑定。
3.24 居民身份证网上副本 digitalized information concerning legal identity
以居民身份证制证信息为基础,将身份证登记项目作为要素进行数字映射,并通过一系列安全策略,经数字签名而成,并赋予唯一编号。
注:居民身份证在网络上的一种数字存在形式。居民身份证网上副本,也称“居民身份证网证”。
报文 message
由终端向教育卡(或教育卡向终端)发出的、不含传输控制字符的字节串。
路径 path
没有分隔的文件标识符的连接。
3.27 命令 command
终端向教育卡(包括学生教育卡、教师教育卡、毕业生教育卡)发出的一条报文。
注:该报文启动一个操作或请求一个响应。
3.28 教育卡终端 terminal for education card
用于完成教育卡读写、只读,以及验证等操作的设备。
注:教育卡终端亦称“教育卡智能终端”,简称“终端”。
3.29 教育卡终端安全模块 education card terminal secured module
同时装载非对称密钥和对称密钥、集成嵌入在教育卡终端(设备)内、实现对教育卡读写安全控制的专用芯片。
注:教育卡终端安全模块内使用国产对称密码算法与非对称密码算法。教育卡终端安全模块是教育卡密钥管理体系的重要组成部分。简称“教育卡安全模块”。
3.30 教育卡芯片认证码 education card chip authenticate code
采用国产密码算法生成并掩膜写入到教育卡芯片内的一串专有数据,以标识教育卡安全芯片的唯一性。
3.31 教育卡芯片鉴权证书 education card chip authenticate certificate
由国家批准的第三方电子认证服务机构为教育卡安全芯片签发的数字证书
注:标识教育卡安全芯片具有有效性、唯一性与不可抵赖性。教育卡芯片鉴权证书,简称“芯片鉴权证书”。
3.32
可信教育数字身份发行与管理服务 中 心 trusted educational digital identity issuing and management center
承担可信教育数字身份(含教育卡)的签发发行与验证服务,以及全生命周期管理服务的专门化机构。
可信教育数字身份发行与管理服务中心负责可信教育数字身份(含教育卡)的申请、签发、发行、管理与验证服务。可信教育数字身份发行与管理服务中心,由“可信教育数字身份签发与管理服务中心、教育卡发行管理服务中心”两大服务体系组成。可信教育数字身份签发与管理服务中心主要由“可信教育数字身份签发中心、可信教育数字身份管理中心、可信教育数字身份服务中心、可信教育数字身份数据处理中心、密钥管理服务中心可信教育数字身份应用生态技术支撑服务中心、可信教育数字人认证中心”等部分组成;教育卡发行管理服务中心(简称“教育卡发卡中心”)主要由“教育卡芯片初始化中心、教育卡个人化中心、教育卡写卡写证中心”组成。可信教育数字身份发行与管理服务中心的各个组成中心系统,具体承担可信教育数字身份(含教育卡)申请数据采集、数据处理、卡数据生成、芯片初始化、写卡写证,以及教育卡挂失、补卡、换卡、注销、安全保障体系与技术支撑、系统容灾备份等工作与服务,同时负责“可信教育数字身份发行单位、可信教育数字身份应用单位”的管理。
3.33 可信教育数字身份发行单位 trusted educational digital identity issuing unit
承担可信教育数字身份(含教育卡)的申请、发行、管理等相关工作的县(区)以上教育管理机构、中等职业学校以上的大专院校。
注:可信教育数字身份发行单位主要包括教育行业各级教育管理机构、中等职业教育学校、高等职业教育学校与高
等院校。对于可信教育数字身份的教育卡形态载体而言,可信教育数字身份发行单位亦称“教育卡发行单位”,简称“卡发行单位”。
3.34 可信教育数字身份应用单位 trusted educational digital identity application unit
在本单位的应用业务系统中使用可信教育数字身份(含教育卡)进行管理与服务,或对本单位的可信教育数字身份持有人(含教育卡持卡人、可信教育数字人)进行管理与服务的单位。
注:可信教育数字身份应用单位,主要包括教育行业的各级教育管理机构、各级各类学校,以及使用可信教育数字身份的社会化应用机构。对于可信教育数字身份的教育卡形态载体而言,可信教育数字身份应用单位亦称“教
育卡应用单位”(简称“卡应用单位”)。
4 缩略语
下列缩略语适用于本文件。
AC:应用密文(Application Cryptogram)
ADF:应用定义文件(Application Definition File)
AEF:应用基本文件(Application Elementary File)
AID:应用标识符(Application Identifier)
ARPC:授权响应密文(Authorization Response Cryptogram)
ATC:应用交易计数器(Application Transaction Counter)
CBC:密码分组链接(Cipher Block Chaining)
CLA:命令报文的类别字节(Class Byte of the Command Message)
COS:芯片操作系统(Chip Operating System)
EIC:教育卡发卡中心(Education Card Issuing Center)
EID:网络空间电子身份标识(Electronic Identity) ESC:教育电子身份安全码(Education Electronic ID Security Code) ESN:教育电子身份安全号(Education Electronic ID Security Number) FCI:文件控制信息(File Control Information) FID:文件标识符(File Identifier) IMK:发卡方主密钥(Card Issuer Master Key) INS:命令报文的指令字节(Instruction Byte of Command Message) MAC:报文鉴别代码(Message Authentication Code) MIC:管理信息中心(Management Information Center) PIN:个人识别码(Personal Identification Number) PKI:公钥密码基础设施(Public Key Infrastructure) RFU:预留(Reserved for Future Use) RID:注册应用提供商标识(Registered Application Provider Identifier) RAM:随机存取存储器(Random Access Memory) ROM:只读存储器(Read Only Memory) SFI:短文件标识符(Short File Identifier) SW:状态字(Status Word) TLV:标签、长度、值(Tag Length Value)
5 教育卡文件系统
5.1 文件通则
5.1.1 文件结构
教育卡(包括学生教育卡、教师教育卡、毕业生教育卡)的应用文件结构应符合 GB/T 16649.4的规定。
各个应用所对应的 ADF与 AEF,构成应用文件结构的各个分支。
5.1.2 ADF
通过 FCI对 ADF下的 AEF进行访问。
5.1.3 AEF
AEF的文件类型如下:
a) 变长记录文件;
b) 循环记录文件;
c) 二进制文件;
d) 扩展记录文件。
5.1.4 文件选择
教育应用的文件选择方式如下
a) ADF可用 AID进行选择。成功选择了 ADF后,该 ADF被设置成当前 ADF,可使用相关命令对其进行操作。
b) AEF可用 READ或 UPDATE命令通过SFI进行选择。
5.2 文件引用
教育应用的各个 ADF,可用 FID或 AID进行引用。
5.3 文件结构
教育应用的文件结构见表1。文件定义应符合附录 A 的规定。
| 序号 | 应用 | 文件名称 | 文件信息 | 说明 |
| 1 | 公共应用(ADF0) | 教育卡发行信息文件(EF01) | 厂商代码、发卡方专用代码等信息 | 由EIC写入 |
| 持卡人基本身份信息文件(EF02) | 持卡人姓名、籍贯、ESN等信息 | |||
| 相片信息文件(EF03) | 持卡人的相片信息 | |||
| 生物特征识别信息文件(EF04) | 持卡人的ESC信息(含人脸特征值等生物特征识别信息) | |||
| 2 | 法定身份证件网上应用(ADF1) | 居民身份证网上副本文件(EF01) | 持卡人的居民身份证网上副本信息 | 由EIC写入 |
| 3 | 学校应用(ADF2) | 工作信息文件(EF01) | 持卡人工作情况的基本信息 | 仅用于教师卡 |
| 学籍信息文件(EF02) | 持卡人的基本学籍信息 | 仅用于学生卡 | ||
| 学籍注册文件(EF03) | 持卡人的学籍注册信息,每学期一条记录 | 仅用于学生卡 | ||
| 体质健康信息文件(EF04) | 持卡人身体健康状况信息 | 仅用于学生卡 | ||
| 学生助学贷款信息文件(EF05) | 持卡人所申请的助学贷款的信息 | 仅用于学生卡 | ||
| 营养餐资格信息文件(EF06) | 持卡人的营养餐资格信息 | 仅用于学生卡 | ||
| 营养餐领餐信息文件(EF07) | 持卡人领用营养餐的信息 | 仅用于学生卡 | ||
| 4 | 机构应用(ADF3) | 毕业证/结业证文件(EF01) | 持卡人的毕业证/结业证信息 | — |
| 学位证书文件(EF02) | 持卡人的学位证书信息 | — | ||
| 资格水平证书文件(EF03) | 持卡人所获得国家认可的专业资格、岗位证书信息 | — | ||
| 考务基本信息文件(EF04) | 持卡人的准考证信息 | — | ||
| 学生首次就业信息文件(EF05) | 持卡人的报到证编号、首次就业日期、就业单位名称等信息 | — | ||
| 教育经历信息文件(EF06) | 持卡人的教育经历信息 | — |
| 序号 | 应用 | 文件名称 | 文件信息 | 说明 |
| 5 | 密码应用(ADF4) | 教育卡发卡中心证书(EF01) | 签发持卡人的签名证书与加密证书的证书 | — |
| 签名密钥文件(EF02) | 签名私钥信息 | — | ||
| 加密密钥文件(EF03) | 加密私钥信息 | — | ||
| 人员签名证书文件(EF04) | 签名证书 | — | ||
| 人员加密证书文件(EF05) | 加密证书 | — | ||
| 发卡方预留信息文件(EF06) | 发卡方自定义 | — | ||
| 签名公钥文件(EF07) | 签名公钥信息 | — | ||
| 加密公钥文件(EF08) | 加密公钥信息 | — | ||
| 证书管理文件(EF09) | 签名证书与加密证书的管理信息 | — | ||
| 6 | 教育管理应用(ADF5) | 国家教育管理应用保留文件1~9(EF01~EF09) | 国家教育管理应用相关信息 | 文件结构由国家教育主管部门定义 |
| 7 | 行业扩展应用(ADF6) | 交通票务优惠信息文件(EF01) | 持卡人搭乘交通工具的控制信息 | 由行业应用、EIC、或应用系统写入的信息 |
| 交通票务使用信息文件(EF02) | 持卡人搭乘交通工具的日期、交通工具类型以及总使用次数等信息 | 由行业应用、EIC、或应用系统写入的信息 | ||
| 网络学习空间(或数据空间)应用信息文件(EF03) | 持卡人在网络学习空间(或数据空间)的应用信息 | |||
| 行业应用文件4~9(EF04~EF09) | 用于后续存放其他行业应用(例如,可信教育数字人)相关信息 | |||
| 8 | 教育电子证件(电子凭证/身份凭证)应用(ADF8) | 电子毕业证/电子结业证信息文件(EF01) | 电子毕业证(含电子毕业证证明)/电子结业证(含电子结业证证明)的格式化信息 | — |
| 电子学位证信息文件(EF02) | 电子学位证(含电子学位证证明)的格式化信息 | |||
| 电子毕业证/电子结业证版式文件(EF03) | 电子毕业证(含电子毕业证证明)/电子结业证(含电子结业证证明)的版式文件信息 | |||
| 电子学位证版式文件(EF04) | 电子学位证(含电子学位证证明)的版式文件信息 |
| 序号 | 应用 | 文件名称 | 文件信息 | 说明 |
| 9 | 芯片管理应用(ADF9) | 芯片鉴权证书密钥文件(EF01) | 芯片鉴权证书的签名私钥 | EIC写入 |
| 芯片鉴权证书文件(EF02) | 芯片鉴权证书 | EIC写入 | ||
| 10 | 省级教育管理应用(ADFA) | 省级应用文件1~9(EF01~EF09) | 省级教育管理应用的信息 | 文件结构由省级教育管理部门自定义 |
| 11 | 市(县)级教育管理应用(ADFB) | 市(县)级应用文件1~9(EF01~EF09) | 市(县)级教育信息化应用的信息 | 文件结构由市(县)级教育管理部门自定义 |
| 12 | 卡发行单位教育应用(ADFC) | 卡发行单位的应用文件1~9(EF01~EF09) | 教育卡发行单位的教育信息化应用的信息 | 文件结构由卡发行单位自定义 |
| 13 | 卡应用单位教育应用(ADFD) | 卡应用单位的应用文件1~9(EF01~EF09) | 教育卡应用单位的教育信息化应用的信息 | 文件结构由卡应用单位自定义 |
5.4 数据元定义
教育应用文件的数据元定义,应符合附录 B的定义。
6 教育卡命令
6.1 命令通则
教育卡命令、命令响应的格式与内容,应符合 GB/T 16649.4的规定。教育卡命令定义,应符合附录 C的定义。
教育卡命令分为通用命令与专有命令两种类型。
a) 通用命令,主要包括以下命令:
选择(SELECT),应符合 C.2.1的规定;
身份鉴别(PERSONAL AUTHENTICATE),应符合 C.2.2的规定;
卡片鉴别(CARD AUTHENTICATE),应符合 C.2.3的规定;
取随机数(GET CHALLENGE),应符合 C.2.4的规定;
外部认证(EXTERNAL AUTHENTICATE),应符合 C.2.5的规定;
添加记录(APPEND RECORD),应符合 C.2.6的规定;
更新记录(UPDATE RECORD),应符合 C.2.7的规定;
读记录(READ RECORD),应符合 C.2.8的规定;
更新二进制信息(UPDATE BINARY),应符合 C.2.9的规定;
读二进制信息(READ BINARY),应符合 C.2.10的规定;
PIN 校验(VERIFY PIN),应符合 C.2.11的规定;
PIN 修改(CHANGE PIN),应符合 C.2.12的规定;
PIN 解锁与重装(PIN UNBLOCK/RELOAD PIN),应符合 C.2.13的规定;
应用锁定(APPLICATION BLOCK),应符合 C.2.14的规定;
应用解锁(APPLICATION UNBLOCK),应符合 C.2.15的规定;
会话密钥导出(EXPORT SESSION KEY),应符合 C.2.16的规定;
会话密钥导入(IMPORT SESSION KEY),应符合 C.2.17的规定;
对称加密/解密(ENCRYPT/DECRYPT),应符合 C.2.18的规定;
SM2密钥对生成(GENERATE SM2 KEY PAIR),应符合 C.2.19的规定;
SM2公钥导出(EXPORT PUBLIC KEY),应符合 C.2.20的规定;
SM2密钥导入(IMPORT SM2 KEY),应符合 C.2.21的规定;
SM2公钥运算(SM2 PUBLIC KEY CAL),应符合 C.2.22的规定;
SM2私钥运算(SM2 PRIVATE KEY CAL),应符合 C.2.23的规定;
SM3杂凑运算(DATA HASH),应符合 C.2.24的规定;
证书验证(VERIFY CERT DATA),应符合 C.2.25的规定。
b) 专有命令,主要包括以下命令:
写教育电子证件(WRITE DIPLOMA),应符合 C.3.1的规定;
读教育电子证件(READ DIPLOMA),应符合 C.3.2的规定;
禁止修改教育电子证件(DISABLE DIPLOMA MODIFIED),应符合 C.3.3的规定;
读教育卡芯片认证码(READ AUTHCODE),应符合 C.3.4的规定;
取应用交易计数器(GET ATC),应符合 C.3.5的规定;
交易认证(TRANS AUTHENTICATE),应符合 C.3.6的规定;
联机圈存(CREDIT FOR ONLINE LOAD),应符合 C.3.7的规定;
联机消费(DEBIT FOR ONLINE PURCHASE),应符合 C.3.8的规定;
取脱机交易 AC(GET TRANSACTION PROVE),应符合 C.3.9的规定。
6.2 命令报文格式
命令报文由命令头和可变长的命令体组成。命令报文格式,如图1所示。
| CLA | INS | P1 | P2 | Lc | Data | Le |
| 命令头 | 命令体 | |||||
图 1 命令报文格式
命令报文的内容,见表2。
表 2 命令报文内容
| 代码 | 长度(字节) | 描述 |
| CLA | 1 | 命令类别 |
| INS | 1 | 指令字节 |
| P1 | 1 | 指令参数1 |
| 代码 | 长度(字节) | 描述 |
| P2 | 1 | 指令参数2 |
| Lc | 0或1 | 数据域中存在的字节数 |
| Data | 可变 | 命令发送的数据位串(长度=Lc) |
| Le | 0或1 | 响应报文数据域中期望的数据字节数 |
6.3 命令响应报文格式
命令响应由一个变长的响应数据体和两字节的响应尾组成。命令响应报文格式,如图2所示。
| Data | SW1 | SW2 |
| 响应数据体 | 响应尾 | |
命令响应报文的内容,见表3。
| 代码 | 长度(字节) | 描述 |
| Data | 变长 | 响应报文的数据位串 |
| SW1 | 1 | 状态字1 |
| SW2 | 1 | 状态字2 |
7 教育卡应用流程
对教育卡(包括学生教育卡、教师教育卡、毕业生教育卡)进行相关操作的流程,应符合附录 D 的要求。在应用操作中,当命令中 CLA 字节的低半字节为4,命令使用安全报文格式。安全报文应符合附录 E、附录 F的规定。
8 教育卡卡面信息
教育卡作为教育数字身份载体之一,根据其卡内所写入的人员可信教育数字身份信息(主要分为学生可信数字身份信息、教师可信数字身份信息、毕业生可信数字身份信息、教育数字人身份信息等类型)所对应的应用功能,教育卡分为学生教育卡(在教育卡的卡面信息,则表示为简称的“学生卡”)、教师教育卡(在教育卡的卡面信息,则表示为简称的“教师卡”)和毕业生教育卡(在教育卡的卡面信息,则表示为简称的“毕业生卡”)等类型。因此,教育卡卡面信息,应符合附录 G 的要求
9 教育卡应用安全要求
9.1 总体要求
教育卡作为教育数字身份载体,根据其卡内应写入的不同教育群体人员可信教育数字身份信息(即学生可信数字身份、教师可信数字身份、毕业生可信数字身份),教育卡的应用安全要求,主要包括以下基本内容。
a) 教育卡卡内应同时存放人员可信教育数字身份(主要包括“法定身份信息、教育身份信息、网络信任身份信息”等重要基础身份元素,以及“教育电子身份安全号信息、可信教育数字身份安全码信息、可信教育数字身份鉴权证书信息、可信教育数字身份印鉴信息、可信教育数字人身份信息、可信教育数字身份凭证信息”等可信应用身份元素)以及与应用相关的对称密钥和非对称密钥。人员可信教育数字身份与密钥的管理,应符合国家电子认证和密码主管部门的管理要求。
b) 教育卡(包括学生教育卡、教师教育卡、毕业生教育卡)应采用公钥鉴别机制实现对持卡人的身份鉴别。
c) 教育卡(包括学生教育卡、教师教育卡、毕业生教育卡)应使用国产密码算法实现对数据的完整性和机密性保护。
d) 教育卡是“可信教育数字身份鉴权证书”的教育数字身份载体(即存储人员可信教育数字身份的智能安全硬件)。因此,教育卡 COS应具有“数字签名/验证、数据加密/解密、文件访问控制”的基本安全机制,并写入通过国家密码主管部门检测并批准的智能安全芯片的 ROM 中。
e) 教育卡(包括学生教育卡、教师教育卡、毕业生教育卡)内应建立安全域,保护密码算法代码模块、密钥和卡内应用的安全。
f) 教育卡(包括学生教育卡、教师教育卡、毕业生教育卡)应采用公钥鉴别机制实现对教育卡芯片的有效性验证。
g) 根据国家密码和电子认证主管部门批准,教育卡的发卡方是“可信教育数字身份发行与管理服务中心”;对于“可信教育数字身份发行单位”,则是县(区)或以上的各级教育管理机构、大专院校(包括中等职业教育学校、高等职业教育学校和高等院校);对于“可信教育数字身份应用单位”,则为教育行业的各级教育管理机构、各级各类学校,以及可信教育数字身份的社会化应用相关单位。
9.2 加密机制
9.2.1 对称加密机制
9.2.1.1 加密解密
采用 CBC模式的 SM4算法以及 MAC 过程密钥 Ks ,对任意长度的报文 M 计算密文。计算步骤如下。
a) 填充并分块,处理步骤如下:
在 M 的右端强制加上1个‘80’字节,然后再在右端加上最少的‘00’字节,使得结果报文的长度是16字节的整数倍;
将结果报文拆分为16字节的块 X1,X2,...,XK。
b) 生成 MAC过程密钥:生成 MAC过程密钥 KS的方法,见9.2.1.2。
c) 密文计算:用 Ks 以 CBC模式的分组加密处理16字节块 X1, X2, …, XK circHK := ALG(K) [Xi⊕ Hi-1],这里 k =1, 2, …, K. 。针对安全报文 MAC、交易 MAC、AC,初始值 H0:= ('00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || '00' || ' ||‘00’||‘00’||‘00’) HK 的计算方法如图3所示。
d) 最终密文生成。

标引符号说明:
I———输入; DEA(e)——— 数据加密算法(加密模式); O ———输出; D———数据块; KM MAC过程密钥; +———异或。
图 3 使用SM4算法计算 HK 的算法
9.2.1.2 过程密钥产生
计算 MAC、AC与 ARPC时使用的过程密钥的产生方法,说明如下。
a) 确定加密密钥:教育卡决定是使用 MAC密钥还是数据加密密钥来进行所选择的算法处理。
b) 数据加密:将当前的 ATC在其左边用十六进制数字‘00’填充到8个字节作为数据源 A,将当前的 ATC异或十六进制值 FFFF后在其左边用十六进制数字‘00’填充到8个字节作为数据源 B,将数据源 A 和数据源 B串连,用选定的密钥对该数据作如图4所示的运算产生过程密钥。 Z := ALG(Key) [ [ '00' mid '00' mid '00' mid '00' mid '00' mid '00' mid '00' mid ATC mid '00' mid '00' mid '00' mid . . |‘00’||‘00’||‘00’||(ATC ⊕‘FFFF’)]。

对于文件读写以及加解密的过程密钥的产生方法,说明如下:
a) 生成随机数:生成16字节随机数;
b) 密钥生成:对随机数做加密运算,生成过程密钥。
9.2.1.3 子密钥分散
子密钥分散使用一个16字节的IMK 分散得出用于密文生成、发卡方认证和安全报文的子密钥以16字节的教育卡芯片认证码作为输入数据,以IMK 作为密钥,生成16字节的子密钥。
子密钥分散流程如图5所示。

9.2.2 非对称加密机制
9.2.2.1 密码算法
非对称密码算法使用SM2密码算法,算法见 GB/T 32918.2,GB/T 32918.3,GB/T 32918.4。
SM2签名方案使用以下三种函数:
a) 签名函数 Sign(SK)[M] ,该函数输出两个相同长度的数字r和s;
b) 验证函数 Verify(PK)[M,Sign(SK)[M]] ,该函数输出 True或 False,表示验证正确或失败;
c) 杂凑算法 H[i],将任意长度的报文映射为一个32字节的杂凑值。
9.2.2.2 数字签名
对任意长度的数据组成的报文 M 计算数字签名S的过程如下。
a) 计算 ZA:ZA=SM3(ENTLA||IDA||a||b||xG||yG||xA||yA) 。其中IDA 固定设置为16字节的16进制数据31,32,33,34,35,36,37,38,31,32,33,34,35,36,37,38;EN-
TLA 值为2字节的16进制数据00,80。
b) 计算报文的 HASH 值:计算报文 M 的32字节的 HASH 值 h= SM3 [ZA||M]
c) 计算数字签名:计算 Sign(SK)[h] ,得到两个数字r和s;将数字r和s串联而成,生成数字签名S。
9.2.2.3 数字签名验证
对任意长度的数据组成的报文 M 验证数字签名S的过程如下。
a) 计算 ZA:ZA=SM3(ENTLA||IDA||a||b||xG||yG||xA||yA) 。其中 IDA 固定设置为16字节的16进制数据31,32,33,34,35,36,37,38,31,32,33,34,35,36,37,38;EN-
TLA 值为2字节的16进制数据00,80。
b) 计算报文 MSG 的杂凑值:计算报文 MSG 的32字节的杂凑值 h= SM3[Z_A || M]
c) 签名验证:计算 Verify(P
K
)[h, S] ,若函数输出 True,签名验证正确,若输出 False,签名验证失败。
9.3 公钥鉴别
9.3.1 公钥鉴别要求
公钥鉴别分为卡片鉴别和身份鉴别两类。卡片鉴别是验证教育卡的合法性;身份鉴别是验证教育卡持卡人的合法性。
发卡方生成发卡方SM2密钥对(发卡方公钥与发卡方私钥);教育卡生成教育卡 SM2签名密钥对(教育卡签名公钥与教育卡签名私钥);使用发卡方私钥对教育卡签名公钥进行签名生成人员签名证书并存放在教育卡。
在教育卡(包括学生教育卡、教师教育卡、毕业生教育卡)使用过程中,使用发卡方公钥验证人员签名证书,实现卡片鉴别和身份鉴别。
9.3.2 公私钥对
9.3.2.1 发卡方公私钥对
发卡方公私钥对在生成后,将分配一个唯一的发卡方公钥索引。发卡方公钥及其索引存放在教育卡终端设备中。发卡方私钥由发卡方保管并保证其安全性。
终端设备应有足够空间存放发卡方公钥,以及该公钥所对应的 RID和发卡方公钥索引。
终端设备通过 RID和发卡方公钥索引定位发卡方公钥。
9.3.2.2 教育卡签名公私钥对
教育卡签名公私钥对由发卡方分配(或由教育卡生成)。教育卡签名私钥存放在教育卡的安全存储区域;使用发卡方私钥对教育卡签名公钥进行签名产生的人员签名证书,存放在教育卡中在应用过程中,应通过 RID和发卡方公钥索引定位发卡方公钥,并用发卡方公钥验证人员签名证书。教育卡签名公钥用于验证教育卡的数字签名数据。验证数字签名数据时,应根据人员签名证书的“发卡方公钥签名算法标识”检查算法类型。
9.3.3 公钥鉴别数据
9.3.3.1 公钥鉴别处理使用的数据
公钥鉴别处理使用如下数据:
a) 发卡方公钥索引:指明应使用与该索引对应的发卡方公钥进行公钥鉴别处理;
b) 人员签名证书:由发卡方签发,存放在教育卡内;
c) 教育卡签名私钥:存放在教育卡内。
9.3.3.2 教育卡应生成的数据
教育卡使用教育卡签名私钥对动态应用数据进行签名,生成签名的动态应用数据
9.3.4 密钥和证书
教育卡中存放有教育卡签名公私钥对。签名私钥存放在专有的密钥文件中,签名公钥存放在人员签名证书中。
人员签名证书是由发卡方私钥对表4中指定的数据计算生成。
为了完成公钥鉴别,应首先验证人员签名证书。表4详细给出了验证人员签名证书所需要的信息。
RID可从 AID中获得,其他信息可通过 READ RECORD 命令或 READ BINARY 命令获得。若缺少任意一项数据,将导致公钥鉴别失败。
| 字段名 | 长度(字节) | 描述 | 格式 |
| 证书格式 | 1 | 值为'14' | b |
| 应用主账号 | 10 | 主账号(在右边补上十六进制数'F') | cn 20 |
| 证书失效日期 | 2 | MMYY,在此日期后,这张证书无效 | n4 |
| 证书序列号 | 4 | 由发卡方分配给这张证书的唯一的二进制数 | b |
| 签名算法标识 | 1 | 标识人员签名证书对应的数字签名算法 | b |
| 加密算法标识 | 1 | 标识人员签名证书对应的加密算法,保留项 | b |
| 签名公钥参数标识 | 1 | 用的于规标定识椭圆曲线参数,同时确定NIC。应符合附录H | b |
| 签名公钥长度 | 1 | 标识人员签名公钥的字节长度NIC | b |
| 签名公钥 | NIC | 签名算法标识对应于SM2,NIC等于64 | b |
| 注:格式中数据类型定义,见B.1。 | |||
| 标签 | 长度(字节) | 描述 | 格式 |
| - | 5 | RID | b |
| 8F | 1 | 发卡方公钥索引 | b |
| 3FA8 | 最大248 | 人员签名证书,格式见表6 | b |
9.3.5 发卡方公钥的获取
终端使用发卡方公钥索引和 RID,取得存放在终端的发卡方公钥相关信息。
9.3.6 人员签名证书格式及验证
人员可信教育数字身份的人员签名证书(即可信教育数字身份鉴权证书)格式,见表6。
| 字段名 | 长度(字节) | 描述 | 格式 |
| 证书格式 | 1 | 16进制数据'14' | b |
| 应用主账号 | 10 | 主账号 | cn 20 |
| 字段名 | 长度(字节) | 描述 | 格式 |
| 教育卡关键信息Hash值 | 32 | 关键信息见表7 | b |
| 证书失效日期 | 2 | MMYY,在此日期后,这张证书无效 | n4 |
| 证书序列号 | 4 | 由发卡方分配给这张证书的唯一的二进制数 | b |
| 签名算法标识 | 1 | 标识人员签名公钥对应的数字签名算法 | b |
| 加密算法标识 | 1 | 标识人员签名公钥对应的加密算法,保留项 | b |
| 签名公钥参数标识 | 1 | 用于标识椭圆曲线参数,同时确定NIC | b |
| 签名公钥长度 | 1 | 标识人员签名公钥的字节长度NIC | b |
| 签名公钥 | NIC | 若签名算法标识对应于SM2,NIC等于64 | b |
| 数字签名 | NI | 若签名算法标识对应于SM2,NI等于32 | b |
人员签名证书验证的步骤如下。
a) 解析人员签名证书:获取并解析如表6所示的人员签名证书数据。若失败,则人员签名证书验证失败。
b) 检查证书格式:若人员签名证书中的证书格式的值不是“14”,则人员签名证书验证失败。
c) 比较主账号:比较人员签名证书中的应用主账号和从教育卡读出的应用主账号是否相同。若不同,则人员签名证书验证失败。
d) 检查证书失效日期:检查证书失效日期表明的日期是否等于或迟于当前日期。若证书失效日期在当前日期之前,则证书已过期,人员签名证书验证失败。
e) 检查签名算法标识:检查签名算法标识是否为“04”。若不是,则人员签名证书验证失败。
f) 验证教育卡关键信息 Hash值:验证教育卡关键信息 Hash值是否正确(Hash值明文格式见表7)。
g) 人员签名证书的签名验证:使用发卡方公钥对表6中准备的数据元的数字签名进行验证。若验证签名失败,则人员签名证书验证失败。
h) 步骤8:若以上所有的检查和验证均通过,继续按9.3.7执行实际的公钥鉴别。
| 字段名 | 长度(字节) | 描述 | 格式 |
| 发卡方代码 | 5 | 由国家有关主管部门颁发 | cn 5 |
| 卡类型标识 | 1 | 标识教育卡的类型 | b |
| ESN | 12 | 教育电子身份号 | b |
| 学籍号 | 19 | 学籍的数字标识 | cn 38 |
9.3.7 公钥鉴别过程
9.3.7.1 数字签名的生成
数字签名生成的步骤如下:
a) 发出 PERSONAL AUTHENTICATE 命令(或者 CARD AUTHENTICATE 命令):终端发出 PERSONAL AUTHENTICATE 命令(或者 CARD AUTHENTICATE 命令),命令中包含由动态数据对象列表指定的数据元;
b) 计算签名:教育卡使用教育卡的签名私钥,对表8中指明的数据计算签名,得到签名动态应用数据。
| 字段名 | 长度(字节) | 描述 | 格式 |
| ZA | 16 | 见9.2.2.2 | b |
| 签名的数据格式 | 1 | 16进制数据'15',表示用SM2签名 | b |
| 教育卡动态数据长度 | 1 | 标数识据教与育终卡端动动态态数数据据的字节长度LDD,包括教育卡动态 | b |
| 教育卡动态数据 | LDD | 由教育卡生成 | b |
| 终端动态数据 | 8 | 由动态数据对象列表指定的数据元连接而成 | b |
身份鉴别所使用的教育卡动态数据,由教育卡生成的随机数、ESN 组成;卡片鉴别所使用的教育卡动态数据,由教育卡生成的随机数、应用序列号组成。ESN 和应用序列号可以通过命令从教育卡获取。除表8与表9中指明的数据之外,公钥鉴别所需的数据对象在表5中说明
| 标签 | 长度(字节) | 描述 | 格式 |
| 3FA9 | NIC+LDD+2 | S表M121签名动态应用数据,格式见表10与 | b |
| 3FA2 | 变长 | 动态数据对象列表指定的数据元 | b |
9.3.7.2 数字签名的验证
终端获取的签名动态应用数据的格式,见表 10 与 表11。终端使用教育卡的公钥验证签名动态应用数据。若数字签名验证成功,则表12中的教育卡动态数据应被存放在标签“9F4C”中
| 字段名 | 长度(字节) | 描述 | 格式 |
| 签名的数据格式 | 1 | 16进制数据'15' | b |
| 字段名 | 长度(字节) | 描述 | 格式 |
| 教育卡动态数据长度 | 1 | 标识教育卡返回的动态数据的字节长度LDD | b |
| 教育卡动态数据 | LDD | 由教育卡生成,具体见表12 | b |
| 数字签名 | NIC | 对教育卡动态数据计算的SM2签名r||s | b |
| 字段名 | 长度(字节) | 描述 | 格式 |
| 签名的数据格式 | 1 | 16进制数据'16' | b |
| 教育卡动态数据长度 | 1 | 标识教育卡返回的动态数据的字节长度LDD | b |
| 教育卡动态数据 | LDD | 由教育卡生成,具体见表12 | b |
| 数字签名 | NIC | 对教育卡动态数据计算的SM2签名r||s | b |
a) 获取并解析签名动态应用数据:对于身份鉴别,签名动态应用数据如表10所示;对于卡片鉴别,签名动态应用数据如表11所示。
b) 检查签名的数据格式信息:对于身份鉴别,若不是‘15’,则身份鉴别失败;对于卡片鉴别,若不是‘16’,则卡片鉴别失败。
c) 准备数据:准备表10或表11中的相关数据元(即从签名数据格式直到教育卡动态数据)及动态数据对象列表中指定的数据元(即表12数据)用于验证签名
d) 签名验证:使用人员签名公钥对表10或表11的数字签名进行验证。若签名验证失败,则公钥鉴别失败。
e) 保存数据:若以上所有的步骤成功,则公钥鉴别成功。终端获取表12中教育卡动态数据所包含的教育卡动态数字后,将其存放在标签“9F4C”中。
| 长度(字节) | 描述 | 格式 |
| 4 | 教育卡生成的随机数 | b |
| 32 | 动态数据杂凑值 | b |
表12中的动态数据杂凑值,是对表8中的数据进行杂凑计算而生成的杂凑数据。
9.4 安全报文
9.4.1 安全报文要求
安全报文分为 MAC安全报文、加密安全报文两种。MAC安全报文是在报文后附上4字节 MAC;加密报文是将报文加密后,在密文后附上4字节 MAC
9.4.2 MAC安全报文
9.4.2.1 MAC过程密钥的生成
MAC过程密钥的生成步骤如下:
a) 生成随机数:通过取随机数命令获取8字节随机数;
b) 生成 MAC过程密钥:按照 E.4.2规定的过程密钥计算方法,生成 MAC过程密钥。
9.4.2.2 MAC的计算
MAC是通过使用 MAC过程密钥,按照 E.5的计算方法,对所要保护的报文进行计算得到。
要保护的报文应按照教育卡应用系统的专有规范来构建。
9.4.3 加密安全报文
9.4.3.1 数据加密密钥的生成
数据加密密钥按9.2.1.2规定的计算方法生成。
9.4.3.2 数据加密计算
在报文数据前添加1字节的报文长度数据作为待加密的数据。将待加密数据按9.2.1.1进行加密,生成密文。
9.4.3.3 密文 MAC的计算
按9.4.2的要求,生成密文的 MAC。
9.5 卡片安全
9.5.1 卡片安全要求
卡片安全要求如下:
a) 教育卡(包括学生教育卡、教师教育卡、毕业生教育卡)的所有应用中,每一个应用均应放在一个单独的 ADF中;
b) 用于一种特定功能的加密/解密密钥,不能被任何其他功能所使用(包括保存在教育卡中的密钥和用来产生、分散、传输这些密钥的密钥);
c) 教育卡应用功能的命令,使用合适的安全机制,在教育卡内部为访问数据文件、命令执行等提供安全性保障。
9.5.2 安全域
应建立安全域,用于控制对所有数据与可执行资源(即数据文件、记录、命令、加密密钥与算法)的访问。
通过执行SELECT 命令建立安全域。SELECT 命令包含建立安全域的相关信息,并且定义了指定数据和可执行资源可以被访问的范围。
处理SELECT 命令,应使得应用管理数据可被访问。应用管理数据,应指定能被后续指令访问的所有数据文件,记录以及可执行资源。
应用管理数据决定了应用可访问的文件和可执行资源。文件和记录编号,则应由该命令在应用文件定位器中提供。
使用SELECT 命令建立安全域,应限制在卡应用期间被存取的资源,包括决定该资源是被包含在应用管理数据和应用文件定位器之内还是被排除在外,分为如下两种情况:
a) 不被应用管理数据和应用文件定位器引用的数据文件,不能被访问;
b) 不被应用管理数据和应用文件定位引用器的命令或加密算法,不能在当前安全域内被使用。
应用管理数据的初始化状态,应仅包含处理该应用交易的过程中可以被访问的那些数据文件。初始的应用管理数据在个人化时被定义,并在选择应用时建立。
9.5.3 AEF访问条件
访问 AEF前,应至少执行一次SELECT 命令并且已经建立安全域。
只有安全域建立,并且后续读取数据命令 (如:READ RECORD 命令)或更新数据命令 (如: UPDATE RECORD命令)被发送到一个 AEF时,AEF的访问控制(由 FCI定义)才可被执行使用。
使用安全通信或 VERIFY PIN 命令(或包含二者)作为访问条件的文件,只有在访问条件都满足时,被请求的访问才能继续执行。
AEF的访问条件应用于所有命令。
9.5.4 FCI的安全
9.5.4.1 FCI的构成
FCI应在 EIC进行的教育卡芯片初始化操作期间建立。FCI包含了文件管理数据。文件管理数据可包含应用管理数据。
9.5.4.2 应用管理数据
应用管理数据应在 EIC进行的教育卡芯片初始化期间建立。应用管理数据保存在应用定义文件的文件管理数据中。
应用管理数据描述的安全域,应定义以下内容:
a) 在应用范围内可以被存取的资源(例如,数据元、PIN、密钥、参数);
b) 可在应用的上下文范围内被执行的命令;
c) 命令与资源之间的关系。
安全域应由应用管理数据说明的相关资源定义。没有被包含在应用管理数据内的资源不能被应用使用。
教育卡应定义以下两类资源:
a) 数据资源;
b) 可执行代码资源。
9.5.4.3 数据资源
9.5.4.3.1 数据标识
数据资源是指存放在文件内的数据元。数据资源由教育卡芯片内的唯一标识符所识别。文件由教育卡内部唯一的 FID所标识(不包含在文件内的数据元则由一个唯一数据标识所标识)。运行应用所需的任何数据资源应在应用管理数据内标识。
对于包含了数据元的文件,SFI与文件标识之间的关系,应存放在应用管理数据内进行维护。
对于未被包含在文件内的数据对象,数据对象标签与唯一数据标识之间的关系,应存放在应用管理数据内进行维护。
9.5.4.3.2 密钥标识
密钥不能从外部被引用。对保存在文件内的密钥,应用管理数据维护有在执行应用管理数据定义的命令,或执行加密算法时定位密钥所对应的文件标识和指向密钥的引用。
对未保存在文件内的密钥,应用管理数据维护有在执行应用管理数据定义的命令,或执行加密算法时定位密钥所对应的教育卡内部的唯一密钥标识。
9.5.4.3.3 PIN/口令标识
PIN/口令,应只能通过应用管理数据和安全通信共同定义的命令被引用
对于保存在文件内的 PIN/口令,应用管理数据维护了在执行应用管理数据定义的命令,或加密算法时定位 PIN/口令所对应的文件标识和指向 PIN/口令的引用。
对于未保存在文件内的 PIN/口令,应用管理数据维护在执行应用管理数据定义的命令(或加密算法时定位 PIN/口令所对应的教育卡芯片内部的唯一 PIN/口令标识)。
9.5.4.4 可执行代码资源
9.5.4.4.1 命令标识
命令资源的内容应包括 CLA 和INS,用于查找命令的位置。
9.5.4.4.2 算法标识
算法资源的内容应包括算法标识,算法标识用于定位可执行的算法
9.6 密钥管理
9.6.1 非对称密钥管理
9.6.1.1 发卡方公私钥对
发卡方公私钥对应符合以下要求:
a) 公私钥对采用国家密码主管部门批准使用的密码设备产生;
b) 发卡方私钥存放在密码设备中,不准许明文导出;
c) 发卡方公钥导出后,由国家密码主管部门管理的国家根证书签发生成发卡方证书,对外发布;
d) 发卡方私钥用于生成人员签名证书,发卡方公钥用于验证人员签名证书。
9.6.1.2 教育卡签名公私钥对
教育卡签名公私钥对应符合以下要求:
a) 教育卡签名公私钥对在教育卡内产生(或采用国家密码主管部门批准使用的密码设备产生);
b) 教育卡签名私钥存放在教育卡中,不准许明文导出;
c) 教育卡签名公钥导出后,由国家批准的第三方电子认证服务机构签发生成“人员签名证书”(使用发卡方私钥),对外发布。
9.6.1.3 教育卡终端签名公私钥对
教育卡终端签名公私钥对应符合以下要求:
a) 教育卡终端签名公私钥对由教育卡终端内的教育卡终端安全模块产生;
b) 教育卡终端签名私钥存放在教育卡安全模块中,不准许明文导出;
c) 教育卡终端签名公钥导出后,由国家批准的第三方电子认证服务机构签发生成“教育卡终端签名证书”,对外发布。
9.6.2 对称密钥管理
9.6.2.1 发卡方对称密钥
9.6.2.1.1 对称密钥种类
IMK 的类型,见表13。
| IMK类型 | 用途 | 长度(字节) |
| AC主密钥 | 产生教育卡AC子密钥,用于AC的产生和验证 | 16 |
| 安全报文认证主密钥 | 产生教育卡MAC子密钥,用于MAC的产生和验证 | 16 |
| 联机支出主密钥 | 产生教育卡联机支出子密钥,用于联机支出密文计算 | 16 |
| 联机导入主密钥 | 产生教育卡联机导入子密钥,用于联机导入密文的计算 | 16 |
| PIN解锁主密钥 | 产生教育卡PIN解锁子密钥,用于脱机PIN解锁 | 16 |
| 应用锁定主密钥 | 产生教育卡应用锁定子密钥,用于应用锁定 | 16 |
| 应用解锁主密钥 | 产生教育卡应用解锁子密钥,用于应用解锁 | 16 |
| 文件读外部认证主密钥 | 控制文件读鉴别的外部认证密钥 | 16 |
| 文件写外部认证主密钥 | 控制文件写鉴别的外部认证密钥 | 16 |
9.6.2.1.2 密钥管理
发卡方对称密钥的管理,应符合以下要求:
a) 密钥生成:使用国家密码主管部门批准的密码设备生成各类密钥;
b) 密钥存储:安全存放在密码设备中;
c) 密钥分发:安全地将密钥分发到教育卡安全模块、发卡密码设备或下级密钥管理系统;
d) 密钥备份:提供系统中使用的密钥的备份机制,备份数据应加密存储;
e) 密钥销毁:按国家密码主管部门的要求,对系统中不再使用的密钥进行销毁;
f) 密钥审计:定期对密钥的生成、存储、分发、备份、销毁等操作进行审计。
9.6.2.2 教育卡对称密钥
9.6.2.2.1 对称密钥种类
教育卡内存放的对称密钥的类型,见表14。
| 密钥类型 | 用途 | 长度(字节) |
| AC密钥 | 用于AC的产生和验证 | 16 |
| 安全报文认证密钥 | 用于MAC的产生和验证 | 16 |
| 联机消费密钥 | 用于联机消费密文计算 | 16 |
| 联机圈存密钥 | 用于联机圈存密文的计算 | 16 |
| PIN解锁密钥 | 用于脱机PIN解锁 | 16 |
| 应用锁定密钥 | 用于应用锁定 | 16 |
| 应用解锁密钥 | 用于应用解锁 | 16 |
| 文件读外部认证密钥 | 控制文件读鉴别的外部认证密钥 | 16 |
| 文件写外部认证密钥 | 控制文件写鉴别的外部认证密钥 | 16 |
9.6.2.2.2 密钥管理
教育卡对称密钥的管理,应符合以下要求:
a) 密钥生成:由IMK 分散生成,IMK 的类型见表13;
b) 密钥存储:安全存放在教育卡内,不允许明文导出。
9.7 密码算法
9.7.1 对称密码算法
教育卡使用的对称密码算法为SM4算法。算法见 GB/T 32907。
9.7.2 非对称密码算法
教育卡使用的非对称密码算法为 SM2 算法。 算法见 GB/T 32918.2、GB/T 32918.3、GB/T 32918.4。
9.7.3 杂凑算法
教育卡使用的杂凑算法为SM3算法。算法见 GB/T 32905。
10 教育卡应用接口
教育卡应用接口包含C/S和B/S两类应用接口。C/S应用接口,应符合附录I的规定,B/S应用接口,应符合附录J的规定。
附 录 A (规范性)
教育应用文件定义
A.1 教育应用文件的 AID和FID信息
教育应用文件结构中的 ADF对应的 AID与 FID,见表 A.1。
| 序号 | 应用 | AID | FID |
| 1 | 教育卡主应用文件 | D156000044000000 | 3F00 |
| 2 | 公共应用(ADF0) | B9ABB9B2D3A6D3C3 | ADF0 |
| 3 | 法定身份证件网上应用(ADF1) | B7A8B6A8C9EDB7DDD6A4BCFED3A6D3C3 | ADF1 |
| 4 | 学校应用(ADF2) | D1A7D0A3D3A6D3C3 | ADF2 |
| 5 | 机构应用(ADF3) | BBFAB9B9D3A6D3C3 | ADF3 |
| 6 | 密码应用(ADF4) | 504B49D3A6D3C3 | ADF4 |
| 7 | 教育管理应用(ADF5) | BDCCD3FDB9DCC0EDD3A6D3C3 | ADF5 |
| 8 | 行业扩展应用(ADF6) | C0A9D5B9D3A6D3C3 | ADF6 |
| 9 | 教应育用(电A子DF证8)件(/电子凭证/数字凭证) | B5E7D7D3CEC4C6BED3A6D3C3 | ADF8 |
| 10 | 芯片管理应用(ADF9) | D0BEC6ACB9DCC0EDD3A6D3C3 | ADF9 |
| 11 | 省级教育管理应用(ADFA) | CAA1BCB6BDCCD3FDB9DCC0EDD3A6D3C3 | ADFA |
| 12 | 市(县)级教育管理应用(ADFB) | CAD0BCB6BDCCD3FDB9DCC0EDD3A6D3C3 | ADFB |
| 13 | 卡发行单位教育管理应用(ADFC) | BFA8B7A2D0D0B5A5CEBBD3A6D3C3 | ADFC |
| 14 | 卡应用单位教育管理应用(ADFD) | BFA8D3A6D3C3B5A5CEBBD3A6D3C3 | ADFD |
A.2 公共应用文件
A.2.1 教育卡发行信息文件
教育卡发行信息文件用来存放“教育卡发卡方代码、应用类型标识、应用版本”等信息。文件定义见表 A.2。
| 文件路径 | ADF0/EF01 | |
| 文件类型 | 二进制文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3F01 | 5 | 发卡方代码 |
| 3F02 | 5 | 应用类型标识 |
| 3FB2 | 1 | 应用版本 |
| 3F03 | 1 | 卡类型标识 |
| 5A | 10 | 应用序列号(卡号) |
| 3FB3 | 4 | 应用启用日期 |
| 3FB4 | 4 | 应用有效日期 |
| BF0C | 2 | 发卡方自定义FCI数据 |
A.2.2 个人基本信息文件
个人基本信息文件用来存放“持卡人姓名、身份证件类型与号码、ESN(包括教育电子身份应用号)”等基本信息。文件定义见表 A.3。
| 文件路径 | ADF0/EF02 | |
| 文件类型 | 二进制文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3FB7 | 最大60(长度可变) | 姓名 |
| 3F04 | 最大60(长度可变) | 姓名拼音 |
| 3FB5 | 1 | 身份证件类型 |
| 3FB6 | 20 | 身份证件号码 |
| 3F05 | 19 | 学籍号 |
| 3F06 | 12 | ESN或ESC |
| 3F07 | 4 | 出生日期 |
| 3F08 | 1 | 性别码 |
| 标签 | 长度(字节) | 数据项 |
| 3F09 | 2 | 民族码 |
| 3F10 | 3 | 籍贯码 |
| 3F11 | 3 | 国别码 |
| 3F12 | 2 | 港澳台侨外码 |
| 3F13 | 2 | 户口类别 |
A.2.3 相片信息文件
相片信息文件用来存放“持卡人相片”信息。文件定义见表 A.4。
| 文件路径 | ADF0/EF03 | |
| 文件类型 | 二进制文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3F14 | 2 | 相片数据长度 |
| 3F15 | 最大4096(长度可变) | 相片数据 |
A.2.4 生物特征信息文件
生物特征信息文件用来存放“持卡人 ESC(含教育身份应用码)或生物特征识别”信息。文件定义见表 A.5。
| 文件路径 | ADF0/EF04 | |
| 文件类型 | 二进制文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3F16 | 1 | ESC/生物特征码 |
| 3F17 | 1 | 算法标识 |
| 3F18 | 1 | 生物特征编号 |
| 标签 | 长度(字节) | 数据项 |
| 3F19 | 2 | 生物信息长度 |
| 3F20 | 最大1024(长度可变) | 生物信息值 |
A.3 法定身份证件网上应用文件
居民身份证网上副本文件用来存放“持卡人的居民身份证网上副本”信息。文件定义见表 A.6。
| 文件路径 | ADF1/EF01 | |
| 文件类型 | 二进制文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3FB8 | 300 | 居民身份认证网上副本信息 |
A.4 学校应用文件
A.4.1 工作信息文件
工作信息文件用来存放“持卡人在可信教育数字身份发行单位(即卡发行单位)或可信教育数字身份应用单位(即卡应用单位)的工作单位名称、职工号、职务类别”等信息。文件定义见表 A.7。
| 文件路径 | ADF2/EF01 | |
| 文件类型 | 二进制文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3F21 | 1 | 教职员工类别代码 |
| 3F22 | 12 | 职工号 |
| 3F23 | 10 | 学校编码 |
| 3F24 | 最大60(长度可变) | 学校名称 |
| 3F25 | 最大30(长度可变) | 二级机构名称 |
| 3F26 | 最大20(长度可变) | 三级机构名称 |
| 标签 | 长度(字节) | 数据项 |
| 3F27 | 2 | 学历码 |
| 3F28 | 2 | 编制类别码 |
| 3F29 | 4 | 专业技术职务码 |
| 3F30 | 1 | 现职务类别码 |
| 3F31 | 3 | 现任职资格名称码 |
| 3F32 | 3 | 从教年月 |
| 3F33 | 3 | 最高学位码 |
A.4.2 学籍信息文件
学籍信息文件用来存放“持卡人在可信教育数字身份发行单位(即卡发行单位)或可信教育数字身份应用单位(即卡应用单位)的所在学校名称、专业、学制”等基本信息。文件定义见表 A.8。
| 文件路径 | ADF2/EF02 | |
| 文件类型 | 二进制文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3F34 | 9 | 统一社会信用代码 |
| 3F23 | 10 | 学校编码 |
| 3F24 | 最大60(长度可变) | 学校名称 |
| 3F25 | 最大30(长度可变) | 二级机构名 |
| 3F26 | 最大20(长度可变) | 三级机构名 |
| 3F35 | 最大30(长度可变) | 专业/学科名 |
| 3F36 | 4 | 年级 |
| 3F37 | 4 | 班号 |
| 3F38 | 10 | 学号 |
| 3F39 | 2 | 培养方式码 |
| 3F40 | 1 | 学制 |
| 3F41 | 3 | 入学年月 |
| 3F42 | 2 | 入学方式 |
| 3F43 | 1 | 学生当前状态 |
A.4.3 学籍注册信息文件
学籍注册信息文件用来存放“持卡人在可信教育数字身份发行单位(即卡发行单位)或可信教育数字身份应用单位(即卡应用单位)的学籍注册状态、注册日期”等基本信息。文件定义见表 A.9。
| 文件路径 | ADF2/EF03 | |
| 文件类型 | 循环记录文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3F44 | 1 | 学籍注册状况 |
| 3F45 | 3 | 学籍注册学期 |
| 3F46 | 4 | 学籍注册有效期 |
| 3F47 | 4 | 学籍注册日期 |
A.4.4 体质健康信息文件
体质健康信息文件用来存放“持卡人在可信教育数字身份发行单位(即卡发行单位)或可信教育数字身份应用单位(即卡应用单位)的体质健康”信息。文件定义见表 A.10。
| 文件路径 | ADF2/EF04 | |
| 文件类型 | 二进制文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3F61 | 最大20(长度可变) | 指标名称 |
| 3F62 | 4 | 指标数据 |
| 3F63 | 4 | 检测时间 |
A.4.5 学生助学贷款信息文件
学生助学贷款信息文件用来存放“学生助学贷款与还款”信息。文件定义见表 A.11。
| 文件路径 | ADF2/EF05 | |
| 文件类型 | 循环记录文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3F64 | 1 | 贷款类别 |
| 3F65 | 4 | 贷款总金额 |
| 3F66 | 4 | 贷款期限 |
| 3F67 | 2 | 申请贷款起始年度 |
| 3F68 | 2 | 申请贷款截止年度 |
| 3F69 | 最大60(长度可变) | 贷款银行名称 |
| 3F70 | 4 | 贷款合同日期 |
| 3F71 | 20 | 贷款合同编号 |
| 3F72 | 4 | 还款截止日期 |
| 3F73 | 1 | 还款计划 |
| 3F74 | 4 | 还款总金额 |
A.4.6 营养餐资格信息文件
营养餐资格信息文件用来存放“学生营养餐资格标识、开始日期、结束日期”等基本信息。文件定义见表 A.12。
| 文件路径 | ADF2/EF06 | |
| 文件类型 | 二进制文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3F75 | 1 | 资格标识 |
| 3F48 | 4 | 开始日期 |
| 3F49 | 4 | 结束日期 |
| 3F76 | 2 | 总次数 |
| 3F77 | 4 | 餐类模式 |
A.4.7 营养餐领餐信息文件
营养餐领餐信息文件用来存放“最近的22条领用营养餐的流水记录”信息。文件定义见表 A.13。
| 文件路径 | ADF2/EF07 | |
| 文件类型 | 循环记录文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3F78 | 2 | 用餐流水号 |
| 3F79 | 7 | 最后领用时间 |
A.5 机构应用文件
A.5.1 毕业证/结业证信息文件
毕业证/结业证信息文件用来存放“最近的12条电子毕业证/电子结业证(含电子毕业证明/电子结业证明)的证书名称、证书编号、专业、学制”等信息。文件定义见表 A.14。
| 文件路径 | ADF3/EF01 | |
| 文件类型 | 循环记录文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3F51 | 最大30(长度可变) | 证书名称 |
| 3F52 | 8 | 证书类别 |
| 3F48 | 4 | 学习起始日期 |
| 3F49 | 4 | 学习截止日期 |
| 3F35 | 最大30(长度可变) | 专业名称 |
| 3F40 | 1 | 学制 |
| 3F53 | 18 | 证书编号 |
| 3F54 | 4 | 证书颁发日期 |
| 3F55 | 最大60(长度可变) | 发证机构 |
A.5.2 学位证信息文件
学位证信息文件用来存放“最近的10条电子学位证(含电子学位证明)的证书名称、证书编号、学位名称、专业名称”等信息。文件定义见表 A.15。
| 文件路径 | ADF3/EF02 | |
| 文件类型 | 循环记录文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3F51 | 最大30(长度可变) | 证书名称 |
| 3F56 | 最大30(长度可变) | 学位名称 |
| 3F35 | 最大30(长度可变) | 专业名称 |
| 3F53 | 18 | 证书编号 |
| 3F54 | 4 | 证书颁发日期 |
| 3F55 | 最大60(长度可变) | 发证机构 |
A.5.3 资格水平信息文件
资格水平信息文件用来存放“最多10条资格水平证件的证书名称、证书编号、专业/资格名称、专业水平等国家认可的专业资格证书、岗位证书”等信息。文件定义见表 A.16。
| 文件路径 | ADF3/EF03 | |
| 文件类型 | 循环记录文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3F51 | 最大30(长度可变) | 证书名称 |
| 3F53 | 18 | 证书编号 |
| 3F35 | 最大30(长度可变) | 学科/专业名称 |
| 3F57 | 最大20(长度可变) | 级别/成绩 |
| 3F54 | 4 | 证书颁发日期 |
| 3F55 | 最大60(长度可变) | 发证机构 |
| 3F58 | 17 | 证书有效期 |
| 3F47 | 4 | 注册日期 |
| 3F59 | 最大40(长度可变) | 注册机构 |
A.5.4 考务基本信息文件
考务基本信息文件用来存放“持卡人的准考证号、考场地址”等信息。文件定义见表 A.17。
| 文件路径 | ADF3/EF04 | |
| 文件类型 | 循环记录文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3F81 | 18 | 准考证号 |
| 3F82 | 12 | 考区 |
| 3F83 | 12 | 考点 |
| 3F84 | 12 | 考场 |
| 3F85 | 8 | 考室 |
| 3F86 | 3 | 座位 |
| 3F87 | 1 | 身份认证方式 |
| 3F48 | 4 | 开始日期 |
| 3F49 | 4 | 结束日期 |
| 3F88 | 最大60(长度可变) | 考试组织机构 |
| 3F80 | 最大60(长度可变) | 考试名称 |
A.5.5 学生首次就业信息文件
学生首次就业信息文件用来存放“学生首次就业日期、就业单位名称”等基本信息。文件定义见表 A.18。
| 文件路径 | ADF3/EF05 | |
| 文件类型 | 二进制文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3F89 | 13 | 报到证编号 |
| 3F8A | 4 | 首次就业日期 |
| 3F8B | 最大60(长度可变) | 就业单位名称 |
A.5.6 教育经历信息文件
教育经历信息文件用来存放“持卡人就学的学校名称、开始日期、结束日期、学历代码”等基本信息。文件定义见表 A.19。
| 文件路径 | ADF3/EF06 | |
| 文件类型 | 循环记录文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3F48 | 4 | 开始日期 |
| 3F49 | 4 | 结束日期 |
| 3F24 | 最大60(长度可变) | 学校名称 |
| 3F35 | 最大30(长度可变) | 专业名称 |
| 3F50 | 2 | 学历代码 |
A.6 密码应用文件
A.6.1 发卡方证书文件
发卡方证书文件用来存放“EIC的签名证书”。文件定义见表 A.20。
| 文件路径 | ADF4/EF01 | |
| 文件类型 | 二进制文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 自由 | |
| 标签 | 长度(字节) | 数据项 |
| 3FA5 | NCA | EIC的签名证书 |
A.6.2 签名密钥文件
签名密钥文件用来存放“人员签名证书所对应的签名私钥”。文件定义见表 A.21。
| 文件路径 | ADF4/EF02 | |
| 文件类型 | 私钥文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 禁止 | |
| 标签 | 长度(字节) | 数据元 |
| 3FA6 | NIC | 签名私钥 |
A.6.3 加密密钥文件
加密密钥文件用来存放“人员加密证书所对应的加密私钥”。文件定义见表 A.22。
| 文件路径 | ADF4/EF03 | |
| 文件类型 | 私钥文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 禁止 | |
| 标签 | 长度(字节) | 数据项 |
| 3FA7 | NIC | 加密私钥 |
A.6.4 人员签名证书文件
人员签名证书文件用来存放“持卡人的人员签名证书”。文件定义见表 A.23。
| 文件路径 | ADF4/EF04 | |
| 文件类型 | 二进制文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 自由 | |
| 标签 | 长度(字节) | 数据项 |
| 3FA8 | NCA | 人员签名证书 |
A.6.5 人员加密证书文件
人员加密证书文件用来存放“持卡人的人员加密证书”。文件定义见表 A.24。
| 文件路径 | ADF4/EF05 | |
| 文件类型 | 二进制文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 自由 | |
| 标签 | 长度(字节) | 数据项 |
| 3FA9 | NCA | 人员加密证书 |
A.7 行业扩展应用文件
A.7.1 交通票务优惠信息文件
交通票务优惠信息文件用来存放“持卡人搭乘交通工具(火车、汽车、飞机等)的票务优惠”信息。文件定义见表 A.25。
| 文件路径 | ADF6/EF01 | |
| 文件类型 | 循环记录文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3F91 | 1 | 交通工具类型 |
| 3F92 | 12 | 起点 |
| 3F93 | 12 | 终点 |
| 3F48 | 4 | 开始日期 |
| 3F49 | 4 | 结束日期 |
A.7.2 交通票务使用信息文件
交通票务使用信息文件用来存放“持卡人优惠购买交通票”的信息。文件定义见表 A.26。
| 文件路径 | ADF6/EF02 |
| 文件类型 | 循环记录文件 |
| 文件写控制 | 保护 |
| 文件读控制 | 认证 |
| 标签 | 长度(字节) | 数据项 |
| 3F94 | 4 | 最近使用日期 |
| 3F95 | 1 | 最近使用交通工具类型 |
| 3F96 | 1 | 总使用次数 |
A.7.3 网络学习空间/数据空间应用信息文件
网络学习空间/数据空间应用信息文件用来存放“持卡人在网络学习空间的应用”信息。文件定义见表 A.27。
| 文件路径 | ADF6/EF03 | |
| 文件类型 | 二进制文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3FB9 | 最大1024(长度可变) | 持标卡识人、ES在N网标络识学、习ES空C间标/识数、据EI空D间标的识应等用)。信息(例如,教育卡网上副本 |
A.8 教育电子证件应用文件
A.8.1 电子毕业证/电子结业证信息文件
电子毕业证/电子结业证(即为数字化证件类可信教育数字身份凭证)信息文件用来存放“持卡人的电子毕业证(含电子毕业证明)/电子结业证(含电子结业证明)的格式化信息”。文件定义见表 A.28。
| 文件路径 | ADF8/EF01 | |
| 文件类型 | 二进制文件 | |
| 文件写控制 | 不可改写 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3FC0 | 最大2048(长度可变) | 电子毕业证(含电子毕业证证明)/电子结业证(含电子结业证证明)的格式化信息 |
A.8.2 电子学位证信息文件
电子学位证信息文件(即为数字化证件类可信教育数字身份凭证)用来存放“持卡人的电子学位证(含电子学位证明)的格式化信息”。文件定义见表 A.29。
| 文件路径 | ADF8/EF02 | |
| 文件类型 | 二进制文件 | |
| 文件写控制 | 不可改写 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3FC1 | 最大2048(长度可变) | 电子学位证(含电子学位证证明)的格式化信息 |
A.8.3 电子毕业证/电子结业证版式文件
电子毕业证/电子结业证版式文件用来存放“持卡人的电子毕业证(含电子毕业证明)/电子结业证(含电子结业证明)对应的版式文件”信息。文件定义见表 A.30。
| 文件路径 | ADF8/EF03 | |
| 文件类型 | 二进制文件 | |
| 文件写控制 | 不可改写 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3FC2 | 最大61440(长度可变) | 电文子件毕信业息证,版(含式电文子件毕符业合证GB明/T)/3电31子90结业证(含电子结业证明)的版式 |
A.8.4 电子学位证版式文件
电子学位证版式文件用来存放“持卡人的电子学位证(含电子学位证明)对应的版式文件”信息。文件定义见表 A.30。
| 文件路径 | ADF8/EF04 | |
| 文件类型 | 二进制文件 | |
| 文件写控制 | 不可改写 | |
| 文件读控制 | 认证 | |
| 标签 | 长度(字节) | 数据项 |
| 3FC3 | 最大61440(长度可变) | 电子学位证(含电子学位证明)的版式文件信息,版式文件符合GB/T33190 |
A.9 芯片管理应用文件
A.9.1 芯片鉴权证书密钥文件
芯片鉴权证书密钥文件用来存放“教育卡芯片鉴权证书对应的签名私钥”。文件定义见表 A.32。
| 文件路径 | ADF9/EF01 | |
| 文件类型 | 私钥文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 禁止 | |
| 标签 | 长度(字节) | 数据项 |
| 3FF1 | NIC | 签名私钥 |
A.9.2 芯片鉴权证书文件
芯片鉴权证书文件用来存放“用于教育卡的芯片鉴权证书”。文件定义见表 A.33。
| 文件路径 | ADF9/EF02 | |
| 文件类型 | 二进制文件 | |
| 文件写控制 | 保护 | |
| 文件读控制 | 自由 | |
| 标签 | 长度(字节) | 数据项 |
| 3FF2 | NCA | 教育卡芯片鉴权证书 |
附录 B (规范性)
B.1 数据元格式定义说明
数据元格式定义,包括标签(T)、格式(F)和长度(L)。定义说明如下。
a) 标签(T)定义了数据元的唯一标识,为2个字节的16进制数据。
b) 格式(F)定义了数据元的数据类型,支持的类型如下:
n(数字型);
cn(压缩数字型);
b(二进制);
an(字母数字);
ans(特殊字母数字)。
c) 长度(L)定义了数据元的最大字节数,本附录使用10进制数值表示。当数据元定义的长度超过数据实际长度时,填充规则如下:
格式n的数据元右对齐,左补0;
格式cn的数据元左对齐,右补 F;
格式an的数据元左对齐,右补0;
格式ans的数据元左对齐,右补0。
数据元采用大端模式进行传输
B.2 数据元定义
教育卡(含学生教育卡、教师教育卡、毕业生教育卡)存放的数据元定义,见表 B.1。
| 数据元名称 | 数据元定义 | 数据元描述 |
| 发卡方代码 | T:3F01F:cnL:5 | 由国家有关主管部门颁发 |
| 应用类型标识 | T:3F02F:bL:5 | 由国家IC卡注册中心颁发 |
| 卡类型标识 | T:3F03F:bL:1 | 1学生卡;2教师卡;3毕业生卡;4电子毕业证;5电子结业证;6电子学位证;7电子校徽;14电子毕业证明;15电子结业证明;16电子学位证明 |
| 持卡人姓名拼音 | T:3F04F:anL:最大60(长度可变) | 姓名全称的汉语拼音 |
| 数据元名称 | 数据元定义 | 数据元描述 |
| 学籍号 | T:3F05F:anL:19 | 由国家教育主管部门统一编制 |
| ESN | T:3F06F:anL:12 | 由主管部门与CMC/CSC统一生成 |
| 出生日期 | T:3F07F:cnL:4 | - |
| 性别码 | T:3F08F:bL:1 | 见GB/T 35298 |
| 民族码 | T:3F09F:bL:2 | 见GB/T 35298 |
| 籍贯码 | T:3F10F:cnL:3 | 见GB/T 2260 |
| 国别码 | T:3F11F:anL:3 | 见GB/T 35298 |
| 港澳台侨外码 | T:3F12F:anL:2 | 见GB/T 35298 |
| 户口类别 | T:3F13F:anL:2 | 见GB/T 35298 |
| 相片数据长度 | T:3F14F:bL:2 | 相片数据实际长度,长度为0表示未提供相片 |
| 相片数据 | T:3F15F:bL:最大4096(长度可变) | 相片采用JPG格式相片规格:358像素(宽)×441像素(高)相片分辨率:350 dpi |
| 数据元名称 | 数据元定义 | 数据元描述 |
| 生物特征码 | T:3F16F:bL:1 | 0指纹1虹膜2面相3掌纹9其他 |
| 算法标识 | T:3F17F:bL:1 | 采用的生物特征识别算法编号 |
| 生物特征编号 | T:3F18F:bL:1 | 例如,指纹的手指编号 |
| 生物特征值长度 | T:3F19F:bL:2 | - |
| 生物特征值 | T:3F20F:bL:最大1024(长度可变) | 不定长(根据生物特征算法确定特征值) |
| 教职员工类别代码 | T:3F21F:anL:1 | - |
| 职工号 | T:3F22F:anL:12 | - |
| 学校编码 | T:3F23F:anL:10 | 由国家教育主管部门统一生成 |
| 学校名称 | T:3F24F:anL:最大60(长度可变) | 与统一信用代码保持一致的标准化机构名称 |
| 二级机构名称 | T:3F25F:anL:最大30(长度可变) | 二级机构的名称(例如,学院名称) |
| 三级机构名称 | T:3F26F:anL:最大20(长度可变) | 二级机构下属三级机构的名称(例如,系、所名称) |
| 数据元名称 | 数据元定义 | 数据元描述 |
| 学历码 | T:3F27F:cnL:2 | 见GB/T 35298 |
| 编制类别码 | T:3F28F:cnL:2 | 见GB/T 33782 |
| 专业技术职务码 | T:3F29F:cnL:4 | 见GB/T 33782 |
| 职务类别号 | T:3F30F:cnL:1 | 见GB/T 33782 |
| 现任职资格名称码 | T:3F31F:cnL:3 | 见GB/T 35298 |
| 从教年月 | T:3F32F:cnL:3 | 持卡人开始从事教育工作的年月格式:YYYYMM |
| 最高学位码 | T:3F33F:cnL:3 | 见GB/T 33782 |
| 统一信用代码 | T:3F34F:anL:9 | 学校或单位所对应的统一信用代码 |
| 学科门类代码 | T:3F35F:anL:最大30(长度可变) | 见GB/T 33782 |
| 年级 | T:3F36F:cnL:4 | 持卡人所在年级 |
| 班号 | T:3F37F:cnL:4 | 持卡人所属班级 |
| 学号 | T:3F38F:anL:10 | 与教育主管部门生成的学籍号保持一致 |
| 数据元名称 | 数据元定义 | 数据元描述 |
| 培养方式 | T:3F39F:cnL:2 | 见GB/T 33782 |
| 学制 | T:3F40F:anL:1 | 单位:年 |
| 入学年月 | T:3F41F:cnL:3 | 格式:YYYYMM |
| 入学方式 | T:3F42F:cnL:2 | 见GB/T 33782 |
| 注册状况 | T:3F44F:anL:1 | 见GB/T 33782 |
| 注册学期 | T:3F45F:cnL:3 | 年度+学期年度格式:YYYY学期:1秋季学期;2春季学期;3夏季学期 |
| 注册有效期 | T:3F46F:cnL:4 | 格式:YYYYMMDD |
| 注册日期 | T:3F47F:cnL:4 | 格式:YYYYMMDD |
| 开始日期 | T:3F48F:cnL:4 | 开始日期格式:YYYYMMDD |
| 结束日期 | T:3F49F:cnL:4 | 结束日期格式:YYYYMMDD |
| 学历代码 | T:3F50F:anL:2 | 见GB/T 33782 |
| 证书名称 | T:3F51F:anL:最大30(长度可变) | 与证书名称一致 |
| 数据元名称 | 数据元定义 | 数据元描述 |
| 证书类别 | T:3F52F:anL:8 | 证书类别名称(例如,小学、初中、普通高中、中等职业教育、普通本科、职业本科、高等职业教育、硕士研究生、博士研究生、特殊教育等) |
| 证书编号 | T:3F53F:anL:18 | 发证机构对证书的统一编号 |
| 证书颁发日期 | T:3F54F:cnL:4 | 证书颁发日期格式:YYYYMMDD |
| 发证机构 | T:3F55F:anL:最大60(长度可变) | 与证书授予单位的名称一致 |
| 学位名称 | T:3F56F:anL:最大30(长度可变) | - |
| 级别/成绩 | T:3F57F:anL:最大20(长度可变) | 资质级别名称(或成绩),与颁发的证书一致 |
| 证书有效期 | T:3F58F:anL:17 | 格式:YYYYMMDD-YYYYMMDD |
| 注册机构 | T:3F59F:anL:最大40(长度可变) | 学校(或单位)名称 |
| 资格种类 | T:3F60F:anL:2 | 见GB/T 33782定义的教师资格证种类码 |
| 指标名称 | T:3F61F:cnL:最大20(长度可变) | - |
| 指标数据 | T:3F62F:cnL:4 | - |
| 检测日期 | T:3F63F:cnL:4 | 格式:YYYYMMDD |
| 数据元名称 | 数据元定义 | 数据元描述 |
| 贷款类别 | T:3F64F:bL:1 | 1学费贷款2生活贷款3二者皆有 |
| 贷款总金额 | T:3F65F:bL:4 | 学生贷款的金额 |
| 贷款期限 | T:3F66F:cnL:4 | 学生还款年限,应在该年限内付清贷款 |
| 申请贷款起始年度 | T:3F67F:cnL:2 | 格式:YYYY |
| 申请贷款截止年度 | T:3F68F:cnL:2 | 格式:YYYY |
| 贷款银行名称 | T:3F69F:anL:最大60(长度可变) | - |
| 贷款合同日期 | T:3F70F:cnL:4 | 格式:YYYYMMDD |
| 贷款合同编号 | T:3F71F:anL:20 | - |
| 贷款截止日期 | T:3F72F:cnL:4 | 格式:YYYYMMDD |
| 还款计划 | T:3F73F:bL:1 | 0129毕毕毕其业业业他前后后一一逐次次月性性归归归还(还还分n年还清) |
| 还款总金额 | T:3F74F:bL:4 | - |
| 数据元名称 | 数据元定义 | 数据元描述 |
| 资格标识 | T:3F75F:cnL:1 | 0无资格1有资格2暂时停止 |
| 总次数 | T:3F76F:anL:2 | 学生可领取营养餐的总次数 |
| 餐类模式 | T:3F77F:anL:4 | 00000001早餐00000010课间餐00000100中餐00001000晚餐00010000加餐 |
| 用餐流水号 | T:3F78F:anL:2 | 学生当日已领取营养餐的次数 |
| 最后领用时间 | T:3F79F:cnL:7 | 格式:YYYYMMDDHHMMSS |
| 考试名称 | T:3F80F:anL:最大30(长度可变) | 普通高校、成人高考、自学、中考等 |
| 准考证号 | T:3F81F:cnL:18 | 最长16位数字或字母 |
| 考区 | T:3F82F:anL:12 | - |
| 考点 | T:3F83F:anL:12 | - |
| 考场 | T:3F84F:anL:12 | - |
| 考室 | T:3F85F:anL:8 | - |
| 数据元名称 | 数据元定义 | 数据元描述 |
| 座位 | T:3F86F:anL:3 | - |
| 身份认证方式 | T:3F87F:bL:1 | 0教育卡1234居生居相民物民片身特身份征份证证+生物特征9其他 |
| 考试组织机构 | T:3F88F:cnL:最大30(长度可变) | - |
| 报到证编号 | T:3F89F:anL:13 | - |
| 首次就业日期 | T:3F8AF:cnL:4 | 格式:YYYYMMDD |
| 就业单位名称 | T:3F8BF:anL:最大60(长度可变) | - |
| 交通工具类型 | T:3F91F:bL:1 | 0火车1汽车2飞机3轮船4其他 |
| 起点 | T:3F92F:anL:最大20(长度可变) | 城市名、站点名(或范围名) |
| 终点 | T:3F93F:anL:最大20(长度可变) | 城市名、站点名(或范围名) |
| 最近使用日期 | T:3F94F:cnL:4 | 格式:YYYYMMDD |
| 数据元名称 | 数据元定义 | 数据元描述 |
| 最近使用交通工具 | T:3F95F:anL:1 | 0火车1汽车2飞机3轮船4其他 |
| 总使用次数 | T:3F96F:anL:1 | - |
| 交易类型授权码 | T:3F98F:bL:1 | 01联机圈存02联机消费其他RFU |
| AID | FLT:::5b4-F16 | A按IDGB组/T成16649.5规定标识应用。由RID和扩展的专用 |
| 应用标签 | FT::a5n0L:1-16 | 和AID相关的便于记忆的数据。用于应用选择 |
| 应用首选名称 | T:3F99F:anL:1-16 | 与AID相关(便于记忆)的数据。若终端支持在发卡方代码表索引数据中指定的字符类型,终端在应用选择过程中显示应用首选名称 |
| 应用优先指示器 | FLT:::1b87 | 若教育卡有多个应用,指出同一目录中的应用的优先级位810位位无无74--须须51:R持持F卡卡U人人(00确确0认认)的的应应用用,,不可能以选选择择0000不指定优先级xxxx应用显示和选择的顺序,从1-15.1的优先级最高 |
| 应用模板 | FT::b61L:最大252(长度可变) | 按GB/T 16649.5的规定,包含和应用目录入口相关的1个或多个数据对象 |
| 应用处理计数器 | T:3FA1F:bL:2 | 初始值为0,执行一次应用处理加1 |
| CA公钥索引(PKI) | T:8FF:bL:1 | 在公钥鉴别过程中,用来标识CA公钥 |
| 数据元名称 | 数据元定义 | 数据元描述 |
| ADF | T:84F:bL:5~16 | 按GB/T 16649.4规定的ADF的名字 |
| 目录自定义模板 | T:73F:bL:最大252(长度可变) | 按GB/T 16649.5,目录中发卡方自定义部分 |
| 动态数据认证数据对象列表 | T:3FA2FL::b最大252(长度可变) | 在身份鉴别命令或卡片鉴别命令中由终端送到教育卡中的数据列表,包括数据对象的标签和长度 |
| FCI专用模板 | T:A5F:b L:长度可变 | 按GB/T 16649.4,标识FCI模板 |
| FCI模板 | T:6FF:bL:最大252(长度可变) | 按GB/T 16649.4,标识FCI模板 |
| 教育卡动态数据 | FT::b-L:最大252(长度可变) | 教育卡生成(或保存)的动态数据。在签名的动态应用数据中传送给终端 |
| 教育卡随机数 | T:3FA3F:bL:2-8 | 在公钥鉴别处理过程中,教育卡生成的随机数 |
| 教育卡签名私钥 | FT::b-L:NIC | 教育卡签名公私钥对中的私钥部分。用于动态数据的签名 |
| 教育卡中心的签名证书 | T:3FA5F:b L:NI | - |
| 人员签名证书 | T:3FA8F:b L:NCA | - |
| 安全报文鉴别密钥 | FLT:::1b-6 | 专有数据。双长度安全报文鉴别密钥,16字节。当发卡方脚本需要安全报文时用来计算MAC |
| SFI | T:88F:bL:1 | 命令中用于标识文件。字节中的高三位为0 |
| 数据元名称 | 数据元定义 | 数据元描述 |
| 签名的动态应用数据 | FT::b3FA9L:NIC | 教育卡生成的"含有签名数据的动态应用数据"。在公钥鉴别过程中由终端验证 |
| 国家教育管理应用保留信息1 | T:3FAAFL::2b048 | - |
| 国家教育管理应用保留信息2 | T:3FABFL::2b048 | - |
| 算法支持指示器 | FLT:::1b3FB1 | 01国密算法02其他算法 |
| 应用版本号 | T:3FB2F:bL:1 | - |
| 应用序列号(卡号) | T:5AF:cnL:10 | 由EIC产生(无重复,全国唯一) |
| 应用启用日期 | T:3FB3FL::c4n | 教育卡中应用的启用日期格式为:YYYYMMDD |
| 应用失效日期 | T:3FB4FL::c4n | 教育卡中应用的失效日期格式为:YYYYMMDD |
| 发卡方自定义数据 | T:BF0CF:bL:2 | 发卡方自定义 |
| 身份证件类型 | T:3FB5F:anL:1 | 见GB/T 33782定义的身份证件类型代码 |
| 身份证件号码 | T:3FB6F:anL:20 | - |
| 姓名 | T:3FB7F:anL:最大60(长度可变) | 姓名全称的汉字,应至少支持GB 18030强制部分的要求 |
| 数据元名称 | 数据元定义 | 数据元描述 |
| 居民身份证网上副本 | FLT:::b3最FB大8300(长度可变) | EIC写入的"由居民身份证相关管理部门生成的居民身份证网上副本" |
| 网络学习空间应用信息 | FLT:::b3最FB大91024(长度可变) | 持本卡标人识在、ES网N络标学识习、E空ID间标的识应等用)信息(例如,教育卡网上副 |
| 电子毕业证/电子结业证的格式化信息 | FLT:::b3最F大C02048(长度可变) | 电子毕业证(含电子毕业证明)/电子结业证(含电子结业证明)的证书名称、证书号码等格式化信息 |
| 电子学位证的格式化信息 | FT::b3FC1L:最大2048(长度可变) | 电子学位证(含电子学位证明)的证书名称、证书号码等格式化信息 |
| 电子毕业证/电子结业证的版式文件信息 | FT::b3FC2L:最大61440字节(长度可变) | 版式文件符合GB/T 33190 |
| 电子学位证的版式文件信息 | T:3FC3F:bL:最大61440字节(长度可变) | 版式文件符合GB/T 33190 |
附录 C (规范性)
C.1 命令定义说明
本附录中所有数据,除特殊说明外,均使用16进制数据表示。
C.2 通用命令
C.2.1 选择命令(SELECT)
C.2.1.1 定义和范围
SELECT 命令通过文件名(或 AID)选择教育卡中的 ADF,通过 FID来选择 ADF中的 AEF响应报文应由回送的 FCI组成。
C.2.1.2 命令报文
SELECT 命令报文代码,见表 C.1。
| 代码 | 值 |
| CLA | 00 |
| INS | A4 |
| P1 | 04使用ADF的AID进行选择02用FID在当前ADF下选择AEF(数据域=AEF的FID) |
| P2 | 00第02一个下或一唯个一文一件个文件 |
| Lc | 5~1002使用FID时 |
| Data | 见C.2.1.3 |
| Le | '00' |
C.2.1.3 命令报文数据域
命令报文数据域应包括所选择的 ADF的 AID或2个字节的 FID。
支持使用部分 ADF名称选择 ADF,若有两个或以上 ADF 部分名称相同,则选择第一个符合的ADF。部分 ADF名称应为完整 ADF名称的前 N(5≤N≤10)个字节,否则返回应答“6700”。
C.2.1.4 响应报文数据域
响应报文数据域应包括所选择的 ADF的 FCI。表 C.2定义了成功选择后回送的 FCI。
| 标签 | 值 | |
| '6F' | FCI信息 | |
| '84' | ADF名称 | |
C.2.1.5 响应报文的SW
教育卡(含学生教育卡、教师教育卡、毕业生教育卡)支持使用部分 ADF名称选择 ADF,应遵守如下规则:
当一个 ADF成功选中后,终端重复发出SELECT 命令,且 P2设置为选择下一个文件的选项及使用相同的部分 ADF名称时,教育卡应该选中与部分 ADF名称匹配的不同的 ADF文件(若这样的 ADF存在)。在没有应用层命令干扰的情况下重复发出相同的 SELECT 命令,教育卡应该可以找到所有满足条件的 ADF文件,且每个文件不会被找到两次。当所有满足条件的 ADF 都被选择后,再发出同样的SELECT 命令,应该得到没有文件被选择的结果,教育卡应响应SW“6A82”
SELECT 命令执行返回的SW,见表 C.3。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 67 | 00 | 长度错误 |
| 6A | 82 | 文件未找到 |
| 6A | 86 | 参数P1或P2不正确 |
| 6D | 00 | INS不支持或错误 |
| 6E | 00 | CLA不支持或错误 |
| 6A | 81 | 应用临时锁定 |
| 93 | 03 | 应用永久锁定 |
C.2.2 身份鉴别命令(PERSONAL AUTHENTICATE)
C.2.2.1 定义和范围
PERSONAL AUTHENTICATE命令使用收到的随机数、数据和教育卡中存放的签名私钥计算签名动态应用数据。
C.2.2.2 命令报文
PERSONAL AUTHENTICATE命令报文代码,见表 C.4。
| 代码 | 值 |
| CLA | 00 |
| INS | 88 |
| P1 | 00 |
| P2 | 00 |
| Lc | 验证数据的长度 |
| Data | 见C.2.2.3 |
| Le | 00 |
C.2.2.3 命令报文数据域
PERSONAL AUTHENTICATE命令报文数据域,见表 C.5。
| 说明 | 长度(字节) |
| 验证数据 | 8 |
C.2.2.4 响应报文数据域
响应报文数据域包括签名动态应用数据。签名动态应用数据定义,见9.3.7.1。
C.2.2.5 响应报文的SW
PERSONAL AUTHENTICATE命令执行返回的SW,见表 C.6。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 67 | 00 | 长度错误 |
| 69 | 85 | 使用条件不满足 |
| 6D | 00 | INS不支持或错误 |
| 6E | 00 | CLA不支持或错误 |
C.2.3 卡片鉴别命令(CARD AUTHENTICATE)
C.2.3.1 定义和范围
CARD AUTHENTICATE命令使用收到的随机数、数据和教育卡中的签名私钥计算签名动态应用数据。
C.2.3.2 命令报文
CARD AUTHENTICATE命令报文代码,见表 C.7。
| 代码 | 值 |
| CLA | 00 |
| INS | 89 |
| P1 | 00 |
| P2 | 00 |
| Lc | 验证数据的长度 |
| Data | 见C.2.3.3 |
| Le | 00 |
C.2.3.3 命令报文数据域
CARD AUTHENTICATE命令报文数据域,见表 C.8。
| 说明 | 长度(字节) |
| 验证数据 | 8 |
C.2.3.4 响应报文数据域
响应报文数据域包括签名动态应用数据。签名动态应用数据定义,见9.3.7.1。
C.2.3.5 响应报文的SW
CARD AUTHENTICATE命令执行返回的SW,见表 C.9。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| SW1 | SW2 | 说明 |
| 67 | 00 | 长度错误 |
| 69 | 85 | 使用条件不满足 |
| 6D | 00 | INS不支持或错误 |
| 6E | 00 | CLA不支持或错误 |
C.2.4 取随机数命令(GET CHALLENGE)
C.2.4.1 定义和范围
GET CHALLENGE命令请求一个随机数。
该随机数只能用于下一条指令,无论下一条指令是否使用了该随机数,该随机数将立即失效
C.2.4.2 命令报文
GET CHALLENGE命令报文代码,见表 C.10。
| 代码 | 值 |
| CLA | 00 |
| INS | 84 |
| P1 | 00 |
| P2 | 00 |
| Lc | 不存在 |
| Data | 不存在 |
| Le | 04/08/10 |
C.2.4.3 命令报文数据域
GET CHALLENGE命令没有数据域。
C.2.4.4 响应报文数据域
响应报文数据域包括随机数,长度为 Le字节。
C.2.4.5 响应报文的SW
GET CHALLENGE命令执行返回的SW,见表 C.11。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 6A | 81 | 不支持此功能 |
| 67 | 00 | 长度错误 |
| 6D | 00 | INS不支持或错误 |
| 6E | 00 | CLA不支持或错误 |
C.2.5 外部认证命令(EXTERNAL AUTHENTICATE)
C.2.5.1 定义和范围
EXTERNAL AUTHENTICATE命令要求教育卡验证终端设备中的教育卡安全模块的有效性,以使终端设备获得某种授权。
C.2.5.2 命令报文
EXTERNAL AUTHENTICATE命令报文代码,见表 C.12。
| 代码 | 值 |
| CLA | 00 |
| INS | 82 |
| P1 | 00 |
| P2 | 外部认证密钥标识符(0-F) |
| Lc | 10~11 |
| Data | 见C.2.5.3 |
| Le | 不存在 |
C.2.5.3 命令报文数据域
命令报文数据域中包括以下数据。
a) 第1字节~第8字节为认证数据。认证数据是使用过程密钥对终端产生的随机数进行加密,加密方式见 9.2.1.1。过程密钥是使用终端产生的随机数对外部认证密钥进行分散生成,密钥分散方式见9.2.1.3。
b) 第9字节~第10字节为终端产生的随机数。
c) 第11字节表示密钥版本,为可选数据。若不存在该字节,则表示使用该密钥标识第一条添加的外部认证密钥。
C.2.5.4 响应报文数据域
EXTERNAL AUTHENTICATE命令响应报文没有数据域。
C.2.5.5 响应报文的SW
EXTERNAL AUTHENTICATE命令执行返回的SW,见表 C.13。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 69 | 82 | 安全条件不满足 |
| 67 | 00 | 长度错误 |
| 6A | 82 | 文件未找到 |
| 69 | 81 | 文件类型错误 |
| 6A | 86 | 参数P1/P2不正确 |
| 69 | 85 | 使用条件不满足 |
| 6D | 00 | INS不支持或错误 |
| 6E | 00 | CLA不支持或错误 |
| 6B | 00 | 参数错误(偏移地址超出了EF) |
C.2.6 添加记录命令(APPEND RECORD)
C.2.6.1 定义和范围
APPEND RECORD命令用于在定长、变长或循环记录文件结尾添加记录
教育卡接收到 APPEND RECORD命令后,将进行如下处理:
a) 判断新增记录长度是否超过文件记录最大长度限制,若超过,则回送SW“6A80”;
b) 判断文件剩余空间是否足够,若空间不足,则回送SW“6A84”。
通过以上判断,教育卡将新的记录数据写入文件。
命令成功执行后,设置记录指针指向所添加的记录。
C.2.6.2 命令报文
APPEND RECORD命令报文代码,见表 C.14。
| 代码 | 值 |
| CLA | 04 |
| INS | E2 |
| 代码 | 值 |
| P1 | 00 |
| P2 | 见表C.15 |
| Lc | 数据域的长度 |
| Data | 见C.2.6.3 |
| Le | 不存在 |
| b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | 含义 |
| 0 | 0 | 0 | 0 | 0 | - | - | - | RFU |
| X | X | X | X | X | - | - | - | SFI |
| 1 | 1 | 1 | 1 | 1 | - | - | - | RFU |
| - | - | - | - | - | X | X | X | RFU |
| 其他值 | RFU | |||||||
C.2.6.3 命令报文数据域
命令报文数据域由写入的记录数据组成。若更新的文件为变长记录文件,则数据域需要按照 TLV格式填写。
若为线路保护,数据域则由写入的记录数据附上4字节 MAC组成。
若为线路加密保护,数据域则由被加过密的记录数据附上4字节 MAC组成。
C.2.6.4 响应报文数据域
APPEND RECORD命令响应报文没有数据域。
C.2.6.5 响应报文的SW
APPEND RECORD命令执行返回的SW,见表 C.16。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 65 | 81 | 内存失败(修改失败) |
| SW1 | SW2 | 说明 |
| 67 | 00 | 长度错误(Lc域为空) |
| 69 | 81 | 命令与文件结构不相容 |
| 69 | 82 | 不满足安全状态 |
| 69 | 87 | 安全报文数据项丢失(需要线路保护更新而采用明文更新方式时) |
| 69 | 88 | 安全报文数据项不正确 |
| 6A | 81 | 不支持此功能 |
| 6A | 82 | 未找到文件 |
| 6A | 83 | 未找到记录 |
| 6A | 84 | 文件中存储空间不够 |
| 6A | 85 | 使用条件不满足 |
| 6A | 86 | 参数P1/P2不正确 |
| 6E | 00 | 无效的CLA |
| 94 | 03 | 应用永久锁定 |
C.2.7 更新记录命令(UPDATE RECORD)
C.2.7.1 定义和范围
UPDATE RECORD命令用于更新记录信息。
教育卡在收到 UPDATE RECORD命令后,将进行以下处理。
a) 根据 P2指定的SFI选取相应的 EF文件。若文件不存在,则回送SW“6A82”。
b) 检查文件的使用条件,若不满足条件,则回送 SW“6982”
c) 若指定的记录号不存在,则回送SW“6A83”。
命令执行成功后,将更新文件中指定的记录内容。
C.2.7.2 命令报文
UPDATE RECORD命令报文代码,见表 C.17。
| 代码 | 值 |
| CLA | 04 |
| INS | DC |
| P1 | 记录号 |
| 代码 | 值 |
| P2 | 引用控制参数,见表C.18 |
| Lc | 数据域的长度 |
| Data | 见C.2.7.3 |
| Le | 不存在 |
Lc表示要写入的字节数。若为线路保护,Lc为写入数据的长度+4字节;若为加密线路保护,Lc为加密后数据的长度+4字节。
参数 P2定义,见表 C.18。
| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | 含义 |
| x | x | x | x | x | - | - | - | SFI |
| - | - | - | - | - | 1 | 0 | 0 | 更新P1指定记录 |
C.2.7.3 命令报文数据域
命令报文数据域包含记录内容或安全报文。
命令报文数据域由写入的记录数据组成。若更新的文件为变长记录文件,则数据域应按照 TLV格式填写。
若为线路保护,数据域则由写入的记录数据附上4字节 MAC组成。
若为线路加密保护,数据域则由被加密的记录数据附上4字节 MAC组成。
当 CLA 为04时,命令报文数据域为4字节 MAC。若该 MAC错误,则回送 SW“6988” 。若 MAC错误的次数达到该维护密钥的重试次数,则应用永久锁定,并回送SW“9303”。
C.2.7.4 响应报文数据域
UPDATE RECORD命令响应报文没有数据域。
C.2.7.5 响应报文的SW
UPDATE RECORD命令执行返回的SW,见表 C.19。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 65 | 81 | 内存失败(修改失败) |
| SW1 | SW2 | 说明 |
| 67 | 00 | 长度错误(Lc域为空) |
| 69 | 81 | 命令与文件结构不相容 |
| 69 | 82 | 不满足安全状态 |
| 69 | 87 | 安全报文数据项丢失(需要线路保护更新而采用明文更新方式时) |
| 69 | 88 | 安全报文数据项不正确 |
| 6A | 80 | 数据域不正确 |
| 6A | 81 | 不支持此功能 |
| 6A | 82 | 未找到文件 |
| 6A | 83 | 未找到记录 |
| 6A | 84 | 文件中存储空间不够 |
| 6E | 00 | 无效的CLA |
| 93 | 03 | 应用永久锁定 |
C.2.8 读记录命令(READ RECORD)
C.2.8.1 定义和范围
READ RECORD命令从一个变长记录文件或循环记录文件中读取一条文件记录。
响应报文包含这条被读出的记录。
C.2.8.2 命令报文
READ RECORD命令报文代码,见表 C.20。
| 代码 | 值 |
| CLA | 00 |
| INS | B2 |
| P1 | 记录号 |
| P2 | 引用控制参数,见表C.21 |
| Lc | 不存在 |
| Data | 不存在 |
| Le | 00 |
引用控制参数 P2的定义,见表 C.21。
| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | 含义 |
| x | x | x | x | x | - | - | - | SFI |
| - | - | - | - | - | 1 | 0 | 0 | 读P1指定记录 |
C.2.8.3 命令报文数据域
READ RECORD命令没有数据域。
C.2.8.4 响应报文数据域
READ RECORD命令执行成功后,响应报文的数据域包含读出的记录数据。
C.2.8.5 响应报文的SW
READ RECORD命令执行返回的SW,见表 C.22。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 69 | 81 | 命令与文件结构不相容 |
| 69 | 82 | 安全条件不满足 |
| 67 | 00 | 长度错误 |
| 6A | 82 | 文件未找到 |
| 6A | 83 | 记录未找到 |
| 6A | 86 | 参数P1/P2不正确 |
| 69 | 85 | 使用条件不满足 |
| 6C | xx | 长度错误(Le错误,xx为实际长度) |
| 6D | 00 | INS不支持或错误 |
| 6E | 00 | CLA不支持或错误 |
| 93 | 03 | 应用永久锁定 |
C.2.9 更新二进制信息命令(UPDATE BINARY)
C.2.9.1 定义和范围
UPDATE BINARY 命令用于更新二进制文件信息。
教育卡在收到 UPDATE BINARY 命令后,将进行以下处理。
a) 根据 P1指定的SFI选取相应的 AEF。若 AEF不存在,则回送SW“6A82”。
b) 检查 AEF的使用条件,若不满足条件,则回送SW“6985”。
c) 更新指定的二进制文件信息。
C.2.9.2 命令报文
UPDATE BINARY 命令报文代码,见表 C.23。
| 代码 | 值 |
| CLA | 04 |
| INS | D6 |
| P1 | 引用控制参数,见表C.24 |
| P2 | 引用控制参数,见表C.24 |
| Lc | 数据域的长度 |
| Data | 见C.2.9.3 |
| Le | 不存在 |
| P1 | P2 | |||||||
| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | |
| 1 | 0 | 0 | SFI | 文件的偏移量 | ||||
| 0 | 文件的偏移量 | |||||||
C.2.9.3 命令报文数据域
若为明文,则数据域为要写入的新数据;若为线路保护,则数据域为写入的新数据+4字节 MAC;若为线路加密保护,数据域为加密后的数据+4字节 MAC。
当 CLA 为04时,命令报文数据域中包含4字节 MAC。若该 MAC 错误,则回送 SW“6988”;若MAC错误的次数达到该维护密钥的重试次数,则应用永久锁定,并回送SW“9303”。
C.2.9.4 响应报文数据域
UPDATE BINARY 命令响应报文没有数据域。
C.2.9.5 响应报文的SW
UPDATE BINARY 命令执行返回的SW,见表 C.25。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 65 | 81 | 内存失败(修改失败) |
| 67 | 00 | 长度错误(Lc域为空) |
| 69 | 81 | 命令与文件结构不相容 |
| 69 | 82 | 不满足安全状态 |
| 69 | 87 | 安全报文数据项丢失(需要线路保护更新而采用明文更新方式时) |
| 69 | 88 | 安全报文数据项不正确 |
| 6A | 80 | 数据域不正确 |
| 6A | 81 | 不支持此功能 |
| 6A | 82 | 未找到文件 |
| 69 | 81 | 文件类型错误 |
| 6A | 84 | 文件中存储空间不够 |
| 6B | 00 | 参数错误(偏移地址超出了EF) |
| 93 | 03 | 应用永久锁定 |
C.2.10 读二进制信息命令(READ BINARY)
C.2.10.1 定义和范围
READ BINARY 命令从一个二进制文件中读取一段数据。
C.2.10.2 命令报文
READ BINARY 命令报文代码,见表 C.26。
| 代码 | 值 |
| CLA | 00 |
| INS | B0 |
| P1 | 引用控制参数,见表C.27 |
| P2 | 引用控制参数,见表C.27 |
| Lc | 不存在 |
| Data | 不存在 |
| Le | 00~FF |
参数 P1、P2的定义,见表 C.27。
| P1 | P2 | |||||||
| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | |
| 1 | 0 | 0 | SFI | 文件的偏移量 | ||||
| 0 | 文件的偏移量 | |||||||
若 Le=0 ,偏移量+100小于等于文件实际长度时,读取从偏移量开始的100字节内容;偏移量+ 100大于文件实际长度时,读取从偏移量开始到文件结束的所有内容。
若 Le≠0 ,偏移量+Le小于文件实际长度时,读取从偏移量开始的 Le字节;偏移量+Le大于文件实际长度时,则送回警告状态6Cxx,xx为可读取的有效数据长度,请求将 Le置为xx并重发该命令。
C.2.10.3 命令报文数据域
READ BINARY 命令报文没有数据域。
C.2.10.4 响应报文数据域
READ BINARY 命令执行成功时,响应报文的数据域包含读出的数据。
C.2.10.5 响应报文的SW
READ BINARY 命令执行返回的SW,见表 C.28。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 69 | 81 | 不是二进制文件 |
| 69 | 82 | 读的条件不满足 |
| 69 | 86 | 不满足命令执行的条件(未选择任何EF,而使用当前文件方式操作) |
| 67 | 00 | 长度错误 |
| 6A | 82 | 文件未找到 |
| 6A | 86 | 参数P1/P2不正确 |
| 69 | 85 | 使用条件不满足 |
| 6D | 00 | INS不支持或错误 |
| 6E | 00 | CLA不支持或错误 |
| 6B | 00 | 参数错误(偏移地址超出了EF) |
| 6C | XX | 长度错误(Le错误;XX为实际长度) |
C.2.11 PIN校验命令(VERIFY PIN)
C.2.11.1 定义和范围
VERIFY PIN 命令用于校验 PIN 的正确性。
C.2.11.2 命令报文
VERIFY PIN 命令报文代码,见表 C.29。
| 代码 | 值 |
| CLA | 00 |
| INS | 20 |
| P1 | 00 |
| P2 | 00 |
| Lc | 00或06~10 |
| Data | 见C.2.11.3 |
| Le | 不存在 |
C.2.11.3 命令报文数据域
命令报文数据域由持卡人输入的 PIN 组成。
C.2.11.4 响应报文数据域
VERIFY PIN 命令响应报文没有数据域。
C.2.11.5 响应报文的SW
当前的应用选择中,命令数据域中外部输入的 PIN 与卡中存放的 PIN 校验失败时,教育卡将回送SW“63Cx”,其中x表示 PIN 允许重试的次数;当SW 为“63C0”时,表示不能允许继续校验 PIN。此时再使用 VERIFY PIN 命令时,将回送失败SW“6983”。
VERIFY PIN 命令执行返回的SW,见表 C.30。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 63 | Cx | 校验失败,x表示允许重试的次数 |
| 64 | 00 | 标志状态位没变 |
| 69 | 83 | 教育卡(PIN)锁定 |
| SW1 | SW2 | 说明 |
| 69 | 84 | 引用数据无效 |
| 6A | 86 | P1或P2错误 |
| 6A | 88 | 未找到引用数据 |
| 6D | 00 | INS不支持或错误 |
| 6E | 00 | CLA不支持或错误 |
| 93 | 03 | 应用已被永久锁定 |
C.2.12 PIN修改命令(CHANGE PIN)
C.2.12.1 定义和范围
CHANGE PIN 命令将修改当前 PIN。
CHANGE PIN 命令执行成功后,PIN 尝试计数器复位至 PIN 尝试次数的上限。
命令中的 PIN 以明文方式传送。
C.2.12.2 命令报文
CHANGE PIN 命令报文代码,见表 C.31。
| 代码 | 值 |
| CLA | 80 |
| INS | 5E |
| P1 | 01 |
| P2 | 00 |
| Lc | 0D~21 |
| Data | 当前PIN‖FF‖新的PIN |
| Le | 不存在 |
C.2.12.3 命令报文数据域
命令报文数据域由当前的 PIN、填充的1字节的 FF及新的 PIN 三部分组成。
有效的 PIN 至少为6位字符。
C.2.12.4 响应报文数据域
CHANGE PIN 命令响应报文没有数据域。
C.2.12.5 响应报文的SW
CHANGE PIN 命令执行返回的SW,见表 C.32。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 63 | Cx | 验证失败,还剩下x次尝试机会 |
| 67 | 00 | Lc错误 |
| 65 | 81 | 内存错误 |
| 69 | 83 | 教育卡(PIN)锁定 |
| 69 | 85 | 使用条件不满足 |
| 6A | 80 | 数据域参数不正确 |
| 6A | 86 | P1或P2参数不正确 |
| 6D | 00 | INS不支持或错误 |
| 6E | 00 | CLA不支持或错误 |
| 93 | 03 | 应用已被永久锁定 |
C.2.13 PIN解锁与重装命令(PIN UNBLOCK/RELOAD PIN)
C.2.13.1 定义和范围
PIN UNBLOCK/RELOAD PIN 命令重置 PIN 错误计数器的值为应用设定的最大次数,或更改 PIN。
命令中 PIN 采用加密方式。
命令使用解锁口令密钥进行加密及 MAC计算。
C.2.13.2 命令报文
PIN UNBLOCK/RELOAD PIN 命令报文代码,见表 C.33。
| 代码 | 值 |
| CLA | 84 |
| INS | 24 |
| P1 | 00 |
| P2 | 01:0更0:改解P锁INPI(重N(置仅尝重试置计尝数试器计并数以器新,并PI不N更取改代P原INPI)N) |
| 代码 | 值 |
| Lc | 数据域字节数 |
| Data | 见C.2.13.3 |
| Le | 不存在 |
C.2.13.3 命令报文数据域
PIN UNBLOCK/RELOAD PIN 命令报文数据域定义,见表 C.34。
| 命令报文数据域 | Lc值 | 数据域内容 |
| 解锁PIN | 04 | Lc应包含MAC数据元长度 |
| 更改PIN | 14 | Lc应同时包括被加密的PIN数据元和MAC数据元的长度 |
若 MAC错误,则回送 SW“6988” ;若 MAC错误的次数达到解锁口令密钥的重试次数,则应用永久锁定,回送SW“9303”。
C.2.13.4 响应报文数据域
PIN UNBLOCK/RELOAD PIN 命令响应报文没有数据域。
C.2.13.5 响应报文的SW
PIN UNBLOCK/RELOAD PIN 命令执行返回的SW,见表 C.35。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 67 | 00 | Lc错误 |
| 65 | 81 | 内存失败 |
| 69 | 82 | 不满足安全状态 |
| 69 | 84 | 引用数据无效(没有取随机数) |
| 69 | 85 | 使用条件不满足(PIN未锁定) |
| 69 | 87 | 安全报文数据项丢失(需要线路保护更新而采用明文更新方式时) |
| 69 | 88 | 安全报文数据项不正确 |
| 6A | 86 | P1或P2错误 |
| SW1 | SW2 | 说明 |
| 6A | 88 | 未找到引用数据、密钥未找到(解锁口令密钥不存在) |
| 6D | 00 | INS不支持或错误 |
| 6E | 00 | CLA不支持或错误 |
| 93 | 03 | 应用被永久锁定 |
C.2.14 应用锁定命令(APPLICATION BLOCK)
C.2.14.1 定义和范围
APPLICATION BLOCK 命令使当前选择的应用被临时锁定或永久锁定。
C.2.14.2 命令报文
APPLICATION BLOCK 命令报文代码,见表 C.36。
| 代码 | 值 |
| CLA | 84 |
| INS | 1E |
| P1 | 00 |
| P2 | 00临时锁定,01永久锁定 |
| Lc | 数据域字节长度 |
| Data | 见C.2.14.3 |
| Le | 不存在 |
C.2.14.3 命令报文数据域
命令报文的数据域为该命令报文的 MAC,MAC生成方法见9.4.2。
C.2.14.4 响应报文数据域
APPLICATION BLOCK 命令响应报文没有数据域。
C.2.14.5 响应报文的SW
APPLICATION BLOCK 命令执行返回的SW,见表 C.37。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 69 | 82 | 安全条件不满足 |
| 67 | 00 | 长度错误 |
| 69 | 01 | 命令不接受(无效状态) |
| 69 | 85 | 使用条件不满足 |
| 69 | 88 | 安全报文数据项不正确 |
| 6D | 00 | INS不支持或错误 |
| 6E | 00 | CLA不支持或错误 |
C.2.15 应用解锁命令(APPLICATION UNBLOCK)
C.2.15.1 定义和范围
APPLICATION UNBLOCK 命令用于恢复当前应用。
当 APPLICATION UNBLOCK 命令成功地执行后,由 APPLICATION BLOCK 命令锁定的应用将被解锁。
该指令数据域为4字节 MAC。若 MAC错误,则回送 SW“6988” ;若 MAC错误的次数超过了该维护密钥的重试次数,则锁定应用。
C.2.15.2 命令报文
APPLICATION UNBLOCK 命令报文代码,见表 C.38。
| 代码 | 值 |
| CLA | 84 |
| INS | 18 |
| P1 | 00 |
| P2 | 00 |
| Lc | 数据域字节长度 |
| Data | 见C.2.15.3 |
| Le | 不存在 |
C.2.15.3 命令报文数据域
命令报文的数据域为该命令报文的 MAC。
C.2.15.4 响应报文数据域
APPLICATION UNBLOCK 命令响应报文没有数据域。
C.2.15.5 响应报文的SW
APPLICATION UNBLOCK 命令执行返回的SW,见表 C.39。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 69 | 82 | 安全条件不满足 |
| 67 | 00 | 长度错误 |
| 69 | 01 | 命令不接受(无效状态) |
| 69 | 85 | 使用条件不满足 |
| 69 | 88 | 安全报文数据项不正确 |
| 6D | 00 | INS不支持或错误 |
| 6E | 00 | CLA不支持或错误 |
| 93 | 03 | 应用永久锁定 |
C.2.16 会话密钥导出命令(EXPORT SESSION KEY)
C.2.16.1 定义和范围
EXPORT SESSION KEY 命令用于生成对称会话密钥,保存到教育卡中,并用加密公钥加密导出。使用条件如下:
a) 教育卡中有足够空间保存会话密钥;
b) 满足加密公钥的使用权限。
C.2.16.2 命令报文
EXPORT SESSION KEY 命令报文代码,见表 C.40。
| 代码 | 值 |
| CLA | 80 |
| INS | D8 |
| P1 | 02 |
| P2 | 见表C.41 |
| 代码 | 值 |
| Lc | 加密明导文出导:出Lc:无=4; |
| DATA | 加密明导文出导:见出C:.无2.16.3 |
| Le | 会话密钥密文长度 |
| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | 说明 |
| 1 | - | - | - | - | - | - | - | 加密导出 |
| 0 | - | - | - | - | - | - | - | 明文导出 |
| - | 0 | 1 | - | - | - | - | - | SM2算法 |
| - | - | - | - | - | x | x | x | 密钥索引号 |
C.2.16.3 命令报文数据域
密文导出时,命令数据域包括用于对称密钥加密的公钥 FID数据元,见表 C.42。
| T | L | V |
| C0 | 02 | 公钥文件FID,FID=0000表示使用会话公钥 |
C.2.16.4 响应报文数据域
响应数据是会话密钥明文或密文,输出数据格式为大端序模式,见表 C.43、表 C.44。
| T | L | V |
| C1 | XX(XX<80) | 会话密钥明文 |
表 C.44 EXPORT SESSION KEY命令密文导出响应数据
| T | L | V |
| C1 | XX(XX<80) | 会话密钥密文 |
C.2.16.5 响应报文的SW
EXPORT SESSION KEY 命令执行返回的SW,见表 C.45。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令正确执行 |
| 65 | 81 | 内存访问错误 |
| 67 | 00 | Lc错误 |
| 69 | 81 | 文件类型不匹配 |
| 69 | 82 | 不满足安全状态 |
| 69 | 85 | 使用条件不满足 |
| 6A | 80 | 数据域错误 |
| 6A | 81 | 功能不支持 |
| 6A | 82 | 文件未找到 |
| 6A | 86 | P1、P2参数错误 |
| 93 | 03 | 应用永久锁定 |
C.2.17 会话密钥导入命令(IMPORT SESSION KEY)
C.2.17.1 定义和范围
IMPORT SESSION KEY 命令使用明文或密文导入对称会话密钥。该会话密钥保存在教育卡中(至少同时保存5条会话密钥)。
C.2.17.2 命令报文
IMPORT SESSION KEY 命令报文代码,见表 C.46。
| 代码 | 值 |
| CLA | 80 |
| INS | 4A |
| P1 | 会话密钥算法类型,见表C.47 |
| P2 | 见表C.48 |
| Lc | P1! =FF,LcP为1=会ff话,L密c钥为明0文或密文长度 |
| 代码 | 值 |
| DATA | P1! =FF,见C.2.17.3 P1=FF,数据域为空 |
| Le | 导入成功:1 |
| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | 说明 |
| - | - | - | - | - | 0x | 1x | 0x | 会话S密M钥4算算法法类型 |
| - | - | - | x0011 | x0101 | - | - | - | 数据分块传输方式唯一块首块中间块尾块 |
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 删除指定会话密钥 |
| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | 说明 |
| 10 | - | - | - | - | - | - | - | 加明密文导导入入 |
| 0 | 1 | - | - | - | - | - | SM2 | |
| - | - | - | 01 | - | - | - | - | 小大端端序序模模式式 |
| - | - | - | - | - | x | x | x | 索引号010~:5增:加对新应密卡钥内密钥索引号+1 |
C.2.17.3 命令报文数据域
数据域为SM2私钥 FID与会话密钥,采用 TLV 格式,见表 C.49、表 C.50、表 C.51。
| T | L | V |
| C2 | 02 | 私钥文件FID |
| T | L | V |
| C1 | XX | 会话密钥明文 |
| T | L | V |
| C1 | 82XXXX | 会话密钥密文 |
C.2.17.4 响应报文数据域
导入会话密钥成功时,响应报文数据域包含该会话密钥在卡内的索引号(0~4)。
C.2.17.5 响应报文的SW
IMPORT SESSION KEY 命令执行返回的SW,见表 C.52。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令正确执行 |
| 67 | 00 | Lc错误 |
| 6A | 80 | 数据域的参数错误 |
| 6A | 81 | 使用条件不满足 |
| 6A | 86 | P1或P2错误 |
| 6A | 88 | 未找到引用数据 |
| 6D | 00 | 指令不支持 |
| 6E | 00 | CLA错误 |
| 93 | 03 | 应用被永久锁定 |
C.2.18 对称加密/解密命令(ENCRYPT/DECRYPT)
C.2.18.1 定义和范围
ENCRYPT/DECRYPT 命令使用外部导入或内部保存的对称密钥对数据(满足分组长度的整数倍,卡内不做填充处理)进行加密/解密。使用条件如下:
a) 密钥来自密钥文件时,密钥文件要存在;
b) 每个指定的对称密钥文件中仅能保存一条密钥记录;
c) 使用内部密钥时,满足密钥的使用权限。
C.2.18.2 命令报文
ENCRYPT/DECRYPT 命令报文代码,见表 C.53。
| 代码 | 值 |
| CLA | 80 |
| INS | FA |
| P1 | 00唯一数据块,01第一个数据块,02中间数据块,03末尾数据块 |
| P2 | P1=00,01:P2见表C.54;P1=02,03:P2=0; |
| Lc | 输入数据长度 |
| DATA | 见C.2.18.3 |
| Le | 返回的数据长度 |
| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | 说明 |
| 1 | - | - | - | - | - | - | - | 加密操作 |
| 0 | - | - | - | - | - | - | - | 解密操作 |
| - | 0 | 0 | - | - | - | - | - | 加/解密密钥密文钥件来自 |
| - | 1 | 0 | - | - | - | - | - | 使用已导入的会话密钥,若是数初据始为数4据字块节,会则话输入密钥ID+待计算数据 |
| - | - | - | - | 0 | 0 | 0 | - | 算法算由法密标钥识记指录定中的 |
| - | - | - | - | - | - | - | 0 | ECB模式 |
| - | - | - | - | - | - | - | 1 | CBC模式 |
C.2.18.3 命令报文数据域
命令报文数据域为待加密/解密数据
C.2.18.4 响应报文数据域
响应报文数据域为加密/解密的计算结果。
C.2.18.5 响应报文的SW
ENCRYPT/DECRYPT 命令执行返回的SW,见表 C.55。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令正确执行 |
| 67 | 00 | Lc长度错误 |
| 69 | 81 | 文件类型不匹配 |
| 69 | 82 | 不满足安全状态 |
| 6A | 86 | P1、P2参数错误 |
| 6A | 88 | 密钥不存在 |
| 93 | 03 | 应用永久锁定 |
C.2.19 SM2密钥对生成命令(SM2 GENERATE KEY PAIR)
C.2.19.1 定义和范围
SM2 GENERATE KEY PAIR命令用于产生SM2密钥对,同时将私钥和公钥分别存放在指定文件中。使用条件如下:
a) 满足公私钥文件的写权限;
b) 文件长度符合算法需要。
C.2.19.2 命令报文
SM2 GENERATE KEY PAIR命令报文代码,见表 C.56。
| 代码 | 值 |
| CLA | 80 |
| INS | 40 |
| P1 | 00 |
| P2 | 00 SM2签名密钥对;01 SM2加密密钥对 |
| 代码 | 值 |
| Lc | 08 |
| DATA | 见C.2.19.3 |
| Le | 无或(公钥模数据元长度+公钥指数数据元长度) |
C.2.19.3 命令报文数据域
数据域为公钥文件 FID数据元和私钥文件 FID 数据元(见表 C.57、表 C.58)。若公钥文件 FID= 0000,则不保存公钥文件,公钥通过响应报文返回。
| T | L | V |
| C0 | 02 | 公钥文件FID,FID=0000时使用临时公钥 |
| T | L | V |
| C2 | 02 | 私钥文件FID |
C.2.19.4 响应报文数据域
若公钥 FID不等于0,则无响应数据;否则响应数据为返回公钥参数数据元,见表 C.59。
| T | L | V |
| CA | 40 | SM2公钥参数数据(点坐标X、Y) |
C.2.19.5 响应报文的SW
SM2 GENERATE KEY PAIR命令执行返回的SW,见表 C.60。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令正确执行 |
| 65 | 81 | 内存访问错误 |
| SW1 | SW2 | 说明 |
| 67 | 00 | Lc长度错误 |
| 69 | 82 | 不满足安全状态 |
| 69 | 85 | 使用条件不满足 |
| 6A | 81 | 功能不支持 |
| 6A | 82 | 文件未找到 |
| 6A | 86 | P1、P2参数错误 |
| 6A | 89 | 文件类型(密钥长度)和当前操作不匹配 |
| 93 | 03 | 应用永久锁定 |
C.2.20 SM2公钥导出命令(EXPORT PUBLIC KEY)
C.2.20.1 定义和范围
EXPORT PUBLIC KEY 命令导出指定公钥,应使用指定方法或指定私钥对该公钥进行保护。使用条件如下:
a) 满足公钥文件的读权限;
b) 满足指定私钥文件的使用权限。
C.2.20.2 命令报文
EXPORT PUBLIC KEY 命令报文代码,见表 C.61。
| 代码 | 值 |
| CLA | 80 |
| INS | C9 |
| P1 | 数字签名算法,见表C.62 |
| P2 | 见表C.63 |
| Lc | 数据域长度 |
| DATA | 见C.2.20.3 |
| Le | 00或返回数据实际长度 |
P1参数说明,见表 C.62。
| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | 说明 |
| 1 | - | - | - | - | - | - | - | 导出SM2公钥 |
| 0 | x001 | x010 | - | - | - | - | - | 数对字公签钥名签计名算导模出式对对公(公钥此钥和情和卡况卡内不内随考随机虑机数bi数t0H签~ASb名iHt导2)导出出 |
| - | - | - | 0x | 0x | 0x | 1x | 0x | 数字签SM名2算法: |
| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | 说明 |
| 1 | - | - | - | - | - | - | - | 第响二应次数命据令为,无公命钥令参数数据数域据, |
| 0 | - | - | - | - | - | - | - | 第一次命令,有命令数据域,响应数据为数字签名数据或HASH数据。SM2签X+Y |
| - | 0x | 0x | 0x | 0x | 0x | 0x | 0x | Hash算法SM3 |
C.2.20.3 命令报文数据域
命令报文数据域为公钥文件 FID数据元和私钥文件 FID数据元(均不为0),见表 C.64、表 C.65。
| T | L | V |
| C0 | 02 | 公钥文件FID |
| T | L | V |
| C2 | 02 | 私钥文件FID |
C.2.20.4 响应报文数据域
响应报文数据域包括公钥数据元和数字签名数据元,见表 C.66~表 C.68
| T | L | V |
| C3 | 40 | SM2公钥值(大端序模式) |
| T | L | V |
| C1 | 40 | SM2数字签名 |
| T | L | V |
| C1 | 20 | SM3 Hash数据 |
C.2.20.5 响应报文的SW
EXPORT PUBLIC KEY 命令执行返回的SW,见表 C.69。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令正确执行 |
| 67 | 00 | Lc错误 |
| 6A | 80 | 数据域的参数错误 |
| 6A | 81 | 使用条件不满足 |
| 6A | 86 | P1或P2错误 |
| 6A | 88 | 未找到引用数据 |
| 6D | 00 | 指令不支持 |
| 6E | 00 | CLA错误 |
| 93 | 03 | 应用被永久锁定 |
C.2.21 SM2密钥导入命令(IMPORT SM2 KEY)
C.2.21.1 定义和范围
IMPORT SM2 KEY 命令用于导入SM2公私钥到指定文件中,但该文件不能是内部公私钥文件(FID最高位为1),或导入临时公钥。应支持使用卡内对称会话密钥加密导入公私钥。若选择密文导入,则执行指令前需先执行IMPORT SESSION KEY 导入对称会话密钥。若 CLA=84,则指令数据域中的 MAC是使用应用维护密钥计算而得。计算过程是先执行 GET CHALLENGE命令获取8字节随机数,然后使用应用维护密钥加密随机数产生8字节过程密钥,最后使用过程密钥对命令报文计算MAC(注:PKI应用中 MAC 计算时的初始向量为此随机数)。CA 应用中用指定的会话解密计算MAC,计算方法见9.4.2.2。
使用条件如下:
a) 公私钥文件存在;
b) 满足文件的写入权限。
C.2.21.2 命令报文
IMPORT SM2 KEY 命令报文代码,见表 C.70。
| 代码 | 值 |
| CLA | 80/84 |
| INS | C2 |
| P1 | 见表C.71 |
| P2 | 00导入公钥;01导入私钥 |
| Lc | 数据长度 |
| DATA | 见C.2.21.3 |
| Le | 无 |
P1参数说明,见表 C.71。
| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | 说明 |
| 0 | - | - | - | - | - | - | - | 明文导入 |
| 1 | - | - | - | - | - | - | - | 密文导入 |
| - | 0 | - | - | - | - | - | - | 小端序模式 |
| - | 1 | - | - | - | - | - | - | 大端序模式 |
| - | - | × | × | × | × | - | - | 会话密钥索引 |
| - | - | - | - | - | - | - | 0 | SM2签名密钥对 |
| - | - | - | - | - | - | - | 1 | SM2加密密钥对 |
C.2.21.3 命令报文数据域
命令报文数据域包含公钥或私钥文件FID以及公私钥参数,见表C.72、表C.73、表C.74与表C.75。若 P1.b7=0,则公私钥参数是明文;若 P1.b7=1,则公私钥参数值由事先导入的对称会话密钥加密导入,但 Tag和 Length字段是明文。MAC 是使用由应用维护密钥产生的过程密钥对命令报文计算生成。
| T | L | V |
| C0 | 02 | 公钥文件FID,FID=0000时使用临时公钥 |
| T | L | V |
| C2 | 02 | 私钥文件FID |
| T | L | V |
| CA | 40 | 公钥 |
| CB | 20 | 私钥 |
| T | L | V |
| CA | 密文长度(明文需要填充) | 公钥密文(大端序模式) |
| CB | 密文长度(明文需要填充) | 私钥密文(大端序模式) |
C.2.21.4 响应报文数据域
IMPORT SM2 KEY 命令响应报文没有数据域。
C.2.21.5 响应报文的SW
IMPORT SM2 KEY 命令执行返回的SW,见表 C.76。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令正确执行 |
| 67 | 00 | Lc错误 |
| 69 | 87 | MAC缺失 |
| 69 | 88 | MAC错误 |
| SW1 | SW2 | 说明 |
| 6A | 80 | 数据域的参数错误 |
| 6A | 81 | 使用条件不满足 |
| 6A | 86 | P1或P2错误 |
| 6A | 88 | 未找到引用数据 |
| 6D | 00 | 指令不支持 |
| 6E | 00 | CLA错误 |
| 93 | 03 | 应用被永久锁定 |
C.2.22 SM2公钥运算命令(SM2 PUBLIC KEY CAL)
C.2.22.1 定义和范围
SM2 PUBLIC KEY CAL命令使用SM2公钥进行加密/验签计算。若使用外部公钥计算,则应先使用IMPORT SM2 KEY 指令将公钥导入到内部 RAM 中。使用条件如下:
a) 使用内部公钥时,需要满足公钥使用权限;
b) 使用外部公钥时,应先将公钥导入到 RAM。
C.2.22.2 命令报文
SM2 PUBLIC KEY CAL命令报文代码,见表 C.77。
| 代码 | 值 |
| CLA | 80 |
| INS | 4C |
| P1 | 00 |
| P2 | 00 SM2公钥验签;01 SM2公钥加密 |
| Lc | 见说明 |
| DATA | 见C.2.22.3 |
| Le | 00 |
| 注:SM2验签操作:Lc=0x06+公钥文件路径长度+Hash值长度+签名长度。SM2加密操作:Lc=0x06+公钥文件路径长度+待加密数据长度。 | |
C.2.22.3 命令报文数据域
命令数据域为指定公钥文件绝对路径(或标识符)和计算数据块,格式采用 TLV 格式,见表 C.78~
表 C.80。
| T | L | V |
| C0 | 路径长度 | 1公),钥FI文D件=0路x0径00或0时FI使D,用该临文时件公不钥能是内部公钥文件(FID最高位为 |
| T | L | V |
| C1 | 820060 | Hash值+数字签名 |
| T | L | V |
| C1 | 82XXXX | 待加密数据块,"XXXX"表示数据字节长度(不得超过通信缓冲区长度-私钥长度×3) |
C.2.22.4 响应报文数据域
SM2 PUBLIC KEY CAL命令响应报文数据域为公钥计算结果。
C.2.22.5 响应报文的SW
SM2 PUBLIC KEY CAL命令执行返回的SW,见表 C.81。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 67 | 00 | Lc长度错误 |
| 69 | 81 | 文件类型不匹配 |
| 69 | 82 | 不满足安全状态 |
| 69 | 85 | 使用条件不满足(密钥不完整) |
| 6A | 80 | 数据域错(Data数据大于模数n) |
| 6A | 81 | 功能不支持 |
| 6A | 82 | 文件未找到 |
| 93 | 03 | 应用永久锁定 |
C.2.23 SM2私钥运算命令(SM2 PRIVATE KEY CAL)
C.2.23.1 定义和范围
SM2 PRIVATE KEY CAL命令使用SM2私钥进行解密/签名计算。使用内部文件中私钥时,需要满足私钥使用权限。
C.2.23.2 命令报文
SM2 PRIVATE KEY CAL命令报文代码,见表 C.82。
| 代码 | 值 |
| CLA | 80 |
| INS | 4E |
| P1 | 00 |
| P2 | 00 SM2签名操作;01 SM2解密操作 |
| Lc | 见说明 |
| DATA | 见C.2.23.3 |
| Le | 00 |
| 注:SM2签名操作:Lc=26+私钥文件路径长度。SM2解密操作:Lc=06+私钥文件路径长度+待解密数据长度。 | |
C.2.23.3 命令报文数据域
命令数据域为指定私钥文件绝对路径或标识符和计算数据块,格式采用 TLV 格式,见表 C.83~表 C.85。
| T | L | V |
| C2 | 路径长度 | 1私)钥文件绝对路径或FID,该文件不能是内部私钥文件(FID最高位为 |
| T | L | V |
| C1 | 820020 | Hash值 |
| T | L | V |
| C1 | 82XXXX | 待度)解密数据块,"XXXX"表示数据字节长度(不得超过通信缓冲区长 |
C.2.23.4 响应报文数据域
SM2 PRIVATE KEY CAL命令响应报文数据域为私钥计算结果。
C.2.23.5 响应报文的SW
SM2 PRIVATE KEY CAL命令执行返回的SW,见表 C.86。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 61 | XX | 命令执行成功,有XX字节数据要返回 |
| 67 | 00 | Lc错误 |
| 69 | 81 | 文件类型不匹配 |
| 69 | 82 | 不满足安全状态 |
| 69 | 85 | 使用条件不满足(密钥不完整) |
| 6A | 80 | 数据域错误(Data数据大于模数n) |
| 6A | 81 | 功能不支持 |
| 6A | 82 | 文件未找到 |
| 93 | 03 | 应用永久锁定 |
C.2.24 SM3杂凑运算命令(DATA HASH)
C.2.24.1 定义和范围
DATA HASH 命令采用SM3算法计算数据的杂凑值。
C.2.24.2 命令报文
DATA HASH 命令报文代码,见表 C.87。
| 代码 | 值 |
| CLA | 80 |
| INS | C4 |
| P1 | 见表C.88 |
| P2 | 03:SM3,其他:RFU |
| Lc | 01~FF |
| DATA | 见C.25.3 |
| Le | 00 |
| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | 说明 |
| 0 | 0 | - | - | - | - | - | - | 数据来自卡外 |
| 0 | 1 | - | - | - | - | - | - | 数据来自卡内指定文件 |
| 1 | 0 | - | - | - | - | - | - | 数据来自卡外和卡内指定文件 |
| 1 | 1 | - | - | - | - | - | - | 数据为4字节会话密钥标识 |
| - | - | 0 | 0 | 0 | 0 | 0 | 0 | 首块 |
| - | - | 0 | 0 | 0 | 0 | 0 | 1 | 仅此一块 |
| - | - | 0 | 0 | 0 | 0 | 1 | 0 | 中间块 |
| - | - | 0 | 0 | 0 | 0 | 1 | 1 | 最后一块 |
C.2.24.3 命令报文数据域
若 P1最高两位是00,则命令报文数据域是 Hash计算输入数据块数据元(见表 C.89);若是01,则数据域是卡内数据 FID数据元(见表 C.90);若是10,则数据域是卡内数据 FID 数据元和 Hash计算输入数据块数据元。有卡外输入数据时,卡外输入数据在前,卡内数据在后计算 Hash值。
| T | L | V |
| C1 | XX | 输入数据块,大端序模式 |
| T | L | V |
| C0 | 02 | 数据文件FID |
C.2.24.4 响应报文数据域
若 P1的最低位是1,则响应报文数据域是数据压缩的结果(非 TLV 格式,采用大端序模式);否则无响应报文。
C.2.24.5 响应报文的SW
DATA HASH 命令执行返回的SW,见表 C.91。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令正确执行 |
| 67 | 00 | Lc错误 |
| 6A | 81 | 使用条件不满足 |
| 6A | 86 | P1或P2错误 |
| 6A | 88 | 未找到引用数据 |
| 6D | 00 | 指令不支持 |
| 6E | 00 | CLA错误 |
| 93 | 03 | 应用被永久锁定 |
C.2.25 证书验证命令(VERIFY CERT DATA)
C.2.25.1 定义和范围
VERIFY CERT DATA 命令用于验证并导入人员签名证书和人员加密证书。本指令为可选指令
C.2.25.2 命令报文
VERIFY CERT DATA 命令报文代码,见表 C.92。
| 代码 | 值 |
| CLA | 80 |
| INS | C8 |
| 代码 | 值 |
| P1 | 见表C.93 |
| P2 | 见表C.94 |
| Lc | 数据长度 |
| DATA | 见C.2.25.3 |
| Le | 无 |
| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | 说明 |
| 1 | - | - | - | - | - | - | - | 下据一,由条P命2令指,定命证令书数数据据域的信分息块包情含况证书数 |
| 0 | - | - | - | - | - | - | - | 第一次命令,命令数据域信息包含PKI M时I私C钥公文钥件文F件IDFI、D用、户临公时钥公证钥书文件FIDFI、D用、临户公私钥文件FID |
| - | 0x | 0x | 0x | 0x | 0x | 0x | 1x | 公S钥M算2法 |
| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | 说明 |
| x0011 | x0101 | - | - | - | - | - | - | 证书数据分块:首块中间块最后一块RFU |
| - | - | 0x | 0x | 0x | 0x | 0x | 1x | 杂S凑M算3法 |
C.2.25.3 命令报文数据域
命令报文数据域包含 PKI MIC公钥文件 FID、临时公钥文件 FID、临时私钥文件 FID、用户公钥证书 FID、用户公私钥文件 FID和证书数据,见表 C.95~表 C.99。
| T | L | V |
| CC | 02 | PKI MIC公钥文件FID |
| T | L | V |
| CD | 02 | 临时公钥文件FID |
| T | L | V |
| CE | 02 | 临时私钥文件FID |
| T | L | V |
| CF | 06 | 用户公钥证书FID、用户公钥文件FID和用户私钥文件FID |
| T | L | V |
| C1 | 82XXXX | 长度为XXXX字节的证书 |
C.2.25.4 响应报文数据域
VERIFY CERT DATA 命令响应报文没有数据域。
C.2.25.5 响应报文的SW
VERIFY CERT DATA 命令执行返回的SW,见表 C.100。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令正确执行 |
| 67 | 00 | Lc错误 |
| 6A | 80 | 数据域的参数错误 |
| SW1 | SW2 | 说明 |
| 6A | 81 | 使用条件不满足 |
| 6A | 86 | P1或P2错误 |
| 6A | 88 | 未找到引用数据 |
| 6D | 00 | 指令不支持 |
| 6E | 00 | CLA错误 |
| 93 | 03 | 应用被永久锁定 |
C.3 专有命令
C.3.1 写教育电子证件命令(WRITE DIPLOMA)
C.3.1.1 定义和范围
WRITE DIPLOMA 命令用于在教育电子证件应用下写入教育电子证件相关信息。
C.3.1.2 命令报文
WRITE DIPLOMA 命令报文代码,见表 C.101。
| 代码 | 值 |
| CLA | 00/04 |
| INS | D7 |
| P1 | 01电子毕业证/电子结业证格式化信息;02电子学位证格式化信息;03电子毕业证/电子结业证版式文件信息(可选);04电子学位证版式文件信息(可选);其他保留 |
| P2 | 00 |
| Lc | 数据长度 |
| DATA | 见C.3.1.3 |
| Le | 无 |
C.3.1.3 命令报文数据域
数据域格式采用 TLV 结构:54+文件偏移字节长度+文件偏移+53+待写入数据长度+待写入数据。
C.3.1.4 响应报文数据域
WRITE DIPLOMA 命令响应报文没有数据域。
C.3.1.5 响应报文的SW
WRITE DIPLOMA 命令执行返回的SW,见表 C.102。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 65 | 81 | 内存失败(修改失败) |
| 67 | 00 | 长度错误(Lc域为空) |
| 69 | 81 | 文件类型错误 |
| 69 | 82 | 不满足安全状态 |
| 69 | 87 | 安全报文数据项丢失(需要线路保护更新而采用明文更新方式时) |
| 69 | 88 | 安全报文数据项不正确 |
| 6A | 80 | 数据域不正确 |
| 6A | 81 | 不支持此功能 |
| 6A | 82 | 未找到文件 |
| 6A | 84 | 文件中存储空间不够 |
| 6B | 00 | 参数错误(偏移地址超出了AEF) |
| 93 | 03 | 应用永久锁定 |
C.3.2 读教育电子证件命令(READ DIPLOMA)
C.3.2.1 定义和范围
READ DIPLOMA 命令用于读取教育电子证件应用下的相关信息。
C.3.2.2 命令报文
READ DIPLOMA 命令报文代码,见表 C.103。
| 代码 | 值 |
| CLA | 00 |
| INS | B1 |
| P1 | 01电子毕业证/电子结业证格式化信息;02电子学位证格式化信息;03电子毕业证/电子结业证版式文件信息(可选);04电子学位证版式文件信息(可选);其他保留 |
| P2 | 00 |
| 代码 | 值 |
| Lc | 数据长度 |
| DATA | 见C.3.2.3 |
| Le | 期望读取的数据长度 |
C.3.2.3 命令报文数据域
数据域格式采用 TLV 结构:54+文件偏移字节长度+文件偏移。
C.3.2.4 响应报文数据域
READ DIPLOMA 命令执行成功时,响应报文的数据域包含教育电子证件应用下的相关信息。
C.3.2.5 响应报文的SW
READ DIPLOMA 命令执行返回的SW,见表 C.104。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 69 | 81 | 不是二进制文件 |
| 69 | 82 | 读的条件不满足 |
| 67 | 00 | 长度错误 |
| 6A | 82 | 文件未找到 |
| 6A | 86 | 参数P1/P2不正确 |
| 69 | 85 | 使用条件不满足 |
| 6D | 00 | INS不支持或错误 |
| 6E | 00 | CLA不支持或错误 |
| 6B | 00 | 参数错误(偏移地址超出了EF) |
| 6C | XX | 长度错误(Le错误;XX为实际长度) |
C.3.3 禁止修改教育电子证件命令(DISABLE DIPLOMA MODIFIED)
C.3.3.1 定义和范围
DISABLE DIPLOMA MODIFIED命令用于禁止修改教育电子证件的教育卡芯片内的信息,即用于设置教育电子证件的教育卡芯片为只读模式。该指令执行后,教育电子证件的教育卡芯片中的数据文件不能进行修改更新。
C.3.3.2 命令报文
DISABLE DIPLOMA MODIFIED命令报文代码,见表 C.105。
| 代码 | 值 |
| CLA | 00 |
| INS | 44 |
| P1 | 00 |
| P2 | 00 |
| Lc | 00 |
| DATA | 无数据域 |
| Le | 无 |
C.3.3.3 命令报文数据域
DISABLE DIPLOMA MODIFIED命令报文没有数据域。
C.3.3.4 响应报文数据域
DISABLE DIPLOMA MODIFIED命令响应报文没有数据域。
C.3.3.5 响应报文的SW
DISABLE DIPLOMA MODIFIED命令执行返回的SW,见表 C.106。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 69 | 81 | 不是二进制文件 |
| 69 | 82 | 读的条件不满足 |
| 69 | 86 | 不满足命令执行的条件(未选择任何EF,而使用当前文件方式操作) |
| 67 | 00 | 长度错误 |
| 6A | 82 | 文件未找到 |
| 6A | 86 | 参数P1/P2不正确 |
| 69 | 85 | 使用条件不满足 |
| 6D | 00 | INS不支持或错误 |
| SW1 | SW2 | 说明 |
| 6E | 00 | CLA不支持或错误 |
| 6B | 00 | 参数错误(偏移地址超出了EF) |
| 6C | XX | 长度错误(Le错误;XX为实际长度) |
C.3.4 读教育卡芯片认证码命令(READ AUTHCODE)
C.3.4.1 定义和范围
READ AUTHCODE命令用于从教育卡中读取教育卡芯片认证码。
C.3.4.2 命令报文
READ AUTHCODE命令报文代码,见表 C.107。
| 代码 | 值 |
| CLA | 80 |
| INS | CA |
| P1 | 00 |
| P2 | 00 |
| Lc | 无 |
| Data | 无 |
| LE | 10 |
C.3.4.3 命令报文数据域
READ AUTHCODE命令报文没有数据域。
C.3.4.4 响应报文数据域
响应报文的数据域为教育卡芯片认证码。
C.3.4.5 响应报文的SW
READ AUTHCODE命令执行返回的SW,见表 C.108。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 67 | 00 | 长度错误 |
| 6A | 86 | P1、P2参数不正确 |
| 6D | 00 | INS不支持或错误 |
| 6E | 00 | CLA不支持或错误 |
C.3.5 取应用交易计数器命令(GET ATC)
C.3.5.1 定义和范围
GET ATC 命令用于获取 ATC的值。
C.3.5.2 命令报文
GET ATC命令报文代码,见表 C.109。
| 代码 | 值 |
| CLA | 80 |
| INS | CA |
| P1 | 3F |
| P2 | A1 |
| Lc | 不存在 |
| Data | 不存在 |
| Le | 02 |
C.3.5.3 命令报文数据域
GET ATC命令报文没有数据域。
C.3.5.4 响应报文数据域
响应报文的数据域中包含 ATC的值。
C.3.5.5 响应报文的SW
GET ATC命令执行返回的SW,见表 C.110。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 67 | 00 | 长度错误 |
| 6A | 88 | 不存在该数据元 |
| 6D | 00 | INS不支持或错误 |
| 6E | 00 | CLA不支持或错误 |
C.3.6 交易认证命令(TRANS AUTHENTICATE)
C.3.6.1 定义和范围
TRANS AUTHENTICATE命令要求教育卡验证 ARPC或交易授权码
C.3.6.2 命令报文
TRANS AUTHENTICATE命令报文代码,见表 C.111。
| 代码 | 值 |
| CLA | 00 |
| INS | 82 |
| P1 | 00 |
| P2 | 00 |
| Lc | 09 |
| Data | 见C.3.6.3 |
| Le | 不存在 |
C.3.6.3 命令报文数据域
TRANS AUTHENTICATE命令报文数据域,见表 C.112。
| 说明 | 长度(字节) |
| ARPC | 8 |
| 交易类型授权码 | 1 |
C.3.6.4 响应报文数据域
TRANS AUTHENTICATE命令响应报文没有数据域。
C.3.6.5 响应报文的SW
TRANS AUTHENTICATE命令执行返回的SW,见表 C.113。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 69 | 82 | 安全条件不满足 |
| 63 | 00 | 交易认证校验失败 |
| 67 | 00 | 长度错误 |
| 69 | 01 | 命令不接受(无效状态) |
| 69 | 85 | 使用条件不满足 |
| 6D | 00 | INS不支持或错误 |
| 6E | 00 | CLA不支持或错误 |
C.3.7 联机圈存命令(CREDIT FOR ONLINE LOAD)
C.3.7.1 定义和范围
CREDIT FOR ONLINE LOAD命令用于联机圈存交易。
C.3.7.2 命令报文
CREDIT FOR ONLINE LOAD命令报文代码,见表 C.114。
| 代码 | 值 |
| CLA | 80 |
| INS | 52 |
| P1 | 00 |
| P2 | 00 |
| Lc | 15 |
| Data | 见C.3.7.3 |
| Le | 0A |
C.3.7.3 命令报文数据域
CREDIT FOR ONLINE LOAD命令报文数据域,见表 C.115。
| 说明 | 长度(字节) |
| 交易金额 | 4 |
| 终端机编号 | 6 |
| 交易日期(主机) | 4 |
| 交易时间(主机) | 3 |
| MAC | 4 |
C.3.7.4 响应报文数据域
CREDIT FOR ONLINE LOAD执行成功时,响应报文数据域包含 ATC、AC,见表 C.116。
| 说明 | 长度(字节) |
| ATC | 2 |
| AC | 8 |
C.3.7.5 响应报文的SW
CREDIT FOR ONLINE LOAD命令执行返回的SW,见表 C.117。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 65 | 81 | 内存错误 |
| 67 | 00 | 长度错误 |
| 69 | 01 | 命令不接受(无效状态) |
| 69 | 85 | 使用条件不满足 |
| 6D | 00 | INS不支持或错误 |
| 6E | 00 | CLA不支持或错误 |
| 93 | 02 | MAC无效 |
C.3.8 联机消费命令(DEBIT FOR ONLINE PURCHASE)
C.3.8.1 定义和范围
DEBIT FOR ONLINE PURCHASE命令用于联机消费交易。
C.3.8.2 命令报文
DEBIT FOR ONLINE PURCHASE命令报文代码,见表 C.118。
| 代码 | 值 |
| CLA | 80 |
| INS | 54 |
| P1 | 01 |
| P2 | 00 |
| Lc | 17 |
| Data | 见C.3.8.3 |
| Le | 0A |
C.3.8.3 命令报文数据域
DEBIT FOR ONLINE PURCHASE命令报文数据域,见表 C.119。
| 说明 | 长度(字节) |
| 交易金额 | 4 |
| 终端机编号 | 6 |
| 终端交易序号 | 2 |
| 交易日期(主机) | 4 |
| 交易时间(主机) | 3 |
| MAC | 4 |
C.3.8.4 响应报文数据域
DEBIT FOR ONLINE PURCHASE命令执行成功,响应报文数据域包含 ATC、AC,见表 C.120。
| 说明 | 长度(字节) |
| ATC | 2 |
| AC | 8 |
C.3.8.5 响应报文的SW
DEBIT FOR ONLINE PURCHASE命令执行返回的SW,见表 C.121。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 65 | 81 | 内存错误 |
| 67 | 00 | 长度错误 |
| 69 | 01 | 命令不接受(无效状态) |
| 69 | 85 | 使用条件不满足 |
| 6D | 00 | INS不支持或错误 |
| 6E | 00 | CLA不支持或错误 |
| 93 | 02 | MAC无效 |
C.3.9 取脱机交易 AC命令(GET TRANSACTION PROVE)
C.3.9.1 定义和范围
GET TRANSACTION PROVE 命令提供了一种在交易处理过程中拔出并重插卡后教育卡的恢复机制。
C.3.9.2 命令报文
GET TRANSACTION PROVE命令报文代码,见表 C.122。
| 代码 | 值 |
| CLA | 80 |
| INS | CA |
| P1 | 00 |
| P2 | 00 |
| 代码 | 值 |
| Lc | 02 |
| Data | 见C.3.9.3 |
| Le | 08 |
C.3.9.3 命令报文数据域
命令报文数据域由终端指定的 ATC组成。
C.3.9.4 响应报文数据域
GET TRANSACTION PROVE命令响应报文数据域,见表 C.123。
| 说明 | 长度(字节) |
| AC | 8 |
C.3.9.5 响应报文的SW
GET TRANSACTION PROVE命令执行返回的SW,见表 C.124。
| SW1 | SW2 | 说明 |
| 90 | 00 | 命令执行成功 |
| 67 | 00 | 长度错误 |
| 94 | 06 | 所需TC不可用 |
| 6D | 00 | INS不支持或错误 |
| 6E | 00 | CLA不支持或错误 |
附 录 D (规范性)
教育卡应用流程
D.1 应用流程概述
教育卡(含学生教育卡、教师教育卡、毕业生教育卡)应用流程主要包括:应用预处理、身份鉴别、卡片鉴别、信息读取、信息变更、学籍注册、营养改善计划用餐登记、交通优惠信息写入、电子学位证信息写入、电子学位证信息读取、电子毕业证/电子结业证信息写入、电子毕业证/电子结业证信息读取、ESN读取、交易认证、联机圈存、联机消费、教育卡认证码读取,以及相关的应用维护、防拨等。
D.2 应用预处理
D.2.1 卡内数据
应用预处理使用的卡内数据,见表 D.1。
| 数据元 | 描述 |
| AID | 由RID和扩展的专用应用标识扩展码组成。它标识了在GB/T 16649.5中描述的应用 |
| ADF | AEF的入口文件,包含以下应用数据元:a) FCI模板b) ADF名称c) FCI专有模板(可选)d)应用标签(可选)e)算法指示位(可选)f)首选文种(可选)g)发卡方代码表索引(可选。若应用首选名称存在)h)应用优先名称(可选)i) FCI发卡方自定义数据(可选) |
| AEF | 应用处理过程中使用的数据元(可选) |
| 应用标签(50) | 用于应用选择,存在于ADF(可选) |
| 算法指示位(3FB1) | 用于指示当前被选择应用所使用的算法(可选) |
| FCI | SELECT命令的响应信息,选择不同类型的文件,响应信息不同 |
| 发卡方代码表索引 | 指明在终端显示应用首选名称时使用的代码表(可选) |
| RID由国家IC卡注册中心赋予 | |
D.2.2 终端数据
应用预处理使用的终端数据,见表 D.2。
| 数据元 | 描述 |
| AID | AID由RID和扩展的专用应用标识扩展码组成。它标识了在GB/T 16649.5中描述的应用 |
| 应用选择指示器 | 表明终端是否支持部分AID选择 |
| 终端支持的应用列表 | 终端维护的一个表,包括支持的应用和它们各自的AID |
D.2.3 相关命令
终端发送SELECT 命令给教育卡,获取 FCI。命令中包括所选择 ADF的 AID。
终端使用 AID列表选择方式,建立教育卡和终端均支持的应用列表。
D.2.4 处理流程
应用预处理是教育卡所有应用流程共有的预处理过程,其流程如图 D.1所示

应用预处理的流程如下。
a) 插入教育卡(步骤1):终端应具有检测教育卡是否已经插入的功能。若教育卡已经插入,终端将执行以下处理。
b) 应用选择(步骤2):应用选择处理决定了选择一个教育卡和终端均支持的应用来完成后续处理。这一处理分为两个步骤:
终端建立终端和教育卡均支持的应用列表;
从列表中确定一个应用进行处理。
c) 教育卡有效性检查(步骤3):终端对SELECT 命令以及READ BINARY 命令回送的数据进行以下检查:
教育卡是否在终端存放的黑名单列表中(使用发卡方标识和应用序列号);
终端是否支持该教育卡的发卡方标识符;
终端是否支持该教育卡上的应用(使用应用类型标识);
终端是否支持标签为3FB2的应用版本号所代表的应用版本;
应用是否在有效期内;
教育卡芯片认证码和教育卡芯片身份认证是否合法。
若以上任一条件不满足时,转入步骤5。
d) 确定应用类型(步骤4):终端应具有让持卡人选择应用的功能,每次只能选择一种应用。该步骤完成后,应用预处理完成。
e) 错误处理(步骤5):终端根据返回的信息,进行相应的错误处理。该步骤完成后,应用预处理完成。
D.3 身份鉴别
D.3.1 卡内数据
身份鉴别处理使用的卡内数据,见表 D.3。
| 数据元 | 描述 |
| 教育卡随机数 | 由教育卡内部产生 |
| 签名私钥 | 用于对动态应用数据进行签名 |
| 脱机PIN | 用于验证PIN的正确性 |
身份鉴别使用的数据元,见表 D.4。
| 数据元 | 描述 |
| 发卡方公钥索引 | 由发卡方提供,指明了用于验证人员签名证书的发卡方公钥 |
| 人员签名证书 | 包含人员签名公钥,在教育卡个人化时写入卡中 |
| 参数1 | 保留参数,用于身份鉴别算法的扩展 |
| 签名的动态应用数据 | 教育卡生成的动态应用数据及签名 |
D.3.2 终端数据
身份鉴别使用的终端数据,见表 D.5。
| 数据元 | 描述 |
| 终端随机数 | 由终端生成 |
| PIN | 由持卡人输入的PIN |
D.3.3 相关命令
D.3.3.1 PIN校验命令
在身份鉴别处理过程中,终端使用 VERIFY PIN 命令校验 PIN 的正确性,以获得使用签名私钥的权限。
D.3.3.2 身份鉴别命令
在身份鉴别处理过程中,终端使用 PERSONAL AUTHENTICATE命令请求进行身份鉴别。
当教育卡接收到 PERSONAL AUTHENTICATE 命令之后,使用教育卡签名私钥生成签名的动态应用数据。在 PERSONAL AUTHENTICATE命令响应报文中包含该数据。
发送 PERSONAL AUTHENTICATE 命令前,需要发送 READ BINARY 命令与 READ RECORD命令,从教育卡中读出处理身份鉴别的人员签名证书和其他相关数据。
D.3.4 处理流程
身份鉴别是指通过读取持卡人身份鉴别相关数据,采用公钥鉴别的方式,验证持卡人身份的过程。身份鉴别处理流程如图 D.2所示。
a) 输入 PIN(步骤1):持卡人输入 PIN。
b) 校验 PIN(步骤2):终端使用 VERIFY PIN 命令校验持卡人输入的 PIN 是否正确。教育卡收到 VERIFY PIN 命令后,进行以下处理:
检查 PIN 尝试计数器。若 PIN 尝试计数器为零,教育卡回送SW“6983”,转入步骤3;检查命令数据中的 PIN 和教育卡中存放的 PIN 是否相同。若两个 PIN 不同,教育卡将PIN 尝试计数器减1,并回送SW“63Cx”,“x”是 PIN 尝试计数器的新值,并转入步骤3;
若两个 PIN 相同,教育卡将 PIN 尝试计数器置为允许 PIN 重试的最大次数,并回送 SW “9000”,转入步骤4(教育卡应记住 PIN 校验成功的结果,直到断电、卡片复位、PIN 再次校验错误或选择了其他应用)。
c) 回送错误状态(步骤3):若不接受身份鉴别处理,应通知终端。该步骤完成后,身份鉴别失败,应用处理过程结束。
d) 发出/处理 READ RECORD 命令或 READ BINARY 命令(步骤4、步骤5):终端使用 READ RECORD命令或 READ BINARY 命令从教育卡读取身份鉴别的相关数据,并保存数据用于身份鉴别。
e) 发出 PERSONAL AUTHENTICATE 命令 (步骤 6):终端生成终端随机数,发出PERSONAL AUTHENTICATE命令。
f) 处理 PERSONAL AUTHENTICATE 命令(步骤7):教育卡收到 PERSONAL AUTHEN-TICATE命令后,进行以下处理:
检查 PERSONAL AUTHENTICATE 命令是否包含终端随机数。若未包含终端随机数,则回送SW“6985”;
生成签名数据SIGN(SIGN 的生成方式见9.3.7.1);
生成 PERSONAL AUTHENTICATE的响应报文,并回送给终端。
g) 验证签名(步骤8):终端收到 PERSONAL AUTHENTICATE 命令的响应报文后,进行以下处理:
若回送的SW 不是“9000”,则身份鉴别失败,应用处理过程结束;
检查发卡方公钥证书与人员签名证书相关信息是否存在。若不存在,则身份鉴别失败,应用处理过程结束;
若发卡方公钥证书有效,使用发卡方公钥证书验证人员签名证书是否有效。若人员签名证书验证失败,则身份鉴别失败,应用处理过程结束;
终端从人员签名证书中提取签名公钥,验证签名数据 SIGN 是否正确;若签名验证正确,则身份鉴别成功,应用处理过程结束;否则,身份鉴别失败,应用处理过程结束。

D.4 卡片鉴别
D.4.1 卡内数据
卡片鉴别使用的卡内数据,见表 D.6。
| 数据元 | 描述 |
| 教育卡随机数 | 由教育卡内部产生 |
| 签名私钥 | 用于对动态应用数据进行签名 |
| 数据元 | 描述 |
| 发卡方公钥索引 | 由发卡方提供,指明了用于验证人员签名证书的发卡方公钥 |
| 人员签名证书 | 包含人员签名公钥,在教育卡个人化时写入卡中 |
| 参数1 | 保留参数,用于卡片鉴别算法的扩展 |
| 参数2 | 保留参数,用于卡片鉴别算法的扩展 |
| 签名的动态应用数据 | 教育卡生成的动态应用数据及签名 |
D.4.2 终端数据
卡片鉴别使用的终端数据,见表 D.8。
| 数据元 | 描述 |
| 终端随机数 | 由终端生成 |
D.4.3 相关命令
终端使用 CARD AUTHENTICATE命令请求进行卡片鉴别。
当教育卡收到CARD AUTHENTICATE命令时,使用教育卡签名私钥生成签名的动态应用数据在 CARD AUTHENTICATE命令的响应数据报文中包含该数据。
发送 CARD AUTHENTICATE命令前,终端需发送 READ RECORD命令或 READ BINARY 命令,从教育卡中读出处理卡片鉴别的人员签名证书以及其他相关数据。
D.4.4 处理流程
卡片鉴别是通过读取教育卡的卡片鉴别相关数据,采用公钥鉴别的方式,验证教育卡是否合法。卡片鉴别处理流程如下。
a) 发出/处理 READ RECORD 或 READ BINARY 命令:终端使用 READ RECORD 命令或READ BINARY 命令从教育卡读取卡片鉴别相关数据,并保存数据用于卡片鉴别。
b) 发出 CARD AUTHENTICATE命令:终端生成终端随机数,发出 CARD AUTHENTICATE命令。
c) 处理CARD AUTHENTICATE命令:教育卡收到CARD AUTHENTICATE命令后,进行以下处理:
检查 CARD AUTHENTICATE命令是否包含终端随机数。若未包含终端随机数,回送SW“6985”;
生成签名数据SIGN(SIGN 的生成方式见9.3.7.1);
生成 CARD AUTHENTICATE的响应报文,回送给终端。
d) 验证签名:收到 CARD AUTHENTICATE命令的响应报文后,终端进行以下处理:
若回送的SW 不是“9000”,则卡片鉴别失败,应用处理过程结束;
检查发卡方公钥证书及人员签名证书相关信息是否存在;若不存在,则卡片鉴别失败,应用处理过程结束;
若发卡方公钥证书有效,终端使用发卡方公钥证书验证人员签名证书是否有效。若人员签名证书验证失败,则卡片鉴别失败,应用处理过程结束;
终端从人员签名证书中提取签名公钥,验证签名数据 SIGN 是否正确;若签名验证正确,则卡片鉴别成功,应用处理过程结束;若签名验证失败,应用处理过程结束
D.5 信息读取
D.5.1 卡内数据
信息读取所使用的卡内数据,见表 D.9。
| 数据元 | 描述 |
| AEF | 应用处理过程中使用的数据元。每个AEF用SFI唯一标识 |
| SFI | 用来唯一标识一个AEF |
D.5.2 终端数据
信息读取不使用终端数据
D.5.3 相关命令
D.5.3.1 读记录命令
READ RECORD命令从变长记录文件、循环记录文件或扩展记录文件中读取数据。
D.5.3.2 读二进制信息命令
READ BINARY 命令从二进制文件中读取数据。
D.5.4 处理流程
终端通过发送 READ RECORD 命令或 READ BINARY 命令,从 AEF中读取数据。根据所读数据的不同,数据记录可自由读取或认证后读取。信息读取的处理流程如下:
a) 发出信息读取命令:终端发出 READ RECORD命令或 READ BINARY 命令;
b) 处理信息读取命令:教育卡收到 READ RECORD 命令或 READ BINARY 命令,返回请求的数据内容;
c) 获取信息内容:终端从响应数据报文中获取数据内容。
D.6 信息变更
D.6.1 卡内数据
信息变更所使用的卡内数据,见表 D.10。
| 数据元 | 描述 |
| AEF | 应用处理过程中使用的数据元。每个AEF用SFI唯一标识 |
| SFI | 用来唯一标识一个AEF |
| 安全报文认证密钥 | 用于教育卡验证MAC |
D.6.2 终端数据
信息变更不使用终端数据。
D.6.3 相关命令
D.6.3.1 更新记录命令
UPDATE RECORD命令用于更新变长记录文件、循环记录文件或扩展记录文件的数据。发送命令前,需要发送 GET CHALLENG 命令。
D.6.3.2 更新二进制文件命令
UPDATE BINARY 命令用 于更新二进制文件 的数据。 发送命令前,需要发送 GET CHALLENG 命令。
D.6.3.3 取随机数命令
GET CHALLENG 命令用于生成教育卡随机数。
D.6.4 处理流程
终端通过发送 UPDATE RECORD 或 UPDATE BINARY 命令,修改 AEF 中的数据。信息变更应满足信息的变更权限,该权限包括禁止读写和密钥保护。
信息变更的处理流程如下:
a) MAC计算:教育卡将提供给终端的教育卡随机数作为过程密钥分散因子分散出过程密钥,按照附录 E中安全报文的算法,使用安全报文认证密钥计算 MAC;
b) MAC验证:将新生成的 MAC 和命令中的 MAC 进行比较,若 MAC 验证失败,则返回 SW “6988”;若 MAC验证成功,则进行后续处理;
c) 变更记录:判断 SFI和记录号是否存在,若 SFI不存在,则返回 SW“6A82”;若记录号不存在,则返回 SW“6A83” ;若SFI和记录号存在,则继续后续处理;
d) 变更指定文件内容;若信息变更成功,则返回 SW“9000”
D.7 学籍注册
D.7.1 卡内数据
学籍注册使用的卡内数据,见表 D.11。
| 数据元 | 描述 |
| 教育卡随机数 | 由教育卡内部产生 |
| 签名私钥 | 用于动态应用数据签名 |
| 数据元 | 描述 |
| 发卡方公钥索引 | 由发卡方提供,指明用于验证人员签名证书的发卡方公钥 |
| 人员签名证书 | 包含人员签名公钥,在教育卡个人化时写入卡中 |
| 参数1 | 保留参数,用于卡片鉴别算法的扩展 |
| 参数2 | 保留参数,用于卡片鉴别算法的扩展 |
| 签名的动态应用数据 | 教育卡生成的动态应用数据及签名 |
| AEF | 应用处理过程中使用的数据元。每个AEF用SFI唯一标识 |
| SFI | 用来唯一标识一个AEF |
D.7.2 终端数据
学籍注册使用的终端数据,见 D.13。
| 数据元 | 描述 |
| 终端随机数 | 由终端生成 |
D.7.3 相关命令
D.7.3.1 卡片鉴别命令
终端使用 CARD AUTHENTICATE命令验证教育卡的合法性。
D.7.3.2 添加记录命令
终端使用 APPEND RECORD添加学籍注册信息。
D.7.3.3 更新记录命令
终端使用 UPDATE RECORD更新学籍信息。
D.7.3.4 读记录命令
终端使用 READ RECORD读取教育卡内的学籍信息、学籍注册信息。
D.7.4 处理流程
学籍注册用于学生入学报到登记,在教育卡内增加学籍注册信息。处理流程如下:
a) 发出/处理CARD AUTHENTICATE命令:终端使用CARD AUTHENTICATE命令以验证教育卡的有效合法性;
b) 发出/处理 READ RECORD命令:终端使用 READ RECORD 命令从教育卡读取学籍信息记录、学籍注册信息等数据;
c) 发出/处理 APPEND RECORD 命令:终端使用 APPEND RECORD 命令新增学籍注册信息等数据;
d) 发出/处理 UPDATE RECORD命令:终端使用 UPDATE RECORD命令更新学籍状态等数据。
D.8 营养改善计划用餐登记
D.8.1 卡内数据
营养改善计划用餐登记使用的卡内数据,见表 D.14。
| 数据元 | 描述 |
| 教育卡随机数 | 由教育卡内部产生 |
| 签名私钥 | 用于动态应用数据的签名 |
营养改善计划用餐登记使用的数据元,见表 D.15。
| 数据元 | 描述 |
| 发卡方公钥索引 | 由发卡方提供,指明了终端里用于验证人员签名证书的发卡方公钥 |
| 人员签名证书 | 包含人员签名公钥,在教育卡个人化时写入卡中 |
| 参数1 | 保留参数,用于身份鉴别算法的扩展 |
| 参数2 | 保留参数,用于身份鉴别算法的扩展 |
| 签名的动态应用数据 | 教育卡生成的动态应用数据及签名 |
| AEF | 应用处理过程中使用的数据元。每个AEF用SFI唯一标识 |
| SFI | 用来唯一标识一个AEF |
D.8.2 终端数据
营养改善计划用餐登记使用的终端数据,见表 D.16。
| 数据元 | 描述 |
| 终端随机数 | 由终端生成 |
D.8.3 相关命令
D.8.3.1 卡片鉴别命令
终端使用 CARD AUTHENTICATE命令验证教育卡的合法性。
D.8.3.2 添加记录命令
终端使用 APPEND RECORD添加营养餐领餐信息。
D.8.3.3 更新记录命令
终端使用 UPDATE RECORD更新营养餐领餐信息。
D.8.3.4 读记录命令
终端使用 READ RECORD读取教育卡内的营养餐资格信息、营养餐领餐信息。
D.8.4 处理流程
营养改善计划用餐登记功能是在教育卡中记录学生领用营养餐的信息。处理流程如下:
a) 发出/处理CARD AUTHENTICATE命令:终端使用CARD AUTHENTICATE命令以验证教育卡的有效合法性;
b) 发出/处理 READ RECORD命令:终端使用 READ RECORD 命令从教育卡读取营养餐资格信息、营养餐领餐信息等数据;
c) 发出/处理 APPEND RECORD命令:终端使用 APPEND RECORD命令写入营养餐领餐信息等数据;
d) 发出/处理 UPDATE RECORD 命令:终端使用 UPDATE RECORD 命令更新营养餐领餐信息等数据。
D.9 交通优惠信息写入
D.9.1 卡内数据
交通优惠信息写入使用的卡内数据,见表 D.17。
| 数据元 | 描述 |
| 教育卡随机数 | 由教育卡内部产生 |
| 签名私钥 | 用于动态应用数据的签名 |
| 数据元 | 描述 |
| 发卡方公钥索引 | 由发卡方提供,指明了终端里用于验证人员签名证书的发卡方公钥 |
| 人员签名证书 | 包含人员签名公钥,在教育卡个人化时写入卡中 |
| 参数1 | 保留参数,用于身份鉴别算法的扩展 |
| 参数2 | 保留参数,用于身份鉴别算法的扩展 |
| 签名的动态应用数据 | 教育卡生成的动态应用数据及签名 |
| AEF | 应用处理过程中使用的数据元。每个AEF用SFI唯一标识 |
| SFI | 用来唯一标识一个AEF |
D.9.2 终端数据
交通优惠信息写入使用的终端数据,见表 D.19。
| 数据元 | 描述 |
| 终端随机数 | 由终端生成 |
D.9.3 相关命令
D.9.3.1 卡片鉴别命令
终端使用 CARD AUTHENTICATE命令验证教育卡的合法性。
D.9.3.2 添加记录命令
终端使用 APPEND RECORD添加交通票务优惠信息使用记录等信息。
D.9.3.3 更新记录命令
终端使用 UPDATE RECORD更新交通票务优惠信息使用记录等信息。
D.9.3.4 读记录命令
终端使用 READ RECORD读取教育卡内的交通票务优惠信息记录、使用记录等信息。
D.9.4 处理流程
交通优惠信息写入功能是在教育卡中记录持卡人购买交通优惠票的信息。处理流程如下。
a) 发出/处理CARD AUTHENTICATE命令:终端使用CARD AUTHENTICATE命令以验证教育卡的有效合法性。
b) 发出/处理 READ RECORD命令:终端使用 READ RECORD 命令实现从教育卡读取交通票务优惠信息文件记录、交通票务使用信息文件记录等信息。
c) 当终端收到交通优惠相关信息,返回给相关的应用系统。由应用系统根据业务规范验证持卡人是否可以享受交通优惠。若持卡人不能享受交通优惠,则应用系统应给予提示信息。
d) 发出/处理 APPEND RECORD命令:若持卡人可以享受交通优惠并购买了优惠票,终端使用APPEND RECORD命令新增交通票务使用信息文件记录等信息。
e) 发出/处理 UPDATE RECORD 命令:终端使用 UPDATE RECORD 命令更新交通票务使用信息文件记录等信息。
D.10 电子学位证信息写入
D.10.1 卡内数据
电子学位证(含电子学位证明,下同)信息写入使用的卡内数据,见表 D.20。
| 数据元 | 描述 |
| 教育卡随机数 | 由教育卡芯片产生 |
| 签名私钥 | 用于动态应用数据的签名 |
| 数据元 | 描述 |
| 发卡方公钥索引 | 由发卡方提供,指明了终端里用于验证人员签名证书的发卡方公钥 |
| 人员签名证书 | 包含人员签名公钥,在电子学位证个人化时写入到教育电子证件的教育卡芯片中 |
| 参数1 | 保留参数,用于身份鉴别算法的扩展 |
| 参数2 | 保留参数,用于身份鉴别算法的扩展 |
| 签名的动态应用数据 | EIC教育电子证件生成的动态应用数据及签名 |
D.10.2 终端数据
电子学位证信息写入使用的终端数据,见表 D.22。
| 数据元 | 描述 |
| 终端随机数 | 由终端生成 |
D.10.3 相关命令
D.10.3.1 卡片鉴别命令
终端使用 CARD AUTHENTICATE命令验证教育电子证件的合法性。
D.10.3.2 写教育电子证件命令
终端使用 WRITE DIPLOMA 命令安全写入电子学位证信息。
D.10.4 处理流程
电子学位证信息写入,是在教育电子证件中安全写入电子学位证信息。处理流程如下:
a) 发出/处理CARD AUTHENTICATE命令:终端使用CARD AUTHENTICATE命令以验证教育电子证件的有效合法性;
b) 发出/处理 WRITE DIPLOMA命令:终端使用 WRITE DIPLOMA命令写入电子学位证信息。
D.11 电子学位证信息读取
D.11.1 卡内数据
电子学位证信息读取使用的卡内数据,见表 D.23。
| 数据元 | 描述 |
| 教育卡随机数 | 由教育卡芯片产生 |
| 签名私钥 | 用于动态应用数据的签名 |
在电子学位证信息读取处理中,教育电子证件内部使用的数据元,见表 D.24。
| 数据元 | 描述 |
| 发卡方公钥索引 | 由发卡方提供,指明了终端里用于验证人员签名证书的发卡方公钥 |
| 人员签名证书 | 包含人员签名公钥,在电子学位证个人化时写入到教育电子证件的教育卡芯片中 |
| 参数1 | 保留参数,用于身份鉴别算法的扩展 |
| 参数2 | 保留参数,用于身份鉴别算法的扩展 |
| 签名的动态应用数据 | EIC教育电子证件生成的动态应用数据及签名 |
D.11.2 终端数据
电子学位证信息读取使用的终端数据,见表 D.25。
| 数据元 | 描述 |
| 终端随机数 | 由终端生成 |
D.11.3 相关命令
D.11.3.1 卡片鉴别命令
终端使用 CARD AUTHENTICATE命令验证教育电子证件的合法性。
D.11.3.2 读教育电子证件命令
终端使用 READ DIPLOMA 命令读取教育电子证件中的电子学位证信息。
D.11.4 处理流程
电子学位证信息读取是从教育电子证件中读取电子学位证信息。处理流程如下:
a) 发出/处理CARD AUTHENTICATE命令:终端使用CARD AUTHENTICATE命令以验证教育电子证件的有效合法性;
b) 发出/处理 READ DIPLOMA 命令:终端使用 READ DIPLOMA 命令读取电子学位证信息。
D.12 电子毕业证/电子结业证信息写入
D.12.1 卡内数据
电子毕业证/电子结业证(含电子毕业证明/电子结业证明。下同)信息写入使用的卡内数据,见表D.26。
| 数据元 | 描述 |
| 教育卡随机数 | 由教育卡芯片产生 |
| 签名私钥 | 用于动态应用数据的签名 |
在电子毕业证/电子结业证信息安全写入处理中,教育电子证件内部使用的数据元,见表 D.27。
| 数据元 | 描述 |
| 发卡方公钥索引 | 由发卡方提供,指明了终端里用于验证人员签名证书的发卡方公钥 |
| 人员签名证书 | 包含人员签名公钥,在电子毕业证/电子结业证个人化时写入到教育电子证件的教育卡芯片中 |
| 数据元 | 描述 |
| 参数1 | 保留参数,用于身份鉴别算法的扩展 |
| 参数2 | 保留参数,用于身份鉴别算法的扩展 |
| 签名的动态应用数据 | EIC教育电子证件生成的动态应用数据及签名 |
D.12.2 终端数据
电子毕业证/电子结业证信息安全写入使用的终端数据,见表 D.28。
| 数据元 | 描述 |
| 终端随机数 | 由终端生成 |
D.12.3 相关命令
D.12.3.1 卡片鉴别命令
终端使用 CARD AUTHENTICATE命令验证教育电子证件的合法性。
D.12.3.2 写教育电子证件命令
终端使用 WRITE DIPLOMA 命令安全写入电子毕业证/电子结业证信息。
D.12.4 处理流程
电子毕业证/电子结业证信息写入是在教育电子证件中安全写入电子毕业证/电子结业证信息。处理流程如下:
a) 发出/处理CARD AUTHENTICATE命令:终端使用CARD AUTHENTICATE命令以验证教育电子证件的有效性与合法性;
b) 发出/处理 WRITE DIPLOMA 命令:终端使用 WRITE DIPLOMA 命令安全写入电子毕业证/电子结业证信息。
D.13 电子毕业证/电子结业证信息读取
D.13.1 卡内数据
电子毕业证/电子结业证信息读取使用的卡内数据,见表 D.29。
| 数据元 | 描述 |
| 教育卡随机数 | 教育卡芯片产生 |
| 数据元 | 描述 |
| 签名私钥 | 用于动态应用数据的签名 |
在电子毕业证/电子结业证信息读取处理中,教育电子证件内部使用的数据元,见表 D.30。
| 数据元 | 描述 |
| 发卡方公钥索引 | 由发卡方提供,指明了终端里用于认证人员签名证书的发卡方公钥 |
| 人员签名证书 | 包含人员签名公钥,在电子毕业证/电子结业证个人化时写入到教育电子证件的教育卡芯片中 |
| 参数1 | 保留参数,用于身份鉴别算法的扩展 |
| 参数2 | 保留参数,用于身份鉴别算法的扩展 |
| 签名的动态应用数据 | EIC教育电子证件生成的动态应用数据及签名 |
D.13.2 终端数据
电子毕业证/电子结业证信息读取使用的终端数据,见表 D.31。
| 数据元 | 描述 |
| 终端随机数 | 由终端生成 |
D.13.3 相关命令
D.13.3.1 卡片鉴别命令
终端使用 CARD AUTHENTICATE命令验证教育电子证件的合法性。
D.13.3.2 读教育电子证件命令
终端使用 READ DIPLOMA 命令读取教育电子证件中的电子毕业证/电子结业证信息。
D.13.4 处理流程
电子毕业/结业证书信息读取是从教育电子证件中读取电子毕业证/电子结业证信息。处理流程如下:
a) 卡片鉴别:终端使用 CARD AUTHENTICATE命令以验证教育电子证件的有效合法性;
b) 发出/处理 READ DIPLOMA 命令:终端使用 READ DIPLOMA 命令读取电子毕业证/电子结业证信息。
D.14 ESN读取
D.14.1 卡内数据
ESN 读取所使用的卡内数据,见表 D.32。
| 数据元 | 描述 |
| AEF | 应用处理过程中使用的数据元。每个AEF用SFI唯一标识 |
| SFI | 用来唯一标识一个AEF |
D.14.2 终端数据
ESN 读取不使用终端数据
D.14.3 相关命令
终端使用 READ BINARY 命令读取 ESN 信息。
D.14.4 处理流程
ESN 读取是从教育卡中读取持卡人的 ESN。处理流程如下:
a) 收到命令并返回信息:教育卡收到终端发送的读取 READ BINARY 命令,返回终端请求的数据内容给终端;
b) 获取 ESN 信息:终端从响应数据报文解析得出 ESN。
D.15 交易认证
D.15.1 卡内数据
交易认证使用的卡内数据,见表 D.33。
| 数据元 | 描述 |
| 应用交易计数器 | 教育卡内部应用处理计数器 |
| 教育卡随机数 | 教育卡内部产生 |
| AC密钥 | 教育卡验证ARPC使用的对称密钥 |
D.15.2 终端数据
交易认证使用的终端数据,见表 D.34。
| 数据元 | 描述 |
| 交易类型授权码 | 表明当前的交易类型:01:联机圈存02:联机消费其他:RFU |
D.15.3 相关命令
终端使用 TRANS AUTHENTICATE命令实现交易认证。
D.15.4 处理流程
应用系统或终端通过交易认证,以验证联机圈存交易及终端的合法性。处理流程如下。
a) 生成 ARPC:主机产生一个 ARPC和交易类型授权码,用于验证联机圈存交易及终端的合法性。ARPC的计算方法,应按照附录 F.4描述的计算方法
b) 发出 TRANS AUTHENTICATE 命令:终端向教育卡发出 TRANS AUTHENTICATE命令。
c) 处理 TRANS AUTHENTICATE命令:教育卡收到 TRANS AUTHENTICATE 命令后,验证 ARPC的有效性。若 ARPC有效,则交易认证成功。
D.16 联机圈存
D.16.1 卡内数据
联机圈存使用的卡内数据,见表 D.35。
| 数据元 | 描述 |
| 应用交易计数器 | 教育卡内部应用处理计数器 |
| 联机圈存密钥 | 用于计算圈存报文签别码 |
| AC密钥 | 用于生成AC |
D.16.2 终端数据
联机圈存使用的终端数据,见表 D.36。
| 数据元 | 描述 |
| 交易金额 | 圈存交易的交易金额 |
| 数据元 | 描述 |
| 交易类型授权码 | 表明当前的交易类型:01:联机圈存;02:联机消费 |
| 终端机编号 | 终端机编号 |
| 交易日期(主机) | 交易日期 |
| 交易时间(主机) | 交易时间 |
D.16.3 相关命令
D.16.3.1 读记录命令
终端使用 READ RECORD命令读取联机圈存相关的信息。
D.16.3.2 卡片鉴别命令
终端使用 CARD AUTHENTICATE命令验证教育卡的合法性。
D.16.3.3 取随机数命令
终端使用 GET CHALLENGE命令获取随机数。
D.16.3.4 交易认证命令
终端使用 TRANS AUTHENTICATE命令实现联机圈存交易的认证。
D.16.3.5 联机圈存命令
终端使用 CREDIT FOR ONLINE LOAD命令实现联机圈存交易处理。
D.16.4 处理流程
通过联机圈存,持卡人可将其在银行相应账户上的资金划入教育卡应用账户中。这种交易应在指定的终端上联机进行并要求满足相关认证条件。联机圈存处理流程如下。
a) 发出 READ RECORD命令:终端发出 READ RECORD命令启动联机圈存交易。
b) 发出 CARD AUTHENTICATE命令:终端进行卡片鉴别,以验证教育卡的合法性。
c) 发出 GET CHALLENGE命令:终端发出 GET CHALLENGE命令获取8字节随机数。
d) 交易认证:主机产生一个 ARPC和交易类型授权码,用于验证联机圈存交易及终端的合法性。ARPC的计算方法,应按照 F.4描述的计算方法。
e) 发出 TRANS AUTHENTICATE命令:终端收到主机发来的交易认证交易接受报文后,发出TRANS AUTHENTICATE命令。
f) 验证 ARPC:教育卡收到 TRANS AUTHENTICATE 命令后,验证 ARPC 的有效性;若ARPC无效,向终端回送SW“6300”,联机圈存交易处理中止。
g) 联机圈存交易处理:主机进行联机圈存交易处理后,生成一个 MAC,向终端发送联机圈存交易接受报文。
h) 发出CREDIT FOR ONLINE LOAD命令:终端收到主机发来的联机圈存交易接受报文后,向教育卡发出 CREDIT FOR ONLINE LOAD命令。
i) 验证 MAC:教育卡收到 CREDIT FOR ONLINE LOAD 命令后,确认 MAC 的有效性;若MAC无效,向终端回送SW“9302”。
j) 更新卡上余额:教育卡更新卡上钱包余额,生成 AC。AC的计算方法,应按照 F.3描述的计算方法。
k) 返回确认:在交易成功后,教育卡通过 CREDIT FOR ONLINE LOAD命令的响应报文将 AC回送给终端。
D.17 联机消费
D.17.1 卡内数据
联机消费使用的卡内数据,见表 D.37。
| 数据元 | 描述 |
| 应用交易计数器 | 教育卡内部应用处理计数器 |
| 联机消费密钥 | 用于计算消费报文签别码 |
| AC密钥 | 用于生成AC |
D.17.2 终端数据
联机消费使用的终端数据,见表 D.38。
| 数据元 | 描述 |
| 交易金额 | 消费交易的交易金额 |
| 交易类型授权码 | 表明当前的交易类型:01:联机圈存;02:联机消费 |
| 终端机编号 | 终端机编号 |
| 终端交易序号 | 终端交易序号 |
| 交易日期(主机) | 交易日期 |
| 交易时间(主机) | 交易时间 |
D.17.3 相关命令
D.17.3.1 读记录命令
终端使用 READ RECORD命令读取联机消费相关的信息。
D.17.3.2 卡片鉴别命令
终端使用 CARD AUTHENTICATE命令验证教育卡的合法性。
D.17.3.3 取随机数命令
终端使用 GET CHALLENGE命令获取随机数。
D.17.3.4 交易认证命令
终端使用 TRANS AUTHENTICATE命令实现联机消费交易的认证。
D.17.3.5 联机消费命令
终端使用 DEBIT FOR ONLINE PURCHASE命令实现联机消费交易处理。
D.17.4 处理流程
联机消费交易允许持卡人使用余额进行购物或获取服务。此交易应在指定的终端上联机进行。联机消费处理流程如下。
a) 发出 READ RECORD命令:终端发出 READ RECORD命令启动联机消费交易。
b) 发出 CARD AUTHENTICATE命令:终端进行卡片鉴别,以验证教育卡的合法性。
c) 发出 GET CHALLENGE命令:终端发出 GET CHALLENGE命令获取8字节随机数。
d) 交易认证:主机产生一个 ARPC和交易类型授权码,用于验证联机消费交易及终端的合法性。ARPC的计算方法,应按照 F.4描述的计算方法。
e) 发出 TRANS AUTHENTICATE命令:终端收到主机发来的交易认证交易接受报文后,发出TRANS AUTHENTICATE命令
f) 验证 ARPC:教育卡收到 TRANS AUTHENTICATE 命令后,确认 ARPC 的有效性;若ARPC无效,向终端回送SW“6300”,联机消费交易中止。
g) 交易处理:主机进行联机消费交易处理,生成一个 MAC,向终端发送联机消费交易接受报文。
h) 发出 DEBIT FOR ONLINE PURCHASE命令:终端收到主机发来的联机消费交易接受报文后,向教育卡发出 DEBIT FOR ONLINE PURCHASE命令。
i) 验证 MAC:教育卡收到 DEBIT FOR ONLINE PURCHASE命令后,确认 MAC的有效性;若MAC无效,向终端回送SW“9302”。
j) 更新卡上钱包余额:教育卡更新卡上钱包余额,生成 AC。AC的计算方法,应按照 F.3描述的计算方法。
k) 返回确认:在交易成功后,教育卡通过DEBIT FOR ONLINE PURCHASE命令的响应报文将AC回送给终端。
D.18 教育卡芯片认证码读取
D.18.1 卡内数据
教育卡芯片认证码读取使用的卡内数据,见表 D.39。
| 数据元 | 描述 |
| 教育卡芯片认证码 | 教育卡芯片中掩膜内置的认证码信息,不可更改 |
D.18.2 终端数据
教育卡芯片认证码读取不使用终端数据
D.18.3 相关命令
终端使用 READ AUTHCODE命令读取教育卡芯片认证码。
D.18.4 处理流程
终端发送 READ AUTHCODE命令,从教育卡中读取教育卡芯片认证码。处理流程如下:
a) 收到命令并返回信息:教育卡收到终端发送的 READ AUTHCODE命令,生成响应报文,返回教育卡芯片认证码;
b) 获取教育卡芯片认证码:终端从命令响应报文中获取教育卡芯片认证码。
D.19 应用维护功能
D.19.1 通则
应用维护功能应在使用教育卡终端安全模块(具有相应密钥)的设备上执行。
D.19.2 修改PIN
终端发出 CHANGE PIN 命令对教育卡的 PIN 进行修改。
当教育卡接到 CHANGE PIN 命令时,将检查 PIN 尝试计数器,进行以下处理
a) 检查 PIN 尝试计数器值:若 PIN 尝试计数器值为0,回送 SW“6983”
b) 原 PIN 校验:将命令中的“当前 PIN”和教育卡上存放的 PIN 比较。
c) 修改PIN:若二者相同,将教育卡上的PIN改为命令中的新PIN,将PIN 尝试计数器置为PIN 重试的最大次数;若二者不同,将 PIN 尝试计数器减1,回送 SW“63Cx”, x 是 PIN 尝试计数器的新值。
D.19.3 PIN解锁与重装
终端发出 PIN UNBLOCK/RELOAD PIN 命令对 PIN 解锁或重置。
若 PIN UNBLOCK/RELOAD PIN 命令连续三次执行失败,教育卡将永久锁定,并回送 SW “9303”。
D.19.4 应用锁定
终端发出 APPLICATION BLOCK 命令来临时锁定应用或永久锁定应用。若为永久锁定应用,教育卡将设置一个内部标志以表明不允许执行 APPLICATION UNBLOCK 命令。
APPLICATION BLOCK 命令成功执行后,导致应用处于无效状态。
a) 选择此应用时,对SELECT 命令,教育卡回送 SW“6A81” 和 FCI。
b) 在应用被选择后,除以下情况外,教育卡对其他命令只回送SW“6985”:
当用SELECT 命令选择此应用或其他应用时;
GET CHALLANGE命令;
APPLICATION BLOCK 命令;
APPLICATION UNBLOCK 命令。
D.19.5 应用解锁
终端发出 APPLICATION UNBLOCK 命令对应用进行解锁。
若对某一应用连续三次解锁失败,教育卡将永久锁定该应用,并回送SW“9303”。
D.20 防拔
教育卡在应用处理的任何情况下,应保持数据的完整性。在每次更新数据前对数据进行备份,并且在重新加电后自动触发恢复机制。
附录 E (规范性)
E.1 安全报文格式
本文件的安全报文应符合 GB/T 16649.4。当命令中 CLA 字节的低半字节为4,命令使用安全报文格式。
E.2 安全机制
报文的完整性和鉴别(包括命令中的数据域部分)是使用 MAC 技术机制实现。MAC 是对报文中所有的数据元(包括命令头)进行计算。
E.3 MAC长度和位置
MAC是命令数据域中最后的4个字节数据元。
E.4 MAC密钥生成
E.4.1 安全报文以及外部认证过程密钥计算方法
过程密钥输入数据为8字节的教育卡随机数补8字节“00”,通过对过程密钥输入数据做SM4对称加密运算来产生过程密钥。
加密密钥是“AC密钥”。
E.4.2 联机交易相关的 AC、ARPC、MAC的过程密钥计算方法
交易认证命令、联机圈存命令与联机消费命令中的过程密钥使用SM4算法生成,步骤如下:
将当前的 ATC在其左边用十六进制数字0填充到8个字节记为数据源 A,将当前的 ATC异或十六进制值 FFFF后在其左边用十六进制数字0填充到8个字节记为数据源 B,将数据源 A 和数据源B串连,用选定的密钥对该数据作加密运算产生过程密钥。
加密密钥是“AC密钥”。
E.5 MAC计算
对于命令中需要加密的数据,在加密以后再计算 MAC。
使用SM4算法计算 MAC的步骤如下。
a) 步骤1:初始值为16字节全零(或随机数)。
b) 步骤2:下列数据按顺序排列得到一个数据块 D:
CLA、INS、P1、P2和 Lc(Lc 的长度包括 MAC的长度);命令数据域中的明文或密文数据(若存在)。
c) 步骤3:将上述数据块 D分成16字节长的数据块 D1、D2、D3…最后一块数据块的字节长度为1到16。
d) 步骤4:
若最后一块数据块的长度为16字节,后面补16字节数据块:800000000000000000 00000000000000,执行步骤5;
若最后一块数据块的长度小于16字节,后面补一个字节80,若长度到16字节,执行步骤5。若仍然不够16字节,补00直到16字节。
e) 步骤5:用指定 MAC密钥对数据块进行加密。
f) 步骤6:取计算结果 HK 按4字节左右异或得到4字节 MAC。
MAC计算过程如图 E.1所示。

标引符号说明:
I———输入; SM4(e)———SM4算法(加密模式); O ———输出;
D———数据块; KM MAC过程密钥; +———异或。
图 E.1 使用SM4算法计算 MAC
附录 F (规范性)
F.1 概述
AC和 ARPC均使用SM4算法加密生成。
F.2 数据元
生成 AC的数据元见表 F.1。
| 数据元 | 来自终端的数据 | 教育卡内数据 |
| 交易金额 | √ | - |
| 终端机编号 | √ | - |
| 交易日期(主机) | √ | - |
| 交易时间(主机) | √ | - |
| 应用处理计数器 | - | √ |
| ARPC | - | √ |
F.3 生成 AC
AC生成流程如图 F.1所示。
a) 步骤1:终端将表 F.1中指定的终端数据通过联机消费/联机圈存命令传送给教育卡。
b) 步骤2:生成密文的数据块:生成 AC命令中送进教育卡的数据;教育卡内部数据。
c) 步骤3:将上述数据块分成16字节一组:D1、D2、D3……
d) 步骤4:
若最后一块数据块的长度为16字节,后面补16字节的16进制数据块:800000000000 00000000000000000000;
若最后一块数据块的长度小于16字节,后面补1字节的16进制数据80,若仍然不够16字节,补16进制数据00直到16字节。
e) 步骤5:使用过程密钥(由教育卡中 AC密钥分散生成)加密,取加密运算结果的左边8字节作为 AC。

标引符号说明:
I———输入; SM4(e)———SM4算法(加密模式); O ———输出;
D———数据块; KM MAC过程密钥; +———异或。
图 F.1 用SM4算法生成 AC
F.4 生成 ARPC
教育卡在收到 TRANS AUTHENTICATE 命令时,生成一个 ARPC和命令中传送进来的 ARPC进行比较。
使用SM4算法,生成 ARPC的流程如图 F.2所示。

标引符号说明:
I———输入; SM4(e)———SM4算法(加密模式); KM ———MAC过程密钥。
D———数据块; O 输出;
图 F.2 用SM4算法生成 ARPC
生成 ARPC的流程如下:
a) 步骤1:将取随机数命令返回的8字节教育卡随机数和交易类型授权码按顺序连接,并在后面补7字节的16进制数据00,得到一个16字节的数据块 D1;
b) 步骤2:使用过程密钥(由教育卡中 AC密钥分散生成)加密,取加密运算结果的左边8字节作为 ARPC。
附 录 G (规范性)
卡面信息
G.1 概述
本附录定义符合 GB/T 14916—2022的ID-1型卡要求的教育卡(例如,学生卡、教师卡、毕业生卡)的卡面信息的要求。
G.2 教育卡正面要素及布局
教育卡正面的信息要素应包括“主标识、教育卡标识、教育卡发行单位名称标识、教育卡监制单位名称标识(可选)”等四个基本区域。教育卡正面的信息要素的布局,如图 G.1所示。

教育卡正面各区域的要素(文字内容、字型与位置)要求,见表 G.1。
| 区域 | 文字内容 | 字型 | 区域位置与尺寸 |
| 主标识 | 中华人民共和国 | 字体:中宋字号:16 pt色值:K:100 | 区域尺寸:38.3 mm×5.3 mm上边缘与卡片上边缘的距离为12.6 mm左边缘与卡片左边缘的距离为23.5 mm |
| 教育卡标识 | 教育卡 | 字体:中宋字号:22 pt色值:K:100 | 区域尺寸:23.3 mm×8.7 mm上边缘与卡片上边缘的距离为24 mm左边缘与卡片左边缘的距离为32 mm |
| 教育卡发行单位名称标识 | 教×育(×例卡市如发×:行××单×县位大教的学育名、局称) | 字字色体号值:::6K宋p:1体t00 | 区域宽度最大值:36 mm,左右居中对齐上边缘与卡片上边缘的距离为39 mm |
| 教育卡监制单位名称标识(可选) | (可教选育。卡例监如制,×单×位×的×名机称构) | 字字色体号值:::6K宋p:1体t00 | 区域宽度最大值:36 mm,左右居中对齐上边缘与卡片上边缘的距离为41.9 mm |
教育卡正面要素与布局示例,如图 G.2所示。

G.3 教育卡背面要素与布局
G.3.1 学生卡
学生卡背面的信息要素包括“持卡人信息、持卡人相片、学生卡标识、服务电话、保留位置1、保留位置2、保留位置3、保留位置4”等区域。学生卡背面的信息要素与布局,如图 G.3所示。

学生卡背面各区域的基本要素描述与位置要求,见表 G.2。
| 区域 | 内容 | 区域位置与尺寸 |
| 持卡人信息 | 持卡人姓名、ESN号(或学籍号)、教育卡号(可选)、发卡日期 | 区上左域边边尺缘缘寸与与:卡卡37片片.1上左m边边m缘缘×2的的3距距m离离m为为1243.7mmmm |
| 持卡人相片 | 持卡人相片(或ESC、可信教育数字人) | 区域尺寸:20 mm×25 mm上边缘与卡片上边缘的距离为3 mm右边缘与卡片右边缘的距离为3 mm |
| 学生卡标识 | 学生卡 | 区域尺寸:10.2 mm×4 mm上边缘与卡片上边缘的距离为29.5 mm右边缘与卡片右边缘的距离为7.8 mm |
| 服务电话 | 服务电话 | 下边缘与卡片下边缘的距离为2.5 mm左边缘与卡片左边缘的距离为18 mm |
| 保留位置1 | 例如,合作机构(或联合发行机构)的LOGO与名称 | 区上域边尺缘寸与:卡37片.9上m边m缘×1的4距m离m为2.8 mm左边缘与卡片左边缘的距离为3 mm |
| 保留位置2 | 例如,持卡人在合作机构的信息 | 区域尺寸:37.1 mm×12 mm上边缘与卡片上边缘的距离为37.5 mm左边缘与卡片左边缘的距离为23.7 mm |
| 保留位置3 | 例如,合作应用标识 | 区域尺寸:14.5 mm×8.5 mm下边缘与卡片下边缘的距离为5.7 mm左边缘与卡片左边缘的距离为41.8 mm |
| 保留位置4 | 例如,合作机构业务标识 | 区域尺寸:23.6 mm×16.6 mm下边缘与卡片下边缘的距离为2 mm右边缘与卡片右边缘的距离为2 mm |
学生卡背面的持卡人信息与文字字型,见表 G.3。
持卡人信息包括“姓名标识、姓名、ESN 号(或学籍号)标识、ESN 号(或学籍号)、教育卡号标识、教育卡号、发卡日期标识、发卡日期”等基本要素。
| 标识区域 | 要素 | 字体 | 字号 | 色值 |
| 持卡人信息 | 姓名标识 | 黑体 | 6 pt | K:100 |
| 姓名 | 黑体 | 7.5 pt | K:100 | |
| ESN号(或学籍号)标识 | 黑体 | 6 pt | K:100 | |
| ESN号(或学籍号) | Arial | 7.5 pt | K:100 | |
| 教育卡号标识(可选) | 黑体 | 6 pt | K:100 | |
| 教育卡号(可选) | Arial | 6 pt | K:100 | |
| 发卡日期标识 | 黑体 | 6 pt | K:100 | |
| 发卡日期 | Arial | 6 pt | K:100 | |
| 学生卡标识 | 学生卡 | 新魏 | 10 pt | K:100 |
| 服务电话标识 | 服务电话 | 宋体 | 5 pt | K:100 |

G.3.2 教师卡
教师卡背面的信息要素包括“持卡人信息、持卡人相片、教师卡标识、服务电话、保留位置1、保留位置2、保留位置3、保留位置4”等区域。教师卡背面的信息要素与布局,如图 G.5所示。

教师卡各区域的基本要素描述与位置要求,见表 G.4。
| 区域 | 内容 | 区域位置与尺寸 |
| 持卡人信息 | 持卡人姓名、ESN号(或教职工号)、教育卡号(可选)、发卡日期 | 区上左域边边尺缘缘寸与与:卡卡37片片.1上左m边边m缘缘×2的的3距距m离离m为为1243.7mmmm |
| 持卡人相片 | 持卡人相片(或ESC、可信教育数字人) | 区域尺寸:20 mm×25 mm上边缘与卡片上边缘的距离为3 mm右边缘与卡片右边缘的距离为3 mm |
| 教师卡标识 | 教师卡 | 区域尺寸:10.2 mm×4 mm上边缘与卡片上边缘的距离为29.5 mm右边缘与卡片右边缘的距离为7.8 mm |
| 服务电话 | 服务电话 | 下边缘与卡片下边缘的距离为2.5 mm左边缘与卡片左边缘的距离为18 mm |
| 保留位置1 | 例如,合作机构(或联合发行机构)的LOGO与名称 | 区上域边尺缘寸与:卡37片.9上m边m缘×1的4距m离m为2.8 mm左边缘与卡片左边缘的距离为3 mm |
| 保留位置2 | 例如,持卡人在合作机构的信息 | 区域尺寸:37.1 mm×12 mm上边缘与卡片上边缘的距离为37.5 mm左边缘与卡片左边缘的距离为23.7 mm |
| 保留位置3 | 例如,合作应用标识 | 区域尺寸:14.5 mm×8.5 mm下边缘与卡片下边缘的距离为5.7 mm左边缘与卡片左边缘的距离为41.8 mm |
| 区域 | 内容 | 区域位置与尺寸 |
| 保留位置4 | 例如,合作机构业务标识 | 区域尺寸:23.6 mm×16.6 mm下边缘与卡片下边缘的距离为2 mm右边缘与卡片右边缘的距离为2 mm |
教师卡背面的持卡人信息包括“姓名标识、姓名、ESN 号(或教职工号)标识、ESN 号(或教职工号)、教育卡号标识、教育卡号、发卡日期标识、发卡日期”等要素。
教师卡背面的持卡人信息与文字字型,见表 G.5。
| 标识区域 | 要素 | 字体 | 字号 | 色值 |
| 持卡人信息 | 姓名标识 | 黑体 | 6 pt | K:100 |
| 姓名 | 黑体 | 7.5 pt | K:100 | |
| ESN号(教职工号)标识 | 黑体 | 6 pt | K:100 | |
| ESN号(教职工号) | Arial | 7.5 pt | K:100 | |
| 教育卡号标识(可选) | 黑体 | 6 pt | K:100 | |
| 教育卡号(可选) | Arial | 6 pt | K:100 | |
| 发卡日期标识 | 黑体 | 6 pt | K:100 | |
| 发卡日期 | Arial | 6 pt | K:100 | |
| 教师卡标识 | 教师卡 | 新魏 | 10 pt | K:100 |
| 服务电话标识 | 服务电话 | 宋体 | 5 pt | K:100 |
教师卡背面要素与布局示例,如图 G.6所示。

G.3.3 毕业生卡
毕业生卡背面的信息要素包括“持卡人信息、持卡人相片、毕业生卡标识、服务电话、保留位置1、保留位置2、保留位置3、保留位置4”等区域。毕业生卡背面各信息要素与布局,如图 G.7所示

毕业生卡背面各区域的基本要素描述与位置要求,见表 G.6
| 区域 | 内容 | 区域位置与尺寸 |
| 持卡人信息 | 持卡人姓名、ESN号(或学籍号)、教育卡号(可选)、学历、毕业日期 | 区上左域边边尺缘缘寸与与:卡卡37片片.1上左m边边m缘缘×2的的5距距.6离离m为为m1243.7mmmm |
| 持卡人相片 | 持卡人相片(或ESC、可信教育数字人) | 区域尺寸:20 mm×25 mm上边缘与卡片上边缘的距离为3 mm右边缘与卡片右边缘的距离为3 mm |
| 毕业生卡标识 | 毕业生卡 | 区域尺寸:13.5 mm×4 mm上边缘与卡片上边缘的距离为29.5 mm右边缘与卡片右边缘的距离为6.2 mm |
| 服务电话 | 服务电话 | 下边缘与卡片下边缘的距离为2.5 mm左边缘与卡片左边缘的距离为18 mm |
| 保留位置1 | 例如,合作机构(或联合发行机构)的LOGO与名称 | 区上域边尺缘寸与:卡37片.9上m边m缘×1的4距m离m为2.8 mm左边缘与卡片左边缘的距离为3 mm |
| 保留位置2 | 例如,持卡人在合作机构的信息 | 区域尺寸:37.1 mm×12 mm上边缘与卡片上边缘的距离为40 mm左边缘与卡片左边缘的距离为23.7 mm |
| 区域 | 内容 | 区域位置与尺寸 |
| 保留位置3 | 例如,合作应用标识 | 区域尺寸:14.5 mm×8.5 mm下边缘与卡片下边缘的距离为5.7 mm左边缘与卡片左边缘的距离为41.8 mm |
| 保留位置4 | 例如,合作机构业务标识 | 区域尺寸:23.6 mm×16.6 mm下边缘与卡片下边缘的距离为2 mm右边缘与卡片右边缘的距离为2 mm |
毕业生卡背面的持卡人信息包括“姓名标识、姓名、ESN 号(或学籍号)标识、ESN 号(或学籍号)、教育卡号标识、教育卡号、学历标识、学历、毕业日期标识、毕业日期”等基本要素。
毕业生卡背面的持卡人信息与文字的字型,见表 G.7。
| 标识区域 | 要素 | 字体 | 字号 | 色值 |
| 持卡人信息 | 姓名标识 | 黑体 | 6 pt | K:100 |
| 姓名 | 黑体 | 7.5 pt | K:100 | |
| ESN号(或学籍号)标识 | 黑体 | 6 pt | K:100 | |
| ESN号(或学籍号) | Arial | 7.5 pt | K:100 | |
| 教育卡号标识(可选) | 黑体 | 6 pt | K:100 | |
| 教育卡号(可选) | Arial | 6 pt | K:100 | |
| 学历标识 | 黑体 | 6 pt | K:100 | |
| 学历 | 黑体 | 6 pt | K:100 | |
| 毕业日期标识 | 黑体 | 6 pt | K:100 | |
| 持卡人信息 | 毕业日期 | Arial | 6 pt | K:100 |
| 毕业生卡标识 | 毕业生卡 | 新魏 | 10 pt | K:100 |
| 服务电话标识 | 服务电话 | 宋体 | 5 pt | K:100 |
毕业生卡背面的基本要素与布局示例,如图 G.8所示。

附 录 H (规范性)
算法标识
H.1 公钥算法标识
本文件使用的公钥签名算法标识见表 H.1。
| 公钥签名算法标识 | 签名算法 | 对应杂凑算法 |
| 04 | SM2(数字签名算法) | SM3 |
本文件使用的公钥加密算法标识见表 H.2。
| 公钥加密算法标识 | 加密算法 |
| 05 | SM2(公钥加密算法) |
H.2 杂凑算法标识
本文件使用的杂凑算法标识见表 H.3。
| 杂凑算法标识 | 杂凑算法 |
| 07 | SM3 |
H.3 对称密钥算法标识
本文件使用的对称密钥算法标识见表 H.4。
| 对称密钥算法标识 | 对称密钥算法 |
| 01 | SM4 |
H.4 椭圆曲线参数标识
本文件使用的椭圆曲线参数标识见表 H.5。
| 算法类型 | 强度 | 曲线 | 公钥长度 | 曲线类型 | 曲线标识 |
| SM2 | 素数域256位 | - | 64字节 | - | 11 |
附 录 I (规范性)
C/S应用接口函数
I.1 基本数据类型
本文件中的字节数组均为大端序模式存储与交换。基本数据类型,见表I.1。
| 类型名称 | 描述 |
| INT8 | 有符号8位整数 |
| INT16 | 有符号16位整数 |
| INT32 | 有符号32位整数 |
| UINT8 | 无符号8位整数 |
| UINT16 | 无符号16位整数 |
| UINT32 | 无符号32位整数 |
| BOOL | 布尔类型,取值为TRUE或FALSE |
| BYTE | 字节类型,无符号8位整数 |
| CHAR | 字符类型,无符号8位整数 |
| SHORT | 短整数,有符号16位 |
| USHORT | 无符号16位整数 |
| LONG | 长整数,有符号32位整数 |
| ULONG | 长整数,无符号32位整数 |
| UINT | 无符号32位整数 |
| WORD | 字类型,无符号16位整数 |
| DWORD | 双字类型,无符号32位整数 |
| LPSTR | 8位字符串指针,按照UTF8/UTF16格式存储及交换 |
| HANDLE | 句柄,指向任意数据对象的起始地址 |
| HEDUCARD | 句柄,指向教育卡对象的起始地址 |
| HUSERFILE | 句柄,指向教育卡内文件对象的起始地址 |
I.2 连接管理类
I.2.1 连接管理类函数名称与功能
连接管理类函数名称与功能,见表I.2。
| 函数名称 | 功能 |
| Connect | 连接指定教育卡 |
| DisConnect | 断开当前教育卡 |
I.2.2 Connect
函数原型 BOOL Connect(IN DWORD dwPort, OUT HEDUCARD *phEduCard)
功能描述 连接至指定的教育卡,可以用于判断教育卡是否与终端连接。
参数 dwPort :指定连接终端的端口
phEduCard
返回值 R_OK:函数调用成功
备注 使用教育卡前,应先调用该函数
I.2.3 DisConnect
函数原型 BOOL DisConnect(IN HEDUCARD hEduCard)
功能描述 断开当前连接的教育卡。
参数 hEduCard :连接教育卡的句柄
返回值 R_OK: :函数调用成功
R_ FAIL :断开失败
备注 执行该函数前应先成功调用 Connect
I.3 设备操作类
I.3.1 设备操作类函数名称与功能
设备操作类函数名称与功能,见表I.3。
| 函数名称 | 功能 |
| GetKeyParam | 获取教育卡信息 |
| SetKeyParam | 设置教育卡信息 |
I.3.2 GetKeyParam
函数原型 DWORD GetKeyParam(IN HEDUCARD hEduCard, IN DWORD dwType, OUT BYTE pbData, IN OUT DWORD pdwDataLen)
功能描述 根据输入的参数类型dwType,返回相应的教育卡的参数信息。
参数 hEduCard:连接教育卡的句柄
dwType:获得信息类型
pbData:输出的教育卡相关参数信息指针
pdwDataLen:输出教育卡相关参数信息长度
返回值 R_OK:函数调用成功R_BAD_TYPE:输入的信息类型错R_NO_EDUCARD:没有检测到教育卡存在R_BUFFER_TOO_SMALL:缓冲区太小R_BAD_FLAG:无效的 FLAG 值R_FAIL:函数调用失败
I.3.3 SetKeyParam
函数原型 DWORD SetKeyParam(IN HEDUCARD hEduCard, IN DWORD dwType, IN BYTE pbData, IN DWORD pdwDataLen)
功能描述 根据输入的 dwType 类型,以及相应的教育卡信息 pbData,以及信息长度pdwDataLen,设置 EDUCARD信息。
参数 hEduCard:连接教育卡的句柄dwType:获得信息类型pbData:要设置的教育卡信息pdwDataLen:教育卡信息长度
返回值 R_OK:函数调用成功R_BAD_TYPE:输入的信息类型错R_NO_EDUCARD:没有检测到教育卡存在R_BAD_FLAG:无效的 FLAG 值R_FAIL:函数调用失败
I.4 PIN管理类
I.4.1 PIN管理类函数名称与功能
PIN 管理类函数名称与功能,见表I.4。
| 函数名称 | 功能 |
| ChangePin | 修改PIN |
| VerifyPin | 验证PIN |
| UnLockPin | 解锁PIN |
I.4.2 ChangePin
函数原型 DWORD ChangePin(IN HEDUCARD hEduCard, IN BYTE pbOldPin, IN DWORD dwOldPinLen, IN BYTE pbNewPin, IN DWORD dwNewPinLen, IN DWORD dwFlag)
功能描述 修改教育卡的 PIN。
参数 hEduCard:连接教育卡的句柄
pbOldPin: :改变之前的 PIN
dwOldPinLen :改变之前的 PIN 长度
pbNewPin:改变之后的 PIN
dwNewPinLen: 改变之后的 PI码值长度
dwFlag:用户标志
返回值 R_OK:函数调用成功R_NO_EDUCARD:没有检测到教育卡的存在R_BAD_FLAG:无效的用户标识R_FAIL:函数调用失败
I.4.3 VerifyPin
函数原型 DWORD VerifyPin(IN HEDUCARD hEduCard, IN BYTE *pbPin, IN DWORD dwPinLen, IN DWORD dwFlag)
功能描述 根据用户的类型dwFla
g
以及输入的 PIN,验证用户的身份。
参数 hEduCard:连接教育卡的句柄
pbPin: :输入的待验证的 PIN
dwPinLen:PIN 长度
dwFlag :用户标识
返回值 R_OK :函数调用成功R_NO_EDUCARD:没有检测到教育卡的存在R_BAD_FLAG:无效的用户标识
R_FAIL:函数调用失败
I.4.4 UnLockPin
函数原型 DWORD UnLockPin(IN HEDUCARD hEduCard, IN BYTE pbUnLockPin, IN DWORD dwUnLockPinLen, IN BYTE pbNewPin, IN DWORD dwNewPinLen)
功能描述 此函数为管理员用函数,管理员通过输入解锁 PIN,将教育卡的 PIN 设置为新的值参数 hEduCard:连接教育卡的句柄pbUnLockPin:解锁 PIN dwUnLockPinLen:解锁 PIN 的长度pbNewPin:新的用户 PIN dwNewPinLen:新的用户 PIN 长度返回值 R_OK:函数调用成功R_NO_EDUCARD:没有检测到教育卡的存在R_FAIL:函数调用失败
I.5 文件管理类
I.5.1 文件管理类函数名称与功能
文件管理类函数名称与功能,见表I.5。
| 函数名称 | 功能 |
| CreateUserFile | 创建用户文件 |
| ReadUserFile | 读用户文件 |
| WriteUserFile | 写用户文件 |
| ListUserFile | 列出设备中的用户文件 |
| GetUserFileLength | 获取文件长度 |
| DeleteUserFile | 删除用户文件 |
I.5.2 CreateUserFile
函数原型 DWORD CreateUserFile(IN HEDUCARD hEduCard,
INCHAR * pszFileID,
IN DWORD dwSize,
IN DWORD dwFlags,
OUT HUSERFILE *phFile)
功能描述 建立文件号为pszFileID的文件,文件大小为dwSize。
参数 hEduCard:连接教育卡的句柄pszFileID:文件ID dwSize:文件字节大小dwFlags:文件属性标识phFile:所建立文件的句柄返回值 R_OK:函数调用成功R_USER_PIN_ERROR:PIN 错误R_FILE_ALREADY_EXIST:文件已存在R _BAD_FLAG: 错误的文件属性R_ FAIL: 函数调用失败
I.5.3 ReadUserFile
函数原型 DWORD ReadUserFile(IN HUSERFILE hFile, OUT BYTE pbData, IN OUT DWORD pdwDataLen)
功能描述 从文件句柄对应的文件中,读出文件数据到pbData中。
参数 hFile:返回用户文件句柄pbData: :存储文件中的数据pdwDataLen: :文件中数据长度
返回值 R_OK:函数调用成功R_USER_PIN_ERROR:PIN 错误R_BAD_HANDLE:错误的句柄R_ FAIL: 函数调用失败
I.5.4 WriteUserFile
函数原型 DWORD WriteUserFile(IN HUSERFILE hFile, IN BYTE pbData, IN OUT DWORD pdwDataLen)
功能描述 在文件句柄为hFile的文件中,写入文件数据 pbData ,长度为pdwDataLen。
参数 hFile:用户文件句柄pbData:要写入的数据pdwDataLen :数据长度
返回值 R_OK:函数调用成功R_USER_PIN_ERROR:PIN 错误R_BAD_HANDLE:错误的句柄R_ FAIL: 函数调用失败
I.5.5 ListUserFile
函数原型 DWORD ListUserFile(IN HEDUCARD hEduCard, OUT CHAR pszFileList, IN OUT DWORD pdwFileListLen)
功能描述 列出指定设备中的用户文件名。
参数 hEduCard:设备句柄pszFileList:文件名列表,每个文件之间以 ASCII码0x02间隔pdwFileListLen:文件名列表长度
返回值 R_OK:函数调用成功
R_FAIL:函数调用失败
I.5.6 GetUserFileLength
函数原型 DWORD GetUserFileLength(IN HUSERFILE hFile, OUT DWORD *pdwFileLen)
功能描述 得到指定文件的长度。
参数 hFile:文件句柄pdwFileLen:返回文件长度
返回值 R_OK:函数调用成功R_USER_PIN_ERROR:PIN 错误R_BAD_HANDLE:错误的句柄R_FAIL:函数调用失败
I.5.7 DeleteUserFile
函数原型 DWORD DeleteUserFile(IN HUSERFILE hFile)功能描述 删除指定的用户文件。参数 hFile:文件句柄返回值 R_OK:函数调用成功R_USER_PIN_ERROR:PIN 错误R_BAD_HANDLE:错误的句柄R_NOT_EXIST:文件不存在R_FAIL:函数调用失败
I.6 容器管理类
I.6.1 容器管理类函数名称与功能
容器管理类函数名称与功能,见表I.6。
| 函数名称 | 功能 |
| CreateContainer | 创建容器 |
| DeleteContainer | 删除容器 |
| QueryContainerParam | 获取容器信息 |
I.6.2 CreateContainer
函数原型 DWORD CreateContainer(IN HEDUCARD hEduCard, 154 IN CHAR pszContainerName, OUT HCONTAINER phContainer, DWORD dwFlags)
功能描述 创建容器。
参数 hEduCard:设备句柄pszContainerName:容器名称phContainer:创建的容器句柄dwFlags:容器属性标识
返回值 R_OK:函数调用成功R_NO_EDUCARD:没有教育卡R_FAIL:函数调用失败
I.6.3 DeleteContainer
函数原型 DWORD DeleteContainer(IN HEDUCARD hEduCard, IN CHAR *pszContainerName)
功能描述 删除指定名称的容器。
参数 hEduCard:设备句柄
返回值 R_OK:函数调用成功R_NO_EDUCARD:没有教育卡R_USER_PIN_ERROR:错误的 PIN R_FAIL:函数调用失败
I.6.4 QueryContainerParam
函数原型 DWORD QueryContainerParam(HCONTAINER hContainer, DWROD dwParam, OUT BYTE pbData, IN OUT DWORD pdwDataLen)
功能描述 得到指定容器句柄对应的容器信息。
参数 hContainer:容器句柄dwParam:容器属性标识pbData:容器信息pdwDataLen:容器信息长度
返回值 R_OK:函数调用成功R_NO_EDUCARD:没有教育卡R_NO_CONTAINER:容器不存在R_USER_PIN_ERROR:PIN 错误R_FAIL:函数调用失败
I.7 密钥管理类
I.7.1 密钥管理类函数名称与功能
密钥管理类函数与功能,见表I.7。
| 函数名称 | 功能 |
| GetRand | 产生随机数 |
| GenPKIKey | 产生PKI密钥对 |
| ExportPKIKey | 导出PKI公钥 |
| ImportPKIKey | 导入PKI非对称密钥对 |
I.7.2 GetRand
函数原型 DWORD GetRand(IN HEDUCARD hEduCard, IN OUT BYTE *pbRand, IN DWORD dwRandLen)
功能描述 产生随机数。
参数 hEduCard:设备句柄pbRand:存放随机数缓冲区的地址dwRandLen:要产生的随机数的长度
返回值 R_OK:函数调用成功R_NO_EDUCARD:没有教育卡R_FAIL:函数调用失败
I.7.3 GenPKIKey
函数原型 DWORD GenPKIKey(IN HEDUCARD hEduCard, IN LONG nAlg, IN CHAR *pszContainerName, IN DWORD dwFlag)
功能描述 创建非对称密钥对。
参数 hEduCard:设备句柄nAlg:算法类型,1-SM2 pszContainerName:容器名dwFlag:密钥对类型标志:1-签名密钥对,2-加密密钥对。
返回值 R_OK:函数调用成功R_NO_EDUCARD:没有教育卡R_NO_CONTAINER:容器不存在R_USER_PIN_ERROR:PIN 错误R_FAIL:函数调用失败
I.7.4 ExportPKIKey
函数原型 DWORD ExportPKIKey(IN HEDUCARD hEduCard, IN LONG nAlg,
nAlg
pszContainerName:
pbKeyData:
pdwKeyDataLen
dwFlag
R\_NO\_EDUCARD:
R\_NO\_CONTAINER
R\_BUFFER\_TOO\_SMALL:
R\_USER\_PIN\_ERROR:PIN
R\_FAIL
I.7.5 ImportPKIKey
函数原型 DWORD ImportPKIKey (IN HEDUCARD hEduCard,
IN LONG nAlg,
IN CHAR *pszContainerName,
IN BYTE *pbKeyData,
IN OUT DWORD *pdwKeyDataLen,
IN DWORD dwFlag)
功能描述 导入非对称密钥对。
参数 hEduCard:设备句柄
nAlg:算法类型,1-SM2
pszContainerName:容器名
pbKeyData:导出的公钥数据
pdwKeyDataLen:导出的公钥数据长度
dwFlag:密钥对类型标志,1-签名公钥,2-加密公钥
返回值 R_OK:函数调用成功
R_NO_EDUCARD:没有教育卡
R_NO_CONTAINER:容器不存在
R_BUFFER_TOO_SMALL:缓冲区太小
R_USER_PIN_ERROR:PIN 错误
R_FAIL:函数调用失败
I.8 密码运算类
I.8.1 密码运算类函数名称与功能
密码运算类函数名称与功能,见表I.8。
| 函数名称 | 功能 |
| SymCrypt | 使用普通密钥进行对称加密 |
| SessionCrypt | 使用会话密钥进行对称加密 |
| SymDeCrypt | 使用普通密钥进行对称解密 |
| SessionDeCrypt | 使用会话密钥进行对称解密 |
| PKICrypt | 非对称加密 |
| PKIDeCrypt | 非对称解密 |
| SignData | 数字签名 |
| VerifyData | 数字签名验证 |
I.8.2 SymCrypt
函数原型 DWORD SymCrypt(IN HSYMKEY hSymKey, IN DWORD dwAlgType, IN OUT BYTE pbData, IN OUT DWORD pdwDataLen)
功能描述 使用普通密钥进行对称加密。
参数 hSymKey :普通密钥dwAlgType :对称密钥算法类型,4-SM4算法。pbData: :待加密数据/加密以后的数据pdwDataLen :待加密数据长度/加密后数据长度
返回值 R_OK:函数调用成功R_FAIL:函数调用失败
I.8.3 SessionCrypt
函数原型 DWORD SessionCrypt(HSESSIONKEY hSessionKey, IN DWORD dwAlgType, IN OUT BYTE pbData, IN OUT DWORD dwDataLen)
功能描述 使用会话密钥进行加密。
参数 hSessionKey:会话密钥dwAlgType :对称密钥算法类型,4-SM4算法。pbData:待加密数据/加密以后的数据dwDataLen: :待加密数据长度/加密后数据长度
返回值 R_OK:函数调用成功R_FAIL:函数调用失败
I.8.4 SymDeCrypt
函数原型 DWORD SymDeCrypt(IN HSYMKEY hSymKey IN DWORD dwAlgType, IN OUT BYTE pbData, IN OUT DWORD pdwDataLen)
功能描述 使用普通密钥进行对称解密。
参数 hSymKey: :普通密钥dwAlgType: 对称密钥算法类型,4-SM4算法pbData:待加密数据/加密以后的数据pdwDataLen:待加密数据长度/加密后数据长度返回值 R_OK:函数调用成功R_FAIL:函数调用失败
I.8.5 SessionDeCrypt
函数原型 DWORD SessionDeCrypt(HSESSIONKEY hSessionKey, IN DWORD dwAlgType, IN OUT BYTE pbData, IN OUT DWORD pdwDataLen)
功能描述 使用会话密钥进行对称解密。
参数 hSessionKey:加密的会话密钥密文
dwAlgType:
pbData: 待加密数据/加密以后的数据
返回值 R_OK:函数调用成功
R_FAIL: 函数调用失败
I.8.6 PKICrypt
函数原型 DWORD PKICrypt(IN HCONTAINER hContainer, IN OUT BYTE *pbData, IN OUT DWORD dwDataLen, IN DWORD dwFlag)
功能描述 使用SM2算法加密信息。
参数 hContainer:容器句柄pbData:待加密数据/加密后的数据dwDataLen:待加密数据长度/加密后数据长度dwFlag :标志位,1-签名密钥对,2-加密密钥对返回值 R_OK:函数调用成功R _FAIL: 函数调用失败
I.8.7 PKIDeCrypt
函数原型 DWORD PKIDeCrypt(IN HCONTAINER hContainer,
OUT BYTE *pbData, IN OUT DWORD dwDataLen, IN DWORD dwFlag)
功能描述 使用SM2解密数据。
参数 hContainer:容器句柄
pbData :待加密数据/加密后的数据
返回值 R_OK: 函数调用成功
R_ FAIL: :函数调用失败
I.8.8 SignData
函数原型 DWORD SignData(IN HEDUCARD hEduCard, IN CHAR pszContainerName, IN BYTE pbInData, IN DWORD dwInDataLen, OUT BYTE pbOutData, OUT DWORD pdwOutDataLen)
功能描述 对指定数据先散列再签名。
参数 hEduCard:设备句柄pszContainerName:容器名pbInData:源数据值dwInDataLen:源数据长度pbOutData: :签名后的数据pdwOutDataLen: :签名后数据长度
返回值 R_OK:函数调用成功R_NO_EDUCARD:没有教育卡R_USER_PIN_ERROR:PIN 错误R_FAIL:函数调用失败
I.8.9 VerifyData
函数原型 DWORD VerifyData(IN HEDUCARD hEduCard, IN BYTE pbCertData, IN DWORD dwCertDataLen, IN BYTE pbSrcData, IN DWORD dwSrcDataLen, IN BYTE *pbDestData, IN DWORD dwDestDataLen)
功能描述 验证签名。
参数 hEduCard:设备句柄pbCertData:证书数据
dwCertDataLen:证书数据长度
pbSourceData: :源数据值
dwSrcDataLen:源数据长度
pbDestData:签名后的数据
dwDestDataLen:签名后数据长度。
返回值 R_OK:函数调用成功
R_NO_EDUCARD, :没有教育卡
R_VERIFY_FAIL:验证失败
R_FAIL :函数调用失败
I.9 证书管理类
I.9.1 证书管理类函数名称与功能
证书管理类函数与功能见表I.9。
| 函数名称 | 功能 |
| ExportCertData | 读证书数据 |
| ImportCertData | 写证书数据 |
I.9.2 ExportCertData
函数原型 DWORD ExportCertData(IN HEDUCARD hEduCard, IN CHAR pszContainerName, OUT BYTE pbCertData, IN OUT DWORD *pdwCertDataLen, IN DWORD dwCertFlag)
功能描述 读取证书数据。
参数 hEduCard:设备句柄
pszContainerName :容器名
pbCertData: :证书数据
pdwCertDataLen :证书数据长度
dwCertFlag: :证书类型,1-签名证书,2-加密证书
返回值 R_OK:函数调用成功
R_NO_EDUCARD :没有教育卡
R_BAD_FLAG: :证书类型错误
R_ FAIL: 函数调用失败
I.9.3 ImportCertData
函数原型 DWORD ImportCertData(IN HEDUCARD hEduCard,
INCHAR * pszContainerName,
IN CHAR *pbCertData,
IN OUT DWORD *pdwCertDataLen,
IN DWORD dwCertFlag)
功能描述 写证书数据。
参数 hEduCard:设备句柄
pszContainerName:容器名
pbCertData:证书数据
pdwCertDataLen:证书数据长度
dwCertFla
g
:证书类型,1-签名证书,2-加密证书
返回值 R_OK:函数调用成功
R_NO_EDUCARD:没有教育卡
R_BAD_FLAG:证书类型错误
R_FAIL:函数调用失败
附 录 J (规范性)
J.1 基本数据类型
本附录中的字节数组均为大端序模式存储和交换。基本数据类型见表J.1。
| 类型名称 | 描述 | 定义 |
| BOOL | 布尔类型,取值为TRUE或FALSE | - |
| LONG | 长整数,有符号32位整数 | typedef INT32 LONG |
| BSTR | 字符串 | - |
J.2 连接管理类
J.2.1 连接管理类函数名称与功能
连接管理类函数名称与功能,见表J.2。
| 函数名称 | 功能 |
| Connect | 教育卡连接 |
| DisConnect | 教育卡断开 |
J.2.2 Connect
函数原型 BOOL Connect(BSTR szEduCardName)
功能描述 是否插入了教育卡。
参数 szEduCardName:[IN]连接名
返回值 TURE:表示成功
FALSE:表示失败
J.2.3 DisConnect
函数原型 BOOL DisConnect(BSTR szEduCardName)
功能描述 断开相应教育卡的连接。
参数 szEduCardName:[IN]连接名
返回值 TURE:表示成功
FALSE:表示失败
J.3 设备管理类
J.3.1 设备管理类函数名称与功能
设备管理类函数与名称,见表J.3。
| 函数名称 | 功能 |
| GetEduCardSerialNum | 获取教育卡序列号 |
J.3.2 GetEduCardSerialNum
函数原型 BOOL GetEduCardSerialNum()
功能描述 获取教育卡序列号。Data1为序列号。
参数 无
返回值 TURE:表示成功
FALSE:表示失败
J.4 容器管理类
J.4.1 容器管理类函数名称与功能
容器管理类函数名称与功能,见表J.4。
| 函数名称 | 功能 |
| CreateContainer | 创建容器 |
| ExistContainer | 检测容器是否存在 |
J.4.2 CreateContainer
函数原型 BOOL CreateContainer(BSTR szContainerName)
功能描述 创建容器。
参数 szContainerName:[IN]容器名称
返回值 TURE:表示成功
FALSE:表示失败
J.4.3 ExistContainer
函数原型 BOOL ExistContainer(BSTR szContainerName)
功能描述 检测容器是否存在。
参数 szContainerName:[IN]容器名称
返回值 TURE:表示成功
J.5 密钥管理类
J.5.1 密钥管理类函数名称与功能
密钥管理类函数名称与功能,见表J.5。
| 函数名称 | 功能 |
| GetRand | 产生随机数 |
| GenPKIKey | 生成非对称密钥对 |
| ExportPKIKey | 导出非对称密钥对中的公钥 |
| ImportPKIKey | 密文导入密钥对 |
| ImportEduCardData | 导入签名、加密密钥对和证书 |
J.5.2 GetRand
函数原型 BOOL GetRand(LONG pRDataLen)
功能描述 产生随机数。Data1为已 Base64编码的随机数。
参数 pRDataLen:[IN]随机数长度
返回值 TURE:表示成功
J.5.3 ExportPKIKey
函数原型 BOOL ExportPKIKey(LONG nAlg, LONG dwFlag, BSTR pszContainerName)
功能描述 导出非对称密钥对中的公钥。Data1为已 Base64编码的公钥数据。
参数 nAlg:[IN]算法类型:1-SM2 dwFlag:[IN]公钥类型:1-签名公钥,2-加密公钥pszContainerName:[IN]容器名称
返回值 TURE:表示成功
FALSE:表示失败
J.5.4 ImportPKIKey
函数原型 BOOL ImportPKIKey(LONG nAlg,
LONG dwFlag,
BSTR szContainerName,
BSTR szKeyData)
功能描述 导入公钥。
参数 nAlg:[IN]算法类型:1-SM2
dwFlag:[IN]密钥对类型:1-签名密钥对,2-加密密钥对
szContainerName:[IN]容器名称
szKeyData:[IN]密文密钥对,已编码
返回值 TURE:表示成功
FALSE:表示失败
J.5.5 GenPKIKey
函数原型 BOOL GenPKIKey(LONG nAlg,
LONG nFlag,
BSTR szContainerName)
功能描述 生成非对称密钥对。
参数 nAlg:[IN]算法类型:1-SM2 nFlag:[IN]密钥对类型:1-签名密钥对,2-加密密钥对szContainerName:[IN]容器名称
返回值 TURE:表示成功FALSE:表示失败
J.5.6 ImportEduCardData
函数原型 BOOL ImportEduCardData(BSTR szContainerName, BSTR szSessionKey, BSTR szCryptKey, BSTR szCryptCert, BSTR szSignCert)
功能描述 导入签名、加密密钥对和证书。参数 szContainerName:[IN]容器名称szSessionKey:[IN]密文会话密钥,已编码szCryptKey:[IN]密文加密密钥对和签名密钥对,已编码szCryptCert:[IN]加密证书,已编码szSignCert:[IN]签名证书,已编码返回值 TURE:表示成功FALSE:表示失败
J.6 密码运算类
J.6.1 密码运算类函数名称与功能
密码运算类函数名称与功能,见表J.6。
| 函数名称 | 功能 |
| AsymCrypt | 非对称加密 |
| 函数名称 | 功能 |
| AsymDeCrypt | 非对称解密 |
| SymCrypt | 对称加密 |
| SymDeCrypt | 对称解密 |
| SignData | 数字签名 |
| VerifyData | 验证签名 |
J.6.2 AsymCrypt
函数原型 BOOL AsymCrypt(LONG nAlg, LONG dwFlags, BSTR pszContainerName, BSTR szCertData, BSTR szData, LONG dwArithFlag)
功能描述 非对称加密。Data1为已 Base64编码的加密数据。
参数 nAlg:[IN]算法类型:1-SM2 dwFlags:[IN]加密类型:1-签名,2-加密pszContainerName:[IN]容器名称szCertData:[IN]证书数据,已编码,若为空,则使用容器里的证书szData:[IN]待加密的数据,已编码dwArithFlag:[IN]算法标识,保留返回值 返回值 TURE:表示成功 TURE 表示成功
FALSE:表示失败
J.6.3 AsymDeCrypt
函数原型 BOOL AsymDeCrypt(LONG nAlg, LONG dwFlag, BSTR pszContainerName, BSTR szData, LONG dwArithFlag)
功能描述 非对称解密。Data1为已 Base64编码的解密后的数据。参数 nAlg:[IN]算法类型:1-SM2 dwFlag:[IN]加密类型:1-签名,2-加密pszContainerName:[IN]容器名称szData:[IN]加密后的数据,已编码dwArithFlag:[IN]算法标识,保留返回值 返回值 TURE.表示成功 TURE:表示成功
FALSE:表示失败
J.6.4 SymCrypt
函数原型 BOOL SymCrypt(LONG dwFlags, BSTR szPaws, BSTR szData)
功能描述 对称加密。Data1为已 Base64编码的加密数据。
参数 dwFlags:[IN]算法类型:4-SM4 szPaws:[IN]对称密钥,已编码szData:[IN]待加密的数据
返回值 TURE:表示成功
FALSE:表示失败
J.6.5 SymDeCrypt
函数原型 BOOL SymDeCrypt(LONG nAlgType, BSTR szPaws, BSTR szData)
功能描述 对称解密。Data1为解密后的明文数据。
参数 nAlgType:[IN]算法类型:4-SM4 szPaws:[IN]对称密钥,已编码szData:[IN]加密后数据,已编码
返回值 TURE:表示成功FALSE:表示失败
J.6.6 SignData
函数原型 BOOL SignData(LONG nAlg, BSTR pszContainerName, BSTR pbInData)
功能描述 数据签名。Data1为已 Base64编码的签名后的数据。
参数 nAlg:[IN]算法类型:1-SM2 pszContainerName:[IN]容器名称pbInData:[IN]待签名的数据,未编码
返回值 TURE:表示成功FALSE:表示失败
J.6.7 VerifyData
函数原型 BOOL VerifyData(LONG nAlg, BSTR szCertData, BSTR pbSrcData, BSTR szDestData, LONG nCertFlag)
功能描述 验证签名。
参数 nAlg:[IN]算法类型:1-SM2
szCertData:[IN]证书数据
pbSrcData:[IN]待签名的数据,未编码
szDestData:[IN]签名后的数据,已编码
返回值 TURE:表示成功
J.7 证书管理类
J.7.1 证书管理类函数名称与功能
证书管理类函数与功能,见表J.7。
| 函数名称 | 功能 |
| ExportCertData | 读取证书数据 |
| ImportCertData | 写入证书数据 |
| GetEduCardCertInfo | 获取EDUCARD证书信息 |
J.7.2 ReadCertData
函数原型 BOOL ExportCertData(LONG nAlg, LONG dwCertFlag, BSTR pszContainerName)
功能描述 读取证书数据。Data1为已 Base64编码的证书数据。
参数 nAlg:[IN]算法类型:1-SM2 dwCertFlag:[IN]证书类型:1-签名证书,2-加密证书pszContainerName:[IN]容器名称
返回值 TURE:表示成功FALSE:表示失败
J.7.3 WriteCertData
函数原型 BOOL ImportCertData(LONG nAlg, LONG dwCertFlag, BSTR pszContainerName, BSTR szCertData, LONG nCertDataType)
功能描述 写入证书数据。
参数 nAlg:[IN]算法类型:1-SM2 dwCertFlag:[IN]证书类型:1-签名证书,2-加密证书
pszContainerName:[IN]容器名称
szCertData:[IN]证书数据,已编码
返回值 TURE:表示成功
J.7.4 GetEduCardCertInfo
函数原型 BOOL GetEduCardCertInfo(LONG dwCertFlag, LONG dwDataFlag, BSTR szContainerName)
功能描述 获取教育卡内证书信息。Data1为证书信息标识所属的信息。
参数 dwCertFlag:[IN]证书类型:1-签名证书,2-加密证书
dwDataFlag:[IN]证书信息标识:0-颁发者,1-授权者,2-有效起始时间,3-有效终止时间,4-版本,5-序列号,6-颁发者信息,17-公钥,18-签名算法,19-主题密钥标志符,20-颁发机构密钥标志符,21-密钥用法,22-基本限制
返回值 TURE:表示成功FALSE:表示失败
J.8 输出数据类
J.8.1 输出数据类函数名称与功能
输出数据类函数与功能,见表J.8。
| 函数名称 | 功能 |
| DataLen1 | 获取第一个返回值数据长度 |
| DataLen2 | 获取第二个返回值数据长度 |
| Data1 | 获取第一个返回值数据 |
| Data2 | 获取第二个返回值数据 |
J.8.2 DataLen1
函数原型 LONG DataLen1()
功能描述 获取第一个返回值数据长度。
参数 无
返回值 第一个返回值数据长度
J.8.3 DataLen2
函数原型 LONG DataLen2()
功能描述 获取第二个返回值数据长度。
参数 无
返回值 第二个返回值数据长度
J.8.4 Data1
函数原型 BSTR Data1()
功能描述 获取第一个返回值数据。
参数 无
返回值 第一个返回值数据
J.8.5 Data2
函数原型 BSTR Data2()
功能描述 获取第二个返回值数据。
参数 无
返回值 第二个返回值数据

评论