首页> 中国专利> 用于基于浏览器对智能卡进行访问的系统和方法

用于基于浏览器对智能卡进行访问的系统和方法

摘要

一种能够在主计算机上从浏览器内部执行的客户侧应用扩展,所述浏览器具有执行至少一个浏览器插件,以便通过所述浏览器为用户提供访问智能卡的能力,所述智能卡被连接到具有智能卡资源管理器的所述主计算机。所述浏览器扩展具有指示中央处理单元通过与网络浏览器和平台无关的接口模块和与浏览器和平台相关的包装器模块访问智能卡上的数据的指令,与浏览器和平台相关的包装器模块连接到所述与浏览器和平台无关的接口模块,并且连接到具有函数处理模块的所述智能卡资源管理器,所述函数处理模块可以操作以便接收对用于访问智能卡上的数据的所述至少一个函数的调用,并且用于将所述函数调用变换为对所述智能卡资源管理器的相应调用。

著录项

  • 公开/公告号CN101821715A

    专利类型发明专利

  • 公开/公告日2010-09-01

    原文格式PDF

  • 申请/专利权人 金雅拓股份有限公司;

    申请/专利号CN200880111518.5

  • 发明设计人 K·萨赫德瓦;K·克里希纳;

    申请日2008-08-26

  • 分类号G06F9/44(20060101);G06F17/30(20060101);

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人李向英

  • 地址 法国默东

  • 入库时间 2023-12-18 00:39:50

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-07-23

    授权

    授权

  • 2010-10-20

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20080826

    实质审查的生效

  • 2010-09-01

    公开

    公开

说明书

技术领域

本发明总体上涉及对智能卡的应用程序访问,并且更特别地,涉及用于允许在网络浏览器中执行的用户应用访问智能卡中的功能和数据的方法和系统。

背景技术

智能卡是没有输入和输出装置的小型安全个人计算机。智能卡的典型应用包括用户鉴别、存储私人数据和作为电子钱包使用。对于这些应用以及其它应用,与智能卡交互的通常模式是来自在智能卡连接到其上的主计算机上执行的主机应用。

例如,对基于智能卡的公共密钥基础结构功能性的主机应用程序访问,典型地是通过安装提供可从应用程序调用的应用程序接口的中间件实现的。然后,中间件典型地经由某读卡器的形式执行与智能卡硬件的交互。一种普遍可用的体系结构是基于来自PC/SC工作组的PC/SC规范。图1是示出PC/SC规范的实施例的高级别图。在主计算机103上运行的智能卡感知应用101通过主计算机中间件105和智能卡资源管理器107访问智能卡104a-d。智能卡资源管理器107接着与主计算机103连接到其上的各种智能卡读卡器111a-d的驱动程序109a-d交互。

该体系结构向智能卡的配置引出了几个问题。这些问题包括将中间件部件加载到主计算机上并且更新中间件部件的要求。当智能卡被用于与基于网络的应用一起使用时,这变成特别不期望的要求。

逐渐地,网络应用已经变得普通并且允许与平台无关的对在因特网上可得的数据和服务的访问。例如,诸如在线电影租赁和基于网络的电子邮件应用的网络服务已经变得非常流行。联网计算机的几乎无所不在的配置和广泛采用基于网络的应用的一个优点是这种方案将用户从虚拟范围迁移到用户自己的计算机。例如,通过使用诸如谷歌的Gmail的基于网络的电子邮件服务,这些服务的订户能够从连接到网络的任何计算机访问他们的电子邮件。

现在,考虑将智能卡添加到基于网络的环境。如果用户拥有用于存储例如口令、账户信息或数字证书或者用于执行例如密码服务的某种安全功能的智能卡,并且如果当在除属于用户的计算机之外的计算机上执行某些基于网络的事务时用户希望使用智能卡,用户将必须在用户希望使用的特定主计算机103上安装主计算机中间件105并且可能必须安装适当的IFD驱动程序109。该主计算机的所有者可能没有给予用户用于安装中间件软件的足够的特权。此外,所有者可能不希望将这种中间件软件安装在计算机上,或者,如果所讨论的计算机是公共计算机,例如在机场和图书馆中的公用电话亭中找到的计算机,授权安装该中间件部件的人甚至可能找不到。该问题是在这种安全保护将具有特别高价值的环境中阻碍能够使用智能卡用于其中提供的安全方案智能卡的用户的一个问题。同样地,更新中间件存在类似的问题。

另一个问题是网络浏览器向中间件暴露接口的方式。因为流行的基于网络的浏览器,例如Firefox和IE,向中间件提供不同的接口,与这种中间件相关的网络应用必须是网络浏览器感知的。换句话说,网络应用必须特定于每个网络浏览器开发,或者必须进行内部检查以确定正在使用哪个网络浏览器,并且具有寻址适当中间件的能力。

