Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PoC of video frames encryption using AES-CTR #1096

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

Sakoram
Copy link
Collaborator

@Sakoram Sakoram commented Feb 24, 2025

This PoC demonstrates the use of AES-CTR encryption of video frames transmitted between the Tx and Rx sessions. It shows that video frames can be treated as binary blobs that could be encrypted. The PoC uses https://github.com/intel/intel-ipsec-mb for the AES-CTR encryption.

Sample file can be generated with:

ffmpeg -an -y -f lavfi -i \
testsrc=d=5:s=1920x1080:r=25,format=yuv422p10be -f rawvideo \
/tmp/yuv422p10be.yuv

To run PoC:

./tests/tools/RxTxApp/build/RxTxApp --config_file \
config/tx-rx-encryption.json  --test_time=10

RxTxApp sends the input file (/tmp/yuv422p10be.yuv is used by tx-rx-encryption.json) in a loop,
the output file (/tmp/out.yuv) can have data from the input file written to in multiple times.

known issues:

  • There is no key exchange mechanism implemented in this PoC, the key
    is hardcoded in the code.
  • Transport format has to be the same as the input format. Mismatch
    causes corruption of the data
  • It works only for uncompressed video formats. (not for SMPTE 2110-22)
  • Everything is done in an application instead of in the library

This PoC demonstrates the use of AES-CTR encryption of video frames
transmitted between the Tx and Rx sessions. It shows that video frames
can be treated as binary blobs that could be encrypted. The PoC uses
https://github.com/intel/intel-ipsec-mb for the AES-CTR encryption.

Sample file can be generated with:
```
ffmpeg -an -y -f lavfi -i \
testsrc=d=5:s=1920x1080:r=25,format=yuv422p10be -f rawvideo \
/tmp/yuv422p10le.yuv
```

To run PoC:
```
./tests/tools/RxTxApp/build/RxTxApp --config_file \
config/tx-rx-encryption.json  --test_time=10
```

RxTxApp sends the input file in a loop, the output file can have data
from the input file written to in multiple times.

known issues:
- There is no key exchange mechanism implemented in this PoC, the key
  is hardcoded in the code.
- Transport format has to be the same as the input format. Mismatch
  causes corruption of the data
- It works only for uncompressed video formats. (not for SMPTE 2110-22)
- Everything is done in an application instead of in the library
@Sakoram Sakoram force-pushed the AES-CTR_encryption_PoC branch from 4923e8b to 51c53e9 Compare February 25, 2025 08:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant