详解SQL Server加密功能:数据加密和密钥管理
创始人
2025-03-17 11:00:25
0次

概述

今天主要介绍SQL Server加密功能,比较特殊,跟其他数据库的设计还是有些不太一样的。下面一起来看看吧~

[[275022]]

SQL Server 加密功能

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

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

数据加密

SQL Server支持以下多种加密算法 

详解SQL Server加密功能--数据加密和密钥管理

数据库内的加密对象受DMK保护

支持的对称加密算法:DES | TRIPLE_DES | TRIPLE_DES_3KEY | RC2 | RC4 | RC4_128| DESX | AES_128 | AES_192 | AES_256

非对称加密算法:RSA_512 | RSA_1024 | RSA_2048

注意避免使用RC,DESX类算法,2014之后会删除此功能

密钥管理

SQL Server中加密是层级的,每一个上层为下提供保护。如图:

详解SQL Server加密功能--数据加密和密钥管理

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

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

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

实例

详解SQL Server加密功能--数据加密和密钥管理

sqlserver2008

1.创建非对称密钥

  1. create asymmetric key asyc_key_enc  
  2. with algorithm=RSA_1024  
  3. encryption by password=N'Pass@word' 
  4. go 

2.创建对称密钥

  1. create symmetric key symc_key_enc  
  2. with algorithm=Triple_DES  
  3. encryption by password=N'Pass@word' 
  4. go 

3.创建证书

证书也可被其它方式保护

  1. create certificate cert_ENC  
  2. with subject='certificate for ENC',expiry_date='20990101' 
  3. go 

4.对称密钥可由以上三种方式提供加密保护

4.1 由非对称密钥加密

  1. create symmetric key symc_key_enc_byAsyc  
  2. with algorithm=AES_128  
  3. encryption by asymmetric key asyc_key_enc  
  4. go 

4.2 由对称密钥加密

  1. open symmetric key symc_key_enc  
  2. decryption by password=N' 
  3. Pass@word';  
  4. create symmetric key symc_key_enc_bySymc  
  5. with algorithm = DES  
  6. encryption by symmetric key symc_key_enc  
  7. go 

4.3 由证书加密

  1. create symmetric key symc_key_enc_byCert  
  2. with algorithm =AES_128  
  3. encryption by certificate cert_ENC  
  4. go 

 【编辑推荐】

  1. MongoDB数据库误删后的恢复
  2. 删库不跑路-详解MySQL数据恢复
  3. 超详细的Oracle数据库索引创建及索引重建变更规范
  4. MySQL数据库目录下面的db.opt是干什么用的?
  5. 大数据需求使用的六个Hadoop发行版

 

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
只需三步,让你掌握阿尔法路由器... 请参照以下阿尔法路由器设置方法,通过浏览器进入及设置宽带路由器。经过这三个步骤的设置,基本上能够熟悉...
如何更省钱? 近期特价热门硒鼓... 如今激光打印设备已经成为商务或企业的绝对主力办公设备,但采购者往往忽视了激光打印设备所用的耗材,相对...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...