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

64
Criptografia: matemática e lógica computacional Criptografia: matemática e lógica computacional protegendo informações protegendo informações Alex Camargo [email protected] DIA INTERNACIONAL DE SEGURANÇA EM INFORMÁTICA UNIVERSIDADE FEDERAL DO PAMPA CAMPUS BAGÉ Bagé/2015

Upload: alex-camargo

Post on 18-Feb-2017

870 views

Category:

Presentations & Public Speaking


0 download

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. 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 = 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

Criptografia: matemática e lógica computacional Criptografia: 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