Guia para TLS Conformidade com as normas

A segurança da camada de transporte (TLS) protocolo é o meio principal de proteger as comunicações de rede pela Internet. Este artigo é um breve guia para ajudá-lo a configurar um servidor seguro para atender às TLS .

Introdução

A Segurança da camada de transporte (TLS) protocolo é o principal meio de proteger as comunicações de rede pela Internet. Ele (e seu predecessor, Secure Sockets Layer ou SSL) têm sido usados ​​por décadas em muitos aplicativos, mas principalmente em navegadores quando eles visitam HTTPS websites. TLS geralmente funciona silenciosamente em segundo plano, mas, ao contrário do que se pensa, TLS não é uma caixa preta que simplesmente funciona. Pelo contrário, a segurança TLS provém da cooperação de vários algoritmos criptográficos. Além disso, TLS, como o SSL antes dele, evolui constantemente com o setor de segurança - novas tecnologias e requisitos de negócios devem ser atendidos, enquanto as ameaças de segurança mais recentes devem ser mitigadas. Algoritmos podem se tornar obsoletos com o tempo, ou práticas podem ser abandonadas, com cada mudança afetando a segurança geral de um TLS instância (como a que está protegendo sua conexão no momento).

Essa volatilidade motivou várias organizações de padrões a publicar documentos de diretrizes, de modo que uma linha de base mínima para TLS segurança poderia ser estabelecida em um mercado, setor ou serviço específico. Infelizmente, existem numerosos padrões, com diferentes setores exigindo conformidade com diferentes documentos aplicáveis, enquanto os próprios padrões tb evoluir ao longo do tempo, acomodando mudanças no setor que foram projetadas para proteger.

Compreensivelmente, navegar por esse mar de padrões para criar um ambiente moderno TLS instância pode ser uma verdadeira dor de cabeça para os administradores. Este artigo é um breve guia para ajudá-lo a configurar um servidor seguro para atender às expectativas TLS padrões em 2021. (Para obter mais ajuda, também fornecemos exemplos de configurações das soluções de servidor da web mais populares no apêndice.)

Os Padrões

Existem várias entidades que mantêm diretrizes para TLS com relação à segurança da rede, como o Departamento de Saúde e Serviços Humanos (HHS) dos Estados Unidos ou o Instituto Nacional de Padrões e Tecnologia (NIST). Por uma questão de brevidade, este artigo estudará apenas os três documentos mais adotados:

  1. A Lei de Portabilidade e Responsabilidade do Seguro de Saúde (HIPAA)
  2. NIST's Diretrizes SP 800-52r2
  3. A Padrão de segurança de dados da indústria de cartões de pagamento (PCI-DSS)

HIPAA

O HIPAA é um regulamento promulgado pelo governo dos EUA em 1996, relativo ao manuseio seguro de Informações de saúde protegidas (PHI). PHI refere-se a qualquer informação digital do paciente, como resultados de testes ou diagnósticos. A HIPAA documento de orientação publicado em 2013 afirma o seguinte:

Os processos de criptografia válidos para dados em movimento são aqueles que cumprem, conforme apropriado, as Publicações Especiais NIST 800-52, Diretrizes para a Seleção e Uso de Segurança da Camada de Transporte (TLS) Implementações; 800-77, Guia para VPNs IPsec; ou 800-113, Guide to SSL VPNs, ou outros que são validados pelo Federal Information Processing Standards (FIPS) 140-2.

Normas NIST

Em 2005, o NIST publicou a Publicação Especial (SP) 800-52, descrevendo os procedimentos operacionais corretos para configurar com segurança um TLS instância para servidores governamentais. SP 800-52 desde então foi substituído pelas versões SP 800-52r1 (2014) e SP 80052r2 (2019). Este artigo segue as diretrizes do SP 800-52r2, que atualmente é estável.

PCI-DSS

O PCI-DSS é um padrão de conformidade mantido pelo Conselho de Segurança de Padrões da Indústria de Cartões de Pagamento (PCI) que estabelece como as informações de pagamento e cartão são tratadas pelos sites de comércio eletrônico. Em relação à configuração adequada do TLS instâncias, o PCI-DSS declara:

