Skip to content

[FR] Authenticated Encryption (AEAD) #2336

@maxsharabayko

Description

@maxsharabayko

Authenticated-Encryption with Associated-Data (AEAD) schemes provide confidentiality by encrypting the data, and also provide authenticity assurances by creating a MAC tag over the encrypted data. The MAC tag will ensure the data is not accidentally altered or maliciously tampered during transmission and storage [OpenSSL Wiki].

1. Select Supported Algorithms (GCM, CCM, etc.) ✔️

  • Selected AES GCM crypto mode.

There are a number of AEAD modes of operation. The modes include EAX, CCM, and GCM (RFC 5647).

AEAD parts [OpenSSL Wiki]:

  • Algorithm (currently only AES is supported by OpenSSL)
  • Mode (currently only GCM and CCM are supported by OpenSSL)
  • Key: keep using PBKDF2
  • Initialisation Vector (IV): keep the current algorithm? IV = (MSB(112, Salt) << 2) XOR (PktSeqNo)

2. Encrypt Data Packets

3. SRT API Changes

4. SRT Handshake Enhancements: Negotiate Encryption

5. Maximum Payload Size

AEAD requires placing an authentication tag along with the payload. In the case of GCM mode, the tag takes 16 bytes (CCM: 14 bytes). Thus maximum payload size has to be handled accordingly.
Also, decide if and how should this work with FEC.

6. FEC

Define how FEC and a packet filter, in general, should work with authenticated packets.
Just include the whole data packet?
Should the FEC packet be authenticated? Probably not, it would also complicate things a lot.

7. Integrate into the CRYSPR

The encryption provider library of SRT has to support AEAD (GCM mode).

8. Error Handling

8. Unit Tests

9. Application-level testing

Test different SRT versions work correctly with each other:

  1. Connection establishment w/o AEAD and valid encryption with one peer of an older SRT version.
  2. Connection rejection in AEAD configuration with one peer of an older SRT version.
  3. etc.

10. Update the IETF SRT Internet Draft.

Metadata

Metadata

Assignees

No one assigned

    Labels

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

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions