Protocolo de Transmissão de Dados

O HyperText Transfer Protocol nasceu
quando Tim Bernard Lee, em 1991, escreveu
o 1° cliente e o 1° servidor web. Surgia o
HTML e o HTTP. Ele foi criado porque os
protocolos existentes na época não
atendiam às necessidades da comunidade
científica. Surgiu da necessidade de
distribuir informações pela rede, e para que
essa distribuição fosse possível, foi
necessário criar uma forma padronizada de
comunicação entre os clientes e os
servidores da Web, para ser entendido por
todos os computadores ligados à Internet.

Ao ser criado, o protocolo HTTP passou a ser
utilizado para a comunicação entre computadores
na Internet e passou a especificar como seriam
realizadas as transações entre clientes e servidores,
através do uso de regras básicas. O HTTP é um
protocolo
de
aplicação
responsável
pelo
tratamento de pedidos e respostas entre cliente e
servidor na Internet. Normalmente, este protocolo
utiliza a porta 80 e é usado para a comunicação de
páginas web, comunicando na linguagem HTML.
Contudo, para haver comunicação com o servidor
do sítio, é necessário utilizar comandos adequados,
que não estão em linguagem HTML.

Para que o protocolo HTTP consiga
transferir seus dados pela Web, é
necessário que os protocolos TCP e IP
(Internet Protocol) tornem possível a
conexão entre clientes e servidores. O
HTTP utiliza o modelo cliente/servidor
como a maioria dos protocolos de rede,
baseando-se no paradigma de requisição e
resposta.

Um programa requisitante (cliente) estabelece
uma conexão com um outro programa receptor
(servidor) e envia-lhe uma requisição, contendo
a URL, a versão do protocolo, uma mensagem
MIME (padrão utilizado para codificar dados
em formato de textos ASCII para serem
transmitidos pela Internet) contendo os
modificadores da requisição, informações sobre
o cliente e, possivelmente, o conteúdo no corpo
da mensagem.

O servidor responde com uma linha de status
(status line) incluindo sua versão de protocolo e
um código de operação bem sucedida ou um
código de erro, seguido pelas informações do
servidor.

Com a necessidade de enviar/receber
dados de forma segura, o protocolo
HTTP foi “combinado” com o SSL,
formando o HTTPS. É a maneira mais
comum
atualmente
de
trafegar
documentos via web de maneira segura.

O HTTPS provê encriptação de dados,
autenticação de servidor, integridade de
mensagem e autenticação de cliente por meio de
certificados e assinaturas digitais. A porta usada
pelo HTTPS é a 443. O protocolo HTTPS é
utilizado, em regra, quando se deseja evitar que a
informação transmitida entre o cliente e o servidor
seja visualizada por terceiros, como por exemplo
no caso de compras online. A existência na barra de
tarefas (normalmente do lado direito) de um
cadeado demonstra a certificação de página segura
(SSL).

SSL (do inglês security sockets layer) é um aplicativo
cliente/servidor que permitem trocas de informações
em total segurança, protegendo a integridade e a
veracidade do conteúdo que trafega na Internet. Tal
segurança só é possível através da autenticação das
partes envolvidas na troca de informações.
Desenvolvida pela Netscape Communications,
confere segurança de comunicação através da
autenticação e encriptação dos pacotes na internet
para serviços como servidores de email (SMTP),
navegação por páginas (HTTP), dentre outros. Ele
fica entre a camada de aplicação e a camada de
transporte.

Um site seguro, deve possuir 3 componentes
essenciais para a comunicação segura: o
servidor, o software seguro (que faz o
trabalho de criptografia) e o certificado de
assinatura (assinatura digital). Este software
seguro é proprietário, vendido, por exemplo,
pela Verisign (a mais conhecida atualmente).
O software pode ser instalado na própria
máquina do servidor, junto à assinatura
digital (uma chave de 512 bits), ou pode estar
em um servidor compartilhado.

Privacidade:
Uma
mensagem
é
transmitida de A para B. Neste caso A
usa a chave pública de B para
criptografar a mensagem, tornando B a
única pessoa que pode decodificar a
mensagem, usando a sua chave privada.
Não podemos entretanto ter certeza
quanto a identidade de A.

Autenticidade:
De modo a garantir a
autenticidade de A no caso anterior, um
sistema de códigos um pouco mais complexo é
necessário. A mensagem de A para B é
primeiramente criptografada com a chave
privada de A e posteriormente com a chave
pública de B. Para decodificar a mensagem, B
usa primeiro sua chave privada e depois a
chave pública de A. Agora B pode ter certeza
de que A é realmente quem diz ser, pois
ninguém mais poderia criptografar a
mensagem usando a chave privada de A.

Integridade: No SSL, a integridade é garantida
pelo uso do MAC (Message Authentication
Code) com as necessárias funções da tabela
hash. Na geração de uma mensagem, o MAC é
obtido por aplicação das funções da tabela hash
e é codificado junto com a mensagem. Após a
mensagem ser recebida sua validade pode ser
checada comparando-se o MAC com o
resultado obtido pela reversão das funções
hash. Isto previne mensagens alteradas por
terceiros durante a transmissão.

Não - Repudiação: A segurança das transações é
dependente das chaves de criptografia. Se uma
dessas chaves cair em mãos erradas, pode ser
facilmente duplicada e usada para comprometer a
segurança. Um sistema totalmente seguro deve ser
capaz de detectar impostores ou, ainda melhor, se
prevenir contra a duplicação das chaves. Isto é
executado por um hardware baseado em ficha
única. O SSL não suporta sozinho esta
implementação, mas a realiza em conjunto com
Fortezza (sistema de criptografia usado pelas
agências do governo americano para manejar
informações sensíveis porém não confidenciais).

O cliente sempre inicia a conexão.
Quando o usuário solicita a conexão com
um site seguro, o navegador (Firefox,
Opera..) solicita o envio do certificado
digital e verifica:
> Se o certificado enviado é confiável;
> Se o certificado é válido;
> Se certificado está relacionado com o
site que o enviou.

Uma vez que as informações (do slide
anterior) tenham sido confirmadas, a
chave pública é enviada e as mensagens
podem ser trocadas. Uma mensagem que
tenha sido criptografada com uma chave
pública somente poderá ser decifrada
com a sua chave privada (simétrica)
correspondente.

O SSL possui 2 camadas de protocolo:
Handshake e record.
> Handshake: Usado para coordenar os
estados entre cliente e servidor. Os
Certificados são trocados entre o cliente e
o servidor para provar suas identidades.
A chave pública do servidor é retirada
desse certificado.

Record: A camada SSL Record encapsula
vários protocolos de alto nível, e usa a
definição do estado corrente para
selecionar os algoritmos de compressão e
criptografia apropriados. Esse estado
corrente é determinado durante o
handshaking previamente descrito.
Download

Document