Você está na página 1de 23

Criptografia é uma especialização da matemática e engenharia que oferecem técnicas de proteção a mecanismos de acesso e a

integridade de dados, e também de ferramentas para avaliação da eficácia dessas técnicas. Este curso irá abordar conceitos,
técnicas e procedimentos mais eficazes hoje conhecidos para a construção de mecanismos criptográficos de dados digitais, e de
meios para que sejam integrados em sistemas de informação que queiram ser protegidos.

Vale ressaltar que em se tratando de criptografia, existe uma gama de possibilidades de tratar o assunto devido a complexidade
dessa área de estudo e pesquisa. Aconselho que tenham uma grande força de vontade em adquirir a sensibilidade para o melhor
aproveitamento deste curso.

Lição 1 - Noções Básicas de Segurança

Começar um curso sobre criptogia sem mencionar Segurança Computacional faz com que não sejam preenchidas todas
informações necessárias para o bom entendimento do assunto. Começo ilustrando superficialmente sobre esta área de estudo e
a medida que passamos as lições, aprofundaremos nosso foco de estudo e seria um equívoco achar que esta área seja um foco
de estudo específico apenas para estudos em informática.

O mundo de hoje fornece mecanismos facilitadores para adquirir produtos e esse fato nos faz acreditar que podemos comprar
soluções de segurança prontas para atender a nossa demanda. Nem sempre o que nós estamos procurando podem ser
encontradas em prateleiras de lojas de informática e também não podemos simplesmente gerar uma receita de bolo na forma de
algoritmo. Logo, o que iremos ver a seguir, será uma tentativa de desenvolver alguma sensibilidade de como usar
conhecimentos e ferramentas na área de criptografia e chaves digitais.

Iremos passar por conceitos, técnicas e procedimentos mais eficazes, hoje conhecidos para a construção de mecanismos
criptográficos de dados digitais e de meios para que sejam integrados em sistemas de informação que queiram ser protegidos.

Algumas áreas de conhecimento são diretamente correlacionadas com o nosso assunto de criptografia e chaves digitais.
Podemos citar o conhecimento de aritmética modular (aritmética dos processadores digitais), do funcionamento básico de
sistemas operacionais, conhecimento em redes de computadores e também noção de complexidade de algoritmos.

Mas uma dúvida pode surgir no ar, por que essas informações são importantes?

Criptografia é uma especialização da matemática e engenharia que oferecem técnicas de proteção a mecanismos de acesso e a
integridade de dados, e também de ferramentas para avaliação da eficácia dessas ténicas. Estas técnicas e ferramentas são
relacionadas no sentido sintático e não podemos atribuir confiança no sentido semântico nas informações dos dados veiculados.

Apesar de ser interessante um pré-requisito nestas áreas, não será estritamente necessário para este curso pois estarei
indiretamente colocando estes conceitos a medida que prosseguirmos nessa caminhada ao conhecimento.

Um exemplo básico do que temos que ter em mente quando se trata deste
assunto é o seguinte: hipoteticamente, suponhamos que temos uma casa e
queremos protegê-la de intrusos, a criptografia poderia ser
relacionado metaforicamente a cadeados, trancas e mecanismos fortes na
porta para que crie a suposta segurança perfeita. Porém, mesmo com todos
estes mecanismos, não adiantaria nada se o terreno não for bem analisado e deixássemos uma
janela aberta no fundo da casa.

Existe um dilema nessa área de segurança da informação, onde podemos tratar como a versão digital da segunda lei da
termodinâmica, expressa pela equação de Nemeth:

Segurança = 1 / Conveniência

Quanto maior a comodidade para o usuário, menor a segurança e vice-versa. Então, a sabedoria para equilibrar os dois lados
dessa equação (segurança x conveniência), juntamente em saber discenir a quantidade certa da paranóia de cada indivíduo,
torna complexa a tarefa de um profissional da segurança.

Logo podemos concluir que a criptografia não é uma solução mágica para
todos os problemas de segurança na informática. Esta fornece apenas truques para
manipulação dos bits para que possamos conhecer melhor e ter a
sensibilidade para nos defender no mundo virtual.
Um texto muito interessante escrito por um criptógrafo famoso nesta área (Bruce Schneier) se encontra no link a seguir:"Por
que a criptografia é mais difícil do que parece?"
Eu realmente recomendo a leitura deste texto, pois oferece uma boa visão geral do assunto e ilustra o estado da arte do objeto
de nosso estudo.
A palavra "segurança" em português do Brasil possui dois sentidos básicos na língua inglesa:

Safety eSecurity

• Safety está relacionado a controle e proteção contra acidentes (Leis de Murphy).


• Security está ligado a controle e proteção contra ataques (Leis de natureza humana - H.M.D)

*H.M.D - Hipótese Metafísica de Descartes


Descartes era um filósofo famoso na qual acreditava na hipótese da existência de um gênio maligno, que poderia enganar as
pessoas acerca até mesmo de coisas que lhe parecerem evidentes.

Sendo assim, a idéia seria de que poderiam existir pessoas com gênio maligno para enganar e ludibriar os mais diversos
sistemas de informação, sem que as pessoas percebam.

A seguir, estudaremos tendo em mente a idéia de "security" ao invés de "safety".


Antes de fazermos qualquer planejamento para a segurança de um sistema, logicamente teremos que pré estabelecer o que irá
demandar proteção. A seguir, será mostrada dois desafios básicos para a proteção:

• Desafio 1 - Padronizar mecanismos e protocolos

Cada localidade é relacionado ao alvo de proteção de cada ambiente. Podemos citar:

• Instituições Financeiras: Transações Eletrônicas


• Grandes Corporações: Gerência e Comércio Eletrônico
• Telecomunicações: Provimento de Serviços
• Comunidades: Internet e Redes Locais
• Governo: Administração, Militar e Espionagem

• Desafio 2 - Normas do ambiente

Segurança do tipo:

• Alta e Restrita: Governos e Organizações Militares


• Sensível: Comércio, Indústria e Comunidades
• Virtual Interna: Sistemas Operacionais e Bancos de Dados
• Virtual Externa: Redes de Computadores e Telecomunicações

Basicamente podemos citar quatro tipos de demandas básicas para qualquer mecanismo de proteção. A tabela a seguir está
listada o tipo de mecanismo de proteção, a ameaça básica para este tipo de proteção e qual a má fé que poderia acontecer para
o sistema.

Tipo de Proteção Ameaça Básica Ação


Privacidade ou Sigilo Vazamento ou desvalorização Leitura
Integridade Fraude, Adulteração ou perda Escrita
Legitimidade Acesso indevido a execução Execução
Disponibilidade Bloqueio indevido de serviço Não Execução

Privacidade ou Sigilo: algumas vezes queremos proteger algum documento confidencial na qual o remetente e o destinatário são
os únicos que serão permitidos a visualização deste mesmo documento. A ameaça neste tipo de proteção seria um vazamento
do documento(senha do banco) ou desvalorização (número de um sorteio) e a quebra do sistema protegido se dá por meio da
leitura dos dados confidenciais.
Integridade: o envio de alguma informação pelos meios de comunicação, exige que a mesma chegue o destinatário contendo o
mesmo valor do remetente. Durante a transmissão, alguns fatos como fraude, adulteração ou perda dos dados poderiam ocorrer
e a ação direta relacionada a estes fatos, seria a escrita sobre as informações.

Legitimidade: como poderíamos, pelos meios de comunicação virtual, saber se alguma informação enviada seria realmente de
quem pensamos ser? A ameaça principal seria alguém se apossar de seus dados e agir de má fé se identificando como o
possuidor verdadeiro da informação. Logo, existe uma relação direta entre a personificação e uma posterior execução de
ações(ex.: compra virtual por número de cartão de crédito).

Disponibilidade: para algumas empresas, é muito importante a disponibilidade de seus serviços pois qualquer queda no sistema
acarretará em prejuízos. Uma ameaça a estes serviços seria o bloqueio indevido destes serviços muita vezes pela não execução
correta do sistema.
Analisar cada componente de qualquer processo de um sistema é de suma importância para que seja bem consistente e de fácil
manutenção e identificação de erros. A seguir serão citados alguns componentes básicos :

• Política de Segurança de Dados

1. Planejamento - Avaliar e analisar os riscos e custos.


2. Especificação para implementar serviços e salvaguardas.
3. Atribuição documentada de autorização e responsabilidades.

Para uma boa política de segurança, os três itens ilustrados anteriormente devem ser respeitados. A seguir, um pequeno
exemplo de roteiro para planejamento para as políticas de Segurança de Dados será mostrado:

• Quais recursos e ativos em bits devem ser protegidos?


• De quem (securityu) e de que(safety) se quer protegê-los?
• Qual a chance/probabilidade de acidentes, ameaças e trapaças?
• Como medir o valor dos ativos em bits e recursos?
• Quais ações podem protegê-los com custo/benefício aceitável?
• Que planos de contigência, reavaliação, terceirização, etc. decorrem?

Além de disponibilidade de serviço de segurança é importante também saber o que fazer quando se ocorre algum problema não
planejado. Podemos citar algumas salvaguardas não computacionais abaixo:

• Segurança física - controle de acesso físico, blindagem, etc...


• Segurança funcional - recrutamento, treinamento, motivação.
• Segurança administrativa - auditoria, fiscalização, contigência.
• Segurança na mídia - backup, destruição de material, etc...
• Radiação ou Engenharia Reversa - blindagem no encapsulamento.
• Controles de ciclos - reavaliação da política de segurança.

• Controle e Auditoria

o Monitoramente - gerenciadores (rede, backup) logs, IDS, etc...


o Rastreamento - vacinas, firewalls, wrappers, proxies, etc...
o Avaliação - análise estatística, relatórios, revisão de políticas de estratégias,etc...

• Serviços Básicos de Segurança Computacional

o Controle de Acesso - Identificação e Autorização para legitimidade

o Cifragem - Codificação para Sigilo

o Autenticação - Validação de Origem ou Integridade


o Certificação - Autenticação Recursiva com Verificação Aberta para integridade

