唐山网站建设

设为主页 加入收藏 繁體中文

如何在SQL Server数据库中加密数据

核心提示:为了避免某些别有专心的人从外部访问数据库,盗取数据库中的用户姓名、密码、信誉卡号等其他重要信息,在我们创建数据库驱动的解决方案时,我们首先需要考虑的的第1条设计决策就是如何加密存储数据,以此来保证它的安全,免受被他人窥伺。

为了避免某些别有专心的人从外部访问数据库,盗取数据库中的用户姓名、密码、信誉卡号等其他重要信息,在我们创建数据库驱动的解决方案时,我们首先需要考虑的的第1条设计决策就是如何加密存储数据,以此来保证它的安全,免受被他人窥伺。

SQL Server中有哪1种支持可以用于加密对象和数据?从1开始就讨论1下SQL Server欠缺甚么是明智的,或是对SQL Server中的加密部份你不应当作甚么。   

首先,SQL Server有两个内置的密码函数——即,pwdencrypt() 和 pwdcompare()。同时,还有两个SQL Server用来治理密码哈希的没有正式记录的函数:pwdencrypt() 将密码哈希过落后行存储; pwdcompare()将提供的字符串与哈希后的字符串进行比较。不幸的是,这个哈希函数不是非常安全,它可以通过字典攻击算法被破解(类似命令行利用程序!)。

这些函数随着SQL Server的版本发展而不断进行修改,这也是另1个没有使用它们的缘由。早期版本的SQL Server对密码进行的哈希,在后来的版本中没法解密,所以假设你依托1个版本中的函数,那末当升级的时候,所有你的加密数据就都没有用了,除非你可以首先对其解密——这也就背背了加密的最初的目的。   

第2,你可能会尝试往创建1个针对你的数据库的自制的加密解决方案,但是有以下3个理由说明你不要这样做:

除非你是加密专家,否则胡乱编写的加密系统只会提供非常低级的价值不高的保护。新鲜的是,单向密码哈希或 "ROTx "情势的加密几近不需要费事便可以够被轻松打败。

假设由于你自己的能力的缺少而导致加密被破解,那末你的数据就完蛋了。你需要将所有的东西进行没有加密的备份,是吗?(即使你加密了,那里有无安全漏洞?)

当市面上提供有专业级别的,具有产业强度的加密解决方案的时候,你就不值得花费时间往自己做。把你的时间用于构建1个好的,坚固的数据库,而不是再重新发明1次车轮。

那末,甚么才是好的加密数据的方式呢?

对新手,微软提供了1个自己天生的加密解决方案,CryptoAPI 。对轻量级的加密,军用级别的安全就不在考虑范围之内,它具有相对轻易实现的上风:治理员可以安装1个名为CAPICOM 的ActiveX 控制,它可以在T-SQL存储进程中提供CryptoAPI 功能。CAPICOM 支持各种类型的双向加密和单向哈希算法,所以治理员可以挑选最合适利用程序的题目的部份。   

假设你对使用微软的解决方案不感爱好,还有1些很好的第3方的方案可使用。1家名为ActiveCrypt 的软件有限责任公司制造了XP_CRYPT ,它是SQL Server的插件,可以在视图、程序和触发器中通过扩大存储进程和用户自定义函数(在SQL Server 2000中)来完成加密。你可以下载1个支持无线的MD5,DES ,和SHA1哈希的免费版本的利用程序; 其他的加密模型就是在比特深度上进行的。(完全版本是无穷的。)在你自己的代码中,你可使用XP_CRYPT,与ActiveX 控制1样(在受限的免费版本中)。对ASP程序员来讲,1个名为AspEncrypt 的组件提供了1种将高级加密整合到你的代码中的简单方式。

对数据库文件本身进行加密或提供传输层上的安全保护怎样样?对前者,大家可以在Windows系统中延续使用加密文件系统。但是,你必须保存加密密钥的备份,在出现题目的时候,这个数占有可能会丢失。对后者,有IPSec和SQL Server自己的SSL加密,都是SQL Server和Windows自带的大家的主要精力应当放在避免以明文存储敏感数据,由于从数据库中抽取没有加密的数据一样是最轻易遭到攻击的薄弱环节。

http://www.fw8.net/


TAG:数据,密码,函数,解决方案,版本
评论加载中...
内容:
评论者: 验证码: