初学者指南 | PostgreSQL中的加密机制如何运作?

PG数据库实现AES加密和模糊查询 对涉及到的界面和字段的显示列表和详情界面中,调用AES解密函数的方法。如果模糊查询条件中,有涉及到加密字段的话,需要在DAO层拼写sql语句时,先把被查询的加密字段做解密处理后,拼写成模糊查询(like '%?以上是我个人针对自己项目的心得,以上的加密和解密方式有漏洞,例如:无法使用索引,针对大数据查询效率太慢,前台应用加密和后台数据库解密可能存在不对称的情况等等。如果模糊查询条件中,有涉及到加密字段的话,需要在DAO层拼写sql语句时,先把被查询的加密字段做解密处理后,拼写成模糊查询(like '%? 阅读详情

在这篇文章中,我们将介绍可用于加密和解密PostgreSQL数据库中数据的不同方法。拥有一些 Linux 和 PostgreSQL 经验是必要的,但拥有加密经验并不是必需的,有经验当然更好。本文是使用 Ubuntu 23.04上运行的 PostgreSQL16编写的。首先,我将介绍加密的一些动机及其对数据安全的重要性,然后查看 PostgreSQL为实现加密所提供的函数的子集。
 

#1 背景

虽然我们在日常生活中很少与加密进行交互,但它对于我们的敏感信息(如银行、医疗保健等)的安全至关重要。通常,加密过程会远离终端用户,隐藏所有复杂的数学和算法,让我们只需输入密码,就可以完成所有操作。但是,这些抽象需要权衡,因为我们必须相信解密我们数据的人不会对其进行复制或进行其他恶意行为。在这篇博客中,我们将介绍 PostgreSQL 用于加密数据的不同方法,以及我们在使用它们时遇到的权衡。

#2 加密选项

PostgreSQL文档列出了数据库软件支持的 6 个加密级别。这些级别包括:

>>>密码加密

可能是最简单和最常用的加密形式。在向服务器发送之前,PostgreSQL客户端将对用户密码进行Hashing处理,然后将其存储在数据库中。这意味着明文密码永远不会存储在服务器上,这使得潜在的攻击者很难获取到它。

>>>特定列的加密

pgcrypto 模块提供加密函数,用于加密存储在数据库特定列中的数据。要解密数据,客户端必须通过密钥发送,并且数据在服务器端是未加密的。这意味着密钥和数据都会在服务器端短暂地暴露给具有提升权限的任何人(如数据库管理员)。

>>>数据分区加密

此方法并非特指 PostgreSQL,而是指操作系统在将数据写入磁盘时使用的加密。这意味着 PostgreSQL 服务器具有驱动器级别的加密功能,以阻止任何人通过物理访问服务器来读取数据。

>>>加密网络上的数据

这是指可以配置 PostgreSQL 以在网络上安全地传输数据的不同方法。SSL 和 GSSAPI 都可以通过指定主机及其加密在 pg_hba.conf 文件中进行配置。SSH 也是通过 PostgreSQL 支持的网络进行连接的常用协议。

>>>SSL主机身份验证

对于此级别,客户端和服务器都必须设置为在 SSL/TLS 握手中交换 SSL 证书。一旦启用,此方法可以防止可能的攻击者冒充服务器并获取对受限信息的访问权限,也称为中间人攻击。

>>>客户端加密

最后,也可能是最安全的选择是客户端在将数据发送到服务器之前自行加密数据。这意味着客户端必须在其端点管理所有加密和解密,但也消除了恶意管理员能够读取您的数据的可能性。

#3 加密函数

所有这些函数以及更多功能都记录在 pgcrypto 模块的 PostgreSQL 文档中。

  • General Hashing

Digest 函数:

digest(data text, type text) returns bytea

此函数根据“类型”中指定的加密方法,将存储在变量“data”中的数据转换为字节数组表示的二进制Hashing。

  • data:我们想要计算其二进制Hashing值的输入数据

  • type:要使用的Hashing算法(supported: md5, sha1, sha224, sha256, sha384 and sha512)

  • return:以字节数组形式生成的Hashing值

  • 原始加密

这些函数只是在输入的数据上运行密码,并不提供任何形式的密钥或初始化向量 (IV) 的管理。所有这些管理都应由用户处理,通常不建议在实际使用时使用。

encrypt(data bytea, key bytea, type text) returns bytea
decrypt(data bytea, key bytea, type text) returns bytea

正如我们所看到的,encrypt 和 decrypt 函数都采用相同的参数并返回相同的类型。唯一的区别是 'data' 是 encrypt() 中的明文字节数组,而在 decrypt() 中,'data' 是加密数据的字节数组。

  • data:表示要转换的明文(加密)或加密数据(解密)的字节数组

  • key:用于加密或解密数据的密钥

  • type:要使用的加密算法、模式和填充。这种“类型”与一般的哈希不同,因为我们有更多的选项可以定义。这些选项的格式为 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 对应函数几乎相同,但包含一个额外的参数,用于定义算法的初始化向量。

#4 总结

在这篇博客中,我们介绍了PostgreSQL 提供的许多功能,用于加密和解密数据库内部和周围的数据。首先,我们谈到了加密的重要性以及我们在使用它时所做的权衡。然后,我们查看了 PostgreSQL 支持的不同加密级别及其在数据库中的功能。最后,我们研究了 PostgreSQL附带的一些加密实现,它们的使用案例以及如何使用它们。总体而言,加密对于我们的在线安全至关重要,并且如果您计划开发任何需要网络连接的内容,那么了解它是非常必要的。我希望这篇博客有助于你深入了解加密以及它在PostgreSQL中如何工作,同时能够启发你在未来的项目中实施这些安全措施。

在 PostgreSQL 中如何实现数据的加密存储? 总的来说,在 PostgreSQL 中实现数据的加密存储是一项重要而又具有挑战性的任务。我们需要根据实际需求选择合适的加密方式,认真管理好加密密钥,充分考虑性能影响,并在实际应用中注意各种细节。这就像是建造一座坚固的城堡,每一块石头、每一道防线都要精心设计和建造。只有这样,我们才能真正保护好数据库中的宝贵数据,让它们在数字世界里安然无恙。🎉相关推荐🍅关注博主🎗️带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf📙PostgreSQL 中文手册。 阅读详情

相关推荐

在 PostgreSQL 中如何实现数据的加密传输?

在 PostgreSQL 中实现数据的加密传输是保护敏感数据安全的重要措施。通过启用 SSL/TLS 加密或使用 SSH 隧道,可以有效地防止数据在传输过程中的窃听、篡改和泄露。在实际应用中,应根据具体的安全要求和技术环境选择合适的方法,并进行正确的配置、优化和监控,以确保数据的安全性和系统的稳定性。PostgreSQL 为用户提供了多种可靠的方式来实现数据的加密传输,使数据在网络中的传输变得更加安全可靠。通过合理的配置和管理,可以在保障数据安全性的同时,最大程度地减少对系统性能和使用便捷性的影响。

技术笔记 2239

Postgresql数据加密函数介绍

业务需求需要对一些敏感数据进行加密处理,说到加密,分为非对称加密和对称加密,稍微解释一下这两个名词1.对称加密方法,指加密和解密使用同一把密钥的方法。优势是加密速度快,缺陷是密钥只有一把,安全性较低。2.非对称加密方法,指加密和解密用到一对钥匙,一把为私钥,一把为公钥。通常的用法是公钥用于加密,私钥用于解密,当然也可以私钥加密,公钥解密。比如乙方用公钥进行加密后,发送数据到甲方,甲方用自己的私有密...

魂醉的一亩二分地 1万+

在 PostgreSQL 里如何处理数据的存储加密和密钥更新管理?

数据存储加密和密钥更新管理是保护数据安全的重要手段。在 PostgreSQL 中,我们可以使用 SSL 进行传输加密,使用 pgcrypto 扩展进行数据加密,或者使用外部加密工具进行数据加密。同时,我们还需要采取有效的密钥更新管理策略,如密钥轮转、密钥备份与恢复、密钥分发与管理等,以确保密钥的安全性和有效性。在实际应用中,我们需要考虑性能问题、密钥管理的安全性、数据备份与恢复以及法律法规的遵守等方面的问题,以确保数据存储加密和密钥更新管理的顺利实施。

2401_86074221的博客 1502

postgresql 字段加解密

postgresql 字段加解密

tang_jian_dong的博客 3030

在Ubuntu上实现PostgreSQL数据库静态加密的三种方法

这是保护数据的一个极好的措施,因为长度越长,破解密码的难度就越大。标题中的“At Rest”一词指的是即使数据库未被使用或存储在磁盘上没有任何活动时也存在的加密。一旦设置好加密的_文件系统_,我们将Postgres集群复制到这个系统中以实现所需的加密。原因是你可以控制你加密的内容,它不需要像前者那么多的时间。如果文件系统加密过于复杂,用户认为不够可靠,还有另一种加密和解密数据的方法,即在写入和从磁盘检索时进行操作。现在你知道数据库文件存储在哪里,你只需要将这些文件复制或移动到你的加密_文件系统_。

qq_57526628的博客 1027

在 PostgreSQL 里如何处理数据的存储加密和查询性能的权衡?

在 PostgreSQL 中,处理数据的存储加密和查询性能的权衡是一个非常重要的问题。我们需要根据数据的敏感性选择合适的加密方法,合理选择加密算法,使用索引,定期更新加密密钥等,以在数据安全性和查询性能之间找到一个平衡点。同时,我们还需要根据实际情况进行测试和优化,不断改进我们的解决方案,以满足不断变化的业务需求。数据安全是企业和个人的生命线,我们不能因为追求查询性能而忽视数据安全,也不能因为追求数据安全而牺牲查询性能。

2401_86074221的博客 1474

PostgreSQL 数据加密怎么弄,应该用哪种方案

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,(共2150人左右 1 + 2 + 3 + 4 +5) 新人奖直接分配到5群,另欢迎 OpenGauss 的技术人员加入。数据...

sql server的专栏 1458

ArcMap对遥感图像进行语义分割标注

使用arcmap对遥感图像进行语义分割标注

qq_41708916的博客 4051

初学者指南 PostgreSQL中的加密机制如何运作?,阿里巴巴内部Jetpack宝典意外流出

本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!

m0_60721695的博客 799

告别偏移地址!用C# S7PLUS驱动读写西门子S7-1500符号地址(TIA Portal V17+环境配置)

本文详细介绍了如何在TIA Portal V17+环境中使用C# S7PLUS驱动读写西门子S7-1500 PLC的符号地址,告别传统的偏移地址方式。通过配置OpenSSL、集成S7PLUS驱动库,以及实战案例展示符号地址的读写方法,显著提升代码可读性和维护效率。文章还涵盖了环境准备、高级配置及常见问题解决方案,助力工业自动化开发者实现更高效的PLC通讯。

weixin_28720767的博客 319

中兴交换机配置SSH登录

SSH是在传统的Telnet协议基础上发展起来的一种安全的远程登录协议。发送和接收数据时, SSH会自动对数据进行加密及解密。相比于Telnet,SSH能防止“中间人”攻击、DNS欺骗、IP 欺骗等,无论是在认证方式或者数据传输的安全性上都有很大的提高。SSH用户认证方式有3种,分别为本地(Local)认证、RADIUS认证和TACACS+认证。以表规划数据为例,说明配置SSH登录的步骤。

才怪的博客 7933

初学者指南 PostgreSQL中的加密机制如何运作?(1),2024最新网络安全笔经

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!【完整版领取方式在文末!!

2301_82244608的博客 637

Moveit +Gazebo:搭建单臂机械臂仿真平台

Moveit +Gazebo:搭建单臂机械臂仿真平台

magic_invaid的博客 5294

初学者指南 PostgreSQL中的加密机制如何运作?(3),0基础网络安全开发

可能是最简单和最常用的加密形式。在向服务器发送之前,PostgreSQL客户端将对用户密码进行Hashing处理,然后将其存储在数据库中。这意味着明文密码永远不会存储在服务器上,这使得潜在的攻击者很难获取到它。pgcrypto 模块提供加密函数,用于加密存储在数据库特定列中的数据。要解密数据,客户端必须通过密钥发送,并且数据在服务器端是未加密的。这意味着密钥和数据都会在服务器端短暂地暴露给具有提升权限的任何人(如数据库管理员)。**>******

2301_82244608的博客 983

Xilinx Vitis arm-xilinx-eabi-gcc.exe: error: *.c: Invalid argument

This problem may be a bugof version 2021.1 only. Unfortunately, I'm just currently using this version. After Build Project: Find where this Makefile is through "make: Leaving directory" information. For me, it is located atZynq_CPU_wrapper_hw_platfo...

Ayka的博客 6663

鼎捷T100二次开发实战:如何给开窗功能加上权限锁(附完整代码)

本文详细解析了鼎捷T100二次开发中开窗功能权限锁的实现方法,提供了两种技术方案:开窗程序重构法和动态WHERE条件注入法,并附上完整代码示例。通过真实案例,帮助开发者解决数据权限细粒度控制的难题,提升ERP系统的安全性和实用性。

weixin_28454475的博客 445

初学者指南 PostgreSQL中的加密机制如何运作?(2),2024年最新该如何高效实用Kotlin

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!【完整版领取方式在文末!!

2301_82244608的博客 652

BioEmu 扩散模型加速传统分子动力学(MD)模拟

BioEmu 是一种创新的生成式深度学习系统,通过高效采样和准确预测蛋白质的动态机制,为蛋白质科学和药物设计提供了新的工具。它在多构象采样、MD 模拟拟合和蛋白质稳定性预测方面表现出色,同时显著降低了计算成本。BioEmu 的开发为未来蛋白质动态研究和应用奠定了坚实基础。

weixin_42357472的博客 320

初学者指南 PostgreSQL中的加密机制如何运作?,网络安全架构师必备框架技能核心笔记

正如我们所看到的,encrypt 和 decrypt 函数都采用相同的参数并返回相同的类型。唯一的区别是 ‘data’ 是 encrypt() 中的明文字节数组,而在 decrypt() 中,‘data’ 是加密数据的字节数组。最后,也可能是最安全的选择是客户端在将数据发送到服务器之前自行加密数据。这些函数只是在输入的数据上运行密码,并不提供任何形式的密钥或初始化向量 (IV) 的管理。此函数根据“类型”中指定的加密方法,将存储在变量“data”中的数据转换为字节数组表示的二进制Hashing。

2301_82244608的博客 766

Allegro172版本多人协同在线设计操作指导

首先用户需要在同一个局域网下,并且Allegro172的版本必须一致,比如都是S082的版本。另外一个用户同样打开相同版本的172,选择Symphony Team design。Allegro升级到172版本,可以支持多人协同设计,并且实时同步,具体操作如下。协同模式下,不能直接保存文件,需要另存版本,注意时常保存文件,以免丢失数据。第一个用户打开PCB,选择Symphony Team design。等待一会出现如下窗口,表示已经共享成功了,并且记下IP地址。出现一个窗口,输出开共享用户的IP地址。

weixin_54787054的博客 4957

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

解密 PostgreSQL 加密:初学者指南#postgresql认证

在这篇博客中,我们将介绍在 PostgreSQL 数据库中加密和解密数据的不同方法。具有一些 Linux 和 PostgreSQL 经验是必要的,而加密经验则不是,但最好有。这篇博客是使用在 Ubuntu 23.04 上运行的 PostgreSQL 16 编写的。首先,我将介绍加密的一些动机及其对数据安全的重要性,然后介绍 PostgreSQL 提供的用于实现加密的部分功能。

PGCCC的博客 1530

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

postgresql学习之通信加密开发

4、SSL协议通道建立完毕则开始postgresql协议的认证和数据传输,也就是通过pgtls_read完成对postgresql协议明文数据的加解密,然后由pqsecure_raw_write将加密后的postgresql协议数据发送出去,接收则反过来。服务端的流程与此一致,但有一个细节需要注意,在ProcessStartupPacket函数里服务端首次接收客户端请求,将S或G或N发送给客户端的时候直接使用send函数,跳过了上述两层封装,做加解密的时候必须留意这个地方,否则会造成通信失败。

weixin_38700215的博客 1365

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

PostgreSQL 加密扩展 pgsodium 安装与配置指南

pgsodium 是一个为 PostgreSQL 数据库设计的加密库扩展,它使用 libsodium 库提供高级加密算法。通过 pgsodium,可以在 PostgreSQL 中实现透明列加密、密钥管理、公钥加密等多种安全特性。该项目的编程语言主要使用 C,以及 PostgreSQL 的 PL/pgSQL。 ## 2. 项目使用的关键技术和框架 - **libsodium**: 是一个现代、易

gitblog_00996的博客 895

Cybertec PostgreSQL透明加密解析

目前PostgreSQL官方并未推出透明加密功能,但是cybertec开源了一个分支,支持透明加密。感兴趣的同学可以参考:https://www.cybertec-postgresql.com/en/products/postgresql-transparent-data-encryption/它支持对数据和WAL进行透明加密。本文主要介绍WAL的透明加密功能及原理。WAL透明加密架构WAL加密主...

帅的数说 774

PostgreSQL 数据加密之 pgcrypto

PostgreSQL 扩展模块 pgcrypto 提供了单向加密算法 MD5、SHA、HMAC ,PGP 双向加密算法 Blowfish、AES、DES 等,可以用于实现数据的加密和解密。本文介绍了这个模块的安装、函数的使用以及实际案例,包括用户密码加密、信用卡号的加密与解密。

Tony.Dong的专栏 1万+

PostgreSQL 如何有效地处理数据的加密和解密?

除了使用pgcrypto扩展提供的函数,还可以根据业务需求自定义函数来实现更复杂的加密和解密逻辑。END;END;解释:在上述自定义函数中,函数将输入文本的每个字符的 ASCII 码值增加 1 进行加密,函数将加密后的字符的 ASCII 码值减少 1 进行解密。

发现生活,分享智慧,一起成长! 2154
上一篇: 2024 Meetup地区组织者招募ing!| 共赴IvorySQL城市行
下一篇: 交个朋友 | 白鲸开源科技与瀚高股份IvorySQL完成产品兼容性互相认证!
IvorySQL
博客等级 码龄5年 745粉丝 565原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值