Esses esquemas serão explicados futuramente, detalhando cada componente dos mecanismos básicos segundo a sua premissa
(o que se deseja obter - sigilo, legitimidade, integridade e autenticação recursiva,etc... )

Ataques primários por penetração

• Personificação: o atacante invade pelo perímetro de login, onde o sistema considera o invasor como alguém cadastrado
no sistema.
• Desvio de Controle: exploração de falhas de segurança permitem que o controle dele seja desviado para outras pessoas.
• Violação de Autoridade: uso indevido de previlégios devido a falhas no sistema.

Ataques primários por implantação

• Gancho(backdoor): uso de recurso não documentado.


• Infecção: exploit, virus, vermes.
• Embuste: programa trojan, spoofing(falsificação do remetente).

Tradução do texto original de Bruce Schneier

http://www.schneier.com/essay-037.html
http://insecure.org/stf/whycrypto.html

"Porque a criptografia é mais difícil do que parece?

Do correio eletrônico à telefonia celular, do acesso seguro a servidores WEB à moeda eletrônica, a criptografia é parte essencial
dos sistemas de informação de hoje. A criptografia ajuda a imputar responsabilidade, promover a justiça, prover acurácia e
privacidade. Pode prevenir fraudes em comércio eletrônico e garantir a validade de transações financeiras. Usada
apropriadamente, protege a anomidade e fornece provas de identidade de pessoas. Pode impedir vândalos de alterarem sua
página na internet e computadores industriais de lerem seus documentos confidenciais. Com o comércio seguindo sua marcha
pelas redes de computadores, a criptografia se tonará cada vez mais vital.

Mas a criptografia hoje existente no mercado não fornece a segurança que apregoa seu marketing. A maioria desses sitemas são
projetados e implementados não por criptógrafos, mas por engenheiros que pensam que a criptografia é como qualquer outra
tecnologia de computadores. Não é. Você não pode tornar um sistema seguro simplesmente acrescentando criptografia como
uma medida adicional. Você precisa saber o que está fazendo a cada passo do caminho, da concepção até a implementação do
sistema.

Bilhões de dólares são gastos em segurança de computadores e quase todo este dinheiro é desperdiçado em produtos inseguros.
Afinal, criptografia fraca parece idêntica à criptografia forte na vitrine de software. Dois produtos de encriptaçao de correio
eletrônico no mercado tem interface de usuário praticamente idênticas, enquanto um deles é seguro e o outro permite
"bisbilhotagem". Uma tabela contendo comparações entre recursos pode sugerir que dois produtos tenham funcionalidade
similar, embora um possa ter furos comprometedores de segurança e o outro não. Um criptógrafo experiente pode reconhecer a
diferença. Determinados tipos de criminosos também poderão.

A segurança de computadores hoje em dia é um castelo de cartas; pode se manter de pé por agora, mas não vai durar. Muitos
produtos inseguros ainda não foram quebrados porque ainda estão em sua infância, mas à medida em que se tornem mais e
mais usados, torna-se-ão alvos atraentes para criminosos. A impresa divulgará os ataques, minando a confiança do público
nesses sistemas. No final, produtos sobreviverão no mercado de acordo com a robustez de sua segurança.

Os ataques a sistemas de informação são dos mais variados tipos. Toda forma de comércio já inventado tem sido alvo de
fraudes, desde as balanças propositadamente descalibradas, o dinheiro falso, as faturas frias, etc. O comércio eletrônico
também sofrerá fraudes, personificação, bloqueio de serviço, e falsificações. Não se pode caminhar pelas ruas usando uma
máscara que imita o rosto de outra pessoa sem ser percebido, mas no mundo digital é muito fácil personificar outrem. Ocorre
que a informatização torna os riscos maiores ainda, permitindo ataques automatizados, impossíveis de serem conduzidos contra
sistemas não automatizados. Um ladrão pode se sustentar retirando um centavo por mês de cada dono de cartão de crédito
VIsa. Apenas com a criptografia forte pode-se proteger tais sistemas contra estes tipos de ataques.

Violações contra a privacidade constituem outro tipo de ataque. Alguns ataques contra a privacidade são direcionados: alguém
da imprensa pode tentar ler a correspondência eletrônica de uma figura pública, ou uma companhia pode tentar interceptar as
comunicações de um competidor. Pode-se também tentar ataques de colheita. buscando informações interessantes em um mar
de dados: viúvas ricas, usuários de AZT, pessoas que visitam determinada página da internet, etc.

O vandalismo eletrônico é um problema cada vez mais sério. Já foram pichadas as páginas digitais da agência de serviço secreto
dos EUA, enviadas cartas-bomba digitais a provedores da internet, e cancelados centenas de listas de discussão eletrônicas,
além de ataques que bloqueiam o acesso a computadores que se comunicam por meio de determinados protocolos. E como
divulgado, ladrões e vândalos rotineiramente invadem redes de computadores. Quando as salvaguardas de segurança não são
adequadas, os invasores correm poucos riscos de projetistas de analistas de sistemas, como no exemplo de arrombadores que
entram numa casa abrindo um buraco na parede, evitando os alarmes e trancas das portas e janelas.

Vândalos cibernéticos também abrem buracos em paredes de bits. Roubam dados técnicos, subornam agentes, modificam
programas e macomunam. Tiram vantagens de tecnologias mais avançadas que a dos sistemas que querem atacar, e até
descobrem novos métodos matemáticos para atacá-los. Geralmente dispõem de mais tempo do que alguém honesto
normalmente teria para desmontar e examinar um sistema. O securID foi usado durante anos até que alguém olhou
atentamente dentro do seu gerenciador de chaves: seus códigos binários ainda continham rótulos! As chances favorecem os
atacantes, que só precisam encontrar um ponto vulnerável no sistema, enquanto os defensores precisam proteger seus sitema
de toda vulnerabilidade possível.

O que a criptografia pode e não pode fazer

A garantia de 100% de segurança é uma falácia, mas podemos trabalhar em direção a 100% de aceitação de riscos. Fraudes
existem nas formas usuais de comércio: dinheiro pode ser falsificado, cheques adulterados ou roubados, números de cartão de
crédito copiados. Mesmo assim, esses sistemas ainda têm sucesso porque seus benefícios e conveniências compensam as
perdas. Cofres, fechaduras e cortinas - mecanismos de privacidade - nao são perfeitos mas com frequência são bons o
suficiente. Um bom sistema criptográfico atinge o equilíbrio entre o que é possível e o que é aceitável.

A criptografia forte pode resistir com sucesso a ataques que lhe são direcionados até um certo ponto - o ponto onde se torna
mais fácil obter , de alguma outra maneira, a informação que ele protege. Um sistema criptográfico, não importa quão seguro,
não irá impedir que alguém vasculhe seu lixo. Mas pode perfeitamente prevenir ataques de colheita de dados: ninguém
conseguirá vasculhar suficientes latas de lixo para montar a lista de todos os usuários de AZT do país.

A boa notícia sobre criptografia é que já temos os algoritmos e protocolos para proteger nossos sistemas. A má notícia é que
esta foi a parte mais fácil: implementações bem sucedidads requerem especialização considerável. As áreas de segurança na
informática que interagem com pessoas - gerência de chaves, segurança da interface homem/máquina e controle de acesso -
frequentemente desafiam análise. As disciplinas de infra-estrutura de chaves públicas, segurança do software, segurança de
computadores, segurança de redes e projeto de hardware inviolável são também pouco compreendidas.

Companhias muitas vezes fazem mal a parte fácil e implementam algoritmos e protoclos inseguros. Mas mesmo assim, na
prática raramente a cropgrafia é quebrada por causa, ou através, de sua matemática; outras peças do sistema são mais fáceis
de serem quebradas. O protocolo mais seguro já inventado poderá facilmente sucumbir a um ataque simples se não for dada
atenção a detalhes mais complexos e sutis sobre sua implementação. A segurança do browser Netscape 1.0 caiu devido a uma
falha no seu gerador de números randômicos. As falhas podem estar em qualquer lugar: no modelo de ameaças, no projeto do
sistema, na implementação do software ou do hardware , ou na gerência do sistema. Segurança é uma cadeia, onde um único
elo fraco pode quebrar todo o sistema. Bugs fatais a segurança podem estar em partes do software distantes dos módulos que
implementam serviços de segurança, e uma decisão de projeto que não tenha nada a ver com segurança poderá criar uma falha
de segurança.

Uma vez encontrada uma falha de segurança, pode-se consertá-la. Mas encontrar as falhas, para inicio de conversa, pode ser
extremamente difícil. Segurança é diferente de qualquer outro requisito de projeto, porque nele funcionalidade não é igual a
qualidade: se um editor de texto imprime corretamente, sabe-se que a função de impressão funciona. Segurança é diferente: só
porque um cofre reconhce a combinação correta para abri-lo, não significa que seu conteúdo está seguro contra um chaveiro ou
arrombador. Nenhuma quantidade de testes beta revelará todas as falhas de segurança de um sistema, e não haverá nenhum
teste possível que provê a ausência destas falhas.

Modelos de ameaças

Um bom projeto começa por um modelo de ameaças. O que o sistema está sendo concebido para proteger, de quem e durante
quanto tempo? O modelo de ameaças deve levar em consideração todo o sistema, não apenas os dados que está sendo
projetado para proteger, mas também e principalmente as pessoas que irão usá-lo e como irão usá-lo. O que motivará os
atacantes? Que tipo de abusos podem ser tolerados? Deve um tipo de ataque ser prevenido ou basta que seja detectado? Se o
pior acontecer e alguma hipótese fundamental sobre a segurança do sistema for violada, que tipo de salvamento pós-desastre
pode ser conduzido? Respostas a estas questões não podem ser padronizadas como os algoritmos e protocolos. São diferentes
para cada sistema, e com frequência projetistas não dedicam tempo a construir um modelo realista das ameaças ou a analisar
os riscos. Modelos de ameaças permitem a desenvolvedores de produtos e consumidores determinar quais medidas de
segurança são necessárias: terá sentido encriptar todo seu disco rígido se você não guarda seus documentos de papel num
cofre? Como pode alguém de dentro da companhia fraudar o sistema de comércio? Qual é exatamente o custo para se
neutralizar a inviolabilidade de um cartão inteligente?
Não se pode especificar um sistema seguro sem conhecimento sobre contra o que, e de quem , se deseja protegê-lo.

