Giter Club home page Giter Club logo

Comments (4)

klzgrad avatar klzgrad commented on May 27, 2024

I think in theory the TLS state machine in specific implementations will also have identifying information from its state transition.

I guess The Parrot is Dead still holds. I just found the above is not just theory.

Nginx doesn't implement TLS False Start. Chromium does. I tried to add SSL_CTX_set_mode(ssl->ctx, SSL_MODE_ENABLE_FALSE_START) in Nginx to enable it. Nginx will use False Start but lose the ability of session resumption (because it was caching the wrong session during False Start because it was not implemented with False Start in mind). Chromium is able to do both False Start and session resumption.

This is a dynamic feature in the TLS state machine. This should be fairly hard to detect and not having much discriminating power if detected and I could patch this issue in Nginx, but it shows that imitation is always imperfect and subject to detection.

This is a continuum. If we use the identical binary of Chrome it is a perfect "imitation" and impossible to distinguish but the installation size and performance suffer. On the other side the binary size and performance are great but imperfect imitation is easier to detect.

(There are other unique dynamic behaviors in Chromium: It sends separate TLS requests for OCSP; It starts non-content TLS sessions just to get the session tickets; etc. In the same thought even Trojan using Chrome or Tor using Firefox will have differentiating behaviors from a user using a browser, though that should be hard and expensive to detect.)

I believe continuous updated mitigation should be an acceptable compromise.

Edit:

Tor's meek attempted to use Chrome extensions for proxying TLS connections https://trac.torproject.org/projects/tor/ticket/11393. Chrome extension API creates TLS sockets in extensions/browser/api/socket/tls_socket.cc but Chrome browser itself creates TLS sockets from net/socket/ssl_client_socket_pool.cc. The latter has detailed pooling logic (Default to allow up to 6 connections per host (but kDefaultMaxSocketsPerProxyServer = 32 so just the number of connections can distinguish a user browser vs. a proxy!), TLS 1.3 version interference probe (dynamically downgrade to TLS 1.2 if TLS 1.3 fails)) and the former does not.

from trojan.

laoyur avatar laoyur commented on May 27, 2024

Hi, any progress on OCSP stapling ?

from trojan.

GreaterFire avatar GreaterFire commented on May 27, 2024

@laoyur This has been excluded from our plan a few years ago.

from trojan.

blip avatar blip commented on May 27, 2024

If trojan is behind nginx as described in #131, should stapling be disabled on nginx?

A more general question: if trojan is behind nginx, should it match as many TLS options as possible with those in nginx? Is failing to achieve that considered leaky?

from trojan.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.