设为首页 收藏本站
查看: 968|回复: 0

[经验分享] SQL Server 2008中的代码安全(三):通过PassPhrase加密

[复制链接]

尚未签到

发表于 2015-6-29 17:57:34 | 显示全部楼层 |阅读模式
  SQL Server 2008中SQL应用系列--目录索引
导读:本文主要涉及EncryptByPassPhrase和DecryptByPassPhrase函数进行通行短语(PassPhrase)加密。
  前言
  在SQL Server 2005和SQL Server
2008之前。如果希望加密敏感数据,如财务信息、工资或身份证号,必须借助外部应用程序或算法。SQL Server
2005引入内建数据加密的能力,使用证书、密钥和系统函数的组合来完成。
  与数字证书类似。SQL Server 证书包括公钥和私钥这一对密钥,它们都用来加密和解密数据。SQL
Server也拥有创建非对称密钥和对称密钥对象的能力。非对称密钥(asymmetric
key)与证书相似,公钥用来加密数据库,私钥用来解密数据。非对称密钥和证书都提供了强大的加密强度。但在完成复杂的加密|解密过程中具有更多的性能开销。更适合对大量数据进行加密,且具有较低性能开销的解决方案是对称密钥(symmetric
key),它是对相同数据进行加密和解密的一个密钥。
  SQL Server允许将这些加密能力放到加密层次结构中。当安装了SQL
Server后,在数据库master中创建名为服务主密钥的服务器级别证书,并将其默绑定到SQL
Server服务账号登录名。服务主密钥用来加密所有其他数据库证书和创建在SQL
Server实例中的密钥。另外,你也可以在用户数据库中创建数据库主密钥(Database Master Key),它可以用来加密数据库证书和密钥。
  在SQL Server
2008中,微软引入了透明数据加密(TDE),它对整个数据库进行加密,而不需要修改任何访问它的应用程序。数据、日志文件和相关的数据库备份都是加密的。假如数据库被偷,如果没有数据库加密密钥(DEK)是不能访问数据的。本文及后面几篇文章将会举例说明。
  在SQL Server 2008中,还引入了对可扩展密钥管理(EKM)的支持,也就意味着SQL
Server可以使用硬件安全模块(HSM)来存储和和管理加密密钥。HSM可以减少数据和实际的加密密钥耦合。
  此部分内容共分六篇文章:
  1、通过PassPhrase加密
  2、主密钥
  3、非对称密钥加密
  4、对称密钥加密
  5、证书加密
  6、透明数据加密
  一、通过通行短语(PassPhrase)加密
  
对于不涉及证书及密钥的应急的数据加密,可以直接基于用户提供的密码来加密和解密数据。通行短语(PassPhrase)是允许存在空格的密码。这个PassPhrase不会存储在数据库中,因而也就意味着不会被使用存储的系统数据“破解”。同时,可以使用空格创建一个长的、易于记忆的句子来加密和解密敏感数据。
  我们需要了解的一对函数是ENCRYPTBYPASSPHRASE(http://technet.microsoft.com/zh-cn/library/ms190357.aspx)和DECRYPTBYPASSPHRASE(http://technet.microsoft.com/zh-cn/library/ms188910.aspx)
  这一对函数必须使用相同的参数。
  我们看一个示例:




use DemoDB2008r2
go
-- Table used to store the encrypted data
-- for the purposes of this recipe
CREATE TABLE #SecretInfo
(MySecret varbinary(max) NOT NULL)
GO
INSERT #SecretInfo (MySecret)
SELECT EncryptByPassPhrase(
'My Password Used To Encrypt This String in 2008.',
'我把公司的服务器数据库密码记在那个绿色的小本子上了。')
SELECT MySecret FROM #SecretInfo
/*
通常的查询结果:
0x01000000CCBC800C6B5CECE3F211FB975C2F8B681CC8301DDE74CF783C6A593
16C2BAC08D568151FD573E2FDE01C800805C8D1D5984727DEE95040C1FB604003
A3EFDD0444CE72D7E505D1A4
*/




/************
想知道原文本的内容,使用以下语句:
--------3w@live.cn
**********************/
SELECT CAST(DecryptByPassPhrase(
'My Password Used To Encrypt This String in 2008.',
MySecret) as varchar(max))
FROM #SecretInfo
http://p69muq.blu.livefilestore.com/y1pbrdOX5v6wkqkPlzibGgsYbGsk77YyMpFFtU7i_XhaWvKo-mZyV5fUT_r485pvLwDnmeTof_5ZRcGP7OUIJdObKK8v47tray8/2011-3-2%2014-49-21.png?psid=1

  注意:
  1、使用通行短语进行加密数据,不用担心sysadmin服务器角色成员读取数据(在后面文章会看到,服务器角色成员sysadmin拥有读取其他形式的加密数据的内在权限。)
  2、假定没有将密码存储在表中或在任何模块(存储过程、触发器等)中使用密码,加密的数据将防止从数据库备份被偷窃或在SQL
Server实例中的数据库中渗透。如果通行短语没有正确共享,数据就可以被解密。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-81691-1-1.html 上篇帖子: 开发资源汇聚– MS SQL Server (持续更新中) 下篇帖子: SQL server的一道入门面试题背后的思考
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表