Projeto de Sistemas

O projeto de um sistema criptográfico deve ser feito somente após o modelo de ameaças ter sido compreendido. Este trabalho é
o tema central da criptologia, e é muito especializado. A criptografia mescla várias áreas da matemática: teoria dos números,
teoria da complexidade, teoria da informação, teoria da probabilidade, álgebra abstrata, análise formal, dentre outros. Poucos
podem contribuir apropriadamente para esta ciência, onde um pouco de conhecimento é muito perigoso: criptógrafos
inexperientes quase sempre projetam sistemas falhos. Bons criptógrafos sabem que nada substitui a revisão extensiva feita por
colegas e anos de análise. SIstemas de qualidade usam algoritmos e protocolos publicados e bem compreendidos: usar
elementos não provados em um projeto é no mínimo arriscado.

O projeto de sistemas criptográficos é também uma arte. O projetista precisa atingir um equilíbrio entre segurança e
acessibilidade, anonimidade e responsabilização, privacidade e disponibilidade. A ciência sozinha não garante segurança:
somente a experiência e a intuição nascida da experiência podem guiar o criptógrafo no projeto de sistemas criptográficos e na
busca de falhas em sistemas existentes.

Bons sistemas de segurança são feitos de pequenos módulos independentemente verificáveis (e que tenham sido verificados!),
cada um provendo algum serviço que claramente se resuma a uma primitiva. Existem vários sistemas no mercado que são muito
grandes para serem verificados em tempo razoável.

Implementação

Existe uma distância enorme entre um algoritmo matemático e sua implementação concreta em hardware ou em software.
Projetos de sistemas criptográficos são muito frágeis. Só porque um protocolo é logicamente seguro, não significa que
permanecerá seguro quando o implementador começar a definir estrutura de dados e a descrever a passagem de bits de um
lado para outro. "Fechado" nunca será totalmente fechado: esses sistemas têm que ser perfeitamente implementados, senão
irão falhar. Uma interface mal projetada pode tornar um encriptador de arquivos de disco completamente inseguro. Uma
interface de sincronização mal projetada pode deixar um furo em um sistema para comunicações seguras. Confiança excessiva
na inviolabilidade de hardware, tais como os chips de cartões selados, pode tornar inútil um sistema de comércio eletrônico.
Como estes problemas não aparecem em testes, por vezes aparecem em produtos já lançados no mercado.

Implementadores estão sempre sob pressão de orçamentos e prazos. Cometem os mesmos erros várias vezes à fio, em muitos
produtos diferentes. Usam geradores de sequências randômicas ruins, não checam condições de erro apropriadamente, e deixam
informações secretas em arquivos de swap. Muitas destas falhas não podem ser estudadas em livros acadêmicos porque não são
tecnicamente interessantes. A única maneira de aprender sobre estas falhas é fazendo e quebrando sistemas de segurança, um
após o outro, em uma corrida sem fim.

Procedimentos e Gerência

No final da estória, muitos sistemas de segurança são quebrados por pessoas que os usam, e a maioria das fraudes contra
sistemas de comércio são praticadas por quem os opera. Usuários honestos também causam problemas, porque geralmente não
ligam para segurança. Eles querem simplicidade, conveniência, e compatibilidade com sistemas legados (inseguros) e em uso.
Eles escolhem senhas fracas, anotam-nas, passam-nas para parentes e amigos, largam computadores com sessões abertas, etc.
É muito difícil vender fechaduras para pessoas que não querem ser molestadas pela responsabilidade de carregar chaves.
Sistemas bem projetados têm que levar em conta as pessoas, e as pessoas são os elementos mais difíceis de serem abstraídas
no projeto.

Aí é onde está realmente o custo com segurança. Não está nos algoritmos. A criptografia forte não é mais cara que a fraca. O
grosso do custo também não está em projeto e implementação: sai bem mais barato projetar e implementar um bom sistema do
que cobrir as perdas com um sistema inseguro. A maior parte de seu custo está em fazer com que as pessoas o utilizem. É difícil
convencer um consumidor sobre a importância de sua privacidade financeira, quando o mesmo está disposto a trocar um
detalhado registro de suas compras por um milésimo de uma viagem ao Havaí. É difícil construir um sistema de autenticação
robusto sobre um outro sistema que permite ser penetrado por meio do conhecimento do nome de solteira da mãe de alguém. A
segurança rotineiramente ultrapassada por vencedores, gerentes, executivos e qualquer um que esteja querendo "apenas tocar
o serviço".

Mesmo quando o usuário compreende a necessidade de um sistema de segurança robusto, não terão meios de comparar dois
sistemas. Revistas de computação comparam produtos de segurança utilizando seus recursos e funcionalidade, e não avaliando
sua segurança. Propagadas de produtos fazem asserções que simplesmente não se sustentam. Um produto mais robusto, isto é,
melhor testado(e portanto mais caro), estarão nestas condições em desvantagem para a comercialização. As pessoas confiam no
governo para zelar pela sua segurança e bem estar, em coisas para as quais não detém conhecimento suficiente para fazerem
sua própria avaliação - industrialização de alimentos, aviação, medicamentos, medicina, etc. Com a criptografia , entretanto, os
governos fazem geralmente o contrário.

Problemas no Futuro

Quando um avião cai, são abertos inquéritos, feitas análises e laudos técnicos. Informação sobre o acidente amplamente
divulgada, e muitos aprendem algo com o acidente. Pode-se obter das autoridades, laudos sobre acidentes aéreos desde o início
da história da aviação. Mas quando um sistema eletrônico de transações financeiras de um banco é penetrado e fraudado, quase
sempre o episódio é acobertardo. Se alguma informação chega até os jornais, os detalhes são omitidos. Ninguem analisa o
ataque, e ninguém aprende nada com os erros. O banco tenta remendar o problema em segredo, na esperança de que a
clientela não perca a confiança num sistema que não merece esta confiança.

Remendar sistemas de segurança para tapar furos em resposta a ataque bem sucedidos não é suficiente. A informação move
muito depresas. Uma falha em algum sistema, descrita na internet, pode ser explorada por milhares em um dia. Os sistemas
para hoje precisam antecipar futuros ataques. Qualquer sistema de grande porte-seja para comunicações autenticadas,
armazenamento seguro de dados ou comércio eletrônico - deveria ter vida útil de cinco anos ou mais. Para permanecer seguro,
precisa ser capaz de resistir ao futuro: ataques mais inteligentes, com maior capacidade computacional e motivações crescentes
para se subverter um sistema que está consolidado por longo uso. Não haverá tempo para se fazer upgrades enquanto estiver
em uso.
A história tem nos ensinado: nunca subestime a quantildade de recursos em dinheiro, tempo e esforço que alguém esteja
disposto a gastar para subverter um sistema. Use sistemas de defesa ortogonais, com várias maneiras de se fazer a mesma
coisa. Autenticação segura pode significar assinaturas digitais pelo usuário via teclado, SSL para proteger a transmissão, IPSec
pelo firewall para o destino, junto com pontos de auditoria múltiplos ao longo do caminho para gerar rastros e produzir
evidências. A quebra de alguma parte dará ao atacante uma alavanca, mas não causará o colapso de todo o sistema.

É sempre melhor assumir o pior. Assuma que seus adversários são melhores do que realmente são. Assuma que a ciência e
tecnologia poderão em breve fazer coisas que hoje ainda não podem. Dê a si mesmo uma margem de erro. Dê a si mesmo mais
segurança do que hoje precisa. Quando o inesperado acontecer, você estará contente por ter agido assim". [Bruce Schneier]

Lição 2 - Introdução a Criptologia

A criptologia desde os tempos antigos, sempre foi um assunto de grande interesse de governantes e povos, em épocas de paz e
de guerra. Essas idéias surgiram devido a história sempre ter informações confidenciais e interesses diversos que não podiam
cair em domínio público. Podemos suspeitar o porquê em tempos remotos, ela ter sido considerada uma arte: sempre
impulsionaram as pessoas a criarem novos meios criativos para "esconder/embaralhar" o sentido de seus simbolos.

Para facilitar o estudo, os historiadores dividiram a


história em fases, épocas, períodos, segundo critérios por eles
avaliados. Uma dessas divisões que aprendemos no colégio são: história
antiga, média, moderna e contemporânia.

A divisão da
história da criptologia não está estritamente limitado pelas datas oficiais citadas
acima, porém será útil no sentido do entendimento de como a criptologia
estava presente nos tempos citados abaixo.

• Período a.C. até 476 d.C - Idade Antiga


• Período 476d.C até 1453 d.C. - Idade Média
• Período 1453d.C até 1789 d.C - Idade Moderna
• Período 1789d.C até +-1900d.C - Idade Contemporânea Recente
• Período de 1900d.C até hoje - Idade Contemporânea Atualidade

Caso você tenha curiosidade em ver onde e quando estava


presente a criptologia (mesmo quando ela não era considerada como
ciência exata), acesse o link disponibilizado abaixo:

http://www.numaboa.com.br/criptologia/historia/index.php

O surgimento da escrita significou o advento de uma tecnologia fundamental para o desenvolvimento do ser humano na face da
Terra. Era uma forma de preservar pensamentos, técnicas e emoções com um conjunto de traços e com isso foi capaz de
acumular e produzir conhecimentos que, mais tarde, dariam origem à filosofia, às ciências e às artes. Paralela a esta fundação
de um novo meio de preservar informações, o homem também começou a "brincar" com as escritas cifradas, porém a evolução
desse meio "oculto" de escrita foi bem lenta, pois, no início existia apenas uma necessidade da disponibilidade de troca de
informação, sem a necessidade de esconder o conteúdo de qualquer mensagem.

