Referências. Criptografia e Segurança de Dados. Outras Referências. Alguns tipos de ataques. Alguns tipos de ataques. Alguns tipos de ataques - PDF
Download "Referências. Criptografia e Segurança de Dados. Outras Referências. Alguns tipos de ataques. Alguns tipos de ataques. Alguns tipos de ataques"
Sebastião Barreiro de Almada
1 Criptografia e Segurança de Dados Aula 1: Introdução à Criptografia Referências Criptografia em Software e Hardware Autores: Edward D. Moreno Fábio D. Pereira Rodolfo B. Chiaramonte Rodolfo Barros Chiaramonte Outras Referências SEGURANÇA DE DADOS CRIPTOGRAFIA EM REDES DE COMPUTADOR Autor: Routo Terada CRYPTOGRAPHY AND NETWORK SECURITY PRINCIPLES AND PRACTICE Autor:William Stallings HANDBOOK OF APPLIED CRYPTOGRAPHY Autores: A. Menezes, P. van Oorschot, e S. Vanstone. 3 Alguns tipos de ataques Ataque contra senhas: Alguns sistemas possuem senhas predefinidas; Senhas formadas por data de aniversário ou alguma outra informação pessoal; Ataques por força bruta. 4 Alguns tipos de ataques Ataque de recuperação de dados: São ataques que desviam do controle do sistema operacional; Os arquivos são recuperados bit a bit desviando-se das restrições e controle de acesso. Alguns tipos de ataques Ataque de recuperação de memória: Dados são armazenados em memória durante a execução de um programa; Quando o programa finaliza a área de memória é marcada como livre, mas os dados não são sobrescritos; É possível alocar a memória liberada e analisar os dados
2 Como impedir o acesso a informações privadas? Uma possível solução: CRIPTOGRAFIA O que é Criptografia? Criptografia significa grafia oculta; Kriptos = Oculta; Graphos = Grafia. É a ciência de escrever em cifras de modo que apenas o destinatário possa decifrar; Hoje em dia não é utilizada apenas para codificação. 7 8 Esquema Geral Breve Histórico A criptografia pode ser entendida como um conjunto de métodos e técnicas para cifrar ou codificar informações legíveis por meio de um algoritmo, convertendo um texto original em um texto ilegível, sendo possível mediante o processo inverso recuperar as informações originais Usada desde a antigüidade: Presença na escrita hieroglífica dos egípcios; Codificação de planos de batalhas pelos romanos; Grandes mudanças a partir de meados do século passado; 9 10 Breve Histórico Em 1901, iniciou-se a era da comunicação sem fio: Aumenta o desafio da criptologia; Em 1921 Edward H. Herben fundou a Hebern Electric Code: Início da construção de máquinas de cifragem; Breve Histórico Até o fim da década de 70 algoritmos criptográficos secretos; Exemplo: Máquina ENIGMA utilizada pelos alemães até a 2ª Guerra Mundial era totalmente secreta; Atualmente a segurança baseia-se apenas no conhecimento da chave secreta, e não do algoritmo
3 Breve Histórico Máquina ENIGMA Breve Histórico Algoritmos Importantes: 1976 LUCIFER apresentado pela IBM à NBS(National Bureal of Standards), que após algumas modificações adota como padrão: DES (Data Encryption Standard); 1978 Criado algoritmo de chave pública RSA (nome derivado das iniciais dos autores Rivest, Shamir e Adleman); Qual a Importância da Criptografia? Segurança da transferência de dados na rede; Armazenamento de informações codificadas; Assinatura Digital e Integridade;... Onde é utilizada? Internet: Home Banking; Comércio Eletrônico; ; Sistemas Distribuídos; Bancos de Dados Objetivos da Criptografia (1) Confidencialidade; (2) Integridade dos Dados; (3) Autenticação; (4) Não-Repúdio. (1) Confidencialidade É um serviço para evitar que pessoas não autorizadas entendam o que está sendo transmitido; Este serviço também é conhecido como sigilo
4 (2) Integridade dos Dados É um serviço que assegura que os dados não foram alterados; Dois tipos de alteração: Acidental; Intencional: Inserção; Deleção; Substituição. (3) Autenticação Vários Tipos: Usuário; Remetente; Destinatário; Atualidade (4) Não-Repúdio É um serviço que previne que alguma entidade negue uma ação que havia executado previamente; Exemplo: Uma entidade pode autorizar a compra de uma propriedade por uma segunda entidade e depois negar tal autorização. Handbook of Applied Cryptography (1996). Importante A criptografia não é o único meio de prover a segurança da informação, é apenas um conjunto de técnicas que devem ser utilizadas em conjunto com outras Termos Comuns Texto original = Texto claro = Plaintext; Texto cifrado = Texto código = Chipertext; Cifrar/Criptografar - Converter texto claro para cifrado; Decifrar/Decriptografar - Recuperar o texto original a partir do texto cifrado; Criptologia - Estudo sobre os códigos: Cifras em Bloco x Stream Cifras em bloco processam blocos de caracteres (64 bits ou mais) durante a criptografia/decriptografia; Cifras Stream processam um bit ou um byte por vez; Maioria das cifras atuais utilizam blocos. Compreende criptografia e criptoanálise
5 Criptoanálise Ciência que busca determinar a chave ou decifrar mensagens sem o conhecimento da chave; Uma tentativa de criptoanálise é chamada de ataque. Tipos de algoritmos Simétricos: Uma mesma chave é utilizada tanto para a criptografia quanto para a decriptografia; Tipos de algoritmos Assimétricos: Possuem duas chaves: uma pública e outra privada. Algoritmos Simétricos Vantagens: Mais rápido; Bom nível de segurança; Desvantagens: Única chave compartilhada pelo emissor e receptor; Como distribuir a chave? Exposição da chave compromete todas as mensagens Algoritmos Assimétricos Esteganografia Vantagens: Duas chaves: uma para criptografia e outra para a decriptografia; Facilita a distribuição de chaves; Desvantagens: Velocidade de encriptação; Segurança baseada em problemas matemáticos complexos. 29 Não é criptografia; Maneiras de ocultar informações: Tinta invisível; Letras destacadas com lápis; Bits escondidos em certas imagens; Não faz sentido falar em quebra, mas em interceptação; Referência: Bases Matemáticas da Criptografia - TEMPEST 30 5
6 Esteganografia (cont) Desvantagens: Desempenho; Uso de muita informação para ocultar pequenos textos; Vantagens: Não desperta suspeitas de envolvimento com segredos. Funções São utilizadas para denotar os algoritmos criptográficos de maneira formal; Exemplos: f k (x) = y; f -1 k (y) = x; k é a chave, x o texto plano e y o texto cifrado; f k (x) indica a criptografia e f -1 k (y) indica que o algoritmo inverso está sendo utilizado (decriptografia) Referência: Bases Matemáticas da Criptografia - TEMPEST Esquema Geral Exercício Chave K Chave K Baseado no formalismo de funções, tente imaginar como seria um algoritmo de criptografia simples. Legível x f k (x)=y Ilegível y Linha de comunicação f k -1 (y)=x Legível x Uma Possível Solução y = f k (x) = x + k; x = f -1 k(y) = y - k; Exemplo: y = f 3 (2) = = 5; x = f -1 3(5) = 5 3 = 2; Tabela de Caracteres - A B C D E Cifra de César Letras na mensagem original substituída por outras deslocadas em um número fixo de posições (chave) no alfabeto; Exemplo Chave = 3: Original: R O D O L F O Cifrado: U R G R O I R Este exemplo, com chave 3, constitui na forma original da Cifra de César
7 Tabela de Substituição Exercício Gere as cifras para as palavras: CRIPTOGRAFIA UNIVEM CARAGUATATUBA Decifre as palavras: FRPSXWDGRU DOJRULWPR Soluções: CRIPTOGRAFIA: FULSWRJUDILD UNIVEM: XQLYHP CARAGUATATUBA: FDUDJXDWDWXED FRPSXWDGRU: COMPUTADOR DOJRULWPR: ALGORITMO Outras Chaves Hoje em dia toda cifra que apresenta uma substituição com deslocamento fixo é chamada Cifra de César; Exemplo Chave = 10: ALGORITMO: KVQYBSDWY COMPUTADOR: MYWZEDKNYB Com Ajuda de Tabela Matemática Suponha chave = 7; Para cifrar a letra E (4) = = 11 (L); Computacionalmente é indicado usar a Tabela ASCII A tabela ASCII Implementação Escreva um algoritmo para implementar a criptografia utilizando a Cifra de César: Algoritmo Cesar variavel palavra,cifrado: texto; i, chave: inteiro; ler palavra; ler chave; para i de 1 até tamanho_palavra cifrado[i] = palavra[i]+chave; mostrar cifrado; Fim
8 Implementação em C #include <stdio.h> #include <stdlib.h> int main() { char palavra[40]; char cifrado[40]; int i=0; int chave; printf("palavra: "); scanf("%s", &palavra); printf("chave: "); scanf("%d", &chave); while(palavra[i]!=0) cifrado[i] = (((palavra[i++]-65)+chave)%26)+65; cifrado[i]=0; printf("cifrado: %s\n", cifrado); system("pause"); return 0;} Substituição Simples Baseado em tabela de substituição; Troca-se as letras da primeira linha pelas letras da segunda linha; As letras da segunda linha são selecionadas aleatoriamente (chave da substituição); Possível obter 26! combinações de chave: 26! = Substituição Simples Exemplos utilizando a tabela acima: ALGORITMO = IPMGBAEZG COMPUTADOR = KGZTOEIRGB CARAGUATATUBA = KIBIMOIEIEONI Implementação Escreva um algoritmo para implementar criptografia usando a Substituição Simples: Algoritmo Simples variavel palavra,cifrado, chave,linha1 : texto; i: inteiro; ler palavra; para i de 1 até tamanho_palavra cifrado[i] = chave[palavra[i]]; mostrar cifrado; Fim Implementação em C #include <stdio.h> #include <stdlib.h> int main(){ char chave[]={'i','n','k','r','f','s','m','w','a','x','j','p','z', \ 'Q','G','T','Y','B','D','E','O','H','V','L','U','C'}; char palavra[50]; char cifrado[50]; int i=0; printf("digite uma palavra: "); scanf("%s", &palavra); while(palavra[i]!=0) cifrado[i] = chave[(int)(palavra[i++]-65)]; cifrado[i]=0; printf("cifrado: %s\n", cifrado); system("pause"); return 0;} Como seria a Decriptografia? Calcular a chave inversa: Chave Original: Chave Inversa:
9 Implementação da decriptografia #include <stdio.h> #include <stdlib.h> int main(){ char chavei[]={'i','r','z','s','t','e','o','v','a','k','c','x','g', \ 'B','U','L','N','D','F','P','Y','W','H','J','Q','M'}; char palavra[50]; char cifrado[50]; int i=0; printf("digite uma palavra: "); scanf("%s", &palavra); while(palavra[i]!=0) cifrado[i] = chavei[(int)(palavra[i++]-65)]; cifrado[i]=0; printf("cifrado: %s\n", cifrado); system("pause"); return 0;} Cifra de Vigenère Cada letra é representada por um inteiro; Chave é uma seqüência de N letras; Para cifrar, soma-se o valor da letra com o valor da chave para uma determinada posição; Cifra de Vigenère Exemplo: CARAGUATATUBA Chave: CRIPTO Exercício Exercício Gere as cifras para as palavras usando a chave: CHAVE CRIPTOGRAFIA UNIVEM CARAGUATATUBA Decifre a palavra: CSGJVKAMJ Soluções CRIPTOGRAFIA: EYIKXQNRVJKH UNIVEM: WUIQIO CARAGUATATUBA: EHRVKWHTVXWIA CSGJVKAMJ: ALGORITMO 53 Implementação Escreva um algoritmo para implementar a Cifra de Vigenère: Algoritmo Vigenere variavel palavra,cifrado,chave:texto; i, tam: inteiro; ler palavra; tam = tamanho da chave ler chave; para i de 1 até tamanho_palavra cifrado[i]=palavra[i]+chave[i mod tam]; mostrar cifrado; Fim. 54 9
10 Implementação em C #include <stdio.h> #include <stdlib.h> int main() { char palavra[40]; char cifrado[40]; int i=0; int tam=0; char chave[15]; printf("palavra: "); scanf("%s", &palavra); printf("chave: "); scanf("%s", &chave); while(chave[tam]!=0)tam++; while(palavra[i]!=0) { cifrado[i] = (((palavra[i]-65)+(chave[i%tam]-65))%26)+65; i++; } cifrado[i]=0; printf("cifrado: %s\n", cifrado); system("pause"); return 0; } 55 Como seria a decriptografia? #include <stdio.h> #include <stdlib.h> int main() { char palavra[40]; char cifrado[40]; int i=0; int tam=0; char chave[15]; printf("palavra: "); scanf("%s", &palavra); printf("chave: "); scanf("%s", &chave); while(chave[tam]!=0)tam++; while(palavra[i]!=0) { cifrado[i] = (((palavra[i]-65)-(chave[i%tam]-65)+26)%26)+65; i++; } cifrado[i]=0; printf("cifrado: %s\n", cifrado); system("pause"); return 0; } 56 Introdução a criptoanálise Exercício: Tente decifrar o texto a seguir: TFD F TIVJTZDVEKF URJ IVUVJ UV TFDGLKRUFIVJ V R TFEJVHLVEKV EVTVJJZURUV UV GIVJVIMRI RJ ZEWFIDRTFVJ HLV KIRWVXRD EVCRJ TIZFL JV LDR XIREUV MRIZVURUV UV RCXFIZKDFJ UV TIZGKFXIRWZR TFD TRIRTKVIZJKZTRJ V FSAVKZMFJ UZWVIVEKVJ KFIEREUF R VJTFCYR UF RCXFIZKDF ZUVRC LDR KRIVWR ERF DLZKF JZDGCVJ Agradecimentos Prof. Edward D. Moreno; Prof. Fábio D. Pereira; Ao pessoal dos laboratórios de pesquisa: Ana Paula M. Lima Karina F. Formigon Larissa Pavarini Paulo A. Nardi Pedro Bugatti Reinaldo C. Junior