Você está na página 1de 13

CRIPTOGRAFIA

Abstract.  This   article   aims   to   introduce   briefly   the   encryption   theme.


Currently encryption is a very important topic when it comes to technology,
computer networks, internet, among other applications. This article shows the
history   of   encryption,   the   substitution   ciphers   and   transposition   ciphers,
asymmetric and symmetric keys, algorithms most widely used in encryption, a
description of the logic function DES (Data Encryption Standard) with your
key generation and some cryptanalysis.

Resumo.  Este artigo tem o objetivo de apresentar de forma mais sucinta o
tema criptografia. Atualmente a criptografia é de grande valia quando se fala
em tecnologia, redes de computadores, web, dentre outros. Este artigo mostra
a história da criptografia, as cifras de substituição e cifras de transposição,
as   chaves   assimétricas   e   simétricas,   os   algoritmos   mais   utilizados   na
criptografia,   uma   descrição   da   função   lógica   DES   (Data   Encryption
Standart)   juntamente   com   a   criação   de   sua   chave   e   um   pouco   de
criptoanálise.
1. Introdução

A criptografia começa há milhares de anos. O primeiro uso documentado da criptografia
foi   em   torno   de   1900   a.C.,   no   Egito.   Entre   600   a.C.   e   500   a.C.   os   Hebreus
utilizavam   a   substituição   monoalfabéticas,   em   que   um   símbolo   do   alfabeto   é
substituído por outro símbolo do próprio alfabeto e com isto, escreveram o Livro de
Jeremias.

  Passaram­se   muitos   anos   e   várias   pesquisas   e   técnicas   foram   descobertas   afim   de


melhorar a criptografia. Durante a “Guerra Fria”, entre Estados Unidos e União
Soviética, foram criados diversos métodos para esconder mensagens de estratégias
e operações. A partir daí surgiram outros tipos de criptografia que serão citados
neste documento.

A  palavra  criptografia  significa  “escrita   secreta”.  Ela   é   originada   do  grego  kryptós,
"escondido", e gráphein, "escrita". É o estudo dos princípios e técnicas de como as
informações  podem ser transformadas da sua forma original para outra ilegível,
onde   somente   quem   possui   ou   detém   a   chave   é   quem   pode   torná­la   legível
novamente. 

Este ato de transformar as informações é realizado através do método de cifragem e
decifragem.

Cifragem é o processo de disfarçar a informação e conversão de um texto claro para um
código   cifrado   ou   criptograma.   Decifragem   é   o   processo   de   recuperar   o   texto
original   a   partir   de   um   texto   cifrado   ou   criptograma.   Vale   lembrar   que,   uma
informação não­cifrada que é enviada de uma pessoa (ou organização) para outra é
chamada de "texto claro".

Os   processos   de   criptografia   são   feitos   por   algoritmos   que   fazem   o   realizam   o


embaralhamento   dos   bits   dos   dados   a   serem   transmitidos   a   partir   de   uma
determinada   chave   ou   par   de   chaves,   isto   é,   depende   do   sistema   criptográfico
escolhido. 

É importante ressaltar os principais objetivos da criptografia:

• Confidencialidade da mensagem;

• Integridade da mensagem;

• Autenticação do remetente;

• Não­repúdio ou irretratabilidade do emissor.
Os sistemas ou algoritmos nem sempre são utilizados com o ideal de atingir todos os
objetivos   listados   acima.   Existem   algoritmos   específicos   para   cada   uma   destas
funções,   mas   mesmo   assim,   em   alguns   sistemas   ou   algoritmos   não   atingem   o
objetivo de forma clara.

É   importante   ressaltar   que   com   os   avanços   da   criptografia,   a   criptoanálise   se


desenvolveu   muito.   A   partir   dos   esforços   de   se   descobrir   padrões   e   chaves,
surgiram   diversos   tipos   de   criptografia,   tais   como   chave   simétrica,   chave
assimétrica, por hash e até a chamada criptografia quântica, que se encontra, hoje,
em desenvolvimento.

