Skip to content

(HSv4) Gradually deprecate SRT versions prior to v1.3.0 with HSv4. #2580

Description

@maxsharabayko

The Goal

The goal is to gradually discourage and eventually deprecate support for peers with SRT version prior to v1.3.0.
SRT library versions prior to v1.3.0 use Handshake version 4. Newer SRT versions use Handshake version 5.
HSv4 has certain disadvantages compared to HSv5.

Security Concerns of HSv4

#1977. HSv5 accepts HSv4 connection with a bad passphrase.
HSv4 does not have the information about the key to be used (Key Material message as HS extension). Instead, a separate control packet with the key is expected to arrive later on. Therefore, there is no way to determine if the peer has the correct key at the stage of handshaking to reject the connection.

Maintenance Burden.

  • Compatibility tests with SRT versions prior to 1.3.0 are required to maintain the functionality.
  • There is no proper description of the HSv4 procedure. Only UDT and SRT implementation-defined.
  • It would be nice to clean up the code related to the handshaking procedure. Rewriting/cleaning would require changing/touching the HSv4 code as well. Hence an increased maintenance burden.

Rough Roadmap

  • SRT v1.6.0: raise SRTO_MINVERSION to 1.3.0. Older peers are still supported, but the option value has to be explicitly set to allow this.
  • SRT v1.7.0: remove support for HSv4 (hence SRT versions prior to v1.3.0); SRTO_MINVERSION minimum allowed value set to 1.3.0.

Related Task

  • Deprecate and remove the SRTO_SENDER socket option.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    EpicType: EnhancementIndicates new feature requests[API]Area: Changes in SRT library API

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions