Professional Documents
Culture Documents
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.
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
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.
Segurança do tipo:
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.
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 :
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:
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:
• Controle e Auditoria
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... )
• 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.
http://www.schneier.com/essay-037.html
http://insecure.org/stf/whycrypto.html
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.
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]
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.
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.
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.
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.
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.
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.
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.
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.
Assim, a mensagem
é cifrada para
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:
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.
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
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.
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:
Ler-se-ia como:
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.
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:
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.
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é.
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).
• 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
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:
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:
Resumindo a mediação e a autoverificação em protocolos criptográficos a seguir, ilustram as suas principais características:
• 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;
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.
• 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
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:
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:
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
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".
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
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
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
É
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.
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
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:
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.
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.
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:
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:
Vá na aba
Programas Iniciais e clique em Adicionar. Entre com o comando
“seahorse-daemon” (sem aspas) novamente e clique em Ok. E pronto!
“Editar
> Preferências > Contas de Correio”