这些问题是非常不好的。当网络变成广泛使用的用于许多类型事务的虚拟市场时,网络非常易于发生诸如私人账户的欺骗使用、身份盗用和私人数据盗用的安全问题。智能卡理想地适于解决这种问题。例如,智能卡可以被用于安全存储用户凭证,并且可以被用作登录过程的组成部件,从而提供两因子鉴别。然而,在用户希望在访问网络服务中使用的主计算机上安装中间件的必要性阻碍了智能卡有效地用于某些这种使用。

与密码服务一起使用智能卡可以是有益的。因为这种智能卡可以被用于存储用户的私人密钥和数字证书。此外,智能卡还可以被用于执行诸如加密消息、解密消息、提供用户登录和使用用户的私人密钥数字地签署文档的密码操作。以上提到的在智能卡的配置中的问题在它们用作密码装置时更加加重了。

因为硬件权标、甚至软件安全装置呈现不同接口,并且使用不同协议,业界已经致力于用于以与硬件无关的方式访问诸如存储和访问证书、签署或加密数据等的密码性能的各种规范。用于提供这种对密码的硬件无关访问的主要竞争标准有两个:Crypto API(CAPI)和PKCS#11。这两个标准与不同的操作系统平台和网络浏览器大大相关联。CAPI是用在来自华盛顿雷德蒙的微软公司的Windows操作系统中的标准,并且作为Windows操作系统的标准功能提供。其是用于实现微软的IE的密码标准。RSA实验室开发的PKCS#11可用在几个台式机操作系统中,并且是可经由Firefox网络浏览器从Mozilla机构本土地获得的。在两个方法之间存在类似处和不同处。

在用于使用智能卡提供密码服务的传统方法中,开发者将开发用于将要作为电子邮件客户和诸如台式机登录或虚拟个人网(VPN)的其它应用的插件程序安装的CAPI或PKCS#11的主机模块。这些模块不是以下操作系统安装的一部分。

从上文可以看出,明显地有提供对智能卡的网络应用访问的改进的方法的需要。

附图说明

图1是示出PC/SC规范的实施例的高级别视图的框图。

图2是示出图1的智能卡的体系结构的高级别视图的框图。

图3是示出其中网络浏览器应用与智能卡交互的实施例的框图。

图4是示出智能卡资源管理器网络浏览器应用接口程序的实施例的框图,其中智能卡资源管理器网络浏览器应用接口程序被划分成两部分:智能卡资源管理器包装器网络浏览器扩展和智能卡应用接口脚本模块。

图5是其中用户可以尝试执行网页的网络的示意图。

图6是示出SConnect.PCSC类的实例和使用它与智能卡交互的框图。

图7是示出当用户尝试执行要求使用智能卡的网络应用时的消息流的时序图。

图8是示出消息流和在向智能卡创建异步命令期间发生的定时的时序图。

图9是示出用于从在远程计算机系统上执行的远程服务器获得卡特定驱动程序的序列的时序图。

图10是示出过程流的时序图。

图11是允许用户给予或拒绝网站使用从网站下载的javascript与智能卡交互的批准的示例用户对话窗口。

图12是允许用户管理被允许和不被允许使用从网站下载的javascript与智能卡交互的网站的列表的示例用户对话窗口。

图13是示出用于允许或不允许网站使用从网站下载的javascript与智能卡交互过程流的时序图。

具体实施方式

在以下的详细描述中,参考通过图示的方式示出其中本发明实施的特定实施例的附图。这些实施例被足够详细地描述,以使得本领域的技术人员能够实施本发明。应该理解,本发明的各种实施例虽然不同,但并不必然相互排斥。例如,这里结合一个实施例描述的一个特定特征、结构或特性可以在其它实施例中实现,而不偏离本发明的精神和范围。此外,应该理解,可以修改在每个公开的实施例中的各个元件的位置或布置,而不偏离本发明的精神和范围。因此,以下的详细描述不应理解为限制意义,并且本发明的范围仅仅由所附的权利要求限定,适当地解释为,在权利要求的等价物的整个范围上授权。在附图中,相似的附图标记指在几个视图中相同或类似的功能。

在本发明的实施例中,网络浏览器扩展提供网络浏览器应用和在大多数计算机中找到的智能卡资源管理器(PC/SC)之间的接口。网络浏览器扩展将网络浏览器应用与智能卡资源管理器隔离。此外,网络浏览器扩展经由智能卡资源管理器提供网络浏览器应用和连接到其上运行有网络浏览器的主计算机103上的智能卡之间的绶讯道,网络浏览器扩展在主计算机网络浏览器中执行。