“Consulte os padrões da indústria e as melhores práticas para obter informações sobre criptografia forte e protocolos seguros (por exemplo, NIST SP 800-52 e SP 800-57, OWASP, etc.)”

TLS padrões: reunindo tudo isso

Deve-se notar agora que cada padrão afeta sistemas diferentes, com base em sua função e os dados que manipulam. Por exemplo, um servidor de e-mail de hospital pode se enquadrar nas diretrizes da HIPAA porque as mensagens trocadas podem conter informações do paciente, enquanto o sistema CRM do hospital pode se enquadrar no PCI-DSS porque pode conter dados de cartão de crédito e outros dados do cliente. Estar em conformidade com todos os três padrões exigiria o uso de TLS parâmetros presentes em todos os documentos.

Felizmente, é evidente que todos os padrões seguem as diretrizes do NIST para a seleção de TLS parâmetros. Isso significa que, no momento em que este artigo foi escrito, estar em conformidade com o SP 800-52r2 também deve tornar um servidor compatível com o HIPAA e o PCI-DSS. (Ok, isso não é exatamente verdade, mas as coisas ficarão mais claras na próxima seção.)

configurável TLS parâmetros

O nível de segurança que TLS fornece é mais afetado pelo versão do protocolo (ie 1.0, 1.1, etc.) e os valores permitidos conjuntos de cifras. Cifras são algoritmos que executam criptografia e descriptografia. No entanto, um conjunto de cifras é um conjunto de algoritmos, incluindo uma cifra, um algoritmo de troca de chaves e um algoritmo de hash, que são usados ​​juntos para estabelecer uma segurança TLS conexão. A maioria TLS clientes e servidores suportam várias alternativas, portanto, eles precisam negociar ao estabelecer uma conexão segura para selecionar um TLS versão e cifra.

TLS versão do protocolo

Concernente TLS suporte de versão, o NIST SP 800-52r2 declara o seguinte:

Servidores que oferecem suporte a aplicativos exclusivos do governo deve ser configurado para usar TLS 1.2 e rede de apoio social ser configurado para usar TLS 1.3 também. Esses servidores não deveria ser configurado para usar TLS 1.1 e não deve usar TLS 1.0, SSL 3.0 ou SSL 2.0.

...

Servidores que oferecem suporte a aplicativos voltados para o cidadão ou empresas (ou seja, o cliente pode não fazer parte de um sistema de TI do governo) deve ser configurado para negociar TLS 1.2 e rede de apoio social ser configurado para negociar TLS 1.3. O uso de TLS as versões 1.1 e 1.0 geralmente não são recomendadas, mas essas versões podem ser configuradas quando necessário para permitir a interação com cidadãos e empresas ... Esses servidores não deve permitir o uso de SSL 2.0 ou SSL 3.0.

agências deve ajuda TLS 1.3 até 1º de janeiro de 2024. Após esta data, os servidores deve ajuda TLS 1.3 para aplicativos somente para governo e para cidadãos ou empresas. Em geral, servidores que suportam TLS 1.3 rede de apoio social ser configurado para usar TLS 1.2 também. Contudo, TLS 1.2 pode ser desativado em servidores que suportam TLS 1.3 se tiver sido determinado que TLS 1.2 não é necessário para interoperabilidade.

Enquanto TLS 1.0 é proibido e TLS 1.1 foi descontinuado para sites governamentais, as diretrizes do NIST declaram que, para compatibilidade com serviços de terceiros, servidores controlados pelo governo pode executar TLS 1.0 e 1.1 quando necessário. Sob PCI-DSS 3.2.1 (a versão atual), servidores compatíveis deve deixar o suporte para TLS 1.0 e “migrar para um mínimo de TLS 1.1, de preferência TLS 1.2. ” HIPAA tecnicamente permite o uso de todas as versões de TLS. Assim, o mínimo comumente suportado TLS a versão é 1.1; no entanto, PCI-DSS e NIST sugerem fortemente o uso do mais seguro TLS 1.2 (e, como visto acima, o NIST recomenda a adoção de TLS 1.3 e planos para exigir suporte até 2024).

Conjuntos de cifras