As palavras Criptografia/Criptologia/Criptoanálise têm origem grega na qual "Cripto" vem do "kryptos" que significa oculto,
envolto, escondido. "graphos" significa escrever e "logos" significa, ciência e "analysis" significa decomposição. Logo,
CRIPTOLOGIA é o estudo da escrita cifrada e tem como ciências relacionadas a CRIPTOGRAFIA e a CRIPTOANÁLISE.

O segredo sempre foi alvo de curiosidade entre as pessoas. Quem nunca brincou da língua do "pê"? (pês pêta pêmos pêes pêstu
pêdan pêdo pêcrip pêto pêlo pêgia!). Isso poderia ser classificado como algo chamado criptoFONIA na qual o som é encriptado.
A chave para abrir o sentido seria o "pê". Outro ambiente relacionado a isso seria um baile de máscaras onde existe a idéia de
esconder a identidade da pessoa e a chave para a identificação são as fantasias e máscaras.

Apesar da idéia de "esconder" o sentido das palavras, a criptologia existe como ciência há apenas 20 anos e antes era
considerada uma arte. Hoje em dia existem várias organizações de pesquisa nessa área, podemos citar a IACR"
target="_blank">http://www.iacr.org/).">IACR (http://www.iacr.org/).<BR< a> />

Existe outra área que não faz parte da criptografia: a Esteganografia. Este é o estudo das técnicas de ocultação de mensagens,
diferentemente da
Criptografia que não a oculta, mas a confunde de forma a tornar seu
significado ininteligível. Um exemplo de esteganografia seria de colocar alguma mensagem oculta em uma imagem .jpg.

A evolução tecnologia do mundo criou-se uma maior necessidade do uso da criptografia. Muitas comodidades de hoje em dia,
apesar de criarem grande disponibilidade de serviço, criam também muita transparência nos seus usos e muitas vezes, os
usuários não querem que as informações sejam deixadas em público. Como consequência direta, a criptolografia evoluiu muito
em pouco tempo.

Para entender o que tem hoje, é interessante voltar atrás e ir percorrendo a evolução da criptografia. Como citado
anteriormente nas subdivisões da criptologia, a criptografia é a ciência que estuda como escrever mensagens onde apenas o
remetente e o destinatário conseguem ler e a Criptoanálise seria o contrário, a ciência de decifrar e ler as mensagens cifradas.

Existem duas idéias principais com relação as mensagens. As palavras, caracteres ou letras da mensagem original constituem o
Texto Pleno ou Mensagem Clara. As palavras ou letras da mensagem cifrada são chamadas de Texto Cifrado, Mensagem Cifrada
ou Criptograma.

A
conversão do Texto Pleno em Texto Cifrado pode ser chamado de
composição de cifra e o inverso é chamado de decifração. Apesar de
muita gente falar em "encifração" ,"cifragem" ou "encriptação", estas
palavras não existem no dicionário Português do Brasil e o correto
seria falar "compor cifra". Como estas palavras fazem parte de uma
espécie de "jargão" da área, durante os textos pode ser que seja
encontrado alguns destes termos escritos, com o significado de compor
cifras.

Finalmente, podemos dizer que qualquer mensagem cifrada é o resultado


de uma aplicação de um algoritmo (regra de embaralhamento), associado a
uma chave específica (que podem ser de igual e de fácil dedução ou
diferentes, para o remente e destinatário)

Na prática, qualquer mensagem cifrada é o resultado da aplicação de


um SISTEMA GERAL (ou algorítmo), que é invariável, associado a uma
CHAVE ESPECÍFICA, que pode ser variável. É óbvio que tanto o remetente
quanto o destinatário precisam conhecer o sistema e a chave.

Lição 3 - Introdução a Criptografia

Antes de explicar a criptografia, temos que criar uma terminologia dos componentes de um mecanismos criptográfico para
facilitar seu entendimento.

Remetente/Destinatário

Suponha que uma pessoa queira enviar uma mensagem especial a um destino, mas queira que a mensagem seja segura: Ela
queira que ninguém possa "bisbilhotar" o conteúdo da mensagem.

Texto Pleno/Mensagem Cifrada

Existem duas idéias principais com relação as mensagens. As palavras, caracteres ou bits da mensagem original constituem o
Texto Pleno ou Mensagem Clara. Vamos denotar esse componente como (M). As palavras ou letras da mensagem cifrada são
chamadas de Texto Cifrado, Mensagem Cifrada ou Criptograma (C).

A
conversão do Texto Pleno em Texto Cifrado pode ser chamado de
composição de cifra e o inverso é chamado de decifração. Apesar de
muita gente falar em "encifração" ,"cifragem" ou "encriptação", estas
palavras não existem no dicionário Português do Brasil e o correto
seria falar "compor cifra". Como estas palavras fazem parte de uma
espécie de "jargão" da área, durante os textos pode ser que seja
encontrado alguns destes termos escritos, com o significado de compor
cifras.

Podemos formalizar uma fórmula matemática para a função de composição de cifra, que será denotada como E, ela utiliza o
texto pleno M para produzir a cifra C:

E(M) = C
O processo contrário seria uma função decifração D na qual irá utilizar a cifra C com argumento de entrada e produzirá de volta
o texto pleno M:

D(C) = M
Logo, podemos verificar como verdadeiro a função abaixo:
D(E(M)) = M
Na qual seria a formalização matemática de todo o processo de composição de cifra e decifração.
Como explicado anteriormente, além de confidenciabilidade da mensagem, outros serviços que necessitam de criptografia são:

• Autenticação: Deve ser possível o receptor da mensagem saber que o remetente é quem ele mesmo diz ser.
• Integridade: O receptor da mensagem deve confiar que a mensagem não foi adulterada no meio do meio do caminho.
• Não Repúdio: Quem enviou a mensagem não deve poder negar que a mensagem enviada por ele não foi dele.

Esses 4 mecanismos no mundo virtual garantem uma integração social entre computadores. Isso pode ser comparado a
interações do mundo real: alguém com sua carteira de motorista, seu passaporte, uma credencial provando sua identidade;
comunicações sigilosas para que não seja "bisbilhotado", etc... Isso tudo existe também utilizando esses quatro mecanismos de
proteção do mundo virtual.

Finalmente, podemos dizer que qualquer mensagem cifrada é o resultado


de uma aplicação de um algoritmo (regra de embaralhamento), associado a
uma chave específica (que podem ser de igual e de fácil dedução ou
diferentes, para o remente e destinatário).

Na prática, qualquer mensagem cifrada é o resultado da aplicação de


um SISTEMA GERAL (ou algorítmo), que é invariável, associado a uma
CHAVE ESPECÍFICA, que pode ser variável. É óbvio que tanto o remetente
quanto o destinatário precisam conhecer o sistema e a chave.

Existem basicamente dois tipos de chaves para a cifragem de dados: chaves simétricas e assimétricas.

Quando as chaves para a cifragem e decifragem das informações são iguais ou de fácil dedução, podemos colocá-las na
categoria de "Chaves Simétricas". Isso requer que o remetente/destinatário concordem em uma chave comum para poderem se
comunicar de modo seguro. Logo, podemos concluir que a segurança de um sistema baseado em algoritmo simétrico, está
baseado na chave. Se a chave for divulgada, qualquer pessoa poderia ler a mensagem cifrada. Para manter as informações
secretas, a chave deve se manter secreta.

Podemos mostrar o esquema como:

E K(M) = C
D K(C) = M

K = chave simétrica.

Consequentemente, o esquema de cifragem e decifragem com sua chave simétrica teria a fórmula:

D K(E K (M)) = M

Por outro lado, as chamadas Chaves Assimétricas foram criadas com a idéia de que a chave usada para cifragem ser diferente da
usada para decifragem. Além disso, pela chave de decifragem, não teria como conseguir achar achave de cifragem (Pelo menos
em um tempo bem longo. Isso será explicado melhor adiante).

O sistema baseado em Chave Assimétrica é chamado de Algoritmos de Chave Pública, pois a chave de cifragem pode ser deixada
em público e somente o possuidor da chave de decifragem poderá ler o conteúdo da mensagem. A chave de cifragem é
geralmente chamado de Chave-Pública e a chave de decifragem de Chave-Privada

Então, formalizando as idéias acima, quando as chaves de cifragem (K1) e decifragem (K2) são diferentes, podemos ter as
seguintes fórmulas:

E K1 (M) = C
D K2 (C) = M
D K2 (E K1 (M)) = M
A criptografia em tempos remotos, antes do surgimento de computadores, utilizavam apenas caracteres. Diferentes algoritmos
utilizaram técnicas de substituição de um caracter a outro, e/ou então, faziam a transposição de um caracter com outro.
Literamente era uma sopa de letrinhas misturadas.

Hoje em dia existe uma complexidade maior, mas a idéia básica da "sopa de letrinhas" se mantém. A primeira mudança para a
atualidade é o uso de bits (0 e 1) em vez de caracteres. Isso diminui o tamanho do alfabeto para 2 elementos. Muitos bons
algoritmos hoje em dia misturam as duas técnicas de substituição e transposição.

Cifras de Substituição
A abordagem principal dessas cifras é a substituição de cada caracter do texto pleno por outro da cifra. Para voltar ao texto
original, o receptor inverte a substituição do caracter na cifra para o texto pleno.

Existem basicamente quatro tipos de cifras de substituição:

Cifras Monoalfabéticas - é conhecida também como substituição simples, substitui-se cada um dos caracteres do texto original
por outro, de acordo com uma pré-estabelecida, para se
obter o texto cifrado. Como consequência, a frequência de ocorrência
das letras (números ou símbolos) da mensagem cifrada é a mesma que a
frequência de ocorrência das letras da língua usada na mensagem
original. Cada letra da
mensagem original é substituída por apenas uma outra letra, número ou
símbolo. Portanto, o comprimento da mensagem cifrada é o mesmo que o da
mensagem original.

Alfabeto normal: abcdefghijklmnopqrstuvwxyz


Alfabeto para a
PORTUGALBCDEFHIJKMNQSVWXYZ
cifragem:

Assim, a mensagem

Fujam todos depressa! Fomos descobertos!

é cifrada para

