位置:51电子网 » 技术资料 » 其它综合

智能卡操作系统可执行本机代码

发布时间:2008/11/19 0:00:00 访问次数:757

  目前,智能卡微控制器的处理器绝大多数不具备任何种类的存储保护机制或执行任何管理程序的可能。随着程序计数器对此处理器的“外来”机器语言代码的编址,对全部存储器和全部功能的控制就完全取决于这些可执行的程序代码了。没有任何方法能够对可执程序的功能再予以限制,任何处于寻址的存储位置都可绕过存储管理或驱动程序进行读出,而位于eeprom或ram中的存储器则可写人。于是,所有的存储内容都可经卡接口轻而易举地传到终端。

  这正是有关能下载可执行程序的弱点。如果每一个人都被许可下载程序,或者有绕过保护机制的可能,则任何密钥或在整个存储区域中的其他秘密信息的安全性都不再有保证。这将是攻击智能卡的理想形式。智能卡对外部世界来说将仍以未受操纵的卡的相同方式行事,但专门的命令可被用来读出整个内存或是向部分存储器写人。

  虽然有着无懈可击的论点来反对第3方可下载程序。下载文件的生产者必须知道所有的入口点(转移地址)和操作系统程序的调用参数以便使用操作系统的重要功能。然而,操作系统制作者宁愿对内部进程和程序代码的地址尽可能少发布些信息,因为他们认为这些是秘密。此外,还必需去核查下载的代码是否按照要求去做而没有任何差错,也没有隐匿一个特洛伊木马,这只能由一个独立的团体来测试。

  对这个问题的最出色的方案,也是最有前途的方案是对智能卡中的实际处理器补充以硬件为基础的存储管理部件(mmu)。这是用一套硬件电路来检查运行程序代码是否保持在其设定的的界限内,只有那些被卡发行商鉴别过不会牺牲卡的安全性的才有可能被准许成为应用运营者的下载程序。每个这样的应用将被分配给作为其de的物理上连续的存储区,当在一df中的下载程序被调用时,mmu将监视有关的存储边界。如果这些边界被越出,经一中断将使此程序立即被停止,而应用的任何进一步作用都将被挂起于这项能力的规范几乎在所有的情况下都是机密的,而在某些情况下,甚至这项能力的存在也是秘密的。因此,这里我们仅能从一般原理上来叙述这项能力,而与任何真实的操作系统无关。接在基本原理的讨论之后,将详细描述一可能之实现。

  在智能卡中下载的程序代码在其能运行之前,首要的问题是必须满足某些基本的前提条件。它们似乎是明显的,但最重要的前提条件是必须知道处理器的类型(例如,8051或6805)。特别是在许多不同类型的智能卡微控制器的多机种环境中,满足这一需求经常要占用相当的工作量。随之而来的需求是还必须知道智能卡操作系统和应用编程接口api(applicationprogramming interface),包括所有人口点和由程序送出和回送的参数。

  下载的程序代码,它们经常是本机代码(目标处理器的机器代码),或者必须编写成可以重新定位的,或者当它在下载时必须由智能卡可顺便重新定位的。可重新定位的能力需求,意味着程序可在存储器中移动,其结果是代码所在的存储地址只有智能卡操作系统知道而外部世界是不知道的。使一个程序可重新定位需要在编程阶段进行。具体而言,可重定位意味着,例如,不允许跳转至绝对的实际地址,只能跳转到跳转命令地址的相对地址。

  如果程序代码满足所有这些需求,原则上它就可装入到智能卡存储器中并在那里运行。当然,程序代码可按需要构造,图3给出了可能的结构,但实际的结构完全可以是不同的,这取决于操作系统。在此例中的第1个数据元是个单独的标记,它告诉智能卡操作系统这是个程序代码。这样的标记通常被称为“幻数”(majic munmber)。例如,对于java class文件,这是一个四字节序列形成的字“cafebabe”。

  程序代码接着标记开始。在此例中,它被分成四部分。第1部分含有所有必需的初始化,数据存储等等。接着这个启动程序是拥有对所期望的任务的真正功能的代码程序。它又接以停车程序,后者是启动程序的对应部分。停车程序保证程序的正确结束,而如果需要时它将重新存储任何保留的数据并调整堆栈。

  程序的第4部分,它接在前三部分之后,是可选的。其中可含有能牢固结合到智能卡软件中去的程序代码,对操作系统错误的修补通常也都位于此处。前面三个程序将修改指针或处理得使本部分的程序永久性地链接至操作系统的软件。整个过程类似于在dos时代就已经熟知了的tsr(terminate and stay re⒍哎耐)程序。直到在下次复位之前,这些程序仅被调用=次以便把它们本身固定在操作系统之中。对于智能卡,这些稳定的程序只要在一次调用之后,就永久被安装了,而不仅仅只是对于一次会话。

  这里我们假定下载程序是被call命令调用的,并用一条return命令把控制返回给调用程序。原理上,直接跳转到第1条机器代码命令(用一条jump命令)也是可以的,但这样有

  这里有两种不同的方法去实现下载代码,见图1,而图2则是对下程序代码的调用过程。第1种选择是程序代 码位于一ef中,其结构是“可执行的”。这个文件在它头一次被选

  目前,智能卡微控制器的处理器绝大多数不具备任何种类的存储保护机制或执行任何管理程序的可能。随着程序计数器对此处理器的“外来”机器语言代码的编址,对全部存储器和全部功能的控制就完全取决于这些可执行的程序代码了。没有任何方法能够对可执程序的功能再予以限制,任何处于寻址的存储位置都可绕过存储管理或驱动程序进行读出,而位于eeprom或ram中的存储器则可写人。于是,所有的存储内容都可经卡接口轻而易举地传到终端。

  这正是有关能下载可执行程序的弱点。如果每一个人都被许可下载程序,或者有绕过保护机制的可能,则任何密钥或在整个存储区域中的其他秘密信息的安全性都不再有保证。这将是攻击智能卡的理想形式。智能卡对外部世界来说将仍以未受操纵的卡的相同方式行事,但专门的命令可被用来读出整个内存或是向部分存储器写人。

  虽然有着无懈可击的论点来反对第3方可下载程序。下载文件的生产者必须知道所有的入口点(转移地址)和操作系统程序的调用参数以便使用操作系统的重要功能。然而,操作系统制作者宁愿对内部进程和程序代码的地址尽可能少发布些信息,因为他们认为这些是秘密。此外,还必需去核查下载的代码是否按照要求去做而没有任何差错,也没有隐匿一个特洛伊木马,这只能由一个独立的团体来测试。

  对这个问题的最出色的方案,也是最有前途的方案是对智能卡中的实际处理器补充以硬件为基础的存储管理部件(mmu)。这是用一套硬件电路来检查运行程序代码是否保持在其设定的的界限内,只有那些被卡发行商鉴别过不会牺牲卡的安全性的才有可能被准许成为应用运营者的下载程序。每个这样的应用将被分配给作为其de的物理上连续的存储区,当在一df中的下载程序被调用时,mmu将监视有关的存储边界。如果这些边界被越出,经一中断将使此程序立即被停止,而应用的任何进一步作用都将被挂起于这项能力的规范几乎在所有的情况下都是机密的,而在某些情况下,甚至这项能力的存在也是秘密的。因此,这里我们仅能从一般原理上来叙述这项能力,而与任何真实的操作系统无关。接在基本原理的讨论之后,将详细描述一可能之实现。

  在智能卡中下载的程序代码在其能运行之前,首要的问题是必须满足某些基本的前提条件。它们似乎是明显的,但最重要的前提条件是必须知道处理器的类型(例如,8051或6805)。特别是在许多不同类型的智能卡微控制器的多机种环境中,满足这一需求经常要占用相当的工作量。随之而来的需求是还必须知道智能卡操作系统和应用编程接口api(applicationprogramming interface),包括所有人口点和由程序送出和回送的参数。

  下载的程序代码,它们经常是本机代码(目标处理器的机器代码),或者必须编写成可以重新定位的,或者当它在下载时必须由智能卡可顺便重新定位的。可重新定位的能力需求,意味着程序可在存储器中移动,其结果是代码所在的存储地址只有智能卡操作系统知道而外部世界是不知道的。使一个程序可重新定位需要在编程阶段进行。具体而言,可重定位意味着,例如,不允许跳转至绝对的实际地址,只能跳转到跳转命令地址的相对地址。

  如果程序代码满足所有这些需求,原则上它就可装入到智能卡存储器中并在那里运行。当然,程序代码可按需要构造,图3给出了可能的结构,但实际的结构完全可以是不同的,这取决于操作系统。在此例中的第1个数据元是个单独的标记,它告诉智能卡操作系统这是个程序代码。这样的标记通常被称为“幻数”(majic munmber)。例如,对于java class文件,这是一个四字节序列形成的字“cafebabe”。

  程序代码接着标记开始。在此例中,它被分成四部分。第1部分含有所有必需的初始化,数据存储等等。接着这个启动程序是拥有对所期望的任务的真正功能的代码程序。它又接以停车程序,后者是启动程序的对应部分。停车程序保证程序的正确结束,而如果需要时它将重新存储任何保留的数据并调整堆栈。

  程序的第4部分,它接在前三部分之后,是可选的。其中可含有能牢固结合到智能卡软件中去的程序代码,对操作系统错误的修补通常也都位于此处。前面三个程序将修改指针或处理得使本部分的程序永久性地链接至操作系统的软件。整个过程类似于在dos时代就已经熟知了的tsr(terminate and stay re⒍哎耐)程序。直到在下次复位之前,这些程序仅被调用=次以便把它们本身固定在操作系统之中。对于智能卡,这些稳定的程序只要在一次调用之后,就永久被安装了,而不仅仅只是对于一次会话。

  这里我们假定下载程序是被call命令调用的,并用一条return命令把控制返回给调用程序。原理上,直接跳转到第1条机器代码命令(用一条jump命令)也是可以的,但这样有

  这里有两种不同的方法去实现下载代码,见图1,而图2则是对下程序代码的调用过程。第1种选择是程序代 码位于一ef中,其结构是“可执行的”。这个文件在它头一次被选

相关IC型号

热门点击

 

推荐技术资料

罗盘误差及补偿
    造成罗盘误差的主要因素有传感器误差、其他磁材料干扰等。... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!