You are on page 1of 13

Apostila de Fundamentos de Redes de Computadores Prof: Ricardo Quinto

No contexto em que Bob envia uma mensagem a Alice, a Figura 9.16 apresenta um
resumo do procedimento operacional para a criao de uma assinatura digital. Bob
processa sua mensagem longa original por meio de uma funo de hash para criar um
resumo de mensagem. Ento, ele criptografa o resumo de mensagem com sua prpria
chave privada. A mensagem original (em texto aberto) e o resumo de mensagem
digitalmente assinado (daqui em diante denominado assinatura digital) so, ento, enviados
a Alice. A Figura 9.17 mostra um resumo do procedimento operacional de verificao da
integridade da mensagem. Alice aplica a chave pblica do remetente mensagem para
recuperar o resumo de mensagem. Ela tambm aplica a funo de hash ao texto aberto da
mensagem para obter um segundo resumo de mensagem. Se os dois resumos coincidirem,
ento Alice poder ter certeza quanto integridade e ao autor da mensagem.

Figura 9.17 Verificao da integridade de uma mensagem assinada.

9.4.3 Algoritmos de funo de hash


bom nos convencermos de que uma simples soma de verificao, como a da
Internet, daria um pssimo algoritmo de resumo de mensagem. Em vez de processarmos a
aritmtica de complemento de 1 (como feito para a soma de verificao da Internet),
vamos processar uma soma de verificao tratando cada caracter como um byte e somando
os bytes em conjunto usando pores de 4 bytes por vez. Suponha que Bob deva a Alice
100,99 dlares e lhe envie um vale constitudo da sentena encadeada.
IOU100.99BOB. (IOU I Owe You Eu devo a voc.). A representao ASCII (em
notao hexadecimal) para essas letras 49, 4F, 55, 31, 30,30, 2E, 39, 39, 42, 4F, 42.
A Figura 9.18 (a parte superior dela) mostra que a soma de verificao dessa
mensagem B2 Cl D2 AC. Uma mensagem ligeiramente diferente (e que sairia muito mais
cara para Bob) mostrada na parte de baixo da Figura 9.18. As mensagens
IOUI00.99BOB e IOU900.19BOB tm a mesma soma de verificao. Assim, esse
algoritmo simples viola as duas exigncias citadas anteriormente. Fornecidos os dados
originais, simples descobrir outro conjunto de dados com a mesma soma de verificao.

234
Apostila de Fundamentos de Redes de Computadores Prof: Ricardo Quinto

claro que, para efeito de segurana, precisaremos de uma funo de hash muito mais
poderosa do que a soma de verificao.
O algoritmo de resumo de mensagem MD5 de Ron Rivest amplamente usado hoje.
Ele processa um resumo de mensagem de 128 bits por meio de um processo de quatro
estgios, constitudo de um estgio de recheio (adio de um um seguido de zeros
suficientes, de modo que o comprimento da mensagem satisfaa a determinadas condies),
um estgio de anexao (anexao de uma representao de 64 bits do comprimento da
mensagem antes do recheio), uma inicializao de um acumulador e um estgio final de
looping, no qual os blocos de 16 palavras da mensagem so processados (destroados) em
quatro rodadas de processamento. No se sabe se o MD5 de fato satisfaz s exigncias
citadas anteriormente. O autor do MD5 declara: Conjectura-se que a dificuldade de
produzir duas mensagens que tenham o mesmo resumo da ordem de 264 operaes e que a
dificuldade de produzir qualquer mensagem que tenha um dado resumo de mensagem da
ordem de 2128 operaes. Ningum contestou essas declaraes. Para uma descrio do
MD5 (incluindo uma implementao em cdigo de fonte C), consulte o RFC 1321.
Aspectos computacionais do MD5 so discutidos no RFC 1810.

Figura 9.18 Mensagem inicial e mensagem fraudulenta tm a mesma soma de verificao.

O segundo principal algoritmo de resumo de mensagem em uso atualmente nos


Estados Unidos o SHA1 (secure hash algorithm algoritmo de hash seguro). Esse
algoritmo se baseia em princpios similares aos usados no projeto do MD4 [RFC 1320], o
predecessor do MD5. O uso do SHA1, um padro federal norte-americano, exigido
sempre que aplicaes de mbito federal requerem um algoritmo de resumo de mensagem
seguro. Ele produz um resumo de mensagem de 160 bits.
9.5 Distribuio de chaves e certificao
Na Seo 9.2, vimos que uma desvantagem da criptografia de chaves simtricas era a
necessidade de que as duas partes comunicantes concordassem com sua chave secreta
previamente. Com a criptografia de chaves pblicas, a priori esse acordo quanto a um valor
secreto no necessrio. Contudo, como discutimos na Seo 9.2, a criptografia de chaves
pblicas tambm tem suas dificuldades, em particular o problema de obter a chave pblica
verdadeira de algum. Ambos os problemas determinao de uma chave compartilhada para a
criptografia de chaves simtricas e obteno de uma chave pblica segura, no caso da
criptografia de chaves pblicas podem ser solucionados usando-se um intermedirio de
confiana. Para a criptografia de chaves simtricas, esse intermedirio de confiana chamado
de central de distribuio de chaves (Key Distribution Center KDC), uma entidade de rede
nica e de confiana com quem o usurio estabelece uma chave secreta compartilhada.

