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

Android应用程序将TLS协议降级为SSL 3.0

张翰音
2023-03-14

我对我帮助开发的一些Android移动应用程序进行了漏洞测试,发现了一些奇怪的行为。这些应用程序使用了默认的Android5.0.2密码套件列表,其中包括TLS_FALLBACK_SCSV(0x5600)套件,该套件旨在防止贵宾犬。请参见下面的密码套件列表:

密码套件:TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA(0xc009)密码套件:TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA(0xc00a)密码套件:TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA(0xc013)密码套件:TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA(0xc014)密码套件:TLS_DHE_RSA_WITH_AES_128_CBC_SHA(0x0033)密码套件:TLS_DHE_RSA_WITH_AES_256_CBC_SHA(0x0039)密码套件:TLS_DHE_DSS_WITH_AES_128_CBC_SHA(0x0032)密码套件:TLS_DHE_DSS_WITH_AES_256_CBC_SHA(0x0038)密码套件:TLS_ECDHE_ECDSA_WITH_RC4_128_SHA(0xc007)套件:TLS_ECDHE_RSA_WITH_RC4_128_SHA(0xc011)密码套件:TLS_RSA_WITH_AES_128_CBC_SHA(0x002f)密码套件:TLS_RSA_WITH_AES_256_CBC_SHA(0x0035)密码套件:TLS_RSA_WITH_RC4_128_SHA(0x0005)密码套件:TLS_EMPTY_RENEGOTIATION_INFO_SCSV(0x00ff)密码套件:未知(0x5600)

当我在网络捕获中查看TLS请求序列时,它发生在SSL 3.0上,尽管密码套件列表中不支持SSL3。

这不像贵宾犬。我发现最有趣的是,协商密码套件(在服务器Hello请求中)是TLS_RSA_和_AES_128_CBC_SHA。

这是否意味着加密会话有效地使用SSL3_RSA_WITH_AES_128_CBC_SHA密码套件进行?它也容易受到Poodle用来恢复纯文本数据的SSL 3.0 CBC漏洞的html" target="_blank">攻击?

共有1个答案

何聪
2023-03-14

密码套件与协议版本不同。有两种协议版本:握手协议和记录层协议。

握手协议是客户端和服务器交换安全通信所需参数的协议。记录协议是它们之间来回发送的SSL记录的格式(客户端通常使用相同的版本)。

TLS_FALLBACK_SCSV不是为防止贵宾犬而设计的,它是为帮助缓解降级攻击而设计的。

当该套件出现在客户端提供的列表中时,它向服务器发出信号,仅使用它支持的最高TLS版本,前提是该TLS版本等于或低于客户端在其客户端你好中指定的版本。

这意味着:

  • 包括TLS_FALLBACK_SCSV支持TLS1.2的服务器的TLS1.1握手将失败。
  • TLS1.2握手,其中包括TLS_FALLBACK_SCSV到仅支持TLS1.1的服务器将成功(服务器将响应TLS1.1,这是它支持的最高值)

名称中的SCSV表示“信令密码套件值”——它只是一个信号,而不是实际的密码套件。

我相信TLS1。0是可以使用此扩展的最低TLS版本。

参考:https://datatracker.ietf.org/doc/html/draft-ietf-tls-downgrade-scsv-05

 类似资料:
  • 我需要对使用TLS协议连接的F5机器工作。为此,我构建了一个使用HTTPsURLConnection对象的类。 然后,我下载了F5证书文件,使用JDK密钥工具创建密钥库,并使用它尝试将连接设置为使用TLS协议: (我没有被你抓住……) 代码似乎在快速传递,但是当我这样做的时候: 我得到。。。 “javax.net.ssl.SSLHandshakeException:sun.security.val

  • 假设我们有一个订单管理服务和一个运输管理服务。运输服务发出由订单服务接收的s。 如果我们删除了中的字段,我希望首先对Order服务进行更改,使其停止读取旧字段。部署它。然后在传送服务中进行更改并部署它。这样,服务就不会停机。 但是,我相信Pact会希望首先部署航运服务(它是事件的提供者),以便在部署消费者之前可以验证合同。在这种情况下,首先部署提供者会破坏我的使用者。 为了提供更多的上下文,我们可

  • 我有一个客户端应用程序与外部方应用程序通信。客户端应用程序已启动并长时间运行。 最近,我从运行我的客户机应用程序的应用程序服务器收到一个请求,询问允许的SSL/TLS协议,并调用他们的应用程序。 问题 2.1-服务器摘要>Server_1>协议 2.2-服务器摘要>Server_1>配置>SSL -----更新-----

  • 我们正在编写一个应用程序,它必须使用HTTPS与几个服务器通信。它需要与AWS通信(使用AWS库),还需要与我们使用TLS1.2的一些内部服务通信。 我首先将HttpClient更改为使用TLS1.2SSLContext: 并且(通过spring)将这个SchemeRegistry注入到DefaultHttpClient对象中,但是这样做会从AWS得到错误,因此我假设(我可能错了)AWS不支持TL

  • A client and a server exchange messages consisting of message types and message data. This requires design of a suitable message exchange protocol. This chapter looks at some of the issues involved in

  • TLS名为传输层安全协议(Transport Layer Security Protocol),这个协议是一套加密的通信协议。它的前身是SSL协议(安全套接层协议,Secure Sockets Layer)。这两个协议的工作方式类似,但TLS协议针对SSL协议进行了一些改善。SSL/TLS协议利用加密的方式,在开放的互联网环境中实现了加密通信,让通信的双方可以安心的说悄悄话。。 加密 SSL协议的