TLS 1.2 e anterior

SP 800-52r2 especifica uma variedade de conjuntos de criptografia aceitáveis ​​para TLS 1.2 e anteriores. O padrão não requer suporte para nenhum pacote de criptografia específico, mas oferece orientação sobre como escolher os mais fortes:

  1. Prefira chaves efêmeras em vez de chaves estáticas (ou seja, prefira DHE em vez de DH e prefira ECDHE em vez de ECDH). Chaves efêmeras fornecem sigilo de encaminhamento perfeito.
  2. Prefira os modos GCM ou CCM ao invés do modo CBC. O uso de um modo de criptografia autenticado evita vários ataques (consulte a Seção 3.3.2 [do SP 800-52r2] para obter mais informações). Observe que eles não estão disponíveis em versões anteriores a TLS 1.2.
  3. Prefira CCM a CCM_8. O último contém uma marca de autenticação mais curta, que fornece uma força de autenticação mais baixa.

Além disso, embora estes sejam os permitido conjuntos de cifras, se o seu TLS Como o servidor não lida com grande variedade de plataformas e clientes diferentes, é recomendável que apenas um pequeno subconjunto desses algoritmos seja usado. Permitir que mais conjuntos de cifras só possam ampliar a superfície de ataque para o servidor se (ou quando) for descoberta uma nova vulnerabilidade de protocolo.

Cipher Suites para certificados ECDSA
TLS 1.2:
IANA Valor OpenSSL
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0xC0, 0x2B ECDHE-ECDSA-AES128-GCM-SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0xC0, 0x2C ECDHE-ECDSA-AES256-GCM-SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CCM 0xC0, 0xAC ECDHE-ECDSA-AES128-CCM
TLS_ECDHE_ECDSA_WITH_AES_256_CCM 0xC0, 0xAD ECDHE-ECDSA-AES256-CCM
TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 0xC0, 0xAE ECDHE-ECDSA-AES128-CCM8
TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 0xC0, 0xAF ECDHE-ECDSA-AES256-CCM8
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 0xC0, 0x23 ECDHE-ECDSA-AES128-SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 0xC0, 0x24 ECDHE-ECDSA-AES256-SHA384
TLS 1.2, 1.1 ou 1.0:
IANA Valor OpenSSL
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0xC0, 0x09 ECDHE-ECDSA-AES128-SHA
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0xC0, 0x0A ECDHE-ECDSA-AES256-SHA
Cipher Suites para certificados RSA
TLS 1.2:
IANA Valor OpenSSL
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0xC0, 0x2F ECDHE-RSA-AES128-GCM-SHA256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0xC0, 0x30 ECDHE-RSA-AES256-GCM-SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 0x00, 0x9E DHE-RSA-AES128-GCM-SHA256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 0x00, 0x9F DHE-RSA-AES256-GCM-SHA384
TLS_DHE_RSA_WITH_AES_128_CCM 0xC0, 0x9E DHE-RSA-AES128-CCM
TLS_DHE_RSA_WITH_AES_256_CCM 0xC0, 0x9F DHE-RSA-AES256-CCM
TLS_DHE_RSA_WITH_AES_128_CCM_8 0xC0, 0xA2 DHE-RSA-AES128-CCM8
TLS_DHE_RSA_WITH_AES_256_CCM_8 0xC0, 0xA3 DHE-RSA-AES256-CCM8
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 0xC0, 0x27 ECDHE-RSA-AES128-SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 0xC0, 0x28 ECDHE-RSA-AES256-SHA384
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 0x00, 0x67 DHE-RSA-AES128-SHA256
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 0x00, 0x6B DHE-RSA-AES256-SHA256
TLS 1.2, 1.1 ou 1.0:
IANA Valor OpenSSL
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 0xC0, 0x13 ECDHE-RSA-AES128-SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 0xC0, 0x14 ECDHE-RSA-AES256-SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA 0x00, 0x33 DHE-RSA-AES128-SHA
TLS_DHE_RSA_WITH_AES_256_CBC_SHA 0x00, 0x39 DHE-RSA-AES256-SHA
Cipher Suites para certificados ECDSA
TLS 1.2:
IANA Valor OpenSSL
TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 0x00, 0xA2 DHE-DSS-AES128-GCM-SHA256
TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 0x00, 0xA3 DHE-DSS-AES256-GCM-SHA384
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 0x00, 0x40 DHE-DSS-AES128-SHA256
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 0x00, 0x6A DHE-DSS-AES256-SHA256
TLS 1.2, 1.1 ou 1.0:
IANA Valor OpenSSL
TLS_DHE_DSS_WITH_AES_128_CBC_SHA 0x00, 0x32 DHE-DSS-AES128-SHA
TLS_DHE_DSS_WITH_AES_256_CBC_SHA 0x00, 0x38 DHE-DSS-AES256-SHA
Cipher Suites para Certificados DH
Assinado DSA, TLS 1.2:
IANA Valor OpenSSL
TLS_DH_DSS_WITH_AES_128_GCM_SHA256 0x00, 0xA4 DH-DSS-AES128-GCM-SHA256
TLS_DH_DSS_WITH_AES_256_GCM_SHA384 0x00, 0xA5 DH-DSS-AES256-GCM-SHA384
TLS_DH_DSS_WITH_AES_128_CBC_SHA256 0x00, 0x3E DH-DSS-AES128-SHA256
TLS_DH_DSS_WITH_AES_256_CBC_SHA256 0x00, 0x68 DH-DSS-AES256-SHA256
Assinado DSA, TLS 1.2, 1.1 ou 1.0:
IANA Valor OpenSSL
TLS_DH_DSS_WITH_AES_128_CBC_SHA 0x00, 0x30 DH-DSS-AES128-SHA
TLS_DH_DSS_WITH_AES_256_CBC_SHA 0x00, 0x36 DH-DSS-AES256-SHA
RSA assinado, TLS 1.2:
IANA Valor OpenSSL
TLS_DH_RSA_WITH_AES_128_GCM_SHA256 0x00, 0xA0 DH-RSA-AES128-GCM-SHA256
TLS_DH_RSA_WITH_AES_256_GCM_SHA384 0x00, 0xA1 DH-RSA-AES256-GCM-SHA384
TLS_DH_RSA_WITH_AES_128_CBC_SHA256 0x00, 0x3F DH-RSA-AES128-SHA256
TLS_DH_RSA_WITH_AES_256_CBC_SHA256 0x00, 0x69 DH-RSA-AES256-SHA256
RSA assinado, TLS 1.2, 1.1 ou 1.0:
IANA Valor OpenSSL
TLS_DH_RSA_WITH_AES_128_CBC_SHA 0x00, 0x31 DH-RSA-AES128-SHA
TLS_DH_RSA_WITH_AES_256_CBC_SHA 0x00, 0x37 DH-RSA-AES256-SHA
Cipher Suites para certificados ECDH
Assinado por ECDSA, TLS 1.2:
IANA Valor OpenSSL
TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0xC0, 0x2D ECDH-ECDSA-AES128-GCM-SHA256
TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0xC0, 0x2E ECDH-ECDSA-AES256-GCM-SHA384
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 0xC0, 0x25 ECDH-ECDSA-AES128-SHA256
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 0xC0, 0x26 ECDH-ECDSA-AES256-SHA384
Assinado por ECDSA, TLS 1.2, 1.1 ou 1.0:
IANA Valor OpenSSL
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0xC0, 0x04 ECDH-ECDSA-AES128-SHA
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0xC0, 0x05 ECDH-ECDSA-AES256-SHA
RSA assinado, TLS 1.2:
IANA Valor OpenSSL
TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 0xC0, 0x31 ECDH-RSA-AES128-GCM-SHA256
TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 0xC0, 0x32 ECDH-RSA-AES256-GCM-SHA384
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 0xC0, 0x29 ECDH-RSA-AES128-SHA256
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 0xC0, 0x2A ECDH-RSA-AES256-SHA384
RSA assinado, TLS 1.2, 1.1 ou 1.0:
IANA Valor OpenSSL
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA 0xC0, 0x0E ECDH-RSA-AES128-SHA
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA 0xC0, 0x0F ECDH-RSA-AES256-SHA

TLS 1.3

