CN102801705B - 一种java卡上安全域的实现方法 - Google Patents
一种java卡上安全域的实现方法 Download PDFInfo
- Publication number
- CN102801705B CN102801705B CN201210213195.9A CN201210213195A CN102801705B CN 102801705 B CN102801705 B CN 102801705B CN 201210213195 A CN201210213195 A CN 201210213195A CN 102801705 B CN102801705 B CN 102801705B
- Authority
- CN
- China
- Prior art keywords
- order
- module
- data
- error
- current safety
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种java卡上安全域的实现方法,涉及智能卡领域,该方法包括:当前安全域接收到第一命令并解析,得到应用相关信息,将第一状态设为等待接收第二命令;接收到第二命令并解析得到装载文件数据块,将装载文件数据块存储到第一存储区,验证所述第二命令是否合法,是则继续,否则报错;接收到第三命令并解析,根据解析得到的数据验证第三命令是否合法,是则调用安装方法,根据第一存储区的数据安装应用;接收到第四命令并解析,并判断第四命令是否合法,是则将第一状态设置为接收到等待接收第五命令;接收到第五命令,执行应用个人化操作。通过该方案,保证了卡片应用下载、安装及个人化过程的安全性。
Description
技术领域
本发明涉及智能卡领域,尤其涉及一种java卡上安全域的实现方法。
背景技术
随着智能卡的广泛应用,智能卡的用途、功能集成程度越来越高,卡片内应用的安全关系到持卡人的重大利益,现有技术中,一般采用卡片密钥加解密的方式实现卡片与上位机的内外部认证,认证通过即允许对卡片内应用进行管理,安全性低,持卡人的利益不能得到保障。
发明内容
为解决上述问题,根据本发明的一方面,提供了一种java卡上安全域的实现方法,包括:
S1:卡片上电,所述卡片的当前安全域开始工作;
S2:所述当前安全域等待接收上位机发送的命令,当接收到APDU命令时,检测所述APDU命令的类型,若为第一命令,则执行S3;若为第二命令,则执行S4;若为第三命令,则执行S11;若为第四命令,则执行S13;若为第五命令,则执行S14;若为其他APDU命令,则根据所述APDU命令进行操作;
S3:所述当前安全域对所述第一命令进行解析得到命令头和数据域,按照第二预设方式对所述第一命令的数据域进行解析得到装载文件标识符,装载文件所关联的安全域标识符、装载文件哈希值和装载令牌,将所述装载文件标识符,装载文件所关联的安全域标识符写入到注册表中,并将所述装载文件哈希值缓存在第一缓存区,根据所述装载文件哈希值和所述装载令牌验证所述第一命令是否合法,是则将第一状态设为等待接收第二命令,返回S2,否则直接返回S2;
S4:所述当前安全域对所述第二命令进行解析得到命令头和数据域,获取所述第二命令的第四字节上的值并判断其是否为0,是则执行S5,否则执行S7;
S5:所述当前安全域判断所述第一状态是否为等待接收第二命令,是则执行S6,否则初始化所述第一状态和第二状态,返回S2;
S6:所述当前安全域按照第一预设方式对所述第二命令的数据域进行解析并存储解析结果得到验证数据块及第一装载文件数据块,并将所述第一装载文件数据块存储于第一存储区,根据所述验证数据块验证所述第二命令是否合法,如合法则执行S9,如不合法则初始化第一状态和第二状态并清空所述第一存储区,返回S2;
S7:所述当前安全域判断所述命令的第四字节上的值与所述第二状态的值是否相符,是则执行S8,否则初始化所述第一状态和所述第二状态,返回S2;
S8:所述当前安全域按照第一预设方式对所述命令的数据域进行解析,并从解析得到的数据中获得第二装载文件数据块,并将所述第二装载文件数据块存储于所述第一存储区,顺序执行S9;
S9:所述当前安全域用所述命令的第四字节上的值更新第二状态的值,获取所述命令的第三字节上的数据,并判断所述命令的第三字节上的数据的最高位是否为1,是则执行S10,否则返回S2;
S10:所述当前安全域对所述第一存储区中的数据进行哈希算法得到验证哈希值,判断所述验证哈希值与所述第一缓存区的所述装载文件哈希值是否一致,是则初始化所述第一状态及第二状态,返回S2,否则报错,初始化第一状态及第二状态并清空第一存储区,返回S2;
S11:所述当前安全域对所述第三命令进行解析,并根据解析得到的数据验证所述第三命令是否合法,是则执行S12,否则报错,返回S2;
S12:所述当前安全域调用安装方法对所述第一存储区的装载文件数据进行安装,并在安装结束后,返回S2;
S13:所述当前安全域对所述第四命令进行解析,并根据解析结果验证所述第四命令是否合法,是则将所述第一状态设置为等待接收第五命令状态,返回S2,否则报错,返回S2;
S14:所述当前安全域验证所述第一状态是否为等待接收第五命令,是则执行S15,否则报错,返回S2;
S15:所述当前安全域执行个人化操作,执行完成后返回S2。
根据本发明的另一方面,提供了一种一种java卡上安全域的实现装置,包括:
接收模块:用于接收上位机发送的命令;
第一检测模块:用于当所述接收模块接收到APDU命令时,检测所述APDU命令的类型,若为第一命令,则第一解析模块工作;若为第二命令,则第二解析模块工作;若为第三命令,则第一解析验证模块工作;若为第四命令,则第二解析验证模块工作;若为第五命令,则验证操作模块工作;
所述第一解析模块,用于按照对所述第一命令进行解析得到命令头和数据域,按照第二预设方式对所述第一命令的数据域进行解析得到装载文件标识符、装载文件所关联的安全域标识符、装载文件哈希值和装载令牌,并将所述装载文件哈希值缓存在第一缓存区;
第一写入模块,用于将所述装载文件标识符,装载文件所关联的安全域标识符写入到注册表中;
第一验证模块,用于根据装载文件哈希值和装载令牌验证所述第一命令是否合法,是则第一设置模块工作;
所述第一设置模块,用于将第一状态设为等待接收第二命令;
所述第二解析模块,包括第一解析单元、第二解析单元和第三解析单元,所述第一解析单元用于对所述第二命令进行解析得到命令头和数据域;所述第二解析单元用于按照第一预设方式对所述第二命令的数据域进行解析得到验证数据块及第一装载文件数据块;所述第三解析单元用于按照第一预设方式对所述命令的数据域进行解析得到第二装载文件数据块;
第一判断模块,用于获取所述第二命令的命令第四字节上的值并判断其是否为预设标识,是则第二判断模块工作,否则第三判断模块工作;
所述第二判断模块,用于判断所述第一状态是否为等待接收第二命令,是则第二解析单元工作,否则初始化模块工作;
所述初始化模块,用于初始化所述第一状态和第二状态;
第二验证模块,用于根据所述验证数据块验证所述第二命令是否合法,如合法则更新模块工作,如不合法则所述初始化模块和清空模块工作;
所述清空模块用于清空所述第一存储区;
所述第三判断模块,用于判断所述命令的第四字节上的值与所述第二状态的值是否相符,是则所述第三解析单元工作,否则所述初始化模块工作;
所述更新模块,用于用所述命令的第四字节上的值更新第二状态的值;
第四判断模块,用于获取所述命令的第三字节上的数据,并判断所述命令的第三字节上的数据的最高位是否为1,是则计算判断模块工作,否则报错模块工作;
所述计算判断模块,用于对所述第一存储区中的数据进行哈希计算得到验证哈希值,判断所述验证哈希值与所述第缓存区中的装载文件哈希值是否一致,是则所述初始化模块工作,否则报错模块和清空模块工作;
所述报错模块用于报错;
所述第一解析验证模块,用于对所述第三命令进行解析,并根据所述解析得到的数据验证所述第三命令是否合法,是则安装模块工作,否则所述报错模块工作;
所述安装模块,用于调用安装方法对所述第一存储区的装载文件数据进行安装;
所述第二解析验证模块,用于对所述第四命令进行解析,并根据解析结果验证所述第四命令是否合法,是则第二设置模块工作,否则报错模块工作;
所述第二设置模块,用于将所述第一状态设置为等待接收第五命令状态;
所述验证操作模块,用于验证所述第一状态是否为等待接收第五命令,是则执行个人化操作,否则报错模块工作。
所述安全域包括主安全域和用户安全域。通过本发明方案获得的有益效果是为发卡商提供灵活的卡片管理界面;提高了对卡片应用管理的安全性。
附图说明
图1为本发明实施例1提供的一种java卡上安全域的实现方法的流程图;
图2为本发明实施例2提供的又一种java卡上安全域的实现方法流程图;
图3为本发明实施例3提供的再一种java卡上安全域的实现方法流程图;
图4为本发明实施例4提供的一种java卡安全域的实现装置。
具体实施方式
本发明中,一个用户安全域或应用的下载通过一条install for load命令及至少load命令完成,一个应用或一个用户安全域的安装通过install for install命令完成,用户安全域的个人化通过installfor personalization命令及store data命令完成,
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式做进一步的详细描述。
实施例1
S1:卡片上电,所述卡片的当前安全域开始工作;
S2:所述当前安全域等待接收上位机发送的命令,当接收到APDU命令时,检测所述APDU命令的类型,若为第一命令,则执行S3;若为第二命令,则执行S4-S10;若为第三命令,则执行S11-S12;若为第四命令,则执行S13;若为第五命令,则执行S14-S15;若为其他APDU命令,则根据所述APDU命令进行操作;
在本实施例中,所述第一命令为install for load命令,第二命令为load命令,第三命令为install for install命令,第四命令为install for personalization命令,所述第五命令为store data命令。
S3:所述当前安全域按照对所述第一命令进行解析得到命令头和数据域,按照第二预设方式对所述第一命令的数据域进行解析得到装载文件标识符,装载文件所关联的安全域标识符、装载文件哈希值和装载令牌,将所述装载文件标识符,装载文件所关联的安全域标识符写入到注册表中,根据装载文件哈希值和装载令牌验证所述第一命令是否合法,是则将第一状态设为等待接收第二命令,返回S2,否则直接返回S2;
S4:所述当前安全域对所述第二命令进行解析得到命令头和数据域,获取所述第二命令的第四字节上的值并判断其是否为0,是则执行S5,否则执行S7;
S5:所述当前安全域判断所述第一状态时是否为等待接收第二命令,是则执行S6,否则报错,并初始化所述第一状态和第二状态,返回S2;
S6:所述当前安全域按照第一预设方式对所述第二命令的数据域进行解析得到验证数据块及第一装载文件数据块,并将所述第一装载文件数据块存储于第一存储区,根据所述验证数据块验证所述第二命令是否合法,如合法则执行S9,如不合法则报错,初始化第一状态和第二状态并清空所述第一存储区,返回S2;
S7:所述当前安全域判断所述命令的第四字节上的值与所述第二状态的值是否相符,是则执行S8,否则初始化所述第一状态和所述第二状态,返回S2;
S8:所述当前安全域按照第一预设方式对所述命令的数据域进行解析,并从解析得到的数据中获得第二装载文件数据块,并将所述第二装载文件存储于所述第一存储区,顺序执行S9;
S9:所述当前安全域用所述命令的第四字节上的值更新第二状态的值,获取所述命令的第三字节上的数据,并判断所述命令的第三字节上的数据的最高位是否为1,是则执行S10,否则返回S2;
S10:所述当前安全域对所述第一存储区中的数据进行哈希算法得到验证哈希值,判断所述验证希值与所述第一缓存区的装载文件哈希值是否一致,是则初始化所述第一状态及第二状态,返回S2,否则报错,初始化第一状态及第二状态并清空第一存储区,返回S2;
S11:所述当前安全域对所述第三命令进行解析,并根据解析得到的数据验证所述第三命令是否合法,是则执行S12,否则报错,返回S2;
S12:所述当前安全域调用安装方法对所述第一存储区的装载文件数据进行安装,并在安装结束后,返回S2;
S13:所述当前安全域对所述第四命令进行解析,并根据解析结果验证所述第四命令是否合法,是则将所述第一状态设置为等待接收第五命令状态,返回S2,否则报错,返回S2;
S14:所述当前安全域验证所述第一状态是否为等待接收第五命令,是则执行S15,否则报错,返回S2;
S15:所述当前安全域执行个人化操作,执行完成后返回S2。
实施例2
本发明实施例2提供了一种java卡上安全域的实现方法,该方法以主安全域接收到install for load命令、load 命令、install forinstall命令、install for personalization命令及store data命令为例,具体处理过程如下:
步骤101:卡片上电;
步骤102:卡片的当前安全域接收到上位机发送的APDU命令,并判断命令类型;
当前安全域可以为主安全域或用户安全域;可以为卡片上电后缺省的安全域应用也可以为通过select命令选择的安全域应用,特别地,当卡片上电后缺省的应用为非安全域应用或select命令选择应用的为非安全域应用时,则该步骤前还包括通过缺省或选择的非安全域应用调用所关联的安全域得到当前安全域。优先地,在本实施例中,当前安全域以缺省的或者通过select命令选择的主安全域为例。
优选地,在本实施例中,所述卡片的当前安全域接收到上位机发送的APDU命令后还包括,对收到的命令进行解析得到命令的命令头及数据域的步骤,
根据所述APDU命令类型,执行相应步骤,若收到的APDU命令为第一命令则执行步骤103-1至步骤103-4,若为第二命令则执行步骤104-1至步骤104-6;若为第三命令则执行步骤105-1至步骤105-5,若为第四命令则执行步骤106-1至步骤106-3,若为第五命令则执行步骤107-1至步骤107-4;其他类型的命令不在本发明考虑范围内。
具体地,在本实施例中,所述第一命令为install for load(准备下载)命令,所述第二命令为load(下载)命令,所述第三命令为install for install(安装)命令,所述第四命令为install for personalization(应用个人化)命令,所述第五命令为store data(传送数据)命令。当前安全域判断命令类型具体为:若命令的高位端两个字节为“80E8”或“84E8”则命令为第二命令;若命令的高位端两个字节为“80E2”或“84E2”,则命令为第五命令;若高位端第一个字节为“80”或“84”,第二个字节为“E6”且第四个字节为“00”,则:当第三个字节低位端6个比特为二进制数“100000”时,APDU命令为第四命令;若第三字节低位端三个比特为“100”且第三第四比特位“00”时,APDU命令为第三命令;若第三字节低位端6个比特为二进制数“000010”时,命令为第一命令。
步骤103-1:卡片的当前安全域解析命令的数据域字段,得到装载文件的AID、装载文件所关联安全域的AID、装载文件hash值及装载token;
优选地,在本实施例中,卡片按解析“LV”格式数据方式,对APDU命令的数据域进行解析,其中L(长度)占一个字节,V(内容)的长度等于L(长度)所占的一个字节数据的值。所述按解析“LV”格式数据方式解析具体为,根据命令的数据域字段的第一个字节的值得到所述装载文件的AID所占的字节数,相应取第一字节之后后续字节数上的数据得到所述装载文件的AID,再根据后续一个字节数据的值,相应取之后相应字节数上的数据得到所述装载文件所关联安全域的AID,按此方式,对后续字节数据进行解析得到装载文件数据块的hash值及装载token。
步骤103-2:验证所述装载文件AID是否与卡片中存在的包或应用或应用实例的AID(应用标识符)重复,是则报错,返回步骤102,否则执行步骤103-3;
优选地,在本实施例中卡片中存在的包或应用或应用实例的AID均记录在注册表中,所述注册表中数据为TLV格式。
步骤103-3:验证所述装载文件所关联安全域的AID对应的安全域是否存在且处于个人化(personalized)状态,是则执行步骤103-4,否则报错;
优选地,在本实施例中,各个安全域对应有生命周期状态,各个安全域的生命周期状态也包含在所述注册表中,用一个字节表示,判断安全域的生命周期状态是否为个人化状态,即判断该安全域生命周期状态是否为00001111,是则为个人化状态,否则不为个人化状态。
步骤103-4:当前安全域验证所述装载token是否合法,是则将第一状态设置为准备下载状态,返回步骤102,否则报错;
主安全域验证装载token是否合法具体为:主安全域调用主安全域密钥对所述包含装载文件数据块hash值的install for load命令包含的内容进行签名计算,并验证签名结果与所述装载token是否一致,是则认为合法,否则不合法。具体地,在本实施例中,主安全域用主安全域密钥对所述命令的第三、第四字节数据和/或装载文件的AID和/或装载文件所关联安全域的AID及装载文件数据块的hash值进行签名计算得到签名结果。
优选地,在本实施例中,该步骤后还包括卡片将与所述装载文件的相关信息写入注册表中,相关信息包括所述装载文件AID及所关联安全域AID。
步骤104-1:验证当前load命令的第四字节是否为“00”,是则执行步骤104-2,否则执行步骤104-4;
优选地,在本实施例中,验证当前load命令的第四字节的值是否为0,若是,则当前load命令为第一条load命令,若不是,则当前load命令不是第一条load命令。
步骤104-2:将当前load命令的第四字节的值赋值给第二状态,并对load命令的数据域字段进行解析,得到DAP(数据验证模式,Data Authentication Pattern)块及当前load命令包含的装载文件数据块,将解析当前load命令得到的装载文件数据块存储在第一存储区;
优选地,在本实施例中,卡片对load命令的数据域字段按解析“TLV格式”数据方式进行解析,得到全部的DAP块及第一部分装载文件数据块,具体地,在本实施例中DAP的Tag(标签)为0xE2,卡片在当前load命令的数据域字段查找所有值为0xE2的字节,根据找到的字节之后指示L(长度)的字节的值,取L之后相应字节数上的数据即得到DAP块。按照上述方式查找第一部分装载文件数据块的Tag(标签)0xC4得到第一部分装载文件数据块。
在本实施例中,该步骤104-2前还包括:当前安全域验证第一状态是否为准备下载状态,是则继续,否则报错返回步骤102。
步骤104-3:调用相应的安全域分别验证相应的DAP块,若所有的DAP块均验证成功,则执行步骤104-5,否则报错,停止装载;
优选地,在本实施例中,每块DAP验证实现方法具体为:
A:卡片按照解析“TLV格式”数据方式解析DAP块,得到该DAP块所关联的安全域AID及该DAP相应的装载文件数据块签名;
其中,所关联的安全域AID的Tag为0x4F,装载文件数据块签名的Tag为0xC3。
B:根据关联安全域AID调用所关联安全域的密钥对步骤1062-1中得到的装载文件数据块的hash值做签名运算,验证得到的签名结果与该DAP相应的装载文件数据块签名是否一致,若一致则合法,否则不合法。
在本实施例中,各个DAP块所关联的安全域根据其支持的算法做签名运算,算法可以为DES或RSA算法,具体实现方式为:根据该DAP块所关联安全域的AID找到并获取该安全域的接口(FTSecurityDomain),调用该接口中的方法verifyDAP(…)来实现。
步骤104-4:获取当前load命令的第四字节 值是否与第二状态相符,是则获取当前load命令的数据域得到当前load命令包含的装载文件数据块并存储在所述第一存储区,执行步骤104-5,否则报错;
优选地,在本实施例中,验证第四字节值是否与第二状态相符即验证第四字节值是否比第二状态当前值大1,是则相符,否则不相符。
步骤104-5:用当前load命令的第四字节的值更新第二状态的值,并根据从当前load命令中解析得到的装载文件数据块计算并更新验证hash值;
优选地,在本实施例中,验证hash值为根据之前所有load命令中解析得到的装载文件数据块得到的hash值,特别地,当前load命令为最后一条load命令时,则更新后的验证hash值为接收到的整个装载文件的验证hash值。
步骤104-6:验证当前load命令第三字节的最高位是否为1,是则将所述第一状态及第二状态初始化,执行步骤104-7,否则返回步骤102;
优选地,在本实施例中,所述当前load命令的第三字节的最高比特位为1时,当前load命令为最后一条load命令,若不是1,则当前load命令不是最后一条load命令。
步骤104-7:验证验证hash值与所述装载文件数据块的hash值是否一致,是则装载成功,否则报错,返回步骤102;
优选地,在本步骤中,装载成功后,所述第一存储区中的数据即下载得到的装载文件,该装置文件的AID即步骤103-1中得到的装载文件的AID。报错后还包括清空所述第一存储区。
优选地,在本实施例中,所述验证哈希值还可以在本步骤中得到,具体为:
将步骤104-5的内容替换为步骤104-5、,相应的将步骤104-7替换为104-7、;
步骤104-5、:用当前load命令的第四字节的值更新第二状态的值;
步骤104-7、:对所述第一存储区中的数据进行哈希计算得到验证hash值,验证所述验证hash值是否与所述装载文件的hash值一致,是则装载成功,否则报错,返回步骤102;
当若所述APDU令为安装应用的命令即install for install命令,则执行步骤105-1至步骤105-5:
步骤105-1:卡片解析接收到install for install命令,得到待安装应用对应的装载文件AID、第一可执行模块AID、待安装应用AID、待安装应用的应用权限、安装参数及安装token;
优选地,在本实施例中,卡片解析所述install for install命令具体为:获取命令的数据域,对命令数据域按解析“LV格式”数据方式解析,根据数据域第一个字节的值取后续相应字节数上的数据得到所述待安装应用对应的装载文件AID,再根据后续一个字节的值取其后相应字节数上的数据得到所述第一可执行模块AID,相同方式得到所述待安装应用AID、待安装应用权限、安装参数及所述安装token。
优选地,在本实施例中,所述待安装应用的应用权限为一个字节,当表示应用权限的字节的第一比特即最高位为0时,则对应的应用为非安全域应用;最高位为1时,该应用为安全域;第一及第二比特均为1时对应的安全域支持DAP验证;第一及第二比特均为1时,该应用为具有代理权限的安全域。
步骤105-2:判断待安装应用对应的装载文件是否已下载至卡片中,否则返回错误码,停止安装,是则执行步骤105-3;
优选地,在本实施例中,判断所述待安装应用对应的装载文件是否已下载至卡片中具体为:判断所述注册表中是否存在所述待安装应用对应的装载文件AID。
步骤105-3:判断所述待安装应用对应的装载文件中是否包含所述第一可执行模块,是则继续,否则报错,停止安装;
具体地,根据所述第一可执行模块AID判断所述待安装应用对应的装载文件中是否包含所述第一可执行模块。
步骤105-4:检查所述待安装应用是否已被安装过,是则报错,否则执行步骤105-5;
具体地,在本实施例中,判断所述待安装应用是否已被安装过具体为:判断注册表中是否包含所述待安装应用AID。
步骤105-5:验证所述安装token是否合法,是则继续,否则报错,返回步骤102;
具体地,在本实施例中,主安全域调用主安全密钥对命令中的全部或部分内容进行签名计算,判断签名结果是否与所述安装token一致,是则所述安装token合法,否则不合法。优选地,在本实施例中,
步骤105-6:卡片调用所述待应用的安装方法完成应用的安装过程,并将所述待安装应用的相关信息写入所述注册表。
具体地,在本实施例中,所述待安装应用的相关信息包括该应用的AID和所述待安装应用对应的装载文件AID及所述待安装应用的应用权限。所述接收到的安装应用的命令中还可以包含选择选项,则将所述安装的应用设置于可选择状态;
优选地,所述接收到的install for install命令提供的安装参数中还可以存在将所述安装的应用设置于缺省选择应用,则将所述安装的应用设置于缺省选择状态,且卡片复位后所述设置生效。
若为install for personalization(应用个人化)命令则执行步骤106-1至步骤106-3 :
步骤106-1:对所述应用个人化命令进行解析,得到待个人化应用的AID,检查所述待个人化的应用所关联的安全域是否为当前安全域,是则执行步骤106-2,否则报错;
在本实施例中,所述待个人化的应用可以为用户安全域,用户安全域与主安全域相关联。获取所述应用个人化命令的数据域,根据其数据域的第三个字节的值取后续相应字节数上的数据得到所述待个人化应用的AID;卡片从注册表中查找所述待个人化的应用所关联的安全域。
步骤106-2:卡片检查所述待个人化的应用是否为个人化状态,是则返回错误码,停止执行,否则执行步骤106-3;
优选地,在本实施例中,应用被下载时初始的生命周期状态为可选择状态,具体地,在本实施例中,应用的生命周期状态为二进制00000111时为可选择状态,为00001111时为个人化状态,验证待个人化的应用是否已被个人化即验证该用户安全域的生命周期状态的值是否为00001111。
步骤106-3:卡片检查所述待个人化的应用是否被锁定,是则报错,否则将第一状态设置为等待接收store data命令状态,返回步骤102;
判断所述待个人化的应用是否被锁定即判断所述待个人化应用的生命周期状态的最高位及最低两位是否均为0,是则被锁定,否则不是被锁定。
当若接收到的APDU命令为store data命令,则执行步骤107-1至步骤107-3:
步骤107-1:卡片判断第一状态是否为等待接受store data命令状态,是则执行步骤107-2,否则返回错误码,停止执行;
步骤107-2:根据所述待个人化应用的AID调用该应用,执行进程数据方法,完成应用个人化。
在本实施例中,卡片执行接口Application中的进程数据方法processdata(),传入所述进程数据方法中的参数,包括个人化数据,如密钥及持卡人信息,以所述待安装的应用为用户安全域为例,传入所述进程数据方法中的参数包括:是否支持DES形式的DAP验证;用于DAP验证的DES密钥信息(即密钥版本号及密钥索引);是否支持RSA形式的DAP验证;用于DAP验证的RSA密钥信息(即密钥版本号及密钥索引);用户根据自身需求传入的参数,如持卡者信息。
实施例3
本发明实施例3提供了又一种java卡上安全域的实现方法,该方法以用户安全域接收到install for load命令、load 命令、install forinstall命令、install for personalization命令及store data命令为例,方法具体如下:
步骤201:卡片上电;
步骤202:卡片中的当前安全域接收到上位机发送的APDU命令,判断命令类型,若命令类型为预设类型命令则执行步骤204-206,否则执行步骤203;
优选地,所述当前安全域为用户安全域,在该步骤之前还可以包括:所述卡片接收到上位机发送的select命令选择所述用户安全域为当前安全域的步骤。在本实施例中所述预设类型命令包括install forload命令、及install for install命令。
优选地,在本实施例中,以接收到APDU命令的当前安全域为用户安全域为例。
步骤203:用户安全域处理接收到的命令,并在处理结束后返回步骤202;
特别地,在本实施例中,当所述命令为install for personalization(应用个人化)命令时,本步骤具体为:
当前用户安全域验证待个人化的应用是否与当前用户安全域相关联,是则调用待个人化应用,执行数据进程方法,完成个人化,则继续,否则报错;
步骤204:卡片判断当前安全域是否有代理权限,是则执行步骤205,否则报错,返回步骤202;
在本实施例中,判断当前安全域是否被主安全域授予了代理权限具体为:判断该用户安全域的应用权限第一个及第三个比特是否均为1,是则被授予了代理权限,否则没有代理权限;
步骤205:当前安全域调用主安全域,当前安全域切换为主安全域;
优选地,在本实施例中,用户安全域在安装到卡片的过程中时,关联了主安全域,当前安全域为用户安全域,通过执行FTDelegatedService.delegatedManageService(APDU apdu)方法,调用主安全域,同时当前安全域切换为主安全域。
步骤206:当前安全域处理预设类型的APUD命令,并在处理结束后返回步骤202;
主安全域处理装载命令过程同实施例1所述,在此不再赘述。优选地,在本实施例中,主安全域装载或删除命令成功执行之后还包括生成收条返回给上位机的步骤。
卡片中非安全域应用均在安装时建立了相关联的安全域,因此当当前安全域为非安全域应用时,则当前安全域通过接口GPSystem.getSecureChannel()调用相关联的安全域,若相关联的安全域为主安全域,则当前安全域接收到相关命令时调用主安全域来处理,具体参见本发明实施例1,若相关联的安全域为用户安全域,则当前安全域调用用户安全域来处理接收到的APDU命令,具体参见实施例2中步骤。
实施例4
参见图4,本发明实施例4提供了一种java卡上安全域的实现装置,包括:
接收模块3001:用于接收上位机发送的命令;
第一检测模块3002:用于当所述接收模块3001接收到APDU命令时,检测所述APDU命令的类型,若为第一命令,则第一解析模块3003工作;若为第二命令,则第二解析模块3004工作;若为第三命令,则第一解析验证模块3005工作;若为第四命令,则第二解析验证模块3006工作;若为第五命令,则验证操作模块3007工作;
所述第一解析模块3003,用于按照对所述第一命令进行解析得到命令头和数据域,按照第二预设方式对所述第一命令的数据域进行解析得到装载文件标识符、装载文件所关联的安全域标识符、装载文件哈希值和装载令牌;
第一写入模块3008,用于将所述装载文件标识符,装载文件所关联的安全域标识符写入到注册表中;
第一验证模块3009,用于根据装载文件哈希值和装载令牌验证所述第一命令是否合法,是则第一设置模块3010工作;
所述第一设置模块3010,用于将第一状态设为等待接收第二命令;
所述第二解析模块3004,包括第一解析单元30041、第二解析单元30042和第三解析单元30043,所述第一解析单元30041用于对所述第二命令进行解析得到命令头和数据域;所述第二解析单元30042用于按照第一预设方式对所述第二命令的数据域进行解析并存储解析结果得到验证数据块及第一装载文件数据块;所述第三解析单元30043用于按照第一预设方式对所述命令的数据域进行解析得到第二装载文件数据块;
第一判断模块3011,用于获取所述第二命令的第四字节上的值并判断其是否为预设标识,是第二判断模块工作3012,否则第三判断模块3013工作;
所述第二判断模块3012,用于判断所述第一状态时是否为等待接收第二命令,是则第二解析单元30042工作,否则初始化模块3014工作;
所述初始化模块3014,用于初始化所述第一状态和第二状态;
第二验证模块3015,用于根据所述验证数据块验证所述第二命令是否合法,如合法则更新模块3017工作,如不合法则所述初始化模块3014和清空模块3016工作;
所述清空模块3016用于清空所述第一存储区;
所述第三判断模块3013,用于判断所述命令的第四字节上的值与所述第二状态的值是否相符,是则所述第三解析单元工作30043,否则所述初始化模块3014工作;
所述更新模块3017,用于用所述命令的第四字节上的值更新第二状态的值;
第四判断模块3018,用于获取所述命令的第三字节上的数据,并判断所述命令的第三字节上的数据的最高位是否为1,是则计算判断模块30119工作;
所述计算判断模块3019,用于对所述第一存储区中的数据进行哈希计算得到验证哈希值,判断所述验证哈希值与所述装载文件哈希值是否一致,是则所述初始化模块3014工作,否则报错模块3020和所述清空模块30116工作;
所述报错模块3020用于报错;
所述第一解析验证模块3005,用于对所述第三命令进行解析,并根据所述解析得到的数据验证所述第三命令是否合法,是则安装模块3021工作,否则所述报错模块3020工作;
所述安装模块3021,用于调用安装方法对所述第一存储区的装载文件数据进行安装;
所述第二解析验证3006模块,用于对所述第四命令进行解析,并根据解析结果验证所述第四命令是否合法,是则第二设置模块3022工作,否则所述报错模块3020工作;
所述第二设置模块3022,用于将所述第一状态设置为等待接收第五命令状态;
所述验证操作模块3007,用于验证所述第一状态是否为等待接收第五命令,是则执行个人化操作,否则所述报错模块3020工作。
所述第一检测模块3002,具体用于检测所述APDU命令的高位端字节数据,若高位端两个字节为80E8或84E8,则所述APDU命令为第二命令;若高位端两个字节为80E2或84E2,则所述APDU命令为第五命令;若高位端两个字节为80E6或84E6,且第四个字节为00,则当第三个字节低位端六个比特位的数据为100000,所述APDU命令为第四命令;当第三字节的第三第四比特位的数据为00且第六第七第八比特位的数据为100时,APDU命令为第三命令;若第三字节低位端六个比特位的数据为000010时,所述APDU命令为令第一命令。
所述第一验证模块3009具体包括:
第一判断单元30091,用于判断所述装载文件标识符是否与所述卡片中存在的包或应用或应用实例的应用标识符重复,是则所述报错模块3020工作,否则第二判断单元工作30092;
所述第二判断单元30092,用于判断是否存在与所述装载文件所关联的安全域标识符对应的安全域,如存在则第三判断单元30093工作,否则所述报错模块3020工作;
第三判断单元30093,用于判断所述对应的安全域是否处于个人化状态,是则验证单元30094工作,否则所述报错模块3020工作;
所述验证单元30094,用于根据装载文件哈希值和装载令牌验证所述第一命令是否合法,是则所述第一设置模块3010工作,否则报错模块3020工作。
所述验证单元30094具体用于根据所述装载文件所关联安全域标识符获取主安全域密钥,使用所述主安全域密钥对预定数据进行签名计算,并判断签名结果是否与所述装载令牌中的签名值一致。
所述预定数据包括:所述第一命令的第三、第四字节数据和/或装载文件标识符和/或装载文件所关联的安全域标识符及装载文件哈希值。
所述第二验证模块3015具体包括:
第四解析单元30151,用于按照所述第一预设方式对所述验证数据块进行解析得到验证数据块所关联的安全域标识符和对应的装载文件数据块签名值;
签名单元30152,用于根据所述验证数据块所关联的安全域标识符获取安全域密钥,并使用所述安全域密钥对所述第一命令中解析得到的装载文件数据块签名值进行签名;
第四判断单元30153,用于判断所述签名单元30152中的签名结果是否与所述装载文件数据块签名值一致,是则所述第二命令合法,否则所述第二命令不合法。
所述第一解析验证模块3005具体包括:
第五解析单元30051,用于对所述第三命令进行解析得到命令头和数据域,按照所述第二预设方式对所述第三命令的数据域进行解析得到待安装应用对应的装载文件标识符、第一可执行模块标识符、待安装应用标识符、待安装应用的权限、安装参数和安装令牌;
第五判断单元30052,用于判断卡片中是否存在与所述待安装应用对应的装载文件标识符对应的装载文件,是则第六判断单元30053工作,否则报所述错模块工作;
所述第五判断单元30052具体用于判断所述注册表中是否存所述待安装应用对应的装载文件标识符。
所述第六判断单元30053,用于判断所述卡片中的装载文件中是否包含有与所述第一可执行模块标识符对应的模块,是则第七判断单元30054工作,否则所述报错模块3020工作;
所述第七判断单元30054,用于根据所述待安装应用标识符判断对应的待安装应用是否已被安装过,是则所述报错模块3020工作,否则所述安装模块3021工作;
所述第七判断单元30054具体用于判断所述注册表中是否存在所述待安装应用标识符,是则待安装应用已被安装,否则未被安装。
所述安装模块3021具体用于根据待安装应用的权限、安装参数和安装令牌调用相应的安装方法,对所述第一存储区的装载文件数据进行安装,并将安装信息写入所述注册表。
所述第二解析验证模块3006具体包括:
第六解析单元30061,用于对所述第四命令进行解析得到命令头和数据域,对所述第四命令的数据域进行解析得到待个人化应用标识符;
第八判断单元30062,用于判断所述待个人化应用标识符所关联的安全域是否为当前安全域,是则第九判断单元30063工作,否则所述初始化模块3014和报错模块3020工作;
所述第九判断单元30063,用于判断与所述待个人化应用标识符对应的待个人化应用是否为个人化状态,是则所述报错模块3020工作,否则检测单元30064工作;
检查单元30064,用于检查所述待个人化的应用是否被锁定,是则所述报错模块3022工作,否则所述第二设置模块工作。
所述检查单元30064具体用于判断所述待个人化应用的生命周期状态值的最高位及最低位是否均为0,是则被锁定,否则未被锁定。
所述第八判断单元30062具体包括:
查找子单元300621,用于从注册表中查找所述待个人化应用标识符所关联的安全域,如找到则判断子单元300622工作或所述第九判断单元30063工作,如未找到则所述初始化模块3014和报错模块3020工作;
所述判断子单元300622,用于判断所属找到的安全域是否为当前安全域,是则所述第九判断单元30063工作,否则所述初始化模块3014和报错模块3022工作。
所述第九判断单元30063具体用于判断所述所关联的安全域的生命周期状态的值是否为00001111,是则所述报错模块3022工作,否则所述检查单元30064工作。
所述接收模块3001包括第一接收单元30011和第二接收单元30012,所述装置还包括第二检测模块3023、第三检测模块3024、第五判断模块3025、操作处理模块3026、调用模块3027;
所述第二检测模块3023用于检测当前安全域的类型,如为主安全域则所述第一接收单元30011工作,如为用户安全域,则所述第二接收单元30012工作;
所述第一接收单元30011和第二接收单元30012均用于接收上位机发送的命令;
所述第二检测模块3023用于检测所述第一接收单元3011接收到的APDU命令;
所述第三检测模块3024用于检测所述第二接收单元30012接收到的APDU命令的类型,若为预设类型命令则第一检测模块3002开始工作,否则所述操作处理模块3026工作;
所述操作处理模块3026用于根据接收到的命令进行操作;
所述第五判断模块3025用于判断自身是否被主安全域授予了代理权限,是则所述调用模块工作,否则所述报错模块3020工作;
所述第五判断模块3025具体用于判断自身应用权限的第一比特位和第三个比特位的值是否均为1,是则被授予了代理权限,否则未被授予代理权限。
所述调用模块3027用于调用主安全域,所述主安全域处理预设类型的APUD命令。
Claims (35)
1.一种java卡上安全域的实现方法,其特征在于,包括:
S1:卡片上电,所述卡片的当前安全域开始工作;
S2:所述当前安全域等待接收上位机发送的命令,当接收到APDU命令时,检测所述APDU命令的类型,若为第一命令,则执行S3;若为第二命令,则执行S4;若为第三命令,则执行S11;若为第四命令,则执行S13;若为第五命令,则执行S14;若为其他APDU命令,则根据所述APDU命令进行操作;
S3:所述当前安全域对所述第一命令进行解析得到命令头和数据域,按照第二预设方式对所述第一命令的数据域进行解析得到装载文件标识符,装载文件所关联的安全域标识符、装载文件哈希值和装载令牌,将所述装载文件标识符,装载文件所关联的安全域标识符写入到注册表中,并将所述装载文件哈希值缓存在第一缓存区,根据所述装载文件哈希值和所述装载令牌验证所述第一命令是否合法,是则将第一状态设为等待接收第二命令,返回S2,否则直接返回S2;
S4:所述当前安全域对所述第二命令进行解析得到命令头和数据域,获取所述第二命令的第四字节上的值并判断其是否为0,是则执行S5,否则执行S7;
S5:所述当前安全域判断所述第一状态是否为等待接收第二命令,是则执行S6,否则初始化所述第一状态和第二状态,返回S2;
S6:所述当前安全域按照第一预设方式对所述第二命令的数据域进行解析并存储解析结果得到验证数据块及第一装载文件数据块,并将所述第一装载文件数据块存储于第一存储区,根据所述验证数据块验证所述第二命令是否合法,如合法则执行S9,如不合法则初始化第一状态和第二状态并清空所述第一存储区,返回S2;
S7:所述当前安全域判断所述命令的第四字节上的值与所述第二状态的值是否相符,是则执行S8,否则初始化所述第一状态和所述第二状态,返回S2;
S8:所述当前安全域按照第一预设方式对所述命令的数据域进行解析,并从解析得到的数据中获得第二装载文件数据块,并将所述第二装载文件数据块存储于所述第一存储区,顺序执行S9;
S9:所述当前安全域用所述命令的第四字节上的值更新第二状态的值,获取所述命令的第三字节上的数据,并判断所述命令的第三字节上的数据的最高位是否为1,是则执行S10,否则返回S2;
S10:所述当前安全域对所述第一存储区中的数据进行哈希算法得到验证哈希值,判断所述验证哈希值与所述第一缓存区的所述装载文件哈希值是否一致,是则初始化所述第一状态及第二状态,返回S2,否则报错,初始化第一状态及第二状态并清空第一存储区,返回S2;
S11:所述当前安全域对所述第三命令进行解析,并根据解析得到的数据验证所述第三命令是否合法,是则执行S12,否则报错,返回S2;
S12:所述当前安全域调用安装方法对所述第一存储区的装载文件数据进行安装,并在安装结束后,返回S2;
S13:所述当前安全域对所述第四命令进行解析,并根据解析结果验证所述第四命令是否合法,是则将所述第一状态设置为等待接收第五命令状态,返回S2,否则报错,返回S2;
S14:所述当前安全域验证所述第一状态是否为等待接收第五命令,是则执行S15,否则报错,返回S2;
S15:所述当前安全域执行个人化操作,执行完成后返回S2。
2.如权利要求1所述的方法,其特征在于,所述检测所述APDU命令的类型,具体包括:
所述当前安全域检测所述APDU命令的高位端字节数据,若高位端两个字节为80E8或84E8,则所述APDU命令为第二命令;若高位端两个字节为80E2或84E2,则所述APDU命令为第五命令;若高位端两个字节为80E6或84E6,且第四个字节为00,则当第三个字节低位端六个比特位的数据为100000,所述APDU命令为第四命令;当第三字节的第三第四比特位的数据为00且第六第七第八比特位的数据为100时,APDU命令为第三命令;若第三字节低位端六个比特位的数据为000010时,所述APDU命令为第一命令。
3.如权利要求1所述的方法,其特征在于,所述S3具体包括:
S31:所述当前安全域对所述第一命令进行解析得到命令头和数据域,按照第二预设方式对所述第一命令的数据域进行解析得到所述装载文件标识符、装载文件所关联的安全域标识符、装载文件哈希值及装载令牌,将所述装载文件标识符,装载文件所关联的安全域标识符写入到注册表中;
S32:所述当前安全域判断所述装载文件标识符是否与所述卡片中存在的包或应用或应用实例的应用标识符重复,是则报错,返回S2,否则执行S33;
S33:所述当前安全域判断是否存在与所述装载文件所关联的安全域标识符对应的安全域,如存在则判断所述对应的安全域是否处于个人化状态,是则执行S34,否则报错,返回S2;如不存在则报错,返回S2;
S34:所述当前安全域根据装载文件哈希值和装载令牌验证所述第一命令是否合法,是则将第一状态设为等待接收第二命令,返回S2,否则报错,返回S2。
4.如权利要求3所述的方法,其特征在于,所述S33中判断所述对应的安全域是否处于个人化状态,具体包括:
所述当前安全域判断所述对应的安全域的生命周期状态的值是否为00001111,是则为处于个人化状态,执行S34,否则报错,返回S2。
5.如权利要求3所述的方法,其特征在于,所述S34具体包括:
所述当前安全域根据所述装载文件所关联安全域标识符获取主安全域密钥,使用所述主安全域密钥对预定数据进行签名计算,并判断签名结果是否与所述装载令牌一致,是则所述第一命令合法,否则所述第一命令不合法。
6.如权利要求5所述的方法,其特征在于,所述预定数据包括:所述第一命令的第三、第四字节数据和/或装载文件标识符和/或装载文件所关联的安全域标识符及装载文件哈希值。
7.如权利要求1所述的方法,其特征在于,所述S6中的根据所述验证数据块验证所述第二命令是否合法,具体包括:
S61:所述当前安全域按照所述第一预设方式对所述验证数据块进行解析得到验证数据块所关联的安全域标识符和对应的装载文件数据块签名值;
S62:所述当前安全域根据所述验证数据块所关联的安全域标识符获取安全域密钥,并使用所述安全域密钥对所述第一命令中解析得到的装载文件数据块签名值进行签名,判断签名结果是否与所述装载文件数据块签名值一致,是则所述第二命令合法,否则所述第二命令不合法。
8.如权利要求7所述的方法,其特征在于,所述S7具体包括:
所述当前安全域判断所述命令的第四字节上的值是否比所述第二状态的值大1,是则执行S8,否则初始化所述第一状态和所述第二状态,返回S2。
9.如权利要求1所述的方法,其特征在于,所述S11具体包括:
S111:所述当前安全域对所述第三命令进行解析得到命令头和数据域,按照所述第二预设方式对所述第三命令的数据域进行解析得到待安装应用对应的装载文件标识符、第一可执行模块标识符、待安装应用标识符、待安装应用的权限、安装参数和安装令牌;
S112:所述当前安全域判断卡片中是否存在与所述待安装应用对应的装载文件标识符对应的装载文件,是则执行S113,否则报错,返回S2;
S113:所述当前安全域判断所述卡片中的装载文件中是否包含有与所述第一可执行模块标识符对应的模块,是则执行S114,否则报错,返回S2;
S114:所述当前安全域根据所述待安装应用标识符判断对应的待安装应用是否已被安装过,是则报错,返回S2,否则执行S115;
S115:所述当前安全域根据待安装应用的权限、安装参数和安装令牌调用相应的安装方法,对所述第一存储区的装载文件数据进行安装,并将安装信息写入卡片中的注册表。
10.如权利要求9所述的方法,其特征在于,所述S112包括:
所述当前安全域判断所述注册表中是否存所述待安装应用对应的装载文件标识符,是则执行S113,否则报错,返回S2。
11.如权利要求9所述的方法,其特征在于,所述S114包括:
所述当前安全域判断所述注册表中是否存在所述待安装应用标识符,是则待安装应用已被安装,否则未被安装。
12.如权利要求9所述的方法,其特征在于,所述安装信息包括待安装应用标识符和所述待安装应用对应的装载文件标识符。
13.如权利要求1所述的方法,其特征在于,所述S13包括:
S131:所述当前安全域对所述第四命令进行解析得到命令头和数据域,对所述第四命令的数据域进行解析得到待个人化应用标识符,判断所述待个人化应用标识符所关联的安全域是否为当前安全域,是则执行S132,否则初始化第一状态,报错并返回S2;
S132:所述当前安全域判断与所述待个人化应用标识符对应的待个人化应用是否为个人化状态,是则报错,返回S2,否则执行S133;
S133:所述当前安全域卡片检查所述待个人化应用是否被锁定,报错,返回S2,否则将所述第一状态设置为等待接收第五命令状态,返回S2。
14.如权利要求13所述的方法,其特征在于,所述S131具体包括:
所述当前安全域对所述第四命令进行解析得到命令头和数据域;
所述当前安全域根据所述数据域的第三字节上的数据获取后续相应字节上的数据得到所述待个人化应用标识符;
所述当前安全域从注册表中查找所述待个人化应用标识符所关联的安全域,如找到则继续,如未找到则初始化第一状态,报错并返回S2;
所述当前安全域判断所属找到的安全域是否为当前安全域,是则执行S132,否则初始化第一状态,报错并返回S2。
15.如权利要求14所述的方法,其特征在于,所述S132具体包括:
所述当前安全域判断所述所关联的安全域的生命周期状态的值是否为00001111,是则报错,返回S2,否则执行S133。
16.如权利要求15所述的方法,其特征在于,所述S133具体包括:
所述当前安全域判断所述待个人化应用的生命周期状态值的最高位及最低位是否均为0,是则被锁定,否则未被锁定。
17.如权利要求1所述的方法,其特征在于,当前安全域包括用户安全域和主安全域,S1和S2之间还包括:检测当前安全域的类型,如为主安全域则执行S2,如为用户安全域,则执行S16;
S16:用户安全域等待接收上位机发送的命令,当接收到APDU命令时,检测所述APDU命令的类型,若为预设类型命令则执行S18,否则执行S17;
S17:所述用户安全域根据接收到的命令进行操作,并在操作结束后返回S15;
S18:所述用户安全域判断自身是否被主安全域授予了代理权限,是则执行S19,否则报错,返回S16;
S19:所述用户安全域调用主安全域,所述主安全域处理预设类型的APUD命令。
18.如权利要求17所述的方法,其特征在于,所述S17具体包括:
所述用户安全域判断自身应用权限的第一比特位和第三个比特位的值是否均为1,是则被授予了代理权限,否则未被授予代理权限。
19.一种java卡上安全域的实现装置,其特征在于,包括:
接收模块:用于接收上位机发送的命令;
第一检测模块:用于当所述接收模块接收到APDU命令时,检测所述APDU命令的类型,若为第一命令,则第一解析模块工作;若为第二命令,则第二解析模块工作;若为第三命令,则第一解析验证模块工作;若为第四命令,则第二解析验证模块工作;若为第五命令,则验证操作模块工作;
所述第一解析模块,用于按照对所述第一命令进行解析得到命令头和数据域,按照第二预设方式对所述第一命令的数据域进行解析得到装载文件标识符、装载文件所关联的安全域标识符、装载文件哈希值和装载令牌,并将所述装载文件哈希值缓存在第一缓存区;
第一写入模块,用于将所述装载文件标识符,装载文件所关联的安全域标识符写入到注册表中;
第一验证模块,用于根据装载文件哈希值和装载令牌验证所述第一命令是否合法,是则第一设置模块工作;
所述第一设置模块,用于将第一状态设为等待接收第二命令;
所述第二解析模块,包括第一解析单元、第二解析单元和第三解析单元,所述第一解析单元用于对所述第二命令进行解析得到命令头和数据域;所述第二解析单元用于按照第一预设方式对所述第二命令的数据域进行解析得到验证数据块及第一装载文件数据块;所述第三解析单元用于按照第一预设方式对所述命令的数据域进行解析得到第二装载文件数据块;
第一判断模块,用于获取所述第二命令的命令第四字节上的值并判断其是否为预设标识,是则第二判断模块工作,否则第三判断模块工作;
所述第二判断模块,用于判断所述第一状态是否为等待接收第二命令,是则第二解析单元工作,否则初始化模块工作;
所述初始化模块,用于初始化所述第一状态和第二状态;
第二验证模块,用于根据所述验证数据块验证所述第二命令是否合法,如合法则更新模块工作,如不合法则所述初始化模块和清空模块工作;
所述清空模块用于清空第一存储区;
所述第三判断模块,用于判断所述命令的第四字节上的值与所述第二状态的值是否相符,是则所述第三解析单元工作,否则所述初始化模块工作;
所述更新模块,用于用所述命令的第四字节上的值更新第二状态的值;
第四判断模块,用于获取所述命令的第三字节上的数据,并判断所述命令的第三字节上的数据的最高位是否为1,是则计算判断模块工作,否则报错模块工作;
所述计算判断模块,用于对所述第一存储区中的数据进行哈希计算得到验证哈希值,判断所述验证哈希值与所述第一缓存区中的装载文件哈希值是否一致,是则所述初始化模块工作,否则报错模块和清空模块工作;
所述报错模块用于报错;
所述第一解析验证模块,用于对所述第三命令进行解析,并根据所述解析得到的数据验证所述第三命令是否合法,是则安装模块工作,否则所述报错模块工作;
所述安装模块,用于调用安装方法对所述第一存储区的装载文件数据进行安装;
所述第二解析验证模块,用于对所述第四命令进行解析,并根据解析结果验证所述第四命令是否合法,是则第二设置模块工作,否则报错模块工作;
所述第二设置模块,用于将所述第一状态设置为等待接收第五命令状态;
所述验证操作模块,用于验证所述第一状态是否为等待接收第五命令,是则执行个人化操作,否则报错模块工作。
20.如权利要求19所述的装置,其特征在于,所述第一检测模块,具体用于检测所述APDU命令的高位端字节数据,若高位端两个字节为80E8或84E8,则所述APDU命令为第二命令;若高位端两个字节为80E2或84E2,则所述APDU命令为第五命令;若高位端两个字节为80E6或84E6,且第四个字节为00,则当第三个字节低位端六个比特位的数据为100000,所述APDU命令为第四命令;当第三字节的第三第四比特位的数据为00且第六第七第八比特位的数据为100时,APDU命令为第三命令;若第三字节低位端六个比特位的数据为000010时,所述APDU命令为第一命令。
21.如权利要求19所述的装置,其特征在于,所述第一验证模块具体包括:
第一判断单元,用于判断所述装载文件标识符是否与所述卡片中存在的包或应用或应用实例的应用标识符重复,是则所述报错模块工作,否则第二判断单元工作;
所述第二判断单元,用于判断是否存在与所述装载文件所关联的安全域标识符对应的安全域,如存在则第三判断单元工作,否则所述报错模块工作;
所述第三判断单元,用于判断所述对应的安全域是否处于个人化状态,是则验证单元工作,否则所述报错模块工作;
所述验证单元,用于根据装载文件哈希值和装载令牌验证所述第一命令是否合法,是则所述第一设置模块工作,否则报错模块工作。
22.如权利要求21所述的装置,其特征在于,所述第三判断单元具体用于判断所述对应的安全域的生命周期状态的值是否为00001111。
23.如权利要求21所述的装置,其特征在于,所述验证单元具体用于根据所述装载文件所关联安全域标识符获取主安全域密钥,使用所述主安全域密钥对预定数据进行签名计算,并判断签名结果是否与所述装载令牌中的签名值一致。
24.如权利要求23所述的装置,其特征在于,所述预定数据包括:所述第一命令的第三、第四字节数据和/或装载文件标识符和/或装载文件所关联的安全域标识符及装载文件哈希值。
25.如权利要求19所述的装置,其特征在于,所述第二验证模块具体包括:
第四解析单元,用于按照所述第一预设方式对所述验证数据块进行解析得到验证数据块所关联的安全域标识符和对应的装载文件数据块签名值;
签名单元,用于根据所述验证数据块所关联的安全域标识符获取安全域密钥,并使用所述安全域密钥对所述第一命令中解析得到的装载文件数据块签名值进行签名;
第四判断单元,用于判断所述签名单元中的签名结果是否与所述装载文件数据块签名值一致,是则所述第二命令合法,否则所述第二命令不合法。
26.如权利要求25所述的装置,其特征在于,所述第三判断模块具体用于判断所述第二命令的第四字节上的值是否比所述第二状态的值大1。
27.如权利要求19所述的装置,其特征在于,所述第一解析验证模块具体包括:
第五解析单元,用于对所述第三命令进行解析得到命令头和数据域,按照所述第二预设方式对所述第三命令的数据域进行解析得到待安装应用对应的装载文件标识符、第一可执行模块标识符、待安装应用标识符、待安装应用的权限、安装参数和安装令牌;
第五判断单元,用于判断卡片中是否存在与所述待安装应用对应的装载文件标识符对应的装载文件,是则第六判断单元工作,否则报所述错模块工作;
所述第六判断单元,用于判断所述卡片中的装载文件中是否包含有与所述第一可执行模块标识符对应的模块,是则第七判断单元工作,否则所述报错模块工作;
所述第七判断单元,用于根据所述待安装应用标识符判断对应的待安装应用是否已被安装过,是则所述报错模块工作,否则所述安装模块工作;
所述安装模块具体用于根据待安装应用的权限、安装参数和安装令牌调用相应的安装方法,对所述第一存储区的装载文件数据进行安装,并将安装信息写入所述注册表。
28.如权利要求27所述的装置,其特征在于,所述第五判断单元具体用于判断所述注册表中是否存所述待安装应用对应的装载文件标识符。
29.如权利要求28所述的装置,其特征在于,所述第七判断单元具体用于判断所述注册表中是否存在所述待安装应用标识符,是则待安装应用已被安装,否则未被安装。
30.如权利要求19所述的装置,其特征在于,所述第二解析验证模块具体包括:
第六解析单元,用于对所述第四命令进行解析得到命令头和数据域,对所述第四命令的数据域进行解析得到待个人化应用标识符;
第八判断单元,用于判断所述待个人化应用标识符所关联的安全域是否为当前安全域,是则第九判断单元工作,否则所述初始化模块和报错模块工作;
所述第九判断单元,用于判断与所述待个人化应用标识符对应的待个人化应用是否为个人化状态,是则所述报错模块工作,否则执行S133;
检查单元,用于检查所述待个人化应用是否被锁定,是则所述报错模块工作,否则所述第二设置模块工作。
31.如权利要求30所述的装置,其特征在于,所述第八判断单元具体包括:
查找子单元,用于从注册表中查找所述待个人化应用标识符所关联的安全域,如找到则判断子单元工作或所述第九判断单元工作,如未找到则所述初始化模块和报错模块工作;
所述判断子单元,用于判断所属找到的安全域是否为当前安全域,是则所述第九判断单元工作,否则所述初始化模块和报错模块工作。
32.如权利要求31所述的装置,其特征在于,所述第九判断单元具体用于判断所述所关联的安全域的生命周期状态的值是否为00001111,是则所述报错模块工作,否则所述检查单元工作。
33.如权利要求32所述的装置,其特征在于,所述检查单元具体用于判断所述待个人化应用的生命周期状态值的最高位及最低位是否均为0,是则被锁定,否则未被锁定。
34.如权利要求19所述的装置,其特征在于,所述接收模块包括第一接收单元和第二接收单元,所述装置还包括第二检测模块、第三检测模块、第五判断模块、操作处理模块、调用模块;
所述第二检测模块用于检测当前安全域的类型,如为主安全域则所述第一接收单元工作,如为用户安全域,则所述第二接收单元工作;
所述第一接收单元和第二接收单元均用于接收上位机发送的命令;
所述第二检测模块用于检测所述第一接收单元接收到的APDU命令;
所述第三检测模块用于检测所述第二接收单元接收到的APDU命令的类型,若为预设类型命令则执行S18,否则所述操作处理模块工作;
所述操作处理模块用于根据接收到的命令进行相应操作;
所述第五判断模块用于判断自身是否被主安全域授予了代理权限,是则所述调用模块工作,否则所述报错模块工作;
所述调用模块用于调用主安全域,所述主安全域处理预设类型的APUD命令。
35.如权利要求34所述的装置,其特征在于,所述第五判断模块具体用于判断自身应用权限的第一比特位和第三个比特位的值是否均为1,是则被授予了代理权限,否则未被授予代理权限。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210213195.9A CN102801705B (zh) | 2012-06-25 | 2012-06-25 | 一种java卡上安全域的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210213195.9A CN102801705B (zh) | 2012-06-25 | 2012-06-25 | 一种java卡上安全域的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102801705A CN102801705A (zh) | 2012-11-28 |
CN102801705B true CN102801705B (zh) | 2014-12-10 |
Family
ID=47200668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210213195.9A Active CN102801705B (zh) | 2012-06-25 | 2012-06-25 | 一种java卡上安全域的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102801705B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103095460B (zh) | 2013-01-22 | 2015-07-22 | 飞天诚信科技股份有限公司 | 一种智能卡安全通讯的方法 |
WO2014173298A1 (zh) * | 2013-04-25 | 2014-10-30 | 飞天诚信科技股份有限公司 | 一种管理卡片上应用的方法 |
CN103729179B (zh) * | 2013-12-25 | 2017-02-15 | 飞天诚信科技股份有限公司 | 安全执行委托管理命令的方法 |
CN104092546B (zh) * | 2014-06-30 | 2017-07-14 | 飞天诚信科技股份有限公司 | 智能卡上安全域的生成方法 |
CN105320686A (zh) * | 2014-07-29 | 2016-02-10 | 苏州融卡智能科技有限公司 | 一种优化java卡选择实例的方法 |
CN104331657B (zh) * | 2014-09-29 | 2017-03-22 | 飞天诚信科技股份有限公司 | 一种支持数据签名的java卡实现方法 |
CN107451498B (zh) * | 2016-06-01 | 2020-06-09 | 北京数码视讯科技股份有限公司 | 一种对象间关联关系的提供方法、装置及智能卡 |
CN106228090B (zh) * | 2016-07-28 | 2019-02-05 | 飞天诚信科技股份有限公司 | 一种多主安全域Java智能卡及其实现方法 |
CN106789074B (zh) * | 2016-12-27 | 2020-08-25 | 广州智慧城市发展研究院 | 一种Java卡的应用身份验证方法及验证系统 |
CN109462584A (zh) * | 2018-10-31 | 2019-03-12 | 哈尔滨电工仪表研究所有限公司 | Dl/t 698.45协议中记录型数据的解析方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012804A (zh) * | 2010-11-30 | 2011-04-13 | 公安部第三研究所 | 一种智能卡cos指令扩展方法 |
CN102012978A (zh) * | 2010-06-29 | 2011-04-13 | 北京飞天诚信科技有限公司 | Iso文件安全升级的方法及系统 |
WO2012078570A2 (en) * | 2010-12-06 | 2012-06-14 | Interdigital Patent Holdings, Inc. | Smart card with domain-trust evaluation and domain policy management functions |
-
2012
- 2012-06-25 CN CN201210213195.9A patent/CN102801705B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012978A (zh) * | 2010-06-29 | 2011-04-13 | 北京飞天诚信科技有限公司 | Iso文件安全升级的方法及系统 |
CN102012804A (zh) * | 2010-11-30 | 2011-04-13 | 公安部第三研究所 | 一种智能卡cos指令扩展方法 |
WO2012078570A2 (en) * | 2010-12-06 | 2012-06-14 | Interdigital Patent Holdings, Inc. | Smart card with domain-trust evaluation and domain policy management functions |
Also Published As
Publication number | Publication date |
---|---|
CN102801705A (zh) | 2012-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102801705B (zh) | 一种java卡上安全域的实现方法 | |
CN101258505B (zh) | 安全的软件更新 | |
US20080022086A1 (en) | Methods and system for a key recovery plan | |
KR101067615B1 (ko) | 전자 장치에의 데이터 로딩 | |
US9066226B2 (en) | Initialization of embedded secure elements | |
CN103944903B (zh) | 一种多方授权的apk签名方法及系统 | |
US9734091B2 (en) | Remote load and update card emulation support | |
GB2517016A (en) | Secure data storage | |
SG177597A1 (en) | System and method for performing serialization of devices | |
CN101373440B (zh) | 一种固件升级数据处理方法和装置 | |
US10303661B2 (en) | Data processing on a non-volatile mass storage device | |
CN111611593A (zh) | 安全数据处理设备 | |
WO2017101720A1 (zh) | 一种交易终端升级的方法及装置 | |
US20140095863A1 (en) | Internet based security information interaction apparatus and method | |
CN105099983A (zh) | 授权方法、权限设置方法及装置 | |
US20100093334A1 (en) | Portable electronic entity and method for personalization of such an electronic entity | |
US20150234646A1 (en) | Method for Installing Security-Relevant Applications in a Security Element of a Terminal | |
CN106657551A (zh) | 一种防止移动终端解锁的方法及系统 | |
CN111984989B (zh) | 一种自身校验发布和访问url的方法、装置、系统和介质 | |
CN111224826B (zh) | 基于分布式系统的配置更新方法、设备、系统及介质 | |
CN107145342B (zh) | 应用的渠道信息的处理方法和装置 | |
CN105162605A (zh) | 一种数字签名及认证方法 | |
CN117131552A (zh) | 芯片运行方法、装置、电子设备及存储介质 | |
CN107315610B (zh) | 实现密码功能的方法、装置及计算机可读存储介质 | |
CN111934882B (zh) | 基于区块链的身份认证方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |