金仓数据库KingbaseES SCRAM-SHA-256加密介绍
关键字:
KingbaseES、SCRAM-SHA-256、安全功能 、人大金仓
什么是SCRAM-SHA-256加密?
SCRAM(Salted Challenge Response Authentication Mechanism)是一种用于身份验证的安全协议,用于在通信过程中验证用户身份而不暴露敏感信息,最初是为了应对密码泄露和中间人攻击而设计的,广泛用于数据库、通讯协议(如XMPP、SMTP)等领域。
SHA-256是一种加密哈希函数,他是SHA-2(Secure Hash Algorithm 2)系列中的一部分。SHA-2系列是由美国安全局于2001年发布的一组加密哈希函数。用于数据完整性校验、数字签名、密码学应用等领域。
SCRAM-SHA-256是一种质询-响应方案,可防止在不受信任的连接上嗅探密码,并支持以被认为安全的加密哈希形式将密码存储在服务器上。
SCRAM特性
- Salt
在认证过程中使用随机生成的salt,将用户的密码进行哈希运算。这增加了哈希密码的随机性,提高了安全性。
- Challenge response
SCRAM基于挑战响应原理。服务器向客户端发送一个随机挑战,客户端使用天战和用户密码进行计算,生成响应值,服务器验证客户端响应是否正确。
- 密码保密性
在通信过程中,密码本身不会被传输或存储在服务器上,只有经过哈希和加密处理的数据会在通信中传输。
- 安全哈希算法
SCRAM可以使用不同的哈希算法,如SHA-256,以增强安全性。
- 防治中间人攻击
由于挑战和响应是根据服务器生成的随机值进行计算,中间人无法在挑战和响应之间注入恶意代码
SHA-256特性
- 哈希函数
SHA-256将输入数据转换成固定长度的输出(哈希值),通常是256位。无论输入的数据有多长,输出的哈希值始终是固定的长度。
- 不可逆性
SHA-256是不可逆的,意味着从哈希值无法还原出原始输入数据。这使得它在存储密码等敏感信息时非常有用,因为即使哈希值泄露,攻击者也难以还原出原始密码。
- 唯一性
即使输入的数据仅发生微小的变化,SHA-256生成的哈希值也会发生巨大的变化。这确保了不同的输入数据生成不同的哈希值
- 抗碰撞性
SHA-256被设计为具有高度的抗碰撞性,即难以找到两个不同的输入数据生成相同的哈希值。
- 密码学应用
SHA-256被广泛应用于数字签名、消息认证码、密码存储等领域,用于确保数据的完整性和安全性。
SCRAM-SHA-256认证步骤
- 客户端发送请求
客户端发送一个包含用户名的认证请求到服务器。
- 服务器响应
服务器生成一个随机的16字节的slat和一个随机的24字节的服务器证书,然后将他们发送回客户端。
- 客户端准备证书
客户端用用户提供的密码进行准备工作。首先,将密码转换成UTF-8编码的字节序列。然后使用HMAC-SHA-256算法,对数据进行slat和迭代次数进行哈希运算,生成slatedpassword的值。
- 客户端生成客户端证书
将slatedpassword进行哈希和运算操作,生成clientkey,然后使用HMAC-SHA-256对证书、请求、slat、迭代次数、clientkey进行哈希运算,生成客户端证书(clientproof)
- 客户端发送证书
客户端将生成的clientproof和用户名发送回服务器
- 服务器验证证书
服务器使用相同的方式计算服务器证书,使用从存储的密码哈希中还原出来的密码和slat进行一系列的哈希和操作,生成服务器证书(serverkey),然后将认证请求、clientproof、slat迭代次数进行哈希运算,生成服务器的证书(ServerProof)。
- 服务器验证结果
比较客户端发送的slientproof与自己生成的serverproof,如果二者匹配,则客户端通过认证。
- 最终确认
如果服务器验证成功,服务器向客户端发送确认消息
- 完成
客户端收到确认消息后,认证过程完成,开始通信