Vous êtes sur la page 1sur 80

Univerisade de Braslia UnB

Departamento de Engenharia Eltrica - ENE


Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

4. Criptografia, Autenticao e Assinatura Digital


A seguir so apresentados os roteiros dos experimentos de criptografia, autenticao e
assinaturas digitais atravs dos seguintes algortmos: DES, RSA, funes de hash e
PGP.

4.1. DES Data Encryption Standard


4.1.1.

Objetivo:

Este captulo trata da instalao e utilizao de uma implementao do algoritmo de


criptografia simtrica DES Data Encryption Standard, [16] com objetivo de permitir a
verificao das propriedades bsicas de um algoritmo de criptografia simtrica.
Neste captulo o aluno ser habilitado a:
 Mostrar a incapacidade de compresso de arquivos que foram cifrados.
 Entender, atravs da utilizao de histogramas, a propriedade de aumento da
entropia, ou grau de desordem, de um arquivo aps a cifrao do mesmo; e
 Verificar o efeito avalanche do algoritmo.

4.1.2.

Teoria Introdutria:

As tcnicas de criptografia figuram como um dos principais recursos utilizados no


contexto de servios de segurana da informao. Em um sistema criptogrfico
qualquer, possvel se identificar um conjunto de elementos bsicos:
-

Algoritmo de criptografia: uma funo, normalmente matemtica, que


executa a tarefa de cifrar e decifrar os dados que se desejam manter seguros.

Chave criptogrfica: So usadas como parmetro pelo algoritmo de


criptografia para determinar como os dados sero cifrados e decifrados. O
tamanho (nmero de bits) das chaves criptogrficas est, em geral, associado
ao algoritmo criptogrfico com o qual estas so usadas. Existem atualmente
algoritmos que utilizam chaves de tamanho pr-definido, assim como
1-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

aqueles que permitem o uso de chaves com tamanho varivel. Chaves com
tamanhos maiores so muito mais difceis para um intruso descobrir do que
as chaves menores, porque existe uma possibilidade muito maior de
combinaes a serem testadas durante um possvel ataque de fora bruta ou
ataque de tentativas de chaves.
-

Texto claro ou inteligvel: Consiste na informao que se deseja cifrar.


Normalmente, so arquivos sobre vrias formas como: texto, figuras,
planilhas, tabelas, etc.

Texto cifrado: Consiste na informao aps o processo de cifrao. um


conjunto de dados de forma no inteligvel que o resultado da criptografia
em si.

4.1.2.1.

Classificao dos Sistemas de Criptografia

Os sistemas de criptografia so genericamente classificados em sistema de


CRIPTOGRAFIA SIMTRICA, de CHAVE SIMPLES ou de CHAVE SECRETA, nos
quais ambos o emissor e o receptor da mensagem usam a mesma chave criptogrfica
para os processos de cifrao e decifrao de mensagens, ou em sistema de
CRIPTOGRAFIA ASSIMTRICA, de DUAS CHAVES ou de CHAVE PBLICA,
sendo estes caracterizados pela utilizao de chaves distintas nos processo de cifrao
(emissor) e decifrao (receptor).
Outros critrios de classificao possveis so:
-

Quanto ao tipo de operao utilizada para transformar o texto claro em texto


cifrado: Algoritmos de criptografia so baseados em dois princpios gerais:
SUBSTITUIO, onde cada elemento de um texto claro ( bit, letra, grupo
de letras ou grupo de bits) transformado em outro elemento; e
TRANSPOSIO, onde os elementos do texto claro so rearranjados. O
preceito fundamental nestas operaes que nenhuma informao seja
perdida. Para a maioria dos sistemas criptogrficos o que ocorre utilizao
de

mltiplos

estgios

tanto

TRANSPOSIO.

2-80

de

SUBSTITUIO

como

de

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.
-

Quanto maneira como o texto claro processado: um CIFRADOR DE


BLOCOS processa um bloco de elemento(s) por vez na entrada, o que
produz na sua sada um bloco de elemento(s) para cada bloco de entrada. Um
CIFRADOR DE FLUXO processa os elementos da entrada de maneira
contnua, produzindo na sada um elemento por vez de maneira contnua
como na entrada.

4.1.2.2.

Sistema de Criptografia Simtrica

Em um sistema de criptografia simtrica ou convencional, a mensagem na forma de


texto claro (por exemplo um documento tipo texto) cifrada pelo emissor (origem)
atravs da aplicao do algoritmo de criptografia, tendo a chave criptogrfica como
parmetro. O resultado desse processo consiste de um conjunto de dados aparentemente
aleatrios que se conhece como mensagem cifrada ou simplesmente texto cifrado. O
foco do estudo aqui em questo , ento, o algoritmo de criptografia e a respectiva
chave utilizada. Da juno destes dois entes que ocorre o processo de criptografia em si.
A chave utilizada no processo tem um valor independente da mensagem a ser cifrada,
ou seja, a mensagem cifrada ser diferente dependendo da chave especfica utilizada na
ocasio da cifrao. O processo de decifrao, por sua vez, ocorre quando da aplicao
do algoritmo de criptografia pelo receptor (destino), tendo como parmetro a mesma
chave utilizada na cifrao, ao texto cifrado. Esse processo produzir a mensagem
original, em forma de texto claro. Trata-se, portanto, do processo inverso ao executado
na cifrao dos dados.
A segurana do processo descrito acima depende de vrios fatores. Primeiramente, o
algoritmo de criptografia deve ser poderoso o bastante para que se torne impraticvel a
decifrao da mensagem baseando-se simplesmente no texto cifrado.
Alm deste fato, a segurana da criptografia simtrica depende da manuteno do
segredo da chave utilizada no processo e no do algoritmo utilizado para realizar a
cifrao. Esta caracterstica da criptografia simtrica a que a torna bastante popular,
permitindo que sejam desenvolvidas implementaes de algoritmos de criptografia de
baixo custo que so incorporadas em uma gama variada de produtos. Em geral,
algoritmos de criptografia de chave secreta so computacionalmente mais simples e,
consequentemente, muito mais rpidos que algoritmos de criptografia de chave pblica.
3-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Porm, justamente nessa caracterstica que a criptografia simtrica apresenta o seu


ponto fraco. O maior problema deste tipo de sistema conseguir fazer com que o
emissor e o receptor de uma mensagem cifrada pelo algoritmo, e somente eles, possam
conhecer a chave secreta ora em uso, assim como combinar sobre futuras alteraes da
mesma. Isto requer a existncia de um mtodo pelo qual as duas partes possam se
comunicar de modo seguro. Como normalmente acontece, o emissor e o receptor esto
em locais separados fisicamente e, portanto, tem que confiar algum sistema de
comunicao para transmisso da chave criptogrfica, que evite a revelao da chave
que esta sendo comunicada para o emissor/receptor. Qualquer pessoa que intercepte a
chave na transmisso pode depois ler, modificar ou forjar todas as mensagens cifradas
ou autenticadas com esta chave. Dentre os meios possveis de envio de chave secreta
pode-se citar o uso de mensageiros confiveis e o emprego dos mecanismos da
criptografia de chave pblica.
O processo de gerao, transmisso e armazenamento das chaves conhecido como
gerenciamento de chave, sendo essa uma questo fundamental para os sistemas de
criptografia simtrica. Pelo motivo bvio de que todas as chaves secretas dos sistemas
de criptografia simtrica devem permanecer secretas, a criptografia de chave secreta
freqentemente tem dificuldade em prover o gerenciamento de chaves de maneira
segura especialmente em sistema abertos com um grande nmero de usurios.
A figura 4.1-1, a seguir, ilustra os processos de cifrao e decifrao um sistema de
criptografia convencional ou simtrica.

4-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Figura 4.1-1 - Sistema de Criptografia Clssica ou Simtrica ou de Chave Secreta


4.1.2.3.
-

Exemplos de Algoritmos de Criptografia Simtrica

ROT13: Este algoritmo um dos mais simples utilizados. Ele usado para,
entre outras coisas, tornar invisveis as piadas em vrios grupos de Usenet. O
algoritmo de criptografia ROT 13 no possui chave, o que o torna bastante
vulnervel ou pouco seguro;

Crypt: Este algoritmo o programa original de criptografia do UNIX. Ele


utiliza uma chave de tamanho varivel. Alguns programas podem decifrar
automaticamente os arquivos cifrados com crypt sem conhecer previamente
a chave ou o texto claro. Este algoritmo no considerado seguro e pode ser
facilmente quebrado se for submetido a um ataque de fora bruta, ou seja,
um ataque que executa a procura do valor da chave por tentativas;

DES: DES o acrnimo de Data Encryption Standard. Este um algoritmo


desenvolvido nos anos 70 pelo NIST (National Institute of Standards and
Technology) e a IBM. O DES usa uma chave com o tamanho de 56-bits;

RC2: Este algoritmo esta na categoria dos cifradores de blocos e foi


desenvolvido por Ronald Rivest e patenteado como um segredo comercial
pela RSA Segurana de Dados. Este algoritmo foi revelado por uma Usenet
annima em 1996 e aparenta ser razoavelmente seguro, embora algumas
5-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

chaves apresentem fraquezas. O RC2 vendido com uma implementao


que permite o uso de chaves de 1 at 2048 bits. O tamanho da chave do RC2
normalmente limitado a 40 bits em softwares vendidos para fora dos
U.S.A;
-

RC4: Este algoritmo est na categoria dos cifradores de fluxo/seqncia e foi


desenvolvido por Ronald Rivest e patenteado com um segredo comercial
pela RSA Segurana de Dados. O RC4 trabalha com uma chave de extenso
varivel de at 256 bits. Esse algoritmo tem uma caixa de substituio de
256 entradas. As entradas so permutaes do nmero 0 ao 255, e a
permutao especfica uma funo da chave. O tamanho da chave do RC4
normalmente limitado a 40 bits para aplicaes comercializadas para fora
dos U.S.;

RC5: Algoritmo cifrador de bloco desenvolvido por Ronald Rivest e


publicado em 1994. O RC5 permite que os seus usurios definam o tamanho
da chave, tamanho do bloco de dados e nmero de vezes que ser aplicada a
cifrao sobre o arquivo a ser criptografado;

IDEA: IDEA o acrnimo de Data Encryption Algorithm. Este algoritmo foi


desenvolvido em Zurique na Sua por James L. Massey and Xuejia Lai e foi
publicado em 1990. O IDEA utiliza-se de uma chave de 128-bits e
considerado muito forte quando se fala de segurana. O IDEA usado pelo
popular programa PGP( Pretty Good Privacy) para cifrar e-mail e arquivos; e

4.1.2.4.

O DES (Data Encryption Standard)

DES [17], acrnimo para Data Encryption Standard, o nome do Padro de


Processamento de Informao Federal (Federal Information Processing Standard
FIPS), nmero 46-1, ou FIPS 46-1, que foi adotado, em 1977, pelo antigo NBS
(National Bureau of Standards), hoje NIST (National Institute of Standards and
Technology), como padro de criptografia para proteo de informaes federais de
caracter no-classificadas. O DES se tornou de fato um padro internacional, para uso
de bancos, particulares e organizaes comerciais, sendo por isso, objeto de muitas
controvrsias com relao ao seu grau de segurana.
6-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

O DES essencialmente um algoritmo criptogrfico simtrico cifrador de blocos de 64


bits e pode ser utilizado em segurana de dados, nos seguintes contextos:
-

Para efetuar cifrao e decifrao de mensagens, entre dois ou mais usurios,


enviadas por algum meio de comunicao;

Para gerar e verificar um cdigo de autenticao de mensagem (Message


Authentication Code MAC); e

Para executar cifrao e decifrao, em um ambiente de usurio nico, no


caso de guarda segura de arquivos em dispositivos eletrnicos de
armazenagem (hard disks, etc.).

A utilizao do DES em um ambiente multi-usurio pode apresentar dificuldades com


respeito distribuio segura das chaves secretas. A soluo ideal neste caso fornecida
pela criptografia de chaves pblicas.
Histria do DES
No caso em que os processos de troca e/ou armazenamento de dados e informaes so
efetuados de maneira interna ou fechada dentro de um determinado grupo de pessoas,
entidades ou organizaes, no existe obrigatoriamente a necessidade de usar-se um
mtodo padro geral, para efetuar a criptografia de dados, por exemplo. Porm quando
surge a necessidade de proteo criptogrfica para informaes trocadas entre usurios
de organizaes diferentes, os problemas podem comear a surgir, principalmente pelo
provvel uso de equipamentos e sistemas criptogrficos de fabricantes diferentes e,
possivelmente, incompatveis. [18]
Foi a partir da constatao deste fato que surgiu, por iniciativa do governo americano,
no incio da dcada de 70, a idia de se considerar o uso de um padro de algoritmo
criptogrfico para uso geral. At ento vrios algoritmos criptogrficos proprietrios
estavam em uso, dentro ou fora das organizaes governamentais americanas.
Coube ao Departamento de Comrcio, mais especificamente, ao antigo NBS, hoje
NIST, a tarefa de iniciar o desenvolvimento do padro de criptografia que se buscava.

7-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Logo de incio o NBS levantou o problema da aquisio de dispositivos criptogrficos


de fornecedores comerciais. O NBS era contra este tipo de aquisio pois desconfiava
da existncia da real capacidade, entre aqueles fornecedores, em desenvolver
equipamentos com um adequado grau de segurana.
Um outro aspecto interessante, de cunho comercial, foi levantado. Como a maioria dos
equipamentos at ento em uso eram de fabricantes estrangeiros, a adoo de um padro
no afetaria muito a indstria americana. Por outro lado, se o padro fosse aceito
mundialmente os fabricantes de equipamentos at ento existentes teriam de tomar uma
deciso : ou mudariam para o padro, satisfazendo os interesses americanos, ou ento se
arriscariam na permanncia no mercado com seus antigos produtos.
Em 1972, efetivamente o NBS iniciou a busca de um algoritmo criptogrfico adequado,
que pudesse se constituir na base de um Padro de Processamento de Informao
Federal (FIPS).
Segundo o NBS, o algoritmo a ser adotado como padro deveria obedecer aos seguintes
requisitos:
-

Apresentar um alto nvel de segurana;

Estar completamente especificado e ser de fcil entendimento;

A segurana fornecida pelo algoritmo no deveria se basear no segredo sobre


o mesmo;

Deveria estar disponvel para todos os usurios e fornecedores;

Deveria ser facilmente adaptvel para ser usado em diversas aplicaes;

Deveria ser implementado de maneira econmica em dispositivos


eletrnicos, bem como ser de utilizao eficiente;

Deveria ser de fcil validao (legalizao); e

Deveria possuir atributos que o possibilitasse ser exportado.

Em maio de 1973, a primeira chamada foi emitida pelo NBS para algoritmos candidatos
ao padro especificado. No foi obtido sucesso desta feita, pois muitos dos algoritmos
8-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

apresentados ainda necessitavam de algum desenvolvimento, enquanto que o NBS, na


verdade, buscava algo que j estivesse praticamente pronto.
A segunda chamada ocorreu em agosto de 1974. Vrios candidatos se apresentaram, uns
muito especializados, outros no to seguros. Apenas um deles se destacou, na viso do
NBS, como forte candidato: o algoritmo desenvolvido nos laboratrios da IBM, desde o
incio da dcada de 70, que era o cifrador conhecido como Lucifer.
Os algoritmos criptogrficos mais antigos, usados at na altura da Segunda Guerra
Mundial, eram baseados em operaes de substituio ou de transposio. Durante
aquele conflito blico os pesquisadores concluram que seria possvel a obteno de
sistemas mais seguros, com o emprego de etapas alternadas de substituio e
transposio.
Shannon, em 1949, em sua clssica obra sobre sistemas seguros, props a composio
de vrios tipos de funes, para obter transformaes mistas, mais complexas e
geradoras de algoritmos criptogrficos mais poderosos. Basicamente, estas funes
seriam obtidas atravs do produto de duas operaes simples no comutativas, o que
levou os algoritmos que delas fizesse uso receberem a denominao de cifra-produto.
Shannon estabeleceu dois princpios bsicos que os algoritmos de criptografia ou
cifradores seguros deveriam obedecer:
-

