加密的数据在其他数据库管理系统(DBMS)是指保护数据通过加密它当它没有被使用或访问。这样做通常是为了保护敏感数据免遭未经授权的访问或盗窃。用透明数据加密(语音),加密过程对用户是透明的,允许他们访问和操纵数据像往常一样不用担心加密和解密过程。语音可以应用在不同的水平,如在数据库列,或细胞水平,取决于组织的特定的安全需求。实现语音可以帮助确保敏感数据保护和只有授权用户可以获取正确的解密密钥。
磁盘加密
磁盘级别加密是一种安全措施,加密所有数据存储在磁盘或存储设备。粒度级别只加密完全或部分磁盘。这是独立于数据库的,外部工具可以用来实现这一目标。
- 磁盘级别加密是一种安全措施,加密所有数据存储在磁盘或存储设备。
- 确保数据是防止未经授权的访问,只能被授权用户访问正确的解密密钥。
- 磁盘级别加密通常是用来保护静止数据,可以使用全部或部分实现磁盘加密。
- 有几个工具可以实现磁盘级别的加密,包括磁盘加密对于Windows, Linux dm-crypt, FileVault MacOS。
集群级别加密
集群级别加密是一种安全措施,加密数据存储在集群的服务器或存储设备。
- 确保数据是防止未经授权的访问,只能被授权用户访问正确的解密密钥。
- 集群级别加密可以保护数据在休息和运动当集群中的服务器间传递。
- 一些数据库管理系统支持集群级别加密,包括甲骨文、MySQL, Microsoft SQL Server, MongoDB,卡桑德拉。
数据库级的加密
整个数据库或数据库级加密的加密所有数据存储在数据库中。
- 整个数据库或数据库级加密的加密所有数据存储在数据库中。
- 它可以提供一个高水平的敏感数据的安全,通常是用于与其他安全措施,如语音和集群级别加密。
- 一些数据库管理系统支持数据库级加密,包括甲骨文、MySQL和Microsoft SQL Server。
表级加密
表级加密是一种安全措施,允许用户加密特定的表或列在一个数据库中。它可以提供一个高水平的敏感数据的安全,通常是用于与其他安全措施,如语音和集群级别加密。这里有一些关于表级加密的临界点在关系数据库管理系统。
- 表级加密允许用户有选择地加密特定的一个数据库中的表或列而不是加密整个数据库或数据存储在它。
- 它可以提供一个高水平的敏感数据的安全,同时仍然允许用户访问和操作它像往常一样。
- 表级加密通常用于其他安全措施,如语音和集群级别加密,提供一个更全面的安全解决方案。
- 一些rdbms,包括甲骨文、MySQL和Microsoft SQL Server,支持它。
- 实现表级加密可能需要额外的资源和影响性能,所以仔细评估安全性和性能之间的权衡是至关重要的。
加密数据库中可用
这是一个比较图的不同级别的加密可用在各种关系数据库管理系统:
| 加密级别 | 甲骨文 | MySQL | Microsoft SQL Server | PostgreSQL |
|---|---|---|---|---|
| 集群级别 | 透明数据加密(语音) | InnoDB插件 | 透明数据加密(语音) | N /一个 |
| 数据库级 | 透明数据加密(语音) | 加密在休息 | 透明数据加密(语音) | N /一个 |
| 表级 | 透明数据加密(语音) | 加密在休息 | 透明数据加密(语音) | N /一个 |
| 列级 | 透明数据加密(语音) | 加密在休息 | 透明数据加密(语音) | pgcrypto |
| 加密级别 | Amazon RDS (Oracle) | Amazon RDS (MySQL) | SQL Azure数据库 | 谷歌云SQL (MySQL) |
| 集群级别 | 透明数据加密(语音) | InnoDB插件 | 透明数据加密(语音) | N /一个 |
| 数据库级 | 透明数据加密(语音) | 加密在休息 | 透明数据加密(语音) | 全磁盘加密、透明数据加密(语音),文件级加密 |
| 表级 | 透明数据加密(语音) | 加密在休息 | 透明数据加密(语音) | 透明数据加密(语音) |
| 列级 | 透明数据加密(语音) | 加密在休息 | 透明数据加密(语音) | 透明数据加密(语音) |
密钥管理
密钥管理是至关重要的数据加密在关系数据库管理系统。这个过程包括创建、分发和管理密钥对数据进行加密和解密。
几个关键管理策略可以在RDBMS中使用,包括:
- 主密钥管理:在这种方法中,一个主密钥用于加密和解密所有RDBMS中的数据。这个键通常存储在一个安全的地方,如硬件安全模块(HSM)。
- 列级密钥管理:在这种方法中,每一列的数据使用一个单独的密钥是加密的。这允许更细粒度的控制数据访问,可以提高性能,因为只有必要的列查询数据时进行解密。
- 表级密钥管理:类似于列级密钥管理,这种方法使用了一个单独的RDBMS的关键为每个表。这允许更大的数据访问控制和改进性能。
无论使用密钥管理策略是,必须有一个健壮的系统来确保加密数据的安全性。这包括安全地存储键和快速、轻松地旋转键是否有违反。
除了密钥管理外,还必须考虑安全性的RDBMS。这包括使用安全协议进行通信,安全的身份验证方法,并实现健壮的数据访问控制,以防止未经授权的访问。
总的来说,密钥管理是至关重要的在RDBMS数据加密。组织可以保护他们的敏感数据免遭未经授权的访问通过实现一个强大的密钥管理系统,采取措施确保RDBMS。
在PostgreSQL透明数据加密
语音在PostgreSQL的范围只局限于列的基础。它不加密数据库的其他方面,如表级和数据库级加密;用户可能需要实现额外的安全措施来保护这些数据库组件。
PostgreSQL列级加密
我们已经讨论了PostgreSQL只有列级加密,可以利用一个扩展名为pgcrypto。这是最低限度的实现加密。它只能应用表列,而不是在日志文件,整个行,和数据库。
pgcrypto模块在PostgreSQL安全地存储和管理是一个功能强大的工具在您的数据库加密的数据。pgcrypto,您可以很容易地使用各种算法和密钥加密数据,然后解密数据。pgcrypto的关键特性之一就是它支持多种加密算法,包括AES,河豚和3 des。这允许你选择最好的算法安全需求和要求。
要使用pgcrypto,您首先需要安装PostgreSQL数据库的扩展。这可以通过使用创建扩展命令:
|
1
|
创建
扩展
pgcrypto
;
|
一旦安装扩展,您可以使用的各种功能pgcrypto加密和解密数据。例如,您可以使用pgp_sym_encrypt函数使用对称密钥来加密数据:
|
1
|
选择
pgp_sym_encrypt
(
“我的秘密数据”
,
“我的秘密密钥”
,
“random_iv”
)
;
|
这将返回加密的数据作为一个bytea数据类型。pgp_sym_encrypt函数接受三个参数:数据加密、对称密钥用于加密,和一个初始化向量(IV)用于加密。第四是随机值用于确保相同的数据使用相同的密钥加密将导致不同的加密输出。
解密数据,您可以使用pgp_sym_decrypt功能:
|
1
|
选择
pgp_sym_decrypt
(
encrypted_data
,
“我的秘密密钥”
,
“random_iv”
)
;
|
这将返回解密后的数据作为文本数据类型。pgp_sym_decrypt函数相同的三个参数作为pgp_sym_encrypt功能:加密的数据,对称密钥用于加密数据,和第四用于加密。
除了对称密钥加密,使用pgp_pub_encrypt pgcrypto支持公钥加密和pgp_pub_decrypt功能。公钥加密是一种加密,使用一对密钥:公钥和私钥。公共密钥加密数据,和私钥解密数据。
使用公钥加密pgcrypto,您将需要生成一对密钥使用pgp_gen_key函数:
|
1
|
|
这将生成一对密钥并返回记录。pgp_gen_key函数需要6参数:关键的名字,关键的类型生成(在本例中,rsa)、关键尺寸(比特),可选的密码和到期值,用户的电子邮件地址。
一旦你有了一对密钥,您可以使用pgp_pub_encrypt
这是一个完整的加密和解密信用卡数据的例子。
首先,创建一个示例表序列号,信用卡号码,当我们创建信用卡信息。在这里你可以看到只有一个信用卡号码隐藏从未经授权的用户至关重要。因此我们只加密列。
|
1
2
3
4
5
6
7
8
9
|
创建
表
tbl_creadit_card
(
id
串行
主
关键
,
credit_card
bytea
不
零
,
created_at
timestamptz
不
零
默认的
现在
(
)
)
;
|
现在创建一个函数generate_iv;的这个函数的目的是生成一个随机初始化向量(IV)可用于加密。第四是一个随机值,用于确保相同的数据使用相同的密钥加密将导致不同的加密输出。第四generate_iv函数可以调用任何时候一个需要加密。
|
1
2
3
4
5
6
7
8
|
创建
或
取代
函数
generate_iv
(
)
返回
bytea
作为
美元
美元
开始
返回
gen_random_bytes
(
16
)
;
结束
;
美元
美元
语言
plpgsql
;
|
下一步是创建encrypt_data。这个函数接受两个输入参数:bytea和关键类型的文本类型的数据。它返回一个bytea数据类型。在函数内部,它首先生成一个随机初始化向量使用generate_iv函数(IV)。这是使用WITH子句和子查询。接下来,该函数使用pgp_sym_encrypt函数加密数据使用密钥和iv作为输入参数。加密的数据是使用SELECT语句返回的函数。这个函数的目的是提供一种方便的方法使用对称密钥来加密数据和随机IV。你可以叫encrypt_data函数并传递的数据加密和加密的关键。函数将产生随机IV和执行加密。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
创建
或
取代
函数
encrypt_data
(
数据
bytea
,
关键
文本
)
返回
bytea
作为
美元
美元
开始
- - -
生成
一个
随机
四世
与
random_iv
作为
(
选择
generate_iv
(
)
作为
四世
)
- - -
加密
的
数据
使用
的
关键
和
四世
选择
pgp_sym_encrypt
(
card_number
,
关键
,
四世
)
从
random_iv
;
结束
;
美元
美元
语言
plpgsql
;
|
表中插入一行。
|
1
2
|
插入
成
encrypted_data
(
encrypted_data
)
值
(
encrypt_data
(
“6371-3263-3461-2735”
,
“MyKey”
)
)
;
|
|
1
2
3
4
5
6
7
|
选择
艾德
.id
,
decrypt_data
(
艾德
.card_number
,
“Mykey”
)
作为
card_number
,
艾德
.created_at
从
tbl_creadit_card
艾德
在哪里
艾德
.id
=
1
;
id
|
卡
_数量
|
created_at
- - -
- - -
+
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - - - - -
+
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
1
|
6371年
- - - - - -
3263年
- - - - - -
3461年
- - - - - -
2735年
|
2022年
- - - - - -
12
- - - - - -
20.
12
:
34
:
56
|
在PostgreSQL pgcrypto扩展提供了一些加密函数,执行各种类型的加密和解密。支持的加密算法包括:
- AES(高级加密标准)
- 河豚
- DES(数据加密标准)
- MD5(消息摘要算法5)
- sha - 1(安全散列算法1)
- SHA-2(安全散列算法2)
- SHA-3(安全散列算法3)
- HMAC基于哈希(消息验证码),
PostgreSQL透明数据加密的未来
目前,没有透明数据加密可以在香草PostgreSQL。有很多讨论在PostgreSQL社区来实现,但没有。但也有一些PostgreSQL叉子旗下公司提供这些。这里有一个例子架构PostgreSQL的透明数据加密。

结论
总的来说,语音是一个强大的工具来保护敏感数据在数据库中。在休息和运动,通过加密数据语音有助于确保数据安全的整个生命周期。使用密钥管理技术,比如EMK或外部公里,用户可以进一步安全加密数据和维护控制这一过程。





