SlideShare uma empresa Scribd logo
1 de 69
Baixar para ler offline
Capítulo
Segurança de redes 8
Durante as primeiras décadas de sua existência, as re-
des de computadores foram usadas principalmente por pes-
quisadores universitários, para enviar mensagens de correio
eletrônico, e também por funcionários de empresas, para
compartilhar impressoras. Nessas condições, a segurança
nunca precisou de maiores cuidados. Porém, como milhões
de cidadãos comuns atualmente usam as redes para execu-
tar operações bancárias, fazer compras e arquivar sua devo-
lução de impostos, surge um ponto fraco atrás de outro, e a
segurança tornou-se um problema de grandes proporções.
Neste capítulo, estudaremos a segurança das redes sob vá-
rios ângulos, destacaremos muitas falhas e discutiremos di-
versos algoritmos e protocolos que as tornam mais seguras.
A segurança é um assunto abrangente e inclui inúme-
ros tipos de problemas. Em sua forma mais simples, preocu-
pa-se em impedir que pessoas mal-intencionadas leiam ou,
pior ainda, modifiquem secretamente mensagens enviadas
a outros destinatários. Outra preocupação da segurança são
as pessoas que tentam ter acesso a serviços remotos que
não estão autorizadas a usar. Ela também lida com meios
para saber se uma mensagem supostamente verdadeira é
um trote. A segurança trata de situações em que mensa-
gens legítimas são capturadas e reproduzidas, além de lidar
com pessoas que tentam negar o fato de ter enviado certas
mensagens.
A maior parte dos problemas de segurança é causada
propositalmente por pessoas mal-intencionadas, que ten-
tam obter algum benefício, chamar atenção ou prejudicar
alguém. Alguns dos invasores mais comuns estão listados
na Tabela 8.1. Fica claro por essa lista que tornar uma rede
segura envolve muito mais que apenas mantê-la livre de
erros de programação. Para tornar uma rede segura, com
frequência é necessário lidar com adversários inteligentes,
dedicados e, às vezes, muito bem subsidiados. Você tam-
bém deverá ter em mente que as medidas utilizadas para
interromper a atividade de adversários eventuais terão
pouco impacto sobre os adversários ‘mais espertos’. Os re-
gistros policiais mostram que a maioria dos ataques não é
perpetrada por estranhos que grampeiam uma linha telefô-
nica, mas por pessoas ressentidas com a organização a que
pertencem. Os sistemas de segurança devem ser projetados
tendo em vista esse fato.
Os problemas de segurança das redes podem ser divi-
didos nas seguintes áreas interligadas: sigilo, autenticação,
não repúdio e controle de integridade. O sigilo — também
chamado confidencialidade — está relacionado ao fato de
manter as informações longe de usuários não autorizados.
É isso que costuma nos vir à mente quando pensamos em
segurança de redes. Em geral, a autenticação cuida do pro-
cesso de determinar com quem você está se comunicando
antes de revelar informações sigilosas ou entrar em uma
transação comercial. O não repúdio trata de assinaturas:
como provar que seu cliente realmente fez um pedido ele-
trônico de dez milhões de unidades de um produto com
preço unitário de 89 centavos quando mais tarde ele afir-
mar que o preço era 69 centavos? Ou talvez ele afirme que
nunca efetuou nenhum pedido. Por fim, como você pode
se certificar de que uma mensagem recebida é de fato legí-
tima e não algo que um oponente mal-intencionado modi-
ficou a caminho ou inventou?
Todas essas questões (sigilo, autenticação, não repúdio
e controle de integridade) também ocorrem em sistemas
Adversário Objetivo
Estudante Divertir-se bisbilhotando as mensagens de
correio eletrônico de outras pessoas
Cracker Testar o sistema de segurança de alguém;
roubar dados
Representante
de vendas
Tentar representar toda a Europa e não
apenas Andorra
Executivo Descobrir a estratégia de marketing do
concorrente
Ex-funcionário Vingar-se por ter sido demitido
Contador Desviar dinheiro de uma empresa
Corretor de
valores
Negar uma promessa feita a um cliente
por meio de uma mensagem de correio
eletrônico
Vigarista Roubar números de cartão de crédito e
vendê-los
Espião Descobrir segredos militares ou industriais
de um inimigo
Terrorista Roubar segredos de armas bacteriológicas
Tabela 8.1  Algumas pessoas que podem causar problemas de
segurança e os motivos para fazê-lo.
08_tanen0809_cap08 BR.indd 479 4/25/11 3:07 PM
480 Redes de computadores
tradicionais, mas com algumas diferenças significativas.
O sigilo e a integridade são obtidos graças à utilização de
correspondência registrada e de bloqueio de documentos.
Hoje é mais difícil roubar o trem postal do que nos tempos
de Jesse James.
Além disso, é comum as pessoas conseguirem distin-
guir um documento original de uma fotocópia, e isso quase
sempre faz diferença para elas. Como teste, tire uma fo-
tocópia de um cheque válido. Tente descontar o cheque
original na segunda-feira. Agora tente descontar a fotocó-
pia do cheque na terça-feira. Observe a diferença no com-
portamento do caixa. Já com os cheques eletrônicos, não
há como distinguir entre o original e a cópia. Talvez leve
algum tempo até que os bancos aprendam a lidar com isso.
As pessoas autenticam outras pessoas por vários meios,
incluindo reconhecimento de rosto, voz e caligrafia. As com-
provações de assinatura são feitas por meio de papel timbra-
do, de símbolos em alto-relevo etc. Em geral, as falsificações
podem ser detectadas por especialistas em caligrafia, papel
e tinta. Nenhuma dessas opções está disponível eletronica-
mente. É claro que são necessárias outras soluções.
Antes de entrarmos nas soluções propriamente ditas,
vale a pena dedicar alguns momentos considerando a que
parte da pilha de protocolos pertence a segurança de re-
des. É provável que não exista uma parte específica. To-
das as camadas contribuem de alguma forma. Na camada
física, os ‘grampos’ podem ser anulados mantendo-se as
linhas de transmissão (ou seja, as fibras ópticas) em tubos
lacrados contendo gás inerte em alta pressão. Qualquer
tentativa de perfurar um tubo liberará o gás, reduzindo a
pressão e disparando um alarme. Alguns sistemas milita-
res utilizam essa técnica.
Na camada de enlace de dados, os pacotes de uma li-
nha ponto a ponto podem ser codificados à medida que
saem de uma máquina, e decodificados quando entram
em outro sistema. Todos os detalhes podem ser tratados
na camada de enlace de dados, com as camadas mais altas
alheias ao que está acontecendo. No entanto, essa solução
se mostra ineficiente quando os pacotes têm de atravessar
vários roteadores, pois é necessário descriptografar os paco-
tes em cada roteador, o que os torna vulneráveis a ataques
dentro do roteador. Além disso, essa estratégia permite que
algumas sessões sejam protegidas (por exemplo, aquelas
que envolvem compras on-line por cartão de crédito) e ou-
tras não. Todavia, a criptografia no nível do enlace de
dados, como esse método é chamado, pode ser facilmente
incluída em qualquer rede e com frequência é muito útil.
Na camada de rede, podem ser instalados firewalls
para manter ou descartar pacotes. A segurança do IP tam-
bém funciona nessa camada.
Na camada de transporte, é possível criptografar co-
nexões inteiras ponto a ponto, ou seja, processo a proces-
so. Para obter segurança máxima, é necessário que ela seja
ponto a ponto.
Por fim, questões como autenticação do usuário e não
repúdio só podem ser tratadas na camada de aplicação.
Tendo em vista que a segurança não se ajusta nitida-
mente a nenhuma camada, ela também não se enquadra
em nenhum capítulo deste livro. Por essa razão, merece
seu próprio capítulo.
Embora este capítulo seja longo, técnico e essencial,
isso é quase irrelevante no momento. Por exemplo, está
bem documentado o fato de que a maioria das falhas de se-
gurança em bancos se deve a funcionários incompetentes,
procedimentos de segurança negligentes, diversos bugs de
implementação que permitem a invasão remota por usuá-
rios não autorizados e os chamados ataques de engenharia
social, nos quais os clientes são enganados para revelar os
detalhes de sua conta. Todos esses problemas de segurança
acontecem com mais frequência do que a ação de crimi-
nosos inteligentes grampeando linhas telefônicas e depois
decodificando mensagens criptografadas. Se uma pessoa
puder entrar em uma agência bancária qualquer com uma
tira de extrato de caixa eletrônico que encontrou na rua,
afirmando que esqueceu sua senha e receber uma nova
senha na mesma hora (em nome das boas relações com os
clientes), nem toda criptografia do mundo evitará o abuso.
Sobre esse aspecto, o livro de Ross Anderson (2008a) é um
excelente alerta, pois documenta centenas de exemplos de
falhas de segurança em numerosos setores, quase todas
causadas por aquilo que se poderia chamar educadamente
de práticas comerciais relaxadas ou desatenção com a segu-
rança. Apesar disso, a base técnica sobre a qual o comércio
eletrônico é montado, quando todos esses outros fatores
são bem elaborados, é a criptografia.
Com exceção da segurança na camada física, quase
toda segurança se baseia em princípios criptográficos.
Por essa razão, começaremos nosso estudo da seguran-
ça examinando em detalhes a criptografia. Na Seção 8.1,
veremos alguns princípios básicos. Da Seção 8.2 até a Se-
ção 8.5, examinaremos alguns algoritmos e estruturas de
dados fundamentais usados na criptografia. Em seguida,
examinaremos em detalhes como esses conceitos podem
ser usados para alcançar a segurança em redes. Conclui-
remos com alguns conceitos breves sobre tecnologia e
sociedade.
Antes de começarmos, devemos chamar atenção para
o que não será abordado neste capítulo. Procuramos nos
concentrar em questões de redes, e não naquelas relacio-
nadas ao sistema operacional e às aplicações, embora seja
difícil traçar uma linha clara separando esses assuntos. Por
exemplo, não há nada aqui sobre autenticação do usuário
com a utilização da biometria, segurança de senhas, ata-
ques por overflow de buffers, cavalos de Troia ou trojans,
spoofing de login, inserção de código em scripts de sites,
vírus, worms e temas semelhantes. Todos esses tópicos são
abordados detalhadamente no Capítulo 9 do livro Modern
Operating Systems (Tanenbaum, 2007). O leitor interessado
08_tanen0809_cap08 BR.indd 480 4/25/11 3:07 PM
Capítulo 8   Segurança de redes 481
deve consultar esse livro para conhecer os aspectos de se-
gurança relacionados aos sistemas. Agora, vamos iniciar
nossa jornada.
8.1 Criptografia
A palavra criptografia vem de palavras gregas que sig-
nificam ‘escrita secreta’. A criptografia tem uma longa e in-
teressante história de milhares de anos. Nesta seção, vamos
esquematizar alguns destaques, que serão usados como in-
formações básicas para o que vem a seguir. Se desejar um
histórico completo da criptografia, recomendamos a leitura
do livro de Khan (1995). Para ver um tratamento completo
do estado da arte em segurança e algoritmos criptográfi-
cos, protocolos, aplicações e material relacionado, consulte
Kaufman et al. (2002). Para uma abordagem mais mate-
mática, consulte Stinson (2002). Se preferir uma aborda-
gem menos matemática, consulte Burnett e Paine (2001).
Os profissionais fazem distinção entre cifras e códigos.
Uma cifra é uma transformação de caractere por caractere
ou de bit por bit, sem levar em conta a estrutura linguística
da mensagem. Em contrapartida, um código substitui uma
palavra por outra palavra ou símbolo. Os códigos não são
mais utilizados, embora tenham uma história gloriosa. O
código mais bem-sucedido já inventado foi usado pelas for-
ças armadas dos Estados Unidos durante a Segunda Guer-
ra Mundial no Pacífico. Elas simplesmente tinham índios
navajos que se comunicavam uns com os outros usando
palavras em Navajo específicas para termos militares, como
chay-dagahi-nail-tsaidi (literalmente, matador de cágado)
para indicar uma arma antitanque. A linguagem navajo é
altamente tonal, extremamente complexa, e não tem ne-
nhuma forma escrita. Além disso, nem uma única pessoa
no Japão conhecia alguma coisa sobre ela.
Em setembro de 1945, o San Diego Union descreveu o
código da seguinte forma: “Por três anos, onde quer que
os marines aterrissassem, os japoneses recebiam uma en-
xurrada de estranhos ruídos gorgolejantes entremeados
com outros sons que lembravam o clamor de um mon-
ge tibetano e o som de uma bolsa de água quente sendo
esvaziada”. Os japoneses nunca conseguiram quebrar o
código e muitos índios navajos receberam altas honras
militares por serviço e bravura extraordinários. O fato de
os Estados Unidos terem conseguido quebrar o código ja-
ponês e os japoneses nunca terem conseguido quebrar o
código navajo desempenhou um papel crucial nas vitórias
norte-americanas no Pacífico.
8.1.1 Introdução à criptografia
Historicamente, quatro grupos de pessoas utilizaram
e contribuíram para a arte da criptografia: os militares, os
diplomatas, as pessoas que gostam de guardar memórias e
os amantes. Entre eles, os militares tiveram o papel mais
importante e definiram as bases para a tecnologia. Nas
organizações militares, as mensagens a ser criptografadas
eram entregues habitualmente a auxiliares mal remunera-
dos, que se encarregavam de criptografá-las e transmiti-las.
O grande volume de mensagens impedia que esse trabalho
fosse feito por alguns poucos especialistas.
Até o advento dos computadores, uma das principais
restrições impostas à criptografia era a habilidade do au-
xiliar de criptografia para fazer as transformações neces-
sárias, em geral com poucos equipamentos e no campo de
batalha. Outra restrição era a dificuldade de alternar os
métodos criptográficos rapidamente, pois isso exigia a re-
petição do treinamento de um grande número de pessoas.
No entanto, o perigo de um auxiliar de criptografia ser cap-
turado pelo inimigo tornou indispensável a necessidade de
alterar o método criptográfico instantaneamente, se preci-
so. Essas necessidades conflitantes fizeram surgir o modelo
da Figura 8.1.
As mensagens a ser criptografadas, conhecidas como
texto simples (ou plaintext), são transformadas por meio
de uma função parametrizada por uma chave. Em seguida,
Método de
criptografia, E
Intruso
passivo:
só escuta
Intruso ativo:
pode alterar
mensagens
Texto
simples, P
Texto
simples, P
Método de
descriptografia, D
Chave
criptográfica, K
Chave
descriptográfica, K
Texto cifrado,
C = EK(P)
Intruso
Figura 8.1  O modelo de criptografia (para uma cifra de chave simétrica).
08_tanen0809_cap08 BR.indd 481 4/25/11 3:07 PM
482 Redes de computadores
a saída do processo de criptografia, conhecida como texto
cifrado (ou ciphertext), é transmitida, quase sempre por
um mensageiro ou por rádio. Presumimos que o inimigo,
ou intruso, ouça e copie cuidadosamente o texto cifrado
completo. No entanto, ao contrário do destinatário preten-
dido, ele não conhece a chave para descriptografar o texto
e, portanto, não pode fazê-lo com muita facilidade. Às ve-
zes, o intruso pode não só escutar o que se passa no canal
de comunicação (intruso passivo) como também gravar
mensagens e reproduzi-las mais tarde, injetar suas próprias
ou modificar mensagens legítimas antes que elas cheguem
ao receptor (intruso ativo). A arte de solucionar mensagens
cifradas, conhecida como criptoanálise, e a arte de criar
mensagens cifradas (criptografia) é chamada coletivamente
criptologia.
Com frequência, será útil e prático ter uma notação
para estabelecer uma relação entre o texto simples, o texto
cifrado e as chaves. Usaremos C = EK
(P) para indicar que
a criptografia do texto simples P usando a chave K gera o
texto cifrado C. Da mesma forma, P = DK
(C) representa a
descriptografia de C para obter o texto simples outra vez.
Então, temos:
DK
(EK
(P)) = P
Essa notação sugere que E e D são simplesmente fun-
ções matemáticas, o que é verdade. A única parte compli-
cada é que ambas são funções de dois parâmetros, e escre-
vemos um desses parâmetros (a chave) como um caractere
subscrito, em vez de representá-lo como um argumento,
para distingui-lo da mensagem.
Uma regra fundamental da criptografia é que se deve
supor que o criptoanalista conhece os métodos genéricos
de criptografia e descriptografia que são utilizados. Em ou-
tras palavras, o criptoanalista conhece os detalhes de como
funcionam o método de criptografia, E, e o método de des-
criptografia D da Figura 8.1. O esforço necessário para criar,
testar e instalar um novo algoritmo toda vez que o antigo
método é (supostamente) comprometido sempre tornou
impraticável manter o algoritmo criptográfico em segredo.
Imaginar que esse algoritmo é secreto, quando não é, re-
sulta mais em prejuízo do que em benefícios.
É nesse ponto que entra a chave. A chave consiste em
uma string (relativamente) curta que seleciona uma das
muitas formas possíveis de criptografia. Ao contrário do
método genérico, que só pode ser modificado a cada perío-
do de alguns anos, a chave pode ser alterada sempre que
necessário. Portanto, nosso modelo básico é um método
genérico publicamente conhecido, parametrizado por uma
chave secreta que pode ser alterada com facilidade. A ideia
de que o criptoanalista conhece os algoritmos e que o se-
gredo reside exclusivamente nas chaves é chamada princí-
pio de Kerckhoff, em homenagem ao criptógrafo militar
flamengo Auguste Kerckhoff que primeiro o enunciou em
1883 (Kerckhoff, 1883). Desse modo, temos:
Princípio de Kerckhoff: Todos os algoritmos devem ser públi-
cos; apenas as chaves são secretas
Devemos enfatizar o caráter não sigiloso do algoritmo.
Tentar manter o algoritmo secreto, uma estratégia conhe-
cida no ramo como segurança pela obscuridade, nunca
funciona. Além disso, ao tornar o algoritmo público, o es-
pecialista em criptografia libera a consulta para inúmeros
criptólogos ansiosos por decodificar o sistema e assim pu-
blicar artigos demonstrando suas habilidades. Caso muitos
especialistas tenham tentado decodificá-lo durante cinco
anos após sua publicação e nenhum tenha conseguido, isso
significa que o algoritmo é provavelmente sólido.
Na verdade, o sigilo está na chave, e seu tamanho é
uma questão muito importante do projeto. Considere uma
fechadura de combinação simples. Segundo o princípio
geral, você insere dígitos em sequência. Todo mundo sabe
disso, mas a chave é secreta. Uma chave com um tamanho
de dois dígitos significa que existem cem possibilidades.
Uma de três dígitos significa mil possibilidades e uma de
seis dígitos significa um milhão de possibilidades. Quanto
maior for a chave, mais alto será o fator de trabalho com
que o criptoanalista terá de lidar. O fator de trabalho para
decodificar o sistema por meio de uma exaustiva pesquisa
no espaço da chave é exponencial em relação a seu tama-
nho. O sigilo é decorrente da presença de um algoritmo
forte (mas público) e de uma chave longa. Para impedir
que seu irmãozinho leia suas mensagens de correio eletrô-
nico, serão necessárias chaves de 64 bits. Para uso comer-
cial de rotina, devem ser usados pelo menos 128 bits. Para
manter o governo de outros países à distância, são necessá-
rias chaves de pelo menos 256 bits, de preferência maiores.
Do ponto de vista do criptoanalista, o problema da
criptoanálise apresenta três variações principais. Quando
tem determinado volume de texto cifrado mas nenhum
texto simples, o analista é confrontado com o problema
do texto cifrado disponível. Os criptogramas da seção de
palavras cruzadas do jornal são um exemplo desse tipo de
problema. Quando há uma correspondência entre o texto
cifrado e o texto simples, o problema passa a ser chamado
de texto simples conhecido. Por fim, quando o cripto-
analista tem a possibilidade de codificar trechos do texto
simples escolhidos por ele mesmo, temos o problema do
texto simples escolhido. Os criptogramas dos jornais po-
deriam ser decodificados de forma trivial se o criptoanalista
tivesse a permissão de fazer perguntas tais como: qual é a
criptografia de ABCDEFGHIJKL?
Com frequência, os novatos na área de criptografia
pressupõem que, se uma cifra puder resistir a um ataque
do texto cifrado disponível, isso significa que ela é segura.
Essa suposição é muito ingênua. Em muitos casos, o crip-
toanalista pode fazer uma estimativa com base em trechos
do texto simples. Por exemplo, a primeira mensagem que
muitos sistemas de tempo compartilhado emitem quando
você os chama é ‘login:’. Equipado com alguns pares de
08_tanen0809_cap08 BR.indd 482 4/25/11 3:07 PM
Capítulo 8   Segurança de redes 483
texto simples/texto cifrado, o trabalho do criptoanalista se
torna muito mais fácil. Para ter segurança, o autor da crip-
tografia deve ser conservador e se certificar de que o siste-
ma seja inviolável, mesmo que seu oponente seja capaz de
criptografar o texto simples escolhido.
Historicamente, os métodos de criptografia têm sido
divididos em duas categorias: as cifras de substituição e as
cifras de transposição. Em seguida, trataremos de cada uma
dessas técnicas como informações básicas para a criptogra-
fia moderna.
8.1.2 Cifras de substituição
Em uma cifra de substituição, cada letra ou grupo
de letras é substituído por outra letra ou grupo de letras,
de modo a criar um ‘disfarce’. Uma das cifras mais antigas
é a cifra de César, atribuída a Julio César. Nesse método,
a se torna D, b se torna E, c se torna F,... e z se torna C.
Por exemplo, ataque passaria a ser DWDTXH. Em nossos
exemplos, o texto simples é apresentado em minúsculas e
o texto cifrado em maiúsculas.
Uma ligeira generalização da cifra de César permite
que o alfabeto do texto cifrado seja deslocado k letras, em
vez de três. Nesse caso, k passa a ser uma chave para o mé-
todo genérico dos alfabetos deslocados em forma circular.
A cifra de César pode ter enganado Pompeu, mas nunca
mais enganou ninguém.
O próximo aprimoramento é fazer com que cada um
dos símbolos do texto simples, digamos, as 26 letras, seja
mapeado para alguma outra letra. Por exemplo
texto simples:
a b c d e f g h i
j k l m n o p q r
s t u v w x y z
texto cifrado:
Q W E R T Y U I O
P A S D F G H J K
L Z X C V B N M
Esse sistema geral é chamado cifra de substituição
monoalfabética, sendo a chave a string de 26 letras cor-
respondente ao alfabeto completo. Para a chave anterior,
o texto simples ataque seria transformado no texto cifrado
QZQJXT.
À primeira vista, talvez esse sistema pareça seguro, pois,
apesar de conhecer o sistema genérico (substituição de letra
por letra), o criptoanalista não sabe qual das 26! ≈ 4 × 1026
chaves possíveis está em uso. Ao contrário do que acontece
com a cifra de César, experimentar todas elas não é uma es-
tratégia muito promissora. Mesmo a 1 ns por solução, um
milhão de chips de computador em paralelo demandariam
10 mil anos para que todas as chaves fossem experimentadas.
Todavia, com um volume de texto cifrado surpreen-
dentemente pequeno, a cifra pode ser descoberta com fa-
cilidade. A estratégia básica se beneficia das propriedades
estatísticas dos idiomas. Por exemplo, em inglês e é a letra
mais comum, seguida de t, o, a, n, i etc. As combinações
de duas letras, ou digramas, mais comuns são th, in, er,
re e an. As combinações de três letras, ou trigramas, mais
comuns são the, ing, and e ion.
Um criptoanalista que tente decodificar uma cifra mo-
noalfabética começaria contando as frequências relativas
de todas as letras do texto cifrado. Depois disso, por tenta-
tivas, ele atribuiria e à letra mais comum e t à próxima letra
mais comum. Em seguida, verificaria os trigramas para en-
contrar um no formato tXe, o que poderia sugerir que X é
h. Da mesma forma, se o padrão thYt ocorrer com frequên-
cia, provavelmente isso significará que Y representa a. Com
essas informações, o criptoanalista poderá procurar por um
trigrama com o formato aZW que ocorra com frequência
(muito provavelmente and). Fazendo estimativas em rela-
ção a digramas, trigramas e letras mais comuns, e conhe-
cendo os prováveis padrões de vogais e consoantes, o crip-
toanalista criaria um texto simples através de tentativas,
letra por letra.
Outra estratégia é adivinhar uma palavra ou frase pro-
vável. Por exemplo, considere o seguinte texto cifrado de
uma empresa de contabilidade (montado em grupos de
cinco caracteres):
CTBMN BYCTC BTJDS QXBNS GSTJC BTSWX CTQTZ CQVUJ
QJSGS TJQZZ MNQJS VLNSX VSZJU JDSTS JQUUS JUBXJ
DSKSU JSNTK BGAQJ ZBGYQ TLCTZ BNYBN QJSW
Nos Estados Unidos, uma palavra muito provável em
uma mensagem de uma empresa de contabilidade é finan-
cial. Com base em nosso conhecimento de que financial tem
um caractere repetido (i), com quatro outras letras entre
suas ocorrências, procuramos letras repetidas no texto ci-
frado com esse espaço entre elas. Encontramos 12 casos
como esse nas posições 6, 15, 27, 31, 42, 48, 56, 66, 70, 71,
76 e 82. No entanto, apenas dois deles, 31 e 42, têm a letra
seguinte (que corresponde a n no texto simples) repetida
na localização adequada. Dessas duas, apenas 31 também
tem a letra a corretamente posicionada; portanto, sabemos
que financial começa na posição 30. Desse ponto em diante,
fica fácil deduzir a chave utilizando a estatística de frequência
para o texto em inglês e procurando palavras quase com-
pletas para terminar.
8.1.3 Cifras de transposição
As cifras de substituição preservam a ordem dos sím-
bolos no texto simples, mas os disfarçam. Por outro lado,
as cifras de transposição reordenam as letras, mas não
as disfarçam. A Figura 8.2 mostra uma cifra de transposi-
ção muito comum, a de colunas. A cifra se baseia em uma
chave que é uma palavra ou frase que não contém letras
repetidas. Nesse exemplo, a chave é MEGABUCK. O obje-
tivo da chave é numerar as colunas de modo que a coluna
1 fique abaixo da letra da chave mais próxima do início do
08_tanen0809_cap08 BR.indd 483 4/25/11 3:07 PM
484 Redes de computadores
alfabeto e assim por diante. O texto simples é escrito hori-
zontalmente, em linhas. O texto cifrado é lido em colunas,
a partir da coluna cuja letra da chave seja a mais baixa.
Para quebrar uma cifra de transposição, o criptoanalis-
ta deve primeiro estar ciente de lidar com tal cifra. Ao exa-
minar a frequência de E, T, A, O, I, N etc., fica fácil consta-
tar se essas letras se encaixam no padrão normal para texto
simples. Se houver correspondência, isso significa que se
trata sem dúvida de uma cifra de transposição, pois nesse
tipo de cifra cada letra é representada por ela mesma, man-
tendo intacta a distribuição de frequências.
A próxima etapa é fazer uma estimativa do número de
colunas. Em muitos casos, uma palavra ou frase provável
pode ser deduzida a partir do contexto da mensagem. Por
exemplo, suponha que nosso criptoanalista tenha suspei-
tado de que a frase em texto simples milliondollars ocorre
em algum lugar na mensagem. Observe que os digramas
MO, IL, LL, LA, IR e OS ocorrem no texto cifrado como
um resultado do desdobramento dessa frase. No texto ci-
frado, a letra O vem depois da letra M (ou seja, elas são
verticalmente adjacentes na coluna 4), pois estão separadas
na provável frase por uma distância igual ao tamanho da
chave. Se tivesse sido usada uma chave de tamanho sete,
teriam surgido os digramas MD, IO, LL, LL, IA, OR e NS.
Na verdade, para cada tamanho de chave, é produzido um
conjunto de digramas diferente no texto cifrado. Ao tentar
encontrar diferentes possibilidades, muitas vezes o criptoa­
nalista é capaz de determinar com facilidade o tamanho da
chave.
A última etapa é ordenar as colunas. Quando o núme-
ro de colunas k é pequeno, cada um dos k(k - 1) pares de
colunas pode ser examinado para que se constate se suas
frequências de digramas correspondem às do texto simples
em inglês. O par que tiver a melhor correspondência será
considerado na posição correta. Em seguida, cada uma das
colunas restantes é experimentada como sucessora desse
par. A coluna cujas frequências de digramas e trigramas
proporcionem a melhor correspondência será a título ex-
perimental considerada correta. A próxima coluna é en-
contrada da mesma maneira. O processo inteiro continua
até ser encontrada uma ordenação potencial. O mais pro-
vável é que o texto simples seja reconhecido nesse ponto
(por exemplo, se ocorrer milloin, ficará claro qual é o erro).
Algumas cifras de transposição aceitam um bloco de
tamanho fixo como entrada e produzem um bloco de ta-
manho fixo como saída. Essas cifras podem ser comple-
tamente descritas fornecendo-se uma lista que informe a
ordem na qual os caracteres devem sair. Por exemplo, a
cifra da Figura 8.2 pode ser vista como uma cifra de blocos
de 64 caracteres. Sua saída é 4, 12, 20, 28, 36, 44, 52, 60,
5, 13,..., 62. Em outras palavras, o quarto caractere de en-
trada, a, é o primeiro a sair, seguido pelo décimo segundo,
f, e assim por diante.
8.1.4 Chave única
Na verdade, é fácil criar uma cifra inviolável; a técnica
é conhecida há décadas. Primeiro, escolha como chave uma
sequência de bits aleatórios. Em seguida, converta o texto
simples em uma sequência de bits, utilizando por exemplo
sua representação ASCII. Por fim, calcule o OU exclusivo
(XOR) dessas duas sequências. O texto cifrado resultante
não pode ser violado porque, em uma amostra grande o
suficiente de texto cifrado, cada letra ocorrerá com a mes-
ma frequência, bem como o digrama, o trigrama e assim
por diante. Esse método, conhecido como chave única, é
imune a todos os ataques presentes e futuros, não importa
quanta capacidade computacional tenha o intruso. A razão
deriva da teoria da informação: simplesmente não existe ne-
nhuma informação na mensagem, todos os textos simples
possíveis com o tamanho dado são igualmente prováveis.
Um exemplo de como as chaves únicas são usadas é dado
na Figura 8.3. Primeiro, a mensagem 1, ‘I love you’, é con-
vertida em ASCII de 7 bits. Em seguida, uma chave única,
chamada chave 1, é escolhida e sujeita à operação XOR com
a mensagem para obter o texto cifrado. Um criptoanalista po-
deria experimentar todas as chaves únicas possíveis para ver
que texto resultou para cada uma. Por exemplo, a chave úni-
ca listada como chave 2 na figura poderia ser experimentada,
resultando no texto simples 2, ‘Elvis lives’ [Elvis não morreu],
que pode ser ou não plausível (um assunto que está além do
escopo deste livro). De fato, para cada texto simples ASCII
de 11 caracteres, existe uma chave única que o gera. É isso
que queremos dizer quando mencionamos que não existe ne-
nhuma informação no texto cifrado: é possível obter qualquer
mensagem com o tamanho correto a partir dele.
As chaves únicas são ótimas na teoria, mas têm várias
desvantagens na prática. Para começar, não pode ser me-
morizada; então, tanto o remetente quanto o destinatário
devem levar uma cópia escrita com eles. Se qualquer um dos
dois estiver sujeito à possibilidade de captura, as chaves es-
critas sem dúvida serão inconvenientes. Além disso, a quan-
tidade total de dados que podem ser transmitidos é limitada
pelo tamanho da chave disponível. Se o espião tiver muita
sorte e descobrir uma grande quantidade de dados, talvez
M E G A B U C K
7 4 5 1 2 8 3 6
p l e a s e t r Texto simples
pleasetransferonemilliondollarsto
myswissbankaccountsixtwotwo
Texto cifrado
AFLLSKSOSELAWAIATOOSSCTCLNMOMANT
ESILYNTWRNNTSOWDPAEDOBUOERIRICXB
a n s f e r o n
e m i l l i o n
d o l l a r s t
o m y s w i s s
b a n k a c c o
u n t s i x t w
o t w o a b c d
Figura 8.2  Uma cifra de transposição.
08_tanen0809_cap08 BR.indd 484 4/25/11 3:07 PM
Capítulo 8   Segurança de redes 485
seja incapaz de transmiti-los de volta para a matriz, porque
a chave terá sido consumida. Outro problema é a sensibili-
dade do método para caracteres perdidos ou inseridos. Se o
transmissor e o receptor ficarem fora de sincronismo, todos
os dados a partir desse momento se parecerão com lixo.
Com o advento dos computadores, a chave única se
tornou potencialmente prática para algumas aplicações. A
origem da chave poderia ser um DVD especial contendo
vários gigabytes de informações que, se fossem transpor-
tadas em uma caixa de filmes em DVD e tivessem no iní-
cio alguns minutos de vídeo, nem sequer seriam suspeitas.
É claro que, nas redes de gigabits, ter de inserir um novo
DVD a cada 30 segundos seria algo entediante. Além disso,
os DVDs devem ser transportados em mãos, do transmissor
para o receptor, antes de ser possível enviar qualquer men-
sagem, o que reduz bastante sua utilidade prática.
Criptografia quântica
É interessante, mas talvez haja uma solução para o
problema de como transmitir a chave única pela rede, e ela
vem de uma fonte muito improvável: a mecânica quântica.
Essa área ainda é experimental, mas os testes iniciais são
promissores. Se eles puderem ser aperfeiçoados e se tor-
narem eficientes, quase toda a criptografia será realizada
por fim com a utilização de chaves únicas, pois é provável
que elas sejam seguras. A seguir, explicaremos em linhas
gerais como funciona esse método, denominado cripto-
grafia quântica. Em particular, descreveremos um proto-
colo chamado BB84 para indicar seus autores e o ano da
publicação (Bennet e Brassard, 1984).
Uma usuária chamada Alice quer estabelecer uma cha-
ve única com um segundo usuário, Bob. Alice e Bob são
chamados protagonistas, os personagens principais de
nossa história. Por exemplo, Bob é um gerente de banco
com quem Alice gostaria de realizar negócios. Os nomes
‘Alice’ e ‘Bob’ foram usados como protagonistas em prati-
camente todos os ensaios e livros sobre criptografia desde
que Ron Rivest os apresentou há muitos anos (Rivest et al.,
1978). Os criptógrafos amam a tradição. Se fôssemos usar
‘Andy’ e ‘Barbara’ como protagonistas, ninguém acredita-
ria em nada do que fosse explicado neste capítulo. Então,
que seja!
Se Alice e Bob pudessem estabelecer uma chave úni-
ca, eles teriam a possibilidade de empregá-la para se co-
municar com segurança. A pergunta é: como eles podem
estabelecê-la sem antes trocar DVDs? Podemos supor que
Alice e Bob estejam em extremidades opostas de um cabo
de fibra óptica pelo qual possam enviar e receber pulsos
de luz. Porém, uma intrusa atrevida chamada Trudy pode
cortar a fibra e criar um grampo ativo. Trudy pode ler todos
os bits em ambos os sentidos. Ela também pode enviar fal-
sas mensagens nos dois sentidos. A situação pode parecer
desesperadora para Alice e Bob, mas a criptografia quântica
pode trazer uma nova luz sobre o assunto.
A criptografia quântica se baseia no fato de que a luz
se propaga em pequenos pacotes chamados fótons, que
apresentam algumas propriedades peculiares. Além disso,
a luz pode ser polarizada ao passar por um filtro de pola-
rização, um fato bem conhecido pelos usuários de óculos
de sol e pelos fotógrafos. Se um feixe de luz (isto é, um
fluxo de fótons) passar por um filtro de polarização, todos
os fótons que emergirem dele serão polarizados na direção
do eixo do filtro (por exemplo, vertical). Se o feixe passar
agora por um segundo filtro de polarização, a intensidade
da luz que emergirá do segundo filtro será proporcional ao
quadrado do cosseno do ângulo entre os eixos. Se os dois
eixos forem perpendiculares, nenhum fóton passará pelo
filtro. A orientação absoluta dos dois filtros não importa; só
interessa o ângulo entre seus eixos.
Para gerar uma chave única, Alice precisa de dois
conjuntos de filtros de polarização. O primeiro conjunto
consiste em um filtro vertical e um filtro horizontal. Essa
escolha é chamada base retilínea. Uma base é apenas um
sistema de coordenadas. O segundo conjunto de filtros é
idêntico, exceto por estar deslocado 45 graus, de forma
que um filtro abrange desde o canto inferior esquerdo até
o canto superior direito, e o outro abrange desde o canto
superior esquerdo até o canto inferior direito. Essa escolha
é chamada base diagonal. Desse modo, Alice tem duas ba-
ses, que ela pode inserir rapidamente em seu feixe, à von-
tade. Na realidade, ela não tem quatro filtros separados,
mas um cristal, cuja polarização pode ser trocada eletrica-
mente para qualquer das quatro direções permitidas, em
alta velocidade. Bob tem o mesmo equipamento de Alice.
Mensagem 1: 1001001 0100000 1101100 1101111 1110110 1100101 0100000 1111001 1101111 1110101 0101110
Chave 1: 1010010 1001011 1110010 1010101 1010010 1100011 0001011 0101010 1010111 1100110 0101011
Texto cifrado: 0011011 1101011 0011110 0111010 0100100 0000110 0101011 1010011 0111000 0010011 0000101
Chave 2: 1011110 0000111 1101000 1010011 1010111 0100110 1000111 0111010 1001110 1110110 1110110
Texto simples 2: 1000101 1101100 1110110 1101001 1110011 0100000 1101100 1101001 1110110 1100101 1110011
Figura 8.3  O uso de uma chave única para criptografia e a possibilidade de conseguir qualquer texto simples que seja possível a partir
do texto cifrado pela utilização de alguma outra chave.
08_tanen0809_cap08 BR.indd 485 4/25/11 3:07 PM
486 Redes de computadores
O fato de Alice e Bob terem cada um duas bases disponíveis
é essencial para a criptografia quântica.
Para cada base, Alice atribui agora uma direção como 0
e a outra como 1. No exemplo apresentado a seguir, vamos
supor que ela escolha a direção vertical como 0 e a hori-
zontal como 1. Independentemente, ela também escolhe do
canto inferior esquerdo até o canto superior direito como
0, e do canto superior esquerdo até o canto inferior direito
como 1. Alice envia essas escolhas a Bob como texto simples.
Agora, Alice escolhe uma chave única, baseada, por
exemplo, em um gerador de números aleatórios (um as-
sunto por si só bastante complexo). Ela o transfere bit por
bit para Bob, escolhendo uma de suas bases ao acaso para
cada bit. Para enviar um bit, sua pistola de fótons emite
um fóton polarizado de maneira apropriada, conforme a
base que ela está usando para esse bit. Por exemplo, ela
poderia escolher as bases diagonal, retilínea, retilínea, dia-
gonal, retilínea etc. Para enviar sua chave única igual a
1001110010100110 com essas bases, ela enviaria os fótons
mostrados na Figura 8.4(a). Dadas a chave única e a sequ-
ência de bases, a polarização a ser usada para cada bit é
determinada de forma exclusiva. Bits enviados um fóton
por vez são chamados qubits (bits quânticos).
Bob não sabe que base usar, e assim escolhe uma ao
acaso para cada fóton que chega e simplesmente a utiliza,
como mostra a Figura 8.4(b). Se escolher a base correta, ele
receberá o bit correto. Se escolher a base incorreta, receberá
um bit aleatório porque, se um fóton acessar um filtro pola-
rizado a 45 graus em relação a sua própria polarização, ele
saltará ao acaso para a polarização do filtro ou para uma po-
larização perpendicular à do filtro, com igual probabilidade.
Essa propriedade dos fótons é fundamental para a mecânica
quântica. Desse modo, alguns bits estão corretos e alguns
são aleatórios, mas Bob não consegue distingui-los. Os re-
sultados de Bob estão representados na Figura 8.4(c).
De que maneira Bob pode descobrir quais são as bases
corretas e quais são as erradas entre as que recebeu? Ele
apenas diz a Alice que base usou para cada bit em texto
simples, e ela lhe diz quais são as bases corretas e quais são
as erradas em texto simples, como mostra a Figura 8.4(d).
A partir dessas informações, ambos podem construir uma
sequência de bits com os palpites corretos, como mostra a
Figura 8.4(e). Em média, essa sequência de bits terá metade
do comprimento da sequência de bits original, mas, como
ambas as partes o conhecem, elas poderão usá-lo como uma
chave única. Tudo o que Alice tem a fazer é transmitir
uma sequência de bits um pouco maior que o dobro do ta-
manho desejado, para que ela e Bob tenham uma chave
única com o comprimento apropriado. Problema resolvido.
Mas espere um minuto. Esquecemos de Trudy. Vamos
supor que ela esteja curiosa para saber o que Alice tem a
dizer e corte o cabo de fibra, inserindo seus próprios detector
e transmissor. Infelizmente para Trudy, ela também não sabe
que base usar para cada fóton. O melhor que ela pode fazer é
escolher uma base ao acaso para cada um dos fótons, como
fez Bob. Um exemplo de suas escolhas é mostrado na Figura
8.4(f). Quando mais tarde Bob informar (em texto simples)
que bases usou e Alice disser a ele (em texto simples) quais
delas estão corretas, Trudy saberá quando acertou e quando
errou. Segundo a Figura 8.4, ela acertou nos bits 0, 1, 2, 3,
Chave
de Trudy
(g) x 0 x 1 x x x ? 1 x ? ? 0 x ?
0 1 0 1 1 0 0 1
x
Não Sim Não Sim Não Não Não Sim Sim Não Sim Sim Sim Não Sim Não
Número
do bit
Dados
Bases
de Trudy
(f)
Chave
única
(e)
Base
correta?
(d)
O que
Bob
recebe
(c)
Bases
de Bob
(b)
O que
Alice
envia
(a)
1 0 0 1 1 1 0 0 1 0 1 0 0 1 1 0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Figura 8.4  Um exemplo de criptografia quântica.
08_tanen0809_cap08 BR.indd 486 4/25/11 3:07 PM
Capítulo 8   Segurança de redes 487
4, 6, 8, 12 e 13. No entanto, ela sabe pela resposta de Alice
na Figura 8.4(d) que só os bits 1, 3, 7, 8, 10, 11, 12 e 14
fazem parte da chave única. Em quatro desses bits (1, 3, 8
e 12), ela acertou seu palpite e capturou o bit correto. Nos
outros quatro (7, 10, 11 e 14), ela errou e não sabe qual bit
foi transmitido. Desse modo, Bob sabe que a chave única
começa com 01011001, a partir da Figura 8.4(e), mas tudo
que Trudy tem é 01?1??0?, a partir da Figura 8.4(g).
É claro que Alice e Bob estão cientes de que Trudy talvez
tenha captado parte de sua chave única, e assim gostariam
de reduzir as informações que ela tem. Eles podem fazer
isso executando uma transformação na chave. Por exem-
plo, poderiam dividir a chave única em blocos de 1.024 bits
e elevar ao quadrado cada uma para formar um número de
2.048 bits, usando a concatenação desses números de 2.048
bits como a chave única. Com seu conhecimento parcial da
sequência de bits transmitida, Trudy não tem como gerar
seu quadrado e, portanto, não tem nada. A transformação
da chave única original em uma chave diferente que redu-
za o conhecimento de Trudy é chamada amplificação de
privacidade. Na prática, são usadas transformações com-
plexas em que todo bit de entrada depende de cada bit de
saída em vez do quadrado do bit de entrada.
Pobre Trudy. Ela não apenas não tem nenhuma ideia de
qual é a chave única, como também sua presença não é mais
secreta. Afinal, ela tem de retransmitir cada bit recebido para
Bob, a fim de levá-lo a pensar que está se comunicando com
Alice. Porém, o melhor que pode fazer é transmitir o qubit
que recebeu usando a mesma polarização que empregou
para recebê-lo, e durante cerca de metade do tempo ela esta-
rá errada, provocando muitos erros na chave única de Bob.
Quando finalmente começar a transmitir dados, Alice
os codificará usando um pesado código de correção ante-
cipada de erros. Do ponto de vista de Bob, um erro de 1
bit na chave única é o mesmo que um erro de transmissão
de 1 bit. De qualquer modo, ele receberá o bit errado. Se
houver correção antecipada de erros suficiente, ele poderá
recuperar a mensagem original apesar de todos os erros,
mas poderá contar com facilidade quantos erros foram cor-
rigidos. Se esse número for muito maior que a taxa de erros
esperada do equipamento, ele saberá que Trudy grampeou
a linha e poderá tomar providências (por exemplo, infor-
mando Alice de que ela deve mudar para um canal de rá-
dio, chamar a polícia etc.). Se Trudy tivesse um meio de
clonar fótons, de forma que tivesse um para inspecionar e
um idêntico para enviar a Bob, poderia evitar a detecção,
mas no momento não se conhece nenhum modo perfeito
de clonar um fóton. No entanto, mesmo que Trudy pudes-
se fazê-lo, o valor da criptografia quântica para estabelecer
chaves únicas não seria reduzido.
Embora a criptografia quântica opere sobre distâncias
de até 60 km de fibra, o equipamento é complexo e dispen-
dioso. Ainda assim, a ideia é promissora. Para obter mais
informações sobre a criptografia quântica, consulte Mullins
(2002).
8.1.5 Dois princípios fundamentais da criptografia
Ainda estudaremos muitos sistemas criptográficos nas
próximas páginas, mas é importante entender dois princí-
pios básicos subjacentes a todos eles. Preste atenção. Você
correrá risco ao violá-los.
Redundância
O primeiro princípio é que todas as mensagens crip-
tografadas devem conter alguma redundância, ou seja, in-
formações que não são necessárias para a compreensão da
mensagem. Talvez um exemplo esclareça por que isso é ne-
cessário. Considere uma empresa de encomendas postais,
a Expresso Jabuti (EJ), com 60 mil produtos. Pensando ser
muito eficientes, os programadores da EJ decidiram que as
mensagens de encomendas devem consistir no nome do
cliente com 16 bytes, seguido por um campo de dados de
3 bytes (um para a quantidade e dois para o número do
produto). Os 3 últimos bytes devem ser criptografados por
meio de uma chave muito longa conhecida apenas pelo
cliente e pela EJ.
A princípio, essa estratégia pode parecer segura, e até
certo ponto isso acontece, porque os intrusos passivos não
podem descriptografar as mensagens. Infelizmente, há uma
falha fatal que a torna inútil. Suponha que uma funcioná-
ria recém-demitida queira punir a EJ por tê-la despedido.
Antes de sair da empresa, ela leva consigo parte da lista
de clientes e passa a noite acordada criando um programa
para gerar encomendas fictícias utilizando nomes de clien-
tes verdadeiros. Como não tem a lista das chaves, ela sim-
plesmente inclui números aleatórios nos três últimos bytes
e envia centenas de encomendas para a EJ.
Quando as mensagens chegam, o computador da EJ
utiliza o nome do cliente para localizar a chave e descripto-
grafar a mensagem. Infelizmente para a EJ, quase todas as
mensagens de 3 bytes são válidas; portanto, o computador
começa a imprimir as instruções de entrega. Apesar de pa-
recer estranho um cliente encomendar 837 conjuntos de
balanços para crianças, ou 540 caixas de areia, para o com-
putador, o cliente pode estar planejando abrir uma cadeia
de parques de diversões por franquia. Portanto, um intru-
so ativo (a ex-funcionária) pode causar muitos problemas,
mesmo que não seja capaz de entender as mensagens que
seu computador está gerando.
Esse problema pode ser resolvido por meio da inclu-
são de informações redundantes em todas as mensagens.
Por exemplo, se as mensagens de pedidos forem amplia-
das para 12 bytes, os 9 primeiros deverão ser iguais a zero;
assim, essa estratégia de ataque deixa de ser interessante,
porque a ex-funcionária não é mais capaz de gerar um lon-
go fluxo de mensagens válidas. A moral da história é que
todas as mensagens devem conter informações redundan-
tes suficientes para que os intrusos ativos sejam impedidos
de transmitir dados inválidos que possam ser interpretados
como uma mensagem válida.
08_tanen0809_cap08 BR.indd 487 4/25/11 3:07 PM
488 Redes de computadores
No entanto, a inclusão de informações redundantes
também facilita a quebra de mensagens por parte dos
criptoanalistas. Suponha que o negócio de encomenda
postal seja muito competitivo e que a principal concorren-
te da Expresso Jabuti, a Tartaruga Entregas, adoraria saber
quantas caixas de areia a EJ está vendendo. Para isso, re-
solve grampear a linha telefônica da EJ. No esquema ori-
ginal com mensagens de 3 bytes, a criptoanálise era prati-
camente impossível porque, após descobrir uma chave, o
criptoanalista não era capaz de dizer se a mensagem esta-
va correta. Afinal de contas, quase todas as mensagens são
tecnicamente válidas. Com o novo esquema de 12 bytes,
fica mais fácil para o criptoanalista distinguir uma mensa-
gem válida de uma inválida. Desse modo, temos:
Princípio criptográfico 1: as mensagens devem conter alguma
redundância
Em outras palavras, ao decifrar uma mensagem, o
destinatário deve ser capaz de saber se ela é válida, sim-
plesmente inspecionando-a e talvez executando uma com-
putação simples. Essa redundância é necessária para impe-
dir que intrusos ativos enviem lixo e enganem o receptor,
fazendo-o descriptografar o lixo e agir sobre o ‘texto sim-
ples’. No entanto, essa mesma redundância permite que os
intrusos passivos entrem no sistema com maior facilidade;
portanto, há uma zona de tensão nessa situação. Além dis-
so, a redundância nunca deverá ser criada sob a forma de n
zeros no início ou no fim de uma mensagem, pois o envio
dessas mensagens a determinados algoritmos criptográfi-
cos proporciona resultados mais previsíveis, facilitando o
trabalho do criptoanalista. Um polinômio de CRC é muito
melhor que uma sequência de valores zero, pois o receptor
pode verificá-lo facilmente, mas gerará mais trabalho para
o criptoanalista. Seria muito melhor usar um hash cripto-
gráfico, conceito que exploraremos mais adiante. Por en-
quanto, pense nele como um CRC melhor.
Voltando à criptografia quântica por um momento,
também podemos ver como a redundância desempenha
um papel importante. Devido à interceptação dos fótons
por Trudy, alguns bits na chave única de Bob estarão er-
rados. Bob precisa de alguma redundância nas mensagens
de entrada para descobrir os erros presentes. Uma forma
muito rudimentar de redundância é repetir a mensagem
duas vezes. Se as duas cópias não forem idênticas, Bob
saberá que a fibra tem muito ruído, ou que alguém está
interferindo na transmissão. É claro que enviar tudo duas
vezes é um exagero; um código de Hamming ou de Reed-
-Solomon é um modo mais eficiente de realizar a detecção
e correção de erros. Porém, deve ficar claro que alguma
redundância é necessária para distinguir uma mensagem
válida de uma mensagem inválida, em especial diante de
um intruso ativo.
Atualidade
O segundo princípio criptográfico é tomar algumas
medidas para assegurar que cada mensagem recebida pos-
sa ser confirmada como uma mensagem atual, isto é, en-
viada muito recentemente. Essa medida é necessária para
impedir que intrusos ativos reutilizem mensagens antigas.
Se tais medidas não fossem tomadas, nossa ex-funcionária
poderia interceptar a linha telefônica da EJ e ficar simples-
mente repetindo mensagens válidas já enviadas. Assim:
Princípio criptográfico 2: algum método é necessário para
anular ataques de repetição
Uma medida desse tipo seria incluir em cada mensa-
gem um registro de tempo válido apenas por, digamos, 10
segundos. Em seguida, o receptor poderia manter as men-
sagens durante 10 segundos, a fim de comparar as mensa-
gens recém-chegadas com as anteriores e filtrar duplicatas.
As mensagens transmitidas há mais de 10 segundos pode-
riam ser descartadas, pois as repetições enviadas mais de
10 segundos depois da mensagem original serão rejeitadas
por ser muito antigas. Outras medidas além dos registros de
tempo serão discutidas mais adiante.
8.2 Algoritmos de chave simétrica
Embora a criptografia moderna utilize as mesmas
ideias básicas da criptografia tradicional (transposição e
substituição), sua ênfase é diferente. Tradicionalmente, os
criptógrafos têm utilizado algoritmos simples. Hoje em dia,
acontece o inverso: o objetivo é tornar o algoritmo de crip-
tografia tão complexo e emaranhado que, mesmo que o
criptoanalista adquira enormes volumes de texto cifrado a
sua própria escolha, sem a chave ele não seja capaz de en-
tender nada do que conseguir.
A primeira classe de algoritmos de criptografia que es-
tudaremos neste capítulo é a dos algoritmos de chave si-
métrica, porque utilizam a mesma chave para codificação
e decodificação. A Figura 8.1 ilustra o uso de um algoritmo
de chave simétrica. Em particular, vamos nos concentrar
nos blocos de cifras, que obtêm um bloco de n bits de tex-
to simples como entrada e o transformam usando a chave
em um bloco de n bits de texto cifrado.
Os algoritmos criptográficos podem ser implementados
em hardware (para obter velocidade) ou em software (para
obter flexibilidade). Embora a maior parte de nosso trata-
mento esteja relacionado aos algoritmos e protocolos, que
são independentes da implementação real, algumas pala-
vras sobre a construção de hardware criptográfico podem
ser interessantes. As transposições e substituições podem
ser implementadas com circuitos elétricos simples. A Fi-
gura 8.5(a) mostra um dispositivo, conhecido como caixa
P (onde P significa permutação), usado para efetuar uma
transposição em uma entrada de 8 bits. Se os 8 bits forem
08_tanen0809_cap08 BR.indd 488 4/25/11 3:07 PM
Capítulo 8   Segurança de redes 489
designados de cima para baixo como 01234567, a saída des-
sa caixa P específica será 36071245. Com uma conexão in-
terna adequada, pode-se criar uma caixa P para executar
qualquer transposição praticamente na velocidade da luz,
pois nenhuma computação é envolvida, apenas a propaga-
ção de sinais. Esse projeto segue o princípio de Kerckhoff: o
atacante sabe que o método geral é permutar os bits. O que
ele não sabe é qual bit fica em cada posição.
As substituições são realizadas por caixas S, como mos-
tra a Figura 8.5(b). Nesse exemplo, é introduzido um texto
simples de 3 bits, e a saída é um texto cifrado de 3 bits. A
entrada de 3 bits seleciona uma das oito linhas de saída do
primeiro estágio e a define como 1; todas as outras são iguais
a 0. O segundo estágio é uma caixa P. O terceiro estágio codi-
fica a linha selecionada novamente em binário. Com a cone-
xão interna mostrada, se os oito números octais 01234567
fossem introduzidos um após o outro, a sequência de saída
seria 24506713. Em outras palavras, 0 foi substituído por 2,
1 foi substituído por 4 etc. Mais uma vez, com a conexão
apropriada da caixa P dentro da caixa S, qualquer substitui-
ção pode ser realizada. Além disso, tal dispositivo pode ser
construído em hardware e consegue alcançar grande veloci-
dade, pois os codificadores e os decodificadores têm apenas
um ou dois atrasos nas interfaces de entrada e saída (abaixo
de um nanossegundo) e o tempo de propagação pela caixa P
pode ser menor que 1 picossegundo.
A capacidade real desses elementos básicos se torna
aparente quando dispomos uma série inteira de caixas em
cascata para formar uma cifra-produto, como mostra a
Figura 8.5(c). Nesse exemplo, 12 linhas de entrada são
transpostas (isto é, permutadas) pelo primeiro estágio (P1
).
No segundo estágio, a entrada é dividida em quatro grupos
de 3 bits, sendo que cada um deles é substituído de forma
independente dos outros (S1
a S4
). Esse arranjo mostra um
método de aproximar uma caixa S maior a partir de várias
caixas S menores. Ele é útil porque caixas S menores são
práticas para a implementação pelo hardware (por exem-
plo, uma caixa S de 8 bits pode ser observada como uma
tabela de pesquisa de 256 entradas), mas caixas S grandes
se tornam difíceis de criar (por exemplo, uma caixa S de
12 bits, no mínimo, precisaria de 212
= 4.096 fios cruzados
em seu estágio intermediário). Apesar de ser menos gené-
rico, esse método ainda é poderoso. Através da inclusão de
um número de estágios suficientemente grande na cifra-
-produto, a saída pode ser transformada em uma função
excessivamente complicada da entrada.
As cifras-produto que operam sobre entradas de k bits
para produzir saídas de k bits são muito comuns. Em geral,
o valor de k varia de 64 a 256. Uma implementação de
hardware normalmente tem pelo menos 18 estágios físicos,
em vez de apenas sete, como na Figura 8.5(c). Uma imple-
mentação de software é programada como um loop com
pelo menos 8 iterações, cada uma executando substituições
semelhantes às de caixas S em sub-blocos do bloco de da-
dos de 64 bits a 256 bits, seguidas por uma permutação que
mistura as saídas das caixas S. Com frequência, existe uma
permutação especial no início e também uma no fim. Na
literatura, as repetições são chamadas rodadas.
8.2.1 DES — Data Encryption Standard
Em janeiro de 1977, o governo dos Estados Unidos
adotou uma cifra-produto desenvolvida pela IBM como
seu padrão oficial para informações não confidenciais. A
cifra, o padrão de criptografia de dados, ou DES (Data En-
cryption Standard), foi amplamente adotada pelo setor
de informática para uso em produtos de segurança. Em sua
forma original, ela já não é mais segura; no entanto, em
uma forma modificada ela ainda é útil. Agora, vamos ex-
plicar como o DES funciona.
Na Figura 8.6(a), mostramos um esboço do DES. O
texto simples é criptografado em blocos de 64 bits, produ-
zindo 64 bits de texto cifrado. O algoritmo, parametrizado
por uma chave de 56 bits, tem 19 estágios distintos. O pri-
meiro deles é uma transposição independente da chave no
texto simples de 64 bits. O último estágio é exatamente o
inverso dessa transposição. O penúltimo estágio troca os
32 bits mais à esquerda pelos 32 bits mais à direita. Os 16
estágios restantes são funcionalmente idênticos, mas são
parametrizados por diferentes funções da chave. O algo-
ritmo foi projetado para permitir que a decodificação fosse
feita com a mesma chave da codificação, uma propriedade
necessária em qualquer algoritmo de chave simétrica. As
etapas são executadas na ordem inversa.
A operação desses estágios intermediários é ilustrada na
Figura 8.6(b). Cada estágio utiliza duas entradas de 32 bits e
S1
S2
P1 P4
P3
P2
S3
S4
S5
S6
S7
S8
Cifra-produto
(c)
Caixa S
Decodificador:
3
para
8
Codificador:
8
para
3
(b)
Caixa P
(a)
S9
S10
S11
S12
Figura 8.5  Elementos básicos das cifras-produto. (a) Caixa P. (b) Caixa S. (c) Produto.
08_tanen0809_cap08 BR.indd 489 4/25/11 3:07 PM
490 Redes de computadores
produz duas saídas de 32 bits. A saída da esquerda é apenas
uma cópia da saída da direita. A saída da direita é formada
pelo resultado do OU exclusivo bit a bit aplicado à entrada da
esquerda e a uma função de entrada da direita com a chave
desse estágio, Ki
. Toda a complexidade reside nessa função.
A função consiste em quatro etapas, executadas em se-
quência. Primeiro, um número de 48 bits, E, é construído
através da expansão do Ri -1
de 32 bits, de acordo com uma
regra fixa de transposição e duplicação. Em segundo lugar,
E e Ki
são submetidos a uma operação XOR. Em seguida,
essa saída é dividida em oito grupos de 6 bits, sendo cada um
deles entregue a uma caixa S diferente. Cada uma das 64 en-
tradas possíveis para uma caixa S é mapeada em uma saída
de 4 bits. Por fim, esses 8 × 4 bits passam por uma caixa P.
Em cada uma das 16 iterações, é utilizada uma chave
diferente. Antes de se iniciar o algoritmo, é aplicada à cha-
ve uma transposição de 56 bits. Antes de cada iteração, a
chave é particionada em duas unidades de 28 bits, sendo
cada uma delas girada à esquerda um número de bits que
depende do número da iteração. Ki
é derivada dessa chave
girada, pela aplicação de mais uma transposição de 56 bits
sobre ela. Em cada rodada, um novo subconjunto de 48
bits dos 56 bits é extraído e permutado.
Uma técnica às vezes utilizada para tornar o DES mais
forte é chamada clareamento. Ela consiste em operação
XOR entre uma chave aleatória de 64 bits e cada bloco de
texto simples, antes de sua entrega ao DES, e depois em
uma operação XOR entre uma segunda chave de 64 bits e o
texto cifrado resultante, antes de sua transmissão. O clarea-
mento pode ser removido com facilidade pela execução das
operações inversas (se o receptor tiver as duas chaves de
clareamento). Como essa técnica acrescenta efetivamente
mais bits ao tamanho da chave, ela torna uma pesquisa
exaustiva do espaço de chaves muito mais demorada. Ob-
serve que a mesma chave de clareamento é utilizada para
cada bloco (isto é, só existe uma chave de clareamento).
O DES esteve envolvido em controvérsias desde seu
lançamento. Ele se baseia em uma cifra desenvolvida e pa-
tenteada pela IBM, cujo nome é Lucifer. A diferença é que
a cifra da IBM utilizava uma chave de 128 bits, em vez de
uma chave de 56 bits. Quando quis padronizar o uso de
uma cifra para informações não confidenciais, o governo
dos Estados Unidos ‘convidou’ a IBM para ‘discutir’ o pro-
blema com a NSA, o órgão do governo especializado em
decifrar códigos, que é o maior empregador de matemá-
ticos e criptólogos do mundo. A NSA é tão secreta que no
setor existe a seguinte brincadeira com seu nome:
P: O que significa NSA?
R: No Such Agency (em português: não existe tal agência).
Na verdade, NSA significa National Security Agency (Agên-
cia de Segurança Nacional).
Após essas discussões, a IBM reduziu a chave de 128
para 56 bits e decidiu manter em segredo o processo se-
(b)
(a)
Transposição inicial
Iteração 16
Li-1 f(Ri-1, Ki)
Ri-1
Li-1
Texto simples em 64 bits
Texto cifrado de 64 bits 32 bits
Li
32 bits
Ri
Iteração 2
Iteração 1
Chave
de
56
bits
Troca de 32 bits
Transposição inversa
Figura 8.6  O Data Encryption Standard. (a) Esboço geral. (b) Detalhe de uma iteração. O sinal de adição dentro do círculo significa OU
exclusivo (XOR).
08_tanen0809_cap08 BR.indd 490 4/25/11 3:08 PM
Capítulo 8   Segurança de redes 491
gundo o qual o DES foi projetado. Muita gente suspeitou
de que o tamanho da chave tinha sido reduzido para ga-
rantir que a NSA pudesse decifrar o DES, mas nenhu-
ma organização com um orçamento menor foi capaz de
fazê-lo. Supostamente, o motivo para manter o projeto
em segredo foi ocultar uma porta dos fundos que pu-
desse facilitar ainda mais a decifração do DES por parte
da NSA. Quando um funcionário da NSA disse discreta-
mente para o IEEE (Institute of Electrical and Electronic
Engineers) cancelar uma conferência sobre criptografia,
as pessoas ficaram ainda mais embaraçadas com a situa-
ção. A NSA negou tudo.
Em 1977, dois pesquisadores de criptografia de Stan-
ford, Diffie e Hellman (1977), projetaram uma máquina
para decifrar o DES e estimaram que ela poderia ser mon-
tada por um custo de 20 milhões de dólares. Com base em
um pequeno trecho de texto simples e no texto cifrado
correspondente, tal máquina poderia descobrir a chave
através de uma pesquisa exaustiva do espaço de chaves de
256
entradas em menos de um dia. Atualmente, já se pode
brincar. A máquina existe, está à venda e custa menos de
US$ 10.000 para ser fabricada (Kumar et al., 2006).
DES triplo
No início de 1979, a IBM percebeu que o tamanho da
chave do DES era muito pequeno e criou uma forma de au-
mentá-lo usando a criptografia tripla (Tuchman, 1979). O
método escolhido, que desde então foi incorporado ao pa-
drão internacional 8732, está ilustrado na Figura 8.7. Nesse
caso, são usados três estágios e duas chaves. No primeiro
estágio, o texto simples é criptografado com K1
da maneira
usual do DES. No segundo estágio, o DES é executado no
modo de descriptografia, com o uso de K2
como chave. Por
fim, outra criptografia DES é feita com K1
.
Esse projeto levanta duas questões. Primeiro, por que
são utilizadas apenas duas chaves em vez de três? Segundo,
por que foi usado EDE (Encrypt Decrypt Encrypt) em
vez de EEE (Encrypt Encrypt Encrypt)? São utilizadas
duas chaves porque até mesmo os criptógrafos mais paranoi-
cos concordam que 112 bits serão suficientes para aplicações
comerciais durante um bom tempo. (E, entre os criptógra-
fos, a paranoia é considerada um recurso, não um bug.) O
uso de 168 bits só criaria overhead desnecessário para geren-
ciar e transportar outra chave, com pouco ganho real.
O motivo para criptografar, descriptografar e criptogra-
far mais uma vez é a compatibilidade com os sistemas DES
de chave única existentes. Tanto as funções de criptografia
quanto as de descriptografia são mapeamentos entre conjun-
tos de números de 64 bits. Do ponto de vista da criptogra-
fia, os dois mapeamentos são igualmente fortes. No entanto,
ao usar EDE em vez de EEE, um computador que utiliza a
criptografia tripla pode se comunicar com outro que utiliza a
criptografia simples apenas definindo K1
= K2
. Essa proprie-
dade permite que a criptografia tripla seja implantada gra-
dualmente, o que não interessa aos criptógrafos acadêmicos,
mas é de grande importância para a IBM e seus clientes.
8.2.2 AES — Advanced Encryption Standard
À medida que a vida útil do DES começou a se aproxi-
mar do fim, mesmo com o DES triplo, o NIST (National
Institute of Standards and Technology), o órgão do
departamento de comércio dos Estados Unidos encarrega-
do de aprovar padrões, decidiu que o governo precisava
de um novo padrão criptográfico para uso não confiden-
cial. O NIST estava ciente de toda a controvérsia que cer-
cava o DES e sabia muito bem que, se anunciasse um novo
padrão, todas as pessoas com algum conhecimento sobre
criptografia logo concluiriam que a NSA havia criado uma
porta dos fundos no DES, e assim poderia ler tudo que fosse
criptografado com ele. Em tais condições, talvez ninguém
utilizasse o padrão e seria mais provável que ele desapare-
cesse.
Dessa forma, o NIST adotou uma estratégia diferente e
surpreendente para um órgão do governo: patrocinou uma
competição de criptografia. Em janeiro de 1997, pesquisado-
res do mundo inteiro foram convidados a submeter propos-
tas para um novo padrão, a ser chamado AES (Advanced
Encryption Standard). As regras dessa competição eram:
1. o algoritmo teria de ser uma cifra de bloco simétrica;
2. todo o projeto teria de ser público;
3. deveriam ser admitidos tamanhos de chaves iguais a
128, 192 e 256 bits;
4. teriam de ser possíveis implementações de software
e de hardware;
5. o algoritmo teria de ser público ou licenciado em
termos não discriminatórios.
Foram feitas quinze propostas sérias e organizadas
conferências públicas nas quais essas propostas eram apre-
sentadas, e os participantes encorajados ativamente a en-
contrar falhas em todas elas. Em agosto de 1998, o NIST se-
lecionou cinco finalistas, baseado principalmente em seus
requisitos de segurança, eficiência, simplicidade, flexibili-
dade e memória (importantes para sistemas embarcados).
K1
E
K2
D
K1
E
P C
K1
D
K2
E
(a)
(b)
K1
D
C P
Figura 8.7  Criptografia tripla usando o DES. (b) Descriptografia.
08_tanen0809_cap08 BR.indd 491 4/25/11 3:08 PM
492 Redes de computadores
Foram realizadas outras conferências e mais tentativas de
encontrar falhas nos algoritmos.
Em outubro de 2000, o NIST anunciou que tinha se-
lecionado o Rijndael, de Joan Daemen e Vincent Rijmen.
O nome é derivado do sobrenome dos autores: Rijmen +
Daemen. Em novembro de 2001, o Rijndael se tornou o
padrão AES do governo dos Estados Unidos, publicado
como FIPS (Federal Information Processing Standard) 197.
Por causa da extraordinária abertura da competição, das
propriedades técnicas do Rijndael e do fato de a equipe
premiada consistir em dois jovens criptógrafos belgas (com
pouca probabilidade de ter criado uma porta dos fundos só
para agradar a NSA), o Rijndael se tornou o padrão cripto-
gráfico dominante no mundo. A criptografia e a descripto-
grafia AES fazem parte do conjunto de instruções de alguns
microprocessadores (por exemplo, Intel).
O Rijndael admite tamanhos de chaves e tamanhos de
blocos desde 128 bits até 256 bits em intervalos de 32 bits.
O comprimento da chave e o do bloco podem ser esco-
lhidos independentemente. Porém, o AES especifica que
o tamanho do bloco deve ser 128 bits e o comprimento da
chave deve ser 128, 192 ou 256 bits. É pouco provável que
alguém utilize chaves de 192 bits; assim, de fato, o AES tem
duas variantes: um bloco de 128 bits com uma chave de
128 bits e um bloco de 128 bits com uma chave de 256 bits.
Em nosso tratamento do algoritmo, examinaremos ape-
nas o caso de 128/128, porque é provável que esse se torne a
norma comercial. Uma chave de 128 bits oferece um espaço
de chaves de 2128
≈ 3 × 1038
chaves. Ainda que a NSA consiga
construir uma máquina com 1 bilhão de processadores para-
lelos, cada um capaz de avaliar uma chave por picossegundo,
tal máquina levaria cerca de 1010
anos para pesquisar o espaço
de chaves. Nessa época, o Sol já terá explodido e as pessoas
que sobreviverem terão de ler os resultados à luz de velas.
Rijndael
Sob uma perspectiva matemática, o Rijndael se baseia
na teoria de campo de Galois, o que proporciona ao algo-
ritmo algumas propriedades de segurança demonstráveis.
Porém, ele também pode ser visto como código em C, sem
a necessidade de entrarmos nos detalhes matemáticos.
Como o DES, o Rijndael utiliza substituição e permuta-
ções, e também emprega várias rodadas. O número de roda-
das depende do tamanho da chave e do tamanho do bloco,
sendo 10 para chaves de 128 bits com blocos de 128 bits,
passando para 14 no caso da maior chave ou do maior blo-
co. No entanto, diferentemente do DES, todas as operações
envolvem bytes inteiros, a fim de permitir implementações
eficientes, tanto em hardware quanto em software. Um es-
boço do código é apresentado no Quadro 8.1. Observe que
esse código é para fins de ilustração. Boas implementações
do código de segurança seguirão práticas adicionais, como
zerar a memória confidencial depois que ela tiver sido usa-
da. Veja, por exemplo, Ferguson et al. (2010).
#define LENGTH 16					 /* número de bytes no bloco de dados ou chave */
#define NROWS 4					 /* número de linhas no estado */
#define NCOLS 4					 /* número de colunas no estado */
#define ROUNDS 10					 /* número de iterações */
typedef unsigned char byte;				 /* inteiro de 8 bits sem sinal */
rijndael(byte plaintext[LENGTH], byte ciphertext[LENGTH], byte key[LENGTH])
{
int r;						 /* índice do loop */
byte state[NROWS][NCOLS];				 /* estado atual */
struct {byte k[NROWS][NCOLS];} rk[ROUNDS + 1]; /* chaves da rodada */
expand_key(key, rk);					 /* constrói as chaves da rodada */
copy_plaintext_to_state(state, plaintext);			 /* inicia estado atual */
xor_roundkey_into_state(state, rk[0]);			 /* XOR da chave no estado */
for (r = 1; r <= ROUNDS; r++) {
		 substitute(state);					 /* aplica caixa S a cada byte */
		 rotate_rows(state);					 /* gira linha i por i bytes */
		 if (r < ROUNDS) mix_columns(state);			 /* função embaralha */
		 xor_roundkey_into_state(state, rk[r]);			 /* XOR da chave no estado */
}
copy_state_to_ciphertext(ciphertext, state);		 /* retorna resultado */
}
Quadro 8.1  Um esboço do Rijndael em C.
08_tanen0809_cap08 BR.indd 492 4/25/11 3:08 PM
Capítulo 8   Segurança de redes 493
A função rijndael tem três parâmetros: plaintext, um ar-
ray de 16 bytes contendo os dados de entrada, ciphertext,
um array de 16 bytes no qual será retornada a saída cifrada,
e key, a chave de 16 bytes. Durante o cálculo, o estado atual
dos dados é mantido no array de bytes state, cujo tamanho
é NROWS × NCOLS. No caso de blocos de 128 bits, esse ar-
ray tem 4 × 4 bytes. Em 16 bytes, é possível armazenar
todo o bloco de dados de 128 bits.
O array state é iniciado com o texto simples e modifi-
cado em cada etapa da computação. Em algumas etapas, é
executada a substituição byte a byte. Em outras etapas, os
bytes são permutados dentro do array. Outras transforma-
ções também são usadas. No final, o conteúdo do array state
é retornado como texto cifrado.
O código começa expandindo a chave em 11 arrays do
mesmo tamanho do estado. Eles são armazenados em rk,
um array de structs, cada um contendo um array de estado.
Um desses arrays será utilizado no início do cálculo, e os
outros 10 serão usados durante as 10 rodadas, um por ro-
dada. O cálculo das chaves de rodadas a partir da chave de
criptografia é muito complicado para ser examinado aqui.
Basta saber que as chaves de rodadas são produzidas pela
rotação e pela operação XOR repetida em vários grupos de
bits da chave. Para ver todos os detalhes, consulte (Daemen
e Rijmen, 2002).
A próxima etapa é copiar o texto simples no array state
de forma que ele possa ser processado durante as rodadas.
O texto é copiado em ordem de colunas, com os quatro
primeiros bytes na coluna 0, os quatro bytes seguintes na
coluna 1 e assim por diante. Tanto as colunas quanto as
linhas são numeradas a partir de 0, embora as rodadas se
iniciem em 1. Essa configuração inicial dos 12 arrays de
bytes com tamanho 4 × 4 é ilustrada na Figura 8.8.
Há mais uma etapa antes do início da principal com-
putação: rk[0] é submetido a uma operação XOR em state,
byte por byte. Em outras palavras, cada um dos 16 bytes
em state é substituído pelo XOR do próprio valor com o byte
correspondente em rk[0].
Agora chegou a hora da atração principal. O loop exe-
cuta dez iterações, uma por rodada, transformando state
em cada repetição. O conteúdo de cada rodada consiste em
quatro etapas. A etapa 1 efetua uma substituição byte a
byte em state. Por sua vez, cada byte é usado como um índi-
ce para uma caixa S, a fim de substituir seu valor pelo con-
teúdo dessa entrada da caixa S. Essa etapa é uma cifra de
substituição monoalfabética. Diferentemente do DES, que
tem diversas caixas S, o Rijndael tem apenas uma caixa S.
A etapa 2 gira cada uma das quatro linhas para a es-
querda. A linha 0 é girada 0 bytes (isto é, não se altera), a
linha 1 é girada 1 byte, a linha 2 é girada 2 bytes e a linha 3
é girada 3 bytes. Essa etapa difunde o conteúdo dos dados
atuais em torno do bloco, de modo semelhante às permu-
tações da Figura 8.5.
A etapa 3 embaralha cada coluna independentemente
das outras. O embaralhamento é realizado com o uso da
multiplicação de matrizes, na qual a nova coluna é o pro-
duto da coluna antiga por uma matriz constante, sendo a
multiplicação feita com o campo finito de Galois, GF(28
).
Embora isso possa parecer complicado, existe um algorit-
mo que permite calcular cada elemento da nova coluna
usando duas pesquisas em tabelas e três operações XOR
(Daemen e Rijmen, 2002, Apêndice E).
Por fim, a etapa 4 efetua o XOR da chave correspon-
dente a essa rodada no array state.
Tendo em vista que cada etapa é reversível, a deco-
dificação pode ser feita simplesmente executando-se o
algoritmo no sentido inverso. Porém, também existe um
artifício pelo qual a decodificação pode ser realizada exe-
cutando-se o algoritmo de criptografia com a utilização de
tabelas diferentes.
O algoritmo foi projetado não só por segurança, mas
também para aumentar a velocidade. Uma boa implemen-
tação de software em uma máquina de 2 GHz deve ser
capaz de alcançar uma taxa de criptografia de 700 Mbps,
que é rápida o suficiente para codificar mais de cem vídeos
MPEG-2 em tempo real. As implementações de hardware
são ainda mais rápidas.
8.2.3 Modos de cifra
Apesar de toda essa complexidade, o AES (ou o DES,
ou ainda qualquer cifra de bloco) é basicamente uma cifra
state rk[0] rk[1] rk[2] rk[3] rk[4] rk[5] rk[6] rk[7] rk[8] rk[9] rk[10]
Texto simples de 128 bits Chave de codificação de 128 bits
chaves de rodadas
Figura 8.8  Criação dos arrays state e rk.
08_tanen0809_cap08 BR.indd 493 4/25/11 3:08 PM
494 Redes de computadores
de substituição monoalfabética que utiliza caracteres gran-
des (caracteres de 128 bits para AES, e caracteres de 64 bits
para DES). Sempre que o mesmo bloco de texto simples
chega ao front end, o mesmo bloco de texto cifrado sai pelo
back-end. Se você codificar o texto simples abcdefgh 100 ve-
zes com a mesma chave DES, obterá o mesmo texto cifra-
do cem vezes. Um intruso pode explorar essa propriedade
para ajudar a subverter a cifra.
O modo Electronic Code Book
Para ver como essa propriedade das cifras de substi-
tuição monoalfabética pode ser usada para anular parcial-
mente a cifra, usaremos o DES (triplo), por ser mais fácil
representar blocos de 64 que de 128 bits, mas o AES tem
exatamente o mesmo problema. A maneira direta de usar
o DES para codificar um longo fragmento de texto simples
é dividi-lo em blocos consecutivos de 8 bytes (64 bits) e
codificá-los uns após outros com a mesma chave. O últi-
mo fragmento de texto simples é completado até 64 bits,
se necessário. Essa técnica é conhecida como modo ECB
(Electronic Code Book), em analogia aos antigos livros
de código em que cada palavra de texto simples era listada,
seguida por seu texto cifrado (em geral, um número deci-
mal de cinco dígitos).
Na Figura 8.9, temos o início de um arquivo de compu-
tador com a lista das gratificações anuais que uma empresa
decidiu oferecer a seus funcionários. Esse arquivo consiste
em registros de 32 bytes consecutivos, um por funcionário,
no formato mostrado: 16 bytes para o nome, 8 bytes para
o cargo e 8 bytes para a gratificação. Cada um dos dezesseis
blocos de 8 bytes (numerados de 0 até 15) é codificado pelo
DES (triplo).
Leslie acabou de brigar com o chefe e sabe que não
deve esperar uma grande gratificação. Ao contrário, Kim
é a favorita do chefe e todo mundo sabe disso. Leslie pode
acessar o arquivo após a codificação, mas antes de ser en-
viado ao banco. Ela pode retificar essa situação injusta, ten-
do apenas o arquivo criptografado?
Não há problema. Leslie só precisa fazer uma cópia do
12o
bloco do texto cifrado (que contém a gratificação de
Kim) e usá-lo para substituir o quarto bloco do texto cifra-
do (que contém a própria gratificação). Mesmo sem saber
o que contém o 12o
bloco, Leslie pode esperar ter um Natal
muito mais feliz naquele ano. (Copiar o oitavo bloco tam-
bém é uma possibilidade, mas o risco de ser descoberto é
maior; além disso, Leslie não é uma pessoa gananciosa.)
Modo de encadeamento de blocos de cifras
Para contrariar esse tipo de ataque, todos os blocos
de cifras podem ser encadeados de várias maneiras, a fim
de que a substituição de um bloco como a que Leslie fez
transforme o texto simples decodificado em lixo, a par-
tir do bloco substituído. Uma forma de encadeamento é
o encadeamento de blocos de cifras. Nesse método,
mostrado na Figura 8.10, cada bloco de texto simples é
submetido a uma operação XOR com o bloco de texto ci-
frado anterior, antes de ser codificado. Como consequên-
cia, o mesmo bloco de texto simples não é mais mapeado
Nome Cargo Gratificação
16 8 8
Bytes
D a v i s , B o b b i e L i m p e z a $ 5
C o l l i n s , K i m D i r e t o r $ 1 0 0 , 0 0 0
B l a c k , R o b i n C h e f e $ 5 0 0 , 0 0 0
A d a m s , L e s l i e C a i x a $ 1 0
Figura 8.9  O texto simples de um arquivo codificado como 16 blocos DES.
(a) (b)
+
E
IV
Chave
Chave
IV
P0
C0
+
E
P1
C1
E
P2
C2
E
P3
C3
D
C0
P0
D
C1
P1
D
C2
P2
D
Caixa de
decodificação
Caixa de
codificação
OU
exclusivo
C3
P3
+ +
+ + + +
Figura 8.10  Encadeamento de blocos de cifras. (a) Codificação. (b) Decodificação.
08_tanen0809_cap08 BR.indd 494 4/25/11 3:08 PM
Capítulo 8   Segurança de redes 495
para o mesmo bloco de texto cifrado, e a criptografia não
é mais uma grande cifra de substituição monoalfabética.
O primeiro bloco é submetido a uma operação XOR com
um vetor de referência, ou IV (Initialization Vector),
escolhido ao acaso, que é transmitido (em texto simples)
juntamente com o texto cifrado.
Podemos ver como funciona o modo de encadeamento
de blocos de cifras examinando o exemplo da Figura 8.10.
Começamos com o cálculo C0
= E(P0
XOR IV). Em seguida,
calculamos C1
= E(P1
XOR C0
) e assim por diante. A decodi-
ficação também utiliza XOR para inverter o processo, com
P0
= IV XOR D(C0
) e assim por diante. Observe que a cripto-
grafia do bloco i é uma função de todo o texto simples conti-
do nos blocos 0 a i - 1, e assim o mesmo texto simples gera
um texto cifrado diferente, dependendo de onde ele ocorre.
Uma transformação do tipo que Leslie fez resultará em texto
sem sentido para dois blocos a partir do campo de gratifica-
ção de Leslie. Para um funcionário de segurança astuto, essa
peculiaridade pode sugerir onde iniciar a investigação legal.
O encadeamento de blocos de cifras também tem uma
vantagem: o mesmo bloco de texto simples não resultará
no mesmo bloco de texto cifrado. Assim, a criptoanálise
será difícil. De fato, essa é a principal razão de seu uso.
Modo de feedback de cifra
No entanto, o encadeamento de blocos de cifras tem a
desvantagem de exigir a chegada de um bloco de 64 bits in-
teiro para poder iniciar a decodificação. No caso da codifi-
cação byte a byte, é usado o modo de feedback de cifra,
empregando o DES (triplo), como mostra a Figura 8.11.
Para o AES, a ideia é exatamente a mesma, sendo usado
um registrador de deslocamento de 128 bits. Na figura, o
estado da máquina de criptografia é mostrado após os bytes
0 a 9 terem sido codificados e enviados. Ao chegar o byte
10 do texto simples, conforme ilustra a Figura 8.11(a), o
algoritmo DES opera sobre o registrador de deslocamento
de 64 bits para gerar um texto cifrado de 64 bits. O byte
mais à esquerda desse texto cifrado é extraído e submetido
a uma operação XOR com P10
. Depois, esse byte é encami-
nhado à linha de transmissão. Além disso, o registrador de
deslocamento (shift register) é deslocado 8 bits à esquerda,
fazendo C2
ficar fora da extremidade esquerda, e C10
é in-
serido na posição que acabou de ficar vaga na extremidade
direita, logo depois de C9
.
Observe que o conteúdo do registrador de deslocamen-
to depende do histórico anterior do texto simples; assim, um
padrão que se repetir várias vezes no texto simples será crip-
tografado de maneira diferente do texto cifrado a cada vez.
Como ocorre no encadeamento de blocos de cifras, é neces-
sário um vetor de referência para iniciar o processo.
A decodificação com o modo de feedback de cifra fun-
ciona exatamente como a codificação. Em particular, o
conteúdo do registrador de deslocamento é codificado, e não
decodificado, e assim o byte selecionado que é submetido à
operação XOR com C10
para obter P10
é o mesmo que sofreu
a operação XOR com P10
para gerar C10
na primeira vez.
Desde que os dois registradores de deslocamento permane-
çam idênticos, a decodificação funciona corretamente. Ela
é ilustrada na Figura 8.11(b).
Um problema apresentado pelo modo de feedback de
cifra é que, se um bit do texto cifrado for invertido aciden-
talmente durante a transmissão, os 8 bytes decodificados
enquanto o byte defeituoso estiver no registrador de des-
locamento serão danificados. Depois que o byte defeituoso
for empurrado para fora do registrador de deslocamento,
o texto simples correto será gerado mais uma vez. Desse
modo, os efeitos de um único bit invertido são em parte
localizados e não danificam o restante da mensagem, mas
danificam uma quantidade de bits igual à largura do regis-
trador de deslocamento.
Modo fluxo de cifras
Apesar disso, existem aplicações em que um erro de
transmissão de 1 bit alterando 64 bits de texto simples pro-
(a)
C10
(b)
Chave
C10 P10
E
Registrador de deslocamento de 64 bits
C2 C3 C4 C5 C6 C7 C8 C9
+
Caixa de
codificação
Seleciona byte
mais à esquerda
Chave
P10 C10
C10
E
Registrador de deslocamento de 64 bits
C2 C3 C4 C5 C6 C7 C8 C9
Caixa de
codificação
Seleciona byte
mais à esquerda
OU exclusivo
+
Figura 8.11  Modo de feedback de cifra. (a) Codificação.
(b) Decodificação.
08_tanen0809_cap08 BR.indd 495 4/25/11 3:08 PM
496 Redes de computadores
voca um impacto grande demais. Para essas aplicações, há
uma quarta opção, o modo fluxo de cifras. Ele funciona
pela codificação de um vetor de referência com uma chave
para obter um bloco de saída. O bloco de saída é então co-
dificado, usando-se a chave para obter um segundo bloco
de saída. Em seguida, esse bloco é codificado para obter
um terceiro bloco e assim por diante. A sequência (arbi-
trariamente grande) de blocos de saída, chamada fluxo de
chaves, é tratada como uma chave única e submetida a
uma operação XOR com o texto simples para obter o tex-
to cifrado, como mostra a Figura 8.12(a). Observe que o
vetor de referência só e usado na primeira etapa. Depois
disso, a saída é codificada. Observe também que o fluxo de
chaves é independente dos dados, portanto pode ser calcu-
lado com antecedência, se necessário, e é completamente
insensível a erros de transmissão. A decodificação aparece
na Figura 8.12(b).
A decodificação ocorre quando se gera o mesmo fluxo
de chaves no lado receptor. Como o fluxo de chaves só de-
pende do vetor de referência e da chave, ele não é afetado
por erros de transmissão no texto cifrado. Desse modo,
um erro de 1 bit no texto cifrado transmitido gera apenas um
erro de 1 bit no texto simples decodificado.
É essencial nunca utilizar o mesmo par (chave, vetor
de referência) duas vezes em fluxo de cifras, porque isso
vai gerar o mesmo fluxo de chaves o tempo todo. O uso
de um mesmo fluxo de chaves duas vezes expõe o texto
cifrado a um ataque de reutilização de fluxo de cha-
ves. Imagine que o bloco de texto simples P0
seja codificado
com o fluxo de chaves para obter P0
XOR K0
. Mais tarde,
um segundo bloco de texto simples Q0
é codificado com o
mesmo fluxo de chaves para obter Q0
XOR K0
. Um intruso
que capturar ambos os blocos do texto cifrado poderá sim-
plesmente efetuar uma operação XOR dos dois juntos para
obter P0
XOR Q0
, o que eliminará a chave. Agora, o intruso
tem o XOR dos dois blocos de texto simples. Se um deles
for conhecido ou puder ser encontrado, o outro também
poderá ser encontrado. Em todo caso, o XOR de dois fluxos
de texto simples poderá ser atacado com a utilização de
propriedades estatísticas da mensagem. Por exemplo, no
caso de texto em inglês, o caractere mais comum no fluxo
provavelmente será o XOR de dois espaços, seguido pelo
XOR de espaço e da letra ‘e’ etc. Em resumo, equipado com
o XOR de dois textos simples, o criptoanalista tem uma ex-
celente chance de deduzi-los.
Modo contador
Um problema apresentado por todos os modos, com
exceção do modo do livro de código eletrônico, é a impos-
sibilidade de conseguir acesso aleatório a dados codificados.
Por exemplo, suponha que um arquivo seja transmitido
por uma rede e depois armazenado em disco em forma co-
dificada. Isso poderia ser um meio razoável de operação, se
o computador receptor fosse um notebook que pudesse ser
roubado. Armazenar todos os arquivos críticos em forma
codificada reduz muito os danos causados pelo vazamento
de informações secretas na eventualidade de o computador
cair em mãos erradas.
Porém, com frequência, os arquivos de disco são aces-
sados em ordem não sequencial, especialmente arquivos
de bancos de dados. No caso de um arquivo codificado pela
utilização do encadeamento de blocos de cifras, o acesso a
um bloco aleatório exige primeiro a decodificação de todos
os blocos situados à frente dele, uma proposta dispendiosa.
Por essa razão, foi criado mais um modo, o modo conta-
dor, como ilustra a Figura 8.13. Aqui, o texto simples não é
codificado diretamente. Em vez disso, o vetor de referência
somado a uma constante é codificado, e o texto cifrado re-
sultante é submetido a um XOR com o texto simples. Au-
mentar o vetor de referência em uma unidade a cada novo
bloco facilita a decodificação de um bloco em qualquer lu-
gar no arquivo sem que primeiro seja preciso decodificar
todos os seus predecessores.
Embora seja útil, o modo do contador tem um pon-
to fraco que vale a pena assinalar. Suponha que a mesma
chave K seja usada novamente no futuro (com um texto
simples diferente, mas com o mesmo vetor de referência)
e um atacante adquira todo o texto cifrado em ambas as
execuções. O fluxo de chaves é o mesmo nos dois casos,
expondo a cifra a um ataque de reutilização do fluxo de
chaves do tipo que vimos no caso de fluxo de cifras. O crip-
toanalista tem de efetuar a operação XOR dos dois textos
cifrados juntos, a fim de eliminar toda a proteção criptográ-
fica e simplesmente obter o XOR dos textos simples. Essa
E
(a)
Chave
Texto
simples
Texto
cifrado
Fluxo de chaves
Caixa de
codificação
IV
+
E
(b)
Chave
Texto
simples
Texto
cifrado
Fluxo de chaves
Caixa de
codificação
IV
+
Figura 8.12  Um fluxo de cifras. (a) Codificação.
(b) Decodificação.
08_tanen0809_cap08 BR.indd 496 4/25/11 3:08 PM
Capítulo 8   Segurança de redes 497
fragilidade não significa que o modo do contador seja uma
má ideia. Ela simplesmente quer dizer que tanto as chaves
quanto os vetores de referência devem ser escolhidos de
forma independente e ao acaso. Ainda que a mesma chave
seja utilizada duas vezes por acidente, se o IV for diferente
em cada utilização, o texto simples estará seguro.
8.2.4 Outras cifras
AES (Rijndael) e DES são os algoritmos criptográficos de
chave simétrica mais conhecidos e as escolhas-padrão
da indústria, mesmo apenas por motivos de responsabilidade.
(Ninguém o culpará se você usar AES em seu produto e o
AES for quebrado, mas certamente alguém o fará se você
usar uma cifra fora do padrão e ela mais tarde for que-
brada.) Porém, vale a pena mencionar que foram criadas
várias outras cifras de chave simétrica. Algumas delas es-
tão incorporadas a vários produtos. A Tabela 8.2 mostra
algumas entre as cifras de chave simétrica mais comuns. É
possível usar combinações dessas cifras, por exemplo, AES
sobre Twofish, de modo que ambas precisem ser quebradas
para recuperar os dados.
8.2.5 Criptoanálise
Antes de deixar o assunto de criptografia de chave simé-
trica, vale a pena mencionar pelo menos quatro desenvol-
vimentos em criptoanálise. O primeiro desenvolvimento é
a criptoanálise diferencial (Biham e Shamir, 1997). Essa
técnica pode ser usada para atacar qualquer cifra de bloco.
Ela funciona a partir de um par de blocos e texto simples que
diferem apenas por um pequeno número de bits e pela ob-
servação cuidadosa do que acontece em cada iteração inter-
na à medida que a codificação prossegue. Em muitos casos,
alguns padrões de bits são muito mais comuns que outros, e
essa observação pode levar a ataques probabilísticos.
O segundo desenvolvimento que vale a pena notar é a
criptoanálise linear (Matsui, 1994). Ela pode quebrar o
DES com apenas 243
textos simples conhecidos. Essa técnica
funciona efetuando o XOR de certos bits no texto simples
e no texto cifrado, e examinando o resultado. Quando isso
é feito repetidamente, metade dos bits deve ter o valor 0 e
metade deve ter o valor 1. Porém, com frequência, as cifras
introduzem uma inclinação em um sentido ou no outro, e
essa inclinação, embora pequena, pode ser explorada para
reduzir o fator de trabalho. Para ver os detalhes, consulte o
ensaio de Matsui.
O terceiro desenvolvimento é o uso da análise do
consumo de energia elétrica para encontrar chaves se-
cretas. Em geral, os computadores utilizam 3 volts para
representar um bit 1 e 0 volts para representar um bit 0.
Desse modo, o processamento de um bit 1 exige mais ener-
gia elétrica que o processamento de um 0. Se um algoritmo
Caixa de
codificação
+
E
IV
Chave
P0
C0
+
E
IV+1
Chave
P1
C1
+
E
IV+2
Chave
P2
C2
+
E
IV+3
Chave
P3
C3
Figura 8.13  Codificação com a utilização do modo contador.
Cifra Autor Comprimento da chave Comentários
DES IBM 56 bits Muito fraco para usar agora
RC4 Ronald Rivest 1 a 2.048 bits Atenção: algumas chaves são fracas
RC5 Ronald Rivest 128 a 256 bits Bom, mas patenteado
AES (Rijndael) Daemen e Rijmen 128 a 256 bits Melhor escolha
Serpent Anderson, Biham, Knudsen 128 a 256 bits Muito forte
DES triplo IBM 168 bits Bom, mas está ficando ultrapassado
Twofish Bruce Schneier 128 a 256 bits Muito forte; amplamente utilizado
Tabela 8.2  Alguns algoritmos criptográficos de chave simétrica comuns.
08_tanen0809_cap08 BR.indd 497 4/25/11 3:08 PM
498 Redes de computadores
criptográfico consistir em um loop no qual os bits da chave
são processados em ordem, um atacante que substituir o
clock principal de n GHz por um clock lento (por exem-
plo, 100 Hz) e prender pinças dentadas (pinças jacaré) nos
pinos de energia da CPU e de terra poderá monitorar com
precisão a energia consumida por cada instrução de máqui-
na. A partir desses dados, será surpreendentemente fácil
deduzir a chave. Esse tipo de criptoanálise só pode ser anu-
lado por codificação cuidadosa do algoritmo em linguagem
assembly para ter certeza de que o consumo de energia será
independente da chave e também independente de todas
as chaves de rodadas individuais.
O quarto desenvolvimento é a análise de sincronismo.
Os algoritmos criptográficos estão repletos de instruções if que
testam bits nas chaves de rodadas. Se as partes then e else de-
morarem períodos de tempo diferentes, tornando mais lento
o clock e verificando quanto tempo demoram diversas etapas,
talvez seja possível deduzir as chaves de rodadas. Uma vez
que todas as chaves de rodadas sejam conhecidas, em geral
será possível calcular a chave original. A análise da energia
e da sincronização também pode ser empregada simultanea-
mente para facilitar o trabalho. Embora a análise da energia e
da sincronização possa parecer exótica, na realidade são técni-
cas eficientes que podem romper qualquer cifra não projetada
de forma específica para resistir a elas.
8.3 Algoritmos de chave pública
O problema da distribuição de chaves sempre foi o
elo mais fraco da maioria dos sistemas de criptografia. In-
dependentemente de quanto um sistema de criptografia
fosse sólido, se um intruso conseguisse roubar a chave, o
sistema acabava sendo inútil. Como todos os criptólogos
sempre presumem que a chave de criptografia e a cha-
ve de descriptografia são iguais (ou facilmente derivadas
uma da outra) e que a chave é distribuída a todos os usuários
do sistema, tinha-se a impressão de que havia um proble-
ma inerente ao sistema. As chaves tinham de ser prote-
gidas contra roubo, mas também tinham de ser distribuí-
das; portanto, não podiam ser simplesmente trancadas na
caixa-forte de um banco.
Em 1976, dois pesquisadores da Universidade de Stan-
ford, Diffie e Hellman (1976), propuseram um sistema
de criptografia radicalmente novo, no qual as chaves de
criptografia e de descriptografia eram diferentes, e a cha-
ve de descriptografia não podia ser derivada da chave de
criptografia. Em sua proposta, o algoritmo de criptografia
(chaveado) E e o algoritmo de descriptografia (chaveado)
D tinham de atender a três requisitos, que podem ser decla-
rados da seguinte forma:
1. D(E(P)) = P.
2. É extremamente difícil deduzir D a partir de E.
3. E não pode ser decifrado por um ataque de texto
simples escolhido.
O primeiro requisito diz que, se aplicarmos D a uma men-
sagem criptografada, E(P), obteremos outra vez a mensagem
de texto simples original P. Sem essa propriedade, o destinatá-
rio legítimo não poderia decodificar o texto cifrado. O segun-
do é autoexplicativo. O terceiro é necessário porque, como
veremos em um minuto, os intrusos podem experimentar o
algoritmo até se cansarem. Sob essas condições, não há razão
para a chave criptográfica não se tornar pública.
O método funciona da seguinte forma: uma pessoa,
digamos Alice, desejando receber mensagens secretas, pri-
meiro cria dois algoritmos que atendem aos requisitos an-
teriores. O algoritmo de criptografia e a chave de Alice se
tornam públicos, daí o nome criptografia de chave pú-
blica. Por exemplo, Alice poderia colocar sua chave pú-
blica em sua home page da Web. Usaremos a notação EA
para indicar o algoritmo de criptografia parametrizado pela
chave pública de Alice. De modo semelhante, o algoritmo
de descriptografia (secreto) parametrizado pela chave pri-
vada de Alice é DA
. Bob faz o mesmo, publicando EB
, mas
mantendo secreta a chave DB
.
Agora, vamos ver se podemos resolver o problema de
estabelecer um canal seguro entre Alice e Bob, que nunca
haviam tido um contato anterior. Tanto a chave de cripto-
grafia de Alice, EA
, quanto a chave de criptografia de Bob,
EB
, estão em arquivos de leitura pública. Agora, Alice pega
sua primeira mensagem P, calcula EB
(P) e a envia para Bob.
Em seguida, Bob a descriptografa aplicando sua chave se-
creta DB
[ou seja, ele calcula DB
(EB
(P)) = P]. Ninguém mais
pode ler a mensagem criptografada EB
(P), porque o siste-
ma de criptografia é considerado sólido e porque é muito
difícil derivar DB
da chave EB
publicamente conhecida. Para
enviar uma resposta R, Bob transmite EA
(R). Agora, Alice
e Bob podem se comunicar com segurança.
Talvez seja interessante fazer uma observação sobre
a terminologia. A criptografia de chave pública exige que
cada usuário tenha duas chaves: uma chave pública, usa-
da pelo mundo inteiro para criptografar as mensagens a
ser enviadas para esse usuário, e uma chave privada, que
o usuário utiliza para descriptografar mensagens. Faremos
referência a essas chaves como chave pública e chave pri-
vada, respectivamente, e vamos distingui-las das chaves
secretas (também chamadas chaves simétricas) usadas na
criptografia de chave simétrica convencional.
8.3.1 RSA
O único problema é que temos de encontrar algorit-
mos que realmente satisfaçam todos os três requisitos. De-
vido às vantagens potenciais da criptografia de chave públi-
ca, muitos pesquisadores estão se dedicando integralmente
a seu estudo, e alguns algoritmos já foram publicados. Um
método muito interessante foi descoberto por um grupo
de pesquisadores do MIT (Rivest et al., 1978) e é conheci-
do pelas iniciais dos três estudiosos que o criaram (Rivest,
Shamir, Adleman): RSA. Ele sobreviveu a todas as tenta-
08_tanen0809_cap08 BR.indd 498 4/25/11 3:08 PM
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia
Segurança de Redes com Criptografia