235
Apostila de Fundamentos de Redes de Computadores Prof: Ricardo Quinto

Veremos que a KDC pode ser usada para obter as chaves compartilhadas necessrias para uma
comunicao segura com todas as outras entidades de rede, evitando algumas das armadilhas
que identificamos na Seo 9.3. No caso da criptografia de chaves pblicas, o intermedirio de
confiana chamado de autoridade certificadora (Certification Authority CA). Uma CA
certifica que uma chave pblica pertence a uma determinada entidade (uma pessoa ou uma
rede). No caso de uma chave pblica certificada, se a confiana depositada na CA que
certificou a chave for absoluta, poderemos ter certeza quanto a quem pertence a chave pblica.
Uma vez que uma chave pblica certificada, ela pode ser distribuda de qualquer lugar,
incluindo um servidor de chave pblica, uma pgina Web pessoal ou um disquete.
9.5.1 KDC (central de distribuio de chaves)
Suponha novamente que Bob e Alice queiram se comunicar usando criptografia de
chaves simtricas. Eles nunca se encontraram (talvez tenham se conhecido em uma sala de
bate-papo on-line) e, assim, no combinaram uma chave secreta. Como possvel, ento,
que eles combinem uma chave secreta, dado que s podem se comunicar um com o outro
pela rede? Uma soluo freqentemente adotada na prtica usar uma KDC.
A KDC um servidor que compartilha uma chave simtrica secreta diferente com
cada um de seus usurios registrados. Essa chave pode ser instalada manualmente no
servidor quando o usurio se registrar pela primeira vez. A KDC conhece a chave secreta
de cada usurio, e cada um deles pode se comunicar com segurana com a KDC usando
essa chave. Vejamos como o conhecimento dessa nica chave permite que um usurio
obtenha uma chave para se comunicar com qualquer outro usurio registrado. Suponha que
Alice e Bob sejam usurios da KDC; eles conhecem apenas suas prprias chaves
individuais, KAKDC e KBKDC, respectivamente, para se comunicar com segurana com a
KDC. Alice d o primeiro passo, e eles continuam como ilustrado na Figura 9.19.

Figura 9.19 Estabelecimento de uma chave de sesso nica usando uma KDC.

1. Usando KAKDC para codificar sua comunicao com a KDC, Alice envia uma
mensagem KDC dizendo que ela (A) quer se comunicar com Bob (B). Denominamos
essa mensagem de KAKDC(A, B).
2. A KDC, como conhece KAKDC, decriptografa KAKDC(A, B). Em seguida, ela gera um
nmero aleatrio R1. Esse o valor da chave compartilhada que Alice e Bob usaro
para realizar criptografia simtrica quando se comunicarem mutuamente. Essa chave
chamada de chave de sesso nica, pois Alice e Bob a utilizaro apenas durante essa
nica sesso que esto estabelecendo no momento. A KDC agora precisa informar
Alice e Bob do valor de R1. Assim, ela devolve a mesma mensagem a Alice,
criptografada usando KAKDC, contendo o seguinte:

236
Apostila de Fundamentos de Redes de Computadores Prof: Ricardo Quinto

R1, a chave de sesso nica que Alice e Bob vo usar para se comunicarem.
Um par de valores: A e R1, criptografados pela KDC usando a chave de Bob, KB
KDC. Chamamos esse valor de KBKDC(A, R1). importante notar que a KDC est
enviando Alice no somente o valor de R1 para seu uso, mas tambm uma verso
criptografada de R1 e do nome de Alice, criptografados usando a chave de Bob.
Alice no pode decifrar esse par de valores da mensagem (ela no conhece a chave
criptogrfica de Bob), mas, na verdade, ela no precisa faz-lo. Veremos em breve
que Alice simplesmente repassa o par de valores criptografados para Bob (que pode
decifr-los).
Esses itens so colocados na mensagem e criptografados usando a chave
compartilhada de Alice. A mensagem da KDC para Alice , portanto, KAKDC(R1, KB
KDC(R1)).

3. Alice recebe a mensagem da KDC, extrai R1 da mensagem e a salva. Ela agora