GSCPF QITIN TUJMUNNP! GIFIN TUNRIOUMQIN!


Um exemplo famoso deste tipo de cifra é a Cifra de Caesar, na qual cada texto original é substituído por outro caracter na direita
modulo 26 ("A" é substituído por "D", "B" é substituído por "E", ... , "X" é substituído por "A" - o modulo 26 significa que se
chegar na letra de posição 26, retornar para o começo do alfabeto).

Cifras Homofônicas - tem o funcionamento semelhante ao anterior, exceto a parte na qual cada caracter do texto original pode
ser mapeado em vários caracteres da cifra. Exemplo, "X" poderia corresponder a 20, 25 e 55. "Y" poderia corresponder a 9,13,
30 e 45, etc...

Alfabeto normal: a b c d e f g h i j k l m n o p q r s t u v w x y z
Alfabeto para a
8 F H G 3 l 1 L E I w o M X 6 Q P b V 9 a Z S D j r
cifragem:
z - k m x n B u 0 - - O A v 5 p - R y f 4 g - - - -
K - s N q - - - J - - a c - 2 - - T e Y h - - - - -
7 - - - t - - - - - - - - - W - - C - - - - - - - -
i - - - - - - - - - - - - - d - - - - - - - - - - -

Cada letra do alfabeto normal é substituída por uma das que lhe correspondem: Assim, a mensagem:

Fujam todos depressa! Fomos descobertos!

poderia, por exemplo, ser cifrada para:

l4IiA 9WNdy GqpCxyVz! n2M5V GxeHdF3Rf2e!

que tomaria, em blocos de cinco letras, o aspecto algo incompreensível de:

l4IiA 9WNdy GqpCx yVzn2 M5VGx eHdF3 Rf2e

Cifras de substituição de poligramas - nesse caso, os blocos de caracteres são cifrados em grupo. Por exemplo, "KXK" pode
corresponder a "LOP", "KYK" pode corresponder a "LPL", etc.;
Cifras de substituição polialfabética - composto de múltiplas substituições simples ao longo do texto e também múltiplos
alfabetos são usados. A idéia é substituir cada letra do alfabeto por outro e repetir este procedimento várias vezes.

Por exemplo, supondo que se quer encriptar o texto:

ATACARBASESUL ("atacar base Sul")

Escolhendo a chave e repetindo-a até ter o comprimento do texto a cifrar, por exemplo, se a chave for"LIMAO":

LIMAOLIMAOLIM

A primeira letra do texto, A, é cifrada usando o alfabeto na linha L, que é a primeira letra da chave. Basta olhar para a letra na
linha L e coluna A na grelha de Vigenère, e que é um L. Para a segunda letra do texto, ver a segunda letra da chave: linha I e
coluna T , que é B, continuando sempre até obter:

Texto: ATACARBASESUL
Chave: LIMAOLIMAOLIM
Texto cifrado: LBMCOCJMSSDCX

A cifra mais popular deste tipo é o Vigenere, publicada inicialmente


em 1585 por Blaise Vigenere e foi considerada indecifrável até 1863. Mais Informações podem ser encontradas em:
http://www.numaboa.com.br/criptologia/cifras/substituicao/vigenere.php

Cifras de Transposição

O funcionamento deste tipo de cifra faz com que os caracteres do texto original sejam misturados, mas que os caracteres
mantém os mesmos. Em outras
palavras, o texto cifrado é um criptograma obtido através da permutação
do texto original. Este método é conhecido desde a Antiguidade, tendo o
scytale (ou bastão de Licurgo) usado pelos espartanos como o exemplo
mais antigo.

Em mensagens curtas, como no caso de uma única palavra, este método


não é seguro porque existem poucas maneiras de variar a distribuição
das letras. Por exemplo, uma palavra de três letras só pode assumir 6
formas diferentes (fatorial de 3 é 6, ou 3!=6). Desta forma, a palavra
SOL só pode adquirir as seguintes formas: sol, slo, osl, ols, lso e
los. Obviamente, à medida que o número de letras aumentar, o número de
arranjos se multiplica rapidamente e fica quase impossível obter o
texto original caso não se conheça o processo de deslocamento. Por
exemplo, uma frase de 35 letras pode assumir 35! =
10.333.147.966.386.144.929.666.651.337.523.200.000.000 formas
diferentes.

Uma transposição aleatória parece oferecer um alto nível de


segurança, mas há um inconveniente: também é aleatória para o
destinatário, que não teria como decifrar a mensagem. Para que a
transposição seja eficaz, é necessário que o ordenamento das letras
siga um sistema rigoroso, que seja conhecido tanto pelo remetente
quanto pelo destinatário. Com isto, as possibilidades e a segurança
diminuem.

Os sistemas de transposição, usados isoladamente, possuem um grau de


segurança muito baixo, mas podem ser muito úteis quando utilizados em
combinação com outros sistemas (a chamada sobrecifragem ou recifragem).

Exemplos: Cifra das colunas, o texto a cifrar é escrito por colunas, com
passagem para a coluna seguinte sempre que se atingir o número máximo
de linhas. A mensagem é então escrita ou transmitida por linhas. Por
exemplo, se houver 3 "linhas" a mensagem FUJAM TODOS. FOMOS DESCOBERTOS é escrita numa grelha como:
F A O S M D C E O P
U M D F O E O R S D
J T O O S S B T X Q
As letras no final servem para confundir o criptanalista ou obter um
número já fixado de caracteres na mensagem. Esta fica assim:

FAOSM DCEOP UMDFO EORSD JTOOS SBTXQ

