CN106712964A - 一种基于Java卡的应用验证方法及验证系统 - Google Patents

一种基于Java卡的应用验证方法及验证系统 Download PDF

Info

Publication number
CN106712964A
CN106712964A CN201611228567.XA CN201611228567A CN106712964A CN 106712964 A CN106712964 A CN 106712964A CN 201611228567 A CN201611228567 A CN 201611228567A CN 106712964 A CN106712964 A CN 106712964A
Authority
CN
China
Prior art keywords
intended application
aid
ciphertext
key
application
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.)
Pending
Application number
CN201611228567.XA
Other languages
English (en)
Inventor
胡建国
王鲸寓
洪佳欣
丁颜玉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Smart City Development Research Institute
Sun Yat Sen University
Original Assignee
Guangzhou Smart City Development Research Institute
Sun Yat Sen University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Smart City Development Research Institute, Sun Yat Sen University filed Critical Guangzhou Smart City Development Research Institute
Priority to CN201611228567.XA priority Critical patent/CN106712964A/zh
Publication of CN106712964A publication Critical patent/CN106712964A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/77Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种基于Java卡的应用验证方法,包括:根据对目标应用的下载操作,接收所述目标应用的原始AID号和密文对,所述密文对由所述原始AID号和所述目标应用的私钥生成;从第三方应用获取所述目标应用的公钥;根据所述密钥对、公钥和预设公式,确定待验证AID号;根据所述原始AID号和待验证AID号,确定所述目标应用的验证结果。本发明还公开了一种验证系统,用于实现上述验证方法。本发明实施例可对目标应用进行安装前验证,保障了用户的信息安全。

Description

一种基于Java卡的应用验证方法及验证系统
技术领域
本发明涉及通信领域,尤其涉及一种基于Java卡的应用验证方法及验证系统。
背景技术
随着智能卡技术的不断进步,Java智能卡(简称Java卡)凭借着其平台无关性、一卡多用、重用、软硬件开发技术简单、支持动态下载等优势脱颖而出,成为智能卡领域的热门技术,也是未来智能卡市场的发展趋势。在欧美地区已被广泛应用于金融、医疗、体育、电信、交通管理、社会保险等领域。因此,对Java智能卡及其应用技术进行深入的研究,开发具有自主知识产权的Java智能卡产品,以适应不断发展的网络时代的应用需求,正是本发明的意义之一。
Java卡的“一卡多用”特性使得同一张卡上允许安全地运行多个不同的应用,从而实现不同的用途和功能。重用特性使得用户可以按照自身的需求动态地添加、删除Java卡内的应用程序,而没有必要更换新的智能卡。与此同时,随着Java卡使用数量的快速上升,它受到非法入侵、篡改、信息截获等各种类型的攻击也越来越多,Java卡上存储的指纹、个人密钥、账号等高度敏感的信息都面临着被攻击的危险。
由于大部分的攻击手段的一个必要前提就是需要将恶意程序装载到Java卡片上,然后才能实施之后的数据窃取等操作。而Java卡规范并没有提供对应用程序安全下载这方面的支持,这使得Java智能卡平台存在重大安全隐患。因此,应用程序的安全下载就变得尤其重要,是抵挡各类攻击的极其重要一步。
发明内容
本发明实施例提供一种基于Java卡的应用验证方法及验证系统,以解决现有技术中,Java卡在从卡外实体下载应用时,无法对应用安全性和合法性进行验证,导致Java卡存在重大安全隐患的问题。
第一方面,本发明实施例提供了一种基于Java卡的应用验证方法,包括:
根据对目标应用的下载操作,接收所述目标应用的原始AID号和密文对,所述密文对由所述原始AID号和所述目标应用的私钥生成;
从第三方应用获取所述目标应用的公钥;
根据所述密钥对、公钥和预设公式,确定待验证AID号;
根据所述原始AID号和待验证AID号,确定所述目标应用的验证结果。
进一步,上述所述密文对的生成方式包括:
获取随机整数K和椭圆曲线算法模型的基点P,定义SK=P*PK,
其中,SK为所述目标应用的私钥,PK为所述目标应用的公钥;
生成第一密文C1=K*P;
生成第二密文C2=S+K*SK,
其中,S为所述原始AID号;
生成所述密文对{C1,C2}。
进一步,上述所述根据所述密钥对、公钥和预设公式,确定待验证AID号的步骤,具体为:
根据预设公式确定待验证AID号:
S’=C2-PK*C1;
其中,S’为所述待验证AID号。
进一步,上述所述根据对目标应用的下载操作,获取目标应用的原始AID号和密文对,所述密文对由所述原始AID号和所述目标应用的私钥生成的步骤,包括:
根据对目标应用的下载操作,接收所述目标应用的下载请求指令和会话密文,所述会话密文由会话密钥和所述私钥生成;
接收所述目标应用的原始AID号和密文对,所述密文对由所述原始AID号和所述目标应用的私钥生成;
所述根据所述原始AID号和待验证AID号,确定所述目标应用的验证结果的步骤之后,还包括:
根据所述会话密文、公钥和预设公式,获取所述会话密钥;
接收加载指令和所述目标应用的加密数据文件,所述加密数据文件由所述目标应用的原始数据文件和所述会话密钥生成;
根据所述会话密钥和所述加密数据文件,生成所述目标应用的原始数据文件。
进一步,上述所述根据所述会话密文、公钥和预设公式,获取所述会话密钥的步骤之前,还包括:
判断所述目标应用与Java卡内应用是否冲突。
进一步,上述所述下载请求指令为install指令,所述加载指令为load指令,所述目标应用的原始数据文件为CAP文件。
进一步,上述所述根据所述会话密文、公钥和预设公式,获取所述会话密钥的步骤之前,还包括:
确定所述load指令指向的安全域的权限和有效性。
另一方面,本发明实施例还提供了一种基于Java卡的应用验证系统,包括:
第一接收模块,用于根据对目标应用的下载操作,接收所述目标应用的原始AID号和密文对,所述密文对由所述原始AID号和所述目标应用的私钥生成;
第一获取模块,用于从第三方应用获取所述目标应用的公钥;
第一确定模块,用于根据所述密钥对、公钥和预设公式,确定待验证AID号;
第二确定模块,用于根据所述原始AID号和待验证AID号,确定所述目标应用的验证结果。
进一步,上述所述第一接收模块,包括:
第一接收单元,用于根据对目标应用的下载操作,接收所述目标应用的下载请求指令和会话密文,所述会话密文由会话密钥和所述私钥生成;
第二接收单元,用于接收所述目标应用的原始AID号和密文对,所述密文对由所述原始AID号和所述目标应用的私钥生成;
所述验证系统,还包括:
第二获取模块,用于根据所述会话密文、公钥和预设公式,获取所述会话密钥;
第二接收模块,用于接收加载指令和所述目标应用的加密数据文件,所述加密数据文件由所述目标应用的原始数据文件和所述会话密钥生成;
生成模块,用于根据所述会话密钥和所述加密数据文件,生成所述目标应用的原始数据文件。
进一步,上述验证系统还包括:
判断模块,用于判断所述目标应用与Java卡内应用是否冲突;
第三确定模块,用于确定所述加载指令指向的安全域的权限和有效性。
本发明实施例通过在对目标应用下载前,接收Java卡外实体发送的与目标应用对应的原始AID号和密文对,并通过可信第三方应用获取目标应用的公钥,根据所述密钥对、公钥和预设公式,确定待验证AID号,当原始AID号和待验证AID号相同时,确定目标应用未经过篡改,为合法应用。在整个过程中,由于Java卡尚未对目标应用进行下载,且所述原始AID号和密文对可存放于Java卡内的安全域中,对目标应用的验证过程具有极高的安全性,同时,由于私钥是仅由目标应用提供,而公钥是由信任第三方提供,因此保证了非对称密钥的保密性,大大提高了验证结果的可靠性和准确性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的基于Java卡的应用验证方法第一实施例的流程示意图;
图2是本发明的基于Java卡的应用验证方法第二实施例的流程示意图;
图3是图2中S202的详细流程示意图;
图4是本发明的基于Java卡的验证系统的第一实施例的结构示意图;
图5是本发明的基于Java卡的验证系统的第二实施例的结构示意图。
具体实施方式
为了使本发明所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
当本发明实施例提及“第一”、“第二”等序数词时,除非根据上下文其确实表达顺序之意,应当理解为仅仅是起区分之用。
如图1所示,为本发明的基于Java卡的应用验证方法的第一实施例的流程示意图。该方法包括S101-S104。
S101,根据对目标应用的下载操作,接收所述目标应用的原始AID号和密文对,所述密文对由所述原始AID号和所述目标应用的私钥生成。
每个应用提供商具有一个相应的安全域,安全域负责提供各类安全服务,包括应用密钥管理、加密解密、针对应用进行数字签名的生成与验证。在接收所述原始ID号和密文对后,Java卡将原始ID号和密文对存放入安全域中。
S102,从第三方应用获取所述目标应用的公钥。
在本步骤中,第三方应用可以是具有各类应用公钥收集功能的可信应用。公钥的获取方式不限于通过第三方应用直接下载,还包括由第三方应用提供的链接下载等。
S103,根据所述密钥对、公钥和预设公式,确定待验证AID号。
在本实施例中,各目标应用的私钥和公钥具有预设对应关系,可通过公钥和预设公式对密钥对进行计算,得到待验证AID号。
S104,根据所述原始AID号和待验证AID号,确定所述目标应用的验证结果。
在本实施例中,当原始AID号和待验证AID号相同时,确定目标应用为合法应用,可以对目标应用进行下载和安装操作。
本发明实施例通过在对目标应用下载前,接收Java卡外实体发送的与目标应用对应的原始AID号和密文对,并通过可信第三方应用获取目标应用的公钥,根据所述密钥对、公钥和预设公式,确定待验证AID号,当原始AID号和待验证AID号相同时,确定目标应用未经过篡改,为合法应用。在整个过程中,由于Java卡尚未对目标应用进行下载,且所述原始AID号和密文对可存放于Java卡内的安全域中,对目标应用的验证过程具有极高的安全性,同时,由于私钥是仅由目标应用提供,而公钥是由信任第三方提供,因此保证了非对称密钥的保密性,大大提高了验证结果的可靠性和准确性。
如图2所示,为本发明的基于Java卡的应用验证方法的第二实施例的流程示意图。包括S201-S210。
S201,根据对目标应用的下载操作,接收所述目标应用的下载请求指令和会话密文,所述会话密文由会话密钥和私钥生成。
在本步骤中,当确认接收到用户对目标应用的下载操作时,Java卡外实体向Java卡发送下载请求指令,下载请求指令可以是install指令,为确保后续目标应用的数据文件的保密性和完整性,在发送install指令的同时发送会话密文。
S202,接收所述目标应用的原始AID号和密文对,所述密文对由所述原始AID号和所述目标应用的私钥生成。
如图3所示,在本实施例中,通过AID号和所述目标应用的私钥生成密文对的步骤包括S2021-S2022。
S2021,获取随机整数K和椭圆曲线算法模型的基点P,定义SK=P*PK,
其中,SK为所述目标应用的私钥,PK为所述目标应用的公钥;
上述随机整数K可以通过随机数字发生器生成。在椭圆曲线算法模型中,定义在椭圆曲线E(Fp)为素域Fp上的所有有理点P(x,y)与O(无穷远点)组成的集合,因此,确定大小为[0,n-1]的整数PK,通过椭圆曲线算法中的基点P,计算SK=P*PK以此来建立安全的密钥对、私钥SK和公钥PK。
S2022,生成第一密文C1=K*P;
S2023,生成第二密文C2=S+K*SK,
其中,S为所述原始AID号;
S2024,生成所述密文对{C1,C2}。
生成密文对后,Java卡外实体将其接入AID后插入到APDU(ApplicationProtocolDataUnit,应用协议数据单元)指令的数据块中,并发送给Java卡内安全域进行验证。经过测试,该私钥生成的密文对具有安全性高、计算量小和存储空间小的特点。同时对于信息量较少的短消息,该密钥体制的带宽需求非常低,因此适用于本发明中提出的用于AID号和会话密文密钥的加密传输。
S203,从第三方应用获取所述目标应用的公钥。
本步骤与上述基于Java卡的应用验证方法的第一实施例的对应步骤相同,此处不在赘述。
S204,根据预设公式确定待验证AID号:
S’=C2-PK*C1;
其中,S’为所述待验证AID号。
在本步骤中,套用上述公式可知,若接收到的密文对中的C1和C2为根据私钥生成,则S’=C2-PK*C1=S+K*SK-PK*(K*P)=C2-PK*C1=S+K*P*PK-PK*(K*P)=S。
S205,根据所述原始AID号和待验证AID号,确定所述目标应用的验证结果。
本步骤与上述基于Java卡的应用验证方法的第一实施例的对应步骤相同,此处不在赘述。
S206,判断所述目标应用与Java卡内应用是否冲突。
由于每一个java卡每个包或应用都会被指定唯一确定的AID,如果应用程序注册表中已经存在一个与目标应用相同的AID号的包或应用,即可终止对目标应用的下载过程。
S207,确定加载指令指向的安全域的权限和有效性。
步骤S206和S207用于对目标应用的安装条件进行检测。
S208,根据所述会话密文、公钥和预设公式,获取所述会话密钥。
会话密钥的生成方式与密文对的生成方式类似,此处不再赘述。
S209,接收加载指令和所述目标应用的加密数据文件,所述加密数据文件由所述目标应用的原始数据文件和所述会话密钥生成。
在本步骤中,上述原始数据文件可以是CAP文件,加载指令可以是load指令,用于传输应用的数据文件,但为了保证load指令发送的应用的数据文件的完整性,防止传送过程中数据文件被篡改,导致恶意应用加载到Java卡上,对于load指令及应用的原始数据文件本身,都需要通过会话密钥进行加密,然后Java卡端将接收到的应用的加密数据进行解密以及校验。load指令取决于Java卡的通信缓冲区长度以及目标应用的大小,对于较长的程序包,可以使用多条load命令把要目标应用的CAP文件传送到Java卡的EEPROM(Electrically Erasable Programmable Read-Only Memory,带电可擦可编程只读存储器)上。
由于会话密钥是通过本发明提出的非对称密钥加密传输的,因此能保证会话密钥的保密性,同时加密后的数据文件以其校验也能确保其保密性和完整性。若Java卡对某一条load指令解密后校验发生错误,则说明应用的数据文件在传输中出现异常,立即终止应用下载,并释放掉所占用空间。
S210,根据所述会话密钥和所述加密数据文件,生成所述目标应用的原始数据文件。
经过上述步骤,可以在Java卡上使用原始数据文件对目标应用进行安装。
本发明实施例提高了java卡对目标应用下载过程的安全性。本发明提出的非对称密钥算法是基于椭圆曲线加密算法上的,在计算复杂度上,其困难度是完全指数级,而RSA(公钥加密算法)是亚指数级,因此具有较高的安全性。同时提出的目标应用下载前的非对称密钥校验方式,以及下载过程中对应用的原始数据的加密,大大提高了认证结果的有效性和准确性。再者,通过非对称密钥传送会话密钥保证了会话密钥的保密性,对下载CAP文件数据的加密和校验设置有效防止了下载过程中应用的原始数据被篡改导致的恶意程序被下载到Java卡上的问题。因此通过本发明的应用下载过程确保了应用下载的安全性,从而提高了Java卡计算环境的安全性。同时,本发明实施例在加密和解密时还具有较快的处理速度和较少的计算量,本发明提出了基于ECC算法的非对称密钥机制,虽然非对称加密机制一般需要较大的运算量和对硬件平台配置的要求比较高,但本发明提出的ECC非对称密钥机制具有较快的处理速度和较少的计算量的特点。最后,本发明兼顾了软硬件负载的均衡。本发明中的对称密钥机制是基于点加法运算上,实现的点数乘运算,通过优化能够分担部分的硬件计算,加快了运算的执行速度。
上文对本发明的基于Java卡的应用验证方法的实施例作了详细介绍。下面将相应于上述方法的验证系统作进一步阐述。
如图4所示,为本发明的基于Java卡的应用验证系统的第一实施例的结构示意图。与上述基于Java卡的应用验证方法的第一实施例对应,本实施例中,验证系统100包括第一接收模块110、第一获取模块120、第一确定模块130和第二确定模块140。其中,
第一接收模块110,与第一确定模块130相连接,用于根据对目标应用的下载操作,接收所述目标应用的原始AID号和密文对,所述密文对由所述原始AID号和所述目标应用的私钥生成。
每个应用提供商具有一个相应的安全域,安全域负责提供各类安全服务,包括应用密钥管理、加密解密、针对应用进行数字签名的生成与验证。在接收所述原始ID号和密文对后,Java卡将原始ID号和密文对存放入安全域中。
第一获取模块120,与第一确定模块130相连接,用于从第三方应用获取所述目标应用的公钥。
在本模块中,第三方应用可以是具有各类应用公钥收集功能的可信应用。公钥的获取方式不限于通过第三方应用直接下载,还包括由第三方应用提供的链接下载等。
第一确定模块130,与第二确定模块140相连接,用于根据所述密钥对、公钥和预设公式,确定待验证AID号。
在本实施例中,各目标应用的私钥和公钥具有预设对应关系,可通过公钥和预设公式对密钥对进行计算,得到待验证AID号。
第二确定模块140,用于根据所述原始AID号和待验证AID号,确定所述目标应用的验证结果。
在本实施例中,当原始AID号和待验证AID号相同时,确定目标应用为合法应用,可以对目标应用进行下载和安装操作。
本发明实施例通过在对目标应用下载前,接收Java卡外实体发送的与目标应用对应的原始AID号和密文对,并通过可信第三方应用获取目标应用的公钥,根据所述密钥对、公钥和预设公式,确定待验证AID号,当原始AID号和待验证AID号相同时,确定目标应用未经过篡改,为合法应用。在整个过程中,由于Java卡尚未对目标应用进行下载,且所述原始AID号和密文对可存放于Java卡内的安全域中,对目标应用的验证过程具有极高的安全性,同时,由于私钥是仅由目标应用提供,而公钥是由信任第三方提供,因此保证了非对称密钥的保密性,大大提高了验证结果的可靠性和准确性。
如图5所示,为本发明的基于Java卡的应用验证系统的第二实施例的结构示意图。与上述基于Java卡的应用验证方法的第二实施例对应,本实施例中,验证系统200包括,第一接收模块210、第一获取模块220、第一确定模块230、第二确定模块240、判断模块250、第三确定模块260、第二获取模块270、第二接收模块280和生成模块290。其中,
第一接收模块210,与第一确定模块230相连接,包括第一接收单元211和第二接收单元212。其中,
第一接收单元211,与第二接收单元212相连接,用于根据对目标应用的下载操作,接收所述目标应用的下载请求指令和会话密文,所述会话密文由会话密钥和所述私钥生成。
在第一接收单元211中,当确认接收到用户对目标应用的下载操作时,Java卡外实体向Java卡发送下载请求指令,下载请求指令可以是install指令,为确保后续目标应用的数据文件的保密性和完整性,在发送install指令的同时发送会话密文。
第二接收单元212,用于接收所述目标应用的原始AID号和密文对,所述密文对由所述原始AID号和所述目标应用的私钥生成。
在本实施例中,通过AID号和所述目标应用的私钥生成密文对的步骤包括:
获取随机整数K和椭圆曲线算法模型的基点P,定义SK=P*PK,
其中,SK为所述目标应用的私钥,PK为所述目标应用的公钥;
上述随机整数K可以通过随机数字发生器生成。在椭圆曲线算法模型中,定义在椭圆曲线E(Fp)为素域Fp上的所有有理点P(x,y)与O(无穷远点)组成的集合,因此,确定大小为[0,n-1]的整数PK,通过椭圆曲线算法中的基点P,计算SK=P*PK以此来建立安全的密钥对、私钥SK和公钥PK。
生成第一密文C1=K*P;
生成第二密文C2=S+K*SK,
其中,S为所述原始AID号;
生成所述密文对{C1,C2}。
生成密文对后,Java卡外实体将其接入AID后插入到APDU(ApplicationProtocolDataUnit,应用协议数据单元)指令的数据块中,并发送给Java卡内安全域进行验证。经过测试,该私钥生成的密文对具有安全性高、计算量小和存储空间小的特点。同时对于信息量较少的短消息,该密钥体制的带宽需求非常低,因此适用于本发明中提出的用于AID号和会话密文密钥的加密传输。
第一获取模块220,与第一确定模块230相连接,用于从第三方应用获取所述目标应用的公钥。
本模块与上述基于Java卡的应用验证系统的第一实施例的对应模块相同,此处不在赘述。
第一确定模块230,与第二确定模块240相连接,用于根据预设公式确定待验证AID号:
S’=C2-PK*C1;
其中,S’为所述待验证AID号。
套用上述预设公式可知,若接收到的密文对中的C1和C2为根据私钥生成,则S’=C2-PK*C1=S+K*SK-PK*(K*P)=C2-PK*C1=S+K*P*PK-PK*(K*P)=S。
第二确定模块240,与判断模块250相连接,用于根据所述原始AID号和待验证AID号,确定所述目标应用的验证结果。
本模块与上述基于Java卡的应用验证系统的第一实施例的对应模块相同,此处不在赘述。
判断模块250,与第三确定模块260相连接,用于判断所述目标应用与Java卡内应用是否冲突。
当验证结果为目标应用为合法应用时,判断模块判断所述目标应用与Java卡内应用是否冲突。由于每一个java卡每个包或应用都会被指定唯一确定的AID,如果应用程序注册表中不存在与目标应用相同的AID号的包或应用,即说明可对目标应用进行安装。
第三确定模块260,与第二获取模块270和第二接收模块280相连接,用于确定所述加载指令指向的安全域的权限和有效性。
在本实施例中,加载指令可以是load指令。判断模块250和第三确定模块260用于对目标应用的安装条件进行检测。
第二获取模块270,与生成模块290相连接,用于根据所述会话密文、公钥和预设公式,获取所述会话密钥。
会话密钥的生成方式与密文对的生成方式类似,此处不再赘述。
第二接收模块280,与生成模块290相连接,用于接收加载指令和所述目标应用的加密数据文件,所述加密数据文件由所述目标应用的原始数据文件和所述会话密钥生成。
在第二接收模块280中,上述原始数据文件可以是CAP文件,加载指令可以是load指令,用于传输应用的数据文件,但为了保证load指令发送的应用的数据文件的完整性,防止传送过程中数据文件被篡改,导致恶意应用加载到Java卡上,对于load指令及应用的原始数据文件本身,都需要通过会话密钥进行加密,然后Java卡端将接收到的应用的加密数据进行解密以及校验。load指令取决于Java卡的通信缓冲区长度以及目标应用的大小,对于较长的程序包,可以使用多条load命令把要目标应用的CAP文件传送到Java卡的EEPROM(Electrically Erasable Programmable Read-Only Memory,带电可擦可编程只读存储器)上。
由于会话密钥是通过本发明提出的非对称密钥加密传输的,因此能保证会话密钥的保密性,同时加密后的数据文件以其校验也能确保其保密性和完整性。若Java卡对某一条load指令解密后校验发生错误,则说明应用的数据文件在传输中出现异常,立即终止应用下载,并释放掉所占用空间。
生成模块290,根据所述会话密钥和所述加密数据文件,生成所述目标应用的原始数据文件。
经过上述过程,可以在Java卡上使用原始数据文件对目标应用进行安装。
本发明实施例提高了java卡对目标应用下载过程的安全性。本发明提出的非对称密钥算法是基于椭圆曲线加密算法上的,在计算复杂度上,其困难度是完全指数级,而RSA(公钥加密算法)是亚指数级,因此具有较高的安全性。同时提出的目标应用下载前的非对称密钥校验方式,以及下载过程中对应用的原始数据的加密,大大提高了认证结果的有效性和准确性。再者,通过非对称密钥传送会话密钥保证了会话密钥的保密性,对下载CAP文件数据的加密和校验设置有效防止了下载过程中应用的原始数据被篡改导致的恶意程序被下载到Java卡上的问题。因此通过本发明的应用下载过程确保了应用下载的安全性,从而提高了Java卡计算环境的安全性。同时,本发明实施例在加密和解密时还具有较快的处理速度和较少的计算量,本发明提出了基于ECC算法的非对称密钥机制,虽然非对称加密机制一般需要较大的运算量和对硬件平台配置的要求比较高,但本发明提出的ECC非对称密钥机制具有较快的处理速度和较少的计算量的特点。最后,本发明兼顾了软硬件负载的均衡。本发明中的对称密钥机制是基于点加法运算上,实现的点数乘运算,通过优化能够分担部分的硬件计算,加快了运算的执行速度。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种基于Java卡的应用验证方法,其特征在于,包括:
根据对目标应用的下载操作,接收所述目标应用的原始AID号和密文对,所述密文对由所述原始AID号和所述目标应用的私钥生成;
从第三方应用获取所述目标应用的公钥;
根据所述密钥对、公钥和预设公式,确定待验证AID号;
根据所述原始AID号和待验证AID号,确定所述目标应用的验证结果。
2.根据权利要求1所述的方法,其特征在于,所述密文对的生成方式包括:
获取随机整数K和椭圆曲线算法模型的基点P,定义SK=P*PK,
其中,SK为所述目标应用的私钥,PK为所述目标应用的公钥;
生成第一密文C1=K*P;
生成第二密文C2=S+K*SK,
其中,S为所述原始AID号;
生成所述密文对{C1,C2}。
3.根据权利要求2所述的方法,其特征在于,所述根据所述密钥对、公钥和预设公式,确定待验证AID号的步骤,具体为:
根据预设公式确定待验证AID号:
S’=C2-PK*C1;
其中,S’为所述待验证AID号。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述根据对目标应用的下载操作,获取目标应用的原始AID号和密文对,所述密文对由所述原始AID号和所述目标应用的私钥生成的步骤,包括:
根据对目标应用的下载操作,接收所述目标应用的下载请求指令和会话密文,所述会话密文由会话密钥和所述私钥生成;
接收所述目标应用的原始AID号和密文对,所述密文对由所述原始AID号和所述目标应用的私钥生成;
所述根据所述原始AID号和待验证AID号,确定所述目标应用的验证结果的步骤之后,还包括:
根据所述会话密文、公钥和预设公式,获取所述会话密钥;
接收加载指令和所述目标应用的加密数据文件,所述加密数据文件由所述目标应用的原始数据文件和所述会话密钥生成;
根据所述会话密钥和所述加密数据文件,生成所述目标应用的原始数据文件。
5.根据权利要求4所述的方法,其特征在于,所述根据所述会话密文、公钥和预设公式,获取所述会话密钥的步骤之前,还包括:
判断所述目标应用与Java卡内应用是否冲突。
6.根据权利要求5所述的方法,其特征在于,所述下载请求指令为install指令,所述加载指令为load指令,所述目标应用的原始数据文件为CAP文件。
7.根据权利要求6所述的方法,其特征在于,所述根据所述会话密文、公钥和预设公式,获取所述会话密钥的步骤之前,还包括:
确定所述load指令指向的安全域的权限和有效性。
8.一种基于Java卡的应用验证系统,其特征在于,包括:
第一接收模块,用于根据对目标应用的下载操作,接收所述目标应用的原始AID号和密文对,所述密文对由所述原始AID号和所述目标应用的私钥生成;
第一获取模块,用于从第三方应用获取所述目标应用的公钥;
第一确定模块,用于根据所述密钥对、公钥和预设公式,确定待验证AID号;
第二确定模块,用于根据所述原始AID号和待验证AID号,确定所述目标应用的验证结果。
9.根据权利要求8所述的验证系统,其特征在于,所述第一接收模块,包括:
第一接收单元,用于根据对目标应用的下载操作,接收所述目标应用的下载请求指令和会话密文,所述会话密文由会话密钥和所述私钥生成;
第二接收单元,用于接收所述目标应用的原始AID号和密文对,所述密文对由所述原始AID号和所述目标应用的私钥生成;
所述验证系统,还包括:
第二获取模块,用于根据所述会话密文、公钥和预设公式,获取所述会话密钥;
第二接收模块,用于接收加载指令和所述目标应用的加密数据文件,所述加密数据文件由所述目标应用的原始数据文件和所述会话密钥生成;
生成模块,用于根据所述会话密钥和所述加密数据文件,生成所述目标应用的原始数据文件。
10.根据权利要求9所述的验证系统,其特征在于,还包括:
判断模块,用于判断所述目标应用与Java卡内应用是否冲突;
第三确定模块,用于确定所述加载指令指向的安全域的权限和有效性。
CN201611228567.XA 2016-12-27 2016-12-27 一种基于Java卡的应用验证方法及验证系统 Pending CN106712964A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611228567.XA CN106712964A (zh) 2016-12-27 2016-12-27 一种基于Java卡的应用验证方法及验证系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611228567.XA CN106712964A (zh) 2016-12-27 2016-12-27 一种基于Java卡的应用验证方法及验证系统

Publications (1)

Publication Number Publication Date
CN106712964A true CN106712964A (zh) 2017-05-24

Family

ID=58902818

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611228567.XA Pending CN106712964A (zh) 2016-12-27 2016-12-27 一种基于Java卡的应用验证方法及验证系统

Country Status (1)

Country Link
CN (1) CN106712964A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109840395A (zh) * 2017-11-24 2019-06-04 航天信息股份有限公司 一种基于Java卡下载应用程序的方法和系统
WO2021208014A1 (zh) * 2020-04-16 2021-10-21 华为技术有限公司 用于执行加解密处理的装置及方法
CN113692576A (zh) * 2020-12-23 2021-11-23 深圳杰睿联科技有限公司 Native与JavaCard动态切换的方法及设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101582170A (zh) * 2009-06-09 2009-11-18 上海大学 一种基于椭圆曲线密码体制的遥感图像加密方法
CN101719821A (zh) * 2008-10-09 2010-06-02 爱思开电讯投资(中国)有限公司 智能卡应用程序管理系统及其方法
CN102236568A (zh) * 2011-07-13 2011-11-09 中国联合网络通信集团有限公司 Java卡应用下载的方法、装置和系统
CN104424446A (zh) * 2013-08-21 2015-03-18 中外建设信息有限责任公司 一种安全认证和传输的方法和系统
CN105045597A (zh) * 2015-08-07 2015-11-11 中国联合网络通信集团有限公司 一种java卡对象调用方法及装置
CN105095696A (zh) * 2015-06-25 2015-11-25 三星电子(中国)研发中心 对应用程序进行安全认证的方法、系统及设备
CN105426796A (zh) * 2015-11-10 2016-03-23 苏州海博智能系统有限公司 一种向智能卡中下载应用的方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101719821A (zh) * 2008-10-09 2010-06-02 爱思开电讯投资(中国)有限公司 智能卡应用程序管理系统及其方法
CN101582170A (zh) * 2009-06-09 2009-11-18 上海大学 一种基于椭圆曲线密码体制的遥感图像加密方法
CN102236568A (zh) * 2011-07-13 2011-11-09 中国联合网络通信集团有限公司 Java卡应用下载的方法、装置和系统
CN104424446A (zh) * 2013-08-21 2015-03-18 中外建设信息有限责任公司 一种安全认证和传输的方法和系统
CN105095696A (zh) * 2015-06-25 2015-11-25 三星电子(中国)研发中心 对应用程序进行安全认证的方法、系统及设备
CN105045597A (zh) * 2015-08-07 2015-11-11 中国联合网络通信集团有限公司 一种java卡对象调用方法及装置
CN105426796A (zh) * 2015-11-10 2016-03-23 苏州海博智能系统有限公司 一种向智能卡中下载应用的方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109840395A (zh) * 2017-11-24 2019-06-04 航天信息股份有限公司 一种基于Java卡下载应用程序的方法和系统
WO2021208014A1 (zh) * 2020-04-16 2021-10-21 华为技术有限公司 用于执行加解密处理的装置及方法
CN113692576A (zh) * 2020-12-23 2021-11-23 深圳杰睿联科技有限公司 Native与JavaCard动态切换的方法及设备
WO2022133774A1 (zh) * 2020-12-23 2022-06-30 深圳杰睿联科技有限公司 Native与JavaCard动态切换的方法及设备

