本篇文章5303字,读完约13分钟
我的公司是中国的一家大型汽车销售公司。一旦这些数据被窃取或泄露,将会给企业带来不可估量的损失。公司将在第一时间进行监控、审计和调查,另一方面,要求信息技术部立即加强数据安全管理。幸运的是,我们正在使用sql server数据库。自sql server2005以来,有一个内置数据加密功能的新功能。该功能实现了完整的加密基础设施,无需使用其他工具即可实现完整的加密和解密操作。充分利用这一功能,即使存储设备被盗,也无需担心数据泄露。
首先看看数据库加密体系结构。整个加密系统看起来很复杂,但实际上非常简单。该加密系统分为多个加密级别,如下图所示:
第一层:窗口层。它主要使用windows的dpapi(数据保护api)所使用的用户凭证,即一种通过使用用户密码来加密要保护的对象的方法。这里,第二个级别,即sql server服务器级别,主要通过使用windows级别的用户凭据进行加密。
第二层:sql server的服务器实例层。此级别有一个服务主密钥,但此服务主密钥必须使用dpapi(即第一级用户凭据)加密。这个服务主密钥用于加密第三级数据库主密钥,这意味着上层必须为下层服务。
第三层:主数据库层。有一个数据库主密钥,它可以加密数据库中的其他对象。对称密钥不由数据库主密钥加密。从图中可以看出,对称密钥由证书、非对称密钥或指定的密码加密,并由二级服务主密钥保护。
第四层:用户数据库层。当数据库具有数据库主密钥时,您可以使用数据库主密钥来保护数据库中的证书和非对称密钥,然后使用对称密钥来保护其他对称密钥和数据。当然,您也可以使用证书和非对称密钥来直接保护数据。
让我们一个接一个地看看每个键:
服务主密钥:安装sql server时自动生成的密钥,它是一个128位的3des密钥。其功能是直接或间接保护系统中的其他密钥。使用sql server的配置管理器更改服务帐户可以自动完成加密和解密过程。服务主密钥是在安装过程中自动生成的,因此我们无法创建它,但是我们可以备份和恢复服务主密钥。
备份:备份服务主密钥到文件= c: \ bak \ smk.bak按密码加密= dufei2008
必须使用强密码进行备份,因为如果没有密码保护,其他人很容易恢复并获得服务主密钥。
若要还原:您必须提供备份的密码:从文件还原服务主密钥= c:\ bak \ smk . bak decryption by password = dufei 2008
让我们看看数据库主密钥。需要注意三点:
1.数据库主密钥不会自己生成,但必须由管理员手动创建;
2.密码保护和服务主密钥保护;
3.这是一个128位的3des密钥。
创建语法:通过密码创建主密钥加密= dufei2008受指定的密码和服务主密钥保护。
您可以使用密码将其解锁,例如在分离后将其复制到另一台服务器。因为使用了不同的服务帐户,所以服务主密钥是不同的,所以用服务主密钥加密的数据库主密钥无法解密。此时,您可以使用加密期间提供的密码来解锁数据库主密钥。
当我们创建数据库主密钥时,我们将自动使用服务主密钥进行保护,当我们使用它时,我们将自动解锁数据库主密钥。当然,我们也可以删除服务主密钥对数据库主密钥的保护,所以每次打开数据库主密钥时,我们都必须手动打开它,因为如果没有服务主密钥,我们必须指定加密期间指定的密码。
打开数据库主密钥语法:通过密码打开主密钥解密= dufei2008
使用后关闭数据库主密钥:关闭主密钥
您还可以修改数据库主密钥并重新生成数据库主密钥,这是一项耗费资源的任务,因为旧的数据库主密钥会解密现有数据,然后使用新的数据库主密钥进行加密。管理员可以根据安全性和合适的场合来决定是使用服务主密钥还是删除服务主密钥。管理员还可以通过目录视图sys.symmetric _ keys和sys.databases查看数据库主密钥状态..
备份数据库主密钥:将主密钥备份到文件= c: \ bak \ dmk.bak按密码加密= dufei2008
若要还原数据库主密钥:从文件还原主密钥= c:\ bak \ dmk . bak password解密=旧密码密码加密=新密码
以上是对数据库加密系统的简要介绍。让我们看一下使用数据库加密来保护数据。为了保护数据,必须有一个可以保护数据的密钥。密钥有三种:对称密钥、非对称密钥和证书(公钥加密、私钥解密)。用密钥加密数据是可能的,所以我们必须首先考虑如何创建相应的密钥,即如何创建证书、对称密钥和非对称密钥,然后使用这些密钥来加密数据。
让我们先看看创建证书。这里我使用自签名证书(我也可以使用现有的ca来颁发证书)。
创建自签名证书语法:
通过密码创建证书证书名称加密=密码主题=主题,开始日期=开始日期到期数据=到期日期
注意:此密码用于保护我们的私钥;主题,即描述信息的有效期(没关系)在这里不是很严格,需要结合程序或存储过程进行检查。更改证书的相关操作:更改用于加密私钥的密码或删除私钥。第一种情况适用于密码泄露,不安全。第二种情况适合加密,但不适合解密。这是很常见的,比如一些注册用户的密码,这是不想让管理层看到的。您看不到原始文本,但用户也可以使用它。
更改私钥的密码语法:用私钥更改证书cert1(通过密码解密= ' dufe 2008 ',通过密码加密= ' dufe 2008 ')
备份证书(导出证书):备份证书名称到文件= c: \ bak \迈锡特. cer带私钥(通过密码解密=旧密码,文件= c: \ bak \迈锡特PVT,通过密码加密=私钥密码)
还原(导入):通过创建而不是还原来导入还原的证书,并使用私钥从文件创建证书证书1(文件=' C: \ bak \ mypvt ',通过密码解密= '杜菲2008 ',通过密码加密= '杜菲
删除证书的私钥:更改证书名称删除私钥
添加私钥:使用私钥更改证书cert1(文件=' c: \ bak \ mypvt ',通过密码解密= ' dufe 2008 ',通过密码加密= ' dufe 2008 ')
此外,还使用了一些与证书相关的功能:
Encryptbycert(证书id,加密文本)用于加密;Decryptbycert(证书id、密文、加密密码)用于解密;Cert_id(证书名称)获取证书id,因为加密和解密都使用id。
让我们看看下面的具体例子:
让我们以杜菲数据库为例,先看看服务主密钥。正如我们已经介绍过的,它不是由我们手工创建的,并且在安装sql server时就已经存在了。我们所能做的就是备份和恢复。
备份:备份服务主密钥到文件=' c: \ bak \ smk.bak '通过密码加密=' dufei2008 '
还原:从文件中还原服务主密钥=' c: \ bak \ smk.bak '通过密码解密=' dufei2008 '
生成新的服务主密钥适用于更改服务帐户。通常建议使用配置管理器来更改服务帐户:更改服务主密钥重新生成
-数据库的主密钥
1)为当前杜菲数据库创建数据库主密钥
使用杜菲
通过密码创建主密钥加密='dufei2008 '
2)检查数据库加密状态
从名称为“杜菲”的系统数据库中选择*
3)检查数据库主密钥的信息
从系统对称密钥中选择*
4)备份数据库主密钥
将主密钥备份到文件='c:\bak\dmk.bak '通过密码加密='dufei2008 '
默认情况下,数据库主密钥将受到服务主密钥的保护,但有时我们不希望数据库主密钥受到服务主密钥的保护,因此我们可以取消服务主密钥对数据库主密钥的保护。我们先不要删除它,让我们使用数据库主密钥创建一个非对称密钥,它可以直接创建。
创建非对称密钥asy _ key 1,算法= RSA _ 1024-成功
语法:通过服务主密钥更改主密钥丢弃加密
再次检查数据库的加密状态:从名称=杜菲的系统数据库中选择*
-主要原因是is _ master _ key _ encrypted _ by _ server已经是0。不受服务主密钥保护的。
此时,如果我们创建另一个非对称密钥,它将是不成功的,并且创建非对称密钥asy _ key2的算法= RSA _ 1024-失败,因为数据库主密钥此时不会自动打开,所以我们必须在创建它之前打开数据库主密钥。
通过密码打开主密钥解密= dufei2008
从sys.openkeys中选择*以显示打开的数据库主密钥,然后创建非对称密钥,如下所示:
使用算法= RSA _ 1024创建非对称关键帧2-它显示成功。用户还可以通过图形界面检查我们创建的密钥是否出现在非对称密钥中。这个实验告诉大家,如果删除服务主密钥对数据库主密钥的保护,每次手动打开数据库主密钥都很麻烦,所以我们也可以将服务主密钥的保护恢复到数据库主密钥。
1)通过服务主密钥恢复对数据库主密钥的保护
更改主密钥通过服务主密钥添加加密
2)关闭数据库主密钥
关闭主密钥
让我们看一下使用证书来加密数据
-。
1)生成自签名证书
-用指定的密码保护私钥
通过密码创建证书cert1加密='dufei2008 ',主题='test ',开始日期='01/01/2009 ',到期日期='01/01/2010 '
-用数据库主密钥保护私钥
创建证书cert2,主题为“测试”,开始日期为“01/01/2009”,截止日期为“01/01/2010”
2)检查证书信息
从系统证书中选择*
3)修改私钥的密码
使用私钥更改证书cert1(通过密码解密= ' dufe 2008 ',通过密码加密= ' dufe 2008 ')
4)备份证书
使用私钥将证书cert1备份到文件= ' c:\ bak \ myrt . cer '(通过密码解密='dufei2008 ',文件='c:\bak\mypvt ',通过密码加密='dufei2008 ')
5)删除私钥
更改证书cert1删除私钥
6)添加私钥
使用私钥更改证书cert1(文件='c:\bak\mypvt ',通过密码解密= ' dufe 2008 ',通过密码加密= ' dufe 2008 ')
7)删除证书
丢弃证书证书1
8)恢复证书
使用私钥从文件= ' c:\ bak \迈锡特. cer '创建证书cert1(文件='c:\bak\mypvt ',通过密码解密= ' dufe 2008 ',通过密码加密= ' dufe 2008 ')
接下来,您可以通过使用下面的小脚本来体验加密的结果。
声明@atext varchar(100),@ ACI pher varbinary(max)set @ atext = '杜菲郝!'
set @ ACI pher = encryptbycert(cert _ id(‘cert 1’),@atext)
选择@acipher
选择cast(decryptybcert(cert _ id(' cert 1 '),@acipher,n'dufei2008 ')作为varchar(200))
以上描述了在sql server中实现数据加密的过程。非对称加密、对称加密和混合加密的操作过程基本相同。即使在操作过程中,也可以引入验证因素来防止绕过数据加密等的攻击。如果数据加密功能用得好,就不用担心数据丢失,这样既安全又粗心。
金星公司数据库审计专家点评
这个案例非常仔细地介绍了加密方案。为了保证数据安全,除了完善的加密措施外,还应考虑严格的授权控制,防止未经授权的访问和滥用权限。此外,对数据库的所有访问都应该是可追踪的,并在之后记录下来,因此有必要考虑部署独立的审计产品。
三链:吃昆虫、吃厕所和油炸??3.模纸锻造,模具模具模具模具模具模具模具模具模具模具模具??. 95镣铐和镣铐??0.07%锝58.....
当前流行度:0
[娇娇]http://itougu.jrj/view/189514.j.....
当前流行度:0
1.1 .涓涓细流??邦邦、邦邦、邦邦、交邦和辽寮??要坚强,要坚强。.....
当前流行度:0
你知道,你知道,你知道,你知道,你知道,你知道,你知道,你知道,你知道,你知道,你知道,你知道,你知道,你知道........
当前流行度:0
缇落入三条锁链??3镝??6铥??0(乌桕脂含有3条链吗??4镝??4铥??0)死,死,死,死又死,4.72??......
当前流行度:0
那墙,墙,墙和墙呢??钳子里有丰富的镰刀、叉子、叉子、nan和链条,这些都是銮棒的来源.....
当前流行度:1
你想挑起镝,破坏哮喘吗??缇,汤,汤,3汤和柊镶嵌??链条??4."敌鲁,缇,汤,汤,汤."??.....
当前流行度:0
咸丰、大树、细垴、十二寸、相互涓涓??环秀细链,涓涓细流,砸铙钹,甩铙钹,砸铙钹,砸铙钹,砸响,砸得咝咝作响??葛格·岳格·柊.....
当前流行度:0