TLS 1.3 tem uma lista muito mais curta de conjuntos de criptografia:

  • TLS_AES_128_GCM_SHA256 (0x13, 0x01)
  • TLS_AES_256_GCM_SHA384 (0x13, 0x02)
  • TLS_AES_128_CCM_SHA256 (0x13, 0x04)
  • TLS_AES_128_CCM_8_SHA256 (0x13, 0x05)

Conclusão

Esperamos que este breve guia o ajude a entender mais sobre TLSe ajudá-lo a configurar TLS em seu próprio servidor. Com relação aos padrões e recomendações que discutimos, a seção a seguir contém um exemplo de configuração que você deve ser capaz de aplicar às soluções de servidor da web mais populares. Se você tiver alguma dúvida sobre como manter sua conformidade online, sinta-se à vontade para nos contatar por e-mail Support@SSL.com ou clicando no botão de chat ao vivo na parte inferior da tela.

Apêndice: Exemplo TLS configurações

Coletando as regras estabelecidas nos três documentos de especificação, um servidor seguro moderno deve implementar TLS 1.2 e / ou TLS 1.3, com uma lista curta, mas diversificada de conjuntos de criptografia selecionados. Como referência rápida, exemplos de configurações para os servidores web mais populares do mercado são mostrados abaixo. Estas são configurações "intermediárias" (de uso geral) geradas com o Mozilla Gerador de configuração SSL:

apachenginxlighttpdHAPROxyAWSELB

Servidor HTTP Apache

... SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256: ECDHE-RSA-AES128-GCM-SHA256: ECDHE-ECDSA-AES256-GCM-SHA384: ECDHE-RSA-AES256-GCM-SHA384- ECDHE20-CHA1305- ECDHE20 POLY1305: ECDHE-RSA-CHACHA128-POLY256: DHE-RSA-AES256-GCM-SHA384: DHE-RSA-AESXNUMX-GCM-SHAXNUMX SSLHonorCipherOrder desligado SSLSessionTickets desligado

nginx

... ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

lighttpd

... ssl.openssl.ssl-conf-cmd = ("Protocolo" => "ALL, -SSLv2, -SSLv3, -TLSv1, -TLSv1.1 ") ssl.cipher-list =" ECDHE-ECDSA-AES128-GCM-SHA256: ECDHE-RSA-AES128-GCM-SHA256: ECDHE-ECDSA-AES256-GCM-SHA384: ECDHE-RSA-AES256-GCM- SHA384: ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-POLY1305: DHE-RSA-AES128-GCM-SHA256: DHE-RSA-AES256-GCM-SHA384 "ordem ssl.honor-cipher =" desativar

HAPROxy

...

ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 ssl-default-bind-options prefer-client-ciphers no-sslv3 no-tlsv10 não-tlsv11 não-tls-tickets

ssl-default-server-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
ssl-default-server-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 ssl-default-server-options no-sslv3 no-tlsv10 não-tlsv11 não-tls-ingressos

AWSELB

... Políticas: - PolicyName: Mozilla-intermediário-v5-0 PolicyType: SSLNegotiationPolicyType Atributos: - Nome: Protocolo-TLSv1.2 Value: true - Name: Server-Defined-Cipher-Order Value: false - Name: ECDHE-ECDSA-AES128-GCM-SHA256 Value: true - Name: ECDHE-RSA-AES128-GCM-SHA256 Value: true - Nome: ECDHE-ECDSA-AES256-GCM-SHA384 Valor: verdadeiro - Nome: ECDHE-RSA-AES256-GCM-SHA384 Valor: verdadeiro - Nome: DHE-RSA-AES128-GCM-SHA256 Valor: verdadeiro - Nome: DHE-RSA -AES256-GCM-SHA384 Valor: verdadeiro

Twitter
Facebook
LinkedIn
Reddit
E-mail

Mantenha-se informado e seguro

SSL.com é líder global em segurança cibernética, PKI e certificados digitais. Inscreva-se para receber as últimas notícias do setor, dicas e anúncios de produtos da SSL.com.

Adoraríamos receber seu feedback

Responda à nossa pesquisa e deixe-nos saber sua opinião sobre sua compra recente.