图3是示出其中网络浏览器应用A 300a与智能卡A 104a交互的实施例的框图。如在现有技术的例子中,每一种类型的智能卡104使用那种智能卡类型特定的驱动程序。在图3的实施例中,在优选实施例中,该卡特定驱动程序实现为脚本模块301。如果还没有下载卡特定驱动程序301,其如这里以下结合图9描述的那样,使用例如被称为按需Javascript的技术被加载。

卡特定驱动程序301经由智能卡资源管理器网络浏览器应用接口程序303与智能卡104a通信。智能卡资源管理器网络浏览器应用接口程序303是与网络浏览器脚本、例如Javascript结合的网络浏览器扩展,其在智能卡资源管理器107上起包装器的作用。

智能卡资源管理器网络浏览器应用接口程序303提供使得网络应用能够与标准智能卡104通信的连通性技术。主机(PC)应用经由在主机操作系统中称为PC/SC的专用通信层连接到智能卡104。类似地,可以与智能卡104通信的网页或应用的部件是嵌入式脚本,通常是Javascript。除非直接或经由插件程序间接置入到网络浏览器中,在网页中的脚本不能与主计算机的硬件通信。智能卡资源管理器网络浏览器应用接口程序303使用利用提供这种功能性的典型网络浏览器技术的标准主机通信框架,使能在网页中的Javascript和在网络浏览器中显示该网页的主机中的智能卡104之间的通信信道。智能卡资源管理器网络浏览器应用接口程序303是与网络浏览器无关的,并且提供典型智能卡通信API,以便最小化使用该技术向网络应用提供智能卡连通性的开发者的学习曲线。概念上,智能卡资源管理器网络浏览器应用接口程序303提供与XmlHttpRequest对象行为类似的连通性,这允许AJAX网络应用开发。虽然XmlHttpRequest提供Javascript和服务器之间的连通性,智能卡资源管理器网络浏览器应用接口程序303提供应用Javascript、即网络浏览器应用101和智能卡104之间的连通性。

图4是示出智能卡资源管理器网络浏览器应用接口程序303的一个实施例的框图,其中智能卡资源管理器网络浏览器应用接口程序303被划分成两部分:智能卡资源管理器包装器网络浏览器扩展401和智能卡应用接口脚本模块403。

智能卡资源管理器包装器网络浏览器扩展401是增强网络网络浏览器的默认功能性以创建到PC/SC实施方式的信道的程序。每个网络网络浏览器203(例如,来自Mozilla机构的Firefox、来自微软的IE、来自加利福尼亚州库珀蒂诺的苹果公司的Safari、来自挪威奥斯陆的Opera Software ASA的Opera)都具有它自己的创建扩展的规定手段。因此,相应的智能卡资源管理器包装器网络浏览器扩展401可用于每个支持的网络浏览器。扩展可经由Javascript访问。

如以上所提到的,网络浏览器具有不同的写扩展方式,并且在某些情形中,具有不同的交互方式。为了给开发者提供多产的环境,可以经由智能卡应用接口脚本模块403得到向开发者隐藏所有与网络浏览器的代码相关的库脚本。智能卡应用接口脚本模块403向将应用程序101与其中网络浏览器期望扩展被写入和交互的独特方法隔离的PC/SC层提供面向对象的接口。

表1是访问智能卡104的示例网络浏览器应用101。在表1的例子中,

<html>

  <head>

     <script src=″sconnect.js″language=″javascript″></script>

     <script language=″javascript″>

       function RunDemo()(

          //instantiate the PCSC class

           var pcsc=new SConnect.PCSC();

          //get the name  of  readers which have smart cards

                 //inserted in them.

                 var readers  =pcsc.listReaders(1);

          //connect to the  first reader

                var res=pcsc.connect(readers[0],

                               SCardAccessMode.Shared,

                               SCardProtocolIdentifiers.TO);

                if(res===false){

                    //error connecting.

                          alert(″problem connecting to

                          reader-″+readers[0]);

                    return;

               }

         //send an APDU to the card,return value will be

         //the status word

         res=pcsc.transmit(″00A40400081122334455667788″);

         //if card requires GetResponse APDU(00C00000XX)

         //then it is better to use exchangeAPDU method

         res=

        pcsc.exchangeAPDU(″B03800000B0102030411220908070605″);

         //disconnect with LeaveCard disposition mode

         pcsc.disconnect(SCardDisposition.LeaveCard);

         //dispose the pcsc object to release the resources

         pcsc.dispose();

       }

     </script>

   </head>

   <body>

      <input type=″button″value=″click me″id=″but1″

