写点什么

关注网银系统:安全模型和架构设计

  • 2010-05-18
  • 本文字数:2870 字

    阅读完需:约 9 分钟

随着网络的普及和金融业务的不断扩展,网上银行已经逐渐成为人们日常理财工具之一。由于互联网的开放性,安全性成为网银系统设计和实施的重要挑战。根据一份国内媒体的调查结果统计,超过九成的网民有意尝试网银业务,但是超过一半的受访者担心安全性问题。而在国外,根据美国互联网犯罪投诉中心报告,2009 年美国银行客户因网上账号被盗而遭受的经济损失高达5.59 亿美元。网银系统安全的重要性可见一斑,相关的软件开发人员也面临巨大的挑战。

IBM 的工程师董伟、程平平最近撰文(下文称“文章”)简要描述了网上银行普遍采用的安全系统架构以及相关技术,为关注金融领域的开发人员提供了参考。

文章首先对网银系统的安全需求作了分析,提出了业务逻辑和数据两方面的考量:

  • 业务逻辑安全需求
    • 身份认证需求
    • 访问控制需求
    • 交易重复提交控制需求
  • 数据安全需求
    • 数据保密性需求
    • 数据完整性需求
    • 数据可用性需求
    • 数据不可伪造性需求
    • 数据不可抵赖性需求

这里要特别强调与银行客户利益密切相关并为大众熟知的数据保密性需求:

  1. 客户端与网银系统交互时输入的各类密码:包括系统登录密码、转账密码、凭证查询密码等必须加密传输及存放,这些密码在网银系统中只能以密文的方式存在,其明文形式能且只能由其合法主体能够识别。
  2. 网银系统与其它系统进行数据交换时必须进行端对端的加解密处理。这里的数据加密主要是为了防止交易数据被银行内部人士截取利用。

在分析安全性需求的基础上,文章引入了目前网上银行最为著名的安全系统架构模型——PPDRR 模型,即策略 (Policy)、防护 (Protection)、检测 (Detection)、响应 (Response) 和恢复 (Recovery),并认为这是“一种动态的、自适应的安全模型,可适应安全风险和安全需求的不断变化,提供持续的安全保障“。基于 PPDRR 模型的网络拓扑如图 1 所示:

图 1 网银系统拓扑图 (来源:developerWorks)

关于拓扑结构,文章指出了几个关键点:

  • 整个网络系统通过三道防火墙划分为四个逻辑区域。
  • 最外层为是 Internet 区(非授信区),为网银用户客户端接入区域。
  • 第一道防火墙和第二道防火墙之间是隔离区(DMZ),在此区域中部署 RA 服务器以及网银系统的 Web 服务器等其它第三方应用系统。
  • 第二道防火墙和第三道防火墙之间是应用区,是网银系统的应用 /DB 区,在此区域中部署网银系统的应用服务器和数据库服务器。
  • 第三道防火墙之后为银行的核心系统、中间业务平台等第三方业务系统。
  • 在隔离区和应用区的 Web 服务器,应用服务器和数据库服务器都会有相应的双机热备方案。

对于目前流行的专门盗取客户的账号和密码的盗号木马,文章指出“单纯的软件认证已不能满足网络银行系统的身份认证需求,所以网络银行多采用软硬件结合的双因子认证方式作为身份认证的辅助解决方案”,其中包括:

  • USB Key 认证
  • 动态口令
  • 刮刮卡
  • 动态短信

网银系统的设计和实现过程中,安全性一直是架构师和开发人员最关注的因素之一,文章概述了一种目前广泛采用的安全模型,具有参考和借鉴意义。 InfoQ 将继续关注和报道相关领域的最新发展,也欢迎读者朋友分享经验和提供反馈。

在本文发表不久,多位热心的读者通过各种形式进行了反馈,特别是来自梁江通信的狄卫华先生基于对网银系统的理解,表达了自己的看法:

当前对于网络安全保障的主要手段就是使用安全的协议 SSL/TLS。SSL/TLS 协议结合数字证书基本上保障了网银系统用户的安全性,包括数据的私密性,完整性和不可否认性,但是 SL/TLS 协议结合数字证书也不是万能钥匙,在用户使用过程中的种种疏忽或者网银系统设计本身存在的种种安全隐患都可成为黑客攻破的大门。网银系统直接牵扯到用户资金的安全,因此网银系统使用安全也逐渐成为广大用户关注的热点,尤其是在当前电子商务开始盛行的时代。

网银系统的安全性一般分为服务端和客户端两个方面。服务端的安全包括用户数据库私密信息,服务器数字证书等安全性的保证,是网银系统安全的基石;客户端安全主要是对使用网银系统用户在使用过程中存在的种种问题提供的保护措施。

服务器端的安全决定着整个网银系统的安全性,用户私密信息数据库、服务器数字证书、用户的私人证书等一切敏感信息都部署在服务器端。服务器端安全又包括物理安全和软件安全。物理安全包括对于应用服务器硬件安全性的保障。软件安全包括部署服务器的操作系统、网银系统等方面的安全性。此处主要谈论服务器软件方面的安全,大体内容概括如下:

网银系统服务端安全性保障

(1) 相关的服务器所处局域网和操作系统层次的安全是最基本的保障,包括检测系统漏洞,扫描 Intranet 安全,及时打补丁等措施。

(2) 保证服务器端数据和用户数据的安全性和私密性,特别是服务器数字证书、个人数字证书的安全性;保证用户敏感数据账号、密码等即使在服务器被攻破的情况下,也需要在一定程度上保证获取者不能直接或者完全获取用户敏感信息,包括对敏感信息使用摘要算法 MD5,SHA-1 等。

(3) 网银系统软件架构健壮性和安全性保障。服务器端网银软件安全性必须包括应对重试攻击、重放攻击、堆溢出、拒绝服务攻击(DOS),分布式拒绝服务攻击(DDOS)、SQL 注入等常见的各种攻击的保护措施;另外也包括通过双机热备等措施提供的高可用性、高可靠性等。

(4) 网银系统软件用于交换密钥或者生成验证码的随机数的随机性,验证图片的加入干扰因素的强度。

网银用户安全性保障

目前网银系统的主要安全隐患在于诸多使用者的安全意识薄弱,对网络使用安全了解甚少,也是网银系统存在的最大安全隐患。因此在网银系统的设计上应最大程度上减轻甚至避免由于用户安全意识薄弱等方面带来的安全隐患。当前大多数的网银系统也正在逐步通过系统的完善性来保障用户端使用的安全性。

(1)保证用户登陆过程中密钥的安全性。网银用户的客户端基本上都是 Web 浏览器,诸多的网银系统都采取了开发自己的安全控件加强用户的输入个人敏感信息的保护,但是安全控件的安全性设计及其数字签名也存在诸多的隐患,攻击者可能会使用类似的安全控件达到混淆的目的。某些网银系统的大众版也提供初级安全,使用图片让用户点击输入的方式防范密码窃取工具。当然最好的解决办法还是提供针对性的登陆软件,但是无形之间复杂了用户的使用。

(2)使用验证码保护用户密码的软件攻击。使用随机高强度的验证码图片用于用户单次登陆的凭证,防止攻击者使用软件自动进行频繁重试破解密码或者使用用户登陆后的信息重放攻击服务器。另对于可能由于疏忽忘记退出登陆提供时限的保护,超过时限自动退出。

(3)使用多因子认证方案。提供除了用户登陆密码以外的其他信息作为辅助密码:1)个人信息校验,登陆过程总验证用户的个人信息如身份证号码;2)申请个人数字证书,下载成功后保存于用户登陆机器中,保存的数字证书使用密码保护,提供一定的安全保障;3)使用物理介质保存个人数字证书,保证个人证书和机器分离,例如 USB Key 保存数字证书,用户登陆时提供保存数字证书 USB Key,USB Key 还可以使用 PIN 码来保护;4)提供附件的动态的密码,每次登陆密钥进行重新提供,密码的有效性仅为此次登陆,常见的有动态口令,刮刮卡,动态短信等。

感谢各位读者朋友对本文的关注和意见,希望大家继续关注 InfoQ!

2010-05-18 21:428595
用户头像

发布了 501 篇内容, 共 261.8 次阅读, 收获喜欢 61 次。

关注

评论

发布
暂无评论
发现更多内容

飞桨前沿升级、顶级开源项目、产教融合育人,WAVE SUMMIT论坛内容先睹为快!

百度大脑

深度学习 飞桨

Serverless:这真的是未来吗?(二)

Serverless Devs

Serverless 运维 云原生 后端 无服务器

支付中心设计

try catch

支付 支付中心

普通代码块 静态代码块 构造代码块......傻傻分不清

麦洛

Java

膜拜!Github访问量破百万,阿里内部首次公布的Java10W字面经有多强?

Java 程序员 架构 面试

深入浅出分布式存储性能优化方案

焱融科技

云计算 分布式 高性能 云存储 超融合

iOS开发底层原理技术~RAC深度解析

ios cocoa 程序员 移动开发

Flume的负载均衡load balancer

大数据技术指南

flume 5月日更

HIVE跑个insert into select xxx 为什么CPU飙高

InfoQ_Springup

hadoop

基于 Qt Quick Plugin 快速构建桌面端跨平台组件

网易云信

音视频 qt

从酷睿双核到Tiger Lake-H,英特尔如何帮游戏笔记本完成蜕变

E科讯

SparkStreaming知识点总结

五分钟学大数据

大数据 5月日更

阿里分布式大神亲码“redis核心技术笔记”,没有废话,全是干货!

Java架构追梦

Java redis 阿里巴巴 架构 架构分布式

让人工智能成为保险行业科技基因的一部分!

百度大脑

人工智能 保险

JavaScript+TensorFlow.js让你在视频中瞬间消失

不脱发的程序猿

JavaScript 人工智能 开源 TensorFlow.js

看完了京东年薪150万的大佬扔给我的“阿里内部Java 成长笔记”,差距不止一点点

Java 程序员 架构 面试 计算机

详解JQuery框架的五大选择器

华为云开发者联盟

jquery 选择器 层级选择器 属性选择器 过滤选择器

2、kafka 2.8.0 源码环境搭建

杨四正

大数据 kafka 消息队列 kafka2.8

测试开发专题-开篇

禅道项目管理

软件测试 自动化测试 测试开发

测试开发网络篇-网络协议简介

禅道项目管理

软件测试 自动化测试 测试开发

基础设施设施即代码(IaC)平台 Pulumi | 混合云管理利器

郭旭东

基础设施即代码 IaC

看MindSpore加持下,如何「炼出」首个千亿参数中文预训练语言模型?

华为云开发者联盟

框架 mindspore 盘古 NLP 大模型 中文预训练模型

千万级学生管理系统考试试卷存储方案设计

Hesher

架构 Architecture 架构实战营 存储系统

聊聊那些小而美的开源搜索引擎

代码先生

搜索引擎 elasticsearch meilisearch

520 单身福利|获奖名单公布~

InfoQ写作社区官方

520单身福利 热门活动

BitMap 转置算法:不一样的 Count 求解方式

GrowingIO技术专栏

BitMap

前端实操案例丨如何实现JS向Vue传值

华为云开发者联盟

Vue 大前端 js Promise Vuex state

DEMO WORLD分论坛聊些啥?高端制造、未来出行、皮肤科技、未来产业……

创业邦

创新

多线程 VS 多进程(一)

若尘

多线程 多进程 Python编程 5月日更

java性能分析与问题定位 实战

try catch

Java 性能分析

架构实战营模块3课后作业-基于“自研集群+MySQL存储”的消息队列架构设计方案

吴建中

架构实战营

关注网银系统:安全模型和架构设计_Java_崔康_InfoQ精选文章