O Princpio da Difuso, pelo qual o bom cifrador deve realizar um


espalhamento da informao do texto em claro sobre todo o texto cifrado.
Em outras palavras, mudanas ocorridas no texto em claro devem afetar
muitas partes do texto cifrado. Esta caracterstica ir obrigar um atacante ou
criptoanalista possuir uma grande quantidade de texto cifrado para tentar
iniciar uma anlise.

O Princpio da Confuso, pelo qual o bom cifrador deve possuir um


relacionamento funcional bastante complexo entre o par (texto em
claro/chave) e o texto cifrado. Desta forma ficar difcil para um
criptoanalista inferir que mudana ocorrer no texto cifrado, em decorrncia
de um alterao no texto em claro ou na chave, o que dificultar a "quebra"
do algortmo.
9-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

O algoritmo Lucifer, projetado por Horst Feistel para a IBM, no incio da dcada de 70,
baseia-se exatamente na proposta de Shannon, sobre uso de transformaes mistas de
substituies e transposies.
O Lucifer , portanto, uma cifra-produto em bloco de 128 bits, com chave de 128 bits.
J o DES ficou com tamanho de bloco de 64 bits e com chave efetiva de 56 bits.
As operaes de transposies no Lucifer so implementadas em forma de caixas P
(Permutao), ao passo que as substituies so efetuadas por caixas S (Substituio),
conforme ilustrado na figura 4.1-2 a seguir.

10-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Figura 4.1-2 - Esquema de um cifrador-produto

No caso das operaes de substituies, impraticvel a realizao de todas as


substituies possveis, para determinado tamanho de bloco. Por esta razo elas so
feitas em paralelo, sobre segmentos menores do bloco.
As operaes de transposies, realizadas pelas caixas P Permutao, geralmente fixas
e no chaveadas, so responsveis pela produo da Difuso.

11-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Por seu turno, as operaes de substituies, feitas pelas caixas S, que so chaveadas,
implementam a Confuso.
As aplicaes sobre os bits do bloco em claro, de sucessivas e alternadas operaes de
transposio e substituio, sob o controle dos bits da chave, iro produzir um bloco
cifrado de bits, que no podero ser deduzidos dos bits em claro, sem o conhecimento
de todas as operaes e da chave envolvida.
A operao inversa, que vem ser a decifrao, efetuada submetendo-se o bloco de
dados cifrados, de volta pelo processo, usando-se o inverso de cada caixa S, de
substituio.
Portanto, o Lucifer, originador do DES, tinha sua segurana baseada em uma srie de
operaes complexas de substituies, interpoladas por transposies, bem como no
segredo da chave criptogrfica utilizada.
Durante alguns meses aps a sua apresentao como candidato ao padro, o algoritmo
Lucifer foi submetido a uma rigorosa e exaustiva anlise pelo NBS, juntamente com a
NSA, visando obviamente levantar suas boas caractersticas, bem com suas possveis
fraquezas, com o objetivo, pelo menos oficialmente, de adequ-lo s exigncias e tornlo mais seguro.
Tal trabalho deve ter sido facilitado pelo fato de o Lucifer, naquela ocasio, j ser
conhecido publicamente, e mesmo j ter sido alvo de vrios trabalhos de anlise.
Na ocasio, o NBS e a IBM entraram em acordo respeito da propriedade intelectual e
permisso de fabricao, implementao e venda do algoritmo nos Estados Unidos, para
outras entidades interessadas .
Em agosto de 1975 foi publicado uma minuta (draft) do padro proposto, aps as
modificaes efetuadas sobre o Lucifer. Vrias discusses surgiram nos 18 meses
seguintes, com respeito aos detalhes de implementao e, tambm, quanto a aspectos de
segurana.
Em 23 de Novembro de 1976, o algoritmo foi adotado como padro federal, e
publicado, em 15 de janeiro de 1977, com o nome de Data Encryption Standard - DES,
na FIPS PUB 46 (FIP461).
12-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Em 15 de julho de 1977, tornou-se obrigatrio o seu uso pela administrao federal


americana, para proteo, como j mencionado anteriormente, de informaes noclassificadas. Mais tarde seu uso se espalhou por outras organizaes, como bancos e
empresas particulares, tanto no territrio americano, como em mbito mundial.
Pela Norma que padronizou o DES, caberia ao NIST realizar uma reviso da mesma a
cada 5 (cinco) anos, com o propsito de reafirmar, revisar ou mesmo invalidar o padro,
se fosse o caso. A primeira reviso resultou na reafirmao do padro em 1983. Em
1988, aps a segunda reviso, o padro foi novamente revalidado, e, em 1993 ocorreu a
terceira reviso, quando o DES foi de novo reafirmado at 1998. Aps esta ltima
reviso, o NIST publicou a FIPS PUB 46-2, (FIP462), que veio substituir a FIPS PUB
46-1. No perodo de 1981 a 1992 o ANSI (American National Standard Institute) e a
ISO (International Organization for Standartization) acolheram o padro DES.
Antes de sua adoo como padro, o DES foi alvo de muitas crticas que perduram at
hoje. Dois pontos fundamentais foram os alvos principais dos crticos do algoritmo. O
primeiro foi a reduo do tamanho da chave que originalmente no Lucifer era de 128bits e passou para apenas 56-bits. Segundo os especialistas, isto significava uma reduo
muito drstica de 72-bits no tamanho do chave. Este fato fez com que algumas pessoas
chegassem a suspeitar que o NBS havia propositadamente enfraquecido o algoritmo
para que o padro final adotado no significasse uma ameaa as atividades de
espionagem em curso na NSA. Entretanto, nada ficou provado com relao a esta teoria.
O segundo ponto alvo de crticas no algoritmo foi o critrio de projeto da estrutura
interna do DES. As S-boxes adotadas na estrutura interna do algoritmo eram secretas.
Portanto, os usurios no tinham certeza de que a estrutura interna do DES era livre de
pontos fracos escondidos que poderiam permitir a NSA decifrar as mensagens sem o
benefcio da chave utilizada para cifrar o texto claro. Eventos subsequentes,
principalmente o desenvolvimento recente na criptoanlise diferencial, confirmam que o
DES apresenta uma estrutura interna forte.
Quaisquer que sejam os mritos da questo acima discutida, sabe-se que o DES se
afirmou como ferramenta padro e hoje amplamente utilizado, especialmente em
aplicaes relacionadas ao mundo financeiro. Em 1994, o NIST reafirmou o uso do
DES em aplicaes federais por mais 5 anos. O NIST recomendou o uso do DES para
13-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

aplicaes que no sejam de proteo de informaes classificadas, ou seja,


informaes de grau de sigilo menor que as informaes de segurana nacional
(principalmente militares e diplomticas).
Parece ser um consenso para a maioria dos autores de criptografia que, exceto para
aplicaes de extrema sensibilidade, o uso do DES em aplicaes comerciais no deve
ser encarado como uma preocupao imediata. Pois sabe-se muito bem que hoje com o
uso de um hardware dedicado/especfico pode-se quebrar a chave do DES em um
ataque de fora bruta em menos de 5 horas. Entretanto, o volume de dinheiro
despendido na aquisio desta mquina na faixa de 500 mil a 1 milho de dlares teoricamente no compensaria o seu uso em aplicaes que no fornecessem
informaes muito valiosas. Recentemente, o NIST anunciou o novo algoritmo de
cifrao a ser utilizado como padro, em substituio ao DES, o algoritmo AES
(Advanced Encryption Standard) e que possui uma chave mais forte de 128-bits, como
no LUCIFER original.
Descrio do Algoritmo DES
O DES um algoritmo criptogrfico simtrico para cifrao de blocos de 64 bits de
texto em claro, que utiliza uma chave secreta de 56 bits, e gera blocos de texto cifrado
de 64 bits. A figura 4.1-3, a seguir, ilustra uma viso macroscpica do processo de
criptografia com o DES.

14-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Figura 4.1-3 - Processo de criptografia com o DES

O diagrama-bloco do DES, mostra os seguintes passos, sucessivos e independentes


entre si:
-

Um passo inicial denominado de Permutao Inicial (IP), que executa uma


operao simples de transposio de bits, trabalhando apenas sobre o bloco
de 64 bits do texto em claro, sem fazer uso da chave criptogrfica de 64 bits.

Um passo intermedirio denominado de Transformao Criptogrfica (tipo


produto), complexa e dependente da chave, que realiza cifrao em bloco.
Sucessivas operaes lgicas, de substituio e de transposio, so
executadas em 16 estgios (rounds). As substituies so efetuadas sob o
15-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

controle da chave criptogrfica, ao passo que as transposies so efetuadas


de acordo com um sequncia fixa.
-

Um passo final denominado de Permutao Final (IP-1), operao de


transposio exatamente inversa da Permutao Inicial (IP), o que ir
permitir a operao de decifrao como o mesmo algoritmo.

O objetivo do algoritmo misturar completamente os bits do bloco do texto em claro


com os bits da chave criptogrfica, de modo que cada bit do bloco cifrado resultante
dependa de cada bit do bloco em claro, assim como tambm de cada bit da chave. A
figura, a seguir 4.1-4, apresenta o esquema completo do algoritmo DES.
TEXTO CLARO DE 64-bit

CHAVE DE 56-bit

FUNO DE
PERMUTAAO 1

PERMUTAAO INICIAL

Sub-Chave 1
ESTGIO 1

Sub-Chave 2
ESTGIO 2

Sub-Chave 16
ESTGIO 16

FUNO DE
PERMUTAO 2

TROCA CIRCULAR A
ESQUERDA

FUNO DE
PERMUTAO 2

TROCA CIRCULAR A
ESQUERDA

FUNO DE
PERMUTAO 2

TROCA CIRCULAR A
ESQUERDA

INVERSO DE 32-bit

INVERSO DA
PERMUTAO INICIAL

TEXTO CIFRADO DE 64-bit

Figura 4.1-4 Esquema completo do algoritmo DES

Operaes de Permutao IP e IP-1


Considerando-se a operao de cifrao, tem-se inicialmente na entrada, um bloco em
claro de 64 bits, aqui denominado como T, que transposto pela Permutao Inicial
(IP), obtendo-se T0 = IP (T). Aps passar pelos 16 estgios, o bloco de bits, agora
16-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

denominado T16, submetido Permutao Final Inversa, IP-1, resultando no bloco


cifrado de 64 bits, na sada.
A figura 4.1-5, a seguir, apresenta as operaes que correspondem s permutaes
inicial (IP) e final (IP-1) :

Figura 4.1-5 - Permutaes Inicial e Final

A transposio feita da seguinte maneira: Seja o bloco de entrada de 64 bits, T = T1 T2


... T64. Aps passar pela Permutao Inicial ( IP ), tem-se T0 = T58 T50 T42 ... T7, isto ,
1 bit de T0 ser igual ao 58 bit de T, o 2. bit de T0 ser igual ao 50 bit de T, e assim
por diante.
O processo da Permutao Final realiza a operao inversa da Permutao Inicial: De
acordo com a tabela IP da figura 1.5, o 1 bit do bloco de entrada (T1) ser igual ao 58
bit deste mesmo bloco, aps a transposio. Do mesmo modo, pela tabela IP-1,
observado que o 58 bit do bloco de entrada se transformar no seu 1 bit, aps a
transposio. Tal fato pode ser verificado para todos os bits de T e T0
Estgios de Transformao Produto
Entre a Permutao Inicial e a Permutao Final ocorrem 16 transformaes (estgios)
sobre blocos de bits, com a participao de uma cadeia de 48 bits da chave, Ki, i=1, . . .
,16, e tambm acontecem operaes efetuadas por uma funo denominada f ou funocifra.

17-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Nota-se que para aplicao da transformao do estgio 1, o bloco de bits T0, resultante
da aplicao de IP em T, dividido em dois conjuntos de mesmo nmero de bits, isto ,
32 bits:
L0 (left), que vem a ser o sub-bloco esquerdo de T0;
R0 (right), que o sub-bloco direito de T0.
De modo geral, sendo Ti o bloco de bits de entrada no i-simo estgio, tem-se que:
Ti = (Li) concatenado com (Ri), ou seja:
Li = Ti1 Ti2 . . . Ti32 , e Ri = Ti33 Ti34 ... Ti64,
onde Tij oj-simo bit de Ti
Li = Ri-1
Ri = Li-1 + f (Ri-1, Ki)
Estes sub-blocos de bits, Li e Ri, interagem com a funo f e com bits da chave, por
ocasio do i-simo estgio, conforme mostra a figura 1.4, e ento so invertidos para a
formao do prximo bloco, Ti+1 a dar entrada na rodada seguinte.
Aps a 16 aplicao da funo f no ocorre a inverso de sub-blocos, sendo que as
metades da direita e da esquerda ficam trocadas, e a entrada para a Permutao Final
ser:
T16 = (R16) concatenado com (L16).
Este esquema o que vai permitir a decifrao, quando os operaes vo ocorrer de
maneira inversa, com a sada se transformando em entrada e vice-versa, e com os blocos
de 48 bits da chave sendo usados na ordem inversa.
Descrio da Funo Cifra (f)

18-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

A funo f executa as operaes principais da criptografia do DES e empregada em


cada uma das 16 rodadas da transformao tipo produto (transposies e substituies
sucessivas) do algoritmo.
A maneira como os sub-conjuntos Ki so gerados partir da chave K ser apresentada
posteriormente. As operaes executadas pela funo-cifra f esto de acordo como
ilustrado na figura, a seguir. Os detalhes de funcionamento desta funo esto descritos
abaixo:
-

Operao Seleo E (de expanso), que recebendo como entrada o bloco Ri1 de 32 bits, produz uma sada de 48 bits.

Operao de adio mdulo-2 ("ou-exclusivo"), entre o resultado da


operao anterior (Seleo E) e o subconjunto Ki de 48 bits da chave K.

Conjunto de operaes de Seleo S (de substituio), as chamadas "Sboxes", que convertem o resultado de 48 bits da operao anterior (soma
mdulo-2) em um resultado de 32 bits, realizando, portanto, uma
compresso.

Operao de permutao (P), que realiza uma transposio sobre o resultado


da operao anterior (Seleo S), gerando a sada final de 32 bits da funocifra, que ser somada (mdulo-2), dentro da rodada correspondente, com o
bloco Li-1, conforme ilustrado na figura 4.1-4.

19-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Figura 4.1-6 - Diagrama em bloco da funo-cifra (f) do DES

A primeira operao da funo-cifra uma expanso (Seleo E), realizada por uma
tabela de seleo de bits, mostrada na figura a seguir, que utilizada de maneira
semelhante s tabelas de permutao inicial e final (figura 1.5). O bloco de 32 bits R i -1
expandido, se transformando em um bloco de 48 bits.

Figura 4.1-7 - Expanso de bits (Seleo E)

Pela operao de seleo E de bits, tabela 3, os bits da sada sero respectivamente


iguais aos bits de nmeros 32, 1, 2, 3, 4, 5, . . . , 28, 29, 30, 31, 32 e 1 do bloco de
entrada.
Depois da operao de seleo E, onde 16 bits da entrada so aproveitados mais de uma
vez, a sada resultante somada (mdulo-2) com os 48 bits da chave Ki.

20-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

A seguir, o resultado de 48 bits da soma mdulo-2 particionado ou quebrado em 8