onclick=″RunDemo();″>

   </body>

</html>

表1.使用智能卡资源管理器Wrapper.js的基本网络应用的代码

表1的代码是执行脚本(Javascript)的基本网页,其通过发送APDU与智能卡通信。表1的代码以下载智能卡应用接口脚本模块403开始(在该例子中,智能卡应用接口脚本模块被称作SConnect.js)。应用接口模块403,即sconnect.js脚本库处理与网络浏览器相关的代码,其通过以下语句被包括在网页的开始:

<script src=″sconnect.js″

language=″javascript″></script>

因此,使网络开发者能够自由地聚焦在智能卡交互逻辑上。

智能卡应用接口脚本模块403或者已经下载在网络浏览器会话中,或者可以从用户与之交互的远程服务器站点下载。

应用程序300典型地以创建SConnect.PCSC类的对象开始。如果要安装网络浏览器特定智能卡资源管理器包装器网络浏览器扩展401,创建对象的构造程序(构造程序是当创建对象时执行的类中的特殊指令块)将其实例化。否则,构造程序放弃system.BrowserExtensionNotInstalledException。以对智能卡资源管理器包装器网络浏览器扩展401(等价于PC/SC API的SCardEstablishContext)中establish Context的调用完成对象的成功创建。以下行示出了怎样创建SConnect.PCSC类的对象。

var pcsc=new SConnect.PCSC();

另一方面,如果system.BrowserExtensionNotInstalledException通过<script>命令被放弃,执行网络应用的用户就被邀请从远程服务器安装Smart Card Resource Manager Wrapper.js303。

因此,呼叫

var pcsc=new SConnect.PCSC();

创建新的对象-pcsc。pcsc对象具有可以从网络浏览器应用300调用的方法。这些方法在智能卡应用接口脚本模块403中具有相对物,而智能卡应用接口脚本模块403在智能卡资源管理器(PC/SC)107中具有相对物函数。因此,智能卡资源管理器包装器网络浏览器扩展401向可以由网络浏览器应用300调用的智能卡资源管理器(PC/SC)107提供面向对象的接口。

图5是其中用户501可以尝试执行网页的网络的示意图。用户501正在操作在主计算机103上显示窗口503的网络浏览器203。用户希望与在或许用于在网络509上执行某种形式的在线事务的远程计算机系统507上执行的远程网络服务器505交互。为了确保事务,用户501使用经由接口装置111连接到主计算机103的智能卡104。

作为网络浏览器会话的一部分,可能已经安装了智能卡管理器包装器网络浏览器扩展401。在一个替代实施例中,智能卡资源管理器包装器网络浏览器扩展401没有安装在网络浏览器203中。在智能卡资源管理器包装器网络浏览器扩展401已经安装的情形中,不提示用户安装智能卡资源管理器包装器网络浏览器扩展401。另一方面,如果还没有安装智能卡资源管理器包装器网络浏览器扩展401,用户501被邀请从在远程服务器系统513上运行的服务器(例如,www.sconnect.com)511下载智能卡资源管理器包装器网络浏览器扩展401。作为替代,正在由用户501执行的网页的提供者可以从由提供者操作的网站提供智能卡资源管理器包装器网络浏览器扩展401。

因为主计算机103可以具有许多连接到其上的智能卡读卡器111,智能卡资源管理器网路浏览器应用接口程序303使用listReader(readersWith Card)函数提供列表读卡器的方式。指定变元“true”将仅仅列出那些具有在其中插入智能卡的读卡器,返回所有读卡器的其它名称

var readers=pcsc.listReaders(true);

对pcsc对象的listReaders方法的该调用导致对智能卡资源管理器包装器网络浏览器扩展401中相应函数的调用,例如,称为PCSC-SCardListReaders的调用智能卡资源管理器(PC/SC)107的SCardListCards()函数的函数。

下一个步骤是连接到指定它的名称、连接模式(共享、排他或相互)和协议标识符(T0或T1)的读卡器111。返回值true表明成功创建。

var res=

pcsc.connect(readers[0],SCardAccessMode.Shared,SCardPro

tocolIdentifiers.T0);

在这一点上,网络浏览器203准备将命令发送到读卡器,并且经由读卡器发送到到其已经建立了成功的连接的智能卡101。在一个实施例中,以ISO-7816APDU格式发送命令。在PC/SC中,这通过使用SCardTransmit API完成。在一个实施例中,智能卡资源管理器包装器扩展303提供API transmit(command)来完成它。

var response=

pcsc.transmit(″00A40400081122334455667788″);

在这种与智能卡104的典型交互中,响应是状态词和数据。状态词是2字节值,大多数时间它的含义由主机应用解释,而某些状态词被标准化并由ISO7816-4指定。

var statusWord=response.StatusWord;

var retVal=response.retVal;

一个这样的状态词是61XX,其中XX指示要由主机应用使用GetResponse command(00C00000XX)检索的字节数量。因为通常检索操作的序列被要求使用GetResponse command检索响应数据,一个实施例包括exchangeAPDU方法以执行GetResponse command的序列,直到已经检索所有数据。

response=

pcsc.exchangeAPDU(″B03800000B0102030411220908070605″);

最后,应用101通过调用SConnect.PCSC类的dipose方法断开读卡器111并且释放资源。在PC/SC中,当(使用SCardDisconnectAPI)断开时,指定在断开之前对智能卡采取的动作可以被指定为处置模式。这些动作的例子是LeaveCard,ResetCard,UnpowerCard和EjectCard。如果没有使用断开函数,那么dispose使用LeaveCard动作断开。

pcsc.disconnect(SCardDisposition.LeaveCard);

pcsc.dispose();

图6是示出了SConnect.PCSC类的实例并且使用该实例与智能卡通信的方框图。当网络浏览器应用执行“pcsc=newSConnect.PCSC”指令时,实例化SConnect.PCSC类的实例601。对象601包含具有至少一个变元的方法transmit603;典型地,该方法可被认为是来自SConnect.PCSC类的继承。该变元是将被传输到智能卡104的APDU消息。

网络浏览器应用300可以包括调用PCSC对象601的transmit()方法603的至少一个指令605,该指令的执行引发对PCSC对象601的transmit方法的调用,PCSC对象601是具有将被传输到智能卡104的特定APDU变元的消息601。

SConnect.PCSC类定义规定该transmit方法引发对PCSC_transmit函数,即,指令609的调用。PCSC_transmit函数是智能卡资源管理器包装器网络浏览器扩展401的函数。因此,对PCSC_transmit函数,即,指令609的函数调用的执行引发函数调用611,函数调用611传递将被传输到智能卡104的APDU。

PCSC_transmit函数在智能卡资源管理器包装器网络浏览器扩展401中的实现包含调用智能卡资源管理器(PC/SC)107的SCardTransmit函数的指令613。该指令的执行引发对智能卡资源管理器(PC/SC)107的相应函数调用615。

智能卡资源管理器(PC/SC)107的SCardTransmit函数引发通过SCardTransmit函数的变元列表接收的APDU向智能卡104的传输。

如果已经安装了智能卡资源管理器包装器网络浏览器扩展401,由智能卡资源管理器(PC/SC)107检测到的智能卡插入事件被传输到智能卡资源管理器包装器网络浏览器扩展401。当检测到智能卡104的插入或试图使用其用户501未被验证的智能卡104时,需要用户501成功地验证他自己。因此,当智能卡资源管理器包装器扩展303通知正在进行调用的网络浏览器应用300已经插入了智能卡104,并且网络浏览器应用300试图调用智能卡资源管理器包装器网络浏览器扩展401内的函数时,智能卡104或智能卡资源管理器(PC/SC)107将返回用户已经或尚未被验证的指示。在后一种情况下,网络浏览器应用300可以显示登录屏幕,以便给用户501提供登录到智能卡104的机制。

图7是示出了当用户501试图执行需要使用智能卡104的网络应用时的消息流的时序图。用户501在主计算机103上执行网络的网络浏览器203。用户501在步骤701试图访问远程服务器505上的网络应用。相应于该网络应用的网页被传输到网络浏览器203。该网络应用包括对智能卡资源管理器包装器扩展303脚本的调用。在步骤705,如果智能卡资源管理器包装器扩展303已被安装在网络浏览器203内,则在步骤707,可以开始与智能卡104的通信。

在另一方面,如果智能卡资源管理器包装器网络浏览器扩展401尚未安装,则在步骤708提示用户501下载(如果必要)并且安装智能卡资源管理器包装器网络浏览器扩展401。这将通常通过给用户501提供链接来执行,对该链接的点击将引起步骤709的从服务器511请求智能卡资源管理器包装器网络浏览器扩展401,可以从服务器511装入智能卡资源管理器包装器网络浏览器扩展401。作为响应,服务器511在步骤711返回智能卡资源管理器包装器网络浏览器扩展401,并且智能卡资源管理器包装器网络浏览器扩展401在步骤713被装入网络浏览器203。在步骤707可以发生与智能卡104的通信。

