gpt4 book ai didi

oracle - 建立连接时,Oracle JDBC客户端会加密密码吗?

转载 作者:行者123 更新时间:2023-12-03 00:33:46 48 4
gpt4 key购买 nike

使用Oracle JDBC客户端库建立Oracle连接时,默认情况下密码或安全握手是否已加密? (想知道在使用Oracle JDBC客户端库建立连接时是否存在通过密码嗅探密码的风险)

最佳答案

通过网络传输时,密码始终是加密的。
这并不是说它不受攻击。如果攻击者可以获取用户密码的哈希值,并且可以监视合法客户端与数据库之间的网络流量,则可以获取纯文本密码。
出于好奇,以下是Oracle数据库软件各个版本之间的身份验证过程的摘要。传输加密密码的步骤以粗体显示。 JDBC驱动程序使用哪个版本的身份验证协议并不完全直观,因为它并不总是与其公布的版本匹配。这是因为客户端可以协商希望使用的协议。例如,当连接到11g数据库时,11g JDBC驱动程序可能不必使用11g身份验证协议(它可能会退回到10g身份验证协议)。我忘记了哪些驱动程序使用哪些协议。
Oracle Database 8中的身份验证协议

客户端请求特定用户的服务器会话密钥。
服务器生成服务器会话密钥。
服务器使用请求的用户密码哈希作为秘密密钥来加密服务器会话密钥。
服务器将加密的服务器会话密钥发送到客户端。
客户端使用用户的密码哈希作为秘密密钥来解密加密的服务器会话密钥。
客户端使用服务器会话密钥作为秘密密钥来加密用户密码。 (基于DES的专有算法)
客户端将加密的密码传输到服务器。
服务器使用其服务器会话密钥作为秘密密钥来解密加密的密码。
服务器计算解密密码的哈希值。
如果计算出的密码哈希(来自步骤9)与存储在服务器上的副本匹配,则用户已提供了正确的密码。

Oracle Database 9i中的身份验证协议

客户端请求特定用户的服务器会话密钥。
服务器生成服务器会话密钥。
服务器使用请求的用户的密码哈希作为秘密密钥来加密服务器会话密钥。
服务器将加密的服务器会话密钥发送到客户端。
客户端使用用户的密码哈希作为秘密密钥来解密加密的服务器会话密钥。
客户端使用服务器会话密钥作为秘密密钥来加密用户密码。 (基于DES的专有算法)
客户端将加密的密码传输到服务器。
服务器使用其服务器会话密钥作为秘密密钥来解密加密的密码。
服务器计算解密密码的哈希值。
如果计算出的密码哈希(来自步骤9)与存储在服务器上的副本匹配,则用户已提供了正确的密码。

Oracle Database 10g中的身份验证协议

客户端从服务器请求一个会话密钥,指定它希望以哪个用户身份连接。
服务器生成服务器会话密钥。
服务器使用请求的用户密码哈希作为秘密密钥来加密服务器会话密钥。
服务器将加密的服务器会话密钥发送到客户端。
客户端使用请求的用户密码哈希作为秘密密钥来解密加密的服务器会话密钥。
客户端生成客户端会话密钥。
客户端将客户端会话密钥与服务器会话密钥结合在一起。
客户端为用户的密码添加盐分。
客户端使用组合的会话密钥(来自步骤7)作为其秘密密钥来加密用户的固定密码。 (AES-128)
客户端使用用户的密码哈希作为秘密密钥来加密客户端会话密钥。
客户端将加密的客户端会话密钥和加密的加盐用户密码传输到服务器。
服务器使用请求的用户的密码哈希对加密的客户端会话密钥进行解密。
服务器将客户端会话密钥与其服务器会话密钥结合在一起。
服务器使用组合的会话密钥(来自步骤13)作为秘密密钥来解密加密的加盐密码。
服务器取消盐化密码的盐。
服务器对解密的密码进行哈希处理。
服务器将计算出的密码哈希(来自步骤16)与存储的密码哈希进行比较。如果它们相等,则用户提供了正确的密码。

Oracle Database 11g中的身份验证协议

客户端从服务器请求一个会话密钥,指定它希望以哪个用户身份连接。
服务器生成服务器会话密钥。
服务器生成验证程序数据。
服务器使用请求的用户的密码哈希作为秘密密钥来加密服务器会话密钥。
服务器将加密的服务器会话密钥(“ AUTH_SESSKEY”)和验证者数据(“ AUTH_VFR_DATA”)发送到客户端。
客户端使用验证者数据作为盐值来哈希用户密码。
客户端使用用户的密码哈希作为秘密密钥来解密加密的服务器会话密钥。
客户端生成客户端会话密钥。
客户端将客户端会话密钥与服务器会话密钥结合在一起。
客户端为用户的密码添加盐分。
客户端使用组合的会话密钥(来自步骤9)作为其秘密密钥来加密用户的固定密码。 (AES-192)
客户端使用用户的密码哈希作为秘密密钥来加密客户端会话密钥。
客户端将加密的客户端会话密钥和加密的加盐用户密码传输到服务器。
服务器使用请求的用户的密码哈希对加密的客户端会话密钥进行解密。
服务器将客户端会话密钥与其服务器会话密钥结合在一起。
服务器使用组合的会话密钥(来自步骤15)作为秘密密钥来解密加密的加盐密码。
服务器取消盐化密码的盐。
服务器对解密的密码进行哈希处理。
服务器将计算的密码哈希(来自步骤18)与存储的密码哈希进行比较。如果它们相等,则用户提供了正确的密码。

关于oracle - 建立连接时,Oracle JDBC客户端会加密密码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12284970/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com