`

如何在SQL Server数据库中加密数据

 
阅读更多

如何在SQL Server数据库中加密数据

为了防止某些别有用心的人从外部访问数据库,盗取数据库中的用户姓名、密码、信用卡号等其他重要信息,在我们创建数据库驱动的解决方案时,我们首先需要考虑的的第一条设计决策就是如何加密存储数据,以此来保证它的安全,免受被他人窥测。


SQL Server中有哪一种支持可以用于加密对象和数据?从一开始就讨论一下SQL Server欠缺什么是明智的,或者是对于SQL Server中的加密部分你不应该做什么。   


首先,SQL Server有两个内置的密码函数——即,pwdencrypt() 和 pwdcompare()。同时,还有两个SQL Server用来管理密码哈希的没有正式记录的函数:pwdencrypt() 将密码哈希过后进行存储; pwdcompare()将提供的字符串与哈希后的字符串进行比较。不幸的是,这个哈希函数不是非常安全,它可以通过字典攻击算法被破解(类似命令行应用程序!)。


这些函数随着SQL Server的版本发展而不断进行修改,这也是另一个没有使用它们的原因。早期版本的SQL Server对密码进行的哈希,在后来的版本中无法解密,所以如果你依赖一个版本中的函数,那么当升级的时候,所有你的加密数据就都没有用了,除非你可以首先对其解密——这也就违背了加密的最初的目的。   


第二,你可能会尝试去创建一个针对你的数据库的自制的加密解决方案,但是有以下三个理由说明你不要这样做:


除非你是加密专家,否则胡乱编写的加密系统只会提供非常低级的价值不高的保护。新鲜的是,单向密码哈希或者 "ROTx "形式的加密几乎不需要费事就可以被轻松打败。


如果由于你自己的能力的缺乏而导致加密被破解,那么你的数据就完蛋了。你需要将所有的东西进行没有加密的备份,是吗?(即使你加密了,那里有没有安全漏洞?)


当市面上提供有专业级别的,具有工业强度的加密解决方案的时候,你就不值得花费时间去自己做。把你的时间用于构建一个好的,坚固的数据库,而不是再重新发明一次车轮。


那么,什么才是好的加密数据的方式呢?


对于新手,微软提供了一个自己生成的加密解决方案,CryptoAPI 。对于轻量级的加密,军用级别的安全就不在考虑范围之内,它具有相对容易实现的优势:管理员可以安装一个名为CAPICOM 的ActiveX 控制,它可以在T-SQL存储过程中提供CryptoAPI 功能。CAPICOM 支持各种类型的双向加密和单向哈希算法,所以管理员可以挑选最适合应用程序的问题的部分。   


如果你对使用微软的解决方案不感兴趣,还有一些很好的第三方的方案可以使用。一家名为ActiveCrypt 的软件有限责任公司制造了XP_CRYPT ,它是SQL Server的插件,可以在视图、程序和触发器中通过扩展存储过程和用户自定义函数(在SQL Server 2000中)来完成加密。你可以下载一个支持无线的MD5,DES ,以及SHA1哈希的免费版本的应用程序; 其他的加密模型就是在比特深度上进行的。(完全版本是无限的。)在你自己的代码中,你可以使用XP_CRYPT,与ActiveX 控制一样(在受限的免费版本中)。对于ASP程序员来说,一个名为AspEncrypt 的组件提供了一种将高级加密整合到你的代码中的简单方式。


对数据库文件自身进行加密或者提供传输层上的安全保护怎么样?对于前者,大家可以在Windows系统中持续使用加密文件系统。然而,你必须保存加密密钥的备份,在出现问题的时候,这个数据有可能会丢失。对于后者,有IPSec和SQL Server自己的SSL加密,都是SQL Server和Windows自带的大家的主要精力应该放在避免以明文存储敏感数据,因为从数据库中抽取没有加密的数据同样是最容易受到攻击的薄弱环节。

分享到:
评论

相关推荐

    SQL Server 数据库中加密数据须知

    在数据传输层面,SQL Server支持IPSec和SSL加密,能为数据在传输过程中提供安全保障。 总的来说,避免明文存储敏感数据是首要任务,因为这是数据安全的最薄弱环节。应优先考虑采用成熟且强大的加密机制,无论是微软...

    sqlserver数据库SSH配置1

    SQLServer 数据库 SSH 配置是将 SQLServer 数据库与 Secure Shell(SSH)协议集成,以实现加密的数据传输和身份验证。本文将详细介绍 SQLServer 数据库 SSH 配置的实现步骤和相关配置文件的解释。 一、SQLServer ...

    navicatepremuim连接sqlserver数据库遇到问题及解决方法

    在 Win10 64 位系统中,默认安装路径为 C:\Program Files\Microsoft SQL Server。用户需要根据自己的系统环境选择正确的安装路径。 安装好 SQL Server Native Client 之后,需要配置 Navicat Premium 的界面,包括...

    qt 操作 sql server 数据库

    在Qt中,我们主要使用QSqlDatabase类来连接数据库,QSqlQuery类执行SQL查询,以及QSqlTableModel来绑定数据到Qt的表格视图。以下是具体步骤: 1. **建立数据库连接**:使用QSqlDatabase的`addDatabase()`方法创建一...

    SQL Server数据库查询自动导出发送工具

    综上所述,"SQL Server数据库查询自动导出发送工具"是一个高效、便捷的数据处理解决方案,它将SQL Server查询、数据导出与邮件发送整合在一起,简化了工作流程,提升了工作效率。对于那些依赖于SQL Server数据库进行...

    sql server 中进行des加密

    在SQL Server中进行DES加密是保护敏感数据的一种常见方法,特别是在C#应用程序中与数据库交互时。DES(Data Encryption Standard)是一种对称加密算法,它使用相同的密钥进行加密和解密,提供了一种相对快速的数据...

    关于SQL Server数据库安全

    SQL Server 的数据库安全机制包括身份验证、访问控制、审计功能、数据库加密、视图和存储过程机制等。 身份验证是数据库管理系统提供的最外层安全保护措施,对用户的身份认证是通过输入 ID 和密码,向系统出示自己...

    Sql Server数据库备份的另类解决方案

    在SQL Server数据库管理中,备份是至关重要的环节,它确保了数据的安全性和可恢复性。传统的备份方法包括完整备份、差异备份、日志备份等,但这些方式有时可能无法满足特定场景下的需求。本文将探讨一种另类的SQL ...

    解决SQLSERVER数据库驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接问题JAR包

    当SQLSERVER数据库驱动程序遇到无法通过安全套接字层(SSL)加密与SQL Server建立安全连接的问题时,通常涉及到证书配置、驱动版本兼容性、Java安全策略或者缺少必要的库文件等问题。以下是一些解决此类问题的知识点...

    完全手册C#2005+SQL Server数据库与网络开发

    《完全手册C#2005+SQL Server数据库与网络开发》是一本全面介绍使用C# 2005编程语言结合SQL Server数据库进行网络应用开发的权威指南。该书涵盖了从基础到高级的C#编程概念,以及SQL Server数据库管理和网络应用开发...

    sqlserver数据库jar包

    SQL Server数据库是一个由微软公司开发的关系型数据库管理系统(RDBMS),它在企业级数据存储、管理和处理方面扮演着重要角色。SQL Server数据库jar包是Java开发者用来与SQL Server进行交互的重要工具,它包含了JDBC...

    《Visual C++ + SQL Server数据库应用系统开发与实例》代码

    2. **SQL Server数据库连接**:在C++中,与SQL Server数据库的交互通常通过ODBC(Open Database Connectivity)或者ADO(ActiveX Data Objects)实现。ODBC是数据库访问的通用接口,而ADO是微软提供的更高级、更易用...

    使用SQLServer2005数据库加密保护敏感数据

    ### 使用SQL Server 2005数据库加密保护敏感数据 #### 概述 在现代信息技术领域,数据安全已经成为企业和组织必须面对的重要课题之一。对于存储在数据库中的敏感数据,采用有效的加密技术是确保数据安全的关键步骤...

    SQL Server数据库所需的JDBC驱动Jar包.rar

    描述中指出这个JDBC驱动Jar包是专门为JAVA开发设计的,意味着开发者在编写Java程序时,可以通过导入这些JAR包来实现对SQL Server数据库的连接、查询、更新、删除等操作。 在压缩包的文件名称列表中,我们可以看到...

    sql server数据库驱动

    SQL Server数据库驱动是Java应用程序与Microsoft SQL Server数据库之间通信的关键组件。这些驱动程序允许开发者通过编写Java代码执行SQL查询、管理数据库对象以及处理事务。在Java中,这种连接通常通过Java Database...

    c#及SQL server数据库——简单的图书管理系统

    《C#与SQL Server数据库:构建简易图书管理系统》 在信息技术领域,开发一个图书管理系统是一项常见的练习,它有助于我们理解数据库操作和客户端应用程序的交互。本项目以C#编程语言和SQL Server数据库为核心,实现...

    MS SQL Server数据库加密系统的设计与实现.pdf

    MS SQL Server 数据库加密系统是指在 MS SQL Server 数据库中对敏感数据进行加密保护,以防止数据被窃取和篡改的系统。该系统主要包括两个部分:数据库加密和密钥管理。 数据库加密是指对数据库中的敏感数据进行...

Global site tag (gtag.js) - Google Analytics