criptografia: matemática e lógica computacional protegendo informações
TRANSCRIPT
Criptografia: matemática e lógica computacional Criptografia: matemática e lógica computacional protegendo informaçõesprotegendo informações
Alex [email protected]
DIA INTERNACIONAL DE SEGURANÇA EM INFORMÁTICAUNIVERSIDADE FEDERAL DO PAMPA
CAMPUS BAGÉ
Bagé/2015
I - Apresentação
Formação acadêmica:
Bacharel em Sistemas de Informação (URCAMP, 2010)
TCC: Web sistema integrado a uma rede social para academias de ginástica
Orientador: Prof. Abner Guedes
Especialista em Sistemas Distribuídos com Ênfase em Banco de Dados (UNIPAMPA, 2013)
TCC: Interligando bases de dados do sistema Controle de Marcas e Sinais utilizando o MySQL Cluster
Orientadores: Prof. Érico Amaral e Prof. Rafael Bastos
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
I - Apresentação
Formação acadêmica:
Mestrando em Engenharia de Computação (FURG, 2017)
Dissertação: Um estudo sobre ferramentas para a identificação e previsão de mutações em estruturas de proteínas
Orientador: Profa. Karina dos Santos Machado
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
I - Apresentação
Experiência profissional:
Programador Web e DBA
Local: Prefeitura Municipal de Bagé
Setor: Núcleo de Tecnologia da Informação - NTI
Professor
Local: Capacitar Escola Técnica
Disciplinas: Banco de Dados e Análise de Sistemas
Professor
Local: Universidade Federal do Pampa - UNIPAMPA
Disciplinas: Algoritmos e Programação, Laboratório de Programação I e Laboratório de Programação II
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
I - Apresentação
Experiência profissional:
Bolsista na modalidade mestrado
Local: Universidade Federal do Rio Grande – FURG
Projeto: Bioinformática Estrutural de Proteínas: modelos, algoritmos e aplicações biotecnológicas
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
II. Pré-requisitos
Características esperadas (não obrigatórias):
Conhecimentos gerais em programação.
Experiência em ambientes Linux (pode ajudar).
Interesse em aprender coisas novas.
"Aprender o que eu já sei não tem graça." - Prof. Gerson Leiria
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
III. Objetivos
Objetivos desta palestra:
Compreender técnicas básicas de Criptografia.
Explorar algoritmos em diferentes abordagens.
Motivar o uso consciente de cifras.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
IV. Sumário
1. O que é Criptografia? - 1.1. Introdução - 1.2. História 1.2.1. Cifra de César 1.2.2. Enigma - 1.3. Categorias 1.3.1. Cifras de Substituição 1.3.2. Cifras de Transposição
2. Técnicas de Criptografia - 2.1. Introdução - 2.2. Criptografia Simétrica 2.2.1. DES - 2.3. Criptografia Assimétrica 2.3.1. RSA
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
IV. Sumário
- 2.4. Criptografia Hash 2.4.1. MD5
3. Criptografia na prática - 3.1. Criptografando dados no MySQL - 3.2. Criptografando dados com PHP
4. Desafios - 4.1. Exercício sobre substituição - 4.2. Exercício sobre transposição - 4.3. Exercício final
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
1. O que é Criptografia?
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
1.1. Introdução
A Criptografia é a ciência que estuda formas de se escrever e ler uma mensagem através de códigos.
Privacidade: proteção contra o acesso de intrusos.
Autenticidade: certificação de autoria.
Integridade: impedimento de modificação não autorizada.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Processos de cifragem e decifragem
1.2. História
A palavra criptografia deriva da junção das palavras gregas kriptos (secreto, oculto) e grifo (grafia).
Passado: largamente utilizada em guerras e conflitos.
Atualmente: usado para proteger informações digitais.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
1.2. História
A palavra criptografia deriva da junção das palavras gregas kriptos (secreto, oculto) e grifo (grafia).
Passado: largamente utilizada em guerras e conflitos.
Atualmente: principal meio para proteger informações digitais.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Telegrama criptografado de 1917 Figura. Senha de um usuário criptografada
1.2.1. Cifra de César
O primeiro relato de um algoritmo de criptografia que se tem é conhecido como algoritmo de César, usado pelo imperador Júlio César na Roma Antiga.
Algoritmo de substituições alfabéticas no texto da mensagem.
Três posições a frente no alfabeto.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Cifra de César básica
1.2.1. Cifra de César
O primeiro relato de um algoritmo de criptografia que se tem é conhecido como algoritmo de César, usado pelo imperador Júlio César na Roma Antiga.
Algoritmo de substituições alfabéticas no texto da mensagem.
Três posições a frente no alfabeto.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Cifra de César melhorada
1.2.2. Enigma
Após a Primeira Guerra Mundial, o alemão Scherbuis criou a máquina Enigma, o que revolucionou o mundo da criptografia.
Os três cilindros podiam permutar entre si, temos 3! = 6.
Cada um dos três cilindros podia ser regulado de vinte e seis maneiras diferentes, o que dá 263 = 17576 combinações.
Era possível trocar seis pares de letras a partir das vinte e seis do alfabeto, gerando, aproximandamente 1 bilhão de combinações diferentes.
Por fim, o número de chaves era dado por: 17576 × 6 × 100391791500 ≃ 1 zilhão.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
1.2.2. Enigma
Após a Primeira Guerra Mundial, o alemão Scherbuis criou a máquina Enigma, o que revolucionou o mundo da criptografia.
Os três cilindros podiam permutar entre si, temos 3! = 6.
Cada um dos três cilindros podia ser regulado de vinte e seis maneiras diferentes, o que dá 263 = 17576 combinações.
Era possível trocar seis pares de letras a partir das vinte e seis do alfabeto, gerando, aproximandamente 1 bilhão de combinações diferentes.
Por fim, o número de chaves era dado por: 17576 × 6 × 100391791500 ≃ 1 zilhão.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Máquina Enigma
1.2.2. Enigma
Após a Primeira Guerra Mundial, o alemão Scherbuis criou a máquina Enigma, o que revolucionou o mundo da criptografia.
Os três cilindros podiam permutar entre si, temos 3! = 6.
Cada um dos três cilindros podia ser regulado de vinte e seis maneiras diferentes, o que dá 263 = 17576 combinações.
Era possível trocar seis pares de letras a partir das vinte e seis do alfabeto, gerando, aproximandamente 1 bilhão de combinações diferentes.
Por fim, o número de chaves era dado por: 17576 × 6 × 100391791500 ≃ 1 zilhão.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Máquina Enigma: diagrama simplificado
1.2.3. Outros exemplos
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Disco de Alberti (1466)
1.2.3. Outros exemplos
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Alfabetos de cifra de Della Porta (1563)
1.2.3. Outros exemplos
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Cilindro de Jefferson (1795)
1.3. Categorias
Os métodos de criptografia são divididos em duas categorias:
Cifras de substituição.
Cifras de transposição.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
1.3.1 Cifras de Substituição
Nas cifras de substituição cada grupo de letras é substituído por outro grupo de letras.
Substituindo as letras da palavra "paz" pela correspondente resultaria em "HQN".
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Cifras de substituição
1.3.2 Cifras de Transposição
As cifras de transposição utilizam o princípio de mudança da ordem das letras da mensagem a ser enviada.
No exemplo acima, a chave serve de apoio para enumerar as colunas na ordem alfabética crescente das letras.
O texto é lido na vertical, resultando em: "ndtnmidcaoerlnnoineohaet"
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Cifras de transposição
2. Técnicas de Criptografia
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
2.1. Introdução
Os processos de cifragem e decifragem de dados são realizados através de algoritmos criptográficos específicos:
Chaves simétricas.
Chaves assimétricas.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
2.2. Criptografia Simétrica
A criptografia simétrica utiliza apenas uma chave para codificar e decodificar uma mensagem.
Foi o primeiro tipo de criptografia criado.
É usada em transmissões de dados em que não é necessário um grande nível de segurança.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
2.2. Criptografia Simétrica
A criptografia simétrica utiliza apenas uma chave para codificar e decodificar uma mensagem.
Foi o primeiro tipo de criptografia criado.
É usada em transmissões de dados em que não é necessário um grande nível de segurança.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Criptografia simétrica
2.2.1. DES
O Data Encryption Standard (DES) é um padrão criptográfico criado em 1977 através de uma licitação aberta pela antiga National Security Agency (NSA).
Tanto o algoritmo quanto a chave são simétricos.
A estrutura do funcionamento do DES pode ser dividida em três partes: permutação inicial, cifragens com operações de chave e permutação final.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
2.2.1. DES
O Data Encryption Standard (DES) é um padrão criptográfico criado em 1977 através de uma licitação aberta pela antiga National Security Agency (NSA).
Tanto o algoritmo quanto a chave são simétricos.
A estrutura do funcionamento do DES pode ser dividida em três partes: permutação inicial, cifragens com operações de chave e permutação final.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Ciclo do DES
2.3. Criptografia Assimétrica
A criptografia assimétrica é baseada no uso de pares de chaves para cifrar/decifrar mensagens.
As duas chaves são relacionadas através de um processo matemático de dificíl decifragem via ataque.
Este método é também conhecido como criptografia de chaves públicas.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
2.3. Criptografia Assimétrica
A criptografia assimétrica é baseada no uso de pares de chaves para cifrar/decifrar mensagens.
As duas chaves são relacionadas através de um processo matemático.
Este método é também conhecido como criptografia de chaves públicas.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Criptografia assimétrica
2.3.1. RSA
O algoritmo RSA é assim denominado devido ao sobrenome de seus autores, Ronald Rivest, Adi Shamir e Leonard Adleman, cujo trabalho foi primeiramente publicado em abril de 1977.
A segurança se baseia na dificuldade de fatorar números extensos.
A fatoração de um número de 200 dígitos requer 4 milhões de anos para ser processada.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
2.3.1. RSA
O algoritmo RSA é assim denominado devido ao sobrenome de seus autores, Ronald Rivest, Adi Shamir e Leonard Adleman, cujo trabalho foi primeiramente publicado em abril de 1977.
A segurança se baseia na dificuldade de fatorar números extensos.
A fatoração de um número de 200 dígitos requer 4 milhões de anos para ser processada.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Algoritmo RSA
2.4. Criptografia Hash
Para assinar uma mensagem, uma função Message Digest (MD) é usada para processar o documento, produzindo um pequeno pedaço de dados, chamado de hash.
Função matemática que refina toda a informação de um arquivo em um único pedaço de dados de tamanho fixo.
Em geral, entra-se com os dados a serem "digeridos" e o algoritmo MD gera um hash de 128 ou 160 bits.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
2.4.1. MD5
É uma função inventada por Ron Rivest, do MIT. Foi inicialmente proposto em 1991, após alguns ataques de criptoanálise terem sidos descobertos contra a função MD4.
Este algoritmo produz um valor hash de 128 bits.
Foi projetado para ser rápido, simples e seguro.
Seus detalhes são públicos e analisados pela comunidade de criptografia.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
2.4.1. MD5
É uma função inventada por Ron Rivest, do MIT. Foi inicialmente proposto em 1991, após alguns ataques de criptoanálise terem sidos descobertos contra a função MD4.
Este algoritmo produz um valor hash de 128 bits.
Foi projetado para ser rápido, simples e seguro.
Seus detalhes são públicos e analisados pela comunidade de criptografia.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. MD5 Encrypter: http://www.md5online.org/md5-encrypt.html
3. Criptografia na prática
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
3.1. Criptografando dados no MySQL
O MySQL, a partir da versão 4.1, atualizou seu padrão de senhas hash proporcionando uma melhor segurança e redução nos riscos das senhas serem decifradas por ataques.
Diferente formato dos valores de senha produzidos pela função PASSWORD().
Aumento no tamanho da string gerada (de 16 para 41 bytes).
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
3.1. Criptografando dados no MySQL
O MySQL, a partir da versão 4.1, atualizou seu padrão de senhas hash proporcionando uma melhor segurança e redução nos riscos das senhas serem decifradas.
Diferente formato dos valores de senha produzidos pela função PASSWORD().
Aumento no tamanho da string gerada (de 16 para 41 bytes).
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. MySQL: descrição da tabela
3.1. Criptografando dados no MySQL
O MySQL, a partir da versão 4.1, atualizou seu padrão de senhas hash proporcionando uma melhor segurança e redução nos riscos das senhas serem decifradas.
Diferente formato dos valores de senha produzidos pela função PASSWORD().
Aumento no tamanho da string gerada (de 16 para 41 bytes).
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. MySQL: inserção de um registro
3.1. Criptografando dados no MySQL
O MySQL, a partir da versão 4.1, atualizou seu padrão de senhas hash proporcionando uma melhor segurança e redução nos riscos das senhas serem decifradas.
Diferente formato dos valores de senha produzidos pela função PASSWORD().
Aumento no tamanho da string gerada (de 16 para 41 bytes).
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. MySQL: exibindo a coluna senha encriptada
3.2. Criptografando dadoscom PHP
A função crypt(), nativa do PHP, retorna uma string criptografada usando o algoritmo de encriptação Unix Standard DES-based ou algoritmos alternativos disponíveis no sistema.
Sintaxe: string crypt ( string $str [, string $salt ] )
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
3.2. Criptografando dadoscom PHP
A função crypt(), nativa do PHP, retorna uma string criptografada usando o algoritmo de encriptação Unix Standard DES-based ou ou algoritmos alternativos disponíveis no sistema.
Sintaxe: string crypt ( string $str [, string $salt ] )
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. crypt: Encriptação unidirecional de string (hashing)
3.2. Criptografando dadoscom PHP
A função crypt(), nativa do PHP, retorna uma string criptografada usando o algoritmo de encriptação Unix Standard DES-based ou ou algoritmos alternativos disponíveis no sistema.
Sintaxe: string crypt ( string $str [, string $salt ] )
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. crypt: Encriptação unidirecional de string (hashing)
4.1. Exercício sobre substituição
1. Implementar um programa que faça a encriptação e desencriptação de um texto digitado pelo usuário utilizando a técnica de substituição.
Exemplo:unipampa = vojqbnqb
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
4.1. Exercício sobre substituição
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Desafio sobre substituição: gabarito
4.1. Exercício sobre substituição
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Desafio sobre substituição: gabarito
4.1. Exercício sobre substituição
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Desafio sobre substituição: gabarito
4.1. Exercício sobre substituição
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Desafio sobre substituição: gabarito
4.1. Exercício sobre substituição
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Desafio sobre substituição: gabarito
Figura. Desafio sobre substituição: gabarito
4.2. Exercício sobre transposição
1. Implementar um programa que faça a encriptação e desencriptação de um texto digitado pelo usuário utilizando a técnica de transposição.
Exemplo:unipampa = nupiamap
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
4.2. Exercício sobre transposição
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Desafio sobre transposição: gabarito
4.2. Exercício sobre transposição
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Desafio sobre transposição: gabarito
4.2. Exercício sobre transposição
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Desafio sobre transposição: gabarito
4.2. Exercício sobre transposição
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Desafio sobre transposição: gabarito
4.2. Exercício sobre transposição
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
Figura. Desafio sobre transposição: gabarito
Figura. Desafio sobre transposição: gabarito
4.3. Exercício final
1. Escreva uma função que receba como parâmetro um texto e faça a sua cifragem usando a seguinte regra. Para toda letra do texto, de acordo com sua posição em cada vetor, atribua a letra que estiver 13 posições depois do mesmo vetor. Imprima a frase criptografada que deve ser exibida em grupos de 5 letras. O último grupo deve ser completado com 000 se contiver menos de 5 letras. Escreva outra função que exiba a frase desencriptada. A implementação deve fazer o uso de arquivos texto.
Considere o alfabeto = " ", A, B, C ... K ... X, Y, Z contendo 27 caracteres.
Exemplo:AGORA = FMTWFTUDO BEM = YZITE GJR00
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
V. Agradecimentos
CAPES (Coordenação de Aperfeiçoamento de Pessoal de Nível Superior.
Profa. Karina Machado (FURG)
Prof. Érico Amaral (UNIPAMPA)
Prof. Rafael Bastos (IDEAU)
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
VI. Contato
FURG - Campus Carreiros - Av. Itália, KM 8 - Rio Grande/RS
Centro de Ciências Computacionais - Laboratório LAMSA
Grupo de Pesquisa em Biologia Computacionalhttp://www.biologiacomputacional.c3.furg.br/
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
VII. ReferênciasALMEIDA, Mendes et al. Criptografia em sistemas distribuídos. Sistemas de Informação & Gestão de Tecnologia., n. 1, 2010.
CARVALHO, Jade; COELHO, Isadora. Criptografia - Sistemas Distribuídos. Disponível em: <http://pt.slideshare.net/IsadoraMartiniCoelho/seminario-de-sd-criptografia>. Acesso em: Ago/2015.
CAVALCANTE, André LB. Teoria dos números e criptografia. Revista Virtual, 2005.
FIARRESGA, Victor Manuel Calhabrês. Criptografia e matemática. Dissertação de Mestrado. Faculdade de Ciências da Universidade de Lisboa, 2010.
GIMENEZ, José Roberto Bollis. Implementação do algoritmo RSA. 2011.
GTECH. Programação em C/C++ - Aula 36, 37 E 38. Disponível em: <http://gtechinfor.com.br/ >. Acesso em: Ago/2015.
HINZ, Marco Antônio Mielke. Um estudo descritivo de novos algoritmos de criptografia. Monografia de Graduação. Universidade Federal de Pelotas, 2010.
MOREIRA, Vinícius Fernandes; Criptografia para Dispositivos Móveis. Monografia de Graduação. Faculdade de Tecnologia de São José dos Campos, 2010.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
VII. ReferênciasMYSQL. MySQL 5.1 Reference Manual. Disponível em:<https://dev.mysql.com/doc/refman/5.1/en/password-hashing.html>. Acesso em: Ago/2015.
OLIVEIRA, Ronielton Rezende. Criptografia simétrica e assimétrica: os principais algoritmos de cifragem. Revista Segurança Digital, Brasília, v. 2, n. 3, p. 21-24, 2012.
PEREIRA, F. C. Criptografia Temporal: Aplicação Prática em Processos de Compra. Dissertação de Mestrado. Universidade Federal de Santa Catarina, 2003.
PHP. Manual do PHP - Crypt. Disponível em: <http://php.net/manual/pt_BR/function.crypt.php>. Acesso em: Ago/2015.
RIBEIRO, Vinicius Gadis. Um Estudo Comparativo entre algoritmos de criptografia DES–Lucifer (1977) e AES–Rijndael (2000). In: VII Congreso Argentino de Ciencias de la Computación. 2001.
TRINTA, Fernando Antônio Mota; MACÊDO, Rodrigo Cavalcanti de. Um Estudo sobre Criptografia e Assinatura Digital. Pernambuco: Universidade Federal de Pernambuco (UFPE), 1998.
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo