智能卡以及在智能卡中调用服务器证书或证书链的方法

文档序号:6679646阅读:236来源:国知局
专利名称:智能卡以及在智能卡中调用服务器证书或证书链的方法
技术领域
本发明涉及计算机和通信安全领域,特别涉及智能卡以及在智能卡中调用 服务器证书或证书链的方法。
背景技术
数字证书就是互联网通讯中标志通讯各方身份信息的 一 系列数据,提供了
一种在Internet上验证身份的方式。由权威认证机构发行,可以在网上用它来 识别对方的身份。数字证书是一个经证书授权中心数字签名的包含公开密钥拥 有者信息以及公开密钥的文件。数字证书包含一个公开密钥、名称以及证书授 权中心的数字签名, 一般情况下证书中还包括密钥的有效时间,发证机关(证书 授权中心)的名称,该数字证书的序列号等信息,数字证书的格式遵循ITUT X. 509国际标准。
数字证书采用公钥体制,即利用一对互相匹配的密钥进行加密、解密。每 个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和 签名;同时设定一把公共密钥(公钥)并由本人公开,为一组用户所共享,用 于加密和验证签名。当发送一份保密文件时,发送方使用接收方的公钥对数据 加密,而接收方则使用自己的私钥解密,这样信息就可以安全无误地到达目的 地了。通过数字的手段保证加密过程是一个不可逆过程,即只有用私有密钥才 能解密。在公开密钥密码体制中,常用的一种是RSA体制。
x. 509服务器证书(server certificates)组成Web服务器的SSL安全功能 的唯一的数字标识。通过相互信任的第三方组织获得,并为用户提供验证Web 站点身份的手段。服务器证书包含详细的身份验证信息,如服务器内容附属的 组织、颁发证书的组织以及称为公开密钥的唯一的身份验证文件。这意味着服 务器证书确保用户关于web服务器内容的验证,同时意味着建立安全的HTTP连接是安全的。
现阶段服务器证书的解析和验证大多是在PC机上进行, 一些恶意网站可以
通过病毒或插件等技术在PC机上骗过客户端的服务器证书验证,假冒银行等重
要机构,骗取用户的信任,引诱客户在不知情的情况下与其进行交易、或获取 用户的信息。
智能卡设备的内存容量有限,如果按照常规方法完全解析备份证书的所有 信息,在智能卡上会有很多困难,甚至难以执行。

发明内容
为了克服上述缺陷,本发明的目的在于提供一种智能卡以及在智能卡中调 用服务器证书和证书链的方法,以避免错误地将恶意网站误人认作自己信任的 网站,并且在内存资源有限的智能卡上完成服务器证书的解析和验证。
为达到上述目的,本发明智能卡,该智能卡带有微处理器和至少用于存储 证书或证书链的存储器,还包括一个位置信息索引表,该位置信息索引表用于
保存所述证书或证书链中各数据项目信息相对于证书或证书链的位置信息;所 述的微处理器根据应用程序的请求,通过查找位置信息索引表中相关数据项目 信息的位置来解析存储器中相应的证书或证书链的数据项目信息。
其中,所述的数据项目信息包括证书中的版本信息、证书序列号、证书 使用的签名算法、证书的有效期、证书所有人的名称、证书所有人的公开密钥、 证书发行者对证书的签名和/或证书扩展项目数据。
其中,所述的服务器证书或证书链为X. 509服务器证书或证书链。
为达到上述目的,本发明在智能卡中调用服务器证书或证书链的方法,包 括下述步骤智能卡在获得服务器证书或证书链数据后,扫描整个证书或证书 链数据;解析出各数据项目信息在证书或证书链数据中的相对位置;按照证书 或证书链中各数据项目在证书中的相对位置建立位置信息索引表;分析应用程 序所请求的数据信息项目;按照所请求的数据信息项目搜索位置信息索引表;按照位置信恩常引表中该数据信恩项目的位置信恩从存储器中仅提取所请求的
数据信息项目;将提取的数据信息项目返回应用程序。
特别是,上述应用程序所请求的数据信息项目,具体可以为请求解析数据 信息项目或者请求验证数据信息项目。
特别是,所述的按照证书或证书链中各数据项目在证书中的相对位置建立 位置信息索引表的步骤具体为判断证书数据为服务器证书还是服务器证书链; 如果是服务器证书,则按照证书各数据项目信息在证书中的相对位置建立位置 信息索引表;如果是服务器证书链,则解析出整个证书链中证书的个数,将其 存入位置信息索引表位置0处,并在位置0后按序定义证书链中各证书的保存 位置,将各证书的数据项目信息在证书中的相对位置信息存放在位置信息索引 表中所对应各证书的保存位置中。
采用上述本发明的技术方案,当应用程序根据需要发出对某个或某些个数 据项目信息的请求时,微处理器只需根据应用程序的请求,通过查找位置信息 索引表中相关数据项目信息的位置,从而从存储器中解析出相应的证书或证书 链的数据项目信息,返回给应用程序即可,而不需要完全解析备份证书的所有 信息,从而能节约大量的内存资源,减少解析时间。