Similar Documents

Publication Publication Date Title
EP3382933B1 (en) Using a trusted execution environment as a trusted third party providing privacy for attestation
CN107810617B (zh) 机密认证和供应
CN1708942B (zh) 设备特定安全性数据的安全实现及利用
CN103888251B (zh) 一种云环境中虚拟机可信保障的方法
CN105450406B (zh) 数据处理的方法和装置
CN101018125B (zh) 一种基于椭圆曲线公钥密码的无线终端安全锁网锁卡方法
US7127067B1 (en) Secure patch system
CN110401615B (zh) 一种身份认证方法、装置、设备、系统及可读存储介质
CN110149209B (zh) 物联网设备及其提高数据传输安全性的方法和装置
CN104052606B (zh) 数字签名、签名认证装置以及数字签名方法
CN101179380A (zh) 一种双向认证方法、系统及网络终端
WO2006002282A1 (en) Systems and methods for performing secure communications between an authorized computing platform and a hardware component
CN101873307A (zh) 基于身份的前向安全的数字签名方法、装置及系统
CN114692218A (zh) 一种面向个人用户的电子签章方法、设备和系统
CN110855667B (zh) 一种区块链加密方法、装置及系统
CN111783078A (zh) Android平台安全芯片控制系统
CN107294710A (zh) 一种vTPM2.0的密钥迁移方法及装置
CN112311718A (zh) 检测硬件的方法、装置、设备及存储介质
CN106712964A (zh) 一种基于Java卡的应用验证方法及验证系统
CN109951276A (zh) 基于tpm的嵌入式设备远程身份认证方法
Michael et al. A framework for secure download for software-defined radio
CN114726536A (zh) 一种时间戳生成方法、装置、电子设备及存储介质
CN107707564B (zh) 一种基于云网络的安全通道建立系统
CN114362951B (zh) 用于更新证书的方法和装置
CN107026729B (zh) 用于传输软件的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20170524