网络浏览器应用通常在一个线程内执行。一个线程是可被与其它线程并行执行的指令序列,但是在该线程内指令彼此相继。与智能卡104的交互通常相对费时。由于应用的指令在一个线程中执行时的这种延迟,连接智能卡104的命令或向智能卡104发出的命令可能导致用户501的网络浏览器203的会话看似被锁定的非常不快的经历。更好的方法是允许用户501继续与网页交互或显示某些状态信息,例如,状态进度条。

在一个实施例中,异步地执行连接智能卡104的操作或与智能卡104通信的命令。表II是示出了到智能卡104的命令异步传输的代码段。

<script language=″JavaScript″>

   var responseSuccess=function(o){

      alert(″Status word is:″+o.statusWord);

      alert(″Return value is:″+o.retVal);

   };

   var responseFailure=function(o){

      alert(″Exception is:″+o.exception);

   };

   var callBack={

      success:responseSuccess,

      failure:responseFailure

   };

   function RunDemo(){

   ...

   ... 

   pcsc.async_transmit(″00A40400081122334455667788″,callBack);

 }

</script>

表II用于智能卡命令的异步执行的代码

为了提供异步命令的创建,智能卡资源管理器包装器网络浏览器扩展401包括提供智能卡资源管理器(PC/SC)107的命令执行完成时的回调的函数。因此,智能卡资源管理器包装器网络浏览器扩展401提供async_transmit函数。其第一个变元是用于从主计算机103的传输的APDU分组,并且第二个变元是从该命令返回时调用的函数。“回调”函数通常指定将根据智能卡104或智能卡资源管理器(PC/SC)107的命令执行所获得的结果采取的某些动作。

图8是示出了消息流和针对智能卡104的异步命令创建期间发生的定时的时序图。对于这个例子,认为应用101是表II中的代码。在位置801,主计算机103执行RunDemo函数。当主计算机103遇到pcsc.async_transmit函数时,在变换803,主计算机103将控制传递给智能卡资源管理器包装器网络浏览器扩展401。pcsc.async_transmit函数在新线程中向智能卡资源管理器107发出transmit()调用805。应用101在调用807之后继续执行。在通过调用pcsc.async_transmit产生的新线程中,智能卡资源管理器107向ifd 111(未示出)发送命令,并且最终在步骤809向智能卡104发送命令。在这些交互在智能卡资源管理器107和智能卡104之间发生的同时,应用101在原始线程中继续执行811。

在连接尝试之后的某个时刻,智能卡104做出响应813,并且智能卡资源管理器107在步骤815和817通过返回智能卡资源管理器包装器网络浏览器扩展401的async_transmit()函数向应用101返回一个状态。使用指定从第二个线程返回后将被调用的“回调”函数的async_transmit()函数的第二个变元,在步骤819,主计算机103将控制传递给应用101的callback()函数。

在建立针对智能卡104的连接时,可以采用一种非常类似的异步机制。主要差异是对于连接将应用不同的命令。

如上所述,如果用于特定智能卡104的卡特定驱动程序301尚未被安装,在检测到新的智能卡104时,智能卡资源管理器包装器扩展303引起从远程服务器获得的卡特定驱动程序301的执行。图9是示出了用于从运行在远程计算机系统513上的远程服务器511获得卡特定驱动程序301的序列的时序图。如果卡特定驱动程序301尚未被装载,则执行引导脚本900,以便如果远程服务器511具有可用于所讨论的卡的卡特定驱动程序301,则引发从远程服务器511下载正确的卡特定驱动程序301。

在步骤901,智能卡104被物理地连接到主计算机103。在步骤903,这触发被智能卡资源管理器107检测到的智能卡插入事件。智能卡资源管理器(PC/SC)107提供API和事件,从而智能卡资源管理器网络浏览器应用接口程序303可以通过事件循环监视卡插入和取出。智能卡资源管理器107向智能卡104传输进行应答复位(ATR)的请求905。智能卡104以ATR907响应,ATR907被传输到网络浏览器203;具体地,在步骤909被传输到智能卡资源管理器网络浏览器应用接口程序303。

如果在步骤911智能卡资源管理器网络浏览器应用接口程序303可以确定已经装载了适当的卡特定驱动程序301,网络浏览器203可以在步骤913进入与卡的通信。否则,ATR被传输到远程服务器511。远程服务器511在步骤917确定它是否可以从ATR识别智能卡104。在许多情况下,可从ATR中的被称为historical bytes的字段识别智能卡104。如果可以从ATR确定智能卡104的类型,在步骤919卡特定驱动程序301被传回主计算机103。

