This article may rely excessively on sources too closely associated with the subject, potentially preventing the article from being verifiable and neutral. Please help improve it by replacing them with more appropriate citations to reliable, independent, third-party sources. (April 2020) (Learn how and when to remove this template message)

Application Layer Transport Security (ALTS) is a Google-developed authentication and transprt encryption system used for securing Remote Procedure Call (RPC) within Google machines.[1] Google started its development in 2007, as a tailored modification of TLS.[2]

Background

The ALTS whitepaper[2] was published in December 2017. According to it, development started in 2007. At that time the dominant Application layer protocols were SSL and TLS 1.1 (TLS 1.2 was only published as an RFC in 2008[3]), those supported many legacy algorithms and had poor security standards. As Google was in full control over the machines that needed secure transport of RPCs, deployment of systems was relatively easy, and so Google developers could afford designing their own system from scratch.

Another requirement that deemed a new system necessary is different trust models: in TLS, the server side is committed to its own domain name (and corresponding naming scheme), while Google needed the same identity (i.e. RPC) to be used with multiple naming schemes, in order to simplify microservice replication, load balancing and rescheduling between hosts.

Details

Handshake protocol

The ALTS handshake protocol is based on authenticated Diffie-Hellman key exchange scheme, enjoying both perfect forward secrecy (access to current keys does not compromise future security) and session resumption (noticeable speedups in the protocol after the first session between the parties).

Unlike TLS, in ALTS both parties — server and client — have a certificate proving their respective identities. The certificate chains to a trusted signing service verification key, with the leaf being an Elliptic curve Diffie-Hellman key, that is eventually used for key exchange. The elliptic curve used in the key exchange is Curve25519.[4]

The handshake protocol consists of four messages, sent in plaintext:

Once both parties computed the session key (record protocol in the whitepaper), they can start encrypting traffic with the symmetric encryption algorithm 128-bit AES, using mostly GCM as its mode of operation. On older machines, a Google developed VCM[5] was used.[6]

The handshake protocol was verified using the ProVerif formal verification tool.[7]

Session resumption

In order to avoid repeating computationally expensive operations, ALTS supports session resumption. The resumption tickets are created by either the server or the client, and may be used in the handshake protocol, if both parties hold the same resumption ticket, indexed by a resumption identifier. The resumption secret is used to derive the next session key, authenticator and encapsulated (independent) resumption ticket/identifier.

Perfect forward secrecy

Perfect forward secrecy (PFS) is not enabled by default in ALTS; however, it is supported. Instead of using an inherent PFS algorithm, ALTS achieves PFS by frequently rotating the certificates, which have a short lifespan (6, 20, or 48 hours; see [6]). Moreover, if PFS is enabled, it is also enabled for session resumption, by deriving the encryption keys from the resumption ticket using a pseudorandom function.

See also

References

  1. ^ "ALTS authentication". gRPC. Retrieved 2022-10-23.
  2. ^ a b "Application Layer Transport Security". Google Cloud. Retrieved 18 November 2019.
  3. ^ Rescorla, Eric; Dierks, Tim (August 2008). "The Transport Layer Security (TLS) Protocol Version 1.2". tools.ietf.org. Retrieved 18 November 2019.
  4. ^ "Service-to-service authentication, integrity, and encryption § ALTS Protocol". Google Cloud. Retrieved 18 November 2019.
  5. ^ Knapp, Ed (2017). "AES-VCM, an AES-GCM Construction Using an Integer-based Universal Hash Function". ai.google. Retrieved 18 November 2019.
  6. ^ a b "Encryption in Transit in Google Cloud". Google Cloud. Retrieved 18 November 2019.
  7. ^ "ProVerif: Cryptographic protocol verifier in the formal model". prosecco.gforge.inria.fr. Retrieved 18 November 2019.