2.1.6 加密
存储在数据库中的数据是非常容易受攻击的。任何访问数据库的人都可能查看到敏感的数据。而且,当交易依靠非现场设备备份重要的记录和数据时,就像我们最近在新闻中看到的,你根本无法控制这些数据,并且它们极易丢失。这一节不是关于如何确保联邦快递传送备份磁带,而是关于你如何将数据存储在那些磁带上的。本节讲述高级加密特性和技术。作为数据的使用者(因此也是保护者),有责任提出如何有效管理数据的难题。只将整个数据库加密是行不通的。应该使用应用层安全和数据库层安全相混合的模式。此外,对最终用户要实行严格的数据访问策略。
多数黑客和数据盗窃事件发生在公司内部。使用加密技术时,应考虑基础设施的整体安全。磁盘存储系统安全吗,或者它是在网络上吗?谁有权使用服务器机房?建议需要保证数据库安全的应用软件隐藏起来,而且不要在这些数据库上运行其他的应用软件。高度安全的服务器的可用性具有挑战性。由于SQL Server结合使用了证书和加密技术,不仅数据库需要一个灾难恢复计划;整个服务器,包括用户配置文件都需要考虑到。因为共享存储和系统奇偶校验是逻辑上可以接受的,所以故障移转群集(Failover Clustering)对高安全性的应用程序来说是一种更普通的高可用性(HA)技术。这样,让我们来看更多与加密技术相关的内容。
证书有两种基本模式,同样地,“密钥”加密也有两种基本方法。回顾起来,加密是出自于孩提时候的侦探游戏,加密过程是将纯文本或清晰的文本转换成杂乱的形式。那些有密钥的人能够破译数据。这两个基本模式是公钥加密(不对称)和共享密钥(对称)。当密钥对称时,对信息进行编码和译码使用相同的密钥。
当密钥不对称时,信息发送人用私钥加密信息,信息发送人与接收人不共享此私钥。相反接收人用公钥可解开信息。用公共密钥不能推断出私钥;因此,私钥持有者有很高的信任级别。公钥/非对称模式的优点是:接收人不知道私钥,只有接收人有正确的公钥,他或她才能看到信息。SQL Server 2005支持下列不对称密码算法:RSA,RC2(Ron誷 Code 2)和RC4(Ron誷 Code 4)。RSA协议已被广泛使用,并大量运用于电子商务类交易中。我建议要在一定程度上深入地了解这些协议,并且对这些协议的使用要在公司内达成一致。RC2算法以Usenet群邮的形式展现在互联网中了。
注意:知识测试:RSA代表什么?
对称模式下,信息发送人和接收人有一对私钥,没有公钥。他们都对对方有一些了解。他们都使用相同的密钥对信息进行加密和解密。在SQL Server 2005中所用的对称加密算法有数据加密标准(DES)、三重DES、DES-X和高级加密标准(美国政府采用的标准)。
注意:SQL Server支持证书和不对称密钥。较好地区分两者是很重要的。公钥证书就是一个把公钥与一个人、装置或服务的身份绑订在一起的数字签名的声明。这个证书通常是由一个可信赖的证书授权机构(CA)提供。SQL Server没有提供证书全部可用的功能。例如,SQL Server不核对退回列表或有效期。重要的是用户没有假定这种功能会在后台提供。SQL Server的证书和不对称密钥间功能的区别之一是:证书可以转存到文件中,但不对称密钥不能。
1. 数据库主密钥
SQL Server将数据库主密钥作为所有SQL Server密钥的根源。每个数据库都有自己的主密钥。主密钥不会默认生成或开启。它必须用数据定义语言(DDL)手工生成。数据库主密钥是一个必须用CREATE MASTER KEY DDL声明显式创建的对称密钥。
对任何特定服务器来说,密钥链延伸到服务主键。不管数据库主密钥是否用服务主键加密,它也总是再用密码加密。无论是由服务器主键还是用来加密数据库主密钥的密码都允许恢复数据库主密钥。数据库主密钥允许在给定的数据库中对所有数据加密密钥进行解密,该数据库具有扩展到数据库主密钥层的密钥链。任何由数据库主密钥加密的数据加密密钥都能够恢复。
因此,默认地,当数据库主密钥没有通过密码或服务主键加密时,所有用密钥加密的数据都很容易获取。如果当前的服务器实例拥有那个主密钥并且不需要显式打开时,可以隐式加载用服务主密钥加密的数据库主密钥。相反的,只用密码不用服务主密钥加密的数据库主密钥必须在它解密数据加密密钥前由用户显式地打开。可以用OPEN MASTER KEY DDL命令显式开启使用密码的密钥。随后,可以用CLOSE ALL KEYS DDL命令关闭数据库主密钥和所有用它破译的密钥。如果数据库主密钥是用服务主密钥隐式破译的,
/*创建一个主密钥*/ |
每个SQL Server实例都有一个服务密钥,它是内部密钥管理的信任基础。这个主密钥是在安装时生成的,但如果保密性受到损害应该手工重新生成。通过使用由Windows数据保护(Data Protection)API所提供的安全存储器对服务主密钥进行加密。服务主密钥允许显示使用内部数据库密钥管理功能管理的SQL Server中的密钥。这是因为每一个密钥都是一个直接或间接加密的数据库实例。服务器主密钥在安装时自动创建。用户不用干预,除非要改变它。
3. SQL Server 2005的密钥管理
随着对基本内容的消化理解,我们应该碰一些难题。SQL Server自动产生服务主密钥。如何保护那个密钥?微软的答案就是使用证书。但是如果证书丢失了呢?最终,正确的答案是,在某些层面应该公开一些秘密。每个组织都形成了管理证书和加密的一套方法。顺理成章,每隔一段时间当服务器的状态发生改变时,应该在服务器上备份证书。利用现实中的方法,将证书存储到不安全的介质上,然后将介质锁在物理安全的地方是不切实际的。以下是组织必须把握的问题:
如何产生/重建密钥?
我们用什么机制共享人与服务器间的密钥?
如果是一个密钥受到威胁,我们怎么办?
什么是密钥管理的通用方法?
随着越来越熟悉SQL Server 2005,建议制订基于当前的监管规则和通常要了解的企业标准。
4. 数据库数据加密
到现在为止,我们一直围绕SQL Server如何实施加密进行讨论。SQL Server利用加密和证书来保护数据。数据库数据加密是一个值得讨论的话题。微软不建议使用Windows 解密文件系统(Encrypted File System,EFS)。EFS对每个文件组只用一个密钥,并且要求应用级解码/编码,这可能会导致性能问题。此外,一旦SQL Server破译了数据,它就不再受到保护。然而,SQL Server 2005使用隐秘的Windows API技术协助加密。SQL Server 2005预先对单元级数据进行加密。在SQL Server术语中,这意味着页级加密。因为当从文件系统中找回数据时,SQL Server需要译出数据,所以性能可能会一些受损。
在考虑采用数据库加密时,牢记下列各项:
密钥创建的密码政策是什么?既然需要提供密码,我们应该采用什么规则?谁应该知道规则?如果我们失去数据库并且没有修复服务主密钥,我们的备份计划是什么?
在哪备份密钥?
谁编写存取数据的Transact-SQL?
应用程序如何与加密/解密的数据交互?
5. 应用程序和数据库加密
使用数据库加密时,需要考虑清楚某些性能问题。这里只考虑了少数。加密的数据不能进行索引。对于大表单,这意味着SQL Server的效率不高。模式与索引不需要加密数据,你可能会认为它们是索引依赖的。另外,由于SQL Server提供列级加密,因此应该考虑如何备份和恢复混合的数据库。SQL Server 2005允许共享能够用于解密/加密数据的证书。我推荐阅读和了解SQL Server在线手册中关于安全与加密的专题。
6. 安全套接字层与SQL Server加密
微软SQL Server 2005利用SSL对应用计算机与数据库计算机上的SQL Server实例之间所有的数据传输进行加密。SSL加密是在SQL 本地客户机网络库(SQL Native Client Net-Library)中完成的,并且应用于SQL Server 2005支持的所有内部计算机协议。
SSL加密只对运行于分配了公共CA授权的证书的计算机上的SQL Server实例起作用。运行应用程序的计算机也必须有出自同一授权机构的CA证书。网络库采用SSL API进行加密。SSL加密加强了通过网络在SQL Server实例与应用软件间所传递数据的安全性。将网上传送的数据加密可以使得未经授权的不能读取明文,即使他们使用诸如网络监听工具。当然,网络库的性能略有下降。
利用互联网协议安全(IPSec),可以在传输期间加密SQL Server数据。IPSec是由客户和服务器操作系统提供,并且不需要有SQL Server配置。在计算机间建立信任的基于标准的IETF认证方法有3种:
由Windows域提供的Kerberos版本5.0认证。
利用证书的公/私钥签名。
密码,提前共享的认证密钥,严格用来建立信任,不是用来保护应用数据包的。
| 回书目 上一节 下一节 |
|
· 第六章 你能帮我吗?.. · Linux笔试面试题选摘测.. · 08年5月软考网管上午真.. · 性能测试从零开始 目录 · 08年5月软考网工上午真.. · 上周拒绝服务攻击(DDo.. |
· 08年5月各大网上书店及.. · 2008年5月24日软考试题.. · 软件设计师专家临考模.. · 上周网络管理员专家自.. · 网络工程师自测获奖名.. · 08年4月各大网上书店及.. |
|
||||
| · NAC安全访问控制 · 网络布线测试仪器 · Windows Server 2008专.. · Windows远程桌面应用 · 网络故障排除宝典 · 运营商封堵ADSL共享 中.. · 解析35岁技术人的价值.. · 世纪枭雄比尔盖茨的王.. |
· 主流品牌防火墙配置 · ASP.NET开发教程 · 超级计算机TOP500专题 · Vista SP1对决XP SP3 · SQL Server 2008/2005.. · 程序员如何成长? · C#技术开发指南 · 虚拟化技术还有点“虚” |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · Windows远程桌面应用 · C#技术开发指南 · Apache技术专题 |
· Windows集群服务应用 · C#技术开发指南 · 国际文档格式标准开战 · 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · C#技术开发指南 · 三层交换技术专题 · Apache技术专题 · C#技术开发指南 |
· Windows远程桌面应用 · 企业数据恢复指南 · Windows集群服务应用 · 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 反垃圾邮件技术应用 |
|||