如果服务器511不能从ATR识别智能卡104,远程服务器511向主计算机103传回指示不能从ATR唯一地识别智能卡104的消息,即,消息921。在消息921中,远程服务器511包括智能卡104要执行的命令。该命令被选择为揭示智能卡104的容量的命令。例如,为了测试智能卡104是否是JavaCard,该命令可以是对智能卡104的getStatus()请求,通过返回所支持的应用的应用标识符(AID),智能卡104响应该请求识别智能卡104支持的应用;对于本地智能卡104,该命令可以是将被测试的特定本地智能卡104所支持的已知操作,在该情况下,预期的返回将是该操作的预期结果;例如,对于来自德克萨斯州奥斯汀市的Gemalto公司的Gemalto.NET卡,该测试命令可以是查询智能卡104是否支持被称为mscm的服务。

引导脚本900接收该命令,并且在步骤923将该命令转发到智能卡资源管理器107,智能卡资源管理器107又在步骤925将该命令转发到智能卡104。智能卡104在步骤927执行该命令,并且在步骤929返回结果。该结果被在步骤931转发到引导脚本900,并且在步骤933转发到远程服务器511。远程服务器511在步骤935从该结果确定智能卡104是否是已知的,并且具有所支持的驱动程序。如果远程服务器511确定智能卡104作为服务器511正对其进行测试的智能卡104应答,服务器511在步骤937将卡特定驱动程序301传回主计算机103。在一个实施例中,被传回主计算机103的是下载卡特定驱动程序301的链接。

在另一方面,如果从智能卡104返回的结果与正被测试的智能卡104的预期结果不匹配,服务器511可以在步骤939测试另一个智能卡104。如果存在要被测试的更多智能卡104,远程服务器511在步骤921返回将被智能卡104执行的另一个命令。然而,如果没有更多要被测试的智能卡104,即,已经测试了服务器511具有卡特定驱动程序301的所有智能卡104,指示智能卡104不被支持的错误消息,即,消息941被返回到主计算机103。

应当注意,虽然相同的服务器511用于下载智能卡资源管理器包装器网络浏览器扩展401(如上所述),这仅是出于说明的目的。可以从完全无关的远程服务器装载卡特定驱动程序301和智能卡资源管理器包装器网络浏览器扩展401。

如上面讨论的,密码服务是智能卡104的许多重要应用之一。迄今为止,由于具有两种不兼容并且相互竞争的系统PKCS#11和CAPI的传承,密码解决方案的实现非常麻烦。传统地,智能卡应用开发者为PKCS#11和CAPI编写和部署主机模块。如上面讨论的,这引出了若干不希望的后果。

通过使用利用智能卡资源管理器网络浏览器应用接口程序303(例如,如上所述,智能卡资源管理器包装器网络浏览器扩展401和智能卡应用接口脚本模块403的组合)、引导脚本900以及相关联的处理流的上述技术,应用开发者能够避免依赖和负担主计算机103上的密码中间件。

考虑智能卡104具有PKCS#11能力,并且开发者希望开发使用智能卡104利用这些密码能力数字地签署电子邮件消息的应用的情况。然后通过卡特定驱动程序301(使用引导脚本900装载)在智能卡资源管理器包装器扩展303上开发特定应用101,以便直接访问这些密码能力。

图10是示出了该处理流的时序图。

在我们的网络应用的背景中的这种实现的工作流如下。考虑用户Alice希望使用存储在她的智能卡104内的PGP密钥签署电子邮件消息。

.Alice在步骤153使用例如Firefox网络浏览器203通过SecureSociety的网络接口,消息155,访问Secure Society的SMail151(即,运行在远程网络服务器上的应用)。

.Alice在步骤157写电子邮件,她希望使用存储在其智能卡104内的PGP密钥签署该电子邮件。她在步骤159点击签署电子邮件图标/按钮。如果Firefox网络浏览器203不能使用SConnect,即,智能卡资源管理器包装器网络浏览器扩展401未被安装,则她被提示安装智能卡资源管理器包装器网络浏览器扩展401。

.引导JavaScript900(例如,在步骤161从SMail服务器下载的)确定她的智能卡104的ATR,即,消息163和165,并且在步骤167将它送回SMail服务器151(使用AJAX)。

.SMail服务器151查找数据库,以便确定智能卡104的相应智能卡特定PKCS#11JavaScript模块(即,上面使用的术语中的卡特定驱动程序301),并且响应以前的请求在步骤169将其送回。

.一旦下载了卡特定驱动程序301,卡特定驱动程序301开始与智能卡104通信(使用智能卡资源管理器网络浏览器应用接口程序303)。通过请求将加密的消息从服务器511发送到智能卡104,确保安全通信。

