介绍
在这篇博客中,我们将介绍在 PostgreSQL 数据库中加密和解密数据的不同方法。具有一些 Linux 和 PostgreSQL 经验是必要的,而加密经验则不是,但最好有。这篇博客是使用在 Ubuntu 23.04 上运行的 PostgreSQL 16 编写的。首先,我将介绍加密的一些动机及其对数据安全的重要性,然后介绍 PostgreSQL 提供的用于实现加密的部分功能。
背景
虽然我们在日常生活中很少与加密打交道,但它对于我们敏感信息(如银行、医疗保健等)的安全至关重要。通常,加密是从最终用户抽象出来的,掩盖了所有复杂的数学和算法,让我们只需输入密码,一切就都正常了。然而,这些抽象是有代价的,因为我们必须相信解密我们数据的人不会复制数据或进行任何其他恶意行为。在这篇博客中,我们将介绍 PostgreSQL 用于加密数据的不同方法以及我们在使用它们时遇到的权衡。
加密选项
Postgres 文档 列出 了数据库软件支持的 6 种加密级别。这些是:
加密函数
所有这些功能及更多功能均记录在 PostgreSQL 文档的 pgcrypto 模块中。
通用哈希
摘要功能:
digest(data text, type text) returns bytea
此函数根据类型中指定的加密方法将变量“data”中存储的数据转换为以字节数组表示的二进制哈希。
数据:我们要计算二进制哈希的输入数据
类型:要使用的哈希算法(支持:md5、sha1、sha224、sha256、sha384 和 sha512)
返回:结果哈希作为字节数组
原始加密
这些函数只是对输入的数据进行加密,并不提供任何密钥或 初始化向量 (IV) 的管理。所有这些管理工作都应由用户处理,一般不鼓励在实际使用中采用。
encrypt(data bytea, key bytea, type text) returns bytea
decrypt(data bytea, key bytea, type text) returns bytea
我们可以看到,加密和解密函数都采用相同的参数并返回相同的类型。唯一的区别是,encrypt() 中的“data”是纯文本字节数组,而 decrypt() 中的“data”是加密数据的字节数组。
数据:表示要转换的明文(加密)或加密数据(解密)的字节数组
key:用于加密或解密数据的密钥
类型:要使用的加密算法、模式和填充。此“类型”与一般哈希中的“类型”不同,因为我们有更多选项需要定义。这些选项的形式为
algorithm
–
mode
/pad:
padding
。例如,使用无填充的 AES-CBC 加密的解密函数如下所示
encrypt(data, 'mykey', 'aes-cbc/pad:none')
。
原始加密还通过另外两个函数支持 IV:
encrypt_iv(data bytea, key bytea, iv bytea, type text) returns bytea
decrypt_iv(data bytea, key bytea, iv bytea, type text) returns bytea
这些函数与非 IV 函数几乎相同,但包含一个额外的参数,用于定义算法的初始化向量。
结论
在本博客中,我们介绍了 PostgreSQL 为数据库内外数据加密和解密提供的许多功能。首先,我们讨论了加密的重要性以及使用加密时需要做出的权衡。然后,我们研究了 Postgres 支持的不同加密级别及其在数据库中的功能。最后,我们研究了 Postgres 附带的几种加密实现、它们的用例以及如何使用它们。总的来说,加密对于我们的在线安全至关重要,如果您计划开发任何需要网络连接的东西,就必须了解加密。我希望本博客能帮助您了解加密及其在 PostgreSQL 中的功能,并激励您在下一个项目中实施这些安全基础知识。
编辑推荐:
- 解密 PostgreSQL 加密:初学者指南#postgresql认证03-14
- 两个令人兴奋的 PostgreSQL 特性可改善 NULL 处理#PG认证03-14
- 使用预加载库优化 PostgreSQL 函数#postgresql认证03-14
- 使用 pgbadger 自动填充准备好的语句占位符03-14
- RockyLinux部署流水线实战指南(从零搭建CI/CD自动化部署流程)03-14
- 介绍 pg_later:受 Snowflake 启发的 Postgres 异步查询03-14
- 信创数据库沙龙(南京站|开启报名)03-14
- 在 Kubernetes 上用 KubeBlocks + Dify 快速构建生产级 AIGC 应用03-14
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 解密 PostgreSQL 加密:初学者指南#postgresql认证
解密 PostgreSQL 加密:初学者指南#postgresql认证
26-03-14 - 两个令人兴奋的 PostgreSQL 特性可改善 NULL 处理#PG认证
- 使用预加载库优化 PostgreSQL 函数#postgresql认证
使用预加载库优化 PostgreSQL 函数#postgresql认证
26-03-14 - 使用 pgbadger 自动填充准备好的语句占位符
使用 pgbadger 自动填充准备好的语句占位符
26-03-14 - RockyLinux部署流水线实战指南(从零搭建CI/CD自动化部署流程)
- 介绍 pg_later:受 Snowflake 启发的 Postgres 异步查询
- 信创数据库沙龙(南京站|开启报名)
信创数据库沙龙(南京站|开启报名)
26-03-14 - 在 Kubernetes 上用 KubeBlocks + Dify 快速构建生产级 AIGC 应用
- 炙手可热!信创时代下的PostgreSQL数据库
炙手可热!信创时代下的PostgreSQL数据库
26-03-14 - PG统计信息浅析
PG统计信息浅析
26-03-14
