我将要开发一个主要存储用户加密数据的应用程序。每条数据都通过 AES 密钥加密,AES 密钥本身使用每个授权用户的公共 RSA 密钥加密。
鉴于非加密数据的数量可以忽略不计(可能只有用户登录、一些日期和外键),我想知道“标准 DBMS”如 PostgreSQL 或 MySQL 是否是一个不错的选择。
事实上,这些 DBMS 经过优化,可以处理不同类型的数据(文本、整数、日期等)、索引、流程演算、聚合等。
就我而言,我将存储的绝大多数数据都是大块的文本(或者可能是二进制数据)。大部分所需的演算将在客户端解密后进行处理。
因此,我将无法解析我的数据。所以即使我有一个庞大的数据库,它也不会被称为“大数据”。但是,我想知道 MongoDb、MemSQL 或其他任何东西是否不是更准确的选择。如果没有,最好的 DBMS 是什么以及将它用于我的目的的最佳方式是什么?
换句话说,我认为每个 DBMS 都必须做出牺牲,以便在最重要的功能上更高效。我也认为上面详述的案例不是那么随意。所以我假设有很多我不需要的功能(或者我不能使用,例如 FULLTEXT 搜索)。另一方面,我可能需要被“标准 DBMS”丢弃的特性。
我正在阅读 SQL 加密方法,我对 TDE 有很好的了解,然后我阅读了加密列,然后阅读了始终加密。Always Encrypted的描述非常冗长和详细,但带有Encrypted Columns的文本的深度较浅,但在我看来,它似乎在做同样的事情。我想了解2之间的区别,新版本是否有任何优势?
我正在尝试在 SQL 2017 中配置备份加密,但遇到了一些问题。
我在一台机器上创建主密钥和证书没有问题。我在另一台机器上安装证书并读取备份也没有问题,但是,如果另一台机器运行的服务帐户与创建证书的服务帐户不同,这将不起作用。
以下是我正在采取的步骤(我也尝试恢复主密钥,但也会引发错误):
/* Server 1 */
/* Create the master key */
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'SomeRandomSecureString';
GO
/* Create the certificate to be used for backups */
CREATE CERTIFICATE BackupCert
WITH SUBJECT = 'Backup Encryption Certificate';
GO
/* Backup the master key */
BACKUP MASTER KEY TO FILE = '\\FileShare\DatabaseMasterKey_Master.key'
ENCRYPTION BY PASSWORD = 'SomeRandomPwd';
BACKUP CERTIFICATE BackupCert TO FILE = '\\FileShare\BackupCert.cer'
WITH PRIVATE KEY (FILE = '\\FileShareBackupCert.pvk',
ENCRYPTION BY …Run Code Online (Sandbox Code Playgroud) 我有一个存储过程,它是供应商提供的系统的一部分。存储过程是加密的,所以我们看不到代码。
存储过程突然开始运行缓慢。
我想看看做的第一件事是看执行计划,试图找出是,然而,似乎问题出在哪里不是要显示该计划的方式(sp_Whoisactive就是NULL在query_plan场)
我也可能会尝试更新统计信息,但我无法查看存储过程使用的表。
查询的等待统计信息没有显示任何明显的信息
在没有未加密版本的情况下,是否真的可以对此查询进行任何类型的故障排除?
sql-server stored-procedures encryption troubleshooting sql-server-2014
撇开笑话不谈,什么是“混淆密钥”?我只是要离开文档。
sys.sysclsobjs存在于每个数据库中。每个分类实体包含一行,这些实体共享相同的公共属性,包括以下内容:...
混淆密钥。
这似乎涉及
Content/binn/sqllang.dllContent/binn/sqlmin.dll我想知道密钥的作用和被混淆的内容,以及是否可供用户使用。
我正在考虑将 PostgreSQL 用于一个项目,因为它是免费的,人们说它很好,但我需要在我的数据库中进行一些加密。我做了一些搜索,我在 PostgreSQL 中找到了这些选项:
我不知道什么是“最安全”,你们能帮我解决这个问题吗?在这种情况下,我更喜欢稍微慢一点的安全性,而不是速度和一点安全性。
在这种情况下,我猜加密比“只是”散列密码要好,并且在 db 上确实需要它。我需要对我的用户的登录信息进行强加密。难点不是如何存储,而是如何通过加密来保护它。
我在 AWS RDS 上使用 Postgres。
我的应用程序正在使用 AWS KMS 加密对表中的选定列进行加密。
我尝试过,但找不到配置 KMS 密钥并使用decrypt()in select 查询的方法。
例如,我的应用程序正在myTable.secureColumn使用 KMS 进行加密。
现在,我正在尝试触发以下查询:
select * from myTable where decrypt(secureColumn, 'key', 'aes') = 'data';
Run Code Online (Sandbox Code Playgroud)
我没有找到如何在 pgCrypto 中配置 KMS 密钥并在上面的查询中使用。
有没有人试过这个?
提前致谢。
我有一个奇怪的加密和解密问题。加密在 SQL 2008 R2 中运行良好,我们使用的是 TRIPLE_DES_3KEY。这在 SQL 2016 中已被弃用,因此我们正在测试 AES_256。我的原始字符串不断被切断,不确定它在做什么或如何解释。我确定我错过了一些东西,但不确定是什么。详情如下。谢谢!
我的对称密钥:
CREATE SYMMETRIC KEY SK03
WITH
ALGORITHM = AES_256
ENCRYPTION BY PASSWORD = 'ThisIsMyAES_256EncryptionTest';
Run Code Online (Sandbox Code Playgroud)
我的表:
CREATE TABLE [dbo].[_EncryptionTest](
[OriginalValue] [varchar](max) NULL,
[Encryptedvalue] [varbinary](8000) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
我的存储过程:
CREATE PROCEDURE [dbo].[_usp_EncryptionTest]
@InputString varchar(MAX),
@InputString2 varchar(MAX)
AS
BEGIN
SET NOCOUNT ON;
OPEN SYMMETRIC KEY SK03 DECRYPTION BY PASSWORD='ThisIsMyAES_256EncryptionTest'
INSERT INTO _EncryptionTest
(OriginalValue, Encryptedvalue)
VALUES (
@InputString
,ENCRYPTBYKEY(Key_GUID('SK03'), CONVERT(VARBINARY,@InputString2))
)
CLOSE SYMMETRIC KEY SK03;
END
Run Code Online (Sandbox Code Playgroud)
我的测试 SQL:
EXEC _usp_EncryptionTest 'Spring …Run Code Online (Sandbox Code Playgroud) 我使用证书、带密码的主密钥使用 SQL Server 对称密钥加密技术实现了数据加密。
当我们从 PROD 服务器备份数据库并恢复到不同的服务器时,我们使用 OPEN MASTER KEY DECRYPTION BY PASSWORD = ''... 语句打开主密钥。
主密钥的密码由 SQL 管理员管理。
打开主密钥后,我们可以使用 DecryptByKey 函数解密列数据。但是,一旦我们做了一些分析,我们就想停止解密数据。一段时间后,没有开发人员应该能够解密数据。
如何停止解密数据或关闭主密钥,让开发人员无法看到明文数据?
这是我们第一次在至关重要的生产数据库上应用 TDE,我有以下问题。
当 TDE 正在进行时:
相关平台是具有可用性组的 SQL Server 2014 SP2 GDR。
sql-server encryption availability-groups transparent-data-encryption sql-server-2014
encryption ×10
sql-server ×6
postgresql ×2
security ×2
amazon-rds ×1
aws ×1
backup ×1
dbms ×1
hsm ×1