SQL Server 数据加密功能解析
SQL Server 数据加密功能解析
转载自: 腾云阁 https://www.qcloud.com/community/article/194
数据加密是数据库被破解、物理介质被盗、备份被窃取的最后一道防线,数据加密,一方面解决数据被窃取安全问题,另一方面有关法律要求强制加密数据。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连接加密,一般用于镜像,客户端和SQL Server之间的连接就是通过这种方式,防止黑客窃取客户端和数据库之间的发送的数据。
TDE透明数据加密(2008)
透明数据加密,顾名思义,是在用户不感知的情况下完成加解密操作。
它的加密是在页级别进行,是在写入磁盘前加密,读入内存时解密,针对数据和日志文件,做到实时I/O加密,并且备份文件也会一同加密。
密钥存在数据库引导记录中,收到证书或者非对称密钥的保护,也可以与EKM模块一同使用。官方说法,额外占用3%-5%的cpu资源。
TDE也有一些缺点:
压缩率小,由于它是先加密再压缩的,所以无法显著压缩备份。
备份同样是加密的,所有恢复的时候要小心,注意备份证书和密钥,才能在另个实例中还原数据库
性能有一定损耗
备份加密(2014)
支持备份的过程中进行加密,并且支持先压缩在加密,保持高压缩比,打破了使用透明数据加密后几乎没有压缩率的窘境。
因此,使用原生备份加密无论在将数据备份到异地数据中心,还是将数据备份到云端,都能够以非常低的成本对数据提供额外的安全保障。
全程加密AlwaysEncrypted(2016)
全程加密,数据永远是加密状态,你可以在加密数据上执行操作,无需先对它们解密,也就是说加密的敏感信息不会有机会变为明文。
全程加密针对列做处理,在创建列主密钥,列加密密钥后,可以在创建表的时候设置列加密。
加密模式分为两种:确定型加密与随机型加密。
确定型加密能够确保对某个值加密后的结果是始终相同的,这就允许使用者对该数据列进行等值比较、连接及分组操作。确定型加密的缺点在于有可能揣测出原文,而随机型加密能够保证某个给定值在任意两次加密后的结果总是不同的,从而杜绝了猜出原值的可能性。官方建议需要搜索和分组的列使用确定性加密,而注释和其他敏感不会进行搜索分组的信息使用随机性加密。
SQL Server 数据加密功能解析的更多相关文章
- 腾讯云数据库团队:SQL Server 数据加密功能解析
数据加密是数据库被破解.物理介质被盗.备份被窃取的最后一道防线:数据加密,一方面解决数据被窃取安全问题,另一方面有关法律要求强制加密数据:SQL Server 的数据加密相较于其他数据库,功能相对完善 ...
- SQL Server 安装 功能详解
安装 SQL Server 功能 在“功能选择”页上,SQL Server 功能分为以下两个主要部分:实例功能和共享功能. “实例功能”表示为每个实例安装一次的组件,这样,您将具有它们的多个副 ...
- SQL Server审计功能入门:SQL Server审核 (SQL Server Audit)
原文:SQL Server审计功能入门:SQL Server审核 (SQL Server Audit) 介绍 Audit是SQL Server 2008之后才有的功能,它能告诉你"谁什么时候 ...
- SQL Server审计功能入门:更改跟踪(Change Tracking)
原文:SQL Server审计功能入门:更改跟踪(Change Tracking) 介绍 更改跟踪是一种轻量型解决方案,它为应用程序提供了一种有效的更改跟踪机制.常规的,自定义变更跟踪和读取跟踪数据, ...
- SQL Server审计功能入门:CDC(Change Data Capture)
原文:SQL Server审计功能入门:CDC(Change Data Capture) 介绍 SQL Server 2008引入了CDC(Change Data Capture),它能记录: 1. ...
- Microsoft® SQL Server® 2012 功能包
Microsoft® SQL Server® 2012 功能包 http://www.microsoft.com/zh-cn/download/details.aspx?id=29065 Micros ...
- SQL Server之索引解析(一)
SQL Server之索引解析(一) 1.写在前面 微软专门给出SQL Server设计思路及实现路线,从7大体系结构阐述是如何实现,通过了解这些,我们就可以总结出数据库设计原则.编程中sql写法 ...
- 数据库SQL Server 2016“功能选择”详细说明及精简安装选择
前言 在平时大家安装数据库的时候,一般默认功能选择都会选择全选.但是前两天公司同事问我:"那么多功能为什么都能用到嘛?"顿时,我思考了一下确实没有详细了解每个功能的详细作用,于是花 ...
- SQL Server 内存数据库原理解析
前言 关系型数据库发展至今,细节上以做足文章,在寻求自身突破发展的过程中,内存与分布式数据库是当下最流行的主题,这与性能及扩展性在大数据时代的需求交相辉映.SQL Server作为传统的数据库也在最新 ...
随机推荐
- 【.net 深呼吸】设置序列化中的最大数据量
欢迎收看本期的<老周吹牛>节目,由于剧组严重缺钱,故本节目无视频无声音.好,先看下面一个类声明. [DataContract] public class DemoObject { [Dat ...
- 异步任务队列Celery在Django中的使用
前段时间在Django Web平台开发中,碰到一些请求执行的任务时间较长(几分钟),为了加快用户的响应时间,因此决定采用异步任务的方式在后台执行这些任务.在同事的指引下接触了Celery这个异步任务队 ...
- Unity 序列化 总结
查找了 Script Serialization http://docs.unity3d.com/Manual/script-Serialization.html 自定义序列化及例子: http:// ...
- iOS的ATS配置 - 2017年前ATS规定的适配
苹果规定 从2017年1月1日起,新提交的 app 不允许使用NSAllowsArbitraryLoads来绕过ATS(全称:App Transport Security)的限制. 以前为了能兼容ht ...
- .NET平台开源项目速览(16)C#写PDF文件类库PDF File Writer介绍
1年前,我在文章:这些.NET开源项目你知道吗?.NET平台开源文档与报表处理组件集合(三)中(第9个项目),给大家推荐了一个开源免费的PDF读写组件 PDFSharp,PDFSharp我2年前就看过 ...
- 如何避免git每次提交都输入密码
在ubuntu系统中,如何避免git每次提交都输入用户名和密码?操作步聚如下:1: cd 回车: 进入当前用户目录下:2: vim .git-credentials (如果没有安装vim 用其它编辑器 ...
- iOS 10 跳转系统设置
苦心人天不负, 为了项目终于把 iOS 10 跳转系统设置的方法给搞定了, 很欣慰. http://www.cnblogs.com/lurenq/p/6189580.html iOS 10 跳转系统设 ...
- Linux C语言解析并显示.bmp格式图片
/************************* *bmp.h文件 *************************/ #ifndef __BMP_H__ #define __BMP_H__ # ...
- weinre- 调试移动端页面
相信很多前端的小伙伴一定会遇到一个问题, 比如我编写完一个页面,某个地方需要进行调整细节或者是哪个地方怎么调整都不对,在pc端还好,有google,firefox之类可以调节页面的工具,虽说这些工具有 ...
- .JavaWeb文件上传和FileUpload组件使用
.JavaWeb文件上传 1.自定义上传 文件上传时的表单设计要符合文件提交的方式: 1.提交方式:post 2.表单中有文件上传的表单项:<input type="file" ...