Muscle 将智能卡融入 Linux

作者:David Corcoran

信用卡公司成功地推销了银卡、金卡和白金卡。贵金属代表财富,我们应该将这种概念与一些不太实在的东西——卡片安全联系起来。

在当今社会,加强电子商务的安全性是公司、银行和商家的首要任务。即使计算机变得越来越快,曾经被认为是安全的身份验证方法也变得更容易被破坏。与此同时,现代通信技术使黑客能够宣传他们的攻击,使得此类活动的细节很容易获得,即使对于业余爱好者也是如此。一个易于使用的漏洞利用脚本通常只需一个网站即可获得。随着当前的安全方法变得更容易被破解和破坏,开发人员正在寻找不同且更好的身份验证方法。

最弱者的生存

我们每天都使用磁条卡从银行取款、购物、加油以及进入办公大楼。一个人随时携带十张或更多不同的卡片并不少见。这些卡片安全吗?请考虑以下常见的信用卡场景

  • 您用信用卡支付餐厅账单,并将收据留在桌子上。

  • 您用信用卡在百货商店购物,然后将收据扔进垃圾桶。

  • 您使用信用卡号通过互联网为您的母亲购买鲜花。

卡片收据包含任何人都可以冒充实际持卡人并拥有相同购买力(实际上是相同的身份)的所有必要信息。在上述任何一种情况下,您的身份以及潜在的银行账户都迟早会被盗用。使用磁条令牌进行身份验证显然是不安全的。

另一个弱身份验证的例子是计算机密码——当今计算机中最常见的身份验证方法。作为唯一知道秘密单词或密码短语的人,这让我们对数据访问产生了一种错误的 sécurité 感。我们没有想到在我们睡觉时,青少年会破解我们的密码,然而,基于字典的密码破解器(尝试常用字典单词的软件)在互联网上随处可见。诸如 Crack 5.0 之类的软件包可以轻松地在几分钟(最多几个小时)内泄露曾经被认为是安全的密码。大多数黑客通过根本没有密码或密码设置为与用户名匹配的帐户获得对系统的初始访问权限。(许多系统管理员软件包将默认帐户名称设置为与用户名匹配,并且默认设置永远不会更新。)

您可以加强当前的安全机制,但最终的解决方案可能是一个全新的设计。磁条信用卡、密码和 PIN 码很快就会成为过去,取而代之的是启用生物识别传感器的基于令牌的身份验证系统——一种存储加密证书和密钥的安全令牌,以及带有生物识别传感器的终端,用于验证密钥访问权限(例如,来自您的指纹)。

智能替代方案

智能卡就是这样一种令牌。智能卡技术在欧洲已经得到可靠的证明多年。智能卡是一种特殊用途的存储设备,其尺寸和厚度与信用卡相仿,包含一个能够存储数据的薄型微处理器。当插入到合适的读卡器中时,微处理器会被通电,并且指令会在主机计算机或终端与智能卡微处理器之间传递。

您今天的钱包:一些现金、几张信用卡、一张 ATM 卡、一张电话卡、驾驶执照、员工徽章、一张写有您所有 PIN 码的纸条以及购买牛奶的提醒。

您未来的钱包:一张带有生物识别身份验证的智能卡。

您可以用这张智能卡做什么?一张卡有可能取代

  • 银行卡、ATM 卡、电话卡、汽油卡、一般信用卡

  • 驾驶执照、护照、工作证

  • 您家、您的汽车、您的办公室的物理访问权限

  • 医疗记录和服务

借助生物识别技术,您甚至可以记住您对乳制品或青霉素过敏。生物识别技术是从人身上采集的用于稍后识别他们的测量数据,例如指纹、视网膜模式、面部照片、手指长度、声音印记或打字和书写模式。测量数据可以数字化存储在智能卡上,并与数字证书和身份验证结合使用。

Muscle Flexes Smart Cards into Linux

图 1. 智能卡

智能卡是真正的计算设备,包含 CPU、ROM、EEPROM 和 RAM——全部封装在灵活的塑料卡中。微处理器的技术堪比 1970 年代后期的全尺寸台式计算机。智能卡具有操作系统、I/O 通道、静态和动态内存以及用于编程卡片的指令集。在未来,技术可能会发展到可以从卡片上运行整个操作系统(例如 Linux)。目前,智能卡主要为加密密钥和各种身份验证信息提供安全、便携的存储。

智能卡类型

