From e7af0a77622eff53e41253624a5afd6a33e44bf5 Mon Sep 17 00:00:00 2001 From: Simon Fels Date: Tue, 27 Aug 2024 22:37:50 +0200 Subject: [PATCH] feat: add crypto explanation for the stream gateway --- .../cryptography/crypto_stream_gateway.md | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 explanation/cryptography/crypto_stream_gateway.md diff --git a/explanation/cryptography/crypto_stream_gateway.md b/explanation/cryptography/crypto_stream_gateway.md new file mode 100644 index 00000000..db5f8a4b --- /dev/null +++ b/explanation/cryptography/crypto_stream_gateway.md @@ -0,0 +1,25 @@ +(exp-security-crypto-stream-gateway)= +# Anbox Stream Gateway + +Anbox Streaming Gateway is using cryptographic technology for: + +* TLS transport encryption +* Mutual TLS based authentication +* Token based authentication + +## TLS transport encryption + +All network endpoints exposed by the Anbox Stream Gateway are secured with TLS using an 4096 bit RSA key. The Anbox Stream Gateway strictly enforces TLS 1.3 or better and does not provide backward compatibility with older TLS versions. + +## Mutual TLS based authentication + +In order to exchange messages with the Anbox Stream Agent through the [NATS](https://nats.io/) message queue, the Anbox Stream Gateway uses a CA certificated signed by a 4096 bit RSA key to ensure trust with the NATS server. + +## Token based authentication + +Users can generate API tokens to authenticate with the HTTP API provided by the Anbox Stream Gateway. For the API tokens a scope-limited [Macaroon](http://theory.stanford.edu/~ataly/Papers/macaroons.pdf) is used. The token is signed with a [HMAC](https://www.okta.com/identity-101/hmac/) using SHA-256 (HS256) and a 64 byte secret key. The [`macaroon.New`](https://pkg.go.dev/gopkg.in/macaroon.v2@v2.1.0#New) method is used internally to generate the JWT token. + +## Packages used + +* [Go standard library](https://pkg.go.dev/std) +* [`gopkg.in/macaroon.v2`](gopkg.in/macaroon.v2)