智能卡在一般的逻辑方面的攻击
发布时间:2008/11/22 0:00:00 访问次数:726
(1)攻与防:哑智能卡
最简单的攻击是使用一个定制程序的智能卡,并具有记录和分析功能。数年前这是几乎不可能实现的,因为只有从少数公司才能获得智能卡和用于制造它们的微处理器芯片。今天智能卡和配置的程序可以从许多公司公开订货,当然就敞开了攻击者增多的选择。即使没有这些,略作努力就可用一张塑料卡,一个表面安装器件smd(surface mounted device)封装的标准微处理器组装起一张智能卡,这样的一张卡至少可用来模仿一张真正的智能卡的电气接口并以同样的方式进行数据传送。智能卡的java技术同样也提供了新的可能性,它能比较容易生成程序并装入哑卡之中。
用这样的一张哑卡,至少可记录下一部分和终端的通信并对这些信息进行评估,几次尝试后,就有可能像一张真实的智能卡那样以完全相同的方式执行部分通信。
这样的攻击能否取得成功是可怀疑的,因为所有专业设计的应用对重要的活动都是加密保护的。只要不知道秘密密钥,攻击就不可能取得超过第1次鉴别的进展。如果已经知道了密钥或是整个应用的运行没有任何加密保护时,这样的攻击就可能取得成功。如果真的存在着这样的攻击,值得疑虑地是由这种类型的攻击所取得的利益,是否足以补偿为安排这一攻击所需的花费。
(2)分析:确定智能卡的命令组
智能卡所支持的命令和指令类别并不总是公开的,但可以很容易确定它们是什么。关于完全确定智能卡的命令组比攻击智能卡的安全性要有趣一些,而攻击却可以是构建在这一信息的基础之上。
图1说明用来确定命令表的过程。首先用一个可自由编程的终端产生一命令apdu并把它传送给ic卡,在apdu 中的类别字节随每一apdu而改变,覆盖了自“00”至“ⅲ”的范围,随着接收到的回送代码不是“无效类别 ”,则第1个有效类别字节就确定了。通常有两或三个有效类别,在下一轮中可用来试出所有可能的指令字 节。有不同指令字节的命令apdu被传送至智能卡,而那些不产生“未知指令”回送代码的则被记录下来。终 端中特定的合适的软件,用这一方法能在1~2分钟内断定一给定的智能卡支持那些命令。某种程度上,这样 的识别法也可能把一些参数以类似的方式确定下来。
图1 详尽搜索被智能卡操作系统支持的所有命令的基本流程。除了指令的调用不受状态机的控制外,这一过 程将识别所有受支持的命令。其工作原理为系统依次试出所有类别字节(cls)和指令字节(ins)的编码, 而与任何命令内容(安全通信,逻辑通信,vpp控制等等)无关如果只采用iso/iec 7816-4标准所允许使用 的类别字节,并允许指令字节作为索引变量时,则所述算法可显著加快,把安全报文通信和逻辑通道考虑在 内可大大减小类别字节的编码空间。类似的改进可由仅采用偶数值的指令字节作出,因为众所周知,奇数值 编码含有vpp的控制信息,已不再是必要的了。
这种关于指令类别、命令和参数的简单搜索算法,它能如此有效的原因在于所有智能卡操作系统中的命令 解释器,对接收到的命令的处理是从识别类字节开始而逐步扩展到跟随其后的各个字节的。随着识别出第1 个无效字节后,此过程就立即结束,并产生一个适当的回送代码回送至终端。
然而,这样的过程只是在没有全局状态机监视命令序列的智能卡时才这样工作的。如果存在有这样的状态 机,至少有可能用此方法以步进的方式确定命令序列。
攻击者能从这一过程中取得的好处并不那么大,因为通常命令组不是秘密。然而它毕竟提供了一个简单而 快速地方法去确定所有命令。在确定操作系统供应商有无在软件中引人任何未为文件规定的命令时,它是很 有用处的。
(3)攻击:窃听数据传输
一张略作修改的智能卡可用来在一会话期中窃听数据传送并在需要时操纵数据。所做修改包括在i/0接触 面的顶部粘贴一个绝缘的哑触头,新的(哑的)触头和原来的i/0触头都接至一台快速计算机,经适当编程 这台计算机可删去或插人任何所需的数据到终端和智能卡的通信中去。如果计算机足够快,终端和卡都不能 检查出正常的和被操纵的通信之间的区别。
很显然,用这一方法能影响一次会话期中的过程。攻击者是否能由此方法获得任何利益取决于智能卡中的 应用。一个著名的设计原则是对通信的窃听、删除数据和插人数据均不允许对安全性有所削弱。如果这条原 则未得到遵守,攻击者就可用此方法得到好处。已经有使用模拟存储卡进行欺诈的案例。
为了对这种攻击提供防范,某些终端将有闸门装置(如图2所示)以切断附加在智能卡上的任何导线,也可 以有效地使用安全通信来可靠地检测出在数据传输时对数据的任何操纵。
图2 在终端的机壳之外扩充一智能卡适配器对卡进行测试(在左方可以看
(1)攻与防:哑智能卡
最简单的攻击是使用一个定制程序的智能卡,并具有记录和分析功能。数年前这是几乎不可能实现的,因为只有从少数公司才能获得智能卡和用于制造它们的微处理器芯片。今天智能卡和配置的程序可以从许多公司公开订货,当然就敞开了攻击者增多的选择。即使没有这些,略作努力就可用一张塑料卡,一个表面安装器件smd(surface mounted device)封装的标准微处理器组装起一张智能卡,这样的一张卡至少可用来模仿一张真正的智能卡的电气接口并以同样的方式进行数据传送。智能卡的java技术同样也提供了新的可能性,它能比较容易生成程序并装入哑卡之中。
用这样的一张哑卡,至少可记录下一部分和终端的通信并对这些信息进行评估,几次尝试后,就有可能像一张真实的智能卡那样以完全相同的方式执行部分通信。
这样的攻击能否取得成功是可怀疑的,因为所有专业设计的应用对重要的活动都是加密保护的。只要不知道秘密密钥,攻击就不可能取得超过第1次鉴别的进展。如果已经知道了密钥或是整个应用的运行没有任何加密保护时,这样的攻击就可能取得成功。如果真的存在着这样的攻击,值得疑虑地是由这种类型的攻击所取得的利益,是否足以补偿为安排这一攻击所需的花费。
(2)分析:确定智能卡的命令组
智能卡所支持的命令和指令类别并不总是公开的,但可以很容易确定它们是什么。关于完全确定智能卡的命令组比攻击智能卡的安全性要有趣一些,而攻击却可以是构建在这一信息的基础之上。
图1说明用来确定命令表的过程。首先用一个可自由编程的终端产生一命令apdu并把它传送给ic卡,在apdu 中的类别字节随每一apdu而改变,覆盖了自“00”至“ⅲ”的范围,随着接收到的回送代码不是“无效类别 ”,则第1个有效类别字节就确定了。通常有两或三个有效类别,在下一轮中可用来试出所有可能的指令字 节。有不同指令字节的命令apdu被传送至智能卡,而那些不产生“未知指令”回送代码的则被记录下来。终 端中特定的合适的软件,用这一方法能在1~2分钟内断定一给定的智能卡支持那些命令。某种程度上,这样 的识别法也可能把一些参数以类似的方式确定下来。
图1 详尽搜索被智能卡操作系统支持的所有命令的基本流程。除了指令的调用不受状态机的控制外,这一过 程将识别所有受支持的命令。其工作原理为系统依次试出所有类别字节(cls)和指令字节(ins)的编码, 而与任何命令内容(安全通信,逻辑通信,vpp控制等等)无关如果只采用iso/iec 7816-4标准所允许使用 的类别字节,并允许指令字节作为索引变量时,则所述算法可显著加快,把安全报文通信和逻辑通道考虑在 内可大大减小类别字节的编码空间。类似的改进可由仅采用偶数值的指令字节作出,因为众所周知,奇数值 编码含有vpp的控制信息,已不再是必要的了。
这种关于指令类别、命令和参数的简单搜索算法,它能如此有效的原因在于所有智能卡操作系统中的命令 解释器,对接收到的命令的处理是从识别类字节开始而逐步扩展到跟随其后的各个字节的。随着识别出第1 个无效字节后,此过程就立即结束,并产生一个适当的回送代码回送至终端。
然而,这样的过程只是在没有全局状态机监视命令序列的智能卡时才这样工作的。如果存在有这样的状态 机,至少有可能用此方法以步进的方式确定命令序列。
攻击者能从这一过程中取得的好处并不那么大,因为通常命令组不是秘密。然而它毕竟提供了一个简单而 快速地方法去确定所有命令。在确定操作系统供应商有无在软件中引人任何未为文件规定的命令时,它是很 有用处的。
(3)攻击:窃听数据传输
一张略作修改的智能卡可用来在一会话期中窃听数据传送并在需要时操纵数据。所做修改包括在i/0接触 面的顶部粘贴一个绝缘的哑触头,新的(哑的)触头和原来的i/0触头都接至一台快速计算机,经适当编程 这台计算机可删去或插人任何所需的数据到终端和智能卡的通信中去。如果计算机足够快,终端和卡都不能 检查出正常的和被操纵的通信之间的区别。
很显然,用这一方法能影响一次会话期中的过程。攻击者是否能由此方法获得任何利益取决于智能卡中的 应用。一个著名的设计原则是对通信的窃听、删除数据和插人数据均不允许对安全性有所削弱。如果这条原 则未得到遵守,攻击者就可用此方法得到好处。已经有使用模拟存储卡进行欺诈的案例。
为了对这种攻击提供防范,某些终端将有闸门装置(如图2所示)以切断附加在智能卡上的任何导线,也可 以有效地使用安全通信来可靠地检测出在数据传输时对数据的任何操纵。
图2 在终端的机壳之外扩充一智能卡适配器对卡进行测试(在左方可以看
上一篇:智能卡防护基础:智能卡操作系统
上一篇:操纵智能卡微控制器