conhece a chave de sesso nica, R1. Ela tambm extrai KBKDC(A, R1) e a repassa a
Bob.
4. Bob decifra a mensagem recebida KBKDC(A, R1) usando KBKDC e extrai A e R1. Ele
agora conhece a chave de sesso nica R1 e sabe quem a pessoa com a qual est
compartilhando essa chave, A. claro que ele toma o cuidado de autenticar Alice
usando R1 antes de prosseguir.
9.5.2 Kerberos
Kerberos [RFC 1510; Neuman, 1994] um servio de autenticao desenvolvido no
MIT que usa tcnicas de criptografia de chaves simtricas e uma central de distribuio de
chaves. Embora seja conceitualmente idntico KDC genrica descrita na Seo 9.5.1, o
Kerberos tem um vocabulrio levemente diferente. Ele contm tambm diversas variaes
e extenses interessantes dos mecanismos bsicos da KDC. Ele foi projetado para
autenticar usurios que acessam servidores de rede e era inicialmente dirigido para o uso de
um nico domnio administrativo, como um campus ou uma empresa. Assim, ele
estruturado na linguagem de usurios que querem acessar os servios da rede (servidores)
utilizando programas de rede de camada de aplicao, como o Telnet (para login remoto) e
o NFS (para acesso a arquivos remotos), em vez de ser estruturado na linguagem de pessoas
que querem conversar entre si e precisam se autenticar mutuamente, como nos exemplos
apresentados at aqui. No obstante, a chave (trocadilho proposital) subjacente s duas
tcnicas continua a mesma.
O servidor de autenticao Kerberos (authetication server SA) desempenha o papel
da KDC. Ele o repositrio no apenas das chaves secretas de todos os usurios (de modo
que cada usurio pode se comunicar com o SA com segurana), mas tambm das
informaes sobre quais usurios tm acesso privilegiado a quais servios em quais
servidores de rede. Quando Alice quer acessar um servio em Bob (que agora
consideramos um servidor), o protocolo segue fielmente o exemplo dado na Figura 9.19:
1. Alice contata o SA Kerberos e indica que quer usar Bob. Toda a comunicao entre
Alice e o SA criptografada usando uma chave secreta que compartilhada entre Alice
e o SA. No Kerberos, Alice primeiramente fornece seu nome e senha a seu hospedeiro
local. Este e o SA ento determinam a chave de sesso nica para criptografar a
comunicao entre Alice e o SA.
2. O SA autentica Alice, verifica se ela tem acesso privilegiado a Bob e gera uma chave
simtrica de sesso nica, R1, para a comunicao entre Bob e Alice. O servidor de

237
Apostila de Fundamentos de Redes de Computadores Prof: Ricardo Quinto

autenticao (no jargo do Kerberos, servidor bilheteiro) envia a Alice o valor de R1 e


tambm um bilhete de entrada para os servios de Bob. O bilhete contm o nome de
Alice, a chave da sesso Alice Bob, R1 e o horrio de trmino, tudo criptografado
usando a chave secreta de Bob (conhecida apenas por Bob e SA), como na Figura 9.19.
O bilhete de Alice vlido s at o horrio de trmino e ser rejeitado por Bob se
apresentado aps esse horrio. Para o Kerberos V4, o tempo mximo de vida til de um
bilhete de cerca de 21 horas. No Kerberos V5, o tempo de vida til deve expirar antes
do final do ano de 9.999, um srio problema para o ano 10.000!
3. Alice ento envia seu bilhete a Bob. Ela tambm envia uma marca de tempo
criptografada por R1 que usada como um nonce. Bob decifra o bilhete usando sua
chave secreta, obtm a chave da sesso e decifra a marca de tempo utilizando a chave
da sesso que acabou de descobrir. Ele devolve o nonce a Alice, criptografado por R1,
mostrando, assim, que ele conhece R1 e que est ao vivo.
9.5.3 Certificao de chaves pblicas
Uma das caractersticas principais da criptografia de chaves pblicas que possvel
que duas entidades troquem mensagens secretas sem ter de trocar chaves secretas. Por
exemplo, quando Alice quer enviar uma mensagem secreta a Bob, ela simplesmente
criptografa a mensagem com a chave pblica de Bob e envia a mensagem criptografada a
ele; ela no precisa conhecer a chave secreta (isto , privada) de Bob nem Bob precisa
conhecer a chave secreta de Alice. Assim, a criptografia de chaves pblicas evita a
necessidade de infra-estrutura de KDC, como o Kerberos.
Evidentemente, com a criptografia de chaves pblicas, as entidades comunicantes tm
de trocar chaves pblicas. Um usurio pode disponibilizar o conhecimento de sua chave
pblica de muitas maneiras, como, por exemplo, apresentando a chave em sua pgina Web
pessoal, colocando-a em um servidor pblico de chaves ou enviando-a a um correspondente
por e-mail. Um site Web de comrcio pode colocar sua chave pblica em seu servidor de
modo que os browsers descarreguem automaticamente a chave pblica ao se conectarem ao
site. Roteadores podem colocar sua chave pblica em servidores de chaves pblicas,
permitindo, desse modo, que outras entidades da rede a recuperem.
H, contudo, um problema sutil, mas importante, com a criptografia de chaves
pblicas. Para termos uma percepo desse problema, vamos considerar uma transao
comercial pela Internet, por exemplo. Suponha que Alice trabalhe no ramo de pizzas para
viagem e que aceite pedidos pela Internet. Bob, que adora pizza, envia a Alice uma
mensagem em texto aberto que contm o endereo de sua casa e o tipo de pizza que quer.
Nessa mensagem, ele inclui tambm sua assinatura digital (isto , um resumo de mensagem
criptografado extrado da mensagem original em texto aberto). Como discutimos na
Seo 9.4, Alice pode obter a chave pblica de Bob (de sua pgina Web pessoal, de um
servidor de chaves pblicas ou de uma mensagem de e-mail) e verificar a assinatura digital.
Dessa maneira, ela se certifica de que foi Bob, e no algum adolescente brincalho, quem
fez o pedido.
Tudo parece caminhar bem at que entra em cena a esperta Trudy. Como mostrado
na Figura 9.20, Trudy decide fazer uma travessura. Ela envia uma mensagem a Alice na
qual diz que Bob, fornece o endereo de Bob e pede uma pizza. Ela tambm anexa uma
assinatura digital, mas faz isso assinando o resumo de mensagem com sua chave privada.
Ela tambm se faz passar por Bob enviando a Alice sua chave pblica, mas dizendo que a
chave pertence a Bob. Nesse exemplo, Alice aplicar a chave pblica de Trudy (pensando
que a de Bob) na assinatura digital e concluir que a mensagem em texto aberto foi, na