.卡特定驱动程序301(现在在网络浏览器203上执行)在步骤171以PIN输入对话框提示Alice,以便向她的智能卡104进行验证,或提示其它登录过程。

.一旦成功地验证,在步骤173选择Alice的智能卡中的适当证书。在她的智能卡104包含许多证书的情况下,它们被显示出来,并且提示Alice选择它们中的一个。

.在证书选择之后,在步骤175,卡特定驱动程序301以及,例如,ASP.NET处理程序与智能卡104交互数据,以便签署Alice的邮件的内容。通过对智能卡资源管理器网络浏览器应用接口程序303进行调用来执行这些通信,用于如上文所述的将数据发送到智能卡104。

.在步骤177,由智能卡104根据PGP规范包装该签名。

.在步骤179,签署后的消息被送回网络浏览器,并且在步骤181,被网络浏览器送回网络邮件应用151。

在替代实施例中,针对由在连接了智能卡104的主计算机103上执行的application.js javascrip101进行的对智能卡104的访问尝试,进行关于用户是否希望授权进行javascrip101和智能卡104之间的提议交互的查询。在一种操作情况下,网站505可能被以恶意意图设计为通过欺骗用户获得机密用户信息,或被设计为对智能卡104进行拒绝服务攻击。在后者情况下,application.js javascrip101可以例如被设计为反复地向智能卡104呈现不正确的登录凭证。大部分智能卡104具有对所允许的不正确登录尝试数目的限制。当超过该限制时,智能卡104被锁定,并且如果没有,例如,来自卡发行者的高级别干预就不能使用。

图11示出了当网络浏览器扩展401检测到访问智能卡104的尝试时显示给用户的示例用户对话窗口,并且给出了对话241。在用户希望批准application.js javascrip101和智能卡104之间的交互的背景下,网站的URL(或用于标识网站的某些其它适当设备)被添加到批准列表中。如果用户拒绝访问,该网站被添加到未批准列表。以网络浏览器规定的机制(例如,cookies)管理这个列表。

图12示出了显示给用户以便编辑允许/禁止与智能卡104交互的网站的批准列表和未批准列表的示例用户对话窗口243。在一个实施例中,智能卡资源管理器网络浏览器应用接口程序303的安装引起网络浏览器菜单内,例如,在网络浏览器“Tool”菜单之下添加用于显示对话窗口243的菜单项。

图12是示出了使用批准列表和未批准列表,以便允许或拒绝应用javascript与智能卡104交互的权利的时序图。用户访问了一个网站(例如,http://evilweb.com)。通过上传应用javascript 101x,该网站试图部署针对智能卡104的攻击。当应用javascript 101x以消息253请求与智能卡104的交互时,网络浏览器扩展401在步骤255确定该javascript出自的网站是否在批准列表内。

如果该网站在批准列表内,从网络浏览器扩展401向javascript101x发送指示(例如,“ACC”),即,消息257,并且可以在步骤259开始交互。

如果网站不在批准列表上,网络浏览器扩展401在步骤261确定它是否在未批准列表内。如果该网站在未批准列表上,从网络浏览器扩展401向javascript 101x发送指出这种情况的消息(例如,“NACC”),即,消息263。

如果该网站不在任意一个列表内,在步骤265为用户显示对话窗口241(图11),以便决定是否允许继续。

在步骤267获得关于是否允许网站访问的用户决定。在步骤269,如果用户批准该网站与智能卡104交互,指示批准交互的消息(例如,“ACC”),即,消息271,被发送到javascript 101x,并且在步骤259,可以开始交互。可选择地,例如,如果用户已经勾选了对话窗口241中的指示应当记住该决定的选择框,在步骤273,该网站被添加到批准列表。

在步骤269,如果用户拒绝该网站与智能卡104交互的权利,指示未批准交互的消息(例如,“NACC”),即,消息275,被发送到javascript 101x。可选择地,例如,如果用户已经勾选了对话窗口241中的指示应当记住该决定的选择框,在步骤277,该网站被添加到未批准列表。

从前面可以明了,此处描述的技术提供了用于在网络应用背景中流畅地采用智能卡的有效机制。通过将网络浏览器扩展装入网络浏览器,并且以按需的方式将卡特定驱动程序网络浏览器扩展装入网络浏览器,避免了主机应用和智能卡之间的通信传统上所需的烦琐的中间件层。这些动态装载的扩展允许结合网络应用将智能卡用于以智能卡提供的许多强大应用,例如,密码,而不需要网络应用了解关于与智能卡交互的特定于网络浏览器的或特定于平台的要求。

虽然已经描述和说明了本发明的特定实施例,本发明不限于描述和所示的部件的特定形式或布置。仅以权利要求书限定本发明。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号