Atualmente, a criptografia é amplamente utilizada na web, na autenticação dos usuários
para se fornecer acesso, na proteção de transações financeiras e em comunicação.
Ou seja, a criptografia veio para trazer mais segurança à troca de dados.

2. Cifras de Substituição

As cifras de substituição produzem criptogramas onde as letras do texto original são
tratadas individualmente ou em grupos de comprimento constante e são substituídas
por outras letras, figuras, símbolos ou uma combinação destes de acordo com um
sistema pré­definido e uma chave.

Nesta cifra, cada letra ou grupo de letras é substituído por outra letra ou grupo de letras,
de modo a criar um "disfarce". Uma das cifras mais antigas  é a cifra de César,
atribuída a Júlio César, seu criador. Nesse método, a se torna D, b se torna E, c se
torna F,... e z se torna C. Por exemplo, a palavra ataque passaria a ser WDTXH.

Figura 1. Código de César com chave de 3 unidades (Foto:


Reprodução/ Wikipedia

Generalizando, a cifra de César permite que o alfabeto do texto cifrado seja deslocado k
letras, ao invés de 3. Nesse caso, k passa a ser uma chave para o método genérico dos
alfabetos deslocados em forma circular. A próxima melhoria é fazer com que cada um
dos símbolos do texto simples, ou seja, as 26 letras, sejam mapeadas para alguma outra
letra. Por exemplo, texto simples: a b c d e f g h i j k l m n o p q r s t u v w x y z texto
cifrado: Q W E R T Y U I O P A S D F G H J K L Z X C V B N M. Esse sistema é
chamado substituição Monoalfabética, sendo a chave uma palavra (string) de 26 letras
correspondente ao alfabeto completo. Para a chave exemplificada anteriormente, o texto
simples ataque seria transformado no texto cifrado QZQJXT. Inicialmente, esse sistema
pode parecer seguro. Apesar de conhecer o sistema genérico (substituição de letra por
letra), o criptoanalista não saberá qual das 26! chaves estará em uso.
O sistema de substituição usa os caracteres de um texto claro combinados com outros
caracteres (letras, números, símbolos, etc) utilizando uma tabela de substituição pré­
estabelecida. As tabelas de substituição contêm os caracteres que serão substituídos e os
caracteres   de   substituição.   Estas   tabelas   são   conhecidas   também   como   alfabetos
cifrantes ou cifrantes. 
Além da cifra de substituição Monoalfabética, tem­se também as cifras de substituição
Polialfabética, onde mais de um cifrante é utilizado para cifrar um texto claro e a cifra
de substituição Poligrâmicas, quando grupos de letras são substituídos por outro grupo
de letras.
3. Cifras de Transposição

As cifras de transposição podem ser definidas como qualquer cifra que envolva apenas a
reordenação dos símbolos, lógica das letras da mensagem, sempre com base em
uma função. As cifras de transposição reordenam ou embaralham os símbolos, mas
não os disfarçam, diferente da cifra de substituição. Por exemplo, pode­se escrever
a palavra "teste" como "ettse", transpondo uma letra com a sua vizinha. 

Em outras palavras as cifras de transposição embaralham as letras do texto original de
acordo com uma regra reversível qualquer. O texto cifrado é obtido através de um
troca­troca   das   letras   do   texto   original   e   a   partir   de   um   texto   cifrado.   O   texto
original é obtido desfazendo­se a troca das posições das letras.

Por exemplo: 

Informação a ser enviada em ASCII: Oi

Informação a ser enviada em binário: 01101111 01101001

Informação após transposição: 01111010 10101110

Figura 2. Exemplo Cifra Transposição


4. Criptografia

A   criptografia,   como   já   citado,   possui   duas   fases   básicas:   cifragem   (encryption)   e


decrifragem (descryption). Ela é classificada em chave assimétrica (ou pública) ou
simétrica (ou privada). 

4.1. Chaves Assimétricas

Os algoritmos de chave pública têm o objetivo de resolver os problemas de autenticação
e   integridade.   Este   método   utiliza   duas   chaves,   uma   para   cifrar   e   outra   para
decifrar.

A criptografia de chave assimétrica ou criptografia pública é um método de criptografia
que utiliza um par de chaves. Este par de chaves são uma chave pública e uma
chave   privada.   A   chave   pública   é   distribuída   livremente   para   todos   os
correspondentes,  enquanto  a  chave  privada  deve  ser conhecida  apenas  pelo  seu
dono. Neste algoritmo, um dado ou informação cifrada com a chave pública só
poderá ser decifrada pela sua chave privada correspondente. 

Vale lembrar que, a chave utilizada para codificar é diferente da chave utilizada
para decodificar; a chave pública pode ser do conhecimento de todos. Esta chave é
utilizada para codificar a informação/arquivo; a chave privada deve ser mantida em
segredo, pois é utilizada para decodificar o arquivo; cada usuário possui seu próprio
conjunto de chaves.

Existem alguns tipos de algoritmos que utilizam a chave assimétrica, por exemplo:
ELGamal e RSA.

O algoritmo RSA (Rivest, Shamir e Adleman) é um dos algoritmos assimétricos mais
usados. Ele utiliza números primos em sua lógica e sua segurança baseia­se na
dificuldade de fatoração de números grandes. Ele é também é comutativo e pode
ser utilizado para a geração de assinatura digital.

O algoritmo ElGamal utiliza sua matemática difere da utilizada no RSA. Ele envolve a
manipulação   matemática   de   grandes   quantidades   numéricas.   Utiliza   somente   a
chave pública, possui um canal não seguro e possui um algoritmo discreto. Obtém
sua   segurança   da   dificuldade   de   se   calcular   logaritmos   discretos.   O   ElGamal
também é comutativo, podendo ser utilizado tanto para assinatura digital quanto
para gerenciamento de chaves.

Abaixo segue um quadro comparativo com as vantagens e desvantagens do algoritmo
que utiliza a chave assimétrica.
Tabela 1. Quadro de comparação
Vantagem Desvantagem
Permite a troca segura de chaves Desempenho computacional ruim
Apresentam maior segurança Exige maior processamento
Possibilita o não repúdio São em geral cerca de 60 e 70 vezes
mais lentos que os algoritmos simétricos

Não necessita de um meio seguro para


transmissão
Minimiza o problema de troca de
chaves, pois não é necessário um canal
seguro para tal

4.2. Chaves Assimétricas
Os algoritmos de chave simétrica fazem uso de chaves criptográficas relacionadas para
as   operações   de   cifragem   e   de   decifragem   para   garantir   sigilo   na   transmissão   e
armazenamento   de   dados.   A   mesma   chave   deve   ser   utilizada   nesta   operação   e
compartilhada por ambos os interlocutores, ou seja, a chave deve ser compartilhada
entre quem cifra e quem decifra os dados. 
Este processo de compartilhar chaves é conhecido como TROCA DE CHAVES. Elas
devem ser feitas de forma segura, uma vez que todos que conhecem a chave podem
decifrar a informação cifrada ou reproduzi­la.

Figura 3. Exemplo Cifra Transposição

Existem alguns tipos de algoritmos que utilizam a chave simétrica, por
exemplo: IDEA, AES e DES.
O algoritmo IDEA (International Data Encryption Algorithm) foi criado em 1991 por
Massey e Xuejia Lai e utiliza chaves de 128 bits com uma estrutura semelhante ao DES,
porém, possui uma implementação mais simples.
O   algoritmo   AES   é   seguro   e,   por   isto,   é   um   algoritmo   simétrico   padrão   nas
comunicações seguras do governo americano. Ele é um dos algoritmos mais populares
usados para criptografia de chave simétrica.
O algoritmo DES será explicado com mais detalhes no próximo tópico.
Abaixo segue um quadro comparativo com as vantagens e desvantagens do algoritmo
que utiliza a chave simétrica.
Tabela 2. Quadro de comparação
Vantagem Desvantagem
Boa performance computacional Troca de chaves
São extremamente rápidos em sua Exige maior processamento
execução
São utilizados para prover o sigilo das Necessita que a chave secreta seja
informações compartilhada com todos os que
precisam de ler a mensagem
Vulnerável a roubos

4.3. DES (Data Encryption Standard)
Em 1973, o NBS (National Institute of Standards and Technology) solicitou ao Federal
Register, a criação de um algoritmo de codificação que respondesse a alguns critérios
que  foram   propostos.   Estes   critérios   são   de  possuir   um  elevado   nível   de  segurança
ligado a uma chave pequena e que sirva para codificar e decodificar; ser compreensível
(muitos   algoritmos   deixaram   de   ser   utilizados   devido   sua   alta   complexidade);   não
depender da confidencialidade do algoritmo; ser eficaz e exportável. 
A IBM foi a responsável pela a criação inicial um algoritmo, que foi nomeado como
“Lucifer”. Em 1976, começa a nascer o Data Encryption Standard (DES), baseado em
Lucifer. Em 1978, o DES foi aprovado pelo NBS e normalizado pelo ANSI (American
National Standard Institute). Em alguns documentos, uma distinção é feita entre o DES
como um padrão, e o algoritmo, referido como o DEA (o Data Encryption Algorithm).
Este algoritmo trata­se de um sistema que realiza codificações simétricas por blocos de
64 bits, onde 8 bits são de teste de paridade (para verificar a integridade dos bits da
chave). Então a chave possuirá em seu primeiro bloco, 56 bits úteis. Ele consiste em
efetuar: combinações, substituições e permutações. 
No   tópico   abaixo   serão   mostrados,   de   forma   mais   simples,   como   é   realizado   o
algoritmo, bem como, sua lógica e a criação de suas chaves K.

4.4. A lógica do algoritmo DES
O Algoritmo DES consiste em encriptar uma palavra ou frase da seguinte forma:
1. Pega­se uma palavra e faz­se conversão para binário;
2. Divide­se esse resultado binário em 1 bloco de 64 bits;
3. Efetua­se uma função dentro do algoritmo;
4. Tem­se a palavra ou frase final criptografada.

Figura 4. Bloco funcional algoritmo DES (Foto:


http://br.ccm.net/contents/132-introducao-a-codificacao-des)
Inicialmente, a partir de uma chave K aleatória, cria­se 16 chaves que serão utilizadas a 
cada iteração do processo. 

Essa chave inicial, possui 64 bits distribuídos em uma matriz quadrada (8 por 8). Então,
elimina­se o bit de paridade de cada linha e passa­se a mesma por outra matriz
aleatória de 56 bits (denominada PC­), realizando o processo de permutação, ou
seja, deslocando os bits de acordo com a posição indicada em PC­1. 

Com o resultado dessa permutação, divide­se novamente em dois blocos  de 28 bits
cada. Faz­se um processo de rotação, dentro desses blocos de 28 bits, deslocando
um bit à esquerda a cada nova iteração. Este processo é feito 16 vezes, obtendo­se
16 pares diferentes de blocos de 28 bits.

Cada par de bloco de 28 bits é unido, formando novamente blocos de 56 bits, que serão
permutados um a um com uma matriz PC­2 de 48 bits.

Após a união, elimina­se o bit de paridade do bloco, faz­se a permutação com PC­2 e
finalmente tem­se 16 chaves (K1 a K16) diferentes.

Figura 5. Bloco funcional da chave

Dispondo as chaves em mãos, inicia­se o processo de encriptação da mensagem. Pega­
se um bloco de 64 bits e faz­se uma permutação similar ao processo feito com a chave
K, porém mantendo os 64 bits.
Divide­se o bloco em 2 novos blocos de 32 bits, direito e esquerdo, chamados também
de L (left) e R (right). Um bloco se mantém com todos os bits de posição par e o outro
com os bits de posição ímpar.
A   seguir,   os   blocos   serão   submetidos   a   um   processo   chamado   “round”   (volta).
Lembrando que, são necessários 16 rounds para a encriptação da palavra, porém neste
tópico será mostrado apenas um 1 round. 
O bloco direito será enviado para o segundo round sem alterações. O bloco esquerdo irá
passar por uma função do algoritmo denominada expansão. Com isso, esse bloco passa
a ter 48 bits.
O próximo passo consiste em uma nova função do algoritmo que executa uma função
X­OR desse bloco esquerdo expandido com a chave K1 também de 48 bits.
A próxima função do algoritmo se chama função substituição. O bloco resultante do X­
OR da chave com o bloco esquerdo expandido agora é divido em 8 blocos de 6 bits.
Dentro dessa função, o algoritmo seleciona o primeiro e o último bit para determinar
linhas e colunas da matriz. Esse processo também é conhecido como compressão. Ao
final dessa função, novamente tem­se o um bloco de 32 bits.
Então, a partir desse bloco obtido, faz­se uma permutação com uma matriz P (aleatória,
inserida previamente no algoritmo) surgindo um novo bloco de 32 bits que, por sua vez,
será submetido a um X­OR com um bloco direito, gerando o bloco de 32 bits necessário
para a iteração do 2º round.
Figura 6. Bloco funcional da lógica do algoritmo DES

5. Criptoanálise
A criptoanálise é a ciência de quebrar uma mensagem cifrada. Quebrar  é hackear o
sistema para se descobrir uma chave. Decifrar é obter uma mensagem original quando
se   conhece   o   sistema   e   usando   a   chave   também   conhecida.   Por   isso,   é   importante
ressaltar que quebrar não decifrar. 
Em resumo, existem ao menos quatro desenvolvimentos em criptoanálise. O primeiro é
a criptoanalise diferencial, que é usada para atacar qualquer cifra de bloco. O segundo
desenvolvimento   é  a  criptoanalise  linear,   que  pode  romper   o DES  com  apenas  243
textos simples conhecidos. O terceiro desenvolvimento é o uso da análise do consumo
de energia elétrica, onde computadores utilizam 3 volts para representar um 1 bit e 0
volts para representar um bit 0. O quarto desenvolvimento é a análise de sincronismo,
onde   os   algoritmos   estão   repletos   de   instrução   “if”   que   testam   bits   nas   chaves   de
rodadas.
A criptoanalise é muito utilizada para testar a segurança dos sistemas. Por exemplo, em
sistemas financeiros (bancos, investimentos, etc) onde há transações de altos valores, é
necessário que este sistema seja altamente confiável e seguro. Mas vale lembrar que por
mais seguro que seja um sistema, ele nunca será 100% seguro.
6. Conclusão
Hoje   em   dia,   com   a   expansão   da   tecnologia,   tem­se   um   grande   problema   a   ser
controlado ou resolvido. Com a popularização do acesso à WEB, fica cada vez mais
difícil   controlar   a   ação   de   pessoas   mal­intencionadas   que   desejam   descobrir   dados
pessoais   por prazer,   roubar, afetar  redes,  dentre  outras   ações   indesejáveis   que  já  se
conhecem. A criptografia é um modo que minimizar isto. 
Por   isto,   ela   possui   grande   importância   neste   mundo   atual.   Os   tipos   de   algoritmos
complexos   e   a   importância   da   criptoanálise   mostram   o   quão   necessário   é   manter   a
atenção para que a criptografia não perca sua essência de proteger e evitar que danos
como os citados acima aconteçam. Como citado no tópico do DES, por mais difícil que
seja   um   algoritmo   criptográfico,   por   mais   complexo   seja   quebrá­lo,   ele   nunca   será
100% confiável e seguro.

7. Referências Bibliográficas

[1] http://www­usr.inf.ufsm.br/~rose/Tanenbaum.pdf

[2] http://br.ccm.net/contents/132­introducao­a­codificacao­des

[3] http://www.oficinadanet.com.br/artigo/443/o_que_e_criptografia

[4] http://www.numaboa.com.br/criptografia/cifras/transposicoes

[5] http://www.gta.ufrj.br/grad/99_2/marcos/des.htm

[6] http://www.numaboa.com.br/criptografia/cifras/substituicao

[7] https://www.ucb.br/sites/100/103/TCC/22005/RaimundoCandidodeSousa.