Criptografia: matemática e lógica computacionalCriptografia: matemática e lógica computacional
protegendo informaçõesprotegendo informações
Alex Camargo
alexcamargoweb@gmail.com
DIA INTERNACIONAL DE SEGURANÇA EM INFORMÁTICA
UNIVERSIDADE 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 dados
com 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 dados
com 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 dados
com 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. Desafios
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
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 = FMTWF
TUDO 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 Computacional
http://www.biologiacomputacional.c3.furg.br/
Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
VII. Referências
ALMEIDA, 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ências
MYSQL. 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
Criptografia: matemática e lógica computacionalCriptografia: matemática e lógica computacional
protegendo informaçõesprotegendo informações
OBRIGADO!
Slideshare: alexcamargoweb
Guide me in your truth and teach me, for you are God my
Savior, and my hope is in you all day long. Psalm 25:5
Bagé/2015

Criptografia: matemática e lógica computacional protegendo informações

  • 1.
    Criptografia: matemática elógica computacionalCriptografia: matemática e lógica computacional protegendo informaçõesprotegendo informações Alex Camargo alexcamargoweb@gmail.com DIA INTERNACIONAL DE SEGURANÇA EM INFORMÁTICA UNIVERSIDADE FEDERAL DO PAMPA CAMPUS BAGÉ Bagé/2015
  • 2.
    I - Apresentação Formaçãoacadê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
  • 3.
    I - Apresentação Formaçãoacadê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
  • 4.
    I - Apresentação Experiênciaprofissional:  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
  • 5.
    I - Apresentação Experiênciaprofissional:  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
  • 6.
    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
  • 7.
    III. Objetivos Objetivos destapalestra:  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
  • 8.
    IV. Sumário 1. Oque é 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
  • 9.
    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
  • 10.
    1. O queé Criptografia? Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
  • 11.
    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
  • 12.
    1.2. História A palavracriptografia 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
  • 13.
    1.2. História A palavracriptografia 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
  • 14.
    1.2.1. Cifra deCé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
  • 15.
    1.2.1. Cifra deCé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
  • 16.
    1.2.2. Enigma Após aPrimeira 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
  • 17.
    1.2.2. Enigma Após aPrimeira 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
  • 18.
    1.2.2. Enigma Após aPrimeira 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
  • 19.
    1.2.3. Outros exemplos Criptografia:matemática e lógica computacional protegendo informações Alex Camargo Figura. Disco de Alberti (1466)
  • 20.
    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)
  • 21.
    1.2.3. Outros exemplos Criptografia:matemática e lógica computacional protegendo informações Alex Camargo Figura. Cilindro de Jefferson (1795)
  • 22.
    1.3. Categorias Os métodosde 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
  • 23.
    1.3.1 Cifras deSubstituiçã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
  • 24.
    1.3.2 Cifras deTransposiçã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
  • 25.
    2. Técnicas deCriptografia Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
  • 26.
    2.1. Introdução Os processosde 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
  • 27.
    2.2. Criptografia Simétrica Acriptografia 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
  • 28.
    2.2. Criptografia Simétrica Acriptografia 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
  • 29.
    2.2.1. DES O DataEncryption 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
  • 30.
    2.2.1. DES O DataEncryption 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
  • 31.
    2.3. Criptografia Assimétrica Acriptografia 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
  • 32.
    2.3. Criptografia Assimétrica Acriptografia 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
  • 33.
    2.3.1. RSA O algoritmoRSA é 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
  • 34.
    2.3.1. RSA O algoritmoRSA é 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
  • 35.
    2.4. Criptografia Hash Paraassinar 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
  • 36.
    2.4.1. MD5 É umafunçã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
  • 37.
    2.4.1. MD5 É umafunçã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
  • 38.
    3. Criptografia naprática Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
  • 39.
    3.1. Criptografando dados noMySQL 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
  • 40.
    3.1. Criptografando dados noMySQL 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
  • 41.
    3.1. Criptografando dados noMySQL 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
  • 42.
    3.1. Criptografando dados noMySQL 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
  • 43.
    3.2. Criptografando dados comPHP 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
  • 44.
    3.2. Criptografando dados comPHP 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)
  • 45.
    3.2. Criptografando dados comPHP 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)
  • 46.
    4. Desafios Criptografia: matemáticae lógica computacional protegendo informações Alex Camargo
  • 47.
    4.1. Exercício sobresubstituiçã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
  • 48.
    4.1. Exercício sobresubstituição Criptografia: matemática e lógica computacional protegendo informações Alex Camargo Figura. Desafio sobre substituição: gabarito
  • 49.
    4.1. Exercício sobresubstituição Criptografia: matemática e lógica computacional protegendo informações Alex Camargo Figura. Desafio sobre substituição: gabarito
  • 50.
    4.1. Exercício sobresubstituição Criptografia: matemática e lógica computacional protegendo informações Alex Camargo Figura. Desafio sobre substituição: gabarito
  • 51.
    4.1. Exercício sobresubstituição Criptografia: matemática e lógica computacional protegendo informações Alex Camargo Figura. Desafio sobre substituição: gabarito
  • 52.
    4.1. Exercício sobresubstituiçã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
  • 53.
    4.2. Exercício sobretransposiçã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
  • 54.
    4.2. Exercício sobretransposição Criptografia: matemática e lógica computacional protegendo informações Alex Camargo Figura. Desafio sobre transposição: gabarito
  • 55.
    4.2. Exercício sobretransposição Criptografia: matemática e lógica computacional protegendo informações Alex Camargo Figura. Desafio sobre transposição: gabarito
  • 56.
    4.2. Exercício sobretransposição Criptografia: matemática e lógica computacional protegendo informações Alex Camargo Figura. Desafio sobre transposição: gabarito
  • 57.
    4.2. Exercício sobretransposição Criptografia: matemática e lógica computacional protegendo informações Alex Camargo Figura. Desafio sobre transposição: gabarito
  • 58.
    4.2. Exercício sobretransposiçã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
  • 59.
    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 = FMTWF TUDO BEM = YZITE GJR00 Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
  • 60.
    V. Agradecimentos CAPES (Coordenaçãode 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
  • 61.
    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 Computacional http://www.biologiacomputacional.c3.furg.br/ Criptografia: matemática e lógica computacional protegendo informações Alex Camargo
  • 62.
    VII. Referências ALMEIDA, Mendeset 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
  • 63.
    VII. Referências MYSQL. MySQL5.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
  • 64.
    Criptografia: matemática elógica computacionalCriptografia: matemática e lógica computacional protegendo informaçõesprotegendo informações OBRIGADO! Slideshare: alexcamargoweb Guide me in your truth and teach me, for you are God my Savior, and my hope is in you all day long. Psalm 25:5 Bagé/2015