Mais conteúdo relacionado

Semelhante a Segurança de Redes com Criptografia

Sistemas da informação1
Sistemas da informação1Sistemas da informação1
Sistemas da informação1gabrio2022
 
Resumo: Fraudes de Políticas de Segurança, Problemas de privacidade no Acesso...
Resumo: Fraudes de Políticas de Segurança, Problemas de privacidade no Acesso...Resumo: Fraudes de Políticas de Segurança, Problemas de privacidade no Acesso...
Resumo: Fraudes de Políticas de Segurança, Problemas de privacidade no Acesso...Diego BBahia
 
Segurança de Rede na Era do Software Livre
Segurança de Rede na Era do Software LivreSegurança de Rede na Era do Software Livre
Segurança de Rede na Era do Software LivreMarcelo Piuma
 
Redes de controle: Mantenha a disponibilidade durante um ataque cibernético
Redes de controle: Mantenha a disponibilidade durante um ataque cibernéticoRedes de controle: Mantenha a disponibilidade durante um ataque cibernético
Redes de controle: Mantenha a disponibilidade durante um ataque cibernéticoCisco do Brasil
 
manual_ufcd_1421_segurana_informatica.pdf
manual_ufcd_1421_segurana_informatica.pdfmanual_ufcd_1421_segurana_informatica.pdf
manual_ufcd_1421_segurana_informatica.pdfCarlos Gomes
 
Apresentação tema 9 Segurança das Informações e Continuidade dos negócios
Apresentação tema 9 Segurança das Informações e Continuidade dos negóciosApresentação tema 9 Segurança das Informações e Continuidade dos negócios
Apresentação tema 9 Segurança das Informações e Continuidade dos negóciosSanger Dias
 
Nota de aula seguranca da informacao - politica de segurança da informação
Nota de aula   seguranca da informacao - politica de segurança da informaçãoNota de aula   seguranca da informacao - politica de segurança da informação
Nota de aula seguranca da informacao - politica de segurança da informaçãofelipetsi
 
Sistema de segurança_web
Sistema de segurança_webSistema de segurança_web
Sistema de segurança_webFavsro Fot
 
3º SICT-Sul Minicurso Técnicas para segurança computacional
3º SICT-Sul Minicurso Técnicas para segurança computacional3º SICT-Sul Minicurso Técnicas para segurança computacional
3º SICT-Sul Minicurso Técnicas para segurança computacionalLucas Mellos Carlos
 
Tema 09
Tema 09Tema 09
Tema 09Google
 
Segurança física e lógica e análise de vunerabilidade (abnt)
Segurança física e lógica e análise de vunerabilidade (abnt)Segurança física e lógica e análise de vunerabilidade (abnt)
Segurança física e lógica e análise de vunerabilidade (abnt)Diego BBahia
 
