1.3 实例1——?银行
银行运行着非常大范围的安全关键(security-critical)的计算机系统。
(1) 银行业务的核心通常是一个分行簿记系统,其中保存了客户账目主文件,并且记录了日常交易的大量分类账。对这一系统的主要威胁是银行的内部员工,每年都有l%的银行员工被解雇,其中大部分都是因为小规模的欺诈(平均额度只有几千美元)。对这种威胁的主要防御措施是已经演化了几百年的簿记流程,比如,对某个账号的每个借方都必须有针对其他账号的一个等额的贷方与之匹配,因此钱只是在银行内部流动,从来不会被创造或销毁。此外,大额转账需要2、3个人共同批准才能进行。还有各种报警系统,用来监控异常交易额度或交易模式,并且员工需要定期休假,休假期间不能进入银行或者访问银行系统。
(2) 自动取款机(automatic teller machine,ATM)是银行的公开窗口,ATM根据客户的银行卡与个人身份号码进行交易身份验证——?通过这种身份验证方式同时防御外部与内部的攻击者——?要比看起来难得多。本地的坏人(或者银行员工)发现了银行系统中可利用的漏洞,导致在很多国家和地区都流行“错误提款(phantom withdrawal)”。ATM之所以有趣,还因为它们是密码学在商业上的首次大规模应用,并且帮助确立了很多加密标准。
(3) 另一个公开窗口是银行网站。现今,很多客户在处理大多数日常交易时,比如账单支付或在储蓄账户与支票账户之间进行转账时,通常都是通过网络在线进行,而不是前往分行完成。近期,银行网站遭受到严重的钓鱼(phishing)攻击,即在伪造的银行网站中诱骗用户输入其密码。上世纪90年代建立的一些“标准的”Internet安全机制(如SSL/TLS),在高超的攻击者开始转向攻击客户而非银行时被证明是无能为力的。钓鱼攻击是一个很有吸引力的安全工程问题,它混合了来自身份验证、可用性、心理学、管理与经济学的诸多要素。下一章将对其进行详细讨论。
(4) 银行系统的幕后是很多高价值的消息系统,这些系统用来移动大笔金钱(无论是在国内银行之间或国际银行之间)、进行证券交易、发行信贷和担保信函等。攻击这些系统是老练的白领罪犯的梦想。其防御是综合使用簿记程序、访问控制和加密技术等。
(5) 通常,银行的分行看起来都宽大、很坚固,十分气派,给用户一种“我们的钱很安全”的心理暗示。但实际上并非如此:石头墙并不能提供真正的保护。如果你持枪进去,出纳员会把你能看到的所有现金都交给你;如果你在晚上闯入,可以在2分钟内使用砂轮打开保险箱或保险库。目前对这种威胁的有效控制集中在报警系统——?报警系统与安全公司的控制中心持续进行通信。使用密码学可以防止抢劫者或窃贼操纵通信,避免在犯罪发生时报警系统仍然报告“一切正常”。
后面的章节将进一步说明这些应用。银行计算机安全非常重要:直到最近,银行仍然是计算机安全产品的主要非军事市场,因此它对于安全标准存在非对称影响;并且,即使某些银行的技术不被国际标准采用,仍然可以在其他行业中得到广泛的应用。