图1是典型的X. 509服务器证书结构。
图2是为本发明智能卡实施例中位置信息索引表的结构示意图。 图3为本发明在智能卡中调用服务器证书或证书链的方法的实施例流程图。 图4是为本发明实施例中自签名证书的验证过程的流程图。 图5是本发明实施例中证书链的验证过程的流程图。
具体实施例方式
下面结合附图和实施例对本发明作进一 步的说明。
6本发明的智能卡带有微处理器和至少用于存储证书或证书链的存储器,还 包括一个位置信息索引表,该位置信息索引表用于保存所述证书或证书链中各 数据项目信息相对于证书或证书链的位置信息。
这样,当应用程序根据需要发出对某个或某些个数据项目信息的请求时, 微处理器只需根据应用程序的请求,通过查找位置信息索引表中相关数据项目 信息的位置,从而从存储器中解析出相应的证书或证书链的数据项目信息,返 回给应用程序即可,而不需要完全解析备份证书的所有信息,从而能节约大量 的内存资源,减少解析时间。
其中,上述的证书或证书链可以为X. 509服务器i正书或证书链,当然,也 可根据该方案应用于其它服务器证书或证书链,下述均以X. 509服务器证书或 证书链为例。上述的智能卡可以为Java卡也可以为非Java卡。
上述的证书或证书链数据是卡外部应用通过APDU命令将证书或证书链数据 发送到智能卡中。X. 509服务器证书或证书链数据需要从应用程序中通过APDU 命令送入卡中,每次送入卡的数据量不大于256个字节,因此需要分批多次送 入卡中。服务器证书或证书链数据保存在一维数组之中。
如图1所示的实施例典型的X. 509服务器证书结构,上述数据项目信息包 括证书的版本信息、证书序列号、证书使用的签名算法、证书的发行机构名 称、证书的有效期、证书所有人的名称、证书所有人的公开密钥、证书发行者 对证书的签名、证书扩展信息的获取和证书或证书链有效性验证。所述证书或 证书链有效性验证包含验证认证机构对证书内容的签名、验证证书在当前时间 上有效期是否有效和验证证书是否在证书撤销列表中。
上述智能卡中的位置信息索引表可以按下述方法建立在证书数据完全送 入卡中之后,开始对数据进行扫描,按顺序只解析出各数据项目信息在证书数 据数组中的位置,将各项目数据的位置信息按顺序保存在位置信息索引表中, 位置信息索引表可以为short型的信息数组(如图2所示),每个信息数组保存 一个证书的位置信息,证书1的位置信息在信息数组中的起始位置为1,由于证书位置信息长度为固定值,证书2的位置信息起始位置为证书1的位置信息长 度加1 ,依次类推;对于证书数据是证书链的,还需要记录证书链中证书的个 数,将证书的个数信息保存在位置信息索引表位置0处,如果不是证书链,信 息数组位置0处设置为0。位置信息索引表参见图2。
下面结合图3,对本发明在智能卡中调用服务器证书或证书链的方法的实施 例进行介绍。
本发明在智能卡中调用服务器证书或证书链的方法,包括下述步骤 (1 )智能卡在获得服务器证书或证书链数据后,扫描整个证书或证书链数据; (2 )解析出各数据项目信息在证书或证书链数据中的相对位置; (3)按照证书或证书链中各数据项目在证书中的相对位置建立位置信息索
引表;
判断证书数据为服务器证书还是服务器证书链;如果是服务器证书,则按 照证书各数据项目信息在证书中的相对位置建立位置信息索引表;如果是服务 器证书链,则解析出整个证书链中证书的个数,将其存入位置信息索引表位置0 处,并在位置0后按序定义证书链中各证书的保存位置,将各证书的数据项目 信息在证书中的相对位置信息存放在位置信息索引表中所对应各证书的保存位 置中。
(4 )分析应用程序所请求的数据信息项目;
应用程序请求数据信息项目包括请求解析数据信息项目或者请求验证数据 信息项目,这些数据信息项目证书的版本信息、序列号、发行机构算法、发 行机构名称、有效期、所有人名称、公开密钥、发行者对证书的签名、扩展信息等。
(5 )按照所请求解析或验证的数据信息项目搜索位置信息索引表;
(6 )按照位置信息索引表中该数据信息项目的位置信息从存储器中仅提取所请求解析或验证的数据信息项目;
(7 )将提取的数据信息项目返回应用程序。
上述应用程序请求调用数据信息项目的时候,根据位置信息索引表,从证 书数据中解析出相应的信息。这些项目数据信息只有在用户请求的时候才需要 调用,并将调用的结果返回给应用程序,在程序内部不需要真正保存这些信息, 只需要将调用出来的数据保存在一个公共緩沖区中,将数据发送给应用程序后, 緩沖区中的数据就不需要持久保存。
所述公共緩冲区,是由于智能卡的特点,分配出来的内存在解析程序存在 期间,内存是不可回收的,因此预先分配一个大的数组,供解析这些信息共享 使用,数组的大小可以根据的版本信息、序列号、发行机构算法、发行机构名 称、有效期、所有人名称、公开密钥、发行者对证书的签名、扩展信息中最大 数据容量要求来分配,这个大的数据数组称为公共緩沖区。
下面对各数据项目信息的具体提取方法详述如下
1) 版本信息、序列号、发行机构算法、发行者对证书的签名
证书中的版本信息、序列号、发行机构算法、发行者对证书的签名根据位 置信息索引表中的位置信息和X. 509服务器证书的规范可以解析出来,将其临 时保存在公共緩沖区中,通过APDU返回给应用程序。
2) 发行机构名称、所有人名称
发行机构名称、所有人名称是结构复合信息,其中的内容包括的项目包括 国家(country )、省(state )、位置(locality )、公司(organization )、机 构单位(org Unit )、名称( common Name )、哈西值(hash ), 首先定义设定各 个项目在公共緩冲区中的位置和每项所占用的长度,然后分别按照发行机构名 称、所有人名称在位置信息索引表中的位置信息,根据X. 509证书的规范解析 出相应的项目,将各自项目的数据复制到公共緩沖区中的相应位置中,通过APDU 返回给应用程序。3 )有效期
有效期是复合信息,其中包含的项目包括有效期开始日期(not Before) 和有效期结束日期(not After),首先定义出这两个项目在公共緩冲区中所占 位置和长度,然后分别按照有效期在位置信息索引表中的位置信息,根据X. 509 服务器证书的规范解析出相应的项目,将各自项目的数据复制到公共緩沖区中 的相应位置中,通过APDU返回给应用程序。
4) 公开密钥
公开密钥信息是复合信息,包含的项目包括模数据N和指数数据e,首先定 义出这两个项目在公共緩冲区中所占位置和长度,然后分别按照有公开密钥在 位置信息索引表中的位置信息,根据X. 509服务器证书的规范解析出相应的项 目,将各自项目的数据复制到公共緩沖区中的相应位置中,通过APDU返回给应 用程序。
5) 扩展信息
扩展信息是复合信息,包含的项目包括授权机构密钥ID (Authority key identifier),密钥用途(Key usage )、基本约束(Basic constraints)等项 目,首先定义出这两个项目在公共緩沖区中所占位置和长度,然后分别按照有 公开密钥在位置信息索引表中的位置信息,根据X. 509服务器证书的规范解析 出相应的项目,将各自项目的勒:据复制到公共緩沖区中的相应位置中,通过APDU 返回给应用程序。
6) 服务器证书或证书链有效性验证包含验证认证机构对证书内容的签名、 验证证书在当前时间上有效期是否有效和验证证书是否在证书撤销列表。
7) 认证机构对证书内容的签名验证
如果验证的证书为自签名的证书,定义签名数据在共享内存中的保存位置, 根据位置信息索引表中签名数据的位置,提取出签名数据,保存到共享内存中 的证书签名数据位置中。定义共享内存中公钥的保存位置,根据位置信息提取出公钥信息,对签名数据进行解密,将解密后的数据保存在共享内存中。根据 签名算法在位置信息索引表中位置在证书中提取签名算法,按照证书的整体内 容和提取的算法计算出证书的签名,与解密后的证书签名数据比较,如果相等 则认为证书有效。如果不等,证书验证失败。过程如图4所示。
如果验证的是证书链,需要从第一个证书起,根据证书位置信息列表中发 行机构名称的位置信息,提取发行机构的信息,计算其哈西值,保存在共享内 存中。然后同样根据位置信息索引表提取后面一个证书的哈西值,保存在共享 内存中。比较两个哈西值是否相同,如果相同这向后移动一个证书,重新进行 计算,直至最后一个证书,最后按照自签名证书进行验证。如果不同,认为证 书链验证失败。过程如图5所示。
8) 有效期验证
因为智能卡本身不具有时钟信息,如果需要验证有效期,在应用程序请求
验证的时候需要通过APDU将时间信息发送到卡中,证书验证程序根据位置信息
列表中的位置信息提取有效期信息,比较应用程序发送过来的时间是否处于有
效期之内,如果位于有效期之内,证书有效。否则,证书验证失败。
9) 证书是否在证书撤销列表中
证书撤销列表数据信息 一般比较大,需要应用程序中将撤销的证书序列号
提取出来,通过APDU发送到卡中,证书验证程序根据位置信息列表提取证书序 列号,在撤销证书序列号列表中查询证书序列号是否包含在其中,如果没有包 含在其中,证书有效。如果包含在其中,证书验证失败。
上面对本发明所述的在智能卡中调用X. 509服务器证书或证书链的方法进 行了详细的说明。对本领域的一般技术人员而言,在不背离本发明实质精神的 前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将 承担相应的法律责任。
ii
权利要求
1、一种智能卡,该智能卡带有微处理器和至少用于存储服务器证书或证书链的存储器,其特征在于还包括一个位置信息索引表,该位置信息索引表用于保存所述证书或证书链中各数据项目信息相对于证书或证书链的位置信息;所述的微处理器根据应用程序的请求,通过查找位置信息索引表中相关数据项目信息的位置来解析存储器中相应的证书或证书链的数据项目信息。
2、 如权利要求1所迷的智能卡,其特征在于所述的数据项目信息包括 证书中的版本信息、证书序列号、证书使用的签名算法、证书的有效期、证书 所有人的名称、证书所有人的公开密钥、证书发行者对证书的签名和/或证书扩 展项目数据。
3、 如权利要求1或2所述的智能卡,其特征在于所述的服务器证书或证 书链为X. 509服务器证书或X. 509服务器证书链。
4、 一种在智能卡中调用服务器证书或证书链的方法,其特征在于,包括下 述步骤智能卡在获得服务器证书或证书链数据后,扫描整个证书或证书链数 据;解析出各数据项目信息在证书或证书链数据中的相对位置;按照证书或证 书链中各数据项目在证书中的相对位置建立位置信息索引表;分析应用程序所 请求的数据信息项目;按照所请求的数据信息项目搜索位置信息索引表;按照 位置信息索引表中该数据信息项目的位置信息从存储器中仅提取所请求的数据 信息项目;将提取的数据信息项目返回应用程序。
5、 如权利要求4所述在智能卡中调用服务器证书或证书链的方法,其特征 在于所述应用程序所请求的数据信息项目,具体可以为请求解析数据信息项 目或者请求验证数据信息项目。
6、 如权利要求4所述在智能卡中调用服务器证书或证书链的方法,其特征 在于所述的按照证书或证书链中各数据项目在证书中的相对位置建立位置信 息索引表的步骤具体为判断证书数据为服务器证书还是服务器证书链;如果是服务器证书,则按照证书各数据项目信息在证书中的相对位置建立位置信息索引表;如果是服务 器证书链,则解析出整个证书链中证书的个数,将其存入位置信息索引表位置0 处,并在位置0后按序定义证书链中各证书的保存位置,将各证书的数据项目 信息在证书中的相对位置信息存放在位置信息索引表中所对应各证书的保存位 置中。
7、 如权利要求4 、 5或6所述在智能卡中调用服务器证书或证书链的方法, 其特征在于所述的数据项目信息包括证书中的版本信息、证书序列号、证 书使用的签名算法、证书的有效期、证书所有人的名称、证书所有人的公开密 钥、证书发行者对证书的签名和/或证书扩展项目数据。
8、 如权利要求4 、 5或6所述在智能卡中调用服务器证书或证书链的方法, 其特征在于所述的服务器证书或证书链为X. 509服务器证书或证书链。
全文摘要
本发明公开了一种智能卡以及在智能卡中调用服务器证书或证书链的方法。为了克服现有技术中在内存资源有限的智能卡上无法完成服务器证书的调用的问题而发明。本发明是通过在智能卡中建立位置信息索引表,用以保存服务器证书或证书链中各数据项目信息相对于证书或证书链的位置信息来实现的。这样,当应用程序根据需要发出对某个或某些个数据项目信息的请求时,微处理器只需根据应用程序的请求,通过查找位置信息索引表,从而从存储器中调出相应的证书或证书链的数据项目信息,返回给应用程序即可,而不需要完全解析备份证书的所有信息,从而能节约大量的内存资源,减少解析时间。
文档编号G07F7/12GK101493967SQ20081024754
公开日2009年7月29日 申请日期2008年12月30日 优先权日2008年12月30日
发明者石玉平, 贾庆刚 申请人:北京握奇数据系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1