Seguranca da informação simulado respondido (1)
Seguranca da informação   simulado respondido (1)Seguranca da informação   simulado respondido (1)
Seguranca da informação simulado respondido (1)Fabricio Trindade
 

Semelhante a Segurança de Redes com Criptografia (20)

Sistemas da informação1
Sistemas da informação1Sistemas da informação1
Sistemas da informação1
 
Resumo: Fraudes de Políticas de Segurança, Problemas de privacidade no Acesso...
Resumo: Fraudes de Políticas de Segurança, Problemas de privacidade no Acesso...Resumo: Fraudes de Políticas de Segurança, Problemas de privacidade no Acesso...
Resumo: Fraudes de Políticas de Segurança, Problemas de privacidade no Acesso...
 
Sistemas de seguranca
Sistemas de segurancaSistemas de seguranca
Sistemas de seguranca
 
Sistemas de seguranca
Sistemas de segurancaSistemas de seguranca
Sistemas de seguranca
 
Segurança de Rede
Segurança de RedeSegurança de Rede
Segurança de Rede
 
Segurança de Rede na Era do Software Livre
Segurança de Rede na Era do Software LivreSegurança de Rede na Era do Software Livre
Segurança de Rede na Era do Software Livre
 
Redes de controle: Mantenha a disponibilidade durante um ataque cibernético
Redes de controle: Mantenha a disponibilidade durante um ataque cibernéticoRedes de controle: Mantenha a disponibilidade durante um ataque cibernético
Redes de controle: Mantenha a disponibilidade durante um ataque cibernético
 