智能卡就像冰淇淋一样,有许多不同的口味,但基本类型有两种:仅内存型和基于处理器型。

普通的香草内存卡通常用作电子钱包——例如,电话卡、自动售货机卡或存储现金价值的大学校园卡。该值可以在每次使用时递减,并在专用机器上充值;因此,此类卡有时被称为现金卡。

处理器卡的应用范围更广。它们可以包含用于身份验证和文件加密的加密协处理器。一些处理器卡实际上使用内置的 Java 虚拟机(运行在任何全尺寸计算机上的虚拟机的子集)直接在卡上运行 Java 二进制文件,以解释 Java 二进制文件中的命令。这些被称为 Java 卡。Java 卡的大部分功能可以通过 Java 类来执行,从而允许在几乎任何平台或硬件规范中对卡进行编程。Java 卡还包括一些有限的加密功能,可以通过 Java 安全类来访问。Java 卡将熟悉的编程语言的易用性与智能卡的强大功能结合在一起。

内存和处理器智能卡都支持两种类型的 I/O:实际的电触点或射频感应。

对于安全交易和电子邮件隐私的迫切需求可以通过下一代加密卡来解决,例如 Schlumberger CryptoFlex 智能卡。此类卡能够执行各种加密功能,包括随机数生成、数字签名和加密。这些卡通常用于身份验证过程中,其中与 X.509 证书关联的加密密钥存储在卡上,并通过 PIN 码解锁以供使用。或者,将卡上的生物识别测量数据与通过配备生物识别传感器的读卡器检索到的数据进行比较。身份验证后,用户可以直接访问卡上的公钥/私钥对,并使用它来使用卡上的加密协处理器对消息进行签名或加密。此密钥对永远不会离开卡。这些卡可以存储多个密钥对,并且能够执行多种加密算法,例如 PGP、RSA 和 DES。

与使用单因素身份验证(您手中有卡,因此它一定是您的)的磁条卡不同,加密智能卡实际上是在卡上运行软件。这允许智能卡和读卡器终端之间的双向身份验证,并且当涉及生物识别技术时,允许多因素身份验证。一个可能的身份验证方案如下所示

  • 读卡器终端为卡片供电,并通过“复位应答”功能识别卡片。

  • 读卡器通过将随机数和加密请求传输到卡片来启动身份验证。

  • 卡片通过 PIN 码或生物识别测量数据验证用户身份,如果成功,则使用存储在卡上的私钥加密随机数。加密后的随机数与身份证书一起返回给读卡器。

  • 读卡器终端获取公钥(使用目录查找或其他数据库),并使用公钥解密随机数。

  • 如果解密后的随机数与最初传输的随机数匹配,则用户和卡片通过身份验证。

卡片甚至可以使用类似的过程来验证读卡器终端的身份。

关于读卡器的更多信息

需要读卡器或终端来为卡片供电并与之通信。市场上有各种各样的智能卡读卡器。它们包括非接触式或 RF 读卡器,以及更常见的电触点读卡器。这些读卡器本身可以是计算机,也可以通过串行、并行、USB 和 PCMCIA 端口与任何主机计算机连接。其他读卡器到主机的接口也是可能的,甚至可以通过软盘驱动器。一些读卡器直接在读卡器中集成了 PIN 码键盘或生物识别传感器,以便 PIN 码、密码短语或生物识别测量数据永远不会离开系统。

读卡器和终端有各种尺寸、形状、颜色和功能。Schlumberger Reflex 60 智能卡读卡器专为 PC 应用程序而设计——例如,商家和银行之间通过互联网进行的安全企业对企业交易。您还可以安全地访问网络电视、游戏和许多其他应用程序。

智能卡通过塑料卡上的触点或通过射频与读卡器通信。在每种情况下,卡都通过 T=0 或 T=1 协议进行通信。T=0 是一种面向字节的协议,其中发送一个指令字节并接收一个确认。这可能是错误消息,也可能只是对指令的确认。T=1 是一种面向块的协议,它发送指定的数据单元。

与 PC 一样,智能卡也有一个文件系统,其中包含根文件或主文件。所有文件都由两个字节标识。智能卡上的主文件由 3F 00 标识。专用文件类似于子目录,因为它们允许文件具有特定的路径。信息实际上存储在所谓的基本文件中。基本文件可以用不同的方式定义,具体取决于用户希望如何对其进行细分以进行存储。下图显示了一个简单的智能卡文件系统。