sub-blocos de 6 bits cada, e submetido a um conjunto de operaes constitudo de 8
substituies ou funes-seleo, as chamadas "S-boxes", de acordo com a figura a
seguir.
Cada funo-seleo, ou caixa S, que vem a ser uma matriz 4 x 16 de nmeros, usando
um esquema pr-estabelecido, toma um subconjunto de 6 bits do bloco de 48 bits da
entrada e o transforma em um subbloco de 4 bits.
Os 8 sub-blocos de 4 bits so ento justapostos, formando um resultado final de 32 bits,
que ser levado operao final da funo-cifra, que a Permutao P.

Figura 4.1-8 - Conjunto de Operaes de Substituies (S-Boxes)

As 8 matrizes que constituem as caixas de substituio, "S-boxes" da funo-cifra do


DES so mostradas na figura 4.1-9, a seguir:
21-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Figura 4.1-9 Funes Seleo (S-boxes)

O conjunto de caixas de substituio ("S-boxes"), mostradas na figura 6 e na tabela 4,


operam da seguinte forma :
Cada "S-box", Sj, com j = 1, ... ,8 , transforma a sua entrada, que um bloco de 6 bits,
Bj = b1 b2 b3 b4 b5 b6, com j = 1, ... , 8, em um bloco de 4 bits na sua sada;
Esta transformao se d segundo o esquema abaixo :
O nmero decimal inteiro correspondente ao nmero binrio formado pela concatenao
dos bits b1b6 de Bj seleciona na tabela 4 uma linha na matriz (caixa) Sj, conforme
mostrado na figura 4.1-10 a seguir;
O nmero decimal inteiro correspondente ao nmero binrio formado pela concatenao
dos bits b2b3b4b5 de Bj seleciona na tabela 4 uma coluna na matriz Sj, de acordo com a
figura 4.1-10 a seguir;

22-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

O valor de Sj (Bj), isto , o sub-bloco de 4 bits na sada da matriz Sj, vem a ser a
representao em 4 bits do inteiro que se encontra na interseo da linha e da coluna
selecionadas.
O bloco resultante na sada do conjunto de caixas de substituio formado pela
concatenao dos 8 sub-blocos de 4 bits, os Sj ( Bj ).

Figura 4.1-10 Seleo de Linha e Coluna respectivamente

Para melhor entendimento, seja, por exemplo, um sub-bloco B3 = 100101, na entrada de


S3. Concatenando-se bits de B3 teremos:
b1b6 = 11, que seleciona a linha 3;
b2b3b4b5 = 0010, que seleciona a coluna 2;
logo, S3 ( B3 ) = 13DEC = 1101BIN, tabela 4.

Finalmente, a ltima operao da funo-cifra (f) uma transposio ou Permutao


(P), que realizada de acordo com a figura 4.1-11 a seguir:

23-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Figura 4.1-11 - Permutao (P) de bits

Pela operao de permutao P, os bits da sada sero respectivamente iguais aos bits de
nmeros 16, 7, 20, 21, . . . , 22, 11, 4 e 25 do bloco de entrada, que vem a ser, por sua
vez o resultado da operao das substituies ("S-boxes").
Portanto, o resultado final ou bloco de 32 bits de sada da funo-cifra ( f ) obtido por:
P ( S1 ( B1 ) . . . S8 ( B8 ) ). Este resultado ser somado (mdulo-2), dentro de cada
uma das 16 rodadas do algoritmo do DES, com um bloco de 32 bits, Li-1, conforme
apresentado na figura 4.
Clculo de Sub-Chaves
Pela descrio do algoritmo do DES, conforme as figuras 1.4 e 1.6, cada i-simo estgio
usa uma sub-chave diferente de 48 bits, Ki, derivada da chave inicial K, atravs de
operaes de permutao, seleo e deslocamento. O esquema para a derivao das
chaves Ki apresentado na figura 7.
Inicialmente tem-se a chave K de 64 bits. Numerando-se os bits de K de 1 a 64, da
esquerda para a direita, verifica-se que existem 8 bits de paridade, que so exatamente
aqueles correspondentes s posies 8, 16, 24, 32, 40, 48, 56 e 64.
Estes bits de paridade no sero usados para a derivao das chaves Ki, e, portanto, o
esquema de clculo das mesmas utilizar o bloco constitudo dos seguintes bits da chave
inicial K: 1 a 7; 9 a 15; 17 a 23; 25 a 31; 33 a 39; 41 a 47; 49 a 55; e 57 a 63.

24-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Figura 4.1-12 - Esquema de clculo das chaves

Inicialmente, conforme mostrado na figura 4.1-12, os 64 bits de K sofrem uma filtragem


e transposio, ao serem submetidos tabela de permutao PC1, mostrada na figura
4.1-13, onde PC abreviatura de Permutation Choise.
Assim, pela PC 1, obtm-se que: o 1 bit da sada igual ao 57 bit da entrada; o 2 bit
da sada igual ao 49 bit da entrada; e assim por diante, at o 56 bit da sada ser igual
ao 4 bit da entrada.

25-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Figura 4.1-13 - Escolha Permutada 1 (PC 1)

Em seguida, o resultado de PC 1 dividido em 2 metades, C0 e D0, de 28 bits cada,


que so, cada um deles, deslocados esquerda, de modo circular, pelas operaes LS1,
sendo que o nmero de deslocamentos varia de acordo com o nmero da iterao,
conforme a figura 4.1-14, a seguir:

Figura 4.1-14 - Deslocamento circular esquerda

Os resultados dos deslocamentos dos blocos C0 e D0 so, respectivamente, C1 e D1. A


concatenao dos blocos C1 e D1, ento aplicada a uma outra operao de
transposio (PC 2), que tambm realiza uma filtragem, selecionando 48 bits e
gerando, finalmente, a chave K1, de acordo com a figura 4.1-15, abaixo:

26-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Figura 4.1-15 - Escolha Permutada 2 (PC 2)

As outras chaves Ki, i = 2, . . . , 16 , so formadas de maneira semelhante, ou seja:


Em cada iterao i temos os blocos Ci e Di, resultantes de deslocamentos circulares
esquerda dos blocos Ci-1 e Di-1, respectivamente, da iterao anterior;
Os blocos Ci e Di so concatenados e aplicados permutao PC 2, que fixa,
gerando-se a chave Ki = ( PC 2 ) ( Ci concat Di )
Decifrao no Algoritmo DES
Para a decifrao utiliza-se o mesmo algoritmo e as mesmas chaves, com a observncia
de alguns detalhes importantes:
-

O texto cifrado usado como entrada para o algoritmo;

As chaves Ki, so usadas na ordem inversa da criptografia, isto , K16


usada na primeira rodada, K15 na segunda, e assim sucessivamente, at que
K1 seja utilizada na ltima rodada.

a cada rodada, os valores intermedirios correspondentes, nos processos de


cifrao e decifrao, so iguais, com as 2 (duas) metades do bloco de 64
bits trocadas de posio.

Pode-se verificar algebricamente que o processo de decifrao, executado sobre o texto


cifrado obtido na criptografia, recupera plenamente o texto em claro original.

27-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Efeito Avalanche
Uma propriedade bastante desejada de qualquer algoritmo de criptografia que uma
pequena mudana tanto no texto claro quanto na chave deveria provocar uma mudana
significativa no texto cifrado. Em particular, uma mudana em apenas um bit do texto
claro ou um bit da chave deveria produzir uma mudana em muitos bits no texto
cifrado. Se as mudana na sada fossem pequenas isto poderia fornecer aos hackers uma
maneira de reduzir o nmero de chaves a serem procuradas num ataque de fora bruta.
Para o caso especfico do DES, verificar-se que o mesmo exibe um forte efeito
avalanche.
Como exemplos do efeito avalanche no DES tomem-se os resultados conseguidos por
KONHEIM no livro Criptography: a Primer, New York: Wiley, 1981. Para dois
textos plenos que diferem apenas num bit e sendo criptografados com a mesma chave.
As duas primeiras colunas da esquerda da tabela 1.1 a seguir mostram o nmero de bits
modificados do texto claro original a cada passo do DES. O texto claro e a chave
utilizados apresentavam a seguinte seqncia de bits abaixo:
TEXTO CLARO
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
TEXTO CLARO MODIFICADO 1 bit
10000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
CHAVE
00000001 1001011 0100100 1100010 0011100 0011000 0011000 0011100 0110010
As duas colunas da direita da tabela tambm mostram as mudanas no texto claro
original para o caso de quando utiliza-se o mesmo texto claro mais duas chaves distintas
que diferem uma da outra por apenas um bit. O texto claro e as chaves utilizadas foram
os que esto mostrados a seguir:
TEXTO CLARO

28-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

01101000 10000101 0010111 01111010 00010011 01110110 1110110 11101011


10100100
CHAVE ORIGINAL
1110010 1111011 1101111 0011000 0011101 0000100 0110001 11011100
CHAVE MODIFICADA 1bit
0110010 1111011 1101111 0011000 0011101 0000100 0110001 11011100

Tabela 4.1-1 - Mudanas dos bits ao longo dos passos do DES


PASSO

Nmero de bits diferentes

PASSO

Nmero de bits diferentes

21

14

35

28

39

32

34

30

32

32

31

35

29

34

42

40

10

44

10

38

11

32

11

31

12

30

12

33

13

30

13

28

14

26

14

26

15

29

15

34

16

34

16

35

29-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Como pode-se constatar pela tabela 4.1-11 acima, mudanas dos bits ao longo dos
passos do DES para dois arquivos a serem cifrados que diferem apenas de 1 bit e
mudana para arquivos iguais com chaves que diferem tambm de 1 bit. Mais ou menos
a metade dos bits no texto cifrado diferem da seqncia de bits original da mensagem,
tanto para o caso da mudana no texto claro quanto para a mudana na chave. O que
comprova o existncia do desejado efeito avalanche no DES.
4.1.3.

Implementao Prtica

4.1.3.1.

Instalao do Aplicativo

Passo 1: O aluno dever obter, a partir do servidor FTP indicado pelo instrutor (utilizar
login anonymous), o arquivo des-linux_1_0.tar.gz que se encontra dentro no diretrio
des, gravando-o no diretrio /home/seguranca. Este arquivo dever ser descompactado,

procedimento este que resulta na criao de um subdiretrio /home/seguranca/deslinux, contendo um conjunto de arquivos criados automaticamente. O comando para

execuo do processo de descompactao, a ser digitado no prompt do shell de


comandos :
tar -zxvf des-linux_1_0.tar.gz
-

Observao: Feito o passo anterior, o aluno dever entrar no diretrio deslinux criado e verificar os vrios arquivos e diretrios criados com a extrao

e ler o arquivo README para poder ter uma idia melhor desta
implementao do DES.

Passo 2: Aps a leitura completa dos arquivos da implementao o aluno dever gerar o
conjunto de arquivos executveis a partir das rotinas que esto implementadas. Para
tanto, o aluno dever digitar de dentro do diretrio des-linux o seguinte comando no
prompt:
make

30-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.
-

Observao: Este procedimento compilar todos os arquivos .c contidos no


diretrio, gerar os seus respectivos arquivos objetos e criar ainda os seus
arquivos executveis.

4.1.4.

Execuo

Passo 3: Aps voltar ao README para saber como se faz para executar o principal
aplicativo do pacote que o executvel des, o aluno poder cifrar o arquivo poder.doc
(obter este arquivo a partir do servidor FTP indicado pelo instrutor, no diretrio
arquivos, e consiste em um texto escrito em portugus com duas folhas de tamanho e

ocupando 24 Kbytes de espao em disco no formato do MS Word) gerando na sada do


comando o arquivo poder.doc.des, como explicado mais abaixo. Verifique o que
aconteceu com arquivo poder.doc.des com relao ao seu formato, ao seu tamanho e a
sua entropia aps a cifrao. Em resumo os principais comandos para cifrao e
decifrao com o aplicativo so, respectivamente:
./des e < [arquivo_entrada] >

[arquivo_de_sada]

./des d < [arquivo_entrada] >

[arquivo_de_sada]

Observao: Os comandos anteriores quando chamados de dentro do


diretrio des-linux iro executar a cifrao e decifraoo do arquivo de
entrada, mas antes ele solicitar ao aluno uma chave e uma checagem desta
chave para completar a ao.

Passo 4: Para a parte que se refere a constatao do aumento da entropia o aluno dever
utilizar a rotina ocorr, que analisa qualquer arquivo e lista o nmero de ocorrncias de
todas as strings contidas neste. Esta rotina deve ser obtida a partir do servidor FTP
indicado pelo instrutor (utilizar login anonymous), no diretrio scripts e o aluno dever
copi-la para dentro do diretrio des-linux. Para executar esta rotina o comando a ser
dado no prompt :
./ocorr [nome_do_arquivo]
Estes arquivos podero ser visualizados de maneira mais conveniente pelo aluno se o
comando no prompt for como mostrado a seguir:
./ocorr [nome_do_arquivo] > [arquivo_de_sada]
31-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.
-

Observao: Para uma melhor visualizao recomenda-se a criao de 02


arquivos separados, um para o texto cifrado e outro para o texto normal.

Passo 5: Com os arquivos criados na etapa anterior, pede-se ao aluno verificar quais so
as 5 letras maisculas e as 5 letras minsculas com maior ocorrncia no texto
poder.doc. A partir desta constatao, pede-se para o aluno gerar um histograma numa

planilha que mostre graficamente a propriedade da elevao da entropia das letras no


texto aps a cifrao do mesmo.
-

Observao: Como sugesto o aluno poder usar a planilha da suite


StarOffice 5.0 que roda sobre o linux e compatvel com o planilha Excel 97
do sistema operacional Windows 9X.

Passo 6: Partindo dos testes realizados na etapa anterior, pede-se ao aluno compactar os
arquivos poder.doc e poder.doc.des e verificar o que ocorre com seus tamanhos
atuais, quando comparados com os seus tamanhos originais. Ainda como parte desta
tarefa, pede-se ao aluno que gere atravs de um editor de texto do linux, por exemplo o
pico, um arquivo contendo 20 linhas somente com a string a e salvar este arquivo
com nome de a.txt. A seguir executar os procedimentos de cifrao e compactao
como descritos nos passos anteriores.
Passo 7: Agora o aluno ir trabalhar com uma figura em padro bitmap de 24 bits que
o arquivo vermelha.bmp, o qual deve ser obtido a partir do servidor FTP indicado pelo
instrutor (utilizar login anonymous), no diretrio imagens. Esta figura tem um crculo
vermelho simples pintado num fundo branco com o tamanho de 577 Kbytes. A seguir o
arquivo deve ser visualizado em algum visualizador de figuras do X-windows, como
por exemplo o ghostview.
Passo 8: Aps o procedimento descrito anteriormente, o aluno dever executar o
mesmo processo de cifrao da figura, mas desta vez executando o script retirar antes
de cifrar a figura, o qual deve ser obtido a partir do servidor FTP indicado pelo instrutor
(utilizar login anonymous), no diretrio scripts e que quando executado retira o
cabealho da figura. O comando a ser digitado no prompt do linux :
./retirar [arquivo bmp]

32-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Este procedimento gerar o arquivo vermelha.retira.body. O aluno dever cifrar este


arquivo e salv-lo como a extenso crypt, ou seja, vermelha.retira.crypt . A seguir,
aplicar o script recompor para recolocar o cabealho da mesma, o qual deve ser obtido
a partir do servidor FTP indicado pelo instrutor (utilizar login anonymous), no diretrio
scripts. O comando do script recompor no prompt ser:

./recompor [arquivo crypt]