manual_ufcd_1421_segurana_informatica.pdf
manual_ufcd_1421_segurana_informatica.pdfmanual_ufcd_1421_segurana_informatica.pdf
manual_ufcd_1421_segurana_informatica.pdf
 
Apresentação tema 9 Segurança das Informações e Continuidade dos negócios
Apresentação tema 9 Segurança das Informações e Continuidade dos negóciosApresentação tema 9 Segurança das Informações e Continuidade dos negócios
Apresentação tema 9 Segurança das Informações e Continuidade dos negócios
 
Aula import seg
Aula import segAula import seg
Aula import seg
 
Nota de aula seguranca da informacao - politica de segurança da informação
Nota de aula   seguranca da informacao - politica de segurança da informaçãoNota de aula   seguranca da informacao - politica de segurança da informação
Nota de aula seguranca da informacao - politica de segurança da informação
 
Trabalho tic
Trabalho ticTrabalho tic
Trabalho tic
 
Abin aula 01-1
Abin   aula 01-1Abin   aula 01-1
Abin aula 01-1
 
Sistema de segurança_web
Sistema de segurança_webSistema de segurança_web
Sistema de segurança_web
 
3º SICT-Sul Minicurso Técnicas para segurança computacional
3º SICT-Sul Minicurso Técnicas para segurança computacional3º SICT-Sul Minicurso Técnicas para segurança computacional
3º SICT-Sul Minicurso Técnicas para segurança computacional
 
Tema 09
Tema 09Tema 09
Tema 09
 
FACIG NEWS
FACIG NEWSFACIG NEWS
FACIG NEWS
 
Aps informatica
Aps informaticaAps informatica
Aps informatica
 
Segurança física e lógica e análise de vunerabilidade (abnt)
Segurança física e lógica e análise de vunerabilidade (abnt)Segurança física e lógica e análise de vunerabilidade (abnt)
Segurança física e lógica e análise de vunerabilidade (abnt)
 
Seguranca da informação simulado respondido (1)
Seguranca da informação   simulado respondido (1)Seguranca da informação   simulado respondido (1)
Seguranca da informação simulado respondido (1)
 

Último

Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06AndressaTenreiro
 
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptxVagner Soares da Costa
 
Apresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMApresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMdiminutcasamentos
 
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptxVagner Soares da Costa
 
Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3filiperigueira1
 
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxTRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxFlvioDadinhoNNhamizi
 

Último (6)

Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06
 
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
 
Apresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMApresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPM
 
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
 
Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3
 
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxTRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
 

