SQL Server 数据加密功能解析

作者介绍: 王甲坤 腾讯云工程师

数据加密是数据库被破解、物理介质被盗、备份被窃取的最后一道防线,数据加密,一方面解决数据被窃取安全问题,另一方面有关法律要求强制加密数据。SQL Server的数据加密相较于其他数据库,功能相对完善,加密方法较多。通常来讲,数据加密分为对称加密和非对称加密。对称加密:加密与解密使用同一密钥,密钥需要传输,安全性较弱,但性能较非对称要好。非对称加密:加密与解密使用不同密钥(公钥和私钥),较对称密钥安全性较好,但是算法较复杂,带来性能上的损失。因此,折中的方法是使用对称密钥加密数据,使用非对称密钥加密对称密钥。这样既保证高性能,又提高密钥的可靠性。

同样,SQL Server 就使用了折中的方法,所以SQL Server 加密功能包含2个部分:数据加密和密钥管理

一.数据加密

说道数据加密,我们不得不说下加密算法,SQL Server支持多种加密算法:

二.密钥管理

1.SQL Server加密层次结构

由图可以看出,加密是分层级的。每一个数据库实例都拥有一个服务主密钥(Service Master Key),这个密钥是实例的根密钥,在实例安装的时候自动生成,其本身由Windows提供的数据保护API进行保护(Data Pertection API),服务主密钥除了为其子节点提供加密服务之外,还用于加密一些实例级别的信息,比如实例的登录名密码或者链接服务器的信息。

在服务主密钥之下的是数据库主密钥(Database Master Key),这个密钥由服务主密钥进行加密。这是一个数据库级别的密钥,可以用于为创建数据库级别的证书或非对称密钥提供加密,每一个数据库只能有一个数据库主密钥。

EKM模块,这个比较特别,全称可扩展密钥管理模块,该功能增强sqlserver密钥管理的能力,允许将密钥存储到数据库之外,包括一些硬件,如智能卡、USB设备或硬件安全模块(HSM);并且允许使用第三方产品来管理密钥和进行加密;另外,有条件的可以使用更高性能的HSM模块来加解密,减少加解密上性能的损失。

2.SQL Server加密方式

对象定义加密

未保证触发器、存储过程、视图等定义信息,我们可以在定义sqlserver对象的时候添加WITH ENCRYPTION字段来加密对象。

列数据加密

通过函数加密表中的某一列数据。可以通过密码、对称密钥、非对称密钥、证书等4中方式加密。其中,还包括 带有验证器的加密函数,验证器用来解决密文替换问题,验证器一般选用不更改独一无二的id,这样就算密文替换,验证器不对,一样失败。

连接加密

通过证书的方式对ssl连接加密,一般用于镜像,主从机器之前的连接就是通过这种方式。

TDE(透明数据加密)

透明数据加密,顾名思义,是在用户不感知的情况下完成加解密操作。

它的加密是在页级别进行,是在写入磁盘前加密,读入内存时解密,针对数据和日志文件,做到实时I/O加密,并且备份文件也会一同加密。

密钥存在数据库引导记录中,收到证书或者非对称密钥的保护,也可以与EKM模块一同使用。官方说法,额外占用3%-5%的cpu资源。

TDE也有一些缺点:

压缩率小,由于它是先加密再压缩的,所以无法显著压缩备份。

备份同样是加密的,所有恢复的时候要小心,注意备份证书和密钥,才能在另个实例中还原数据库,性能有一定损耗。

备份加密 (2014)

支持备份的过程中进行加密,并且支持先压缩在加密,保持高压缩比,打破了使用透明数据加密后几乎没有压缩率的窘境。

因此,使用原生备份加密无论在将数据备份到异地数据中心,还是将数据备份到云端,都能够以非常低的成本对数据提供额外的安全保障。

全程加密(2016)

全程加密,数据永远是加密状态,你可以在加密数据上执行操作,无需先对它们解密,也就是说加密的敏感信息不会有机会变为明文。

全程加密针对列做处理,在创建列主密钥,列加密密钥后,可以在创建表的时候设置列加密。

加密模式分为两种:确定型加密与随机型加密。

确定型加密能够确保对某个值加密后的结果是始终相同的,这就允许使用者对该数据列进行等值比较、连接及分组操作。确定型加密的缺点在于有可能揣测出原文,而随机型加密能够保证某个给定值在任意两次加密后的结果总是不同的,从而杜绝了猜出原值的可能性。官方建议需要搜索和分组的列使用确定性加密,而注释和其他敏感不会进行搜索分组的信息使用随机性加密。

最后附上TDE开通示例:

参考链接: sqlserver加密:https://msdn.microsoft.com/zh-cn/library/bb510663(v=sql.120).aspx 可扩展密钥管理模块EKM :https://msdn.microsoft.com/zh-CN/library/bb895340(v=sql.120).aspx 透明数据加密TDE:https://msdn.microsoft.com/zh-cn/library/bb934049(v=sql.120).aspx

更多数据库文章,请关注腾讯云数据库公众号: QcloudCDB

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微信终端开发团队的专栏

基于TLS1.3的微信安全通信协议mmtls介绍

编者的话:近年来网络安全事件层出不穷,确保亿万用户的安全隐私是我们微信义不容辞的责任。当然,我们更要保证用户稳定、快速的聊天体验,所以我们有了mmtls。文章干...

64110
来自专栏贾老师の博客

SSL/TLS协议

1694
来自专栏安智客

五分钟掌握PKI核心原理!

公开密钥基础设施( PKI, Public Key Infrastructure )逐步在国内外得到广泛应用。我们是否真的需要 PKI , PKI 究竟有什么用...

28710
来自专栏服务端思维

HTTPS 项目实战指南

HTTP 协议没有加密机制,可以通过 SSL 或 TLS 加密 HTTP 的通信内容。因此,HTTPS 是 HTTP 的安全版,在 HTTP 协议中加入 SSL...

633
来自专栏Keegan小钢

读《图解密码技术》(三):密钥、随机数和应用技术

最后一篇了,如果还没看过前两篇的,最好先翻回去看看,因为这最后一篇的内容是建立在前两篇的基础之上的。本篇的内容包括密钥、随机数、PGP、SSL/TLS,最后再讲...

721
来自专栏张绍文的专栏

基于 TLS 1.3的微信安全通信协议 mmtls 介绍(上)

随着近些年网络安全事情的频繁发生,使得用户对网络通信安全的意识越来越强。国内外的网络服务提供商都逐渐提供全站的安全通信服务,如国内的淘宝、百度先后宣布已经完成了...

1.4K0
来自专栏行者悟空

SSH免登陆原理及配置

1121
来自专栏腾讯Bugly的专栏

全站 HTTPS 来了

阅读提示:全文较长,预计阅读时长:20分钟 各位使用百度、谷歌或淘宝的时候,有没有注意浏览器左上角已经全部出现了一把绿色锁,这把锁表明该网站已经使用了 HTTP...

2274
来自专栏大内老A

[WCF安全系列]认证与凭证:X.509证书

在《上篇》中,我们谈到了常用的认证方式:用户名/密码认证和Windows认证。在下篇中,我们着重来介绍另外一种重要的凭证类型:X.509证书,以及针对X.509...

17510
来自专栏架构师之路

从嘿,今晚...谈消息安全传输中的技术点

和女/男票聊了一些私密的话,成天担心消息会不会被泄漏,始终不放心,看完此文,消息传输安全性的来龙去脉,终于略知一二了。 一、初级阶段:信息裸传 ? 特点:在网络...

3496

扫码关注云+社区