Este procedimento sobrescrever a figura bmp original com a figura cifrada. Visualizar
a figura e verificar o que ocorreu.
Passo 9: Como parte final desta experincia pede-se ao aluno verificar o Efeito
Avalanche que ocorre no DES como descrito na parte da Teoria Introdutria deste
roteiro experimental. Para tanto ele deve utilizar o script visual que implementa um
visualizador de bits no formato binrio para qualquer arquivo, o qual deve ser obtido a
partir do servidor FTP indicado pelo instrutor (utilizar login anonymous), no diretrio
scripts. O comando do script visual no prompt ser:

./visual [arquivo]
O que se deseja aqui que o aluno gere um arquivo com o nome de
teste.avalanche com apenas o caracter a, usando um editor do linux. Isto feito, o

aluno dever executar o processo de cifrao descrito no passo 4 e gerar o arquivo


teste.avalanche.des. Faa uma pequena edio no arquivo teste.avalanche trocando,

o caracter a pelo caracter b e salve o arquivo com o nome de teste.avalanche.b.


Realize a cifrao deste arquivo gerando o arquivo teste.avalanche.b.des. O aluno
dever pegar os dois arquivos cifrados e aplicar nos mesmos o script visual para
verificar o que acontece. Sabe-se o caracter a e o caracter b diferem de apenas um
bit no formato ASCII. Eles tem a seguinte seqncia de bits 01100001 e 01100010,
respectivamente.

33-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

4.2. Criptografia Assimtrica - RSA


4.2.1.

Objetivo:

Este captulo trata da instalao e utilizao de um algoritmo de criptografia assimtrica


para verificar propriedades bsicas da criptografia assimtrica.
Neste captulo o aluno ser habilitado a:
 Verificar o processo de escolha das chaves pblicas e privadas para o RSA;
 Verificar o processo de cifrao e decifrao do RSA;
 Observar a eficincia computacional de algoritmos de criptografia assimtrica,
em comparao com algoritmos de criptografia assimtrica;
 Identificar propriedades de cifrao de mensagens longas, em blocos.
4.2.2.

Teoria Introdutria:

Na criptografia convencional, o emissor e o receptor da mensagem compartilham a


mesma chave secreta. O emissor utiliza a chave secreta para cifrar a mensagem e o
receptor utiliza a mesma chave para decifrar a mensagem. Este o mtodo conhecido
como de chave secreta ou criptografia simtrica, conforme visto em experimentos
anteriores. O grande desafio para este mtodo de criptografia fazer com que o emissor
e o receptor tenham conhecimento da chave secreta sem que ningum mais o tenha. Se
eles esto em localidades fisicamente distintas, preciso utilizar algum meio para se
compartilhar a chave, desde que se possa garantir a segurana da chave secreta. Isso
representado esquematicamente na figura 4.2-1, a seguir:

canal seguro

canal
inseguro

DECIFRA

CIFRA
C
34-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Figura 4.2-1 Sistema de criptografia simtrica

Em um sistema de criptografia simtrica, qualquer pessoa que escutar ou interceptar a


chave em trnsito poder ler, modificar, e forjar qualquer mensagem cifrada ou
autenticada por esta chave. O processo de gerao, transmisso e armazenamento das
chaves chamado de gerenciamento de chaves. Desta maneira, qualquer sistema de
criptografia simtrica deve negociar com seu departamento de gerenciamento de
chaves. Como todas as chaves secretas devem ser mantidas em segredo neste sistema de
criptografia, o gerenciamento de chaves nesses sistemas consiste atividade complexa,
principalmente em sistemas abertos (como a Internet) com um grande nmero de
usurios.
De modo a resolver este problema de gerenciamento, Whitfield Diffie e Martin Hellman
introduziram o conceito de criptografia de chave pblica ou assimtrica, em 1976. As
idias expressas no algoritmo de Diffie-Hellman, utilizado exclusivamente para
distribuio de chaves foram estendidas em outros algoritmos de criptografia de chave
pblica, como o RSA, para permitir aplicaes que incluem no apenas o gerenciamento
de chaves, mas tambm a aplicao em sistemas de cifrao e de assinatura digital.
Assim, ao contrrio dos sistemas de criptografia simtrica, alguns sistemas criptografia
de chave pblica no so exclusivamente utilizado para a cifrao [17], mas tambm
podem ser utilizados para autenticao (assinatura digital), entre algumas outras
aplicaes. Este processo ser apresentado posteriormente.
Em um sistema de criptografia assimtrica ou de chave pblica, cada entidade possui
um par de chaves, uma chamada de chave pblica (KU) e a outra de chave privada ou
secreta (KR). A chave pblica publicada, enquanto a chave privada mantida em
segredo. Deste modo, a necessidade de compartilhamento das chaves entre o emissor e
o receptor eliminada. Todas as trocas de informaes envolvem apenas as chaves
pblicas, fazendo com que a chave privada nunca seja compartilhada ou transmitida.
Neste sistema no essencial confiar na segurana dos meios de comunicao. A nica
exigncia que se faz necessria associao da chave pblica com seu usurio em
algum lugar seguro (como um diretrio em sua mquina, por exemplo). Qualquer
35-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

entidade pode mandar uma mensagem confidencial apenas utilizando a chave pblica
do receptor (que de conhecimento de todos), pois ela apenas poder ser decifrada com
a chave privada do seu recebedor (que de seu exclusivo conhecimento e est
armazenada em um local seguro). A figura 4.2-2 a seguir apresenta o funcionamento de
um sistema de criptografia assimtrica.

Chave
Pblica
(KP)

canal inseguro

canal
inseguro

Chave
Pblica
(KP)

Chave
Secreta
(KS)

DECIFRA

CIFRA

C
Figura 4.2-2 Sistema de criptografia assimtrica

No sistema de criptografia de chave pblica, a chave pblica est sempre ligada


matematicamente com a chave privada (por isso possvel cifrar uma mensagem com
uma chave, e ela ser decifrada pela outra chave). Da a importncia de se manter uma
delas (chave privada) em segredo. Em contrapartida, esta ligao abre a possibilidade de
um ataque ao sistema de chave pblica derivando a chave privada a partir da sua chave
pblica. Tipicamente, a segurana a este tipo de ataque consiste exatamente no
problema de derivar a chave privada a partir da chave pblica ser dificultado ao
mximo. Alguns sistemas, como ser apresentado a seguir, so concebidos de modo que
este tipo de ataque envolve a fatorao de grandes nmeros, tornando-se
computacionalmente impraticvel a sua realizao.
A descoberta de um novo paradigma em criptografia usando chave pblica representada
pelo popular sistema de criptografia RSA causou uma nova onda de interesse pela teoria
de nmeros e por processos computacionais a ela associados. Entre os problemas que
naturalmente apareceram, o principal foi o da fatorao de inteiros grandes (primality
proving). A soluo de tais problemas passa pela descoberta de algoritmos

36-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

computacionalmente eficientes e rpidos, ainda no disponvel para o caso da fatorao


de nmeros inteiros grandes.
O RSA consiste em um sistema de criptografia de chave pblica tanto para
cifra/decifrao quanto para autenticao digital, tendo sido inventado em 1977 por
Ron Rivest, Adi Shamir e Leonard Adleman, pesquisadores do MIT. A principal
vantagem da criptografia baseada em chave pblica em relao a criptografia baseada
em chave secreta segurana implcita do mecanismo de gerncia de chaves. No
sistema baseado em chave pblica as chaves privadas nunca precisam ser transmitidas
ou recebidas a ningum. Num sistema de chave secreta, ao contrrio, sempre existe uma
chance de que um intruso possa descobrir a chave secreta enquanto esta est sendo
transmitida. Outra vantagem do sistema baseado em chave pblica que eles podem
fornecer um mtodo para assinaturas digitais. Por outro lado, os algoritmos de
criptografia chave pblica conhecidos so muito mais lentos computacionalmente nos
processos de cifrao/decifrao que os algoritmos de criptografia de chave secreta.
4.2.2.1.

RSA

Descrio do RSA
RSA [18] um sistema de criptografia de chave pblica utilizado para cifrao e
assinatura digital (autenticao) desenvolvido por Rivest-Shamir-Adleman, em 1977. A
sua segurana baseada na crena de que no h um mecanismo rpido de fatorao
numrica para nmeros inteiros grandes. O algoritmo RSA tinha patente nos Estados
Unidos, expirada em outubro de 2000. No existe patente em outros pases.

O procedimento de cifrao e decifrao utilizado pelo sistema RSA pode ser resumido
da seguinte maneira.
Primeiramente, se estabelece dois nmeros primos grandes (de preferncia com no
mnimo 128 dgitos decimais, de modo a obter um nmero de 512 bits) p e q, e calculase o mdulo n definido por: n = pq. Os fatores p e q devem ser mantidos em segredo, ou
serem destrudos.

37-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Em seguida deve-se arbitrar um inteiro aleatrio qualquer d que seja relativamente


primo ao inteiro (n) = (p-1)(q-1).
Feito isso, encontra-se o valor de e na faixa 1 e (p-1)(q-1), que satisfaa a: ed 1
mod (n).
Pode-se, ento, escolher as chaves. Por conveno, o par de nmeros inteiros (e,n)
definido como sendo a chave pblica e o par (d,n), como sendo a chave privada.
Tem-se, ento, os parmetros (chaves pblica e privada) necessrios para se cifrar e
decifrar qualquer mensagem. Para isso, primeiramente se representa a mensagem (M) a
ser transmitida em uma cadeia de nmeros inteiros dentro da faixa {1,..., n}. Caso a
mensagem seja muito grande, deve-se particion-la em blocos.
Para se cifrar a mensagem com a chave pblica aplica-se:
C = Me mod n,
onde C o texto cifrado.
Para decifrar a mensagem, utilizando a chave privada, aplica-se:
D = M = Cd mod n,
onde D a mensagem decifrada, que ser igual a M se ed 1 mod (n).
Fundamentao Matemtica
O algoritmo RSA faz uso de expresses com exponenciais, onde o texto cifrado em
blocos com cada bloco tendo um valor binrio menor que um nmero n, ou seja, o
tamanho do bloco tem que ser menor ou igual a log2(n). Na prtica tem-se que o
tamanho do bloco 2k, sendo 2k < n < = 2k + 1 e k um nmero inteiro.
Para um texto claro M em bloco e um texto cifrado C tem-se na cifrao e na decifrao
respectivamente:
C = Me mod n
M = Cd mod n = Med mod n

38-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Como para este algoritmo de criptografia, a chave pblica KU = {e,n} e a chave


privada KR = {d,n}, tanto o emissor quanto o receptor tm que saber o valor de n,
enquanto o emissor sabe o valor de e. Somente o receptor sabe o valor de d.
Algumas questes tm que ser satisfeitas para este algoritmo de criptografia funcionar
satisfatoriamente. As condies so as seguintes:
-

seja possvel achar valores de e, d, n tais que Med = M mod n para todo
M < n;

seja relativamente fcil calcular Me e Cd para todos os valores de M < n;

seja invivel de determinar d dado e e n;

necessrio achar a relao existente para M = Med mod n.

De acordo com o corolrio do teorema de Euler assume-se que: para dois nmeros
primos p e q e que (n) seja a quantidade de inteiros positivos menor que n = pq e
relativamente primos a n, tem-se:
(n)=(p1)(q1)
Sendo assim, chega-se na relao
ed = k(n)+1
Isto equivalente a:
ed = 1 mod (n) e d = e-1 mod (n)
De acordo com as regras de aritmtica modular esta expresso s vlida se d e,
conseqentemente, e forem relativamente primos a (n). Sendo assim o mximo
divisor comum (mdc) entre (n) e d vale 1.
Resumindo, iniciando o algoritmo escolhe-se e e d de tal forma que:
d = e-1 mod (n)
Ento, segundo a lgebra linear:

39-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

ed = 1 mod (n)
Sendo assim, ed ser da forma
k(n)+1
De acordo, ento, com o corolrio do teorema de Euler, para dois nmeros primos, p e
q, e para os nmeros inteiros n = pq e M, com 0 < M < n, tem-se:

Mk(n)+1 = Mk (p1)(q1)+1 M mod n


Ou simplesmente:
Med M mod n
Isto :
Na cifrao, C = Me mod n, onde C o texto cifrado.
Na decifrao, M = Cd mod n = (Me)d mod n = Med mod n = M mod n
Desse modo, essas condies resultam resumidamente em:
p e q dois nmeros primos (escolhidos e secretos);

n = pq (calculado e pblico);
e, sendo mdc ((n),e) = 1; 1 < e < (n) (escolhido e pblico);
d = e-1 mod (n) (calculado e secreto)