Muscle Flexes Smart Cards into Linux

图 2. 智能卡文件系统

更智能的卡片,更大的肌肉

随着智能卡通过手机、储值和身份验证系统进入我们的生活,它们也将进入我们的通用计算环境。Linux 提供了一个安全的多任务环境,非常适合智能卡。MUSCLE 项目(Linux 环境中智能卡使用运动)是一个虚拟的开发人员团队,致力于以开放的方式将智能卡、读卡器和安全性集成到 Linux 环境中。正如首字母缩略词所暗示的那样,MUSCLE 团队正试图将所有必要的智能卡钩子集成到 Linux 世界中。有关联系信息,请参阅侧边栏。

Muscle Flexes Smart Cards into Linux

图 3. Muscle 徽标

正在进行几个不同的 MUSCLE 项目,例如将智能卡令牌与可插拔身份验证模块 (PAM) 集成、用于 Perl 等脚本语言的接口,以及为不同的卡和读卡器创建驱动程序和实现 API。MUSCLE 期望从这些活动中获得以下好处

  • 将智能卡集成到 PAM 中将允许在各种不同操作系统之间进行跨平台身份验证。

  • Perl 集成为智能卡使用提供了另一种环境,特别是对于那些习惯于 Perl 中字符串操作的简易性的人。

  • 在 Linux 下标准化卡和读卡器 API 为开发人员提供了一个通用接口,用于将各种智能卡和读卡器与更广泛的主机计算机集成。

  • 创建 Linux 加密 API 将处理其他 PKCS-11 类型设备以及智能卡的加密。

  • 智能卡文件系统的虚拟化将允许将智能卡作为 Linux 下的任何其他文件系统进行挂载。这可能允许以易于使用、熟悉的方式操作智能卡文件系统。

开发在 Linux 下将不同的生物识别传感器与智能卡结合使用的方法是另一个兴趣所在。诸如 American Biometric 的热门新产品 BioMouse 和 BioMouse Plus 之类的生物识别指纹扫描仪可以很容易地使 Linux 成为银行等高安全性应用的首选操作系统。

MUSCLE 在网站 http://www.linuxnet.com/smartcard/index.html 上以 GPL 发布所有源代码,以及作者姓名、日期和目的。所有发布的代码都受 GNU 公共许可证的保护,只要遵守规则,就可以自由分发。这就是开放开发发生的地方。有关 GNU 公共许可证的更多信息,请访问 https://gnu.ac.cn/。

MUSCLE 目前支持 Schlumberger Reflex 62 和 64 读卡器。这些读卡器依靠串行端口进行数据通信,并从键盘或鼠标端口获取电源。当前的驱动程序支持 Reflex 62 和 64 读卡器的所有必要功能,包括 PIN 码验证(仅限 Reflex 64)。这些驱动程序依赖 termios 库来实现串行功能,并且可以放置在任何 Com 端口上。目前,支持所有 Schlumberger CryptoFlex 卡功能,包括 ISO-7816 功能和加密功能(文件读取和管理、RSA 签名、密钥和 PIN 码验证、身份验证、查找和其他管理功能)。

公众对智能卡的兴趣将刺激技术增长,并增加对更好用户界面的需求。诸如 Linux 之类的嵌入式操作系统可以提供 UNIX 风格操作系统的易用性以及卡片的全部功能。例如,要检索有关文件系统目录结构的信息,嵌入式 Linux 将允许使用简单的 ls 命令,而不是十六进制命令 0xF0 0xA8 0x00 0x00 0x00。目前,智能卡不具备嵌入式操作系统的能力。在它们具备能力之前,可以通过虚拟化 shell(将 shell 命令解释为智能卡十六进制对应项)在智能卡上完成熟悉的 shell 命令(如 ls)。这将为个性化卡片以满足客户需求提供一种简便的方法。

下一个千年的客户需求是什么?有些人预测对物质主义的强调会减少。健身器材可能像 ATM 机一样普及,金卡可能不如具有更多智慧的卡片有吸引力。确保未来始终需要灵活性和变革。智能卡似乎将这一切结合在一起。

资源

Muscle Flexes Smart Cards into Linux
Dave Corcoran 是普渡大学的本科生,在那里他学习计算机科学,并且还是斯伦贝谢有限公司的知识工作者。他最新的项目包括将智能卡安全令牌集成到 Linux 操作系统中。可以通过 corcoran@slb.com 与他联系。
加载 Disqus 评论