保护 PDA 的下一个挑战是抵抗恶意代码的攻击(恶意代码包括无处不在的特洛伊木马、病毒以及恶意脚本和应用程序)。虽然在无线领域里这些攻击比较罕见,但许多人预测,在 2002 年,无线用户会首次遇到危害极大的攻击。由于这些恶意的攻击能够删除数据、清除第三方应用程序以及通过向其它 PDA 发送数据而四处传播,因此应该象对待医学上的心脏病一样严肃地对待这种威胁。
我们继续上个月的主题,着重讨论一些针对 PDA 的实际威胁以及讨论一些平台供应商所提供的保护最终用户免受这些威胁的安全性技术。
无线恶意代码攻击:它们是真的吗?
在 PC 世界里,恶意代码攻击、病毒和蠕虫共同成为 2001 年计算机安全性方面最厉害的杀手(请参阅 2001 报告),而且这种情形还会继续下去。为什么?这些攻击会给工作人员的生产力带来负面影响,会摧垮公司的 IT 基础结构并使公司无法给用户提供服务 — 所有这些都会使美国公司因为当机时间以及清理工作而花费数十亿美元。现在的问题是:同样这些类型的攻击会针对无线设备吗?这些攻击会造成什么类型的威胁?象 PDA 这样的无线设备易受这些攻击吗?
在有线领域里,我们已经了解到人们所编写的病毒和恶意代码主要针对大家广泛使用且无处不在的平台。按照这种方式,计算机病毒就象生态系统中的病毒那样 — 物种越丰富,病毒越不容易蔓延。由于当今人们所使用无线平台的种类繁多,这在某种程度上抑制了病毒在无线领域中的蔓延。
无线领域中的恶意代码攻击 — 它们来了
在西班牙,第一个所谓的“病毒”已经攻击了无线用户,同样在日本,NTT DoCoMo 的 iMode 手机也受到了攻击。在 NTT DoCoMo 案例中,会给受害者转发一个至网站的链接,一旦受害者访问这个网站,并单击鼠标右键,则脚本代码会发动针对日本紧急服务号码(相当于美国的 911)的拒绝服务攻击。虽然在美国由于使用无线 Web 的用户数目较少,有些人对此类攻击在美国的负面影响不予以重视,但其造成的危害是明显的 — 发动的拒绝服务攻击是针对紧急服务,这可是性命攸关之事!
但其它一些知晓内情的人们发出了警告:对操作系统、电子邮件应用程序和流行的开发语言(如 J2ME)的合并只会导致一件事情 — 恶意代码攻击的蔓延。就考虑一下最近的发展情况。在新西兰,Microsoft 和 Vodaphone 最近宣布尝试将 Microsoft Outlook 移植到移动网络上。由于人们逐渐开始广泛使用如 Pocket PC 和 Palm OS 这样的操作系统并且 NTT DoCoMo 的 iMode 服务正逐步遍及全世界,因此许多安全专家认为,目前只是暴风骤雨前的平静(请参阅侧栏)。
另外,因为无线通信的目标是无缝连接,所以在有线领域中的某个点所发生的情况会波及无线领域,反之亦然。还有,如给因特网上服务器造成巨大破坏的红色代码之类的蠕虫也将影响到无线因特网或网关服务器。正如在有线世界里一样,这些新的蠕虫将破坏用于无线客户的服务,并给运营商带来损失。
在美国,我们喜欢 PDA 是因为它有丰富的功能。它们可以连接至有线 Web(也可以不连)、下载应用程序、与 PC 同步以及通过红外线与其它设备进行信息传输。同样,攻击者也会利用所有这些丰富的功能。一些人可以通过传播恶意代码来攻击您的 PDA,这种想法着实令人不安,但有关于这类攻击的记录吗?这一点值得商榷。虽然已经宣称“真”有一些攻击 PDA 的病毒,但有些人声称这些专门的病毒还没有进入公共网络。请参见侧栏中 F-Secure 的病毒中心,其中列出了一些潜在的 Palm 病毒。
用于 PDA 的 PacMan
在以后,恶意代码会成为严重威胁的原因之一是由于人们越来越需要将新应用程序下载到 PDA。任何成功的无线平台将支持它的用户从因特网(通过访问更多的网站)下载更多内容,来使用新的应用程序(如,赌博和其它无线游戏)。尽管在美国,无线游戏的普及程度还没有达到世界上其它一些国家,但据估计,现在全世界有 1.2 亿人在他们的无线设备上玩游戏。在日本,据估计,NTT DoCoMo 的受欢迎程度名列第三的网站类型是与游戏有关的。在移动用户最喜欢购买的商品中,游戏排在第四位,另外,在日本,游戏给运营商带来大把的钞票。
已知的恶意代码
F-Secure 的网站对他们所知道的各种恶意代码做了描述。这些恶意代码可能还没有被实际使用,也可能还没有造成多大的威胁,但那些与病毒作斗争的公司(如 F-Secure 或 Symantect)计划建立一些详尽的病毒库,这些病毒是我们所知道已经存在的病毒,从而他们的扫描软件可以查找病毒并防止它们的攻击。在这个网站上,列出了一些恶意代码的攻击:
Liberty(Palm):一种特洛伊木马,它假装成 Liberty Gameboy 模拟器 1.1 的破解程序。当激活它时,这个特洛伊木马会删除设备上所有应用程序。
Phage(Palm):该病毒会覆盖所有 Palm 的可执行文件。还破坏主机(Host)文件。并可以从一台机器传播到另一台机器。
EPOC/Lights:另一种特洛伊木马,它可以控制背景灯的开和关,从而耗尽电池的能源。
Leave Me Alone:一种特洛伊木马,它可以欺骗用户,使之相信红外接收过程已经被激活。另外,会显示一条警告消息,一个黑方块会在屏幕上弹来弹去,直到用户输入 leave me alone,才会消失。在这期间,不会接受键盘输入。
Ghost in the Machine:一种特洛伊木马,它会在屏幕上闪烁一些侮辱性消息。
在欧洲和香港,无线赌博正在蒸蒸日上。在德国,手机用户可以玩彩票,伦敦最大的赌博公司接受将 Nokia 手机作为赌博机器(这在美国正处于试验阶段)以便在手机上玩二十一点(一种卡西诺纸牌玩法)。这些游戏和赌博应用程序被认为是有利可图的项目,为它们各自的产业带来了数十亿美圆的收入。同时,它们都普遍存在一个安全性风险 — 需要终端用户信任该代码。
我们信任的代码
我们每天都在信任各种系统。每天早晨,在我买咖啡时,我相信找给我的零钱不是假币。每个月,我的房东相信我给他(她)的支票是有效的。每两个星期,当我把我微薄的收入存到银行时,我相信银行会为我保存这些钱,以便我开出的用于租房的支票不会被拒绝。在以上每种情形中,都有一些相应的系统和核对措施来保护我免于被别人利用。尽管所有这些系统中没有一种被证明是绝对安全的,但不管怎样,我都信赖它们,当我有需要它们时,可以向其求助。
对于代码,也是这个道理。要往 PDA 下载更多的代码,则我们必须首先信任该代码。在电子世界里建立信任系统的方式之一是对分布在网上的应用程序进行代码签名。代码签名为最终用户提供了一种方式来使他们更多地了解所下载的代码:1)签名者是谁,2)负责该代码的“权威机构”是谁,3)自代码被签名之后,代码是否被修改过。我们常把经过签名的代码比作打开一个软件包 — 如果封条已经破损,则您知道代码已经被篡改。
这种代码系统基于公钥基础结构技术,它需要开发人员用公钥证书来对他们的代码进行签名,这个公钥证书是来自:软件供应商、可信的第三方(如认证中心,CA)、为软件供应商提供服务的 CA。例如,Verisign 可能是美国最著名的 CA。这些实体负责确认代码分发者的身份以及标识他们是软件提供者还是可信的管理机构。如果该 CA 相信那些被确认者所声称的身份,则开发人员会收到一份数字证书,它包含一些有关那些被确认者的信息以及(更为重要的)他们的“私钥”。正是用这个私钥来对代码进行签名。
签名
用公钥算法(通常是 RSA 算法)来进行签名,公钥算法是一种特殊类型的密码术,它包含两个不同的但在数学方面又是相关的密钥:一个私钥(用于签署代码)和一个公钥(用于验证经过签名的代码)。公钥密码术也称为非对称密码术,它不同于在上个月的专栏文章中所讲的对称密码术。公钥实际上也是“公开的”,任何人都可以接触到它。但私钥是“私有的”,必须由持有人自己保管。
当将私钥成功地用于签名过程时,该签名可以证明内容确实来自私钥拥有者,这是基于两个层次的信任。第一层,我们信任权威机构所颁发的证书,第二层,我信任私钥拥有者可以保管自己的私钥,并能够不泄露私钥。当我们信任这个系统时,就可以相信,在用公钥验证签名时,收到的信息确实来自对此信息签名的信息拥有者,而且保证经过签名的信息(无论什么信息)没有被修改。但了解该信任模型到这一步就行了吗?它是如何工作的呢?
验证
当开发人员应用此技术来对其代码进行签名时,他们实际上用公钥算法创建了一个经过签名的数据对象,这个算法与基于 PKCS#7 标准的一个散列密码一起使用。对代码进行签名的过程包含两个步骤。首先,对所要分发的代码应用散列算法。根据要签名的代码,散列算法产生唯一的二进制消息摘要。当再一次对该代码应用此散列密码时,如果产生的消息摘要发生变动,则意味着经签名后的代码发生了变动。接下来,在散列函数产生了消息摘要之后,开发人员用他们的 RSA 私钥对该摘要进行签名。经过签名的消息摘要可以附加到此代码上,并用开发人员的公共证书来分发此信息(代码和消息摘要)。公共证书包含签名者的公钥,此公钥将在验证过程用来验证该签名。
使用签名者的公钥来进行验证过程与加密过程相反。首先,用于签名中的公钥是用来验证可靠性。如果验证成功,则对该代码使用同样的散列算法。当产生的输出与接收到的消息摘要相匹配时,则我们知道此代码没有被更改。如果这两步中的任何一步失败了,则说明此代码已不值得信任。
为什么需要用两步来进行签名呢?由于公钥密码术基于复杂的数学理论,所以它是十分耗费计算机资源的。计算这个数学问题会使签名过程变得很慢,所以 PKCS#7 签名是一种非常有效的方式,它使用两种算法的组合以最安全的方式仅仅对所需要的部分进行签名。您可能要问,既然公钥密码术是如此之慢,那为什么还要使用它呢?我们使用它,是因为这是一种高度安全的算法,在使用推荐密钥长度(当前密钥长度为 1024 位)的情况下,还未攻破此算法。另一个原因是,它还定义了一种方式:为从未碰过面的两人 — 他们必须通过不安全通道进行通信 — 提供信任和真实性机制。
但代码签名不能独立工作。它必须工作在较大的足够容纳因特网的系统中。对于发起方,客户机必须知道如何验证签名。幸运的是,目前在 Internet Explorer 和 Netscape 浏览器中都支持这个功能,尽管两者的处理方式不同。这些浏览器还包含一些可信 CA 的公共根密钥。当它们收到开发人员的公共证书时,该证书必须已经用这些 CA 根密钥中的某个进行签名。这就是证书链。在信任“外部”的公共证书之前,必须用对其签名的 CA 进行验证。这就是浏览器中这些公共根密钥所要做的,因为,请记住 — 分发您的公钥是安全的。整个系统依赖于 CA 是如何保护其私有根密钥的。许多 CA 供应商将其私有根密钥密封在不被人知道的地下保险库中。我可以告诉您它们的位置,但之后我必须杀死您。:)
我们能够依靠代码签名来保证绝对安全吗?
遗憾的是,没有一个系统是 100% 绝对安全的 — 包括我们的货币系统、银行系统以及 PKI 系统。总是有一些技术小故障、人为错误或者利用该系统的坏分子。象任何人造系统一样,PKI 依赖于信任、责任以及定义如何达到这些目标的规则 — 不要让所有这些高技术密码术迷惑您。我们可以且已经讨论过 PKI 系统是有缺陷的,如果有人想突破 PKI 系统,他们就可能会找到一种方式来绕过该技术。虽然已有人暗中潜入过该系统,但我不赞成批评该技术。因为无论喜欢与否,PKI 与任何信任模型的缺陷都是一样的;总是有人可以找出方法来利用这个系统。PKI 所需要的是真正用来惩罚这些人并补偿那些受损失人的责任。
所以要使系统正常工作,平台供应商和软件分销商需定义周全的、要遵守的规则。如果我下载了恶意代码,会发生什么呢?会破坏我的机器吗?谁来负责?谁负有责任?如何惩罚那些利用系统的坏分子?无线平台的供应商应该认真考虑这些问题,并规划出最终用户和开发人员都能容易理解的策略。未来无线业务的成功,在很大程度上取决于我们如何处理这些问题,因为在因特网上分发代码已卓有成效。要使业务正常运作,我们必须能够接受这样的观点:经过签名的代码实际上就象购买盒装软件一样。即使象 PKI 这样优秀的技术也不能在“真空”中工作。凡是人类发明的技术都共同存在于我们这个大环境中,它们都依赖于人类自己制定的法律和政策。
结束语
不管我们承认与否,现在已发现有恶意代码。拒绝服务攻击和病毒将会攻击 PDA。但如果我们可以找到一些方法来锁住 OS,并保护 PDA 不会受到未签名代码的入侵,那么我们在这场以在线方式来分发更多应用程序的战争中,就已经赢得了一半的胜利,同时,用这样的方式会给那些循规蹈矩的软件开发企业带来好处。
|