Beruflich Dokumente
Kultur Dokumente
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.
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ãocifrada que é enviada de uma pessoa (ou organização) para outra é
chamada de "texto claro".
É importante ressaltar os principais objetivos da criptografia:
• Confidencialidade da mensagem;
• Integridade da mensagem;
• Autenticação do remetente;
• Nãorepú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.
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.
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, temse 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, podese 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
trocatroca das letras do texto original e a partir de um texto cifrado. O texto
original é obtido desfazendose 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
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 baseiase 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
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 reproduzila.
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 tratase 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. Pegase uma palavra e fazse conversão para binário;
2. Dividese esse resultado binário em 1 bloco de 64 bits;
3. Efetuase uma função dentro do algoritmo;
4. Temse a palavra ou frase final criptografada.
Essa chave inicial, possui 64 bits distribuídos em uma matriz quadrada (8 por 8). Então,
eliminase o bit de paridade de cada linha e passase 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 PC1.
Com o resultado dessa permutação, dividese novamente em dois blocos de 28 bits
cada. Fazse 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, obtendose
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 PC2 de 48 bits.
Após a união, eliminase o bit de paridade do bloco, fazse a permutação com PC2 e
finalmente temse 16 chaves (K1 a K16) diferentes.
Dispondo as chaves em mãos, iniciase o processo de encriptação da mensagem. Pega
se um bloco de 64 bits e fazse uma permutação similar ao processo feito com a chave
K, porém mantendo os 64 bits.
Dividese 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
XOR 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 temse o um bloco de 32 bits.
Então, a partir desse bloco obtido, fazse 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 XOR 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, temse 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 malintencionadas 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://wwwusr.inf.ufsm.br/~rose/Tanenbaum.pdf
[2] http://br.ccm.net/contents/132introducaoacodificacaodes
[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.