Protocolos criptograficos para protecao de dados em transito
O
Transport Layer Security
(
TLS
),
[
nota 1
]
assim como o seu antecessor
Secure Sockets Layer
(
SSL
),
[
nota 2
]
[
1
]
e um
protocolo de seguranca
projetado para fornecer
seguranca nas comunicacoes
sobre uma
rede de computadores
.
[
2
]
Varias versoes do protocolo encontram amplo uso em aplicativos como
navegacao na web
,
email
,
mensagens instantaneas
e
voz sobre IP
(VoIP). Os sites podem usar o TLS para proteger todas as comunicacoes entre seus servidores e
navegadores web
.
O protocolo TLS visa principalmente fornecer
privacidade
e
integridade de dados
entre dois ou mais aplicativos de computador que se comunicam.
[
2
]
Quando protegidos por TLS, conexoes entre um cliente (por exemplo, um navegador da Web) e um servidor (por exemplo, wikipedia.org) devem ter uma ou mais das seguintes propriedades:
- A conexao e
privada
(ou
segura
) porque a
criptografia simetrica
e usada para
criptografar
os dados transmitidos. As
chaves
para essa criptografia simetrica sao geradas exclusivamente para cada conexao e sao baseadas em um
segredo compartilhado
que foi negociado no inicio da
sessao
(veja
§ Handshake TLS
). O servidor e o cliente negociam os detalhes de qual algoritmo de criptografia e chaves criptograficas usar antes que o primeiro byte de dados seja transmitido (ver § Algoritmo abaixo). A negociacao de um segredo compartilhado e segura (o segredo negociado nao esta disponivel para bisbilhoteiros e nao pode ser obtido, mesmo por um invasor que se coloque no meio da conexao) e confiavel (nenhum invasor pode modificar as comunicacoes durante a negociacao sem ser detectado).
- A identidade das partes em comunicacao pode ser autenticada usando criptografia de chave publica. Essa autenticacao pode ser opcional, mas geralmente e necessaria para pelo menos uma das partes (geralmente o servidor).
- A conexao e confiavel porque cada mensagem transmitida inclui uma verificacao de integridade de mensagem usando um codigo de autenticacao de mensagem para evitar perda nao detectada ou alteracao dos dados durante a transmissao.
[
2
]
Alem das propriedades acima, a configuracao cuidadosa do TLS pode fornecer propriedades adicionais relacionadas a privacidade, como sigilo de encaminhamento, garantindo que qualquer divulgacao futura de chaves de criptografia nao possa ser usada para descriptografar as comunicacoes TLS registradas no passado.
[
3
]
O TLS suporta muitos metodos diferentes para trocar chaves, criptografar dados e autenticar a integridade da mensagem (consulte § Algoritmo abaixo). Como resultado, a configuracao segura do TLS envolve muitos parametros configuraveis ??e nem todas as opcoes fornecem todas as propriedades relacionadas a privacidade descritas na lista acima (consulte § Troca de chave (autenticacao), § Seguranca de codificacao e § Tabelas de integridade de dados).
Tentativas foram feitas para subverter aspectos da seguranca das comunicacoes que o TLS procura fornecer, e o protocolo foi revisado varias vezes para lidar com essas ameacas de seguranca (ver § Seguranca). Os desenvolvedores de navegadores da Web tambem revisaram seus produtos para se defenderem de potenciais pontos fracos de seguranca depois que eles foram descobertos (veja o historico de suporte a TLS / SSL dos navegadores da Web).
[
2
]
O protocolo TLS compreende duas camadas: o registro TLS e os protocolos de handshake TLS.
O TLS e um padrao proposto pela IETF (Internet Engineering Task Force), definido pela primeira vez em 1999, e a versao atual e o TLS 1.3 definido no
RFC 8446
(agosto de 2018). O TLS baseia-se nas especificacoes SSL anteriores (1994, 1995, 1996) desenvolvidas pela Netscape Communications
[
4
]
para adicionar o protocolo HTTPS ao navegador da Web Navigator.
Aplicacoes
cliente-servidor
fazem uso do
protocolo
TLS para se comunicar atraves de uma rede de forma a prevenir a interceptacao e adulteracao da informacao.
Uma vez que aplicacoes podem se comunicar tanto atraves de TLS (ou SSL) como sem ele, e necessario que o
cliente
sinalize ao
servidor
para a configuracao de uma conexao TLS.
[
5
]
Uma das maneiras de se obter isso e utilizar numeros de
porta
diferentes, por exemplo a porta 443 para
HTTPS
. Outro mecanismo e uma requisicao especifica por parte do cliente ao servidor para uma transicao para a conexao TLS; por exemplo, ao fazer uma requisicao STARTTLS ao utilizar protocolos de email.
Uma vez que o cliente e o servidor concordaram quanto ao uso do TLS, eles negociam uma conexao de
estado
por meio de um procedimento de
handshake
.
[
6
]
Os protocolos utilizam um handshake com uma
chave publica
para estabelecer as configuracoes de criptografia e uma chave de sessao unica compartilhada atraves da qual toda a comunicacao e criptografada utilizando uma
chave simetrica
. Durante esse handshake, o cliente e o servidor concordam a respeito dos varios parametros necessarios para estabelecer a seguranca da conexao:
- O handshake e iniciado quando o cliente se conecta a um servidor habilitado para TLS requisitando uma conexao segura e apresentando uma lista de algoritmos suportados (
cifras
e
funcoes hash
).
- A partir dessa lista, o servidor seleciona uma cifra e uma funcao hash para as quais tambem tenha suporte e notifica ao cliente a decisao.
- O servidor entao geralmente apresenta informacoes de identificacao na forma de um
certificado digital
. O certificado contem o nome do servidor, a
autoridade de certificacao
(CA) que concedeu o certificado, e a chave publica do servidor.
- O cliente confirma a validade do certificado antes de continuar.
- Para gerar as chaves de sessao utilizadas na conexao segura, o cliente:
- criptografa um
numero aleatorio
com a chave publica recebida e envia o resultado ao servidor (o unico capaz de descriptografar a mensagem com sua chave privada); ambas as partes entao fazem uso do numero aleatorio para gerar uma chave de sessao unica para a criptografia subsequente dos dados durante a sessao, ou
- inicia uma
troca de chaves de Diffie-Hellman
para gerar seguramente uma chave de sessao aleatoria e unica, utilizada para criptografar e descriptografar os dados e que ainda possui a propriedade de
foward secrecy
: caso a chave privada do servidor seja vazada no futuro, ela e incapaz de descriptografar a sessao atual, mesmo que esta tenha sido interceptada e gravada por um terceiro.
Isso conclui o handshake e inicia a conexao segura, que e criptografada e descriptografada com a chave de sessao ate o fim da conexao. Se qualquer um dos passos acima falhar, o handshake TLS tambem falha e a conexao nao e criada.
Os protocolos TLS e SSL nao se encaixam perfeitamente em nenhuma camada dos modelos
OSI
ou
TCP/IP
.
[
7
]
[
8
]
O TLS e implementado "sobre um protocolo de comunicacao confiavel (por exemplo, o TCP)", o que implica que ele esta acima da camada de transporte. Ele serve para criptografar as camadas superiores, o que normalmente seria funcao da camada de apresentacao. Contudo, as aplicacoes geralmente fazem uso do TLS como se fosse uma camada de transporte,
[
7
]
[
8
]
mesmo que essas aplicacoes devam controlar ativamente o inicio dos procedimentos de handshake e o gerenciamento dos certificados de autenticacao compartilhados.
[
2
]
O
servidor
do
site
que esta sendo acessado envia uma
chave publica
ao
browser
, usada por este para enviar uma chave secreta simetrica, criada aleatoriamente. Desta forma, fica estabelecida a troca de dados
criptografados
entre dois
computadores
.Baseia-se no
protocolo
TCP
da suite
TCP/IP
e utiliza-se do conceito introduzido por
Diffie-Hellman
nos anos 70 (criptografia de chave publica) e
Phil Zimmermann
(criador do conceito
PGP
).
A primeira versao foi desenvolvida pela
Netscape
em 1994. O SSL versao 3.0 foi lancado em
1996
, e serviu posteriormente de base para o desenvolvimento do TLS versao 1.0, um protocolo padronizado da
IETF
originalmente definido pelo
RFC 2246
. Grandes instituicoes financeiras como
Visa
,
MasterCard
,
American Express
, dentre outras, aprovaram o SSL para
comercio eletronico
seguro
na Internet.O SSL opera de forma modular, possui
design
extensivel e apresenta compatibilidade entre pares com versoes diferentes do mesmo.O SSL executa a autenticacao das 2 partes envolvidas nas comunicacoes (cliente e servidor) baseando-se em
certificados digitais
.
Ataques significativos contra TLS/SSL estao listados abaixo.
Em fevereiro de 2015, a IETF emitiu um informativo RFC
[
9
]
resumindo os varios ataques conhecidos contra TLS/SSL.
A
Apple
corrigiu a vulnerabilidade BEAST implementando a divisao 1/n-1 e ativando-a por padrao no OS X Mavericks, lancado em 22 de outubro de 2013.
[
10
]
Notas
- ↑
Em
portugues
: Seguranca da Camada de Transporte.
- ↑
Em
portugues
: Protocolo de Camada Segura de Soquetes.