Cabe uma exemplificao numrica (para efeitos didticos so escolhidos nmeros


pequenos) para esclarecimento do que foi dito acima (os detalhes da lgebra modular e
clculo do algoritmo de Euler no so apresentados, devendo ser consultados
posteriormente:
Escolhe-se dois nmeros primos p e q, respectivamente 7 e 17. Calcula-se ento
n=pq=119 e (n)=(p1)(q1)=96. Agora, seleciona-se um nmero de tal forma

que seja relativamente primo a (n) e menor que o mesmo, neste caso e=5. Determina40-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

se d menor que (n) pela relao ed=1 mod 96. O valor encontrado 77. Assim temse a chave pblica como KU={5, 119} e a chave privada KR={77, 119}.
Segurana do Sistema RSA
A segurana do sistema est na dificuldade de fatorar n em p e q. O algoritmo mais
rpido de fatorao, leva T = exp (sqrt ( ln(n) ln(ln(n)))) passos, onde ln denota o
logaritmo natural e exp seu inverso. Rivest, Shamir e Adleman recomendam nmeros
gerados aleatoriamente at um nmero b ser encontrado que seja provavelmente
primo.
A segurana do sistema depende ainda de duas suposies crticas:
A fatorao necessria para quebrar o sistema;
A fatorao intratvel computacionalmente, ou alternativamente, a fatorao
difcil e qualquer aproximao que possa ser usada para quebrar o sistema , no
mnimo, to difcil quanto a fatorao.
Para melhor proteo contra a fatorao, as seguintes precaues devem ser tomadas:
p e q devem diferir em comprimento por alguns poucos dgitos.
Tanto p-1 e q-1 devem conter fatores primos considerveis. Para encontrar um primo p
tal que p-1 tem um amplo fator primo, primeiro gera-se um primo aleatrio extenso p.
Ento gera-se p = i * p+ 1, para i = 2, 4, 6, ..., at p ser primo.
Simmons e Norris mostraram que o esquema pode ser quebrado sem fatorao se p e q
no so cuidadosamente escolhidos. Eles achavam que para certas chaves, recifrando
uma mensagem de texto cifrado algumas vezes restabelecia a mensagem de texto
comum original (texto claro). Claramente, este tipo de ataque vlido apenas se o texto
em claro restaurado num nmero razoavelmente pequeno de passos.
Quebrar o esquema RSA pode ser no mais difcil do que a fatorao, pois um
algoritmo

de

fatorao

rpido

automaticamente

fornece

um

procedimento

criptoanaltico eficiente. Entretanto, isso no admite encontrar um algoritmo eficiente


para criptoanlise sem encontrar um algoritmo correspondente. Rivest observou que
qualquer criptosistema para o qual exista uma prova construtiva da equivalncia do
41-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

esforo criptoanaltico com fatorao vulnervel a um ataque de texto cifrado


escolhido. Ao obter a mensagem decifrada para uma mensagem de texto cifrado
selecionada, um criptoanalista pode fatorar o mdulo e quebrar a cifra.
Outra considerao importante, que decorre diretamente dessa anlise, diz respeito ao
tamanho das chaves criptogrficas. Se n, d, e e so, cada um 200 dgitos decimais, (800
bits), as exigncias de armazenamento por usurio so de aproximadamente, 2.000 bits.
Se ambos e e n so tornados pblicos, as exigncias de armazenamento pblico so de
1,3 kbit por usurio. O DES requer apenas 56 bits (ou 112 bits se chaves maiores ou
mltipla criptografia utilizada).
Gerao de Chaves
Antes da aplicao dos sistemas criptogrficos de chave pblica, cada participante devia
gerar um par de chaves. Isto requisitava a criao de dois nmeros primos p e q, a
seleo de e e o clculo de d.
Pelo fato de n (n = pq) poder ser conhecido por qualquer oponente em potencial, para
evitar a descoberta de p e q, estes primos devem ser selecionados num conjunto
suficientemente grande.
Atualmente no existe uma tcnica eficiente o bastante para selecionar grandes nmeros
primos. O procedimento geralmente utilizado escolher de forma aleatria um nmero
com o tamanho desejado e testar se ele primo. Caso contrrio, a soluo continuar
buscando aleatoriamente nmeros mpares at constatar que um deles primo e atende
magnitude desejada.
Alguns testes foram desenvolvidos para determinar se um nmero ou no primo. Eles
so quase em sua totalidade probabilsticos, ou seja, indicam que um nmero
provavelmente seja primo. Apesar desta impreciso, podem ser executados de tal forma
que a preciso esteja o mais prxima de 100% conforme desejado. O algoritmo de
Miller-Rabin um teste (um dos mais eficientes) que envolve alguns clculos entre n (o
inteiro a ser testado) e um inteiro a tambm obtido aleatoriamente. Se n no passar no
teste, ento no um primo. Se n passar no teste, ele pode ou no ser primo. Neste caso,
n submetido a outros testes sucessivos com valores diferentes para a, desta forma

pode-se aumentar a preciso na classificao de n como um nmero primo.


42-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Vale ressaltar que este processo executado somente quanto h a necessidade de criar
um novo par de chaves criptogrficas. Uma vez determinados os nmeros primos p e q,
o processo de gerao de chaves completado com a seleo de um valor para e e
clculo de d, ou vice-versa.
O valor de e encontrado por meio do clculo:
MDC(f(n),e)=1, ento d=e-1mod f(n).
Felizmente, existe um algoritmo (algoritmo de Euclides) que calcula o MDC (Mximo
Divisor Comum) de dois inteiros e caso seja igual a 1, determina a inversa de um deles
mdulo do outro.
4.2.3.

Implementao Prtica

4.2.3.1.

Instalao do Aplicativo

Passo 1: O aluno dever obter, a partir do servidor FTP indicado pelo instrutor (utilizar
login anonymous), o arquivo rsa.tar.gz que se encontra dentro no diretrio rsa,
gravando-o no diretrio /home/seguranca. Este arquivo dever ser descompactado,
procedimento este que resulta na criao de um subdiretrio /home/seguranca/rsa,
contendo um conjunto de arquivos criados automaticamente. O comando para execuo
do processo de descompactao, a ser digitado no prompt do shell de comandos :
tar -zxvf rsa.tar.gz
-

Observao 1: Feito o passo anterior, o aluno dever entrar no diretrio deslinux criado e verificar os vrios arquivos e diretrios criados com a extrao
e ler o arquivo README para poder ter uma idia melhor desta
implementao do DES.

Passo 2: Aps a leitura completa dos arquivos da implementao o aluno dever gerar o
conjunto de arquivos executveis a partir das rotinas que esto implementadas. Para
tanto, o aluno dever digitar de dentro do diretrio ras o seguinte comando no prompt:
make.
-

Observao 2:

Observe que a implementao ser compilada e sero

gerados cinco arquivos executveis.


43-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

4.2.3.2.

Execuo

Passo 3: Para a gerao dos nmeros primos, utiliza-se o programa executvel


./genprim. Deve-se definir a ordem de grandeza destes nmeros, diferindo-se apenas

de um (01) dgito um do outro, ou seja, caso se opte por um nmero da ordem de 10


dgitos, o outro nmero deve ser da ordem de 11 dgitos. Alm disso, necessrio
informar a preciso probabilstica

de o nmero no ser primo, na forma 2

(1/P)

Resumindo, a sintaxe :
./genprim [ordem de grandeza do nmero] [P]
Inicialmente desejvel a gerao de um par de chaves, privada e pblica, pequeno.
Para isto necessrio a gerao de nmeros primos pequenos (com 5 e 6 dgitos
respectivamente).
Para a gerao do primeiro nmero primo (p), a sintaxe a seguinte:
./genprim 5 20 > num.primo.um
Para a gerao do segundo nmero primo (q), a sintaxe a seguinte:
./genprim 6 20 > num.primo.dois
-

Observao 3: Para verificar os resultados dos nmeros primos gerados


digite

os

seguintes

comandos:

cat

num.primo.um

cat num.primo.dois. Todos nmeros apresentados encontram-se em


formato hexadecimal.

Passo 4: Deve-se criar um arquivo juntando estes dois nmeros primos com um
separador entre eles, por exemplo, um #. Para isso, executa-se o seguinte comando:
echo # | cat num.primo.um num.primo.dois > num.primo.soma
-

Observao 4: Para verificar o resultado gerado digite o seguinte comando:


cat num.primo.soma

Passo 5: Para a gerao das chaves privada e pblica, executa-se o programa ./genrsa.
Resumidamente sua sintaxe :

44-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

./genrsa < [arq.com os nmeros primos] > [arq. de sada]


Desta maneira, executa-se o comando:
./genrsa < num.primos.soma > primos.chaves
-

Observao 5: Para verificar o resultado gerado digite o seguinte comando:


cat primos.chaves. Para a obteno das chaves privada e pblica,
necessrio editar o arquivo gerado acima, primos.chaves. A chave privada
obtida a partir do primeiro e o segundo nmero deste arquivo. Desta forma,
edite o arquivo primos.chaves com qualquer editor, o pico ou vi, por
exemplo, e gere um arquivo com a chave privada. Verifique o resultado:
cat chave.privada.

Observao 6: A chave pblica obtida a partir do primeiro e ltimo


nmero do arquivo primos.chaves. Idem ao procedimento anterior, gere um
arquivo

com

chave

pblica.

Verifique

resultado:

cat

chave.publica
Passo 6: Para a cifrar e decifrar um arquivo. Para a cifrao, digite o seguinte comando:
./rsaencode chave.publica < [arquivo de dados] > [arquivo
cifrado]
Para a decifrao:
./rsadecode chave_privada < [arquivo cifrado] > [arquivo de
dados]
-

Observao 6: Antes de prosseguir, realize um teste de funcionamento desta


implementao. Cifre, por exemplo, o arquivo README.english. O comando

./rsaencode chave.publica < README.english > README.cifrado

Observe o resultado gerado atravs do comando more README.cifrado


-

Observao 7: Agora, realize o processo inverso. Decifrar o arquivo


README.cifrado com o seguinte comando:
45-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

./rsadecode

chave.privada

<

README.cifrado

>

README.decifrado
Compare o resultado obtido com o arquivo README.english original.
Passo 7: Faa uma anlise qualitativa da criptografia de um arquivo. Cifre o arquivo
a.txt (obter este arquivo a partir do servidor FTP indicado pelo instrutor, no diretrio
arquivos, que contem apenas a letra A) com a chave criptogrfica gerada acima. Em

seguida faa a medida de ocorrncia dos smbolos do arquivo cifrado, com o auxlio do
programa ocorr, que deve ser obtido partir do servidor FTP indicado pelo instrutor, no
diretrio scripts. A sintaxe do comando :
./ocorr [nome do arquivo] > [ arquivo de saida]
Passo 8: Uma forma de analisar a qualidade de um algoritmo de criptografia
observando o resultado da criptografia de uma imagem. Para realizar este teste, crie um
diretrio imagens dentro do diretrio /home/seguranca/rsa/. Copie os arquivos .bmp e
os scripts retirar e recompor a partir do servidor FTP indicado pelo instrutor, que se
encontram nos diretrios imagens e scripts, respectivamente. Vale a pena lembrar que
para se poder cifrar uma imagem, necessrio retirar o seu cabealho, informaes
sobre o tipo da imagem, paleta, dentre outros. Desta maneira, apenas o corpo da imagem
ser criptografado. Depois, basta recolocar o seu cabealho para possibilitar a sua
visualizao. Os scripts retirar e recompor realizam a funo de tirar e recolocar o
cabealho, respectivamente, para figuras bitmap.
-

Observao 8: Depois de ter realizado as devidas cpias, retire o cabealho


da figura vermelha.bmp, conforme sintaxe a seguir: ./retirar
vermelha.bmp. Este script ir gerar um arquivo vermelha.body, que

corresponde ao corpo da figura vermelha.bmp. Neste momento, cifre o


arquivo vermelha.body, seguindo os passos anteriores. Cabe lembrar que o
processo de criptografia deve ser utilizando aquelas mesmas chaves, que j
forma geradas. Salve o resultado em um arquivo de extenso,
vermelha.crypt.

Esta extenso de arquivo fundamental para o

funcionamento do script recompor.

46-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.
-

Observao 9: Tendo gerado o arquivo vermelha.crypt, deve-se agora


recolocar o cabealho na figura, com a ajuda do script recompor, conforme
sintaxe a seguir: ./recompor vermelha.crypt. Ao trmino de sua
execuo, a figura criptografada ir se sobrescrever figura original,
vermelha.bmp. Visualize o resultado obtido com a ajuda de uma visualizador

de imagens. O prprio linux possui um, o GIMP, que pode ser acessado
graficamente. Compare a figura obtida com a sua original.
-

Observao 10: Repita os mesmos procedimentos para as imagens


horizontais.bmp e verticais.bmp. Anote todos os resultados. Durante a
cifrao das imagens, importante a observao dos tempos gastos.
Compare com os tempos utilizados nos mesmos processos pelos outros
algoritmos de criptografia simtrica, realizados nos experimentos anteriores.

Passo 9: Todos os passos anteriores foram realizados para um par de chaves, pblica e
privada de poucos bits. Na prtica, no se utiliza o algoritmo RSA com chaves to
pequenas. Para se garantir uma segurana razovel, deve-se gerar nmeros primos da
ordem de 80 a 130 dgitos. Neste momento, repita os passos 3 at o 7, s que gerando
nmeros primos maiores, na ordem de 80, por exemplo.
-

Observao 11: O algoritmo RSA um algoritmo lento. Desta forma, no


vivel a cifrao de arquivos grandes, devido ao tempo gasto. Sendo assim,
apenas observe os resultados obtidos na cifrao das figuras utilizadas acima
com uma chave forte.

As figuras 4.2-3, 4.2-4 e 4.2-5 mostram os arquivos vermelha.bmp,


hosrizontais.bmp e verticais.bmp cifrados.

47-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Figure 4.2-3 Arquivo vermelha.bmp cifrado

Figure 4.2-4 Arquivo horizontais.bmp cifrado

Figure 4.2-5 Arquivo verticais.bmp cifrado

48-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

4.3. Assinaturas Digitais Funes de Hash


4.3.1.

Objetivo:

Este captulo trata da instalao e utilizao do algortmo de resumo de mensagem ou


funo de hash de uma via SHA.
Neste captulo o aluno ser habilitado a:
 Entender o funcionamento de como criado o hash e tambm observar a funo
para diversos tamanhos aplicando o SHA e o MD5.
4.3.2.

Teoria Introdutria:

Basicamente, as funes de hash de uma s via convertem uma mensagem de tamanho


arbitrrio em um resumo, hash, de tamanho fixo. Assim como qualquer algoritmo de
cifragem, uma funo de hash converte uma mensagem de texto pleno em palavras sem
nexo. Porm, diferentemente de um algoritmo de cifragem, no existe nenhuma
possibilidade de recuperar o texto original, com uma funo de hash de uma s via.
Qualquer pessoa pode decifrar um texto cifrado codificado com um algoritmo de
cifragem se ela possuir a chave correta; impossvel, contudo, inverter uma funo de
hash de uma s via para adquirir a entrada original a partir do valor da sada.
Resumindo:
Um algoritmo de cifragem no destri nenhuma informao. Para qualquer texto
cifrado, existe somente um texto pleno correto que pode resultar naquele texto cifrado.
Uma funo de hash de uma s via destri a informao. Para qualquer sada resultante
de uma funo de hash de uma s via, vrias mensagens podem ter produzido aquela
sada.
Outra diferena importante entre algoritmos de cifragem e funes de hash de uma s
via que estas no possuem chaves. Uma funo de hash pode ser comparada a uma
impresso digital. Da mesma maneira que uma impresso digital identifica
exclusivamente um indivduo, uma funo de hash identifica exclusivamente uma
mensagem de tamanho arbitrrio.
A figura 4.3-1, a seguir, ilustra o esquema geral da funo.
49-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

MESSAGEM DE
TAMANHO
ARBITRRIO

FUNO
DE
HASH

VALOR DE HASH
COM UM TAMANHO
FIXO

Figura 4.3-1 - Esquema Geral de uma Funo de Hash

Normalmente, os valores de hash so pequenos, de 16 ou 20 bytes. As mensagens


podem ser grandes ou pequenas. Isso vem a comprovar que um nmero muito grande de
mensagens diferentes possam resultar em um hash para o mesmo valor de hash.
Contudo, importante perceber que as chances de duas mensagens quaisquer resultarem
em um mesmo valor de hash pode ser considerada desprezvel.
Pode parecer paradoxal, mas mais fcil encontrar duas mensagens que resultem um
hash de um mesmo valor do que achar uma mensagem que resulte um hash de um valor
determinado. Para melhor ilustrar este fenmeno, observe os seguintes exemplos:
-

Quantas pessoas tm que estar no mesmo quarto antes que se tenha 50% de
chance de que uma delas tenha data de aniversrio igual a sua? A resposta
183.

Quantas pessoas tm que estar no mesmo quarto antes que se tenha 50% de
chance de que duas delas tenham a mesma data de aniversrio? A resposta
surpreendentemente menor: 23.

Assim, quantos valores randmicos de hash de 64-bit voc tem que gerar
para encontrar um que resulte um hash para um valor particular? 264 ou
aproximadamente 1019 .

Quantos valores randmicos de hash de 64-bit voc tem que gerar para achar
dois que resultem um hash para o mesmo valor? 2 32.

Este o princpio. So projetadas funes de hash de uma s via de forma que seja
praticamente impossvel criar uma mensagem que resulte um hash de um valor
particular, ou criar duas mensagens diferentes que resultem um hash de um mesmo
valor. este o grande mrito de uma boa funo de hash. Pois, se A pudesse criar
50-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

duas mensagens que resultassem um hash de um mesmo valor, ela poderia criar uma
mensagem incua e pedir que B a assinasse e, com a outra mensagem incriminada
faria o que quisesse. Assim, B assinaria a mensagem incua e A poderia juntar a
assinatura de B mensagem incriminada.
Outra possibilidade tentar um ataque de fora bruta contra a funo de hash. Isso quer
dizer, poderamos gerar hashs de diversas mensagens, uma aps a outra, procurando
por uma mensagem que resultasse em um hash de um valor particular, ou duas que
resultem um hash de um mesmo valor. A taxa de sucesso deste ataque depende do
tamanho do valor de hash. Observe a tabela 4.3-1, a seguir:

Tamanho do Hash
Ano

64 bits

128 bits

160 bits

264 bits

1995

19 dias

38 dias

7000 anos

1018 anos

2000

2 dias

4 dias

700 anos

1017 anos

2005

4,7 horas

9 horas

70 anos

1016 anos

2010

28 minutos

1 hora

7 anos

1015 anos

2015

2,8 minutos

5,5 minutos

251 dias

1014 anos

2020

17 segundo

31 segundos

25 dias

1013 anos

2025

1,7 segundos

3,1 segundos

2,5 dias

1012 anos

2030

0,2 segundos

0,3 segundos

6 horas

1011 anos

Tabela 4.3-1 - Tempo necessrio para montar um ataque de fora bruta

A Tabela 4.3-1 mostra ataques atravs de hardware especializados. Como o nmero de


mensagens que tm que ser testadas excede a quantia de tempo necessrio para testar
qualquer mensagem nica, estes nmeros podem ser examinados independente da
funo de hash de uma s via. Todas as tabelas incluem estimativas para 1995 e para o

51-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

futuro e todas assumem ainda que um hacker poder gastar 1 milho de dolres.
Estimativas futuras assumem que o poder computacional de hardware e de software
aumentem em um fator de 10 a cada 5 anos. Pode-se adquirir qualquer um deles dez
vezes mais rpidos ou dez vezes mais baratos.
Outra aplicao das funes de hash na gerao de linhas de base para um sistema
operacional. Isto , a gerao de um arquivo contendo uma listagem de todos os
programas e arquivos existentes logo aps uma instalao nova. Estas linhas de base, se
armazenadas off-line, so extremamente teis para a localizao de programas
adulterados com backdoors por invasores.
4.3.2.1.

SHA

O SHA o Algoritmo de Hash Seguro, Secure Hash Algorithm,, uma funo de hash de
uma s via inventada no NSA. Ele produz um valor de hash de 160-bit a partir de um
tamanho arbitrrio da mensagem. Os funcionamentos internos do SHA so bem
parecidos com os do MD4. Atualmente, no existe alguma forma conhecida de ataque
criptoanaltico contra o SHA com exceo do ataque de fora bruta. E seu valor de 160bit faz do ataque de fora bruta ineficiente. claro que no existe alguma prova que
algum no possa entender como quebrar o SHA.
4.3.2.2.

Histrico

Este algoritmo foi desenvolvido pelo NIST, National Institute of Standards and
Technology, e foi publicada como um FIPS, Federal Information Processing Standard
em 1993. Mais precisamente o SHA foi conhecido como o FIPS PUB 180. Em 1995,
esta publicao foi revisada e ganhou a identificao de FIPS PUB 180-1 a qual
conhecida genericamente como SHA-1. O SHA baseado no algoritmo do MD4 e o seu
projeto se assemelha muito ao do MD4.
Algoritmo
O algoritmo toma uma mensagem de entrada com o tamanho mximo menor do que 264
bits e produz na sada uma mensagem resumida ou message digeste com o tamanho
de 160 bits.

52-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

O processamento geral da mensagem segue a estrutura do MD5. Os componentes do


algoritmo podem ser resumidos a uma entrada de tamanho de bloco de 512 bits, um
conjunto de funes hash e uma cadeia com tamanho varivel de 160 bits na sada. O
processo consiste nas seguintes etapas:
Adio dos bits de enchimento: Na mensagem feita a adio de bits de tal forma que o
seu tamanho seja congruente a operao 448 mdulo de 512 (tamanho = 448 mod
512). Este processo conhecido como enchimento de bits ou simplesmente enchimento
. O enchimento sempre executado mesmo quando a mensagem j se encontra no
tamanho desejado. Portanto, o nmero de bits de enchimento est sempre na faixa de 0 a
512 bits. O enchimento consiste de um nico bit 1 seguido pelo nmero necessrio de
bits 0.
Adio do tamanho. Um bloco de 64 bits adicionado a mensagem. Este bloco tratado
como um inteiro indefinido de 64 bits com o bit mais significativo sendo o primeiro e
contendo o tamanho da mensagem original antes da mesma passar pelo processo de
enchimento.
4.3.2.3.

Inicializao do Buffer do valor Final da Message Digest

Um buffer de 160 bits e usado para guardar os resultados intermedirios e final da


funo hash. Este buffer pode ser representado com 5 registradores de 32-bits (A, B, C,
D, E). Estes registradores so inicializados com os seguintes nmeros inteiros de 32-bit
em hexadecimal, conforme a tabela 4.3-2.
A = 67452301

B = EFCAD89

C = 98BADCFE

D = 10325476

E = C3D2E1F0

Tabela 4.3-2 Buffer com seus respectivos registradores

Observando estes valores iniciais para os registradores, verifica-se que os quatro


primeiros so os mesmos utilizados no MD5. Entretanto, no caso do SHA1 estes
valores so guardados no formato em que o byte mais significativo de uma palavra est
no endereo mais baixo da posio do byte. Como string de 32 bits, os valores de
inicializao em hexadecimal tem a forma, conforme listado na tabela 4.3-3 abaixo:

53-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Palavra A

Palavra B

Palavra C

Palavra D

Palavra E

67 45 23 01

EF CD AB 89

98 BA DC FE

10 32 54 76

C3 D2 E1 F0

Tabela 4.3-3 - Buffer com seus valores de inicializao


4.3.2.4.

Processamento da Mensagem em Blocos de 512 bits

O ponto central do algoritmo um mdulo que consiste de 4 estgios de processamento


de 20 passos cada um. A lgica mostrada na figura 4.3-2 a seguir. Os quatro estgios
tm estruturas similares, entretanto cada um usa uma funo lgica primitiva diferente
f1, f2, f3 e f4, como ilustrado na figura.
Cada estgio tem como entrada o bloco de 512 bit a ser processado e os valores de 160
bit (CVq) armazenados nos registradores A, B, C, D, E e faz uma atualizao do
contedo do buffer. Cada estgio tambm faz o uso de uma constante aditiva Kt, onde 0
t 79 indica um dos oitenta passos atravs dos quatro estgios. Na realidade, somente
quatro constantes Kt distintas so usadas. Os valores de Kt em decimal e hexadecimal
esto representados na tabela 4.3-4 a seguir:
Nmero do Passo Valor em Hexadecimal Parte Inteira de
0 t 19

Kt = 5A827999

[ 230 x 2 ]

20 t 39

Kt = 6ED9EBA1

[ 230 x 3 ]

40 t 59

Kt = 8F1BBCDC

[ 230 x 5 ]

60 t 79

Kt = CA62C1D6

[ 230 x 10 ]

Tabela 4.3-4 - Valores de Kt em Hexadecimal e Decimal

54-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

CVq de 160 bIt


BLOCO de 512 bit

f1, K, W [0...19]
20 passos

f2, K, W [20...39]
20 passos

f3, K, W [40...59]
20 passos

f4, K, W [60...79]
20 passos

+ + + + +
CVq+1 de 160 bit ou
Mensagem Resumida

Figura 4.3-2 Esquema do processamento de mensagem em blocos de 512 bits

A sada do quarto estgio soma da entrada do primeiro estgio CVq para produzir o
valor de CVq

+ 1

. Esta adio feita independentemente entre cada uma das cinco

palavras do buffer com suas palavras da entrada do primeiro passo CVq


correspondentes, usando o mdulo adicional 232

55-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

4.3.2.5.

A Sada

Depois que todos os blocos de 512 bits da mensagem so processados, a sada do ltimo
estgio ser a mensagem resumida ou message digest de 160 bit.
Em resumo, pode-se dizer que o comportamento do SHA-1 :
CV0 = VI
CVq+1 = SOMA32 (CVq, ABCDEq)
MD = CVfinal
Onde:
VI = Valor inicial do buffer dos registradores A,B,C,D e E
ABCDEq = sada do ltimo passo aps processar o bloco de mensagem q.
L= o nmero de blocos da mensagem incluindo o enchimento e os campos de tamanho,
ou seja, a mensagem em si.
SOMA32 = Mdulo adicional de 232 executado separadamente para cada par de palavras
em sua entrada
MD = Mensagem final Resumida ou Message Digest.
4.3.2.6.

Funo de Compresso do SHA-1

A expresso abaixo esclarece com detalhes a lgica em cada um dos 80 passos do


processamento de um bloco de 512 bits. Ainda, a figura 4.3-2 a seguir, ilustra os
detalhes da lgica do processo.
A,B.C.D.E (E + f(t, B, C, D) + S5(A) + Wf + Kt), A, S30(B), C, D

56-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

ft

S5

S30

Wf

Kf

Figura 4.3-3 Detalhamento de um dos 80 passos executados no SHA.Onde

Onde:
A , B, C, D, E = As palavras do buffer.
t = nmero do passo (0 t 79).
f(t, B, C, D) = Funo lgica Primitiva para o passo t.
Sk = Deslocamento circular a esquerda (rotao) do argumento de 32 bit por k bits.
Wt = Uma palavra de 32 bit derivada do bloco de entrada de 512 bit corrente.
Kt = Constante aditiva - quatro valores distintos so usados, como j definido
anteriormente.
+ = Mdulo de 232 somador
Cada funo primitiva toma trs palavras de 32 bits como entrada e produz uma palavra
de 32 bits como sada. Cada funo executa um conjunto de operaes lgicas
inteligentes, isto , o n-simo bit de sada funo dos n-simos bits das trs entradas.
A tabela abaixo apresenta o sumrio das funes:

57-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Passo

Nome da Funo Valor da Funo

0 t 19

f1 = f(t, B, C, D)

(B C) (B D)

20 t 39 f2 = f(t, B, C, D)

BCD

40 t 59 f3 = f(t, B, C, D)

(B C) (B D) (C D)

60 t 79 f4 = f(t, B, C, D)

BCD

Tabela 4.3-5 - Funes Lgicas Utilizadas nos Passos do SHA.

Observando a tabela acima, nota-se que apenas trs das funes so diferentes. Para 0
t 19, a funo uma funo condicional, ou seja, se for B ento fica sendo C, caso
contrrioser D. Para 20 t 39 e 60 t 79, a funo uma funo de paridade de
bit. Para 40 t 59, a funo ser verdadeira se dois ou trs do argumentos so
verdadeiros. A tabela 4.3-7 mostra a tabela verdade para todas estas funes:

f0..19

f20..39

f040..59

f60..79

Tabela 4.3-6 - Tabela Verdade para as Funes Lgicas do SHA.


58-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Falta ainda indicar como os valores das palavras de 32 bits Wt so derivados da


mensagem original de 512 bits. Os primeiros 16 valores de Wt so tomados diretamente
das 16 palavras do bloco corrente ou buffer atual. O restante dos valores so definidos
como mostra a expresso a seguir e a figura 4.3-3representa o diagrama dos blocos do
processo, conforme ilustrado abaixo.
Wt = S1( Wt-16 Wt-14 Wt-8 Wt-3 )
512 bits
W 0 W2

Yq

W0

W1

...

W15

W16

W8 W13

Wt -16

Wt-14 Wt -

Wt - 3

W63 W65 W71 W76

XOR

XOR

XOR

S1

S1

S1

...

Wt

...

W79

Figura 4.3-4 - Esquema da derivao das palavras Wt de 32 bits da mensagem


original.

Portanto, nos primeiros 16 passos de processamento o valor de Wt igual a palavra


correspondente no bloco de mensagem. Para o restante dos 64 passos, o valor de Wf
consiste de um deslocamento circular a esquerda por um bit de um OU-EXCLUSIVO
de quatro dos valores precedentes de Wf . aqui que se encontra a diferena primordial
do SHA-1 quando comparado com o MD5, ou seja, no MD5 usada uma das 16
palavras do bloco de mensagem diretamente como entrada para cada passo da funo,
somente a ordem das palavras permutada a cada passo. J o SHA-1 expande o bloco de
16 palavras em 80 palavras para serem usadas nas funes de compresso. Este fato
introduz uma grande redundncia e interdependncia entre os blocos de mensagens que
esto sendo comprimidos, o que complica a tarefa de encontrar um bloco de mensagem
diferente que tenha a mesma funo de compresso de sada.

59-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

4.3.2.7.

Comparao entre o SHA-1 e o MD5

Pelo motivo de o SHA-1 e o MD5 serem diretamente derivados do MD4, eles so


bastante similares entre si. Portanto, as suas foras e outras caractersticas deveriam ser
similares. A seguir uma comparao ser feita entre os algoritmos, a saber:
-

Segurana contra Ataques de Fora Bruta: A diferena mais bvia e mais


importante tambm que no SHA-1 a mensagem final resumida 32 bits
mais longa do que a mensagem final no MD5. Se um ataque de fora bruta
for realizado, a dificuldade de se conseguir qualquer mensagem que possua a
mesma mensagem resumida esta na ordem de 2128 tentativas para o MD5 e
2160 para o SHA-1. Portanto. os nmeros mostram que o SHA-1 muito mais
resistente a este tipo de ataque.

Segurana contra a Anlise Cripotogrfica: Devido a implementao de


projeto, j bem difundido no meio de segurana que o MD5 vulnervel a
ataques de Anlise Criptogrfica. Por outro lado, o SHA-1, ao que tudo
indica aparenta no ser suscetvel, a este tipo de ataque. Entretanto, pouco
conhecido sobre o critrio de projeto do SHA-1, logo a sua fora com relao
a este quesito mais difcil de ser julgada quando comparado aos demais.

Velocidade: Pelo motivo de que os dois algoritmos se baseiam fortemente no


mdulo adicional 232 , ambos rodam bem em sistemas com arquitetura de 32
bits. O SHA-1 envolve mais passos (80 contra 64) e deve processa um buffer
de 160 bits contra o buffer de 128 bits do MD5. Portanto, o SHA-1 deve
rodar mais lentamente do que o MD5 quando executados na mesma
mquina.

Simplicidade e Compactao: Os dois algoritmos so bastantes simples de


descrever e tambm simples de implementar, no requerendo grandes
programas ou tabelas de substituies.

Arquiteturas de Mquinas Pequenas versus Arquitetura de Mquinas


Grandes: O MD5 utiliza uma arquitetura de mquinas pequena para
interpretar a mensagem como uma palavras de 32 bits, ao passo que o SHA-1
se utiliza de uma arquitetura de mquinas grandes, provavelmente porque o
60-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

NSA projetou o SHA usando estaes da SUN para a implementao do


prottipo. Entretanto, este fato aparenta no ser vantagem para nenhum dos
dois algoritmos.

4.3.3.

Implementao Prtica

4.3.3.1.

Instalao do Aplicativo

Passo 1: O aluno dever obter, a partir do servidor FTP indicado pelo instrutor (utilizar
login anonymous), o arquivo sha_tar.gz que se encontra dentro no diretrio sha,
gravando-o no diretrio /home/seguranca. Este arquivo dever ser descompactado,
procedimento este que resulta na criao de um subdiretrio /home/seguranca/sha,
contendo um conjunto de arquivos criados automaticamente. O comando para execuo
do processo de descompactao, a ser digitado no prompt do shell de comandos :
tar zxvf sha_tar.gz
-

Observao 1: Feito o passo anterior, o aluno dever entrar no diretrio sha


criado e verificar os vrios arquivos e diretrios criados com a extrao e ler
o arquivo README para poder ter uma idia melhor desta implementao.

Passo 2: Aps a leitura completa dos arquivos da implementao o aluno dever gerar o
conjunto de arquivos executveis a partir das rotinas que esto implementadas. Para
tanto, o aluno dever digitar de dentro do diretrio sha o seguinte comando no prompt:
make
-

Observao 2: Este procedimento compilar todos os arquivos .c contidos


no diretrio, gerar os seus respectivos arquivos objetos e criar ainda os
seus arquivos executveis.

4.3.3.2.

Execuo

Passo 3: Aps voltar ao README para saber como se faz para executar o principal
aplicativo do pacote que o executvel ./sha, o aluno dever gerar uma funo hash
dos arquivos tico.doc e linux-2.2.0.tar.gz. Estes arquivos podero ser obtidos a partir
do servidor FTP indicado pelo instrutor (utilizar login anonymous), no diretrio util e o

61-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

aluno dever copi-los para dentro do diretrio rsa. Para gerar a funo o comando a
ser dado no prompt :
./sha [arq_de_onde_se_quer_o_hash] > [arq_de_sada]
Passo 4: Uma outra tarefa para este laboratrio, seria o aluno editar o arquivo a.txt, o
mesmo usado no experimento do DES, e fazer algumas alteraes acrescentando mais
linhas no prrpio arquivo e salv-lo como a1.txt. Logo aps o aluno poder gerar a
funo hash para os arquivos a.txt e a1.txt e direcionar seus arquivos de sada para um
arquivo com o nome a sua escolha.

62-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

4.4. PGP
4.4.1.

Objetivo da Experincia:

Este captulo trata da instalao e utilizao de uma ferramenta, PGP Pretty Good
Privacy, que tem como objetivo autenticar e criptografar mensagens.
Neste captulo o aluno ser habilitado a:
 Entender o funcionamento da ferramenta e simular todos os passos de
autenticao e criptografia de mensagens;
 Implementar troca de mensagens seguras entre os alunos, realizando um
intercmbio de chaves que permitir cifrar e decifrar mensagens; e
 Verificar assinaturas eletrnicas.

4.4.2.

Teoria Introdutria:

Uma pergunta que fomentada pelas pessoas que se utilizam de recursos eletrnicos em
suas reas fins, de como manter a privacidade, a confidencialidade e a integridade da
informao. Apesar de no mundo computacional, a maioria das pessoas no
expressarem tal preocupao, o problema existe. O PGP, ferramenta que ser explorada
neste captulo, considerada por especialistas como uma das solues viveis, e ainda
de fcil implementao. Uma documentao mais detalhada poder ser encontrada na
pgina principal do PGP International Home Page http://www.pgpi.com.
Toda mensagem possui um cabealho, e neste que a maioria dos ataques so
investidos. Atualmente, qualquer pessoa pode alterar o contedo de um cabealho,
alterando por exemplo, a identidade do emissor da mensagem. Programas de segurana
de e-mail podem garantir, ou autenticar, que uma certa mensagem de fato da pessoa de
quem o nome aparece na linha "From". Isto algumas vezes conhecido como
autenticao de dados da origem, ou comumente conhecida como, assinatura digital.

63-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

4.4.2.1.

Assinatura Digital

Como descritos no captulo 2, existem meios de garantir a legitimidade da informao e


de quem ela assina. No meio digital, a criptografia baseada em chaves, que podem ser
privadas ou pblicas, e nesta composio que estar a certificao da informao e do
emissor [16] [18].
De qualquer forma possvel inverter os papis da chave pblica e privada, ou seja, o
emissor poderia codificar a sua mensagem com sua chave privada e poderia envi-la ao
receptor. Esta no nenhuma comunicao segura, porque o receptor, ou qualquer um
outro, poderia decifrar a mensagem com a chave pblica do emissor e poderia ter acesso
a estas informaes. A chave pblica do emissor pblica e est extensamente
disponvel. Porm ningum possue a chave privada do emissor, ningum poderia ter
codificado a mensagem, e isto autentica a origem da mensagem.
Resumindo, apenas o emissor conhece sua chave privada, logo somente ele poder
codificar a mensagem. Todos conhecem a chave pblica do emissor, assim qualquer um
poder decifrar a mensagem. Codificando a mensagem com a chave privada do emissor,
este est efetivamente assinando a mensagem. Quando o receptor decifra a mensagem
com a chave pblica do emissor, ele verifica a assinatura dele, o que autentica a origem
da mensagem. Para a decifrao da mensagem ser legvel, a mensagem precisa ser
assinada pela chave privada do emissor. Qualquer um pode verificar a assinatura do
emissor.
As assinaturas digitais satisfazem os cinco critrios das assinaturas de papel que foram
listadas anteriormente:
-

A assinatura no pode ser falsificada; s o emissor conhece sua chave


privada.

A assinatura autntica; quando o receptor verifica a assinatura com a chave


pblica do emissor, o receptor sabe que quem assinou a mensagem foi o
emissor;

A assinatura no reutilizvel; a assinatura em um documento no pode ser


transferida para qualquer outro documento;
64-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.
-

O documento assinado inaltervel; qualquer alterao de um documento


(se ele foi ou no codificado) e a assinatura no mais vlido;

A assinatura no pode ser repudiada. O receptor no precisa do auxlio do


emissor prar comprovar sua assinatura;

Portanto, assinar no significa realmente codificar com a chave privada e a verificao


no realmente decifrar com a chave pblica.
A partir de agora sero discutidos, resumidamente, os algoritmos de assinatura digital
utilizados pelo PGP. Vale lembrar que estes algortmos j foram escritos nos roteiros
experimentais anteriores.
4.4.2.2.

Algoritmos de Assinatura Digital

Alm de codificar chaves, o algoritmo de chave pblica RSA pode ser tambm usado
para gerar assinaturas digitais. As matemticas so as mesmas quando se utiliza o RSA
para administrao de chaves ou assinaturas digitais: existe a chave pblica e a chave
privada, e a segurana do sistema est baseado na dificuldade de fatorar nmeros
grandes.
O DSA, Digital Signature Digital, um algoritmo de chave pblica, mas s pode ser
usado para assinaturas digitais. Quando o padro foi primeiramente proposto, o tamanho
da chave era de 512 bits, considerado para as condies de segurana de hoje, muito
pequeno. O padro final permite chaves de at 1024 bits.
O DSA obtm sua segurana do problema de logaritmo discreto. A matemtica muito
diferente do RSA, mas a segurana semelhante para chaves semelhantes em tamanho.
Embora excees sejam teoricamente possveis, provvel que qualquer grande avano
na quebra do RSA tambm implique em um avano semelhante na quebra do DSA, e
vice-versa. No existe nenhuma vantagem na segurana usando um algoritmo sobre o
outro. Ocasionalmente, comparaes entre a velocidade e eficincia entre os dois
algoritmos so publicadas. No surpreendentemente, os publicados pela Industria RSA
de Segurana de Dados mostram que o RSA melhor que o DSA e os publicados pelo
NIST mostram que o DSA melhor que o RSA. Com o RSA, leva-se mais tempo para

65-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

assinar uma mensagem que verificar uma assinatura. Com o DSA, ambas operaes de
assinatura e de verificao levam a mesma quantia de tempo.
O maior problema de usar criptografia de chave pblica para cifrar a mensagem so os
algoritmos de chave pblica que so incmodos e complicados e demoram para assinar
uma mensagem inteira. Uma forma de tentar contornar este problema para os programas
de segurana de correio eletrnico so utilizarem uma impresso digital (fingerprint) do
documento e assinando aquela impresso.
Esta funo de fingerprinting chamada uma funo de hash unidirecional. Uma
funo de hash unidirecional pega um tamanho arbitrrio da mensagem e produz uma
impresso digital de tamanho fixo daquela mensagem. A impresso digital uma
funo matemtica nica da mensagem e grande o suficiente de forma que a chance de
duas mensagens diferentes terem o mesmo valor de hash astronomicamente pequeno.
Assim, o programa de segurana de correio eletrnico utiliza uma funo de hash
unidirecional para gerar um hash do documento a ser assinado e, desta forma, utiliza um
algoritmo de assinatura digital para criptografia de chave pblica para assinar o valor de
hash, que bem menor que a mensagem, na maioria das vezes.
Um exemplo prtico deste procedimento, seria um emissor estar usando MD5 como
uma funo de hash unidirecional e o RSA para assinaturas digitais. A seguir, ser
mostrado todos os passos da mensagem enviada do emissor para o receptor.
-

O emissor escreve a mensagem;

O emissor gera um hash unidirecional da mensagem e usa uma funo de


hash unidirecional, como o MD5;

O emissor assina o valor de hash com um algoritmo de assinatura digital de


chave pblica, como o RSA e a sua chave privada;

O emissor concatena a mensagem e a assinatura para adquirir uma


mensagem nova e assinada; e

O emissor envia por e-mail esta mensagem assinada para o receptor.

66-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

O receptor poder ler a mensagem sem fazer qualquer esforo, porm o receptor
precisa verificar se a assinatura de quem originalmente enviou, o emissor. A seguir
ser mostrado todos os passos que o receptor dever fazer para verificar a assinatura de
um mail eletrnico.
-

O receptor separa a mensagem da assinatura;

Usando uma funo de hash unidirecional, o receptor computa o valor de


hash da mensagem;

O receptor adquire a chave pblica do emissor;

Usando um algoritmo de assinatura digital de chave pblica e a chave


pblica do emissor , o receptor decifra a assinatura do emissor; e

O receptor compara a assinatura decifrada do emissor com o valor de hash


da mensagem. Se forem iguais, o receptor verificou a assinatura do emissor e
aceitou a mensagem como genuna. Se eles forem diferentes, o receptor
rejeita a assinatura.

Isto poderia parecer um procedimento complicado, mas cabe lembrar que programas de
segurana, como o PGP, cuidam destes detalhes. Tudo que o emissor tem que fazer
indicar que deseja enviar uma mensagem assinada. O PGP gera o valor de hash
unidirecional, assina o hash, concatena a mensagem e o hash juntos e envia a tudo ao
receptor. J no receptor, o PGP faz a operao inversa e de verificao facilmente.
A cifrao prov segurana e confidncia, e assinaturas digitais provem prova de
autenticidade e de origem. No existe nenhuma razo para que no se possa usar ao
mesmo tempo, cifrao e assinaturas digitais. O PGP exerce papel fundamental nestas
tcnicas, tanto a cifrao como a assinatura digital so quesitos imprencindveis na
segurana contra espionagem e adulterao.
No PGP, as chaves pblicas so guardadas em certificados de chaves individuais, que
incluem: o user ID do proprietrio da chave, o fuso horrio de quando o par de chaves
foi gerado e os dados atuais da chave.

67-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Os certificados das chaves pblicas contm os dados da chave pblica, enquanto que os
certificados da chave secreta contem os dados da chave secreta. Cada chave secreta
tambm cifrada com sua prpria senha, em caso de ser roubada. Um arquivo de
chaves ou "anel de chaves" contem um ou mais desses certificados de chaves. Anis de
chaves pblicas contem certificados de chaves pblicas e anis de chaves secretas
contem certificados de chaves secretas.
As chaves tambm so internamente relacionadas por uma "Chave de ID" (Chave de
Identificao), que uma "abreviao" da chave pblica (os primeiros 64 bits
significativos da grande chave pblica). Quando esta chave de ID exibida, so
mostrados, por um curto perodo de tempo, apenas os 32 bits mais baixos. Enquanto que
muitas chaves podem dividir o mesmo user ID, duas chaves no dividem a mesma
chave de ID.
Os anis de chaves publicas e os anis de chave privada constituem o mtodo principal
de armazenamento e de administrao das chaves pblica e secreta. Melhor do que
manter chaves individuais em arquivos separados de chaves, estas so agrupadas em
anis de chave para facilitar a verificao automtica das chaves, seja pela chave de ID,
seja pelo user ID. Cada usurio possui seu prprio par de anis de chaves. Uma chave
pblica individual temporariamente mantida em arquivo separado at que seja enviada
a algum, que ir ento adicion-la a seu anel de chaves.
4.4.2.3.

Codificando e Assinando uma Mensagem

O emissor quer enviar uma mensagem segura para o receptor, codificada e assinada (de
fato, o software de segurana de correio eletrnico dele passa por este processo. a maior
parte deste processo transparente.) Eis o que acontece:
-

Emissor escreve uma mensagem.

Emissor gera um hash da mensagem, usando uma funo de hash


unidirecional.

Emissor assina o valor de hash com a sua assinatura (a sua chave privada
colocada usando um algoritmo de assinatura digital, como o RSA.)

68-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.
-

Emissor concatena a mensagem e a assinatura para adquirir uma nova


mensagem assinada.

Emissor gera uma chave cifrada randmica a ser usada para codificar a
mensagem assinada.

Emissor utiliza uma chave cifrada randomicamente para codificar a


mensagem assinada com um algoritmo convencional, como o RC4.

Emissor adquire a chave pblica do receptor em algum lugar como um


servidor de chaves.

Emissor codifica aquela chave cifrada randomicamente com a chave pblica


do receptor e um algoritmo de chave pblica, como o RSA.

Emissor concatena a mensagem codificada na chave codificada para adquirir


a mensagem final e segura.

Emissor envia a mensagem segura para o receptor.

4.4.2.4.

Verificando e Decifrando uma Mensagem

No outro lado, o receptor quer ler a mensagem do emissor. Antes que ele possa fazer
isso, o programa de segurana de correio eletrnico dele tem que passar pelo seguintes
passos:
-

receptor

separa

mensagem

codificada

da

chave

codificada

randomicamente.
-

Usando um algoritmo de chave pblica e a chave privada dele, o receptor


decifra a chave codificada randomicamente.

Usando um algoritmo convencional, como o RC4, e a chave decifrada, o


receptor decifra a mensagem.

Receptor

separa

mensagem

da

assinatura

do

emissor.

Usando uma funo de hash unidirecional, receptor computa o valor de hash


da mensagem.

69-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.
-

Recpetor adquire a chave pblica do emissor em algum lugar como um


servidor de chaves.

Usando um algoritmo de assinatura digital de chave pblica, como o RSA, e


a chave pblica do emissor, o recpetor decifra a assinatura do emissor.

O receptor compara a assinatura decifrada do emissor com o valor de hash


da mensagem. Se forem iguais, o receptor verificou a assinatura do emissor e
aceitou a mensagem como genuna. Se forem diferentes, o receptor rejeita a
assinatura.

4.4.3.

Implementao Prtica

Os procedimentos dessa experincia sero divididos em duas etapas. Na primeira parte


o aluno dever criar uma mensagem cifrada e autenticada manualmente, isto , a partir
de um texto plano, o aluno utilizar os algoritmos de criptografia simtrica, assimtrica
e hash, introduzidos nas experincias passadas, para gerar uma mensagem segura e
autenticada. Na segunda parte o aluno repetir a experincia, contudo utilizando o PGP,
que facilitar a execuo de todo o processo.
Nas duas etapas necessrio que se formem duplas para que um aluno possa decifrar e
verificar a assinatura da mensagem do outro.
4.4.3.1.

Primeira Etapa - Criptografia e Autenticao manual:

Passo 1: O aluno dever criar dois subdiretrios codificar e decodificar do diretrio


/home/seguranca. Agora o aluno dever copiar um arquivo texto qualquer para o

diretrio /home/seguranca/codificar (sugesto: pode se aproveitar o mesmo arquivo


a.txt dos experimentos anteriores).

Passo 2: O aluno dever copiar o arquivo de chave publica do seu companheiro de


grupo para os dois subdiretrios codificar e decodificar.
Passo 3: Codificao: O aluno dever gerar um hash utilizando o MD5, gravando o
arquivo gerado no diretrio codificar. Logo aps, o aluno dever assinar o valor de hash
com a sua chave privada do RSA.

70-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Passo 4: O aluno dever concatenar a mensagem e a assinatura para adquirir uma


mensagem assinada e salv-la no diretrio codificar. Para isso, o aluno dever
utilizar o comando TAR, conforme a sintaxe abaixo:
tar c [arq1] [arq2] > sada
Passo 5: O aluno dever criar um arquivo texto no diretrio codificar que contenha, na
primeira linha, uma palavra randmica. Esse arquivo vai ser usado como uma chave
cifrada para codificar a mensagem com um algoritmo simtrico. O aluno dever utilizar
a chave cifrada para codificar a mensagem assinada com o auxlio do DES, gravando o
arquivo codificado no diretrio codificar.
Passo 6: O aluno dever codificar o arquivo que contm a chave com o auxlio do RSA
e da chave pblica do seu companheiro de grupo. Concatene agora, com auxlio da
funo TAR, a mensagem cifrada e a chave cifrada para adquirir uma mensagem
segura.
Passo 7: Decodificao: O aluno dever copiar para o diretrio decodificar

mensagem codificada pelo seu companheiro de grupo. O aluno dever separar a


mensagem codificada da chave codificada utilizando o seguinte comando TAR:
tar xvf arquivo
Passo 8: Agora o aluno dever decifrar a chave codificada utilizando o RSA e a sua
chave privada. Com a chave decifrada e o DES, o aluno poder decodificar a
mensagem.
Passo 7: Agora, o aluno dever separar a mensagem da assinatura com o comando
TAR, e com o auxlio do MD5, computar o valor de hash da mensagem. Ainda, com o
auxlio da chave pblica do seu companheiro de grupo e o RSA, decifrar a assinatura.
Passo 8: Finalmente, o aluno dever comparar as duas assinaturas com o comando cmp,
conforme sintaxe a seguir:
cmp arq1 arq2

71-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

4.4.3.2.

Segunda Etapa Usando PGP

Passo 9: O aluno dever obter, a partir do servidor FTP indicado pelo instrutor (utilizar
login anonymous), o arquivo pgp.2.6-i.tar.gz que se encontra dentro no diretrio pgp,
gravando-o no diretrio /home/seguranca. Este arquivo dever ser descompactado,
procedimento este que resulta na criao de um subdiretrio /home/seguranca/pgp,
contendo um conjunto de arquivos criados automaticamente. O comando para execuo
do processo de descompactao, a ser digitado no prompt do shell de comandos :
tar -zxvf pgp.2.6-i.tar.gz
-

Observao 1: Feito o passo anterior, o aluno dever entrar no diretrio pgp


criado e verificar os vrios arquivos e diretrios criados com a extrao e ler
o arquivo README.

Passo 10: Aps a leitura completa dos arquivos da implementao o aluno dever gerar
o conjunto de arquivos executveis a partir das rotinas que esto implementadas. Para
tanto, o aluno dever digitar de dentro do diretrio ras o seguinte comando no prompt:
make.
-

Observao 2: Este procedimento compilar todos os arquivos .c contidos


no diretrio, gerar os seus respectivos arquivos objetos e criar ainda os
seus arquivos executveis. Todos os arquivos executveis se encontram no
diretrio /home/seguranca/pgp/src

Passo 11: Gerao do par de chaves: No diretrio /home/seguranca/pgp/src o aluno


dever digitar o seguinte comando:
pgp kg
-

Observao 3: O programa vai orientar o aluno para criar a sua chave.

72-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Passo 11: Para a obteno do arquivo de chave pblica para distribuio, o aluno dever
digitar o seguinte comando:
pgp -kxa
-

userID

Observao 4:

arquivo_de_chave

[anel de chave]

De posse do arquivo, o aluno dever entregar ao seu

companheiro de grupo para que ele possa acrescentar a sua chave ao anel de
chave pblica (pubring) dele.
Passo 12: Para a atualizao do anel de chave pblica, o aluno dever obter o arquivo
de chave pblica do seu companheiro de grupo. Para isto o aluno dever digitar o
seguinte comando:
pgp -ka

arquivo_de_chave

[anel_de_chave]

Passo 13: Para assinar e cifrar uma mensagem o aluno dever executar o seguinte
comando:
pgp -es

arq_texto

userId_do_dest.

[-u seu_userID]

Passo 14: Para decifrar e verificar a assinatura, o aluno dever executar o seguinte
comando:
pgp

arq_de_texto_cdigo

[-o arq_de_texto_plano]

Passo 15: Com base na referncia do PGP em anexo a essa experincia, o aluno poder
fazer novos testes utilizando outras funes do PGP, tais como apenas cifrar, apenas
assinar, separar a assinatura da mensagem quando decifrar, etc...

73-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

PGP Referncia - Resumo dos comandos do PGP.

Para cifrar um arquivo de texto plano com a chave pblica do destinatrio:


pgp -e

arquivo_texto

userID_do_destinatrio

Este comando produz um arquivo de texto cdigo chamado arquivo_texto.pgp


(textfile.pgp). Um exemplo especfico :
pgp -e carta.txt UsuarioA
Neste exemplo o PGP vai at o arquivo de anel de chave pblica "pubring.pgp" e
procura algum certificado de chave pblica que contenha a seqncia "UsuarioA" em
qualquer lugar no campo do userID. No se deve usar espaos na seqncia na linha de
comando, a menos que coloque entre aspas. A procura no diferencia letras maisculas
de minsculas. Se ele encontrar uma chave pblica que encaixe, a utiliza para cifrar o
arquivo de texto plano "carta.txt", produzindo um arquivo de texto cdigo chamado
"carta.pgp".
O PGP tenta compactar o texto plano antes de cifr-lo, aumentando assim muito mais a
resistncia a criptoanlises. Desta maneira, o arquivo de texto cdigo provavelmente
ser menor do que o arquivo de texto plano.
Para assinar um arquivo de texto plano com a chave secreta:
pgp -s

arquivo_texto

[-u seu_userID]

Observe que os [colchetes] indicam um campo opcional.


Este comando produz um arquivo assinado chamado arquivo_texto.pgp. Um exemplo
especfico :
pgp -s carta.txt -u UsuarioB
O PGP procura no arquivo de anel de chave secreta "secring.pgp" algum certificado de
chave secreta que contenha a seqncia "UsuarioB" em qualquer lugar no campo do
userID. A procura no diferencia letras maisculas de minsculas. Se ele encontrar uma

74-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

chave secreta que se encaixe, a utiliza para assinar o arquivo de texto plano "carta.txt",
produzindo um arquivo assinado chamado "carta.pgp".
Caso o aluno no coloque o userID, a primeira chave do seu anel de chave secreta
usada como padro para sua assinatura.
Para assinar um arquivo de texto plano ASCII com a chave secreta, produzindo uma
mensagem de texto plano assinada (no-cifrada) adequada para ser enviada via correio
eletrnico:
pgp -sta

arquivo_texto

[-u seu_userID]

Para assinar um arquivo de texto plano com a chave secreta e depois cifr-lo com a
chave pblica do destinatrio:
pgp -es

arq_texto

userId_do_dest [-u seu_userID]

Observe que os [colchetes] indicam um campo opcional.


Este exemplo produz um arquivo de texto cdigo chamado arquivo_texto.pgp. Sua
chave secreta para criar a assinatura automaticamente procurada no seu anel de chave
secreta atravs de seu userID. A chave de criptografia pblica do destinatrio
automaticamente procurada no seu anel de chave pblica atravs do userID. Se no for
colocado o userID do destinatrio na linha de comando, o programa perguntar.
Se no for colocado o userID, a primeira chave do anel de chave secreta usada como
padro para a assinatura.
Para cifrar um arquivo de texto plano somente com a criptografia convencional, digite:
pgp -c

arquivo_texto

Para decifrar um arquivo cifrado ou para verificar a integridade da assinatura de um


arquivo assinado:
pgp

arq_de_texto_cdigo

[-o arq_de_texto_plano]

Supe-se que o nome do arquivo de texto cdigo tenha uma extenso padro do ".pgp".
O nome opcional do arquivo de sada do texto plano especifica onde colocar a sada do

75-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

texto plano processado. Se no for especificado nenhum nome, usado o nome do


arquivo de texto cdigo sem extenso. Se uma assinatura estiver dentro de um arquivo
cifrado, este decifrado automaticamente e a integridade da assinatura verificada. O
userID completo do assinante mostrado.
Observe que o "desempacotamento" do arquivo de texto cdigo completamente
automtico, sem considerar se ele est apenas assinado, apenas cifrado ou os dois. O
PGP usa o prefixo da chave de ID (chave de identificao) no arquivo de texto cdigo
para encontrar automaticamente, no seu anel de chave secreta, a chave de criptografia
secreta apropriada. Se existir uma assinatura, ele, ento, usa o prefixo de chave de ID
nesta assinatura para encontrar automaticamente, no seu anel de chave pblica, a chave
pblica apropriada e para depois verific-la. Se todas as chaves corretas j foram
apresentadas nos seus anis de chave, no preciso a interveno do usurio, mas, se
necessrio, ser pedido a sua senha para sua chave secreta. Se o arquivo de texto cdigo
foi convencionalmente cifrado sem a criptografia de chave pblica, o PGP reconhece
este processo e pede a sua frase-senha para, convencionalmente, decifr-lo.
Para cifrar uma mensagem para vrios destinatrios mltiplos:
pgp -e

arquivo_texto

userID1

userID2

userID3

Comandos de administrao de chaves:


Para gerar seu prprio par nico de chave pblica/secreta:
pgp kg
O PGP mostra uma lista de tamanhos de chaves recomendados (baixo grau comercial,
alto grau comercial ou grau "militar") e pede pelo tamanho de chave que deseja, acima
de milhares de bits. Quanto maior a chave, maior a segurana, mas perde em
velocidade.
Tambm pede por um userID que, na verdade, o seu nome. uma boa idia usar o seu
nome completo como userID, porque assim, h pouco risco de outras pessoas usarem a
chave pblica errada para cifrar mensagens para voc. No userID so permitidos
espaos e pontuaes. Seria bom se voc colocasse seu endereo eletrnico entre < >
depois de seu nome, deste modo: Robert M. Smith <rms@xyzcorp.com>
76-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Se voc no tiver um endereo eletrnico, use seu numero telefnico ou qualquer outra
informao que s sua, pois ajudaria a garantir que seu userID nico.
O PGP tambm pede uma "frase senha" para proteger sua chave secreta se por acaso
cair em mos erradas. Ningum pode usar seu arquivo de chave secreta sem esta frase
senha. Esta frase como uma senha, mas pode ser uma expresso completa ou uma
frase com muitas palavras, espaos, pontuao ou qualquer coisa mais que queira
colocar. No a perca pois no existe meio de recuper-la. Esta frase senha ser
necessria mais tarde, toda vez que usar sua chave secreta. Ela diferencia letras
maisculas de minsculas e no deve ser muito curta ou fcil de se adivinhar. Nunca
mostrada na tela. No a deixe escrita em qualquer lugar, onde algum mais pode v-la e
no a guarde em seu computador. Se no quiser uma frase senha, pressione apenas enter
quando for pedida.
O par de chaves pblica/secreta derivado de uma grande quantidade de nmeros
verdadeiramente aleatrios que, na verdade, so originados principalmente da medida
dos intervalos entre seus toques no teclado. O software pedir para voc entrar com um
texto aleatrio para ajud-lo a acumular alguns bits aleatrios para as chaves. Quando
pedido, dever digitar algumas teclas com intervalos de tempos razoavelmente
aleatrios entre si e isto no quebraria a formao dos caracteres reais que voc digita
ao acaso. Um pouco da aleatoriedade derivada da impreciso do contedo do que voc
digita. Assim, no digite apenas seqncias repetidas de caracteres.
O par de chaves gerado ser colocado nos anis de chaves pblica e secreta. Poder
mais tarde usar a opo de comando -kx para extrair (copiar) sua nova chave pblica do
seu anel de chave pblica e coloc-la num arquivo separado adequado para a sua
distribuio a seus amigos. O arquivo de chave pblica pode ser enviado para seus
amigos para a incluso em seus anis de chave pblica. Naturalmente, mantenha com
voc seu arquivo de chave secreta e inclua-o no seu anel de chave secreta. Cada chave
secreta em um anel de chave protegida individualmente com sua prpria frase senha.
Para acrescentar um contedo do arquivo de chave secreta ou pblica para seu anel de
chave pblica e secreta:
pgp -ka

arquivo_de_chave
77-80

[anel_de_chave]

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

Para extrair (copiar) uma chave do seu anel de chave pblica ou secreta:
pgp -kx

userID arquivo_de_chave

[anel de chave]

ou:
pgp -kxa

userID

arquivo_de_chave

[anel de chave]

O PGP copia, sem destruir, a chave especificada pelo userID do seu anel de chave
pblica ou secreta para o arquivo de chave especificado. Isto particularmente til se
quiser dar uma cpia da sua chave pblica para algum.
Se a chave tiver algumas assinaturas certificadas anexadas ao seu anel de chave, estas
so copiadas juntamente com a chave.
Para ver os contedos do seu anel de chave pblica:
pgp -kv[v]

[userID]

[anel_de_chave]

Para ver a "digital" de uma chave pblica, a fim de verific-la pelo telefone com seu
dono:
pgp -kvc

[userID]

[anel_de_chave]

Para ver os contedos e verificar as assinaturas certificadas de seu anel de chave


pblica:
pgp -kc

[userID]

[anel_de_chave]

Para editar o userID ou a frase senha para sua chave secreta:


pgp -ke

userID

[anel_de_chave]

Para editar os parmetros confiveis para uma chave pblica:


pgp -ke

userID

[anel_de_chave]

Para remover uma chave ou apenas um userID de seu anel de chave pblica:
pgp -kr

userID

[anel_de_chave]

Para assinar e certificar a chave pblica de algum no seu anel de chave pblica:
78-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

pgp -ks userID_do_dest [-u seu_userID][anel_de_chave]


Para remover assinaturas selecionadas de um userID em um anel de chave:
pgp -krs

userID

[anel_de_chave]

Para remover definitivamente sua prpria chave, divulgando um certificado de


comprometimento de chave:
pgp -kd

seu_userID

Para invalidar ou reabilitar uma chave pblica em seu prprio anel de chave pblica:
pgp -kd

userID

Comandos Especiais:
Para decifrar uma mensagem e deixar intacta sua assinatura:
pgp -d

arquivo_de_texto_cdigo

Para criar um certificado de assinatura separado do documento:


pgp -sb

arquivo_texto

[-u seu_userID]

Para separar um certificado de assinatura de uma mensagem assinada:


pgp -b

arquivo_de_texto_cdigo

Opes de comandos que podem ser usados em combinao com outras opes
Para produzir um arquivo de texto cdigo no formato ASCII Base-64, apenas acrescente
a opo -a quando cifrar ou assinar uma mensagem ou extrair uma chave:
pgp -sea

arquivo_texto

pgp -kxa

userID

userId_do_destinatrio

ou:
arquivo_de_chave

[anel_de_chave]

Para apagar o arquivo de texto plano depois de produzir o arquivo de texto cdigo,
apenas acrescente a opo -w (wipe - destruir) quando cifrar ou assinar uma mensagem:

79-80

Univerisade de Braslia UnB


Departamento de Engenharia Eltrica - ENE
Laborarrio de Redes de Comunicao LabRedes
Laboratrio de Segurana verso 0.1
Prof. Ricardo Staciarini Puttini e Prof. Rafael Timteo de Sousa Jr.

pgp -sew

mensagem.txt

userID_do_destinatrio

Para especificar que um arquivo de texto plano contem texto ASCII, no binrio, e que
deveria ser convertido de acordo com os padres locais de tela do destinatrio,
acrescente a opo -t (texto) junto as outras opes:
pgp -seat

mensagem.txt

userID_do_destinatrio

Para ver a sada do texto plano cifrado na sua tela (como o comando "more" do estilo
UNIX), sem escrev-lo em um arquivo, use a opo -m (mais) enquanto decifra:
pgp -m

arquivo_de_texto_cdigo

Para especificar que o texto plano decifrado do destinatrio ser mostrado SOMENTE
na tela dele e no poder' ser salvo em disco, acrescente a opo -m:
pgp -steam

mensagem.txt

userID_do_destinatrio

Para recuperar o nome original do arquivo de texto planto enquanto decifra, acrescente a
opo -p:
pgp -p

arquivo_de_texto_cdigo

Para usar um filtro do estilo UNIX, lendo da entrada padro e escrevendo para a sada
padro, acrescente a opo -f:
pgp -feast userID_do_destinatrio <arquivo_entrada >
arquivo_sada

80-80

Vous aimerez peut-être aussi