Trata-se de uma cifra muito fraca (é extremamente fácil de


decifrar), mesmo quando se altera a ordem (por exemplo, colocando a
mensagem seguindo uma espiral definida na grelha.

Transposição de Colunas: consiste na escrita de uma chave


como cabeçalho da grelha, seguida da mensagem escrita por linhas -
sendo a última eventualmente completa por caracteres sem significado.
Depois, a mensagem é escrita (ou transmitida) por colunas, por ordem
alfabética das letras no cabeçalho. Por exemplo, se a chave for ZEBRAS, e a mensagem for VAMOS EMBORA, FOMOS
DESCOBERTOS, começa-se por obter a grelha:
ZE B R AS
seedutiuitqãethasonasogecanaeprtorasap

Ler-se-ia como:

SADEE MOOOS ABMCO ORSBJ EFERU VMOST

Para a decifrar, o destinatário tem apenas que dividir o comprimento


da mensagem (30) pelo da chave (6), e ler as colunas pela ordem das
letras da chave.

Apesar de muitos sitemas utilizarem transposição, o grande problema


desta técnica é o uso bastante da memória e as vezes necessitam de que
as mensagens sejam de um tamanho fixo. As cifras de substituição são
mais comuns.

Introdução a Protocolos

A criptografia surgiu como ciência para a resolução de alguns problemas. Criptografia foca nas idéias de conseguir sigilo,
autenticação, integridade e pessoas desonestas. Antes de olharmos os algoritmos e técnicas (receitas de bolo de sistema
criptográficos), vamos primeiramente entender o que é um protocolo e a importância do seu estudo.

Um protocolo pode ser entendido como um conjunto de passos, envolvendo duas ou mais pessoas, para conseguirem juntos
alcançar alguma tarefa. Logo, podemos ilustrar esse "conjunto de passos" como uma sequência de início e fim e que cada passo
deve ser executado em cada turno e nenhum passo posterior pode passar por cima de um anterior. Não faria sentido você fazer
uma série de pequenas tarefas para chegar a um fim sem objetivo, então para que seja um protocolo, deve ter um objetivo final
na qual será alcançado.

Resumindo, as premissas implícitas para a caracterização do conceito de protocolos são:

• Há um propósito especificado que motiva a execução do protocolo;


• Os agentes envolvidos devem conhecer completamente o protocolo e devem também concordar em seguir (executar) o
protocolo;
• O protocolo deve ser inambíguo, sem margem para mal entendidos, e completo, com uma ação especificada para cada
situação possível;

Protocolos Criptográficos

São protocolos que usam criptografia. Diariamente, as pessoas se comunicam umas com às outras e confiam nelas
implicitamente. No mundo abstrato da informática, devemos formalizar os passos para que a comunicação tenha essa confiança
quanto a identidade da pessoa e sigilo da informação. As pessoas participantes da comunicação podem querer compartilhar seus
segredos para computar um valor, gerar uma sequência randômica, convencer a identidade da pessoa e simultaneamente
assinar um contrato. Concluímos então que a criptografia nos protocolos são utilizados para detectar ou prevenir de curiosos e
trapaças.

Isso é mais difícil do que parece, pois, caso não seja analizado minuciosamente cada passo dos protocolos, poderá ocorrer
problemas como:

• Adulteração ou quebra de sigilo das mensagens;


• Vazamentos de informação;
• Trapaças e desavenças entre as pessoas participantes;
• Conluios (Dois ou mais pessoas enganando alguém);

Demonstramos então que como em qualquer outro tipo de sistema, é muito mais fácil provar uma insegurança do que provar a
segurança.

Para que usar Protocolos?

No dia-a-dia podemos observar o uso de protocolos informalmente a cada instante: jogar truco, votar na eleição e pedir coisas
pelo telefone. As pessoas não pensam antes de "usar" esses protocolos, mas todos entendem suas regras de modo razoável e
funcionam tudo de forma harmoniosa.

Com o advento da tecnologia, muitos serviços novos que surgiram começam a tomar lugar dos "protocolos" na interação frente a
frente entre as pessoas. Um exemplo seria a utilização de uma webcam, os computadores necessitam de protocolos formais para
criar os passos de uma comunicação e isso é a diferença entre um protocolo humano "sem pensar" e um protocolo formal de um
computador.

Os protocolos humanos, utilizam a presença da pessoa para garantir segurança e fidelidade. Se você precisar pedir alguém para
te comprar algo, pediria a um desconhecido? No jogo de truco você aceitaria as cartas se não visse o oponente embaralhar as
cartas?

Na informática temos esse problema. Como podemos confiar em algo que não podemos nem ver nem tocar? Será de muita
inocência assumir que as pessoas na rede são honestas e mais além, acreditar fielmente que o serviço oferecido é totalmente
confiável.
Em muitos casos eles são, mas caso não seja? Não seria um grande problema?

Logo, com o estudo de protocolos, podemos entender seu funcionamento para criar e otimizar seguranças para que sejam
imunes (pelo menos quase) a pessoas que hajam de má fé.

Alocação de Confiança (em quem depositar a confiança?)

Conforme seu propósito e premissas, um protocolo pode prever a ação de um agente auxiliar (i.e., desinteressado em seu
propósito) para resolver impasses entre agentes principais(i.e., interessados em seu propósito).

Logo podemos classificar os protocolos como:

• Protocolo Arbitrado: usa agente auxiliar para prevenção , durante a execução, de trapaça entre os agentes principais.
• Protocolo Ajuizável: usa agente auxiliar para detecção , após a sua execução, de trapaça entre agentes principais.
• Protocolo Auto-verificável: na sua construção já há eliminação das possíveis vantagens para trapaças e refutações para
a execução. Este protocolo não necessita de um terceiro agente para o controle das confianças.

Protocolo Arbitrado

Arbitragem: decisões quanto


a lisura de agentes principais que não confiam um no outro, aceitas por
ambos como condição de continuidade na execução do protocolo arbitrado.

A idéia de um protocolo semelhante a este no mundo real, seria uma compra de veículo em uma agência. O esquema a seguir
ilustra a idéia:

Protocolo Ajuizável

Devido ao custo alto na contratação de um árbitro, existe como alternativa um protocolo na qual é executado apenas em
circunstâncias de disputa.

Um remediador, assim como no anterior, não têm interesse na disputa e deve ser confiável. Diferentemente do árbrito, ele não
está diretamente envolvido em todos os protocolos e é chamado apenas para determinar se o protocolo foi executado
justamente.

No mundo real podemos relacionar o remediador como um juiz. Um juiz é chamado apenas em casos de disputa. Exemplo: Fred
e Ana podem criar um contrato sem um juíz e esse nunca irá ver o contrato, a não ser que haja algum desentendimento nos
termos do contrato.
Logo, podemos formalizar este em duas partes:

Protocolo não arbitrado (executado sempre):

1. Fred e Ana negociam os termos de contrato.


2. Ana assina o contrato.
3. Fred assina o contrato.

Protocolo ajuizável (executado apenas em caso de disputa):

1. Fred e Ana aparecem antes do juiz.


2. Fred apresenta seus termos.
3. Ana apresenta seus termos.
4. O juiz determina as regras em cima dos termos.

No mundo dos computadores, os protocolos confiam nos dois lados como honestos, mas caso alguém suspeite de alguma
trapaça, um conjunto de dados existem para que um terceiro possa determinar se alguém realmente trapaceou. A diferença do
protocolo anterior é que este apenas detecta a identidade de quem trapeceou ao invés de prevenir a trapaça. A idéia disso é que
como é "inevitável" nesses protocolos não detectar a trapaça, isso desencoraja enganações.

Protocolo Auto-verificável

Esse tipo de protocolo garante justiça sem a necessidade de um terceiro resolver as disputas. Esse tipo de protocolo é
construído para que não aconteça disputas e se alguém tentar trapacear, o sistema automaticamente detecta e o protocolo
termina. Infelizmente não existe para todas as situações, uma solução com protocolo auto verificável.

Existem algumas dificuldades na concepção dos protocolos de arbitragem e ajuizáveis, podemos citar:

1. Impessoalidade - programas-árbitro dificilmente inspiram a confiança necessária: ocultam intenção do programador;


2. Custo - à rede de computadores recai o custo de criação e manutenção de um serviço de arbitragem;
3. Gargalo - a arbitragem trata toda transação;
4. Tempo de execução - a arbritragem consome tempo considerável;
5. Vulnerabilidade - ponto fraco do protocolo, atraindo ataques;

Resumindo a mediação e a autoverificação em protocolos criptográficos a seguir, ilustram as suas principais características:

A mediação apresenta dificuldades listadas anteriormente em 1, 2 e 5.

A autoverificação apresenta as seguintes dificuldades:

• A natureza do problema: nem todos os problemas de segurança tem solução em protcolos autoconfiáveis;
• Análise exaustiva: a autoverificação só existe enquanto formas de ataque ao protocolo forem desconhecidas;

Protocolo para Sigilo na Comunicação em Rede

Como que duas pessoas podem se comunicar com segurança? Eles devem encriptar sua comunicação, claro! Mas um protocolo
completo para isso é mais complicado do que se parece. A seguir temos esquemas do que deve acontecer para que Fred se
comunique com Ana utilizando protocolos simétrico e assimétrico.

Premissas e Problemas do Protocolo I

• Agente A = Fred; Agente B = Ana;


• k = chave simétrica;
• m = mensagem original;
• c = cifra;

1. Os agentes confiam no gerenciador de chaves e um no outro.


2. As chaves devem ser distruibuídas em segredo
3. A privacidade da comunicação requer muitas chaves, com uma chave individual para cada par de agentes. [n²-n pares]
4. Se a chave for comprometida (roubada, vazada, quebrada, subornada, extorquida ou vendida), o possuidor da chave
poderá fraudar a comunicação personificando-se como A ou B, promovendo escuta ativa, spoofing, espelhamento,
replay.
5. Não há verificação de fraude por comprometimento de senha.

II - Protocolo para privacidade usando algoritmo assimétrico:


,

Premissas e Problemas do protocolo II:

• Dx = chave privada do agente x;


• Ex = chave pública do agente x;
• m = mensagem original
• c = cifra;
• Agente A = Fred; Agente B = Ana

1. Transforma confiança na integridade da origem de Ea em sigilo.


2. O protocolo é vulnerável a ataques de texto pleno escolhido (M pequeno), e a ataques por spoofing, espelhamento e
replay.
3. Dentre os algoritmos criptoggŕaficos robustos conhecidos, os assimétricos são mais lentos 103 a 10 4 vezes que os
simétricos.

Existe um protocolo híbrido para a solução dos problemas de I.2 e II.3

• As chaves devem ser distruibuídas em segredo.

• Dentre os algoritmos criptoggŕaficos robustos conhecidos, os assimétricos são mais lentos 10 3 a 10 4 vezes que os
simétricos.

Protocolo III

1. Os agentes escolhe um algoritmo híbrido de I e II.


2. O agente A (Fred) lê a chave pública gerada por B.
3. Agente A gera "k" e encripta "k" e "m".
4. Monta um envelope na qual "k" é cifrado com a chave pública de B e "m" é cifrado com o "k" (cifra) gerado
anteriormente.
5. Agente B decodifica em "k" para ser utilizado para ver o texto original. "k" é obtido utilizando a chave privada dele
mesmo e a mensagem "m" se consegue decifrando-a com a chave "k" achada.

Protocolos para Assinatura Digital

Para explicar o funcionamento de uma assinatura digital, é importante ilustrar quais são as premissas implícitas no conceito
ideal de uma assinatura do mundo real:

• Inforjabilidade - confiança do verificador na impossibilidade de prática de falsificação (ex.: identificabilidade da


falsificação).
• Inviolabilidade - confiança do verificador na integridade do conteúdo linguístico vinculado ao autor da assinatura.
• Irrecuperabilidade - confiança do verificador na impossibilidade de reuso da assinatura. (de transferência da
autenticação).
• Irrefutabilidade - confiança do verificador na impossibilidade prática de negação da autoria da assinatura pelo autor
(ajuizamento de refutação/repúdio -> conceitos explicados na seção anterior).

IV - Protocolo de Assinatura Digital

Premissas do protocolo de uma assinatura digital.

1. Só o titular de um par de chaves a conhece e tem acesso à chave privada.


2. O usuário de uma chave pública confia na titulação desta chave.
3. Presume-se que o titular manifesta sua vontade no conteúdo linguístico do documento que assina.
V - Protocolo Arbitrado de Assinatura Digital

Sigilo e Autenticação

Quando Fred loga no seu computador (ou uma conta de telefone, conta bancária, etc...), como que o computador irá saber
quem é ele? Como que o computador sabe que ele não é Waldemar querendo falsificar a identidade de Fred? Tradicionalmente,
as senhas resolvem este problema. Fred coloca sua senha, e o computador confirma que está correto. Ambos , computador e
Fred, compartilham este segredo e o computador pede esta senha toda vez que ele tentar o acesso ao computador.

Com essas idéias de autenticação, a seguir será mostrado um protocolo para sigilo e autenticação usando as chaves públicas:

VI - CIfragem de Mensagem Assinada

Premissas e Problemas deste Protocolo de Autenticação:

1. Transforma confiança na integridade da origem de Ea(Chave Pública de A) em sigilo.


2. O protocolo é vulnerável a ataques de texto pleno escolhido e a ataques por spoofing, espelhamento e replay.
3. Algoritmo fica muito lento em relação aos simétricos.

Existem muitos protocolos criptográficos e não citarei todos pois tornaria o curso cansativo e extenso. O objetivo principal sobre
protocolos é buscar colocar a sensibilidade da sua necessidade. Os serviços básicos são capazes apenas de transformar
premissas de confiança em proriedades de segurança, mas não de criá-las a partir do nada. Ou seja:

• Controle de Acesso - transforma a premissa de posse de segredo ou objeto irrefutável em verificação da identidade de
um agente.
• Cifragem - transfere o sigilo de uma chave criptográfica para sigilo da informação de uma mensagem cifrada.
• Autentição - transforma uma premissa de sigilo em verificação de integridade (de origem e/ou conteúdo).
• Certificação - transforma uma premissa de sigilo em autenticação recursiva, com verificação.

Logo, os protocolos criptográficos buscam construir, a partir de suas premissas e da capacidade transformadora dos serviços
básicos, alguma funcionalidade de proteção para o seu propósito, premissas que devem ser satisfeitas pelo sistema que o
protocolo pretende proteger.

Definição de segurança: Indivíduo encarregado da proteção de bens, pessoas, públicos ou locais privados; guarda-costas; social -
conjunto de sistemas de um regime destinado a garantir proteção contra diversos riscos sociais, em especial os ligados ao trabalho.

No mundo de TI (Tecnologia da Informação), podemos encontrar vários termos ligados a definição citada acima: Segurança de Dados,
Segurança de Comunicação, Segurança da Informação, Segurança de Sistemas, etc...

Vamos fazer um experimento "gedunken" (que significa um experimento de racicínio usado por Einstein para deduzir a teoria da
relatividade). Vamos imaginar que a segurança de qualquer sistema citado acima seja como uma corrente. A segurança do sistema
como um todo depende de cada conexão entre as argolas de uma corrente. Tudo deve estar bem seguro: os algoritmos criptográficos,
os protocolos, os geradores de chaves digitais, os gerenciadores de chaves, etc... Se seu algoritmo for ótimo mas o gerador de número
randômico(utilizado para gerar chaves) for ruim, qualquer ataque de criptoanálise irá quebrar o seu sistema pelo lado mais fraco (no
caso do gerador de número randômico ruim). Mesmo consertando esse problema mas não tomando cuidado, é facil criar outro buraco
como por exemplo na parte da alocação de memória das chaves, a criptoanálise irá tentar quebrar o sistema nessa parte mais
vulnerável.
Logo, podemos afirmar que a criação de um sistema seguro é uma tarefa bem difícil, além da responsabilidade ser bem maior para criar
a segurança, pois deverá ser pensado todas as possibilidaeds possíveis de ataque para proteger seu sistema de todos eles, do que para
um criptoanalista na qual só necessitaria de achar uma pequena vulnerabilidade para quebrar todo o sistema.

Criptografia é apenas uma pequena parte da segurança de um sistema. As pessoas tendem a achar que o tamanho da dificuldade de
quebrar a criptografia é diretamente proporcional a segurança do sistema (ou seja, quanto mais criptografia, mais seguro) e isso é um
equívoco, como foi afirmado já na introdução deste curso.

Podemos ter várias alternativas ao avaliar e escolher um algoritmo a ser utilizado, podemos ter as seguintes alternativas:

• Escolher um algoritmo já publicado na comunidade, acreditando que o algoritmo ja tenha sido bem estudado por vários
criptógrafos; se ninguém ainda não conseguiu o quebrar, deve ser um bem robusto.
• Acreditar em um fabricante de softwares com boa reputação a ser garantia e que eles não arriscariam vender equipamentos ou
softwares com algoritmos ruins.
• Depositar a confiança em um consultor, baseado no credo de que um consultor imparcial esta bem capacitado para uma boa
avaliação de diferentes algoritmos.
• Utilizar sistemas criados pelo governo, tendo a confiança de que eles conduzam bem seus cidadãos.
• Criar seu próprio algoritmo, baseado na idéia de que todas as alternativas anteriores não sejam tão eficientes para o seu uso e
que nada citado anterior seja confiável

Alguns exemplos de Algoritmos Criptográficos mais famosos

DES - Data Encryption Standard

É um algoritmo de encriptação muito utilizado em criptografia. Foi criado


por J.Orlin Grade e é um dos algoritmos mais utilizados no mundo. É um
algoritmo rápido mas pouco seguro e existem variantes desse algoritmo
como o NewDES e o 3DES.

As origens do DES remontam ao início da década de 1970. Em 1972,


após concluir um estudo sobre as necessidades de segurança de
informação do governo norte-americano, o então NBS (National Bureau of
Standards, na época o órgão de standards do governo
norte-americano) identificou a necessidade de um padrão governamental
para encriptação de informações não confidenciais, porém sensíveis. Em
conseqüência, em 15 de Maio de 1973, após uma consulta à NSA, o NBS
solicitou proposta para um algoritimo de encriptação que atendesse a
critérios rigorosos de projeto. Entretanto, nenhuma das propostas
recebidas se mostrou viável. Uma segunda solicitação foi aberta em 27
de Agosto de 1974. Desta vez, a IBM submeteu uma proposta candidata que
foi considerada aceitável: um algoritmo de encriptação desenvolvido no
período de 1973-1974 baseado em um algoritmo mais antigo, o altoritmo
Lucifer de Horst Feistel. A equipe da IBM envolvida no projeto do
algoritmo incluía Feistel, Walter Techman, Don Coppersmith, Alan
Konheim, Carl Meyer, Mike Matyas, Roy Adler, Edna Grossman, Bill Notz,
Lynn Smith, and Bryant Tuckerman.

Com o poder computacional atual, este algoritmo já não é mais


considerado seguro, pois é vulnerável a ataques de força bruta. Em
julho de 1998 foi criada uma máquina chamada EFF DES Cracker, que levou
3 dias para quebrar o algoritimo DES Challenge II e em Janeiro de 1999
quebrou o DES Challenge III em 22 horas usando milhares de computadores
espalhados pelo mundo. Em 19 de maio de 2005, foi desaprovado seu uso
pelo Governo Americano.

Implementação
DES trabalha com bits ou números binários - os 0s e 1s dos
computadores digitais. Cada grupo de 4 bits corresponde a um número
hexadecimal, cuja base é 16. O binário "0001" corresponde ao número
hexadecimal "1", o binário "1000" é igual ao número hexadecimal "8",
"1001" é igual ao hexadecimal "9", "1010" é igual a o hexadecimal "A" e
"1111" é igual ao hexadecimal "F".

O DES funciona encriptando grupos de 64 bits de mensagem, o que


significa 16 números hexadecimais. Para realizar a encriptação, o DES
utiliza "chaves" com comprimento aparente de 16 números hexadecimais,
ou comprimento aparente de 64 bits. Entretanto, no algoritmo DES, cada
oitavo bit da chave é ignorado, de modo que a chave acaba tendo o
comprimento de 56 bits. Mas, para todos os efeitos, o DES é organizado
baseando-se no número redondo de 64 bits (16 dígitos hexadecimais).

Por exemplo, se tomarmos a mensagem clara "8787878787878787" e a


encriptarmos com a chave DES "0E329232EA6D0D73", obteremos o texto
cifrado "0000000000000000". Se o texto cifrado for decifrado com a
mesma chave secreta DES "0E329232EA6D0D73", o resultado é o texto claro
original "8787878787878787".

Este exemplo é limpo e metódico porque nosso texto claro tinha o


comprimento de exatos 64 bits. O mesmo seria verdade caso nosso texto
claro tivesse um comprimento múltiplo de 64 bits. Mas a maioria das
mensagens não cairá nesta categoria. Não serão um múltiplo exato de 64
bits (isto é, um múltiplo exato de 16 números hexadecimais).

Por exemplo, considere a seguinte mensagem: "Criptologia sempre


NumaBoa". Esta mensagem clara possui 28 bytes (56 dígitos hexadecimais)
de comprimento. Neste caso, para encriptar a mensagem, seu comprimento
precisa ser ajustado com a adição de alguns bytes extras no final.
Depois de decifrar a mensagem, estes bytes extras são descartados. É
lógico que existem vários esquemas diferentes para adicionar bytes.
Aqui nós iremos adicionar apenas zeros no final de modo que a mensagem
total seja um múltiplo de 8 bytes (ou 16 dígitos hexadecimais, ou 64
bits).

O texto claro "Criptologia sempre NumaBoa" é, em hexadecimal,

43 72 69 70 74 6F 6C 6F
67 69 61 20 73 65 6D 70
72 65 20 4E 75 6D 61 42
6F 61 0D 0A

(Note que os primeiros 54 dígitos hexadecimais representam a


mensagem em Português, enquanto que "0D" é o hexadecimal para Retorno
(Carriage Return) e "0A" é o hexadecimal para Quebra de Linha (Line
Feed), indicando que o arquivo de mensagem chegou ao fim.) Completamos
então a mensagem com alguns zeros no final para obter um total de 64
dígitos hexadecimais:

43 72 69 70 74 6F 6C 6F
67 69 61 20 73 65 6D 70
72 65 20 4E 75 6D 61 42
6F 61 0D 0A 00 00 00 00

Se cifrarmos agora a mensagem clara em blocos de 64 bits (16 dígitos


hexadecimais), usando a mesma chave DES "0E329232EA6D0D73", obtemos o
seguinte texto cifrado:

9B 79 70 61 C1 12 1E C6
28 A2 65 05 91 17 7D 36
51 FB 97 E9 00 78 7D B4
79 F2 A0 29 CE 58 D6 F4

Este é o código secreto que pode ser transmitido ou armazenado.


Decifrando o texto encriptado restaura a mensagem original "Criptologia
sempre NumaBoa".

RSA - Ron Rivest, Adi Shamir e Len Adleman

É
um algoritmo de encriptação de dados, que deve o seu nome a três
professores do Instituto MIT(fundadores da empresa atual RSA Data
Security, Inc). Até 2005 este foi o algoritmo mais sucedido na
implementação de sistemas de chaves assimétricas e esta baseado toda na
área de estudo da matemática chamada de Teoria Clássica dos Números.
Ela é considerada um dos mais seguros com os inúmeros testes já feitos.
Foi um dos primeiros a possibilitar a encriptação e assinatura digital,
e uma das grandes novidades em criptografia de chave pública.

Implementação RSA
Abstraindo
a complexidade, são gerados dois pares de números (chaves) de tal forma
que uma mensagem encriptada com o primeiro par possa ser
apenas decriptada com o segundo par; mas, o segundo número não pode ser
derivado do primeiro. Esta propriedade assegura que o primeiro número
possa ser divulgado a alguém que pretenda enviar uma mensagem
encriptada ao detentor do segundo número, já que apenas essa pessoa
pode decriptar a mensagem. O primeiro par é designado como chave
pública, e o segundo como chave secreta.

RSA baseia-se em dois fatos:


encontrar números primos de grandes dimensões (p.e. 100 dígitos) ser
computacionalmente fácil mas, conseguir fatorar
o produto de tais dois números é considerado computacionalmente quase
impossível (o tempo estimado para o conseguir é na casa dos milhares de anos).

http://pt.wikipedia.org/wiki/N%C3%BAmero_primo

De fato, este algoritmo mostra-se computacionalmente inquebrável com números de tais dimensões,
e que sua força é geralmente quantificada com o número de bits utilizados
para descrever tais números. Para um número de 100 dígitos são
necessários cerca de 350 bits, e as implementações atuais superam os
512 e mesmo os 1024 bits.

Assinatura Digital

Para implementar um sistema de assinaturas digitais com


RSA, o usuário que possua uma chave privada d poderá assinar uma dada mensagem (em blocos) m com a seguinte expressão:
s = md mod n

Como se pode deduzir, é difícil descobrir s sem o conhecimento de d. Portanto, uma assinatura digital definida conforme esta equação é
difícil de forjar. Além disso, o emissor de m não pode negar tê-la emitido, já que mais ninguém poderia ter criado
tal assinatura. O receptor recupera a mensagem utilizando a chave
pública e do emissor:

se = (md)e mod n = m mod n

Logo, o receptor consegue validar a assinatura do emissor calculando se mod n. Podemos verificar então que o algoritmo RSA satisfaz os
três requisitos necessários de uma assinatura digital.

É fácil deduzir que a assinatura varia dependentemente da mensagem


em si, e que operando sobre mensagens longas o tamanho da assinatura
seria proporcional. Para melhorar esta situação, faz-se operar o
algoritmo sobre um hash da mensagem, que identifique essa mensagem como única - geralmente o hash de uma mensagem varia
alterando um único byte -, tendo como
consequência o fato de que uma assinatura varia de mensagem para mensagem, para
um mesmo emissor.

Resumindo com formalismo matemático:

Geração da chave publica:


n = Produto de dois numeros primos grandes, p e q. (p e q devem ser secretos)
e = primo relativo a (p-1)(q-1)

Geração da chave privada:


d = e-1 mod ((p - 1)(q - 1))

Cifragem
c = me mod n

Decifragem
m = cd mod n

Podemos observar claramente, como foi falado na introdução deste curso, a grande utilização de formalismo matemático para expressar
o funcionamento dos algoritmos de criptografia, e que para o entendimento pleno do assunto, é estritamente necessária pré-requisitos
http://pt.wikipedia.org/wiki/Teoria_dos_n%C3%BAmeros neste sentido. Foi colocado estes exemplos apenas para ilustrar
superficialmente como que a criptografia é expressa na sua literatura e que o entendimento de cada detalhe dos algoritmos fugiriam do
objetivo deste curso.
Lição 4 - A Prática

Agora iremos ilustrar uma pequena parte da criptografia, que seria a do gerenciamento de chaves públicas/privadas e o seu uso para
alguns serviços básicos de criptografia, já citados nas lição anterior. Como já demonstrado anteriormente, ela já é uma realidade hoje, e
seu uso é necessário. O software mais utilizado no ambiente Linux é o GPG (GnuPG). Hoje podemos fazer tudo por um método mais
"humano" (utilizando recursos de interface gráfica), sem utilização de linha de comando.

O Seahorse um ótimo software para manipular graficamente todas as suas chaves digitais, ele é integrado com o nautilus, gedit e
outros softwares para fazer operações de cifragem.

Este software permite:

• Criar e Manipular Chaves PGP;


• Criar e Manipular Chaves SSH;
• Publicar e Obter Chaves de um Servidor;
• Fazer Backup de Suas Chaves e seu Chaveiro.

A instalação do Seahorse foi testada em uma instalação Debian, então podemos utilizar o repositório de softwares que ele possui para a
sua instalação:
Obtenha permissão de root;

• su <enter>
• <senha>

Agora Digite:

• apt-get install seahorse

E estará tudo pronto para o uso!


Caso você queira fazer a instalação por meio de código fonte (não aconselho pela sua dificuldade), você pode fazer download do
Seahorse em :

http://www.gnome.org/projects/seahorse/download.html
Com o Seahorse instalado, vamos abrí-lo indo em :
Aplicações >
Acessórios > Passwords and Encryption Keys.
Vamos agora criar nosso par de chaves.
Clique em:

Chaves > Create New Key e escolha a opção “PGP Key”.


Clique em “Continue” e preencha os dados com seu nome completo,
endereço de e-mail e um comentário qualquer (pode ser uma frase que
você goste no comentário, por exemplo. O preenchimento deste campo é
opcional).
Se desejar, clique em cima da opção “Advanced Options” para
mudar o tipo de encriptação e a quantidade de bits. Para um computador
de uso pessoal, as opções padrão (DSA 2048) são mais que suficientes.
Selecione também uma data para sua chave expirar caso queira, ou deixe
selecionada a opção “Never Expires” para que a chave seja eterna (você
pode mudar estes dados depois se quiser, e pode cancelar sua chave caso
seja comprometida).
Em seguida você será solicitado para digitar uma
senha. Escolha uma senha bem difícil mas de fácil memorização por você,
ou, se preferir, deixe em branco (eu não recomendo) para usar sua chave
privada sem senha.
Após algum tempo, sua chave estará criada e aparecerá na janela
principal do Seahorse. Agora você poderá dar um duplo clique sobre sua
chave e alterar seus dados, se desejar.

Aproveite para anexar uma foto


sua e adicionar todos os seus outros endereços de e-mail. Quando
terminar, clique em “Remote > Sync and Publish Keys” para que os
dados sejam enviados para o servidor online de chaves. Agora vamos
aprender a usar melhor o Seahorse!

Em primeiro lugar, vamos iniciar o daemon do Seahorse. Este daemon


deverá ficar rodando no plano de fundo o tempo todo, portanto pressione
“Alt + F2″ e entre com o comando “seahorse-daemon” (sem as aspas).

Agora vamos configurar para que o Gnome inicie o daemon automaticamente


no login indo em:

Sistema > Preferências > Sessões

Vá na aba
“Programas Iniciais” e clique em “Adicionar”. Entre com o comando
“seahorse-daemon” (sem aspas) novamente e clique em Ok. E pronto!

Agora, com o daemon rodando, quando quiser assinar um arquivo


qualquer, basta clicar com o botão direito sobre ele, conforme podemos
ver abaixo:
Você ainda poderá escolher a opção “Criptografar” e escolher, na
janela que se abrirá, para quem deseja enviar o arquivo criptografado.
O Seahorse irá gerar automaticamente um novo arquivo com extensão
“.pgp”. Para descriptografá-lo, basta dar um duplo clique sobre ele e
digitar a senha de sua chave privada. Muito fácil não é mesmo?

Agora vamos configurar o seu Evolution para enviar e receber e-mails


assinados e criptografados. Com o Evolution aberto, vamos em:

“Editar
> Preferências > Contas de Correio”

Selecione sua conta de


e-mail e clique em Editar. Vá até a aba “Segurança” e coloque o ID da
sua chave (você poderá ver qual o ID da sua chave na janela principal
do Seahorse) no campo correto e ative a caixa “Sempre assinar mensagens
enviadas ao usar esta conta”. Agora é só começar a enviar seus e-mails
assinados digitalmente (quando você for enviar um e-mail, será
solicitado pela sua senha da chave). Agora vamos aprender a
criptografar!

Para enviar um e-mail criptografado a um amigo, você precisará


primeiro possuir uma cópia da chave pública dele. Na janela principal
do Seahorse você poderá clicar em “Procurar Chaves Remotas” e colocar o
e-mail dele no campo. Selecione a chave correta e clique em “Importar”.
De volta à janela principal do Seahorse e já com a chave pública de seu
amigo importada, vá até a aba “Keys I’ve Collected”.

IMPORTANTE: Quando você localizar a chave de alguém pelo


servidor, entre em contato com a pessoa e certifique-se de que aquela é
mesmo a chave verdadeira (passe o Key ID da chave para a pessoa
confirmar). Você deve ter notado que é possível criar dezenas de chaves
usando qualquer nome e qualquer e-mail, portanto tenha certeza de que a
chave que está importando é a correta e não uma falsa. Uma boa dica é
procurar as pessoas que assinaram esta chave e atestaram ser válida
(trataremos disto à seguir).
Na aba “Keys I’ve Collected”, selecione a chave de seu amigo e
clique em “Properties”. Na janela que abrir, clique na aba “Confiar” e
marque a caixa “I have verified that this key belongs to who it says it
does” que irá dizer ao GnuPG que você confia naquela chave e que
verificou se a chave é mesmo da pessoa que diz ser. Clique em “Fechar”.

Agora vá até a aba “Keys I Trust” e verá lá as chaves que você


confia. Se você realmente tem certeza de que aquela chave é da pessoa
que diz ser a dona, você poderá assinar com sua chave privada a chave
pública de seu amigo, atestando publicamente que você confia naquela
chave (como pode ver, a rede de chaves públicas é uma grande rede de
confiança).

Para assinar a chave (você não é obrigado a assiná-la para


enviar um e-mail criptografado a ela, mas é bom ajudar os amigos não é
verdade?) selecione-a e clique no botão “Properties” novamente. Vá até
a aba “Confiar” e clique no botão “Sign” para fazer a assinatura.

Depois de assinar, clique em “Fechar”, selecione a chave de seu amigo,


clique com o botão direito e selecione a opção “Sync and Publish Keys”
para que as alterações sejam enviadas para o servidor. Peça para seus
amigos assinarem a sua chave pública também garantindo uma maior
confiabilidade para a mesma.

Bom, se você já importou a chave de um amigo e disse ao GnuPG que


confia nela, basta da janela do seu Evolution, criar um novo e-mail, e
na janela de redigir, selecione a opção:

“Segurança > Criptografar


com PGP”.

Note que o Daemon do Seahorse deve estar rodando e sua senha


(a da chave) será solicitada ao clicar em “Enviar”.

Se alguém lhe enviar um e-mail criptografado, ao selecioná-lo na


lista, você já será solicitado para digitar sua senha da chave privada.
Ao digitar a senha, o Evolution irá descriptografar o e-mail
automaticamente para você e exibí-lo. Com isso a garantia é muito maior
de que ninguém consiga ler seus e-mails no meio do caminho entre você e
seu amigo.