关键字:
KingbaseES、scram-sm3
1.什么是scram-sm3
Kingbase支持scram-sm3算法认证。scram是指包含服务器和客户端双向确认的用户认证体系,配合信道加密可以比较好地抵御中间人、拖库、伪造等攻击。Kingbase原本支持scram-sha-256认证,sha256是国际标准,为符合国密标准,kingbase使用sm3 hmac算法完成scram认证流程。
2.scram-sm3的认证流程
2.1客户端发起认证流程
首先由客户端发起认证流程,并将用户名、IP等基本信息发送给服务器。服务器接收到客户端发起的连接请求后,会根据保存的数据判断应该使用scram-sm3认证,并将这一消息发送给客户端,告知即将开始scram-sm3认证流程。
2.2客户端开始scram-sm3认证流程
1)客户端生成一个客户端的nonce并发送给服务器。、
2)服务器接收到客户端nonce,同时会生成一个服务器nonce与客户端nonce拼接到一起,同时生成加密用的salt。将salt、iteration、nonce等信息发送给客户端。
3)客户端接收到服务器的信息,会通过nonce来验证该消息来自目标服务器,然后开始根据iteration,使用sm3 hmac算法迭代计算密码加密后的结果proof,并将proof连同nonce等信息发送给服务器。
4)服务器也会通过nonce验证消息来源,然后使用同样的方式验算客户端发来的加密结果,若客户端与服务器的计算结果相同,则会认为客户端认证通过,并向客户端发送最后一条认证消息。
5)客户端对服务器进行最后的认证完成后,完成scram-sm3认证流程。
3.配置scram-sm3认证方式
使用initdb初始化数据库时,可以使用-A指定认证方式。
查看文件夹中的sys_hba.conf可以看出认证方式已被设置为scram-sm3
启动并登陆数据库,可以使用show password_encryption 查看当前数据库使用的加密方式,查看sys_authid表中用户的密码也可以看到对应的加密方式。