Segurança de Redes com Criptografia

  • 1. Capítulo Segurança de redes 8 Durante as primeiras décadas de sua existência, as re- des de computadores foram usadas principalmente por pes- quisadores universitários, para enviar mensagens de correio eletrônico, e também por funcionários de empresas, para compartilhar impressoras. Nessas condições, a segurança nunca precisou de maiores cuidados. Porém, como milhões de cidadãos comuns atualmente usam as redes para execu- tar operações bancárias, fazer compras e arquivar sua devo- lução de impostos, surge um ponto fraco atrás de outro, e a segurança tornou-se um problema de grandes proporções. Neste capítulo, estudaremos a segurança das redes sob vá- rios ângulos, destacaremos muitas falhas e discutiremos di- versos algoritmos e protocolos que as tornam mais seguras. A segurança é um assunto abrangente e inclui inúme- ros tipos de problemas. Em sua forma mais simples, preocu- pa-se em impedir que pessoas mal-intencionadas leiam ou, pior ainda, modifiquem secretamente mensagens enviadas a outros destinatários. Outra preocupação da segurança são as pessoas que tentam ter acesso a serviços remotos que não estão autorizadas a usar. Ela também lida com meios para saber se uma mensagem supostamente verdadeira é um trote. A segurança trata de situações em que mensa- gens legítimas são capturadas e reproduzidas, além de lidar com pessoas que tentam negar o fato de ter enviado certas mensagens. A maior parte dos problemas de segurança é causada propositalmente por pessoas mal-intencionadas, que ten- tam obter algum benefício, chamar atenção ou prejudicar alguém. Alguns dos invasores mais comuns estão listados na Tabela 8.1. Fica claro por essa lista que tornar uma rede segura envolve muito mais que apenas mantê-la livre de erros de programação. Para tornar uma rede segura, com frequência é necessário lidar com adversários inteligentes, dedicados e, às vezes, muito bem subsidiados. Você tam- bém deverá ter em mente que as medidas utilizadas para interromper a atividade de adversários eventuais terão pouco impacto sobre os adversários ‘mais espertos’. Os re- gistros policiais mostram que a maioria dos ataques não é perpetrada por estranhos que grampeiam uma linha telefô- nica, mas por pessoas ressentidas com a organização a que pertencem. Os sistemas de segurança devem ser projetados tendo em vista esse fato. Os problemas de segurança das redes podem ser divi- didos nas seguintes áreas interligadas: sigilo, autenticação, não repúdio e controle de integridade. O sigilo — também chamado confidencialidade — está relacionado ao fato de manter as informações longe de usuários não autorizados. É isso que costuma nos vir à mente quando pensamos em segurança de redes. Em geral, a autenticação cuida do pro- cesso de determinar com quem você está se comunicando antes de revelar informações sigilosas ou entrar em uma transação comercial. O não repúdio trata de assinaturas: como provar que seu cliente realmente fez um pedido ele- trônico de dez milhões de unidades de um produto com preço unitário de 89 centavos quando mais tarde ele afir- mar que o preço era 69 centavos? Ou talvez ele afirme que nunca efetuou nenhum pedido. Por fim, como você pode se certificar de que uma mensagem recebida é de fato legí- tima e não algo que um oponente mal-intencionado modi- ficou a caminho ou inventou? Todas essas questões (sigilo, autenticação, não repúdio e controle de integridade) também ocorrem em sistemas Adversário Objetivo Estudante Divertir-se bisbilhotando as mensagens de correio eletrônico de outras pessoas Cracker Testar o sistema de segurança de alguém; roubar dados Representante de vendas Tentar representar toda a Europa e não apenas Andorra Executivo Descobrir a estratégia de marketing do concorrente Ex-funcionário Vingar-se por ter sido demitido Contador Desviar dinheiro de uma empresa Corretor de valores Negar uma promessa feita a um cliente por meio de uma mensagem de correio eletrônico Vigarista Roubar números de cartão de crédito e vendê-los Espião Descobrir segredos militares ou industriais de um inimigo Terrorista Roubar segredos de armas bacteriológicas Tabela 8.1  Algumas pessoas que podem causar problemas de segurança e os motivos para fazê-lo. 08_tanen0809_cap08 BR.indd 479 4/25/11 3:07 PM
  • 2. 480 Redes de computadores tradicionais, mas com algumas diferenças significativas. O sigilo e a integridade são obtidos graças à utilização de correspondência registrada e de bloqueio de documentos. Hoje é mais difícil roubar o trem postal do que nos tempos de Jesse James. Além disso, é comum as pessoas conseguirem distin- guir um documento original de uma fotocópia, e isso quase sempre faz diferença para elas. Como teste, tire uma fo- tocópia de um cheque válido. Tente descontar o cheque original na segunda-feira. Agora tente descontar a fotocó- pia do cheque na terça-feira. Observe a diferença no com- portamento do caixa. Já com os cheques eletrônicos, não há como distinguir entre o original e a cópia. Talvez leve algum tempo até que os bancos aprendam a lidar com isso. As pessoas autenticam outras pessoas por vários meios, incluindo reconhecimento de rosto, voz e caligrafia. As com- provações de assinatura são feitas por meio de papel timbra- do, de símbolos em alto-relevo etc. Em geral, as falsificações podem ser detectadas por especialistas em caligrafia, papel e tinta. Nenhuma dessas opções está disponível eletronica- mente. É claro que são necessárias outras soluções. Antes de entrarmos nas soluções propriamente ditas, vale a pena dedicar alguns momentos considerando a que parte da pilha de protocolos pertence a segurança de re- des. É provável que não exista uma parte específica. To- das as camadas contribuem de alguma forma. Na camada física, os ‘grampos’ podem ser anulados mantendo-se as linhas de transmissão (ou seja, as fibras ópticas) em tubos lacrados contendo gás inerte em alta pressão. Qualquer tentativa de perfurar um tubo liberará o gás, reduzindo a pressão e disparando um alarme. Alguns sistemas milita- res utilizam essa técnica. Na camada de enlace de dados, os pacotes de uma li- nha ponto a ponto podem ser codificados à medida que saem de uma máquina, e decodificados quando entram em outro sistema. Todos os detalhes podem ser tratados na camada de enlace de dados, com as camadas mais altas alheias ao que está acontecendo. No entanto, essa solução se mostra ineficiente quando os pacotes têm de atravessar vários roteadores, pois é necessário descriptografar os paco- tes em cada roteador, o que os torna vulneráveis a ataques dentro do roteador. Além disso, essa estratégia permite que algumas sessões sejam protegidas (por exemplo, aquelas que envolvem compras on-line por cartão de crédito) e ou- tras não. Todavia, a criptografia no nível do enlace de dados, como esse método é chamado, pode ser facilmente incluída em qualquer rede e com frequência é muito útil. Na camada de rede, podem ser instalados firewalls para manter ou descartar pacotes. A segurança do IP tam- bém funciona nessa camada. Na camada de transporte, é possível criptografar co- nexões inteiras ponto a ponto, ou seja, processo a proces- so. Para obter segurança máxima, é necessário que ela seja ponto a ponto. Por fim, questões como autenticação do usuário e não repúdio só podem ser tratadas na camada de aplicação. Tendo em vista que a segurança não se ajusta nitida- mente a nenhuma camada, ela também não se enquadra em nenhum capítulo deste livro. Por essa razão, merece seu próprio capítulo. Embora este capítulo seja longo, técnico e essencial, isso é quase irrelevante no momento. Por exemplo, está bem documentado o fato de que a maioria das falhas de se- gurança em bancos se deve a funcionários incompetentes, procedimentos de segurança negligentes, diversos bugs de implementação que permitem a invasão remota por usuá- rios não autorizados e os chamados ataques de engenharia social, nos quais os clientes são enganados para revelar os detalhes de sua conta. Todos esses problemas de segurança acontecem com mais frequência do que a ação de crimi- nosos inteligentes grampeando linhas telefônicas e depois decodificando mensagens criptografadas. Se uma pessoa puder entrar em uma agência bancária qualquer com uma tira de extrato de caixa eletrônico que encontrou na rua, afirmando que esqueceu sua senha e receber uma nova senha na mesma hora (em nome das boas relações com os clientes), nem toda criptografia do mundo evitará o abuso. Sobre esse aspecto, o livro de Ross Anderson (2008a) é um excelente alerta, pois documenta centenas de exemplos de falhas de segurança em numerosos setores, quase todas causadas por aquilo que se poderia chamar educadamente de práticas comerciais relaxadas ou desatenção com a segu- rança. Apesar disso, a base técnica sobre a qual o comércio eletrônico é montado, quando todos esses outros fatores são bem elaborados, é a criptografia. Com exceção da segurança na camada física, quase toda segurança se baseia em princípios criptográficos. Por essa razão, começaremos nosso estudo da seguran- ça examinando em detalhes a criptografia. Na Seção 8.1, veremos alguns princípios básicos. Da Seção 8.2 até a Se- ção 8.5, examinaremos alguns algoritmos e estruturas de dados fundamentais usados na criptografia. Em seguida, examinaremos em detalhes como esses conceitos podem ser usados para alcançar a segurança em redes. Conclui- remos com alguns conceitos breves sobre tecnologia e sociedade. Antes de começarmos, devemos chamar atenção para o que não será abordado neste capítulo. Procuramos nos concentrar em questões de redes, e não naquelas relacio- nadas ao sistema operacional e às aplicações, embora seja difícil traçar uma linha clara separando esses assuntos. Por exemplo, não há nada aqui sobre autenticação do usuário com a utilização da biometria, segurança de senhas, ata- ques por overflow de buffers, cavalos de Troia ou trojans, spoofing de login, inserção de código em scripts de sites, vírus, worms e temas semelhantes. Todos esses tópicos são abordados detalhadamente no Capítulo 9 do livro Modern Operating Systems (Tanenbaum, 2007). O leitor interessado 08_tanen0809_cap08 BR.indd 480 4/25/11 3:07 PM
  • 3. Capítulo 8   Segurança de redes 481 deve consultar esse livro para conhecer os aspectos de se- gurança relacionados aos sistemas. Agora, vamos iniciar nossa jornada. 8.1 Criptografia A palavra criptografia vem de palavras gregas que sig- nificam ‘escrita secreta’. A criptografia tem uma longa e in- teressante história de milhares de anos. Nesta seção, vamos esquematizar alguns destaques, que serão usados como in- formações básicas para o que vem a seguir. Se desejar um histórico completo da criptografia, recomendamos a leitura do livro de Khan (1995). Para ver um tratamento completo do estado da arte em segurança e algoritmos criptográfi- cos, protocolos, aplicações e material relacionado, consulte Kaufman et al. (2002). Para uma abordagem mais mate- mática, consulte Stinson (2002). Se preferir uma aborda- gem menos matemática, consulte Burnett e Paine (2001). Os profissionais fazem distinção entre cifras e códigos. Uma cifra é uma transformação de caractere por caractere ou de bit por bit, sem levar em conta a estrutura linguística da mensagem. Em contrapartida, um código substitui uma palavra por outra palavra ou símbolo. Os códigos não são mais utilizados, embora tenham uma história gloriosa. O código mais bem-sucedido já inventado foi usado pelas for- ças armadas dos Estados Unidos durante a Segunda Guer- ra Mundial no Pacífico. Elas simplesmente tinham índios navajos que se comunicavam uns com os outros usando palavras em Navajo específicas para termos militares, como chay-dagahi-nail-tsaidi (literalmente, matador de cágado) para indicar uma arma antitanque. A linguagem navajo é altamente tonal, extremamente complexa, e não tem ne- nhuma forma escrita. Além disso, nem uma única pessoa no Japão conhecia alguma coisa sobre ela. Em setembro de 1945, o San Diego Union descreveu o código da seguinte forma: “Por três anos, onde quer que os marines aterrissassem, os japoneses recebiam uma en- xurrada de estranhos ruídos gorgolejantes entremeados com outros sons que lembravam o clamor de um mon- ge tibetano e o som de uma bolsa de água quente sendo esvaziada”. Os japoneses nunca conseguiram quebrar o código e muitos índios navajos receberam altas honras militares por serviço e bravura extraordinários. O fato de os Estados Unidos terem conseguido quebrar o código ja- ponês e os japoneses nunca terem conseguido quebrar o código navajo desempenhou um papel crucial nas vitórias norte-americanas no Pacífico. 8.1.1 Introdução à criptografia Historicamente, quatro grupos de pessoas utilizaram e contribuíram para a arte da criptografia: os militares, os diplomatas, as pessoas que gostam de guardar memórias e os amantes. Entre eles, os militares tiveram o papel mais importante e definiram as bases para a tecnologia. Nas organizações militares, as mensagens a ser criptografadas eram entregues habitualmente a auxiliares mal remunera- dos, que se encarregavam de criptografá-las e transmiti-las. O grande volume de mensagens impedia que esse trabalho fosse feito por alguns poucos especialistas. Até o advento dos computadores, uma das principais restrições impostas à criptografia era a habilidade do au- xiliar de criptografia para fazer as transformações neces- sárias, em geral com poucos equipamentos e no campo de batalha. Outra restrição era a dificuldade de alternar os métodos criptográficos rapidamente, pois isso exigia a re- petição do treinamento de um grande número de pessoas. No entanto, o perigo de um auxiliar de criptografia ser cap- turado pelo inimigo tornou indispensável a necessidade de alterar o método criptográfico instantaneamente, se preci- so. Essas necessidades conflitantes fizeram surgir o modelo da Figura 8.1. As mensagens a ser criptografadas, conhecidas como texto simples (ou plaintext), são transformadas por meio de uma função parametrizada por uma chave. Em seguida, Método de criptografia, E Intruso passivo: só escuta Intruso ativo: pode alterar mensagens Texto simples, P Texto simples, P Método de descriptografia, D Chave criptográfica, K Chave descriptográfica, K Texto cifrado, C = EK(P) Intruso Figura 8.1  O modelo de criptografia (para uma cifra de chave simétrica). 08_tanen0809_cap08 BR.indd 481 4/25/11 3:07 PM
  • 4. 482 Redes de computadores a saída do processo de criptografia, conhecida como texto cifrado (ou ciphertext), é transmitida, quase sempre por um mensageiro ou por rádio. Presumimos que o inimigo, ou intruso, ouça e copie cuidadosamente o texto cifrado completo. No entanto, ao contrário do destinatário preten- dido, ele não conhece a chave para descriptografar o texto e, portanto, não pode fazê-lo com muita facilidade. Às ve- zes, o intruso pode não só escutar o que se passa no canal de comunicação (intruso passivo) como também gravar mensagens e reproduzi-las mais tarde, injetar suas próprias ou modificar mensagens legítimas antes que elas cheguem ao receptor (intruso ativo). A arte de solucionar mensagens cifradas, conhecida como criptoanálise, e a arte de criar mensagens cifradas (criptografia) é chamada coletivamente criptologia. Com frequência, será útil e prático ter uma notação para estabelecer uma relação entre o texto simples, o texto cifrado e as chaves. Usaremos C = EK (P) para indicar que a criptografia do texto simples P usando a chave K gera o texto cifrado C. Da mesma forma, P = DK (C) representa a descriptografia de C para obter o texto simples outra vez. Então, temos: DK (EK (P)) = P Essa notação sugere que E e D são simplesmente fun- ções matemáticas, o que é verdade. A única parte compli- cada é que ambas são funções de dois parâmetros, e escre- vemos um desses parâmetros (a chave) como um caractere subscrito, em vez de representá-lo como um argumento, para distingui-lo da mensagem. Uma regra fundamental da criptografia é que se deve supor que o criptoanalista conhece os métodos genéricos de criptografia e descriptografia que são utilizados. Em ou- tras palavras, o criptoanalista conhece os detalhes de como funcionam o método de criptografia, E, e o método de des- criptografia D da Figura 8.1. O esforço necessário para criar, testar e instalar um novo algoritmo toda vez que o antigo método é (supostamente) comprometido sempre tornou impraticável manter o algoritmo criptográfico em segredo. Imaginar que esse algoritmo é secreto, quando não é, re- sulta mais em prejuízo do que em benefícios. É nesse ponto que entra a chave. A chave consiste em uma string (relativamente) curta que seleciona uma das muitas formas possíveis de criptografia. Ao contrário do método genérico, que só pode ser modificado a cada perío- do de alguns anos, a chave pode ser alterada sempre que necessário. Portanto, nosso modelo básico é um método genérico publicamente conhecido, parametrizado por uma chave secreta que pode ser alterada com facilidade. A ideia de que o criptoanalista conhece os algoritmos e que o se- gredo reside exclusivamente nas chaves é chamada princí- pio de Kerckhoff, em homenagem ao criptógrafo militar flamengo Auguste Kerckhoff que primeiro o enunciou em 1883 (Kerckhoff, 1883). Desse modo, temos: Princípio de Kerckhoff: Todos os algoritmos devem ser públi- cos; apenas as chaves são secretas Devemos enfatizar o caráter não sigiloso do algoritmo. Tentar manter o algoritmo secreto, uma estratégia conhe- cida no ramo como segurança pela obscuridade, nunca funciona. Além disso, ao tornar o algoritmo público, o es- pecialista em criptografia libera a consulta para inúmeros criptólogos ansiosos por decodificar o sistema e assim pu- blicar artigos demonstrando suas habilidades. Caso muitos especialistas tenham tentado decodificá-lo durante cinco anos após sua publicação e nenhum tenha conseguido, isso significa que o algoritmo é provavelmente sólido. Na verdade, o sigilo está na chave, e seu tamanho é uma questão muito importante do projeto. Considere uma fechadura de combinação simples. Segundo o princípio geral, você insere dígitos em sequência. Todo mundo sabe disso, mas a chave é secreta. Uma chave com um tamanho de dois dígitos significa que existem cem possibilidades. Uma de três dígitos significa mil possibilidades e uma de seis dígitos significa um milhão de possibilidades. Quanto maior for a chave, mais alto será o fator de trabalho com que o criptoanalista terá de lidar. O fator de trabalho para decodificar o sistema por meio de uma exaustiva pesquisa no espaço da chave é exponencial em relação a seu tama- nho. O sigilo é decorrente da presença de um algoritmo forte (mas público) e de uma chave longa. Para impedir que seu irmãozinho leia suas mensagens de correio eletrô- nico, serão necessárias chaves de 64 bits. Para uso comer- cial de rotina, devem ser usados pelo menos 128 bits. Para manter o governo de outros países à distância, são necessá- rias chaves de pelo menos 256 bits, de preferência maiores. Do ponto de vista do criptoanalista, o problema da criptoanálise apresenta três variações principais. Quando tem determinado volume de texto cifrado mas nenhum texto simples, o analista é confrontado com o problema do texto cifrado disponível. Os criptogramas da seção de palavras cruzadas do jornal são um exemplo desse tipo de problema. Quando há uma correspondência entre o texto cifrado e o texto simples, o problema passa a ser chamado de texto simples conhecido. Por fim, quando o cripto- analista tem a possibilidade de codificar trechos do texto simples escolhidos por ele mesmo, temos o problema do texto simples escolhido. Os criptogramas dos jornais po- deriam ser decodificados de forma trivial se o criptoanalista tivesse a permissão de fazer perguntas tais como: qual é a criptografia de ABCDEFGHIJKL? Com frequência, os novatos na área de criptografia pressupõem que, se uma cifra puder resistir a um ataque do texto cifrado disponível, isso significa que ela é segura. Essa suposição é muito ingênua. Em muitos casos, o crip- toanalista pode fazer uma estimativa com base em trechos do texto simples. Por exemplo, a primeira mensagem que muitos sistemas de tempo compartilhado emitem quando você os chama é ‘login:’. Equipado com alguns pares de 08_tanen0809_cap08 BR.indd 482 4/25/11 3:07 PM
  • 5. Capítulo 8   Segurança de redes 483 texto simples/texto cifrado, o trabalho do criptoanalista se torna muito mais fácil. Para ter segurança, o autor da crip- tografia deve ser conservador e se certificar de que o siste- ma seja inviolável, mesmo que seu oponente seja capaz de criptografar o texto simples escolhido. Historicamente, os métodos de criptografia têm sido divididos em duas categorias: as cifras de substituição e as cifras de transposição. Em seguida, trataremos de cada uma dessas técnicas como informações básicas para a criptogra- fia moderna. 8.1.2 Cifras de substituição Em uma cifra de substituição, cada letra ou grupo de letras é substituído por outra letra ou grupo de letras, de modo a criar um ‘disfarce’. Uma das cifras mais antigas é a cifra de César, atribuída a Julio César. Nesse método, a se torna D, b se torna E, c se torna F,... e z se torna C. Por exemplo, ataque passaria a ser DWDTXH. Em nossos exemplos, o texto simples é apresentado em minúsculas e o texto cifrado em maiúsculas. Uma ligeira generalização da cifra de César permite que o alfabeto do texto cifrado seja deslocado k letras, em vez de três. Nesse caso, k passa a ser uma chave para o mé- todo genérico dos alfabetos deslocados em forma circular. A cifra de César pode ter enganado Pompeu, mas nunca mais enganou ninguém. O próximo aprimoramento é fazer com que cada um dos símbolos do texto simples, digamos, as 26 letras, seja mapeado para alguma outra letra. Por exemplo texto simples: a b c d e f g h i j k l m n o p q r s t u v w x y z texto cifrado: Q W E R T Y U I O P A S D F G H J K L Z X C V B N M Esse sistema geral é chamado cifra de substituição monoalfabética, sendo a chave a string de 26 letras cor- respondente ao alfabeto completo. Para a chave anterior, o texto simples ataque seria transformado no texto cifrado QZQJXT. À primeira vista, talvez esse sistema pareça seguro, pois, apesar de conhecer o sistema genérico (substituição de letra por letra), o criptoanalista não sabe qual das 26! ≈ 4 × 1026 chaves possíveis está em uso. Ao contrário do que acontece com a cifra de César, experimentar todas elas não é uma es- tratégia muito promissora. Mesmo a 1 ns por solução, um milhão de chips de computador em paralelo demandariam 10 mil anos para que todas as chaves fossem experimentadas. Todavia, com um volume de texto cifrado surpreen- dentemente pequeno, a cifra pode ser descoberta com fa- cilidade. A estratégia básica se beneficia das propriedades estatísticas dos idiomas. Por exemplo, em inglês e é a letra mais comum, seguida de t, o, a, n, i etc. As combinações de duas letras, ou digramas, mais comuns são th, in, er, re e an. As combinações de três letras, ou trigramas, mais comuns são the, ing, and e ion. Um criptoanalista que tente decodificar uma cifra mo- noalfabética começaria contando as frequências relativas de todas as letras do texto cifrado. Depois disso, por tenta- tivas, ele atribuiria e à letra mais comum e t à próxima letra mais comum. Em seguida, verificaria os trigramas para en- contrar um no formato tXe, o que poderia sugerir que X é h. Da mesma forma, se o padrão thYt ocorrer com frequên- cia, provavelmente isso significará que Y representa a. Com essas informações, o criptoanalista poderá procurar por um trigrama com o formato aZW que ocorra com frequência (muito provavelmente and). Fazendo estimativas em rela- ção a digramas, trigramas e letras mais comuns, e conhe- cendo os prováveis padrões de vogais e consoantes, o crip- toanalista criaria um texto simples através de tentativas, letra por letra. Outra estratégia é adivinhar uma palavra ou frase pro- vável. Por exemplo, considere o seguinte texto cifrado de uma empresa de contabilidade (montado em grupos de cinco caracteres): CTBMN BYCTC BTJDS QXBNS GSTJC BTSWX CTQTZ CQVUJ QJSGS TJQZZ MNQJS VLNSX VSZJU JDSTS JQUUS JUBXJ DSKSU JSNTK BGAQJ ZBGYQ TLCTZ BNYBN QJSW Nos Estados Unidos, uma palavra muito provável em uma mensagem de uma empresa de contabilidade é finan- cial. Com base em nosso conhecimento de que financial tem um caractere repetido (i), com quatro outras letras entre suas ocorrências, procuramos letras repetidas no texto ci- frado com esse espaço entre elas. Encontramos 12 casos como esse nas posições 6, 15, 27, 31, 42, 48, 56, 66, 70, 71, 76 e 82. No entanto, apenas dois deles, 31 e 42, têm a letra seguinte (que corresponde a n no texto simples) repetida na localização adequada. Dessas duas, apenas 31 também tem a letra a corretamente posicionada; portanto, sabemos que financial começa na posição 30. Desse ponto em diante, fica fácil deduzir a chave utilizando a estatística de frequência para o texto em inglês e procurando palavras quase com- pletas para terminar. 8.1.3 Cifras de transposição As cifras de substituição preservam a ordem dos sím- bolos no texto simples, mas os disfarçam. Por outro lado, as cifras de transposição reordenam as letras, mas não as disfarçam. A Figura 8.2 mostra uma cifra de transposi- ção muito comum, a de colunas. A cifra se baseia em uma chave que é uma palavra ou frase que não contém letras repetidas. Nesse exemplo, a chave é MEGABUCK. O obje- tivo da chave é numerar as colunas de modo que a coluna 1 fique abaixo da letra da chave mais próxima do início do 08_tanen0809_cap08 BR.indd 483 4/25/11 3:07 PM
  • 6. 484 Redes de computadores alfabeto e assim por diante. O texto simples é escrito hori- zontalmente, em linhas. O texto cifrado é lido em colunas, a partir da coluna cuja letra da chave seja a mais baixa. Para quebrar uma cifra de transposição, o criptoanalis- ta deve primeiro estar ciente de lidar com tal cifra. Ao exa- minar a frequência de E, T, A, O, I, N etc., fica fácil consta- tar se essas letras se encaixam no padrão normal para texto simples. Se houver correspondência, isso significa que se trata sem dúvida de uma cifra de transposição, pois nesse tipo de cifra cada letra é representada por ela mesma, man- tendo intacta a distribuição de frequências. A próxima etapa é fazer uma estimativa do número de colunas. Em muitos casos, uma palavra ou frase provável pode ser deduzida a partir do contexto da mensagem. Por exemplo, suponha que nosso criptoanalista tenha suspei- tado de que a frase em texto simples milliondollars ocorre em algum lugar na mensagem. Observe que os digramas MO, IL, LL, LA, IR e OS ocorrem no texto cifrado como um resultado do desdobramento dessa frase. No texto ci- frado, a letra O vem depois da letra M (ou seja, elas são verticalmente adjacentes na coluna 4), pois estão separadas na provável frase por uma distância igual ao tamanho da chave. Se tivesse sido usada uma chave de tamanho sete, teriam surgido os digramas MD, IO, LL, LL, IA, OR e NS. Na verdade, para cada tamanho de chave, é produzido um conjunto de digramas diferente no texto cifrado. Ao tentar encontrar diferentes possibilidades, muitas vezes o criptoa­ nalista é capaz de determinar com facilidade o tamanho da chave. A última etapa é ordenar as colunas. Quando o núme- ro de colunas k é pequeno, cada um dos k(k - 1) pares de colunas pode ser examinado para que se constate se suas frequências de digramas correspondem às do texto simples em inglês. O par que tiver a melhor correspondência será considerado na posição correta. Em seguida, cada uma das colunas restantes é experimentada como sucessora desse par. A coluna cujas frequências de digramas e trigramas proporcionem a melhor correspondência será a título ex- perimental considerada correta. A próxima coluna é en- contrada da mesma maneira. O processo inteiro continua até ser encontrada uma ordenação potencial. O mais pro- vável é que o texto simples seja reconhecido nesse ponto (por exemplo, se ocorrer milloin, ficará claro qual é o erro). Algumas cifras de transposição aceitam um bloco de tamanho fixo como entrada e produzem um bloco de ta- manho fixo como saída. Essas cifras podem ser comple- tamente descritas fornecendo-se uma lista que informe a ordem na qual os caracteres devem sair. Por exemplo, a cifra da Figura 8.2 pode ser vista como uma cifra de blocos de 64 caracteres. Sua saída é 4, 12, 20, 28, 36, 44, 52, 60, 5, 13,..., 62. Em outras palavras, o quarto caractere de en- trada, a, é o primeiro a sair, seguido pelo décimo segundo, f, e assim por diante. 8.1.4 Chave única Na verdade, é fácil criar uma cifra inviolável; a técnica é conhecida há décadas. Primeiro, escolha como chave uma sequência de bits aleatórios. Em seguida, converta o texto simples em uma sequência de bits, utilizando por exemplo sua representação ASCII. Por fim, calcule o OU exclusivo (XOR) dessas duas sequências. O texto cifrado resultante não pode ser violado porque, em uma amostra grande o suficiente de texto cifrado, cada letra ocorrerá com a mes- ma frequência, bem como o digrama, o trigrama e assim por diante. Esse método, conhecido como chave única, é imune a todos os ataques presentes e futuros, não importa quanta capacidade computacional tenha o intruso. A razão deriva da teoria da informação: simplesmente não existe ne- nhuma informação na mensagem, todos os textos simples possíveis com o tamanho dado são igualmente prováveis. Um exemplo de como as chaves únicas são usadas é dado na Figura 8.3. Primeiro, a mensagem 1, ‘I love you’, é con- vertida em ASCII de 7 bits. Em seguida, uma chave única, chamada chave 1, é escolhida e sujeita à operação XOR com a mensagem para obter o texto cifrado. Um criptoanalista po- deria experimentar todas as chaves únicas possíveis para ver que texto resultou para cada uma. Por exemplo, a chave úni- ca listada como chave 2 na figura poderia ser experimentada, resultando no texto simples 2, ‘Elvis lives’ [Elvis não morreu], que pode ser ou não plausível (um assunto que está além do escopo deste livro). De fato, para cada texto simples ASCII de 11 caracteres, existe uma chave única que o gera. É isso que queremos dizer quando mencionamos que não existe ne- nhuma informação no texto cifrado: é possível obter qualquer mensagem com o tamanho correto a partir dele. As chaves únicas são ótimas na teoria, mas têm várias desvantagens na prática. Para começar, não pode ser me- morizada; então, tanto o remetente quanto o destinatário devem levar uma cópia escrita com eles. Se qualquer um dos dois estiver sujeito à possibilidade de captura, as chaves es- critas sem dúvida serão inconvenientes. Além disso, a quan- tidade total de dados que podem ser transmitidos é limitada pelo tamanho da chave disponível. Se o espião tiver muita sorte e descobrir uma grande quantidade de dados, talvez M E G A B U C K 7 4 5 1 2 8 3 6 p l e a s e t r Texto simples pleasetransferonemilliondollarsto myswissbankaccountsixtwotwo Texto cifrado AFLLSKSOSELAWAIATOOSSCTCLNMOMANT ESILYNTWRNNTSOWDPAEDOBUOERIRICXB a n s f e r o n e m i l l i o n d o l l a r s t o m y s w i s s b a n k a c c o u n t s i x t w o t w o a b c d Figura 8.2  Uma cifra de transposição. 08_tanen0809_cap08 BR.indd 484 4/25/11 3:07 PM
  • 7. Capítulo 8   Segurança de redes 485 seja incapaz de transmiti-los de volta para a matriz, porque a chave terá sido consumida. Outro problema é a sensibili- dade do método para caracteres perdidos ou inseridos. Se o transmissor e o receptor ficarem fora de sincronismo, todos os dados a partir desse momento se parecerão com lixo. Com o advento dos computadores, a chave única se tornou potencialmente prática para algumas aplicações. A origem da chave poderia ser um DVD especial contendo vários gigabytes de informações que, se fossem transpor- tadas em uma caixa de filmes em DVD e tivessem no iní- cio alguns minutos de vídeo, nem sequer seriam suspeitas. É claro que, nas redes de gigabits, ter de inserir um novo DVD a cada 30 segundos seria algo entediante. Além disso, os DVDs devem ser transportados em mãos, do transmissor para o receptor, antes de ser possível enviar qualquer men- sagem, o que reduz bastante sua utilidade prática. Criptografia quântica É interessante, mas talvez haja uma solução para o problema de como transmitir a chave única pela rede, e ela vem de uma fonte muito improvável: a mecânica quântica. Essa área ainda é experimental, mas os testes iniciais são promissores. Se eles puderem ser aperfeiçoados e se tor- narem eficientes, quase toda a criptografia será realizada por fim com a utilização de chaves únicas, pois é provável que elas sejam seguras. A seguir, explicaremos em linhas gerais como funciona esse método, denominado cripto- grafia quântica. Em particular, descreveremos um proto- colo chamado BB84 para indicar seus autores e o ano da publicação (Bennet e Brassard, 1984). Uma usuária chamada Alice quer estabelecer uma cha- ve única com um segundo usuário, Bob. Alice e Bob são chamados protagonistas, os personagens principais de nossa história. Por exemplo, Bob é um gerente de banco com quem Alice gostaria de realizar negócios. Os nomes ‘Alice’ e ‘Bob’ foram usados como protagonistas em prati- camente todos os ensaios e livros sobre criptografia desde que Ron Rivest os apresentou há muitos anos (Rivest et al., 1978). Os criptógrafos amam a tradição. Se fôssemos usar ‘Andy’ e ‘Barbara’ como protagonistas, ninguém acredita- ria em nada do que fosse explicado neste capítulo. Então, que seja! Se Alice e Bob pudessem estabelecer uma chave úni- ca, eles teriam a possibilidade de empregá-la para se co- municar com segurança. A pergunta é: como eles podem estabelecê-la sem antes trocar DVDs? Podemos supor que Alice e Bob estejam em extremidades opostas de um cabo de fibra óptica pelo qual possam enviar e receber pulsos de luz. Porém, uma intrusa atrevida chamada Trudy pode cortar a fibra e criar um grampo ativo. Trudy pode ler todos os bits em ambos os sentidos. Ela também pode enviar fal- sas mensagens nos dois sentidos. A situação pode parecer desesperadora para Alice e Bob, mas a criptografia quântica pode trazer uma nova luz sobre o assunto. A criptografia quântica se baseia no fato de que a luz se propaga em pequenos pacotes chamados fótons, que apresentam algumas propriedades peculiares. Além disso, a luz pode ser polarizada ao passar por um filtro de pola- rização, um fato bem conhecido pelos usuários de óculos de sol e pelos fotógrafos. Se um feixe de luz (isto é, um fluxo de fótons) passar por um filtro de polarização, todos os fótons que emergirem dele serão polarizados na direção do eixo do filtro (por exemplo, vertical). Se o feixe passar agora por um segundo filtro de polarização, a intensidade da luz que emergirá do segundo filtro será proporcional ao quadrado do cosseno do ângulo entre os eixos. Se os dois eixos forem perpendiculares, nenhum fóton passará pelo filtro. A orientação absoluta dos dois filtros não importa; só interessa o ângulo entre seus eixos. Para gerar uma chave única, Alice precisa de dois conjuntos de filtros de polarização. O primeiro conjunto consiste em um filtro vertical e um filtro horizontal. Essa escolha é chamada base retilínea. Uma base é apenas um sistema de coordenadas. O segundo conjunto de filtros é idêntico, exceto por estar deslocado 45 graus, de forma que um filtro abrange desde o canto inferior esquerdo até o canto superior direito, e o outro abrange desde o canto superior esquerdo até o canto inferior direito. Essa escolha é chamada base diagonal. Desse modo, Alice tem duas ba- ses, que ela pode inserir rapidamente em seu feixe, à von- tade. Na realidade, ela não tem quatro filtros separados, mas um cristal, cuja polarização pode ser trocada eletrica- mente para qualquer das quatro direções permitidas, em alta velocidade. Bob tem o mesmo equipamento de Alice. Mensagem 1: 1001001 0100000 1101100 1101111 1110110 1100101 0100000 1111001 1101111 1110101 0101110 Chave 1: 1010010 1001011 1110010 1010101 1010010 1100011 0001011 0101010 1010111 1100110 0101011 Texto cifrado: 0011011 1101011 0011110 0111010 0100100 0000110 0101011 1010011 0111000 0010011 0000101 Chave 2: 1011110 0000111 1101000 1010011 1010111 0100110 1000111 0111010 1001110 1110110 1110110 Texto simples 2: 1000101 1101100 1110110 1101001 1110011 0100000 1101100 1101001 1110110 1100101 1110011 Figura 8.3  O uso de uma chave única para criptografia e a possibilidade de conseguir qualquer texto simples que seja possível a partir do texto cifrado pela utilização de alguma outra chave. 08_tanen0809_cap08 BR.indd 485 4/25/11 3:07 PM
  • 8. 486 Redes de computadores O fato de Alice e Bob terem cada um duas bases disponíveis é essencial para a criptografia quântica. Para cada base, Alice atribui agora uma direção como 0 e a outra como 1. No exemplo apresentado a seguir, vamos supor que ela escolha a direção vertical como 0 e a hori- zontal como 1. Independentemente, ela também escolhe do canto inferior esquerdo até o canto superior direito como 0, e do canto superior esquerdo até o canto inferior direito como 1. Alice envia essas escolhas a Bob como texto simples. Agora, Alice escolhe uma chave única, baseada, por exemplo, em um gerador de números aleatórios (um as- sunto por si só bastante complexo). Ela o transfere bit por bit para Bob, escolhendo uma de suas bases ao acaso para cada bit. Para enviar um bit, sua pistola de fótons emite um fóton polarizado de maneira apropriada, conforme a base que ela está usando para esse bit. Por exemplo, ela poderia escolher as bases diagonal, retilínea, retilínea, dia- gonal, retilínea etc. Para enviar sua chave única igual a 1001110010100110 com essas bases, ela enviaria os fótons mostrados na Figura 8.4(a). Dadas a chave única e a sequ- ência de bases, a polarização a ser usada para cada bit é determinada de forma exclusiva. Bits enviados um fóton por vez são chamados qubits (bits quânticos). Bob não sabe que base usar, e assim escolhe uma ao acaso para cada fóton que chega e simplesmente a utiliza, como mostra a Figura 8.4(b). Se escolher a base correta, ele receberá o bit correto. Se escolher a base incorreta, receberá um bit aleatório porque, se um fóton acessar um filtro pola- rizado a 45 graus em relação a sua própria polarização, ele saltará ao acaso para a polarização do filtro ou para uma po- larização perpendicular à do filtro, com igual probabilidade. Essa propriedade dos fótons é fundamental para a mecânica quântica. Desse modo, alguns bits estão corretos e alguns são aleatórios, mas Bob não consegue distingui-los. Os re- sultados de Bob estão representados na Figura 8.4(c). De que maneira Bob pode descobrir quais são as bases corretas e quais são as erradas entre as que recebeu? Ele apenas diz a Alice que base usou para cada bit em texto simples, e ela lhe diz quais são as bases corretas e quais são as erradas em texto simples, como mostra a Figura 8.4(d). A partir dessas informações, ambos podem construir uma sequência de bits com os palpites corretos, como mostra a Figura 8.4(e). Em média, essa sequência de bits terá metade do comprimento da sequência de bits original, mas, como ambas as partes o conhecem, elas poderão usá-lo como uma chave única. Tudo o que Alice tem a fazer é transmitir uma sequência de bits um pouco maior que o dobro do ta- manho desejado, para que ela e Bob tenham uma chave única com o comprimento apropriado. Problema resolvido. Mas espere um minuto. Esquecemos de Trudy. Vamos supor que ela esteja curiosa para saber o que Alice tem a dizer e corte o cabo de fibra, inserindo seus próprios detector e transmissor. Infelizmente para Trudy, ela também não sabe que base usar para cada fóton. O melhor que ela pode fazer é escolher uma base ao acaso para cada um dos fótons, como fez Bob. Um exemplo de suas escolhas é mostrado na Figura 8.4(f). Quando mais tarde Bob informar (em texto simples) que bases usou e Alice disser a ele (em texto simples) quais delas estão corretas, Trudy saberá quando acertou e quando errou. Segundo a Figura 8.4, ela acertou nos bits 0, 1, 2, 3, Chave de Trudy (g) x 0 x 1 x x x ? 1 x ? ? 0 x ? 0 1 0 1 1 0 0 1 x Não Sim Não Sim Não Não Não Sim Sim Não Sim Sim Sim Não Sim Não Número do bit Dados Bases de Trudy (f) Chave única (e) Base correta? (d) O que Bob recebe (c) Bases de Bob (b) O que Alice envia (a) 1 0 0 1 1 1 0 0 1 0 1 0 0 1 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Figura 8.4  Um exemplo de criptografia quântica. 08_tanen0809_cap08 BR.indd 486 4/25/11 3:07 PM
  • 9. Capítulo 8   Segurança de redes 487 4, 6, 8, 12 e 13. No entanto, ela sabe pela resposta de Alice na Figura 8.4(d) que só os bits 1, 3, 7, 8, 10, 11, 12 e 14 fazem parte da chave única. Em quatro desses bits (1, 3, 8 e 12), ela acertou seu palpite e capturou o bit correto. Nos outros quatro (7, 10, 11 e 14), ela errou e não sabe qual bit foi transmitido. Desse modo, Bob sabe que a chave única começa com 01011001, a partir da Figura 8.4(e), mas tudo que Trudy tem é 01?1??0?, a partir da Figura 8.4(g). É claro que Alice e Bob estão cientes de que Trudy talvez tenha captado parte de sua chave única, e assim gostariam de reduzir as informações que ela tem. Eles podem fazer isso executando uma transformação na chave. Por exem- plo, poderiam dividir a chave única em blocos de 1.024 bits e elevar ao quadrado cada uma para formar um número de 2.048 bits, usando a concatenação desses números de 2.048 bits como a chave única. Com seu conhecimento parcial da sequência de bits transmitida, Trudy não tem como gerar seu quadrado e, portanto, não tem nada. A transformação da chave única original em uma chave diferente que redu- za o conhecimento de Trudy é chamada amplificação de privacidade. Na prática, são usadas transformações com- plexas em que todo bit de entrada depende de cada bit de saída em vez do quadrado do bit de entrada. Pobre Trudy. Ela não apenas não tem nenhuma ideia de qual é a chave única, como também sua presença não é mais secreta. Afinal, ela tem de retransmitir cada bit recebido para Bob, a fim de levá-lo a pensar que está se comunicando com Alice. Porém, o melhor que pode fazer é transmitir o qubit que recebeu usando a mesma polarização que empregou para recebê-lo, e durante cerca de metade do tempo ela esta- rá errada, provocando muitos erros na chave única de Bob. Quando finalmente começar a transmitir dados, Alice os codificará usando um pesado código de correção ante- cipada de erros. Do ponto de vista de Bob, um erro de 1 bit na chave única é o mesmo que um erro de transmissão de 1 bit. De qualquer modo, ele receberá o bit errado. Se houver correção antecipada de erros suficiente, ele poderá recuperar a mensagem original apesar de todos os erros, mas poderá contar com facilidade quantos erros foram cor- rigidos. Se esse número for muito maior que a taxa de erros esperada do equipamento, ele saberá que Trudy grampeou a linha e poderá tomar providências (por exemplo, infor- mando Alice de que ela deve mudar para um canal de rá- dio, chamar a polícia etc.). Se Trudy tivesse um meio de clonar fótons, de forma que tivesse um para inspecionar e um idêntico para enviar a Bob, poderia evitar a detecção, mas no momento não se conhece nenhum modo perfeito de clonar um fóton. No entanto, mesmo que Trudy pudes- se fazê-lo, o valor da criptografia quântica para estabelecer chaves únicas não seria reduzido. Embora a criptografia quântica opere sobre distâncias de até 60 km de fibra, o equipamento é complexo e dispen- dioso. Ainda assim, a ideia é promissora. Para obter mais informações sobre a criptografia quântica, consulte Mullins (2002). 8.1.5 Dois princípios fundamentais da criptografia Ainda estudaremos muitos sistemas criptográficos nas próximas páginas, mas é importante entender dois princí- pios básicos subjacentes a todos eles. Preste atenção. Você correrá risco ao violá-los. Redundância O primeiro princípio é que todas as mensagens crip- tografadas devem conter alguma redundância, ou seja, in- formações que não são necessárias para a compreensão da mensagem. Talvez um exemplo esclareça por que isso é ne- cessário. Considere uma empresa de encomendas postais, a Expresso Jabuti (EJ), com 60 mil produtos. Pensando ser muito eficientes, os programadores da EJ decidiram que as mensagens de encomendas devem consistir no nome do cliente com 16 bytes, seguido por um campo de dados de 3 bytes (um para a quantidade e dois para o número do produto). Os 3 últimos bytes devem ser criptografados por meio de uma chave muito longa conhecida apenas pelo cliente e pela EJ. A princípio, essa estratégia pode parecer segura, e até certo ponto isso acontece, porque os intrusos passivos não podem descriptografar as mensagens. Infelizmente, há uma falha fatal que a torna inútil. Suponha que uma funcioná- ria recém-demitida queira punir a EJ por tê-la despedido. Antes de sair da empresa, ela leva consigo parte da lista de clientes e passa a noite acordada criando um programa para gerar encomendas fictícias utilizando nomes de clien- tes verdadeiros. Como não tem a lista das chaves, ela sim- plesmente inclui números aleatórios nos três últimos bytes e envia centenas de encomendas para a EJ. Quando as mensagens chegam, o computador da EJ utiliza o nome do cliente para localizar a chave e descripto- grafar a mensagem. Infelizmente para a EJ, quase todas as mensagens de 3 bytes são válidas; portanto, o computador começa a imprimir as instruções de entrega. Apesar de pa- recer estranho um cliente encomendar 837 conjuntos de balanços para crianças, ou 540 caixas de areia, para o com- putador, o cliente pode estar planejando abrir uma cadeia de parques de diversões por franquia. Portanto, um intru- so ativo (a ex-funcionária) pode causar muitos problemas, mesmo que não seja capaz de entender as mensagens que seu computador está gerando. Esse problema pode ser resolvido por meio da inclu- são de informações redundantes em todas as mensagens. Por exemplo, se as mensagens de pedidos forem amplia- das para 12 bytes, os 9 primeiros deverão ser iguais a zero; assim, essa estratégia de ataque deixa de ser interessante, porque a ex-funcionária não é mais capaz de gerar um lon- go fluxo de mensagens válidas. A moral da história é que todas as mensagens devem conter informações redundan- tes suficientes para que os intrusos ativos sejam impedidos de transmitir dados inválidos que possam ser interpretados como uma mensagem válida. 08_tanen0809_cap08 BR.indd 487 4/25/11 3:07 PM
  • 10. 488 Redes de computadores No entanto, a inclusão de informações redundantes também facilita a quebra de mensagens por parte dos criptoanalistas. Suponha que o negócio de encomenda postal seja muito competitivo e que a principal concorren- te da Expresso Jabuti, a Tartaruga Entregas, adoraria saber quantas caixas de areia a EJ está vendendo. Para isso, re- solve grampear a linha telefônica da EJ. No esquema ori- ginal com mensagens de 3 bytes, a criptoanálise era prati- camente impossível porque, após descobrir uma chave, o criptoanalista não era capaz de dizer se a mensagem esta- va correta. Afinal de contas, quase todas as mensagens são tecnicamente válidas. Com o novo esquema de 12 bytes, fica mais fácil para o criptoanalista distinguir uma mensa- gem válida de uma inválida. Desse modo, temos: Princípio criptográfico 1: as mensagens devem conter alguma redundância Em outras palavras, ao decifrar uma mensagem, o destinatário deve ser capaz de saber se ela é válida, sim- plesmente inspecionando-a e talvez executando uma com- putação simples. Essa redundância é necessária para impe- dir que intrusos ativos enviem lixo e enganem o receptor, fazendo-o descriptografar o lixo e agir sobre o ‘texto sim- ples’. No entanto, essa mesma redundância permite que os intrusos passivos entrem no sistema com maior facilidade; portanto, há uma zona de tensão nessa situação. Além dis- so, a redundância nunca deverá ser criada sob a forma de n zeros no início ou no fim de uma mensagem, pois o envio dessas mensagens a determinados algoritmos criptográfi- cos proporciona resultados mais previsíveis, facilitando o trabalho do criptoanalista. Um polinômio de CRC é muito melhor que uma sequência de valores zero, pois o receptor pode verificá-lo facilmente, mas gerará mais trabalho para o criptoanalista. Seria muito melhor usar um hash cripto- gráfico, conceito que exploraremos mais adiante. Por en- quanto, pense nele como um CRC melhor. Voltando à criptografia quântica por um momento, também podemos ver como a redundância desempenha um papel importante. Devido à interceptação dos fótons por Trudy, alguns bits na chave única de Bob estarão er- rados. Bob precisa de alguma redundância nas mensagens de entrada para descobrir os erros presentes. Uma forma muito rudimentar de redundância é repetir a mensagem duas vezes. Se as duas cópias não forem idênticas, Bob saberá que a fibra tem muito ruído, ou que alguém está interferindo na transmissão. É claro que enviar tudo duas vezes é um exagero; um código de Hamming ou de Reed- -Solomon é um modo mais eficiente de realizar a detecção e correção de erros. Porém, deve ficar claro que alguma redundância é necessária para distinguir uma mensagem válida de uma mensagem inválida, em especial diante de um intruso ativo. Atualidade O segundo princípio criptográfico é tomar algumas medidas para assegurar que cada mensagem recebida pos- sa ser confirmada como uma mensagem atual, isto é, en- viada muito recentemente. Essa medida é necessária para impedir que intrusos ativos reutilizem mensagens antigas. Se tais medidas não fossem tomadas, nossa ex-funcionária poderia interceptar a linha telefônica da EJ e ficar simples- mente repetindo mensagens válidas já enviadas. Assim: Princípio criptográfico 2: algum método é necessário para anular ataques de repetição Uma medida desse tipo seria incluir em cada mensa- gem um registro de tempo válido apenas por, digamos, 10 segundos. Em seguida, o receptor poderia manter as men- sagens durante 10 segundos, a fim de comparar as mensa- gens recém-chegadas com as anteriores e filtrar duplicatas. As mensagens transmitidas há mais de 10 segundos pode- riam ser descartadas, pois as repetições enviadas mais de 10 segundos depois da mensagem original serão rejeitadas por ser muito antigas. Outras medidas além dos registros de tempo serão discutidas mais adiante. 8.2 Algoritmos de chave simétrica Embora a criptografia moderna utilize as mesmas ideias básicas da criptografia tradicional (transposição e substituição), sua ênfase é diferente. Tradicionalmente, os criptógrafos têm utilizado algoritmos simples. Hoje em dia, acontece o inverso: o objetivo é tornar o algoritmo de crip- tografia tão complexo e emaranhado que, mesmo que o criptoanalista adquira enormes volumes de texto cifrado a sua própria escolha, sem a chave ele não seja capaz de en- tender nada do que conseguir. A primeira classe de algoritmos de criptografia que es- tudaremos neste capítulo é a dos algoritmos de chave si- métrica, porque utilizam a mesma chave para codificação e decodificação. A Figura 8.1 ilustra o uso de um algoritmo de chave simétrica. Em particular, vamos nos concentrar nos blocos de cifras, que obtêm um bloco de n bits de tex- to simples como entrada e o transformam usando a chave em um bloco de n bits de texto cifrado. Os algoritmos criptográficos podem ser implementados em hardware (para obter velocidade) ou em software (para obter flexibilidade). Embora a maior parte de nosso trata- mento esteja relacionado aos algoritmos e protocolos, que são independentes da implementação real, algumas pala- vras sobre a construção de hardware criptográfico podem ser interessantes. As transposições e substituições podem ser implementadas com circuitos elétricos simples. A Fi- gura 8.5(a) mostra um dispositivo, conhecido como caixa P (onde P significa permutação), usado para efetuar uma transposição em uma entrada de 8 bits. Se os 8 bits forem 08_tanen0809_cap08 BR.indd 488 4/25/11 3:07 PM
  • 11. Capítulo 8   Segurança de redes 489 designados de cima para baixo como 01234567, a saída des- sa caixa P específica será 36071245. Com uma conexão in- terna adequada, pode-se criar uma caixa P para executar qualquer transposição praticamente na velocidade da luz, pois nenhuma computação é envolvida, apenas a propaga- ção de sinais. Esse projeto segue o princípio de Kerckhoff: o atacante sabe que o método geral é permutar os bits. O que ele não sabe é qual bit fica em cada posição. As substituições são realizadas por caixas S, como mos- tra a Figura 8.5(b). Nesse exemplo, é introduzido um texto simples de 3 bits, e a saída é um texto cifrado de 3 bits. A entrada de 3 bits seleciona uma das oito linhas de saída do primeiro estágio e a define como 1; todas as outras são iguais a 0. O segundo estágio é uma caixa P. O terceiro estágio codi- fica a linha selecionada novamente em binário. Com a cone- xão interna mostrada, se os oito números octais 01234567 fossem introduzidos um após o outro, a sequência de saída seria 24506713. Em outras palavras, 0 foi substituído por 2, 1 foi substituído por 4 etc. Mais uma vez, com a conexão apropriada da caixa P dentro da caixa S, qualquer substitui- ção pode ser realizada. Além disso, tal dispositivo pode ser construído em hardware e consegue alcançar grande veloci- dade, pois os codificadores e os decodificadores têm apenas um ou dois atrasos nas interfaces de entrada e saída (abaixo de um nanossegundo) e o tempo de propagação pela caixa P pode ser menor que 1 picossegundo. A capacidade real desses elementos básicos se torna aparente quando dispomos uma série inteira de caixas em cascata para formar uma cifra-produto, como mostra a Figura 8.5(c). Nesse exemplo, 12 linhas de entrada são transpostas (isto é, permutadas) pelo primeiro estágio (P1 ). No segundo estágio, a entrada é dividida em quatro grupos de 3 bits, sendo que cada um deles é substituído de forma independente dos outros (S1 a S4 ). Esse arranjo mostra um método de aproximar uma caixa S maior a partir de várias caixas S menores. Ele é útil porque caixas S menores são práticas para a implementação pelo hardware (por exem- plo, uma caixa S de 8 bits pode ser observada como uma tabela de pesquisa de 256 entradas), mas caixas S grandes se tornam difíceis de criar (por exemplo, uma caixa S de 12 bits, no mínimo, precisaria de 212 = 4.096 fios cruzados em seu estágio intermediário). Apesar de ser menos gené- rico, esse método ainda é poderoso. Através da inclusão de um número de estágios suficientemente grande na cifra- -produto, a saída pode ser transformada em uma função excessivamente complicada da entrada. As cifras-produto que operam sobre entradas de k bits para produzir saídas de k bits são muito comuns. Em geral, o valor de k varia de 64 a 256. Uma implementação de hardware normalmente tem pelo menos 18 estágios físicos, em vez de apenas sete, como na Figura 8.5(c). Uma imple- mentação de software é programada como um loop com pelo menos 8 iterações, cada uma executando substituições semelhantes às de caixas S em sub-blocos do bloco de da- dos de 64 bits a 256 bits, seguidas por uma permutação que mistura as saídas das caixas S. Com frequência, existe uma permutação especial no início e também uma no fim. Na literatura, as repetições são chamadas rodadas. 8.2.1 DES — Data Encryption Standard Em janeiro de 1977, o governo dos Estados Unidos adotou uma cifra-produto desenvolvida pela IBM como seu padrão oficial para informações não confidenciais. A cifra, o padrão de criptografia de dados, ou DES (Data En- cryption Standard), foi amplamente adotada pelo setor de informática para uso em produtos de segurança. Em sua forma original, ela já não é mais segura; no entanto, em uma forma modificada ela ainda é útil. Agora, vamos ex- plicar como o DES funciona. Na Figura 8.6(a), mostramos um esboço do DES. O texto simples é criptografado em blocos de 64 bits, produ- zindo 64 bits de texto cifrado. O algoritmo, parametrizado por uma chave de 56 bits, tem 19 estágios distintos. O pri- meiro deles é uma transposição independente da chave no texto simples de 64 bits. O último estágio é exatamente o inverso dessa transposição. O penúltimo estágio troca os 32 bits mais à esquerda pelos 32 bits mais à direita. Os 16 estágios restantes são funcionalmente idênticos, mas são parametrizados por diferentes funções da chave. O algo- ritmo foi projetado para permitir que a decodificação fosse feita com a mesma chave da codificação, uma propriedade necessária em qualquer algoritmo de chave simétrica. As etapas são executadas na ordem inversa. A operação desses estágios intermediários é ilustrada na Figura 8.6(b). Cada estágio utiliza duas entradas de 32 bits e S1 S2 P1 P4 P3 P2 S3 S4 S5 S6 S7 S8 Cifra-produto (c) Caixa S Decodificador: 3 para 8 Codificador: 8 para 3 (b) Caixa P (a) S9 S10 S11 S12 Figura 8.5  Elementos básicos das cifras-produto. (a) Caixa P. (b) Caixa S. (c) Produto. 08_tanen0809_cap08 BR.indd 489 4/25/11 3:07 PM
  • 12. 490 Redes de computadores produz duas saídas de 32 bits. A saída da esquerda é apenas uma cópia da saída da direita. A saída da direita é formada pelo resultado do OU exclusivo bit a bit aplicado à entrada da esquerda e a uma função de entrada da direita com a chave desse estágio, Ki . Toda a complexidade reside nessa função. A função consiste em quatro etapas, executadas em se- quência. Primeiro, um número de 48 bits, E, é construído através da expansão do Ri -1 de 32 bits, de acordo com uma regra fixa de transposição e duplicação. Em segundo lugar, E e Ki são submetidos a uma operação XOR. Em seguida, essa saída é dividida em oito grupos de 6 bits, sendo cada um deles entregue a uma caixa S diferente. Cada uma das 64 en- tradas possíveis para uma caixa S é mapeada em uma saída de 4 bits. Por fim, esses 8 × 4 bits passam por uma caixa P. Em cada uma das 16 iterações, é utilizada uma chave diferente. Antes de se iniciar o algoritmo, é aplicada à cha- ve uma transposição de 56 bits. Antes de cada iteração, a chave é particionada em duas unidades de 28 bits, sendo cada uma delas girada à esquerda um número de bits que depende do número da iteração. Ki é derivada dessa chave girada, pela aplicação de mais uma transposição de 56 bits sobre ela. Em cada rodada, um novo subconjunto de 48 bits dos 56 bits é extraído e permutado. Uma técnica às vezes utilizada para tornar o DES mais forte é chamada clareamento. Ela consiste em operação XOR entre uma chave aleatória de 64 bits e cada bloco de texto simples, antes de sua entrega ao DES, e depois em uma operação XOR entre uma segunda chave de 64 bits e o texto cifrado resultante, antes de sua transmissão. O clarea- mento pode ser removido com facilidade pela execução das operações inversas (se o receptor tiver as duas chaves de clareamento). Como essa técnica acrescenta efetivamente mais bits ao tamanho da chave, ela torna uma pesquisa exaustiva do espaço de chaves muito mais demorada. Ob- serve que a mesma chave de clareamento é utilizada para cada bloco (isto é, só existe uma chave de clareamento). O DES esteve envolvido em controvérsias desde seu lançamento. Ele se baseia em uma cifra desenvolvida e pa- tenteada pela IBM, cujo nome é Lucifer. A diferença é que a cifra da IBM utilizava uma chave de 128 bits, em vez de uma chave de 56 bits. Quando quis padronizar o uso de uma cifra para informações não confidenciais, o governo dos Estados Unidos ‘convidou’ a IBM para ‘discutir’ o pro- blema com a NSA, o órgão do governo especializado em decifrar códigos, que é o maior empregador de matemá- ticos e criptólogos do mundo. A NSA é tão secreta que no setor existe a seguinte brincadeira com seu nome: P: O que significa NSA? R: No Such Agency (em português: não existe tal agência). Na verdade, NSA significa National Security Agency (Agên- cia de Segurança Nacional). Após essas discussões, a IBM reduziu a chave de 128 para 56 bits e decidiu manter em segredo o processo se- (b) (a) Transposição inicial Iteração 16 Li-1 f(Ri-1, Ki) Ri-1 Li-1 Texto simples em 64 bits Texto cifrado de 64 bits 32 bits Li 32 bits Ri Iteração 2 Iteração 1 Chave de 56 bits Troca de 32 bits Transposição inversa Figura 8.6  O Data Encryption Standard. (a) Esboço geral. (b) Detalhe de uma iteração. O sinal de adição dentro do círculo significa OU exclusivo (XOR). 08_tanen0809_cap08 BR.indd 490 4/25/11 3:08 PM
  • 13. Capítulo 8   Segurança de redes 491 gundo o qual o DES foi projetado. Muita gente suspeitou de que o tamanho da chave tinha sido reduzido para ga- rantir que a NSA pudesse decifrar o DES, mas nenhu- ma organização com um orçamento menor foi capaz de fazê-lo. Supostamente, o motivo para manter o projeto em segredo foi ocultar uma porta dos fundos que pu- desse facilitar ainda mais a decifração do DES por parte da NSA. Quando um funcionário da NSA disse discreta- mente para o IEEE (Institute of Electrical and Electronic Engineers) cancelar uma conferência sobre criptografia, as pessoas ficaram ainda mais embaraçadas com a situa- ção. A NSA negou tudo. Em 1977, dois pesquisadores de criptografia de Stan- ford, Diffie e Hellman (1977), projetaram uma máquina para decifrar o DES e estimaram que ela poderia ser mon- tada por um custo de 20 milhões de dólares. Com base em um pequeno trecho de texto simples e no texto cifrado correspondente, tal máquina poderia descobrir a chave através de uma pesquisa exaustiva do espaço de chaves de 256 entradas em menos de um dia. Atualmente, já se pode brincar. A máquina existe, está à venda e custa menos de US$ 10.000 para ser fabricada (Kumar et al., 2006). DES triplo No início de 1979, a IBM percebeu que o tamanho da chave do DES era muito pequeno e criou uma forma de au- mentá-lo usando a criptografia tripla (Tuchman, 1979). O método escolhido, que desde então foi incorporado ao pa- drão internacional 8732, está ilustrado na Figura 8.7. Nesse caso, são usados três estágios e duas chaves. No primeiro estágio, o texto simples é criptografado com K1 da maneira usual do DES. No segundo estágio, o DES é executado no modo de descriptografia, com o uso de K2 como chave. Por fim, outra criptografia DES é feita com K1 . Esse projeto levanta duas questões. Primeiro, por que são utilizadas apenas duas chaves em vez de três? Segundo, por que foi usado EDE (Encrypt Decrypt Encrypt) em vez de EEE (Encrypt Encrypt Encrypt)? São utilizadas duas chaves porque até mesmo os criptógrafos mais paranoi- cos concordam que 112 bits serão suficientes para aplicações comerciais durante um bom tempo. (E, entre os criptógra- fos, a paranoia é considerada um recurso, não um bug.) O uso de 168 bits só criaria overhead desnecessário para geren- ciar e transportar outra chave, com pouco ganho real. O motivo para criptografar, descriptografar e criptogra- far mais uma vez é a compatibilidade com os sistemas DES de chave única existentes. Tanto as funções de criptografia quanto as de descriptografia são mapeamentos entre conjun- tos de números de 64 bits. Do ponto de vista da criptogra- fia, os dois mapeamentos são igualmente fortes. No entanto, ao usar EDE em vez de EEE, um computador que utiliza a criptografia tripla pode se comunicar com outro que utiliza a criptografia simples apenas definindo K1 = K2 . Essa proprie- dade permite que a criptografia tripla seja implantada gra- dualmente, o que não interessa aos criptógrafos acadêmicos, mas é de grande importância para a IBM e seus clientes. 8.2.2 AES — Advanced Encryption Standard À medida que a vida útil do DES começou a se aproxi- mar do fim, mesmo com o DES triplo, o NIST (National Institute of Standards and Technology), o órgão do departamento de comércio dos Estados Unidos encarrega- do de aprovar padrões, decidiu que o governo precisava de um novo padrão criptográfico para uso não confiden- cial. O NIST estava ciente de toda a controvérsia que cer- cava o DES e sabia muito bem que, se anunciasse um novo padrão, todas as pessoas com algum conhecimento sobre criptografia logo concluiriam que a NSA havia criado uma porta dos fundos no DES, e assim poderia ler tudo que fosse criptografado com ele. Em tais condições, talvez ninguém utilizasse o padrão e seria mais provável que ele desapare- cesse. Dessa forma, o NIST adotou uma estratégia diferente e surpreendente para um órgão do governo: patrocinou uma competição de criptografia. Em janeiro de 1997, pesquisado- res do mundo inteiro foram convidados a submeter propos- tas para um novo padrão, a ser chamado AES (Advanced Encryption Standard). As regras dessa competição eram: 1. o algoritmo teria de ser uma cifra de bloco simétrica; 2. todo o projeto teria de ser público; 3. deveriam ser admitidos tamanhos de chaves iguais a 128, 192 e 256 bits; 4. teriam de ser possíveis implementações de software e de hardware; 5. o algoritmo teria de ser público ou licenciado em termos não discriminatórios. Foram feitas quinze propostas sérias e organizadas conferências públicas nas quais essas propostas eram apre- sentadas, e os participantes encorajados ativamente a en- contrar falhas em todas elas. Em agosto de 1998, o NIST se- lecionou cinco finalistas, baseado principalmente em seus requisitos de segurança, eficiência, simplicidade, flexibili- dade e memória (importantes para sistemas embarcados). K1 E K2 D K1 E P C K1 D K2 E (a) (b) K1 D C P Figura 8.7  Criptografia tripla usando o DES. (b) Descriptografia. 08_tanen0809_cap08 BR.indd 491 4/25/11 3:08 PM
  • 14. 492 Redes de computadores Foram realizadas outras conferências e mais tentativas de encontrar falhas nos algoritmos. Em outubro de 2000, o NIST anunciou que tinha se- lecionado o Rijndael, de Joan Daemen e Vincent Rijmen. O nome é derivado do sobrenome dos autores: Rijmen + Daemen. Em novembro de 2001, o Rijndael se tornou o padrão AES do governo dos Estados Unidos, publicado como FIPS (Federal Information Processing Standard) 197. Por causa da extraordinária abertura da competição, das propriedades técnicas do Rijndael e do fato de a equipe premiada consistir em dois jovens criptógrafos belgas (com pouca probabilidade de ter criado uma porta dos fundos só para agradar a NSA), o Rijndael se tornou o padrão cripto- gráfico dominante no mundo. A criptografia e a descripto- grafia AES fazem parte do conjunto de instruções de alguns microprocessadores (por exemplo, Intel). O Rijndael admite tamanhos de chaves e tamanhos de blocos desde 128 bits até 256 bits em intervalos de 32 bits. O comprimento da chave e o do bloco podem ser esco- lhidos independentemente. Porém, o AES especifica que o tamanho do bloco deve ser 128 bits e o comprimento da chave deve ser 128, 192 ou 256 bits. É pouco provável que alguém utilize chaves de 192 bits; assim, de fato, o AES tem duas variantes: um bloco de 128 bits com uma chave de 128 bits e um bloco de 128 bits com uma chave de 256 bits. Em nosso tratamento do algoritmo, examinaremos ape- nas o caso de 128/128, porque é provável que esse se torne a norma comercial. Uma chave de 128 bits oferece um espaço de chaves de 2128 ≈ 3 × 1038 chaves. Ainda que a NSA consiga construir uma máquina com 1 bilhão de processadores para- lelos, cada um capaz de avaliar uma chave por picossegundo, tal máquina levaria cerca de 1010 anos para pesquisar o espaço de chaves. Nessa época, o Sol já terá explodido e as pessoas que sobreviverem terão de ler os resultados à luz de velas. Rijndael Sob uma perspectiva matemática, o Rijndael se baseia na teoria de campo de Galois, o que proporciona ao algo- ritmo algumas propriedades de segurança demonstráveis. Porém, ele também pode ser visto como código em C, sem a necessidade de entrarmos nos detalhes matemáticos. Como o DES, o Rijndael utiliza substituição e permuta- ções, e também emprega várias rodadas. O número de roda- das depende do tamanho da chave e do tamanho do bloco, sendo 10 para chaves de 128 bits com blocos de 128 bits, passando para 14 no caso da maior chave ou do maior blo- co. No entanto, diferentemente do DES, todas as operações envolvem bytes inteiros, a fim de permitir implementações eficientes, tanto em hardware quanto em software. Um es- boço do código é apresentado no Quadro 8.1. Observe que esse código é para fins de ilustração. Boas implementações do código de segurança seguirão práticas adicionais, como zerar a memória confidencial depois que ela tiver sido usa- da. Veja, por exemplo, Ferguson et al. (2010). #define LENGTH 16 /* número de bytes no bloco de dados ou chave */ #define NROWS 4 /* número de linhas no estado */ #define NCOLS 4 /* número de colunas no estado */ #define ROUNDS 10 /* número de iterações */ typedef unsigned char byte; /* inteiro de 8 bits sem sinal */ rijndael(byte plaintext[LENGTH], byte ciphertext[LENGTH], byte key[LENGTH]) { int r; /* índice do loop */ byte state[NROWS][NCOLS]; /* estado atual */ struct {byte k[NROWS][NCOLS];} rk[ROUNDS + 1]; /* chaves da rodada */ expand_key(key, rk); /* constrói as chaves da rodada */ copy_plaintext_to_state(state, plaintext); /* inicia estado atual */ xor_roundkey_into_state(state, rk[0]); /* XOR da chave no estado */ for (r = 1; r <= ROUNDS; r++) { substitute(state); /* aplica caixa S a cada byte */ rotate_rows(state); /* gira linha i por i bytes */ if (r < ROUNDS) mix_columns(state); /* função embaralha */ xor_roundkey_into_state(state, rk[r]); /* XOR da chave no estado */ } copy_state_to_ciphertext(ciphertext, state); /* retorna resultado */ } Quadro 8.1  Um esboço do Rijndael em C. 08_tanen0809_cap08 BR.indd 492 4/25/11 3:08 PM
  • 15. Capítulo 8   Segurança de redes 493 A função rijndael tem três parâmetros: plaintext, um ar- ray de 16 bytes contendo os dados de entrada, ciphertext, um array de 16 bytes no qual será retornada a saída cifrada, e key, a chave de 16 bytes. Durante o cálculo, o estado atual dos dados é mantido no array de bytes state, cujo tamanho é NROWS × NCOLS. No caso de blocos de 128 bits, esse ar- ray tem 4 × 4 bytes. Em 16 bytes, é possível armazenar todo o bloco de dados de 128 bits. O array state é iniciado com o texto simples e modifi- cado em cada etapa da computação. Em algumas etapas, é executada a substituição byte a byte. Em outras etapas, os bytes são permutados dentro do array. Outras transforma- ções também são usadas. No final, o conteúdo do array state é retornado como texto cifrado. O código começa expandindo a chave em 11 arrays do mesmo tamanho do estado. Eles são armazenados em rk, um array de structs, cada um contendo um array de estado. Um desses arrays será utilizado no início do cálculo, e os outros 10 serão usados durante as 10 rodadas, um por ro- dada. O cálculo das chaves de rodadas a partir da chave de criptografia é muito complicado para ser examinado aqui. Basta saber que as chaves de rodadas são produzidas pela rotação e pela operação XOR repetida em vários grupos de bits da chave. Para ver todos os detalhes, consulte (Daemen e Rijmen, 2002). A próxima etapa é copiar o texto simples no array state de forma que ele possa ser processado durante as rodadas. O texto é copiado em ordem de colunas, com os quatro primeiros bytes na coluna 0, os quatro bytes seguintes na coluna 1 e assim por diante. Tanto as colunas quanto as linhas são numeradas a partir de 0, embora as rodadas se iniciem em 1. Essa configuração inicial dos 12 arrays de bytes com tamanho 4 × 4 é ilustrada na Figura 8.8. Há mais uma etapa antes do início da principal com- putação: rk[0] é submetido a uma operação XOR em state, byte por byte. Em outras palavras, cada um dos 16 bytes em state é substituído pelo XOR do próprio valor com o byte correspondente em rk[0]. Agora chegou a hora da atração principal. O loop exe- cuta dez iterações, uma por rodada, transformando state em cada repetição. O conteúdo de cada rodada consiste em quatro etapas. A etapa 1 efetua uma substituição byte a byte em state. Por sua vez, cada byte é usado como um índi- ce para uma caixa S, a fim de substituir seu valor pelo con- teúdo dessa entrada da caixa S. Essa etapa é uma cifra de substituição monoalfabética. Diferentemente do DES, que tem diversas caixas S, o Rijndael tem apenas uma caixa S. A etapa 2 gira cada uma das quatro linhas para a es- querda. A linha 0 é girada 0 bytes (isto é, não se altera), a linha 1 é girada 1 byte, a linha 2 é girada 2 bytes e a linha 3 é girada 3 bytes. Essa etapa difunde o conteúdo dos dados atuais em torno do bloco, de modo semelhante às permu- tações da Figura 8.5. A etapa 3 embaralha cada coluna independentemente das outras. O embaralhamento é realizado com o uso da multiplicação de matrizes, na qual a nova coluna é o pro- duto da coluna antiga por uma matriz constante, sendo a multiplicação feita com o campo finito de Galois, GF(28 ). Embora isso possa parecer complicado, existe um algorit- mo que permite calcular cada elemento da nova coluna usando duas pesquisas em tabelas e três operações XOR (Daemen e Rijmen, 2002, Apêndice E). Por fim, a etapa 4 efetua o XOR da chave correspon- dente a essa rodada no array state. Tendo em vista que cada etapa é reversível, a deco- dificação pode ser feita simplesmente executando-se o algoritmo no sentido inverso. Porém, também existe um artifício pelo qual a decodificação pode ser realizada exe- cutando-se o algoritmo de criptografia com a utilização de tabelas diferentes. O algoritmo foi projetado não só por segurança, mas também para aumentar a velocidade. Uma boa implemen- tação de software em uma máquina de 2 GHz deve ser capaz de alcançar uma taxa de criptografia de 700 Mbps, que é rápida o suficiente para codificar mais de cem vídeos MPEG-2 em tempo real. As implementações de hardware são ainda mais rápidas. 8.2.3 Modos de cifra Apesar de toda essa complexidade, o AES (ou o DES, ou ainda qualquer cifra de bloco) é basicamente uma cifra state rk[0] rk[1] rk[2] rk[3] rk[4] rk[5] rk[6] rk[7] rk[8] rk[9] rk[10] Texto simples de 128 bits Chave de codificação de 128 bits chaves de rodadas Figura 8.8  Criação dos arrays state e rk. 08_tanen0809_cap08 BR.indd 493 4/25/11 3:08 PM
  • 16. 494 Redes de computadores de substituição monoalfabética que utiliza caracteres gran- des (caracteres de 128 bits para AES, e caracteres de 64 bits para DES). Sempre que o mesmo bloco de texto simples chega ao front end, o mesmo bloco de texto cifrado sai pelo back-end. Se você codificar o texto simples abcdefgh 100 ve- zes com a mesma chave DES, obterá o mesmo texto cifra- do cem vezes. Um intruso pode explorar essa propriedade para ajudar a subverter a cifra. O modo Electronic Code Book Para ver como essa propriedade das cifras de substi- tuição monoalfabética pode ser usada para anular parcial- mente a cifra, usaremos o DES (triplo), por ser mais fácil representar blocos de 64 que de 128 bits, mas o AES tem exatamente o mesmo problema. A maneira direta de usar o DES para codificar um longo fragmento de texto simples é dividi-lo em blocos consecutivos de 8 bytes (64 bits) e codificá-los uns após outros com a mesma chave. O últi- mo fragmento de texto simples é completado até 64 bits, se necessário. Essa técnica é conhecida como modo ECB (Electronic Code Book), em analogia aos antigos livros de código em que cada palavra de texto simples era listada, seguida por seu texto cifrado (em geral, um número deci- mal de cinco dígitos). Na Figura 8.9, temos o início de um arquivo de compu- tador com a lista das gratificações anuais que uma empresa decidiu oferecer a seus funcionários. Esse arquivo consiste em registros de 32 bytes consecutivos, um por funcionário, no formato mostrado: 16 bytes para o nome, 8 bytes para o cargo e 8 bytes para a gratificação. Cada um dos dezesseis blocos de 8 bytes (numerados de 0 até 15) é codificado pelo DES (triplo). Leslie acabou de brigar com o chefe e sabe que não deve esperar uma grande gratificação. Ao contrário, Kim é a favorita do chefe e todo mundo sabe disso. Leslie pode acessar o arquivo após a codificação, mas antes de ser en- viado ao banco. Ela pode retificar essa situação injusta, ten- do apenas o arquivo criptografado? Não há problema. Leslie só precisa fazer uma cópia do 12o bloco do texto cifrado (que contém a gratificação de Kim) e usá-lo para substituir o quarto bloco do texto cifra- do (que contém a própria gratificação). Mesmo sem saber o que contém o 12o bloco, Leslie pode esperar ter um Natal muito mais feliz naquele ano. (Copiar o oitavo bloco tam- bém é uma possibilidade, mas o risco de ser descoberto é maior; além disso, Leslie não é uma pessoa gananciosa.) Modo de encadeamento de blocos de cifras Para contrariar esse tipo de ataque, todos os blocos de cifras podem ser encadeados de várias maneiras, a fim de que a substituição de um bloco como a que Leslie fez transforme o texto simples decodificado em lixo, a par- tir do bloco substituído. Uma forma de encadeamento é o encadeamento de blocos de cifras. Nesse método, mostrado na Figura 8.10, cada bloco de texto simples é submetido a uma operação XOR com o bloco de texto ci- frado anterior, antes de ser codificado. Como consequên- cia, o mesmo bloco de texto simples não é mais mapeado Nome Cargo Gratificação 16 8 8 Bytes D a v i s , B o b b i e L i m p e z a $ 5 C o l l i n s , K i m D i r e t o r $ 1 0 0 , 0 0 0 B l a c k , R o b i n C h e f e $ 5 0 0 , 0 0 0 A d a m s , L e s l i e C a i x a $ 1 0 Figura 8.9  O texto simples de um arquivo codificado como 16 blocos DES. (a) (b) + E IV Chave Chave IV P0 C0 + E P1 C1 E P2 C2 E P3 C3 D C0 P0 D C1 P1 D C2 P2 D Caixa de decodificação Caixa de codificação OU exclusivo C3 P3 + + + + + + Figura 8.10  Encadeamento de blocos de cifras. (a) Codificação. (b) Decodificação. 08_tanen0809_cap08 BR.indd 494 4/25/11 3:08 PM
  • 17. Capítulo 8   Segurança de redes 495 para o mesmo bloco de texto cifrado, e a criptografia não é mais uma grande cifra de substituição monoalfabética. O primeiro bloco é submetido a uma operação XOR com um vetor de referência, ou IV (Initialization Vector), escolhido ao acaso, que é transmitido (em texto simples) juntamente com o texto cifrado. Podemos ver como funciona o modo de encadeamento de blocos de cifras examinando o exemplo da Figura 8.10. Começamos com o cálculo C0 = E(P0 XOR IV). Em seguida, calculamos C1 = E(P1 XOR C0 ) e assim por diante. A decodi- ficação também utiliza XOR para inverter o processo, com P0 = IV XOR D(C0 ) e assim por diante. Observe que a cripto- grafia do bloco i é uma função de todo o texto simples conti- do nos blocos 0 a i - 1, e assim o mesmo texto simples gera um texto cifrado diferente, dependendo de onde ele ocorre. Uma transformação do tipo que Leslie fez resultará em texto sem sentido para dois blocos a partir do campo de gratifica- ção de Leslie. Para um funcionário de segurança astuto, essa peculiaridade pode sugerir onde iniciar a investigação legal. O encadeamento de blocos de cifras também tem uma vantagem: o mesmo bloco de texto simples não resultará no mesmo bloco de texto cifrado. Assim, a criptoanálise será difícil. De fato, essa é a principal razão de seu uso. Modo de feedback de cifra No entanto, o encadeamento de blocos de cifras tem a desvantagem de exigir a chegada de um bloco de 64 bits in- teiro para poder iniciar a decodificação. No caso da codifi- cação byte a byte, é usado o modo de feedback de cifra, empregando o DES (triplo), como mostra a Figura 8.11. Para o AES, a ideia é exatamente a mesma, sendo usado um registrador de deslocamento de 128 bits. Na figura, o estado da máquina de criptografia é mostrado após os bytes 0 a 9 terem sido codificados e enviados. Ao chegar o byte 10 do texto simples, conforme ilustra a Figura 8.11(a), o algoritmo DES opera sobre o registrador de deslocamento de 64 bits para gerar um texto cifrado de 64 bits. O byte mais à esquerda desse texto cifrado é extraído e submetido a uma operação XOR com P10 . Depois, esse byte é encami- nhado à linha de transmissão. Além disso, o registrador de deslocamento (shift register) é deslocado 8 bits à esquerda, fazendo C2 ficar fora da extremidade esquerda, e C10 é in- serido na posição que acabou de ficar vaga na extremidade direita, logo depois de C9 . Observe que o conteúdo do registrador de deslocamen- to depende do histórico anterior do texto simples; assim, um padrão que se repetir várias vezes no texto simples será crip- tografado de maneira diferente do texto cifrado a cada vez. Como ocorre no encadeamento de blocos de cifras, é neces- sário um vetor de referência para iniciar o processo. A decodificação com o modo de feedback de cifra fun- ciona exatamente como a codificação. Em particular, o conteúdo do registrador de deslocamento é codificado, e não decodificado, e assim o byte selecionado que é submetido à operação XOR com C10 para obter P10 é o mesmo que sofreu a operação XOR com P10 para gerar C10 na primeira vez. Desde que os dois registradores de deslocamento permane- çam idênticos, a decodificação funciona corretamente. Ela é ilustrada na Figura 8.11(b). Um problema apresentado pelo modo de feedback de cifra é que, se um bit do texto cifrado for invertido aciden- talmente durante a transmissão, os 8 bytes decodificados enquanto o byte defeituoso estiver no registrador de des- locamento serão danificados. Depois que o byte defeituoso for empurrado para fora do registrador de deslocamento, o texto simples correto será gerado mais uma vez. Desse modo, os efeitos de um único bit invertido são em parte localizados e não danificam o restante da mensagem, mas danificam uma quantidade de bits igual à largura do regis- trador de deslocamento. Modo fluxo de cifras Apesar disso, existem aplicações em que um erro de transmissão de 1 bit alterando 64 bits de texto simples pro- (a) C10 (b) Chave C10 P10 E Registrador de deslocamento de 64 bits C2 C3 C4 C5 C6 C7 C8 C9 + Caixa de codificação Seleciona byte mais à esquerda Chave P10 C10 C10 E Registrador de deslocamento de 64 bits C2 C3 C4 C5 C6 C7 C8 C9 Caixa de codificação Seleciona byte mais à esquerda OU exclusivo + Figura 8.11  Modo de feedback de cifra. (a) Codificação. (b) Decodificação. 08_tanen0809_cap08 BR.indd 495 4/25/11 3:08 PM
  • 18. 496 Redes de computadores voca um impacto grande demais. Para essas aplicações, há uma quarta opção, o modo fluxo de cifras. Ele funciona pela codificação de um vetor de referência com uma chave para obter um bloco de saída. O bloco de saída é então co- dificado, usando-se a chave para obter um segundo bloco de saída. Em seguida, esse bloco é codificado para obter um terceiro bloco e assim por diante. A sequência (arbi- trariamente grande) de blocos de saída, chamada fluxo de chaves, é tratada como uma chave única e submetida a uma operação XOR com o texto simples para obter o tex- to cifrado, como mostra a Figura 8.12(a). Observe que o vetor de referência só e usado na primeira etapa. Depois disso, a saída é codificada. Observe também que o fluxo de chaves é independente dos dados, portanto pode ser calcu- lado com antecedência, se necessário, e é completamente insensível a erros de transmissão. A decodificação aparece na Figura 8.12(b). A decodificação ocorre quando se gera o mesmo fluxo de chaves no lado receptor. Como o fluxo de chaves só de- pende do vetor de referência e da chave, ele não é afetado por erros de transmissão no texto cifrado. Desse modo, um erro de 1 bit no texto cifrado transmitido gera apenas um erro de 1 bit no texto simples decodificado. É essencial nunca utilizar o mesmo par (chave, vetor de referência) duas vezes em fluxo de cifras, porque isso vai gerar o mesmo fluxo de chaves o tempo todo. O uso de um mesmo fluxo de chaves duas vezes expõe o texto cifrado a um ataque de reutilização de fluxo de cha- ves. Imagine que o bloco de texto simples P0 seja codificado com o fluxo de chaves para obter P0 XOR K0 . Mais tarde, um segundo bloco de texto simples Q0 é codificado com o mesmo fluxo de chaves para obter Q0 XOR K0 . Um intruso que capturar ambos os blocos do texto cifrado poderá sim- plesmente efetuar uma operação XOR dos dois juntos para obter P0 XOR Q0 , o que eliminará a chave. Agora, o intruso tem o XOR dos dois blocos de texto simples. Se um deles for conhecido ou puder ser encontrado, o outro também poderá ser encontrado. Em todo caso, o XOR de dois fluxos de texto simples poderá ser atacado com a utilização de propriedades estatísticas da mensagem. Por exemplo, no caso de texto em inglês, o caractere mais comum no fluxo provavelmente será o XOR de dois espaços, seguido pelo XOR de espaço e da letra ‘e’ etc. Em resumo, equipado com o XOR de dois textos simples, o criptoanalista tem uma ex- celente chance de deduzi-los. Modo contador Um problema apresentado por todos os modos, com exceção do modo do livro de código eletrônico, é a impos- sibilidade de conseguir acesso aleatório a dados codificados. Por exemplo, suponha que um arquivo seja transmitido por uma rede e depois armazenado em disco em forma co- dificada. Isso poderia ser um meio razoável de operação, se o computador receptor fosse um notebook que pudesse ser roubado. Armazenar todos os arquivos críticos em forma codificada reduz muito os danos causados pelo vazamento de informações secretas na eventualidade de o computador cair em mãos erradas. Porém, com frequência, os arquivos de disco são aces- sados em ordem não sequencial, especialmente arquivos de bancos de dados. No caso de um arquivo codificado pela utilização do encadeamento de blocos de cifras, o acesso a um bloco aleatório exige primeiro a decodificação de todos os blocos situados à frente dele, uma proposta dispendiosa. Por essa razão, foi criado mais um modo, o modo conta- dor, como ilustra a Figura 8.13. Aqui, o texto simples não é codificado diretamente. Em vez disso, o vetor de referência somado a uma constante é codificado, e o texto cifrado re- sultante é submetido a um XOR com o texto simples. Au- mentar o vetor de referência em uma unidade a cada novo bloco facilita a decodificação de um bloco em qualquer lu- gar no arquivo sem que primeiro seja preciso decodificar todos os seus predecessores. Embora seja útil, o modo do contador tem um pon- to fraco que vale a pena assinalar. Suponha que a mesma chave K seja usada novamente no futuro (com um texto simples diferente, mas com o mesmo vetor de referência) e um atacante adquira todo o texto cifrado em ambas as execuções. O fluxo de chaves é o mesmo nos dois casos, expondo a cifra a um ataque de reutilização do fluxo de chaves do tipo que vimos no caso de fluxo de cifras. O crip- toanalista tem de efetuar a operação XOR dos dois textos cifrados juntos, a fim de eliminar toda a proteção criptográ- fica e simplesmente obter o XOR dos textos simples. Essa E (a) Chave Texto simples Texto cifrado Fluxo de chaves Caixa de codificação IV + E (b) Chave Texto simples Texto cifrado Fluxo de chaves Caixa de codificação IV + Figura 8.12  Um fluxo de cifras. (a) Codificação. (b) Decodificação. 08_tanen0809_cap08 BR.indd 496 4/25/11 3:08 PM
  • 19. Capítulo 8   Segurança de redes 497 fragilidade não significa que o modo do contador seja uma má ideia. Ela simplesmente quer dizer que tanto as chaves quanto os vetores de referência devem ser escolhidos de forma independente e ao acaso. Ainda que a mesma chave seja utilizada duas vezes por acidente, se o IV for diferente em cada utilização, o texto simples estará seguro. 8.2.4 Outras cifras AES (Rijndael) e DES são os algoritmos criptográficos de chave simétrica mais conhecidos e as escolhas-padrão da indústria, mesmo apenas por motivos de responsabilidade. (Ninguém o culpará se você usar AES em seu produto e o AES for quebrado, mas certamente alguém o fará se você usar uma cifra fora do padrão e ela mais tarde for que- brada.) Porém, vale a pena mencionar que foram criadas várias outras cifras de chave simétrica. Algumas delas es- tão incorporadas a vários produtos. A Tabela 8.2 mostra algumas entre as cifras de chave simétrica mais comuns. É possível usar combinações dessas cifras, por exemplo, AES sobre Twofish, de modo que ambas precisem ser quebradas para recuperar os dados. 8.2.5 Criptoanálise Antes de deixar o assunto de criptografia de chave simé- trica, vale a pena mencionar pelo menos quatro desenvol- vimentos em criptoanálise. O primeiro desenvolvimento é a criptoanálise diferencial (Biham e Shamir, 1997). Essa técnica pode ser usada para atacar qualquer cifra de bloco. Ela funciona a partir de um par de blocos e texto simples que diferem apenas por um pequeno número de bits e pela ob- servação cuidadosa do que acontece em cada iteração inter- na à medida que a codificação prossegue. Em muitos casos, alguns padrões de bits são muito mais comuns que outros, e essa observação pode levar a ataques probabilísticos. O segundo desenvolvimento que vale a pena notar é a criptoanálise linear (Matsui, 1994). Ela pode quebrar o DES com apenas 243 textos simples conhecidos. Essa técnica funciona efetuando o XOR de certos bits no texto simples e no texto cifrado, e examinando o resultado. Quando isso é feito repetidamente, metade dos bits deve ter o valor 0 e metade deve ter o valor 1. Porém, com frequência, as cifras introduzem uma inclinação em um sentido ou no outro, e essa inclinação, embora pequena, pode ser explorada para reduzir o fator de trabalho. Para ver os detalhes, consulte o ensaio de Matsui. O terceiro desenvolvimento é o uso da análise do consumo de energia elétrica para encontrar chaves se- cretas. Em geral, os computadores utilizam 3 volts para representar um bit 1 e 0 volts para representar um bit 0. Desse modo, o processamento de um bit 1 exige mais ener- gia elétrica que o processamento de um 0. Se um algoritmo Caixa de codificação + E IV Chave P0 C0 + E IV+1 Chave P1 C1 + E IV+2 Chave P2 C2 + E IV+3 Chave P3 C3 Figura 8.13  Codificação com a utilização do modo contador. Cifra Autor Comprimento da chave Comentários DES IBM 56 bits Muito fraco para usar agora RC4 Ronald Rivest 1 a 2.048 bits Atenção: algumas chaves são fracas RC5 Ronald Rivest 128 a 256 bits Bom, mas patenteado AES (Rijndael) Daemen e Rijmen 128 a 256 bits Melhor escolha Serpent Anderson, Biham, Knudsen 128 a 256 bits Muito forte DES triplo IBM 168 bits Bom, mas está ficando ultrapassado Twofish Bruce Schneier 128 a 256 bits Muito forte; amplamente utilizado Tabela 8.2  Alguns algoritmos criptográficos de chave simétrica comuns. 08_tanen0809_cap08 BR.indd 497 4/25/11 3:08 PM
  • 20. 498 Redes de computadores criptográfico consistir em um loop no qual os bits da chave são processados em ordem, um atacante que substituir o clock principal de n GHz por um clock lento (por exem- plo, 100 Hz) e prender pinças dentadas (pinças jacaré) nos pinos de energia da CPU e de terra poderá monitorar com precisão a energia consumida por cada instrução de máqui- na. A partir desses dados, será surpreendentemente fácil deduzir a chave. Esse tipo de criptoanálise só pode ser anu- lado por codificação cuidadosa do algoritmo em linguagem assembly para ter certeza de que o consumo de energia será independente da chave e também independente de todas as chaves de rodadas individuais. O quarto desenvolvimento é a análise de sincronismo. Os algoritmos criptográficos estão repletos de instruções if que testam bits nas chaves de rodadas. Se as partes then e else de- morarem períodos de tempo diferentes, tornando mais lento o clock e verificando quanto tempo demoram diversas etapas, talvez seja possível deduzir as chaves de rodadas. Uma vez que todas as chaves de rodadas sejam conhecidas, em geral será possível calcular a chave original. A análise da energia e da sincronização também pode ser empregada simultanea- mente para facilitar o trabalho. Embora a análise da energia e da sincronização possa parecer exótica, na realidade são técni- cas eficientes que podem romper qualquer cifra não projetada de forma específica para resistir a elas. 8.3 Algoritmos de chave pública O problema da distribuição de chaves sempre foi o elo mais fraco da maioria dos sistemas de criptografia. In- dependentemente de quanto um sistema de criptografia fosse sólido, se um intruso conseguisse roubar a chave, o sistema acabava sendo inútil. Como todos os criptólogos sempre presumem que a chave de criptografia e a cha- ve de descriptografia são iguais (ou facilmente derivadas uma da outra) e que a chave é distribuída a todos os usuários do sistema, tinha-se a impressão de que havia um proble- ma inerente ao sistema. As chaves tinham de ser prote- gidas contra roubo, mas também tinham de ser distribuí- das; portanto, não podiam ser simplesmente trancadas na caixa-forte de um banco. Em 1976, dois pesquisadores da Universidade de Stan- ford, Diffie e Hellman (1976), propuseram um sistema de criptografia radicalmente novo, no qual as chaves de criptografia e de descriptografia eram diferentes, e a cha- ve de descriptografia não podia ser derivada da chave de criptografia. Em sua proposta, o algoritmo de criptografia (chaveado) E e o algoritmo de descriptografia (chaveado) D tinham de atender a três requisitos, que podem ser decla- rados da seguinte forma: 1. D(E(P)) = P. 2. É extremamente difícil deduzir D a partir de E. 3. E não pode ser decifrado por um ataque de texto simples escolhido. O primeiro requisito diz que, se aplicarmos D a uma men- sagem criptografada, E(P), obteremos outra vez a mensagem de texto simples original P. Sem essa propriedade, o destinatá- rio legítimo não poderia decodificar o texto cifrado. O segun- do é autoexplicativo. O terceiro é necessário porque, como veremos em um minuto, os intrusos podem experimentar o algoritmo até se cansarem. Sob essas condições, não há razão para a chave criptográfica não se tornar pública. O método funciona da seguinte forma: uma pessoa, digamos Alice, desejando receber mensagens secretas, pri- meiro cria dois algoritmos que atendem aos requisitos an- teriores. O algoritmo de criptografia e a chave de Alice se tornam públicos, daí o nome criptografia de chave pú- blica. Por exemplo, Alice poderia colocar sua chave pú- blica em sua home page da Web. Usaremos a notação EA para indicar o algoritmo de criptografia parametrizado pela chave pública de Alice. De modo semelhante, o algoritmo de descriptografia (secreto) parametrizado pela chave pri- vada de Alice é DA . Bob faz o mesmo, publicando EB , mas mantendo secreta a chave DB . Agora, vamos ver se podemos resolver o problema de estabelecer um canal seguro entre Alice e Bob, que nunca haviam tido um contato anterior. Tanto a chave de cripto- grafia de Alice, EA , quanto a chave de criptografia de Bob, EB , estão em arquivos de leitura pública. Agora, Alice pega sua primeira mensagem P, calcula EB (P) e a envia para Bob. Em seguida, Bob a descriptografa aplicando sua chave se- creta DB [ou seja, ele calcula DB (EB (P)) = P]. Ninguém mais pode ler a mensagem criptografada EB (P), porque o siste- ma de criptografia é considerado sólido e porque é muito difícil derivar DB da chave EB publicamente conhecida. Para enviar uma resposta R, Bob transmite EA (R). Agora, Alice e Bob podem se comunicar com segurança. Talvez seja interessante fazer uma observação sobre a terminologia. A criptografia de chave pública exige que cada usuário tenha duas chaves: uma chave pública, usa- da pelo mundo inteiro para criptografar as mensagens a ser enviadas para esse usuário, e uma chave privada, que o usuário utiliza para descriptografar mensagens. Faremos referência a essas chaves como chave pública e chave pri- vada, respectivamente, e vamos distingui-las das chaves secretas (também chamadas chaves simétricas) usadas na criptografia de chave simétrica convencional. 8.3.1 RSA O único problema é que temos de encontrar algorit- mos que realmente satisfaçam todos os três requisitos. De- vido às vantagens potenciais da criptografia de chave públi- ca, muitos pesquisadores estão se dedicando integralmente a seu estudo, e alguns algoritmos já foram publicados. Um método muito interessante foi descoberto por um grupo de pesquisadores do MIT (Rivest et al., 1978) e é conheci- do pelas iniciais dos três estudiosos que o criaram (Rivest, Shamir, Adleman): RSA. Ele sobreviveu a todas as tenta- 08_tanen0809_cap08 BR.indd 498 4/25/11 3:08 PM