当前位置: 首页 > 知识库问答 >
问题:

Oracle JDBC客户端在连接时加密密码吗?

楮庆
2023-03-14

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

共有1个答案

颜修明
2023-03-14

密码在通过网络传输时总是加密的。

这并不是说它不受攻击。如果攻击者能够获得用户密码的哈希值,并且能够监视合法客户端与数据库之间的网络通信,那么就有可能获得纯文本密码。

对于好奇的人来说,这里总结了Oracle数据库软件不同版本的身份验证过程。处理加密密码传输的步骤以粗体显示。JDBC驱动程序使用的身份验证协议版本并不完全直观,因为它并不总是与其通告的版本相匹配。这是因为客户端可以协商它希望使用的协议。例如,11G JDBC驱动程序在连接到11G数据库时可能不一定使用11G身份验证协议(可能会倒回到10G身份验证协议)。我忘记了哪些驱动程序使用了哪些协议。

    null
    null
    null
  1. 客户端从服务器请求会话密钥,指定它希望连接的用户。
  2. 服务器生成服务器会话密钥。
  3. 服务器生成验证器数据。
  4. 服务器使用请求的用户密码哈希作为密钥来加密服务器会话密钥。
  5. 服务器将加密的服务器会话密钥(“auth_sesskey”)和验证器数据(“auth_vfr_data”)传输到客户端。
  6. 客户端使用验证器数据作为SALT对用户密码进行散列。
  7. 客户端使用用户的密码哈希作为密钥来解密加密的服务器会话密钥。
  8. 客户端生成客户端会话密钥。
  9. 客户端将客户端会话密钥与服务器会话密钥组合。
  10. 客户端会设置用户的密码。
  11. 客户端使用组合的会话密钥(来自步骤9)作为其秘密密钥来加密用户的salted密码。(AES-192)
  12. 客户端使用用户的密码哈希作为密钥来加密客户端会话密钥。
  13. 客户端将加密的客户端会话密钥和加密的SALT用户密码传输到服务器。
  14. 服务器使用请求的用户密码哈希解密加密的客户端会话密钥。
  15. 服务器将客户端会话密钥与其服务器会话密钥组合。
  16. 服务器使用组合会话密钥(来自步骤15)作为密钥来解密加密的、加盐的密码。
  17. 服务器取消对已加盐密码的加盐。
  18. 服务器对解密的密码进行哈希。
  19. 服务器将计算的密码散列(来自步骤18)与存储的密码散列进行比较。如果它们相等,则表示用户提供了正确的密码。
 类似资料:
  • 拥有客户端密码的客户端可以使用RFC2617中定义的HTTP基本身份验证方案与授权服务器进行身份验证。客户端标识使用按照附录B的“application/x-www-form-urlencoded”编码算法编码,编码后的值用作用户名;客户端密码使用相同的算法编码并用作密码。授权服务器必须支持HTTP基本身份验证方案,用于验证被颁发客户端密码的客户端的身份。例如(额外的换行仅用于显示目的): Au

  • 我试图查询一些在HTTP上运行的本地gRPC服务。这是我的网核3.1控制台应用程序: 但它抛出了这个错误: 类型'Grpc.Core.RpcException'的异常发生在System.Private.CoreLib中.dll但在用户代码中未处理:'Status(StatusCode=“Internal”, Detail=“启动gRPC调用时出错。HttpRequestException:发送请求

  • 我使用DynamoDB Encryption Client(Item Encryptor)(Lib Link)加密记录。现在我想解密它。我已经阅读了文档和GitHub页面,没有示例,所以很难弄清楚我弄错了哪部分。 这是DynamoDB事件的“新图像”。关键是“ID”。DynamoDB流记录 我尝试过: 使用decrypt\u dynamodb\u项- 使用ddb\u to\u dict,然后使用d

  • mariadb-java-client抛出的访问在MySQL8.0上被拒绝,但在MySQL5.6上可以工作,所以我想知道mariadb client是否与MySQL8.0兼容 > 在mysql中,测试用户被设置为主机限制机器=% 即使在MySQL8.0的机器上测试,同样的访问被拒绝错误。 mysql 5.6和8.0上的用户名和密码相同 > 成功:“mariadb-java-client",版本:”

  • 问题内容: 我已经以加密格式将用户密码存储在数据库中。但是,现在,当用户想要登录并尝试输入其原始密码时,该代码始终会将输入的(原始)密码与数据库中存储的加密版本进行比较,从而导致登录失败。 请告诉我如何比较输入的(原始)密码和存储在数据库中的加密密码。 问题答案: 几乎可以肯定,您应该对密码进行 哈希处理 ,而不是使用可逆加密。您可能还需要 用盐 来做…在这种情况下,正确的步骤是: 查找最初对密码

  • 在FTPS中,密码在尝试通过internet连接服务器时被加密。这就是我所理解的,如果我的理解有任何遗漏,请更正。我的问题是,当我厌倦了模拟它(FTPs和FTP)时,我只是得到一条消息,说SSL已经建立(以及基于隐式和显式调用的端口更改)。 是否有任何其他方式来确认密码是真正加密的,或者我们可以看到密码时,它的普通FTP。下面是我在服务器端看到的日志 启用FTP时的服务器日志- 状态:TLS/SS