238
Apostila de Fundamentos de Redes de Computadores Prof: Ricardo Quinto

verdade, criada por Bob. Este ficar muito surpreso quando o entregador aparecer em sua
casa com uma pizza, com tudo acertado!

Figura 9.20 Trudy se passa por Bob usando a criptografia de chaves pblicas.

Por esse exemplo, vemos que, para que a criptografia de chaves pblicas seja til, as
entidades (usurios, browsers, roteadores) precisam ter certeza de que possuem a chave
pblica da entidade com a qual esto se comunicando. Por exemplo, quando Alice estiver
se comunicando com Bob usando criptografia de chaves pblicas, ela precisa saber, com
certeza, que a chave pblica, que supostamente de Bob, de fato dele. Tnhamos
preocupaes semelhantes em nossos protocolos de autenticao apresentados na
Figura 9.12 e na Figura 9.13.
A vinculao de uma chave pblica a uma entidade particular feita, tipicamente, por
uma autoridade certiticadora (certification authority CA), cuja tarefa validar identidades
e emitir certificados. A CA tem as seguintes incumbncias:
1. A CA verifica se uma entidade (pessoa, roteador e assim por diante) quem se diz ser.
No h procedimentos obrigatrios quanto ao modo como deve ser feita a certificao.
Ao tratarmos com uma CA, devemos confiar que ela tenha realizado uma verificao
rigorosa da entidade. Por exemplo, se Trudy conseguisse entrar na autoridade
certificadora Fly-by-night, e simplesmente declarasse Eu sou Alice e recebesse
certificados associados identidade Alice, ento no se deveria dar muita
credibilidade s chaves pblicas certificadas pela autoridade certificadora Fly-by-night.
Por outro lado, seria mais sensato (ou no!) estar inclinado a confiar em uma CA que
faz parte de um programa federal ou estadual. O grau de confiana que se tem na
identidade associada a uma chave pblica equivale apenas ao grau de confiana
depositada na CA e em suas tcnicas de verificao de identidades. Em que rede
emaranhada estamos enredados!
2. Assim que a CA verifica a identidade da entidade, ela cria um certificado que vincula a
chave pblica da entidade identidade. O certificado contm a chave pblica e a
informao exclusiva que identifica mundialmente a chave pblica do proprietrio (por
exemplo, o nome de algum ou um endereo IP). Esses passos so mostrados na
Figura 9.21.

239
Apostila de Fundamentos de Redes de Computadores Prof: Ricardo Quinto

Figura 9.21 Bob obtm um certificado de uma CA.

Vejamos, agora, como os certificados podem ser usados para combater os espertinhos
das pizzas, como Trudy e outros indesejveis. Quando Alice recebe o pedido de Bob, ela
pega o certificado de Bob, que pode estar na pgina Web dele, em uma mensagem de e-mail
ou em um servidor de certificados. Alice usa a chave pblica da CA para verificar se a
chave pblica do certificado de Bob , de fato, de Bob. Supomos que a chave pblica da
CA seja conhecida de todos (por exemplo, poderia ser divulgada em um local conhecido e
de confiana, como no jornal The New York Times, de modo que todos a conheam e que
no possa ser falsificada) e que Alice ento possa ter certeza de que est realmente tratando
com Bob. A Figura 9.21 ilustra os passos envolvidos na criptografia de chaves pblicas
mediada por uma CA.
Tanto a International Telecommunication Union (ITU) quanto a IETF desenvolveram
padres para autoridades certificadoras. Na recomendao ITU X.509, encontramos
especificado um servio de autenticao, bem como uma sintaxe prpria para os
certificados. O RFC 1422 descreve um gerenciamento de chaves baseado em CA para uso
com o e-mail seguro pela Internet. Essa recomendao compatvel com a X.509, mas vai
alm desta, pois estabelece procedimentos e convenes para uma arquitetura de
gerenciamento de chaves. A Tabela 9.1 apresenta alguns campos importantes de um
certificado.
Nome do Campo Descrio
Verso Nmero da verso da especificao X.509
Nmero de Srie Identificador exclusivo emitido pela CA para um certificado
Assinatura Especifica o algoritmo usado pela CA para assinar esse certificado
Identidade da CA que emitiu o certificadom no formato chamado de nome distinto (DN)
Nome do Emissor
especificado no RFC 2253
Perodo de Validade Inicio e fim do perodo de validade de um certificado
Nome do Sujeito Identidade da entidade cuja chave pblica est associada a esse certificado, em formato DN
A chave pblica do sujeito, bem como uma indicao do algoritmo de chave pblica (e
Chave Pblica do Sujeito
parmetros do algoritmo) a ser usado com essa chave
Tabela 9.1 Campos selecionados de um certificado de chave pblica X.509 e RFC 1422.

Com o crescimento do comrcio eletrnico e a conseqente necessidade de garantir a


segurana das transaes, tem havido um interesse crescente em autoridades certificadoras.

240
Apostila de Fundamentos de Redes de Computadores Prof: Ricardo Quinto

