资源描述
格尔网上银行安全方案
46
资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。
KOAL Software 安全白皮书
格尔网上银行安全方案
版本: 2.0
日期: 1999/12/21
上海格尔软件有限公司
格尔网上银行安全方案
目录
1 概述 1
2 网上银行安全需求分析 2
2.1 网上银行的业务安全分析 2
2.1.1 公共信息发布 2
2.1.2 网上帐户查询 6
2.1.3 网上支付和转账 9
3 格尔网上银行解决方案 12
1.1 高加密位数SSL代理 12
3.1.1 SSL 介绍 12
3.1.2 SSL工作流程 12
3.1.3 SSL代理的工作原理 14
3.1.4 SSL代理的特性 16
3.2 格尔PKI加密模块 17
3.2.1 加密模块 17
3.2.2 格尔PKI加密模块 17
3.3 格尔证书认证系统 20
3.3.1 证书认证系统 20
3.3.2 工作流程 21
4 格尔网上银行解决方案特性分析 24
附录 25
参考站点 25
名词术语 25
单钥密码体制和公钥密码体制 25
数字签名和数字信封 26
数字证书 27
1 概述
从第一家网络银行(Internet Bank)——Security First Network Bank(SFNB)1995年10月在网络上开业至今四年多。开业后的短短几个月, 即有近千万人次上网浏览, 给金融界带来极大震撼。于是更有若干银行立即紧跟其后在网络上开设银行, 随即此风潮逐渐蔓延全世界, 网络银行走进了人们的生活。
由于Internet无所不在, 客户只要拥有帐号和密码便能在世界各地与Internet联网, 处理个人交易。这不但方便客户, 银行本身也可因此加强与客户的亲和性。随着金融环境竞争加剧, 银行不得不重新审视自身的服务方式。在中国, 已经有许多商业银行纷纷推出了网上银行服务。
网上银行系统在蕴藏着无限商机的同时, 也带来了风险, 对于开设网上银行服务的提供者来说, 当务之急就是要解决安全问题。为此, 上海格尔软件公司在本文中介绍了一种网上银行系统安全方案。
在本文中所指的网上银行, 包括了个人银行和企业银行两个概念, 个人银行是指经过网络为个人银行业务提供服务, 企业银行则是指经过网络为企业用户提供服务。两者相比, 个人银行业务应该具有较简便的操作界面, 而企业银行更注重整个环节的安全性。
从广义来讲, 安全的概念能够包括数据安全, 系统安全和信息安全三个方面, 数据安全是指经过采用系统备份, 磁盘镜像等安全手段以防止数据丢失; 系统安全是指经过系统加固, 边界防御, 入侵检测等手段以防止黑客攻击系统破坏数据; 而信息安全则主要是指经过加密技术防止信息和数据在公开网络传输上被窃听、 篡改和顶替。信息安全包括四个功能: 数据保密, 身份认证, 数据完整性和防止抵赖。本文并没有涉及到有关数据安全方面的概念, 对系统安全作了一定的介绍, 而对信息安全技术的实施则作了比较详细的方案设计。
本方案是基于上海格尔软件公司电子商务部开发的以下三个安全软件产品: PKI加密模块, SSL代理和Enterprise CA。这三个产品为解决网上银行系统中数据加密, 身份认证, 数据完整性和防止抵赖等信息安全问题提供了完整的解决方案。
2 网上银行安全需求分析
2.1 网上银行的业务安全分析
从功能划分, 网上银行的业务可分为三类:
2.1.1 公共信息发布
公共信息发布用于介绍网上银行的业务范围流程, 金融公共信息等。这类业务由于面向公众发布, 不需要保证信息只能被特定团体或个人访问, 需要的是保护信息不会被非法篡改。当前在Internet上比较多的黑客事件都是篡改公共Web站点的内容, 制造虚假信息或涂改页面。如美国NASA和国防部站点被”黑”事件就是这类事件。对于银行来说, 公共金融信息虽然是公开的, 可是如果被篡改某些敏感数据, 如银行利率等, 很可能会造成不必要的麻烦, 对银行的名誉也会造成不利的影响。因此, 对这些内容的保护也是不能够忽视的。
Web站点内容被黑客篡改, 是这些黑客经过主动攻击实现的。例如, 黑客经过密码字典猜测信息系统的特权口令, 在获得特权口令之后, 登录进入系统, 篡改发布内容, 制造不良影响。对于这种情况, 我们能够经过改进系统配置、 增加防火墙防护、 配置入侵检测模块和完善安全管理策略来实现安全保护, 避免站点被非法篡改。
完善安全管理策略
黑客一般是经过分析网络管理上的漏洞以达到其攻击目的。很难定义怎样的系统管理才是完善的, 因为完善的系统管理是各方面的总和, 例如对路由器以及其它主机定期更改密码, 采用不规则密码, 关闭不必要的服务, 关闭防火墙任何不使用的端口等。
对于一个Unix系统, 安全管理主要可分为四个方面:
1. 防止未授权存取
权限控制是系统安全的基本问题, 即防止未被授权的用户进入系统。良好的用户意识, 良好的口令管理(由系统管理员和用户双方配合), 登录活动记录和报告, 用户和网络活动的周期检查是防止未授权存取的关键。
2. 防止泄密
数据保密也是系统安全的一个重要问题。防止已授权或未授权的用户相互存取对方的重要信息, 经常性的文件系统查帐, su登录和报告以及良好的用户保密意识都是防止泄密的手段。
3. 防止用户滥用系统资源
一个系统不应被一个有意试图使用过多资源的用户损害, 因为在高负载的情况下系统的安全性能往往会降低。例如黑客经过占用整个磁盘空间来防止日志生成, 不幸的是很多商业UNIX不能很好地限制用户对资源的使用。因此系统管理员必须经过一些系统命令如PS命令, 记帐程序df和du周期地检查系统.查出过多占用CUP的进程和大量占用磁盘的文件。同时安装某些监控软件也是有效的手段之一。
4. 维护系统的完整性
大多数情况下, 维护系统完整是系统管理员的责任, 例如: 周期地备份文件系统, 系统崩溃后运行磁盘扫描检查, 修复文件系统, 检测用户是否正在使用可能导致系统崩溃的软件。
良好的安全管理策略对系统的安全水平起着至关重要的作用。因此系统管理员能够将以下几个方面作为维护的重点:
系统配置 仔细研究最新的系统维护文档, 完善系统各方面的安全配置, 降低安全风险。同时, 周期性的维护系统, 包括备份和安装补丁程序、 订阅安全电子新闻。
系统隔离 将内网和外网进行隔离, 确保银行业务前置机、 业务主机和数据库服务器只处于内网中, 内网和外网经过防火墙相连。
切断共享 Web服务器上的系统配置尽可能地保证安全。关闭所有不必要的文件共享。停止所有与业务无关的服务器进程, 如Telnet、 SMTP和FTP等服务器守护进程。
日志记录 打开日志记录功能, 保存系统的访问日志记录, 对其进行分析, 能够有助于发现有问题的访问情况。如有必要, 使用专门的入侵检测模块。
口令策略 制定完善的口令策略, 限制口令的最小长度和最长有效期, 检查口令的质量。
专人专权 由专人负责系统安全和系统维护, 减少不必要的用户管理权限, 严格控制非系统管理员的权限和系统管理员的数量。
以下是一个简化的虚拟网上银行网络结构图:
图1网上银行网络结构图
从图中能够看到整个网络体系分为: Internet, 非军事区( DMZ) , Intranet以及银行内部网四部分。其安全等级从前往后逐次递增。这些网段由两个网关连为一体。首先防火墙将Internet和Intranet以及非军事区分离。非军事区是所有用户能够访问的区域, 而Intranet则只有特定用户才能访问, 经过对防火墙的合理配置能够避免内部服务器被攻击, 能够采用多级防火墙配置( 如在非军事区和Internet之间用防火墙隔离) 以提供更强的网络安全保护。
Intranet与网上内部网络由前置机相连, 为了保证银行业务主机的运行安全, 网上银行系统不直接连接业务主机, 而是由特定的前置机来代理其请求, 前置机只响应特定服务请求, 然后将请求转换为特定消息格式发送给业务主机, 收到应答后再将数据返回给请求者。经过这种隔离进一步增强了系统的安全保证。
增加防火墙防护
在网络系统中, 防火墙是一种装置, 可使内部网络不受公共部分( 整个Internet) 的影响。它能同时连接受到保护的网络和Internet两端, 但受到保护的网络无法直接接到Internet, Internet也无法直接接到受到保护的网络。如果要从受到保护的网络内部接到Internet, 首先需要连接到防火墙, 然后从防火墙接入Internet。最简单的防火墙是双主机系统( 具有两个网络连接的系统) 。
防火墙有两种:
1. IP过滤防火墙
IP过滤防火墙在数据包一层工作。它依据起点、 终点、 端口号和每一数据包中所含的数据包种类信息控制数据包的流动。这种防火墙非常安全。它阻挡别人进入内部网络。过滤防火墙是绝对性的过滤系统。即使要让外界的一些人进入防火墙之内, 也无法让每一个人进入服务器。
2. 代理服务器
代理服务器允许经过防火墙间接进入Internet。最好的例子是先连接到防火墙, 然后从该处再连接到另一个系统。在有代理服务器的系统中, 这项工作是完全自动的。利用客户端软件连接代理服务器后, 代理服务器启动它的客户端软件( 代理) , 然后传回数据。只要配置正确, 代理服务器就绝对安全, 它阻挡任何人进入内部网络, 因为没有直接的IP通路。
在网上银行系统中, 由于Web服务器需要连接到Internet, 因此, 我们建议在Web服务器和Internet之间架设一个IP过滤防火墙。
配置入侵检测模块
除了防火墙之外, 配置入侵检测模块也是一个重要的安全措施。例如, 对于银行帐户和密码, 入侵者可能尝试枚举攻击, 由于密码长度有限且均为数字, 密码空间比较小。如果入侵者知道帐户号码, 很容易经过枚举攻击猜测出帐户密码。
入侵攻击的特点是在一个攻击源同时发出密集攻击数据。自然, 这些攻击数据对于查询系统来说, 可能是合法的查询参数, 它的特点是在同一个攻击源同时发出大批量查询请求。普通情况下, 一个用户连接后不会非常频繁的查询数据( 每分钟最多不超过5次查询) , 而且查询的帐户号码也有限( 每分钟最多不超过10个帐户) 。相反, 入侵者为了猜测密码, 会大批量、 长时间、 从同一地点发出攻击信息。这种攻击模式是能够被检测到的。检测到异常情况之后, 检测模块能够自动予以记录和预警。自动预警甚至能够经过寻呼机通知系统管理员。
2.1.2 网上帐户查询
网上账户查询是指网上银行经过Internet进行帐户实时查询功能, 企业银行的查询功能包括:
l 余额查询
l 交易历史查询
l 汇款查询
l 公司对公账户查询
个人银行的查询功能包括:
l 公积金账户查询
l 交易明细查询
l 定期到期查询
l 消费积分查询
网上账户查询的安全需求比公共信息发布要更高, 因此网上账户对系统安全也有同样的需求, 而且, 除此之外, 网上账户查询的还需要解决用户的私有信息( 口令, 账户数据) 在Internet这个公开网络上传输的安全问题。而这些属于信息安全范畴。
网上账户查询的信息安全功能应包括两个方面: 身份认证和数据保密。
身份验证
传统银行业务的身份验证方案主要是经过口令或PIN来实现的, 它具有以下两个特点:
1. PIN一般为4-8个数字, 范围比较窄。
2. 银行主机记录用户输错PIN的次数, 一旦超过一定数量, 就自动关闭该账户的服务功能。
在网上银行业务中, 仅经过这样的方式来进行身份验证, 存在很大的不足:
1. 由于网上银行业务的通信信道是公开网络, 因此口令明文传输容易被截获。
2. 在网络上, 口令猜测是黑客使用最多的攻击手段, 即使使用蛮力攻击法, 攻破8位的数字口令也只需很短的时间。
3. 在网上提供服务, 很难对错误PIN输入进行限制。网络的信道故障或者人为的恶意行为都很容易使输错口令次数达到限制。错误次数限制会给合法的用户带来了很大的不便。
因此, 传统的口令验证难以成为网上银行业务的唯一身份认证技术。在网络应用中, 当前采用较多的方法是动态口令( 例如Kerberos) , 令牌卡和数字证书认证技术。这些技术配合口令机制, 就称为双因子身份认证技术。
SSL协议是采用最为广泛的数字证书身份认证技术。它不但能够解决身份认证, 也解决了数据保密问题, 因此当前大部分网上应用, 包括网上银行都采用SSL技术来实现身份认证。关于SSL技术的具体介绍参见本文第三章。
简单地说, SSL就是在传输数据前, 服务器和客户双方经过数字证书进行”握手”, 验证对方的数字证书是否合法, 而且约定一个临时的会话密钥, 对接下来要传输的数据进行加密。SSL V2.0不支持客户证书, 客户能够经过验证服务器的证书来判断服务器的合法性, 服务器则无法验证客户的证书, 一般服务器依然经过口令验证客户的身份, 由于口令在传输时已经被加密, 因此安全性有了很大的提高。SSL V3.0对V2.0进行了扩展, 支持客户证书, 这时服务器就能够验证客户的证书, 只有那些拥有合法证书的用户才能继续保持与服务器的连接, 如果配合口令验证, 就成为双因子身份认证。采用数字证书的安全体现在私钥的安全, 只要私钥不被窃取, 数字证书就是安全的, 而经过蛮力攻击法攻破私钥的可能性是不存在的。
下表是数字证书同传统口令模式的身份验证在性能上的比较:
口令方式
数字证书方式
用户登录时口令在公开网络上传输, 有可能泄密
私钥由用户保存, 只需公布其公钥。私钥永远不会在公开网络上传输, 而且从公钥无法推导出私钥
口令一旦泄密, 所有安全机制即失效
用户私钥能够存放在IC卡中并有口令保护, 安全性更高
服务器需要维护庞大的用户口令列表并负责口令保存的安全
服务器使用数字证书验证用户身份, 不保存用户的私钥, 因此用户私钥不可能在服务器端泄露
与传统方法一致, 易于理解
技术较新, 普通用户理解略有难度
对于企业银行, 由于数据安全性要求较高, 因此应该采用数字证书身份认证加上口令认证的双因子身份认证技术。每个企业用户应该申请一张数字证书, 当企业用户上网进行账户查询时, 经过SSL建立安全连接。网上银行系统首先验证该用户的数字证书是否为合法证书。然后将查询请求和口令一起发送给业务前置机, 由银行业务主机对口令再次进行认证。
企业用户的身份验证过程和CA不可分割。当服务器经过SSL获得用户证书后, 服务器应用程序还要到CA服务器检索该证书是否在废止证书列表之中。图2显示了企业用户身份验证的完整过程。图2是网上银行企业用户的口令验证方式。
对于个人用户, 考虑到使用的方便性更为重要, 能够采用SSLv2.0方式对口令加密进行身份验证, 因此用户不需要申请证书, 只需要记住口令就行。
数据加密
Web应用数据加密的方案除了SSL以外, 并没有太多可供选择的方案。 除了采用数字证书身份认证方案以外, SSL的另一个优点是在建立握手以后, 对客户和服务器之间的所有数据均采用对称算法进行加密, 对称算法的加密效率比较高, 因此对性能不会造成很大的影响。另外SSL采用了会话密钥的机制, 每次握手时约定一个会话密钥, 会话结束, 密钥马上失效, 最大程度上保证了数据的保密性。由于采用了SSL技术, Web应用的开发也大为简化, Web服务器应用程序能够把与查询状态有关的信息都保存在Cookie中, 而不必担心Cookie的安全问题。
递交口令
的
Web服务器
的
用户
的
表单
的
的
银行业务主机
的
CA服务器
的
建立SSL握手
的
1.SSL服务器代理验证用户证书本身的合法性
2。证书提交CA服务器, 检验是否已经作废
3。银行业务主机再对口令进行验证
图 2企业用户身份验证示意图
2.1.3 网上支付和转账
网上支付和转账在查询的基础上进一步给用户提供了方便, 用户能够在网上进行支付、 转账从而达到交易的目的, 就当前而言, 国内很多网上银行系统已经开通了如下支付和转账业务:
l 定期账户转活期
l 活期账户转定期
l 活期账户转活期
l 信用卡账户转信用卡账户
l 公用事业费代缴
l 企业转账
l 证券资金账户转账
l 特约商户网上支付
和查询相比, 支付和帐户转帐的安全需求更高, 除了必须具备查询所需要的安全性之外, 还需要应该提供数据完整性和不可否认性。
数据完整性
所谓数据完整性就是指用户在支付指令和转账指令中所填写的数据必须保持完整, 不能在公开网络上被其它用户无意或恶意地修改。SSL由于对整个数据链路进行了加密, 因此在一定程度上能够保证完整性, 可是公开网络上的数据加密对完整性的保护只是局部的, 一旦数据被解密后依然存在着被更改的可能。因此正确的方案应该采用数字签名机制, 由用户使用自己的数字证书对支付指令或转账指令进行签名, 同时签名数据被永久保存, 只有这样才能真正避免数据完整性被破坏, 签名是对用户私钥对数据摘要( 又称指纹) 的加密, 数据发生变化时, 数据摘要也必定发生变化。如果将原先的数字签名解密, 就很容易发现两段数据摘要不符。
不可否认性
不可否认性是指指令发出者不能在事后否认曾经发出该指令。这对于规范业务, 避免法律纠纷起着很大的作用。传统地, 不可否认性是经过手工签名完成的, 在网上银行, 不可否认性是由数字签名机制实现的。
由于私钥很难攻击, 其它人( 包括银行) 不可能得到私有密钥。因此用私钥对交易指令的摘要签名后, 就保证了该用户确实是发出了该指令。将签名数据作为业务数据的凭证, 在业务成功后就开始保障不可否认性。
不可否认性能够保证每个帐户用户的转帐过程具有法律效力。另外, 对于企业级的帐户。
对于个人银行业务来说, 转账金额比较小, 风险相对较低, 因此在双方都认可的情况下, 没有数字签名的支付和转账的指令也是能够接受的。
可是对于企业用户和进行证券转账的个人用户来说, 转账金额大, 风险大, 指令必须附带签名数据, 在签名数据验证经过以后才能真正进行支付或转账。
有四种方案能够实现用户签名:
1. 专用客户端软件: 例如电子钱包, 这类软件一般是一个浏览器的插件( PlugIn) , 在用户填好支付指令或转账指令并发送给服务器以后, 服务器用某种协议规范化该指令, 并作为唤醒消息的参数返回给用户, 这时插件被激活, 用户的指令在插件程序中再次被显示, 此时用户能够对这段指令进行数字签名。许多SET应用的实现采用了这种方案, 这种方案的主要缺点是效率比较低, 同一段数据需要被来回传送两次。另外不同的应用可能需要开发不同的插件, 对用户和系统开发者来说都增加了额外的负担。
2. 表单签名技术: Netscape公司创造的一种技术, 在其浏览器中已经支持, 经过调用Java脚本实现对表单域内容的签名, 这种方案虽然没有方案1的缺点, 可是其实现与浏览器相关。而且签名数据形式比较固定, 不利于开发新的应用, 因此很少采用。
3. Java方式: 这种方式是采用客户端脚本的一类方式, 用户在填好支付指令或转账指令时, 点击”发送”按钮, 浏览器脚本或Applet开始运行, 调用系统的加密模块对表单中的数据进行签名, 并把签名结果一起发送给服务器应用程序。这种方案克服了第一种方案的缺点, 可是需要浏览器支持对应的脚本语言。因为Java具有较大的代表性, 因此称为Java方式。另外用户必须安装具有COM接口的加密模块。
4. XML Signature方式: 这时当前最有希望的一种技术, IETF组织正在准备将这项技术确立为标准。它经过在网页中嵌入一段XML, 浏览器或其它客户端程序在处理XML时自动将数据签名。由于XML在保存和传输数据标准化方面的优越性, 这项技术正在成为微软和SUN公司竞争的焦点。
从以上方案比较能够看出, 方案3和方案4与前两种相比, 机制灵活, 应用开发方便, 具有较大的优势。因此上海格尔软件公司的加密模块和SSL代理产品对这两种用户签名方式提供了支持。
3 格尔网上银行解决方案
3.1 高加密位数SSL代理
3.1.1 SSL 介绍
SSL是一种在Web服务协议 (HTTP) 和 TCP/IP 之间提供数据连接安全性的协议。这种安全性协议被称为安全套接字层-Security Socket Layer (SSL), 它为 TCP/IP 连接提供数据加密、 服务器身份验证和消息完整性验证。SSL被视为 Internet 上 Web 浏览器和服务器的安全标准。SSL 提供了用于启动 TCP/IP 安全连接的”信号交换”机制。信号交换机制协调客户和服务器使用的安全性级别, 并履行连接的身份验证。此后, SSL 的作用是加密和解密要使用的应用程序协议的字节流( 例如 HTTP数据包) 。这意味着 HTTP 请求和 HTTP 响应中的所有信息将完全被加密, 包括客户请求的 URL地址, 表单提交内容( 例如信用卡号) 、 HTTP 访问身份验证信息以及从服务器返回到客户的所有信息。SSL协议保证了在Internet上交换信息双方的信息安全性和可靠性。
服务器证书用来在Internet上标识一台服务器的身份, 服务器证书是 Web 服务器 SSL 安全功能的基础。来自第三方身份认证机构的服务器证书提供用户验证 Web 站点的方法。
利用 SSL, Web 服务器还能够经过检查客户证书的内容来验证用户。典型的客户证书包含用户和证书发行机构的详细标识信息。综合使用客户证书标识和 SSL, 能够实现身份认证功能和防止信息篡改。
3.1.2 SSL工作流程
利用 SSL, 服务器和用户 Web 浏览器首先参与处理交换 – 需要证书和密钥对 – 以决定安全通讯需要的加密等级。此交换要求 Web 服务器和用户浏览器都具有兼容的加密和解密能力。交换的最后结果是创立( 一般由 Web 浏览器) 会话密钥。服务器和 Web 浏览器都使用会话密钥加密和解密传输的信息。此会话密钥的加密度, 或强度, 用位来表示。构成会话密钥的位数越大或越长, 加密和安全的等级就越高。Web 服务器的会话密钥一般为 40 位长, 但实际上能够更长。
Web 服务器使用本质上相同的加密方法来维护与用户的通讯链接的安全。建立安全链接后, Web 服务器和用户 Web 浏览器都使用指定的会话密钥来加密和解密信息。例如, 当经认证的用户企图从要求安全通道的 Web 站点下载文件时, Web 服务器使用会话密钥加密此文件和相关的 HTTP 标题。接收到加密文件后, Web 浏览器将使用相同会话密钥的副本还原此文件。
这种加密方法尽管安全, 但有先天不足: 在创立安全链接过程期间, 会话密钥的副本可能会在不安全的网络上传输。这意味着要危害链接的计算机破坏者只需要截取和偷窃此会话密钥就能够了。要防止这种可能性, Web 服务器可使用其它加密方法。
Web 服务器的安全套接字层 (SSL) 安全功能使用了一种称为公共密钥的加密技术来屏蔽此密钥以防在传输期间被截取。使用了两个附加密钥: 私人和公共密钥。公共密钥加密的工作方式如下:
l 用户 Web 浏览器建立与 Web 服务器的安全 (HTTPS) 通讯链接。
l Web 服务器向用户发送服务器证书和公共密钥。( 此证书使用户能够确认服务器的真实性和 Web 内容的完整性。)
l 用户的 Web 浏览器和服务器参与商议交换, 以确定用于安全通讯的加密度。
l Web 浏览器生成会话密钥, 再用服务器的公共密钥加密它。然后浏览器把加密的会话密钥发送给 Web 服务器。
l 服务器用私人密钥解密会话密钥, 并建立安全通道。
l Web 服务器和浏览器都用会话密钥加密和解密传输的数据。
会话密钥的复杂度, 或强度, 是和组成会话密钥文件的二进制位数成正比的。这意味着会话密钥的位数越大, 安全度就越大, 解密就越困难。
用户要建立与 Web 服务器的安全通讯通道时, 用户浏览器必须确认能用于该通道安全通讯的最高级加密或最高会话密钥强度。这意味着 Web 服务器和用户浏览器都必须具有兼容的会话密钥加密和解密能力。例如, 如果将服务器配置为要求最小 128位加密强度的会话密钥, 则若要使连接安全, 用户必须使 Web 浏览器有能力处理具有 128 位会话密钥的信息。
当前, 在国内使用的浏览器主要是微软公司开发的Internet Explore和网景公司开发的Navigator或Communicator。这两种浏览器都具备SSL连接的功能。可是, 使用浏览器缺省的SSL功能, 存在着许多缺点:
1. 由于国内浏览器受到美国出口限制, 加密位数无法达到128位。虽然美国国会已经批准了56位密码产品出口, 可是简体中文版的浏览器还是依然只支持40位加密强度。而40位加密强度远达不到在电子商务中应用的安全需求。
2. Internet Explore SSL模块的加密部分实际上是由操作系统加密内核CSP提供的, 而Navigator和Communicator浏览器的加密模块采用的是网景公司开发的PKCS11模块, 这两个模块之间不能够交换私钥, 因此用户申请证书时用的是何种浏览器, 以后就必须使用这个浏览器, 这给用户带来了不便。
3. 由于CSP和PKCS11的接口不同, 因此要兼顾两个浏览器的用户, 应用系统必须开发两套网页, 增加了应用系统的开发工作量。
4. 缺省的CSP和PKCS11模块都不能支持IC卡, 给用户保存和管理密钥增加了难度, 也降低了安全性能。
5. 客户的证书和私钥保存在CSP或PKCS11模块中, 给用户签名和其它电子商务应用扩展带来了很大的不便。以SET应用为例, 当前大部分SET系统的客户端电子钱包都是采用自己开发的加密模块, 也就是说, 用户必须再申请一张SET数字证书, 不同的应用采用自己的加密模块, 给用户造成了极大的不便。
因此国内采用比较多的就是SSL代理的做法, SSL代理经过截获HTTPS请求响应对, 在客户请求受保护的URL时建立SSL连接。SSL代理产品完全符合SSL标准, 因此和浏览器, Web服务器内置的SSL功能都能完全兼容。
3.1.3 SSL代理的工作原理
SSL代理分为两个部分: 代理客户端和代理服务器。代理客户端运行在用户的PC机上, 与浏览器同在一台机器上, 代理客户端经过修改浏览器的代理设置, 从而捕获浏览器发出的安全连接。当用户需要用浏览器的SSL与服务器( 代理服务器或Web Server本身) 进行连接时, 该请求被代理服务器捕获后, 代理客户端先与服务器建立高位数加密强度( 高于128位) 的握手, 再和浏览器之间生成低位数的SSL握手, 浏览器发出的http请求经过40位SSL到达代理客户端, 代理客户端首先将数据解密, 然后用与服务器端之间建立的128位SSL连接加密, 发送给服务器, 类似地, 服务器将http响应发送给代理客户端, 代理客户端先将数据解密, 然后经过与浏览器之间建立的40位SSL连接将数据发送给浏览器。
在服务器端, 代理服务器端则与低位数的web server运行在同一台主机上, 代理web server的高位数加密连接, 其工作过程与代理客户端十分类似。SSL代理的工作原理见图3。
由于代理客户端和浏览器安装在同一台机器上, 具有相同的IP地址, 因此数据仅到达数据链路层, 不可能在任何网络上出现, 两者之间即便只有40位的加密强度, 也是足够安全的。代理服务器和web server之间亦是如此。
SSL代理除了提高了传输密钥的位数, 同时也提高了证书非对称密钥的位数, 根据美国的出口限制, 非对称密钥位数不能超过512位。和40位对称密钥一样, 攻破512位非对称密钥已经成为可能。
http应用数据
代理客户端
代理服务器
浏览器
web 服务器
内置40位SSL
代理客户端
代理服务器端
40位连接
128位连接
http应用数据
图 3SSL代理工作原理示意图
无论是代理客户端还是代理服务器, 都只需要代理本机上的对应产品, 而不是代理两者之间的连接, 因此, 在没有对方的情况下, 代理客户端或代理服务器均能正常工作, 如果浏览器具有128位加密强度, 则即使没有代理客户端, 也能与配备代理服务器的40位web服务器建立128位的加密强度, 同样地, 具有128位加密强度的web server, 在没有代理服务器的情况下, 也能与128位加密位数的浏览器建立128位连接。这一点, 无论是对于面向国际的国内web站点, 还是对于希望能够与国外的web站点建立128位连接的用户来说, 都是至关重要的。
对于用户来说, 代理客户端能够真正提高浏览器建立SSL连接的安全强度, 不需要任何配置工作, 就象安装浏览器的补丁程序一样, 丝毫感觉不到其对某个网站有特殊的功能或限制。
上海格尔软件公司开发的SSL代理, 经过上海格尔软件公司开发的PKCS加密模块保存和管理个人证书和私有密钥。用户能够在同一个应用的不同层次使用相同的证书, 进一步降低了用户使用该产品的开销。
3.1.4 SSL代理的特性
上海格尔软件公司开发的SSL代理具有以下特性:
1) SSL代理经过格尔PKI加密模块提供加密和密钥管理的能力, 因此基于该模块开发的应用系统都能够尽可能地共用同一张用户证书, 为用户节约了证书管理费, 简化了管理复杂度。关于PKCS加密模块详见下一节。
2) KOAL PKCS加密模块是一个专业化的加密模块, 具有更高的安全强度, 使用更方便, 支持IC卡保存密钥, 也支持用PK卡代替软件加密, 私钥终身不离开IC卡, 增强其安全性。
3) 代理服务器可对加密算法进行配置, 在不同的应用提高或降低加密强度。
4) SSL代理具有良好的兼容性, 支持Windows和Unix平台。SSL客户端代理能够和所有符合SSL协议的SSL服务器产品兼容, SSL服务器端也能够和Internet Explore与网景公司的浏览器兼容。
5) SSL代理采用Cache技术保存以前客户服务器之间的安全连接, 从而减少了握手的次数, 在性能上尽可能地降低了影响。
6) SSL服务器代理能够将解析后的证书内容添加到用户Http请求中, 不需要应用系统自己解码证书。
7) 即将推出的SSL代理客户端具备XML处理能力, 能够实现用XML方式进行各种加密, 签名操作。
3.2 格尔PKI加密模块
3.2.1 加密模块
加密模块的主要功能是进行密钥运算和密钥管理, 大部分密码产品都是在某个加密模块的基础上开发的, 例如微软公司和网景公司的浏览器和Web服务器都是基于加密模块开发的。微软公司的加密模块是Windows操作系统内置的CSP模块, 网景公司则是自己开发的PKCS11模块。
类似地, 格尔PKI加密模块是格尔Enterprise CA和SSL代理产品的基础, Enterprise CA和SSL代理产品的加密运算和密钥管理功能都是由PKI加密模块提供的。除此之外, 格尔PKI加密模块向二次开发提供了接口和SDK, 基于此, 网上银行应用系统的开发就不必再考虑加密运算和密钥管理的设计了。
PKI加密模块不但支持RSA, 3DES, MC5等常见标准加密算法, 而且支持由上海格尔软件公司自行研制的元胞加密算法, 该算法是一种流加密算法, 用作对称加密或者计算摘要, 具有很高的强度和运算速度。用户也能够经过PlugIn的方式插入其它算法。这比完全定制Token要方便的多。
对于加密模块来说, 除了加密功能以外, 密钥的管理机制十分重要, 例如密钥是保存在磁盘文件中, Memory IC卡还是IC卡, 是否终生保存在IC卡中, 密钥的备份机制如何等等。
3.2.2 格尔PKI加密模块
PKCS11是RSA公司提出的基于公钥体制的加密模块标准, 该标准定义了一个提供保存加密信息和执行加解密操作的标准应用程序接口( API) ( 称为Cryptoki) 。加密运算和密钥管理的功能实际上是由Token完成的。Token是一种逻辑设备, 能够替换或”插拔”, 以实现用不同的物理设备保存密钥和进行加密运算。
格尔PKI( Public Key Infrastructure) 加密模块是参照PKCS11规范设计的加密模块。可是对PKCS11规范作了功能上的扩展, 增加了ASN编码和解码的功能, 以及一些协议的处理, 例如OCSP, IPSec协议等。其原理可参见图4。
图 4 PKI加密模块示意图
格尔PKI加密模块为上层应用提供了加密、 证书管理、 密钥管理和黑名单管理的基本功能, 因此是PKI应用的基础。除了应用在PKI系统外, 该加密模块也包括了符合PBOC规范的密钥分散等IC卡加密机制。以便IC卡网上交易系统的开发。
格尔PKI加密模块的Token是一个多介质的Token, 它支持用IC卡或磁盘保存密钥, 也支持用带有非对称运算能力的IC卡( PK卡) 来实现运算。另外用户能够自己实现Token, 例如基于硬件加密机的Token等。Token以PlugIn的方式插入到加密模块中。
格尔加密模块还提供了COM接口的封装, 应用系统的开发者甚至能够用Java Applet, ASP, PHP等脚本语言调用加密功能。
在Windows平台, 格尔加密模块还提供了证书, 密钥和黑名单等对象管理图形界面工具。
格尔加密模块具有很好的伸缩性, 作为客户端使用时, 仅支持少量的功能和部分加密算法, 从而缩小程序的大小, 便于用户下载。
加密模块提供了比较好的便携性能, 证书和密钥很容易从一台PC的加密模块移到另一台上。这对某些应用提供了便利。
KOAL PKI加密模块支持多用户权限控制, 即多个用户能够共用同一个加密模块, 但一个用户不能存取或利用其它用户的密钥进行运算。
硬件实现方案
由格尔加密模块来管理用户的私钥和证书, 执行数据的签名, 加密和解密操作。
一方面, 我们能够实现用户私钥的硬件方式保存, 将用户的私钥保存在IC卡上, 并采用有效的手段保护用户的私钥。
另一方面, 我们能够实现使用硬件进行加密解密操作。
为了保证私有密钥的安全, 存放私有密钥必须符合以下几条策略:
¨ 在任何时刻, 私有密钥都不以明文的形式存放在固定存储介质里。
¨ 如果RAM里产生了私有密钥的明文后, 用完后马上销毁。
¨ 私有密钥分块存放在多个固定存储介质里。
¨ 对分块存放的密码块最好也要加密, 这个加密密钥不保存在任何存储介质里, 只是存在人的脑子里。
格尔加密模块使用智能IC卡技术来存放用户的私钥, 存放过程如下:
系统产生RSA密钥对后, 用DES密钥对私有密钥进行加密后, 得到密钥信息。
系统把密钥信息分为N个密钥信息块, 每一块的长度不定, 是随机决定的。保密钥信息块和块长度被不同的个人应用密钥加密后, 存入一张IC卡的不同文件中保存。
对于硬件加密则采用硬件加密机来实现。硬件加密机就如同一个黑盒子一样, 能够产生、 保存私有密钥, 而且能够加密输入数据流。它的内部配置必须高性能的加密处理器以进行RSA加密运算, 能支持密钥长度为1024位、 2048位的RSA加密运算以及安全哈什、 块加密等运算, 加密的速
展开阅读全文