- 博客(29)
- 收藏
- 关注
原创 全密态数据库学习
“全密态数据库”指的是一种在整个数据生命周期内都保持加密状态的数据库系统,也就是说数据在存储、传输和计算过程中始终是加密的。这种设计理念可以大大降低数据泄露的风险,即使在进行数据运算时,也不需要将数据解密,从而极大地提高安全性。简单的说就是数据在客户端就加密,发送到服务端存储,数据加减乘除、创建索引、排序、比较等操作全部在服务端以密文为基础进行处理,仅仅将密文形式的查询结果返回到客户端,客户端再将结果解密为明文。
2025-04-03 13:26:50
554
原创 PostgreSQL学习之一次一密口令认证(TOTP)
根据TOTP定义以,我们可以实现基于TOTP的认证服务端,把它用于postgresql或者你的项目中即可实现基于时间的一次一密二次认证。将上述示例程序中的基础密钥"JBSWY3DPEHPK3PXP"输入到谷歌APP或微信小程序中,即可以查看生成的基于时间的一次性密码,可以验证该示例程序生成的一次性密码是否正确;如果需要,把示例程序稍作改动即可做成totp客户端。
2025-03-28 13:17:00
444
原创 git命令使用小记(打补丁)
如果需要将多次提交合并为一次提交同步到主分支,可以将上面的补丁包打到一个新分支上,然后在主分支执行命令 git merge --squash new-branch-name,然后git commit -m "xxx"就可以了。git add . # 添加所有修改,这里包括自动合并的和手动处理的文件。合并无冲突部分,冲突部分存入.rej文件中,冲突部分需要手动处理。没有异常就可以通过git log查看到已合并的补丁。需求:需要从开发分支提取本人提交代码,然后合并到主分支。处理完冲突后需要删除.rej文件。
2025-03-28 11:19:55
282
原创 记一次为centos7更换yum源成功
最终解决办法:将/etc/yum.repos.d/目录下的所有文件都删除,只保留新源文件CentOS-Base.repo(最好先备份)!
2025-01-22 17:26:11
273
原创 SM2签名长度分析
三种不同长度区别在于R或者S有一个前导00,为什么?因为R和S值都是一个32字节整数,如果这一整数最高位为1(如果最高位为1即首字节大于127),则有可能被认为是负数,为了保证不被解析为负数,在从32字节的R和S变换为ASN.1格式的DER编码的时候人为的增加了一个前导00做最高位,这也就导致了前面的表示长度部分由20变21,以及由44变45或46
2024-11-26 14:41:21
715
原创 PostgreSQL学习之多种存储与认证算法和谐相处(md5 sm3 scram-sha-256 scram-sm3)
PostgreSQL学习之多种存储与认证算法和谐相处(md5 sm3 scram-sha-256 scram-sm3)
2024-11-19 14:36:42
437
原创 vscode使用之vscode-server离线安装
最近因为想要使用AI工具开始使用vscode,但是在内网使用vscode通过连接虚拟机的centos远程目录却出现了问题,始终连不上,查看原因是centos没有安装vscode-server,网上找各个教程离线安装vscode-code除了浪费时间没有任何收获,最终通过比较暴力的方式连接成功了,在此做个备忘,也为以后处理其他类似问题提供一个思路。
2024-11-08 16:26:11
508
原创 PostgreSQL学习之认证算法开发 md5-sm3 sm3-md5 scram-sha256-sm3 scram-sm3-sha256
SCRAM-SHA-256 SCRAM-SM3 SM3 MD5但是我们还有另外的选择,既能认证通过又没有完全抛弃hba设置的认证算法:增加MD5-SM3、SM3-MD5、SCRAM-SHA256-SM3、SCRAM-SM3-SHA256这四种认证算法分别针对第13-16种情况
2024-11-07 17:21:35
1173
原创 PostgreSQL学习之.pgpass密码加密
.pgpass文件用于保存用户密码,方便客户端连接登录数据库。 psql(libpq.so)为什么不在命令行通过参数指定密码呢?因为这样传递密码可以在ps命令中看到明文密码,密码会被暴漏给其他用户。
2024-11-07 14:13:23
529
原创 PostgreSQL学习之多因素认证
使用手机软件Google Authenticator(或其他TOTP软件)生成一次性临时密码作为登录服务端的密码,该密码每30秒更换一次,即便密码泄露也能保证系统安全。
2024-09-12 10:33:13
515
原创 OpenSSL命令行进行sm4加解密的问题
./openssl sm4-cbc -e -K 31323334353637383930313233343536 -iv 31323334353637383930313233343536 -in test.in -out test.out
2024-08-07 16:26:28
858
原创 PostgreSQL学习之pg_recvlogical与pgoutput的使用
postgresql数据库的原生解码插件pg_recvlogical可以将wal日志解码保存到指定文件,准确的说是将复制槽通过指定的逻辑解码插件(test_decoding、pgoutput等)解码后的数据保存为文件。
2024-08-06 17:28:39
943
原创 PostgreSQL学习之双因素认证设想及验证
第一步常规认证结束(如md5)之后,增加一步公钥认证请求,其流程与MD5认证一致,首先服务端发送认证请求和随机数,客户端对随机数使用私钥签名后发送给服务端,服务端收到签名后使用预存的该用户的公钥对签名值进行验证,验证成功则认证通过。
2024-07-27 20:49:20
451
原创 PostgreSQL学习之SCRAM-SM3加密认证
要实现算法SCRAM-SM3,关键是修改scram_SaltedPassword、scram_ClientKey、scram_H、scram_ServerKey这几个函数,将默认的SHA256算法修改为根据参数选择SHA256-HMAC或者SM3-HMAC。
2024-07-15 19:26:39
484
原创 PostgreSQL学习之SCRAM-SHA-256加密认证
PostgreSQL数据库保存用户密码的方式为加密保存(准确的说是保存用户的密码与随机数的hash值),加密算法为MD5和SCRAM-SHA-256两种,保存位置为系统表pg_authid。
2024-07-05 16:00:08
2677
原创 PostgreSQL学习之MD5加密认证
PostgreSQL数据库保存用户密码的方式为加密保存(准确的说是保存用户的密码与随机数的hash值),加密算法为MD5和SCRAM-SHA-256两种,保存位置为系统表pg_authid。
2024-07-05 13:26:28
663
原创 PostgreSQL学习之限制用户单次登录时长
PostgreSQL14已经实现了空闲会话超时断开功能,如果要控制用户登录时长(即不管会话是否空闲,只要超时就断开),时长可设置,并且可以精确到用户。
2024-07-05 09:55:22
568
原创 PostgreSQL学习之基于时间的认证
如果要限制用户在某一天的某时间段可以登录,某时间段不可以登录,在此做了一种简单的实现,通过pg_hba.conf文件配置时间段
2024-07-03 15:19:14
498
原创 PostgreSQL学习之使用LDAP认证
PostgreSQL使用LDAP认证,简单说就是将用户名和密码存储在LDAP服务器上,postgresql数据库必须有相同的用户(用户名称相同,密码可以不同),当数据库客户端登录数据库时,数据库服务器不使用本地的密码校验机制而是去请求LDAP服务器验证用户名密码是否正确,正确则登录成功,失败则登录失败。
2024-06-28 15:33:01
1004
原创 PostgreSQL学习之passwordcheck使用pam_cracklib
passwordcheck通过钩子check_password_hook在创建用户或修改密码时对密码复杂度进行检查,passwordcheck不仅检查密码的长度、字符组成、是否包含用户名等,还可以使用第三方库pam_cracklib对密码进行弱口令检查。
2024-06-27 11:22:31
714
原创 PostgreSQL学习之PAM认证
PAM不仅可以用于SSH,还可以用于VSFTP、本地系统其他服务或者开发自己的程序等等。PAM可用模块不仅包括pam_access和pam_cracklib,还有常用的pam_listfileso模块pam_limitsso模块pam_rootokso模块pam_userdbso模块pam_securettyso模块pam_cracklibso模块pam_pwhistroyso模块等等PAM的目录:/lib64/security/pam* 全是pam模块。
2024-06-27 09:46:37
1120
原创 PostgreSQL学习之SSL证书生成及配置
1、上面的脚本需要一个参数,指定postgresql数据库data目录,脚本进入data目录生成证书并修改postgresql.conf中ssl相关参数配置;
2024-06-26 10:48:08
1437
原创 智能密码钥匙(SKF)和密码机(SDF)标准接口实现会话密钥协商
GM/T 0016-2012 智能密码钥匙密码应用接口规范》定义了一系列使用智能密码钥匙的接口函数和结构体,其接口函数以SKF_开头。SDF和SKF函数通过标准函数实现SM2密钥协商(即SM2密钥协商协议:通过交换中间参数各自生成会话密钥,会话密钥不出卡不出加密机,一次一密)实现客户端与服务端的加密通信。注:一个智能密码钥匙(USBKEY)可以创建多个应用,每个应用可以创建多个容器,每个容器里有两对公私钥对,分别是签名密钥对和加密密钥对。3)发送发起方公钥和临时公钥(上面的公钥和临时公钥);
2024-06-25 08:41:28
1947
6
原创 PostgreSQL数据库之密文密码检查(passwordcheck)
passwordcheck插件是一个检查密码发杂度的postgresql数据库插件,用于检测新创建或新修改的用户密码复杂度。如果密码是以明文字符串的形式传送到数据库服务端的,那么密码复杂度很容易检查,无非就是对字符串的检查。但是,postgresql数据库允许以密文形式修改用户密码,也就是用户可以先把新密码加密(加密算法可选上面提到的算法),然后把加密后的密文传送到服务端,服务端接收到的是加密了的密码,又怎么进行密码复杂度检查呢?
2024-06-19 14:53:38
1001
原创 postgresql学习之通信加密开发
4、SSL协议通道建立完毕则开始postgresql协议的认证和数据传输,也就是通过pgtls_read完成对postgresql协议明文数据的加解密,然后由pqsecure_raw_write将加密后的postgresql协议数据发送出去,接收则反过来。服务端的流程与此一致,但有一个细节需要注意,在ProcessStartupPacket函数里服务端首次接收客户端请求,将S或G或N发送给客户端的时候直接使用send函数,跳过了上述两层封装,做加解密的时候必须留意这个地方,否则会造成通信失败。
2024-06-07 18:38:00
1071
原创 gitlab配置pipeline学习备忘录
或者在文件/etc/gitlab-runner/config.toml的[[runners]]中新增条目使之主动接收job并执行。我这里生成的是自签名证书,更标准的做法是先生成根证书,再用根证书签发gitlab证书。按照上述配置配置完成即可正常进行自动化测试,如有疑问或错误请联系我。我用的是centos7.9系统,所以下载的是rpm包。
2024-05-31 19:28:14
1390
1
PostgreSQL之SCRAM-SM3算法
2024-07-09
基于规则“SunThu-00:02:00-00:03:00,Mon-16:59:00-20:00:00”时间范围检查(C语言)
2024-07-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人