Dentre as empresas que fornecem servios de CA destacam-se a Cybertrust, a Verisign e a


Netscape.
9.6 E-mail seguro
Nas sees anteriores, examinamos as questes fundamentais da segurana na rede,
incluindo a criptografia de chaves simtricas e a de chaves pblicas, a autenticao, a
distribuio de chaves, a integridade de mensagens e as assinaturas digitais. Vamos agora
examinar como essas ferramentas esto sendo usadas para fornecer segurana na Internet.
interessante o fato de que possvel fornecer servios de segurana em qualquer uma das quatro
camadas superiores da pilha de protocolos da Internet. Quando fornecida segurana para um
protocolo especfico de camada de aplicao, a aplicao que usa o protocolo desfruta de um ou
mais servios de segurana, como sigilo, autenticao ou integridade. Quando a segurana
fornecida para um protocolo de camada de transporte, todas as aplicaes que usam o protocolo
desfrutam dos servios de segurana do protocolo de transporte. Quando a segurana
fornecida na camada de rede, na base de host a host, todos os segmentos de camada de
transporte (e, por conseguinte, todos os dados de camada de aplicao) desfrutam dos servios
de segurana da camada de rede. Quando a segurana fornecida com base no enlace, todos os
dados de todos os quadros que esto trafegando pelo enlace recebem os servios de segurana
do enlace.
Nesta e nas duas sees seguintes, veremos como as ferramentas de segurana esto sendo
usadas nas camadas de aplicao, transporte e rede. Comearemos pelo topo da pilha de
protocolos, discutindo a segurana no nvel da camada de aplicao. Nessa discusso, usaremos
uma aplicao especfica, ou seja, o e-mail, como estudo de caso para a segurana na camada de
aplicao. Em seguida, desceremos pela pilha de protocolos. Na Seo 9.7, examinaremos o
protocolo SSL, que fornece segurana ao TCP na camada de transporte. Na Seo 9.8,
consideraremos o IPsec, que fornece segurana camada de rede.
bem possvel que voc esteja pensando por que a funcionalidade de segurana da
Internet est sendo fornecida em mais de uma camada. No seria suficiente simplesmente
fornecer funcionalidade de segurana na camada de rede e esquecer o assunto? Essa pergunta
pode ser respondida de dois modos. Em primeiro lugar, embora exista na camada de rede um
cobertor de segurana com a criptografia de todos os dados dos datagramas (isto , de todos
os segmentos de camada de transporte) e com a autenticao de todos os endereos IP de
origem, isso no garante segurana no nvel do usurio. Por exemplo, um site comercial no
pode confiar na segurana da camada IP para autenticar um cliente que est comprando
mercadorias nesse site. Assim, h necessidade de uma funcionalidade de segurana nas
camadas mais altas, bem como um cobertor de segurana nas camadas mais baixas. Em
segundo lugar, geralmente mais fcil disponibilizar novos servios de Internet, incluindo
servios de segurana, nas camadas mais altas da pilha de protocolos. Enquanto aguardamos
que a segurana seja disseminada de maneira ampla na camada de rede, o que ainda levar
alguns anos para acontecer, muitos desenvolvedores de aplicao tomam a iniciativa de faz-lo
mesmo assim e introduzem a funcionalidade em suas aplicaes favoritas. Um exemplo
clssico o PGP, que fornece e-mail seguro (o PGP ser discutido mais adiante nesta seo).
Como exige apenas programas de aplicao cliente e servidor, o PGP foi uma das primeiras
tecnologias de segurana a ser usada amplamente na Internet.
9.6.1 Princpios de segurana para e-mail
Nesta seo, usaremos muitas das ferramentas apresentadas na seo anterior para
criar um projeto de alto nvel para um sistema de e-mail seguro. Criamos esse projeto de
alto nvel de maneira incremental, introduzindo, a cada estgio, novos servios de
segurana. Ao projetarmos um sistema de e-mail seguro, vamos manter em mente o

241
Apostila de Fundamentos de Redes de Computadores Prof: Ricardo Quinto

