> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mka1.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Chaves protegidas por HSM e TLS 1.3

> Como o MKA1 utiliza módulos de segurança de hardware validados pela AWS KMS e aplica TLS 1.3 para gerenciamento criptográfico de chaves em dados em repouso e em trânsito.

O MKA1 gerencia todas as chaves criptográficas através do AWS KMS, que é respaldado por módulos de segurança de hardware validados FIPS 140-2 Nível 3.
O TLS 1.3 é aplicado em todos os endpoints públicos e nas conexões internas com o banco de dados, com tamanhos de chave verificados que atendem aos requisitos de conformidade.

## O que está ativo

### Gerenciamento de chaves protegido por HSM

Os seguintes controles foram verificados no ambiente de produção ao vivo:

* A criptografia envelope dos segredos do EKS utiliza uma chave AWS KMS gerenciada pelo cliente (`arn:aws:kms:us-west-2:REDACTED:key/...`).
* A chave KMS é protegida por HSMs validados FIPS 140-2 Nível 3 operados pela AWS.
* Segredos criptografados com SOPS em repouso no repositório também utilizam AWS KMS para criptografia envelope.
* Volumes EBS anexados ao cluster de produção usam `encrypted: "true"` com a classe de armazenamento `gp3`, com chaves de criptografia gerenciadas pelo KMS.

### Aplicação do TLS 1.3

Os seguintes controles foram verificados no ambiente de produção ao vivo:

* `apigw.mka1.com:443` negociou `TLSv1.3` com a suíte de cifras `TLS_AES_128_GCM_SHA256`.
* `livekit.mka1.com:443` negociou `TLSv1.3` com a suíte de cifras `TLS_AES_128_GCM_SHA256`.
* Ambos os endpoints utilizam troca de chaves X25519 (253 bits) e chaves públicas de servidor RSA de 2048 bits emitidas pelo AWS Certificate Manager.
* A política SSL do ALB `ELBSecurityPolicy-TLS13-1-2-2021-06` está configurada nos ingresses do Kong e LiveKit, garantindo apenas TLS 1.3 e cifras TLS 1.2 fortes.
* O cluster CNPG/PostgreSQL de produção aplica `ssl_min_protocol_version: TLSv1.3` e `ssl_max_protocol_version: TLSv1.3`.
* Os certificados TLS do banco de dados são gerenciados pelo cert-manager com segredos dedicados `clientCASecret`, `serverCASecret`, `serverTLSSecret` e `replicationTLSSecret`.

## Como validamos

Validamos o uso de chaves protegidas por HSM e a aplicação do TLS 1.3 com inspeção do cluster ao vivo e testes diretos nos endpoints.

A chave KMS e o respaldo por HSM são confirmados via descrição do cluster EKS:

```bash theme={null}
aws eks describe-cluster --name mk1-eks-production --region us-west-2 \
  --query 'cluster.encryptionConfig'
```

O handshake TLS 1.3 e os tamanhos das chaves são verificados com `openssl s_client`:

```bash theme={null}
openssl s_client -connect apigw.mka1.com:443 -servername apigw.mka1.com -tls1_3 -brief
openssl s_client -connect livekit.mka1.com:443 -servername livekit.mka1.com -tls1_3 -brief
```

A configuração TLS do banco de dados é verificada diretamente no cluster ao vivo:

```bash theme={null}
kubectl -n cnpg get cluster -o yaml | grep -A2 ssl
```

## Evidências

Os trechos a seguir, devidamente sanitizados, foram extraídos de verificações contra nosso ambiente de produção ao vivo.

### Provedor KMS no cluster EKS

```json theme={null}
{
  "cluster": {
    "name": "mk1-eks-production",
    "encryptionConfig": [
      {
        "resources": ["secrets"],
        "provider": {
          "keyArn": "arn:aws:kms:us-west-2:[redacted-account]:key/[redacted-key-id]"
        }
      }
    ]
  }
}
```

### Handshake TLS 1.3 com tamanhos de chave — apigw\.mka1.com

```text theme={null}
CONEXÃO ESTABELECIDA
Versão do protocolo: TLSv1.3
Suíte de cifras: TLS_AES_128_GCM_SHA256
Chave temporária do par: X25519, 253 bits
Verificação: OK
...
Chave pública do servidor é 2048 bits
Código de retorno da verificação: 0 (ok)
```

### Handshake TLS 1.3 com tamanhos de chave — livekit.mka1.com

```text theme={null}
CONEXÃO ESTABELECIDA
Versão do protocolo: TLSv1.3
Suíte de cifras: TLS_AES_128_GCM_SHA256
Chave temporária do par: X25519, 253 bits
Verificação: OK
...
Chave pública do servidor é 2048 bits
Código de retorno da verificação: 0 (ok)
```

### Política SSL do ALB e configuração TLS do banco de dados

```text theme={null}
Ingress público do Kong:
- alb.ingress.kubernetes.io/ssl-policy: ELBSecurityPolicy-TLS13-1-2-2021-06

CNPG/PostgreSQL:
- ssl_min_protocol_version: TLSv1.3
- ssl_max_protocol_version: TLSv1.3
- clientCASecret: mk1-db-[redacted]
- serverCASecret: mk1-db-[redacted]
- serverTLSSecret: mk1-db-[redacted]
- replicationTLSSecret: mk1-db-[redacted]
```