exemplo malicioso apresentado na Seo 9.1 o caso de amor entre Alice e Bob. Nesse
contexto, Alice quer enviar uma mensagem de e-mail para Bob e Trudy quer bisbilhotar a
mensagem.
Antes de avanarmos e projetarmos um sistema de e-mail seguro para Alice e Bob,
devemos considerar quais caractersticas de segurana seriam as mais desejveis para eles.
A primeira caracterstica, e a mais importante, o sigilo. Como foi discutido na Seo 9.1,
nem Alice nem Bob querem que Trudy leia a mensagem de e-mail de Alice. A segunda
caracterstica que Alice e Bob provavelmente gostariam de ver no sistema de e-mail seguro
a autenticao do remetente. Em particular, quando Bob receber a seguinte mensagem de
Alice Eu no o amo mais. Nunca mais quero v-lo. Da anteriormente sua, Alice, ele
naturalmente vai querer ter certeza de que a mensagem veio de Alice, e no de Trudy.
Outra caracterstica de segurana que os dois amantes gostariam de dispor a integridade
de mensagem, isto , a certeza de que a mensagem que Alice enviar no ser modificada no
trajeto at Bob. Por fim, o sistema de e-mail deve fornecer autenticao do receptor, isto ,
Alice quer ter certeza de que ela de fato est mandando a mensagem para Bob, e no para
outra pessoa (por exemplo, Trudy) que possa estar se passando por Bob.
Assim, vamos comear abordando a primeira preocupao de Alice e Bob, ou seja, o
sigilo. A maneira mais direta de consegui-lo Alice criptografar a mensagem por
tecnologia de chaves simtricas (como o DES) e Bob decifrar a mensagem ao receb-la.
Como discutido na Seo 9.2, se a chave simtrica for suficientemente longa e se somente
Alice e Bob possurem a chave, ento ser reduzidssima a possibilidade de algum
(incluindo Trudy) ler a mensagem. Embora essa seja uma abordagem direta, ela apresenta
a dificuldade fundamental que discutimos na Seo 9.2 difcil distribuir chaves
simtricas de modo que apenas Bob e Alice tenham cpias delas. Assim, a criptografia de
chaves pblicas (usando, por exemplo, RSA) , naturalmente, uma ferramenta alternativa.
Na abordagem de chave pblica, Bob disponibiliza publicamente sua chave pblica (por
exemplo, em um servidor de chaves pblicas ou em sua pgina Web pessoal) e Alice
criptografa a mensagem com a chave pblica de Bob, enviando a mensagem cifrada para o
endereo de e-mail de Bob. (A mensagem codificada encapsulada com cabealhos Mime
e enviada sobre SMTP comum.) Quando Bob recebe a mensagem, ele simplesmente a
decifra com sua chave privada. Supondo que Alice tenha certeza de que a chave pblica
que usou a de Bob (e de que esta suficientemente longa), ento essa abordagem um
meio excelente de fornecer o desejado sigilo. Um problema, contudo, que a criptografia
de chaves pblicas relativamente ineficiente, sobretudo para as mensagens longas.
(Mensagens de e-mail longas agora so muito comuns na Internet, devido ao crescimento
do uso de anexos, imagens, udio e vdeo.)
Para superarmos o problema da eficincia, vamos fazer uso de uma chave de sesso
(discutida na Seo 9.5). Em particular, Alice (1) escolhe uma chave simtrica, KS,
aleatoriamente, (2) criptografa sua mensagem m com a chave simtrica KS, (3) criptografa a
chave simtrica com a chave pblica de Bob, eB, (4) concatena a mensagem cifrada e a
chave simtrica cifrada de modo que formem um pacote e (5) envia o pacote ao endereo
de e-mail de Bob. Os passos esto ilustrados na Figura 9.22. (Nessa figura e nas
subseqentes, o sinal + representa a concatenao e o sinal , a desconcatenao.)
Quando Bob receber o pacote, ele vai (1) usar sua chave privada dB para obter a chave
simtrica KS e (2) utilizar a chave simtrica KS para decifrar a mensagem m.

242
Apostila de Fundamentos de Redes de Computadores Prof: Ricardo Quinto

Figura 9.22 Alice usa uma chave de sesso simtrica KS.

Agora que projetamos um sistema de e-mail seguro que fornece sigilo, vamos
desenvolver um outro sistema que fornea a autenticao do remetente e a integridade da
mensagem. Vamos supor, no momento, que Alice e Bob no estejam mais preocupados
com o sigilo (querem compartilhar seus sentimentos com todos!) e que estejam somente
preocupados com a autenticao do remetente e com a integridade da mensagem. Para
realizarmos essa tarefa, faremos uso de assinaturas digitais e resumos de mensagem, como
descrito na Seo 9.4. Especificamente, Alice (1) aplica uma funo de hash H (por
exemplo, MD5) sua mensagem m, para obter um resumo de mensagem, (2) criptografa o
resultado da funo de hash com sua chave privada dA, para criar uma assinatura digital, (3)
concatena o original (mensagem no codificada) com a assinatura para criar um pacote e
(4) envia o pacote ao endereo de e-mail de Bob. Quando Bob recebe o pacote, ele (1)
aplica a chave pblica de Alice, eA, ao resumo de mensagem assinado e (2) compara o
resultado dessa operao com o prprio hash H da mensagem. Os passos so ilustrados na
Figura 7.25. Como discutimos na Seo 9.5, se os dois resultados forem os mesmos, Bob
poder estar certo de que a mensagem veio de Alice e no foi alterada.

Figura 9.23 Uso de funes de hash e assinaturas digitais.

Vamos considerar agora o projeto de um sistema de e-mail que fornea sigilo,


autenticao do remetente e integridade de mensagem. Isso pode ser feito pela combinao
dos procedimentos da Figura 9.22 e Figura 9.23. Primeiramente, Alice cria um pacote
preliminar, exatamente como mostra a Figura 9.23, constitudo de sua mensagem original
junto com um hash da mensagem assinado digitalmente. Em seguida, ela trata esse pacote
preliminar como uma mensagem em si e envia essa nova mensagem seguindo os passos do
remetente mostrados na Figura 9.22, criando um novo pacote que enviado a Bob. Os
passos dados por Alice so mostrados na Figura 9.24. Quando Bob recebe o pacote, ele
aplica primeiramente seu lado da Figura 9.22 e depois seu lado da Figura 9.23. Deve ficar
claro que esse projeto atinge o objetivo de fornecer sigilo, autenticao do remetente e
integridade de mensagem. Note que nesse esquema Alice aplica a criptografia de chaves

243
Apostila de Fundamentos de Redes de Computadores Prof: Ricardo Quinto

pblicas duas vezes: uma vez com sua chave privada e uma vez com a chave pblica de
Bob. De maneira semelhante, Bob aplica a criptografia de chave pblica duas vezes uma
vez com sua chave privada e uma vez com a chave pblica de Alice.
O projeto de e-mail seguro ilustrado na Figura 9.24 provavelmente fornece segurana
satisfatria para os usurios de e-mail na maioria das ocasies. Mas ainda resta uma
questo importante a ser abordada. O projeto da Figura 9.24 requer que Alice obtenha a
chave pblica de Bob e que Bob obtenha a chave pblica de Alice. A distribuio dessas
chaves um problema incomum. Por exemplo, Trudy poderia se disfarar de Bob e dar a
Alice sua chave, dizendo que a chave pblica de Bob. Como aprendemos na Seo 9.5,
uma abordagem popular para distribuir chaves pblicas com segurana certific-las.

Figura 9.24 Alice usa vrias tcnicas para enviar uma mensagem.

9.6.2 PGP (privacidade razovel)


Projetado originalmente por Phil Zimmermann em 1991, o PGP (Pretty Good
Privacy privacidade razovel) um esquema de criptografia para e-mail que se tornou um
padro de fato. O site do PGP acessado mais de um milho de vezes por ms por usurios
de 166 pases. Verses do PGP esto disponveis em domnio pblico; por exemplo, voc
pode encontrar o software PGP para sua plataforma favorita, bem como grande quantidade
de material de leitura interessante, na home page internacional do PGP. O PGP tambm
pode ser adquirido no comrcio. Ele pode ser encontrado ainda como elemento adicional
para muitos agentes de usurio de e-mail, incluindo o Exchange e o Outlook da Microsoft e
o Eudora da Qualcomm.
O projeto do PGP em essncia idntico ao projeto apresentado na Figura 9.24.
Dependendo da verso, o software do PGP usa MD5 ou SHA para processar o resumo de
mensagem; Cast, DES triplo ou Idea para criptografar chaves simtricas, e RSA para
criptografar chaves pblicas. Alm disso, o PGP fornece compresso de dados.
Quando o PGP instalado, o software cria um par de chaves pblicas para o usurio.
A chave pblica pode ento ser colocada no site do usurio ou em um servidor de chaves
pblicas. A chave privada protegida pelo uso de uma senha. A senha tem de ser
informada todas as vezes que o usurio acessa a chave privada. O PGP oferece ao usurio a
opo de assinar digitalmente a mensagem, criptografar a mensagem ou, ainda, ambas as
opes: assinar digitalmente e criptografar a mensagem. A Figura 9.25 mostra uma
mensagem PGP assinada. Essa mensagem aparece aps o cabealho Mime. Os dados
codificados da mensagem correspondem a dA(H(m)), ou seja, ao resumo de mensagem
assinado digitalmente. Como discutimos antes, para que Bob verifique a integridade da
mensagem, ele precisa ter acesso chave pblica de Alice.

244
Apostila de Fundamentos de Redes de Computadores Prof: Ricardo Quinto

- - - - BEGIN PGP SIGNED MESSAGE - - - - -


Hash: SHA1
Bob:
My husband is out of town tonight.
Passionately yours, Alice
- - - - - BEGIN PGP SIGNATURE - - - - -
Version: PGP for Personal Privacy 5.0
Charset: noconv
yhHJRHhGJGhgg/12EpJ+18gE4vB3mqJhFEvZP9t6n7G6m5Gw2
- - - - - END PGP SIGNATURE - - - - -
Figura 9.25 Mensagem PGP assinada.

A Figura 9.26 mostra uma mensagem PGP secreta. Essa mensagem tambm aparece
aps o cabealho Mime. claro que a mensagem em texto aberto no est includa na
mensagem de e-mail secreta. Quando um remetente (como Alice) quer no apenas o sigilo,
mas tambm a integridade, o PGP contm uma mensagem como a da Figura 9.26 dentro da
mensagem da Figura 9.25.

- - - - - BEGIN PGP MESSAGE - - - - -


Version: PGP for Personal Privacy 5.0
U2R4d+/jKmn8Bc5hgDsqAewsDfrGdszX681iKm5F6Gc4sDfcXytRfdS10juHgb
cfDssWe7/K=1KhnMikLo0+1/BvcX4t==Ujk9PbcD4Thdf2awQfgHbnmK1ok8iy
6gThlp
- - - - - END PGP MESSAGE
Figura 9.26 Mensagem PGP secreta.

O PGP tambm fornece um mecanismo para certificao de chaves pblicas, mas


esse mecanismo bem diferente daquele da autoridade certificadora mais convencional. As
chaves pblicas do PGP so certificadas por uma rede de confiabilidade. A prpria Alice
pode certificar qualquer par chave/usurio quando ela achar que esse par est correto.
Alm disso, o PGP permite que Alice declare que ela confia em outro usurio para atestar a
autenticidade de mais chaves. Alguns usurios do PGP assinam reciprocamente suas
chaves montando grupos de assinatura de chaves. Os usurios se renem fisicamente,
trocam disquetes contendo as chaves pblicas e certificam suas chaves reciprocamente,
assinando-as com suas chaves privadas. As chaves pblicas PGP tambm so distribudas
por servidores de chaves pblicas PGP, pela Internet. Quando um usurio apresenta uma
chave pblica a esse servidor, este armazena uma cpia da chave, envia uma cpia a todos
os outros servidores de chaves pblicas e serve a chave a quem quer que a solicite. Embora
os grupos de assinantes de chaves e os servidores de chaves pblicas PGP realmente
existam, o modo mais comum utilizado pelos usurios para distribuir suas chaves pblicas
, de longe, coloc-las em sua pgina Web pessoal. Evidentemente, as chaves que
aparecem nessas pginas no so certificadas por ningum, mas so fceis de acessar.
9.7 Comrcio pela Internet
Na seo anterior, consideramos a utilizao feita pela camada de aplicao (no e-mail
seguro) das vrias tecnologias de segurana que estudamos anteriormente neste captulo:
criptografia, autenticao, distribuio de chaves, integridade de mensagem e assinaturas
digitais. Nesta seo, continuaremos nossos estudos de caso dos vrios mecanismos de
segurana, descendo uma camada na pilha de protocolos e abordando as portas seguras e a
camada de transporte segura. Usaremos o comrcio pela Internet como aplicao motivadora,
uma vez que os negcios e as transaes financeiras so importantes impulsionadores da
segurana na Internet.

245
Apostila de Fundamentos de Redes de Computadores Prof: Ricardo Quinto

Chamamos de comrcio pela Internet a compra de bens pela Internet. Nesse contexto,
consideramos o termo bens em um sentido muito amplo, que engloba desde livros, CDs,
hardwares, softwares e passagens areas at aes e ttulos, servios de consultoria e assim por
diante. Durante a dcada de 90, muitos sistemas foram projetados para o comrcio pela
Internet, alguns oferecendo nveis mnimos de segurana e outros fornecendo altos nveis de
segurana, acompanhados do anonimato do cliente semelhante ao anonimato oferecido pelas
transaes comerciais pessoais comuns, feitas em dinheiro. No final da dcada de 90, no
entanto, houve uma grande mudana de cenrio, pois apenas alguns desses sistemas foram
amplamente implementados em browsers e servidores. Dois sistemas se firmaram: a SSL, que
correntemente usada na grande maioria das transaes pela Internet, e a SET, a qual se acredita
que concorrer com a SSL nos prximos anos.
O comrcio pela Internet, seja com SSL ou com SET, faz uso extensivo da infra-estrutura
de cartes de pagamento (de crdito e de dbito) que os consumidores, comerciantes e
instituies financeiras usam h muitos anos. H trs participantes importantes nessa infra-
estrutura: o cliente que est comprando um produto, o comerciante que est vendendo o produto
e o banco comercial, que autoriza a compra. Veremos, em nossa discusso a seguir, que o
comrcio pela Internet com a SSL fornece segurana para as comunicaes entre os dois
primeiros participantes (isto , entre o cliente e o comerciante), ao passo que a SET oferece
segurana para as comunicaes entre os trs participantes.
9.7.1 Comrcio pela Internet usando SSL
Vamos considerar um cenrio tpico de comrcio pela Internet. Bob est navegando
pela Web e encontra o site Alice Incorporated, que vende bens durveis. Esse site apresenta
um formulrio no qual Bob deve informar a quantidade desejada, seu endereo e o nmero
do seu carto de pagamento. Bob registra essas informaes, clica em apresentar e,
ento, aguarda o recebimento (digamos, pelo correio convencional) do bem adquirido; ele
tambm espera receber a cobrana da mercadoria na prxima fatura de seu carto de
crdito. Isso tudo parece ser muito bom, mas, se no forem tomadas medidas de
segurana como criptografia ou autenticao Bob poder ter algumas surpresas:

Um intruso pode interceptar a ordem de pagamento, obter as informaes sobre o carto


de crdito e, ento, fazer compras na conta de Bob.
O site pode apresentar o famoso logotipo da Alice Incorporated, mas, na realidade, ser
mantido por Trudy, que est se fazendo passar pela Alice Incorporated. Trudy poderia
se apossar do dinheiro de Bob e fugir. Ou ela poderia fazer compras e enviar a fatura
para a conta de Bob.

Muitas outras surpresas tambm so possveis; discutiremos algumas delas na


prxima subseo. Mas esses dois problemas apresentados so os mais srios. O comrcio
pela Internet usando SSL pode enfrentar ambos os problemas.
A SSL (secure sockets layer camada de portas de segurana), originalmente
desenvolvida pela Netscape, um protocolo projetado para fornecer criptografia de dados e
autenticao entre um cliente e um servidor Web. O protocolo comea com uma fase de
apresentao mtua que negocia um algoritmo de criptografia (por exemplo, DES ou Idea)
e chaves e autentica o servidor para o cliente. Opcionalmente, o cliente pode tambm ser
autenticado para o servidor. Uma vez completada a mtua apresentao e iniciada a
transmisso da aplicao de dados, todos os dados so criptografados usando as chaves de
sesso negociadas durante a fase de apresentao mtua. O protocolo SSL amplamente
usado no comrcio pela Internet, sendo implementado em quase todos os browsers

246