Baixe o app para aproveitar ainda mais
Prévia do material em texto
Criptografia j o rge.p i res@my. istec .pt • 6 créditos • 48 horas Teórico-práticas • 12 horas Orientação tutorial 1 Programa – Descrição A unidade de Criptografia tem por objetivo transmitir os conhecimentos teórico-práticos necessários para o planeamento, implementação e manutenção da segurança em redes informáticas e sistemas computacionais. Serão abordados os necessários conceitos teóricos, as técnicas e padrões das organizações internacionais, bem como as tecnologias de implementação mais recentes, para implementação de sistemas informáticos seguros. No final desta unidade, o aluno estará em condições de encriptar e desencriptar ficheiros e escolher o sistema mais adequado às exigências e necessidades empresariais e organizacionais. JORGE LEIRIA PIRES 2 Programa – objetivos (1/2) •Compreender os conceitos fundamentais de criptografia e criptoanálise. •Conhecer os principais algoritmos criptográficos. •Distinguir entre criptografia simétrica e assimétrica. •Compreender o papel das entidades de certificação. •Compreender a noção de domínio como limite de aplicação de regras de segurança. •Compreender e implementar os diferentes tipos de autenticação de rede. JORGE LEIRIA PIRES 3 Programa – objetivos (2/2) •Compreender o sistema de certificados digitais. •Entender o conceito de assinatura digital. •Saber cifrar e decifrar utilizando diferentes algoritmos. •Saber fazer cálculos em espaços modulares. •Entender os conceitos de confidencialidade, integridade e não-repudiação. •Entender os princípios fundamentais das infra-estruturas de chave pública. JORGE LEIRIA PIRES 4 Programa – conteúdos programáticos (1/2) 1. Introdução à criptografia e à segurança da informação 2. Cifra de textos 3. Aritmética modular 4. Criptografia de chave pública e privada ◦ Criptografia de chave pública/privada/combinadas ◦ Chaves criptográficas e certificados JORGE LEIRIA PIRES 5 Programa – conteúdos programáticos (2/2) 5. Autenticação de utilizadores ◦ Autenticação de utilizador de computador local ◦ Autenticação de utilizador na rede (processos de autenticação) ◦ Autenticação de certificados 6. Protecção de dados armazenados ◦ Criptografia de ficheiros e directórios (pastas) ◦ O processo de criptografia / Considerações ◦ Codificação de directórios e ficheiros 7. Aplicações JORGE LEIRIA PIRES 6 Programa – material, metodologia e bibliografia Material • Caderno (indispensável) • Pen drive (desejável) Metodologia • Aulas teóricas • Aulas práticas • Avaliação • Exame Bibliografia • Understanding Cryptography: A Textbook for Students and Practitioners • Autores • Christof Paar • Jan Pelzl • Bart Preneel • Editora • Springer JORGE LEIRIA PIRES 7 Programa – bibliografia (continuação) Bibliografia complementar BOAVIDA, Fernando; BERNARDES, Mário; VAPI, Pedro; Administração de redes informáticas, FCA, Lisboa MONTEIRO, Edmundo; BOAVIDA, Fernando; Engenharia de redes informáticas, FCA, Lisboa STALLINGS, William; Cryptography and Network Security: Principles and Practice; Pearson SINGH, Simon; The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography; Anchor KAUFMAN, Perlman, Speciner; Network Security: Private Communication in a Public World; Prentice Hall ZÚQUETE, André; Segurança em Redes Informáticas; FCA, Lisboa FERGUSON, Niels, Bruce Schneier & Tadayoshi Kohno; Cryptography Engineering: Design Principles and Practical Applications; Wiley JORGE LEIRIA PIRES 8 Programa – recursos online Espaços modulares Professor: Fabio Henrique Teixeira de Souza Aulas 44 (este link), 45 e 46. https://youtu.be/WrTrMBJIET4?list=PLoHP-i4zwHrKoYMEZZ_QyfvJuMADs4Kpx Criptografia Professor: Christof Paar Aula 1 (este link). Curso completo com 24 aulas https://youtu.be/2aHkqB2-46k?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy JORGE LEIRIA PIRES 9 https://youtu.be/WrTrMBJIET4?list=PLoHP-i4zwHrKoYMEZZ_QyfvJuMADs4Kpx https://youtu.be/2aHkqB2-46k?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy Criptografia j o rge.p i res@my. istec .pt • 6 créditos • 48 horas Teórico-práticas • 12 horas Orientação tutorial 2 Segurança – Generalidades • Nada é 100% seguro • É necessário • Definir políticas de segurança • Criar mecanismos de segurança • Monitorizar sistemas • Auditar sistemas • Ao criar uma rede, reduz-se a segurança • Para a garantir dispomos de: • Ferramentas • Tecnologias • Ciência • … e muito trabalho JORGE LEIRIA PIRES 2 Segurança – Conceitos básicos PONTOS A TER EM CONSIDERAÇÃO • Autenticação • de máquinas • de utilizadores • Controlo de acessos • Físico • Gestão de chaves • Escolha de protocolos • Firewalls • VPNs • Confidencialidade e Integridade • Encriptação de dados • Encriptação de comunicações • Não repúdio • Obrigatoriedade de participar • Disponibilidade • Sistemas redundantes • Backups JORGE LEIRIA PIRES 3 Segurança – Aspectos abrangidos • Autenticação • Garantir que as entidades envolvidas são, de facto, quem afirmam ser • Controlo de acessos • Impedir o acesso não autorizado aos serviços e/ou à informação • Definir a quantidade de recursos utilizáveis (tecnicamente, não é uma questão de segurança, mas costuma-se enquadrar aqui) • Velocidades de Download/Upload • Quantidade de memória utilizável • Tempo de CPU • Nº de CPUs • Confidencialidade e Integridade • Limitar o acesso à informação apenas a quem está autorizado. Eventualmente, só a quem se autenticar • Não permitir que os dados sejam alterados por terceiros • Não repúdio • Funcionalidades que impedem que uma entidade se recuse a colaborar numa acção • Disponibilidade • Garantir que o sistema continua a funcionar, mesmo após a ocorrência de um incidente grave JORGE LEIRIA PIRES 4 Segurança – Mecanismos • Encriptação (cifrar) • Gerar informação ininteligível para terceiros • Utilização de algoritmos matemáticos associados a chaves (secretas ou não) • Permitir a recuperação dos dados originais • Desencriptação (decifrar) • Partindo da informação encriptada, voltar a obter os dados originais • Obriga ao conhecimento do algoritmo matemático e de uma chave que pode não ser secreta • Assinatura Digital • Conjunto de dados encriptados associados a um documento • A encriptação é feita usando mecanismos assimétricos • Garante • Integridade do documento • Autenticidade de quem o produziu • Ex: Facturas electrónicas com validade fiscal • O documento em si não é encriptado • Não é garantida a confidencialidade JORGE LEIRIA PIRES 5 Segurança – Mecanismos • Controlo de acesso • Algo que se sabe – Passwords • Algo que se tem – Smart cards • Algo que se é – Sistemas biométricos • As Firewalls • São mecanismos de controlo de acesso • Fáceis de implementar • Fáceis de gerir • Atualmente muito utilizados • Podem ser de software ou hardware • Qual o melhor sistema? • Os mais seguros, são indubitavelmente os sistemas biométricos. • As passwords são o método mais fraco, porque geralmente as pessoas tendem a usar algo de que se lembrem com facilidade, como por exemplo o nome do gato ou a data de nascimento… JORGE LEIRIA PIRES 6 Segurança – Classificação das ameaças • Acesso não autorizado • Obtém-se as credenciais de outra pessoa • Vendo o que ela escreve • Usando software instalado noutro PC (sniffer) • Ruptura de Serviços • Dispositivo não consegue responder aos pedidos • Física: destruição de cabos ou equipamentos • Lógica: Denial of Service (DoS) • Esgotar velocidade de resposta (CPU) • Esgotar largura de banda disponível • Esgotar ligações TCP • Ping bombing – dos primeiros ataques conhecidos; a vítima ficava sem capacidade de resposta face às inúmeras solicitações recebidas • Lógica: Distributed Denial of Service (DDoS) • Semelhante ao DoS, mas o ataque é feito a partir de múltiplos equipamentos, geralmente a partir de várias localizações JORGE LEIRIA PIRES 7 Segurança – Classificação das ameaças • Ataque por imitação • Fazer-se passar por outro • Spoofing: falseara origem de um pacote • DNS spoofing – interceptar a pergunta e responder ao pedido de resolução com um IP falso • ARP poisoning – alteração da cache ARP para as respostas, por exemplo alterando o MAC associado ao default gateway por forma a que a tentativa de saída da rede local seja feita através de outra máquina • Replay: Copiar a mensagem válida e enviá-la noutra altura • Malware • O dispositivo faz o que não era suposto fazer • Vírus • Worms • Cavalos de Tróia • Phishing • Aselhice • Provocado acidentalmente pelos utilizadores • Quando acontece, o principal responsável é o administrador de sistemas JORGE LEIRIA PIRES 8 Segurança – Análise de risco • A análise de risco consiste em • Identificar os bens a proteger • Identificar as ameaças • Calcular a probabilidade de sucesso de uma tentativa de ataque • Identificar os custos associados a um ataque, que se podem dividir em: • Custos imediatos • Custos de recuperação • Identificar custos de proteção • Têm de ser inferiores aos do ataque JORGE LEIRIA PIRES 9 Segurança – Grau de risco Como definir um “valor” numérico que mostre o grau de proteção/fragilidade do sistema? • Calculando o “potencial” de ataque, definimos a “probabilidade” de ser atacado • Não é um método rigoroso • Apela-se ao bom senso do classificador • Pode-se criar um conjunto de questões • Responde-se a cada questão usando uma escala de 1 a 5, onde • 1 significa nada provável • 5 significa quase certo JORGE LEIRIA PIRES 10 Segurança – Classificação do ataque Utilizando estas questões, quantifica-se o risco de ser atacado JORGE LEIRIA PIRES 11 Questão Pontos Acesso físico de público ao interior do edifício? Acesso aos recursos da organização por parte de estranhos? Suporte de serviços de comunicação para o público em geral (p.ex., ISP)? Alguém, para além da equipa de gestão, tem acesso a privilégios de administração? Existe partilha de contas entre utilizadores, ou contas genéricas (p.ex., contas guest)? A actividade da organização pode ser considerada controversa? A actividade da organização está relacionada com a área financeira? Existem servidores expostos à Internet? São usadas redes públicas para acesso a dados sensíveis (p.ex., RDIS, Internet)? A actividade da organização é altamente especializada? A organização teve recentemente um crescimento muito rápido? A organização tem tido muita visibilidade nos media? Os utilizadores são especialistas em informática? Segurança – Custo da segurança Para a determinação do custo da segurança, devem-se ter em atenção os seguintes pontos • Qual o nível de proteção necessário? • Utilizando a análise de risco já feita • Quais os equipamentos a adquirir? • Routers, firewalls, servidores, etc. • Qual o software a adquirir? • S.O., Firewall, antivírus, etc. • Quais os meios humanos necessários? • Gestores de sistemas, técnicos, peritos em segurança, etc. • Quais as implicações, na produtividade da organização, de implementar tudo isto? • É preciso parar os serviços? • Vamos aumentar/complicar o trabalho das pessoas? JORGE LEIRIA PIRES 12 Segurança – Políticas de segurança Estão definidas no RFC 2196 http://www.ietf.org/rfc/rfc2196.txt • Conjunto formal de regras a seguir pelos utilizadores dos recursos duma organização • Estipulam, com pormenor, as ações permitidas para usar os • Recursos • Sistemas de comunicações • Definem procedimentos de segurança • Especificam penalidades em caso de desrespeito • Determinam como/quando se fazem os processos de auditoria à segurança • Como tal, obrigam à manutenção de um histórico de eventos JORGE LEIRIA PIRES 13 Segurança – Características da Política de Segurança • Ser facilmente acessível a todos os membros da organização • Definir • os objetivos de segurança • objetivamente todos os aspectos abordados • a posição da organização em cada questão • as circunstâncias em que é aplicada cada uma das regras • os papéis dos diversos agentes da organização • o nível de privacidade garantido aos utilizadores • Identificar os contactos para esclarecimento de questões duvidosas • Justificar as opções tomadas • Definir o tratamento das situações omissas • Especificar as consequências do não cumprimento das regras definidas JORGE LEIRIA PIRES 14 Criptografia j o rge.p i res@my. istec .pt • 6 créditos • 48 horas Teórico-práticas • 12 horas Orientação tutorial 3 Criptografia – Codificação (César) Codificação • O que quererá dizer “L FPQBZ”? • E se vos disser que significa “O ISTEC”, conseguem descobrir o código? • Código César JORGE LEIRIA PIRES 2 Criptografia – Codificação (César - continuação) Codificação • O que quererá dizer “eds ylqgr”? • E se vos disser que significa “bem vindo”, conseguem descobrir o código? • Podemos complicar, se alterarmos a ordem das letras da parte cifrada JORGE LEIRIA PIRES 3 Criptografia – Codificação (Morse) • Código Morse JORGE LEIRIA PIRES 4 Criptografia – Codificação (Morse - continuação) • Código Morse JORGE LEIRIA PIRES 5 Criptografia – Codificação (Maçónico) • Código maçónico JORGE LEIRIA PIRES 6 Criptografia – Codificação (exercícios) Codifique • “Bem vindo” • em morse • usando cifra maçónica Descodifique batatinha JORGE LEIRIA PIRES 7 Criptografia j o rge.p i res@my. istec .pt • 6 créditos • 48 horas Teórico-práticas • 12 horas Orientação tutorial 4 Criptografia – Codificação (Afim) Código Afim (Affine cypher) • Tem em linha de conta a função afim y = (ax + b) • Função linear que não passa pela origem • É aplicada num espaço modular m (o alfabeto), tal como o código César • Logo, temos a fórmula para obter o resultado: y = (ax + b) mod m • x é o código da letra a cifrar • y é código da letra cifrada • Note-se que a chave passa a ser composta por duas variáveis (a e b) • Restrição: a tem de ser coprimo de m (e pertencer ao espaço modular) • Dois números são coprimos se o único (máx.) divisor comum é o 1 (exemplos??) • e.g. 20 e 21 JORGE LEIRIA PIRES 2 K(a,b) Criptografia – Codificação (Afim - exercícios) Código Afim (Affine cypher) • No espaço modular do alfabeto (m=26) quais os valores possíveis de a? • Resposta: 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, e 25 • Utilizando a chave K(a,b) => K(5,8) • Codifique a palavra: criptografia 1. Obtenha o código de cada letra (linear e simples: ‘a’=0, ‘b’=1… ‘z’=25) 2. Calcule (ax + b) 3. Calcule (ax + b) mod m 4. Obtenha o novo conjunto de letras (texto cifrado) JORGE LEIRIA PIRES 3 Criptografia j o rge.p i res@my. istec .pt • 6 créditos • 48 horas Teórico-práticas • 12 horas Orientação tutorial 4 Criptografia – Codificação (Afim) Código Afim (Affine cypher) • Tem em linha de conta a função afim y = (ax + b) • Função linear que não passa pela origem • É aplicada num espaço modular m (o alfabeto), tal como o código César • Logo, temos a fórmula para obter o resultado: y = (ax + b) mod m • x é o código da letra a cifrar • y é código da letra cifrada • Note-se que a chave passa a ser composta por duas variáveis (a e b) • Restrição: a tem de ser coprimo de m (e pertencer ao espaço modular) • Dois números são coprimos se o único (máx.) divisor comum é o 1 (exemplos??) • e.g. 20 e 21 JORGE LEIRIA PIRES 2 K(a,b) Criptografia – Codificação (Afim - exercícios) Código Afim (Affine cypher) • No espaço modular do alfabeto (m=26) quais os valores possíveis de a? • Resposta: 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, e 25 • Utilizando a chave K(a,b) => K(5,8) • Codifique a palavra: criptografia 1. Obtenha o código de cada letra (linear e simples: ‘a’=0, ‘b’=1… ‘z’=25) 2. Calcule (ax + b) 3. Calcule (ax + b) mod m 4. Obtenha o novo conjunto de letras (texto cifrado) JORGE LEIRIA PIRES 3 Criptografia – Descodificação (Afim) Descodificação de Código Afim (Affine decypher) • Calculemos a função inversa, para decifrar • Tem em linha de conta a função x = a-1(y - b) mod m • y é o código da letra encriptada • x é o código da letra desencriptada •a-1 é o inverso multiplicativo modular do a, da equação de encriptação • b é o mesmo valor da equação de encriptação • m é o espaço modular • Note-se que a chave de desencriptação é a mesma da encriptação • K(a,b) • mas precisamos de calcular a-1 JORGE LEIRIA PIRES 4 Criptografia – Álgebra modular (inverso multiplicativo) • Um espaço modular é um conjunto de valores finito • Num espaço modular podemos fazer operações aritméticas • Num espaço modular m, só existem m valores (números compreendidos entre zero e m-1) • e.g. se m=15, só existem números entre 0 e 14 • Na álgebra tradicional, inverso multiplicativo de a é um número que, multiplicado por a, dá como resultado 1 • Exemplo: se a=4, o seu inverso multiplicativo será 𝟏 𝟒 , porque 4 x 1 4 = 1 • O oposto é verdadeiro: o inverso multiplicativo de 𝟏 𝟒 , é 4 JORGE LEIRIA PIRES 5 Criptografia – Álgebra modular (inverso multiplicativo – cont.) • O conceito num sistema modular é idêntico, mas o que nos interessa é o resto da divisão inteira já que o conjunto de valores possíveis é finito (espaço modular) • Desta forma, para determinar a resposta é sempre necessário saber qual o espaço modular (quantos elementos tem) • Pode-se fazer uma tabela multiplicativa modular JORGE LEIRIA PIRES 6 Exemplo para o espaço modular 5 O conteúdo da tabela são os restos da divisão por 5 As situações assinaladas ( 1 ) permitem determinar que números têm inverso multiplicativo em módulo 5 5 0 1 2 3 4 0 0 0 0 0 0 1 0 1 2 3 4 2 0 2 4 1 3 3 0 3 1 4 2 4 0 4 3 2 1 Criptografia – Álgebra modular (inverso multiplicativo – cont.) • Consideremos o espaço modular m = 7 1. Faça a tabela multiplicativa modular (manualmente, sem usar o Excel) 2. Determine que valores têm inverso multiplicativo (e quais os inversos) JORGE LEIRIA PIRES 7 7 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 1 0 1 2 3 4 5 6 2 0 2 4 6 1 3 5 3 0 3 6 2 5 1 4 4 0 4 1 5 2 6 3 5 0 5 3 1 6 4 2 6 0 6 5 4 3 2 1 Neste caso, todos os valores têm inverso multiplicativo O zero é um caso à parte O 1 e o último número têm sempre! O 2 tem o 4 (e vice-versa) O 3 tem o 5 (e vice-versa) Curioso… 1, 2, 3, 4, 5 e 6 são coprimos de 7 Criptografia – Álgebra modular (inverso multiplicativo – cont.) • Consideremos o espaço modular m = 26 (o alfabeto) 1. No Excel, faça a tabela multiplicativa modular 2. Determine que valores têm inverso multiplicativo (e quais os inversos) • Lembra-se dos valores possíveis para a na cifra Afim? • Tinham de ser coprimos de m • Compare com os resultados obtidos • O Inverso Multiplicativo Modular é um conceito fundamental em criptografia • Sem ele não conseguimos calcular a chave para desencriptar JORGE LEIRIA PIRES 8 Criptografia – Descodificação (Afim - exercícios) Descodificação de Código Afim (Affine decypher) • Usando a mesma chave K(5,8) no espaço m=26 • Descodifique a palavra: filijpi uepfpcui 1. Obtenha o código de cada letra (linear e simples: ‘a’=0, ‘b’=1… ‘z’=25) 2. Calcule a-1 3. Calcule a-1(y - b) 4. Calcule [a-1(y - b)] mod m 5. Obtenha o novo conjunto de letras (texto decifrado) JORGE LEIRIA PIRES 9 Criptografia – Descodificação (Afim - exercícios) • Faça uma folha de Excel que cifre e decifre (sabendo a, b, m e a-1) JORGE LEIRIA PIRES 10 Criptografia j o rge.p i res@my. istec .pt • 6 créditos • 48 horas Teórico-práticas • 12 horas Orientação tutorial 5 Criptografia – Introdução • Objetivo • Tornar as comunicações seguras • Garantir 3 coisas • Privacidade • Integridade • Autenticidade • Baseia-se na utilização de • Chaves secretas • Mecanismos de encriptação • Existem dois métodos • Chaves simétricas • Chaves assimétricas JORGE LEIRIA PIRES 2 Encriptar Transmitir Desencriptar Emissor Recetor M SG Criptografia – Introdução • A autenticidade é importante porque • Permite que o emissor saiba para quem está a enviar a mensagem • Garante ao receptor quem foi o emissor • Assegura o não-repúdio por parte do emissor (não pode negar que enviou) • Atenção que a garantia de autenticidade não é obrigatória JORGE LEIRIA PIRES 3 Criptografia – Chaves simétricas • Só existe uma chave • É conhecida por ambas as partes • Existe um algoritmo de encriptação (DES, 3DES, AES, RC4, …) • Pode ser implementado em hardware • O Emissor encripta a mensagem com a chave • O Receptor desencripta a mensagem com a mesma chave JORGE LEIRIA PIRES 4 Criptografia – Chaves simétricas JORGE LEIRIA PIRES 5 texto texto • Qual será uma fragilidade do sistema? • A própria chave tem de ser transmitida (ou enviada…) http://pplware.sapo.pt/wp-content/uploads/2010/12/crypto_022.jpg http://pplware.sapo.pt/wp-content/uploads/2010/12/crypto_022.jpg Criptografia – Tratamento da mensagem • A mensagem é partida em blocos (como no TCP…) • Os blocos são combinados e encriptados • Existem vários modos para fazer estas 3 ações • ECB – Electronic Code Book • CBC – Cipher Block Chaining • CFB – Cipher Feedback • OFB – Output Feedback • CTR – Counter • Só depois a mensagem é enviada JORGE LEIRIA PIRES 6 • Não é recomendado para textos longos (ou imagens) Criptografia – ECB – Electronic Code Book • Cada bloco é codificado independentemente • Blocos de texto iguais têm encriptações iguais • Não há encadeamento logo, não há propagação de erro • Não é imune a ataques de reenvio • Uma cópia da mensagem pode ser enviada inúmeras vezes • e se interceptássemos uma ordem de transferência do banco? JORGE LEIRIA PIRES 7 Criptografia – CBC – Cipher Block Chaining • Precisa de um vector de iniciação • O vector deve ser gerado aleatoriamente para cada mensagem • Cada bloco é codificado tendo em conta o resultado do anterior • Blocos de texto iguais têm encriptações diferentes • Para o 1º bloco ser diferente, muda-se o vetor de iniciação (IV) • Como há encadeamento, há propagação de erro • O vector de iniciação não precisa de ser secreto, mas tem de se garantir a sua integridade JORGE LEIRIA PIRES 8 Criptografia – CBC – Cipher Block Chaining JORGE LEIRIA PIRES 9 XOR Criptografia – ECB vs CBC JORGE LEIRIA PIRES 10 Original ECB CBC Criptografia – CFB – Cipher Feedback • Precisa de um vector de iniciação • O vector deve ser gerado aleatoriamente para cada mensagem • Cada bloco é codificado tendo em conta o resultado do anterior • Blocos de texto iguais têm encriptações diferentes • Para o 1º bloco ser diferente, muda-se o vector de iniciação (IV) • Como há encadeamento, há propagação de erro • O vector de iniciação não precisa de ser secreto, mas tem de se garantir a sua integridade JORGE LEIRIA PIRES 11 Criptografia – CFB – Cipher Feedback JORGE LEIRIA PIRES 12 Criptografia – OFB – Output Feedback • Precisa de um vector de iniciação • O vector deve ser gerado aleatoriamente para cada mensagem • Não há codificação em cadeia • Blocos de texto iguais têm encriptações diferentes • Para o 1º bloco ser diferente, muda-se o vector de iniciação (IV) • Como não há encadeamento, não há propagação de erro • O vector de iniciação não precisa de ser secreto, mas tem de se garantir a sua integridade JORGE LEIRIA PIRES 13 Criptografia – OFB – Output Feedback JORGE LEIRIA PIRES 14 Criptografia – CTR – Counter • Precisa de um número aleatório para iniciar o contador • O número deve ser gerado novamente ao usar a mesma chave • Não há codificação em cadeia • Blocos de texto iguais têm encriptações diferentes • Para o 1º bloco ser diferente, muda-se o número inicial • “Nonce” é a abreviatura de “number once”, ou seja, um número aleatório que só se usa uma vez; para garantir isso, normalmente o número é gerado tendo em conta a data/hora atual do sistema JORGE LEIRIA PIRES 15 Criptografia – CTR – Counter JORGE LEIRIA PIRES 16 Criptografia – Quantos bits usar • A chave pode ser descoberta • Quantas mais existirem, mais difícil é descobrir JORGE LEIRIA PIRES 17 Criptografia – Quantos bits usar Para chaves simétricas • 64 bits – consideradainsegura • Horas ou poucos dias para descobrir • 112 a 128 bits – segura por algumas décadas • Será insegura caso apareçam os computadores quantum • 256 bits – segura por muitas décadas • Possivelmente segura, mesmo com os computadores quantum JORGE LEIRIA PIRES 18 Criptografia – Chaves assimétricas • Existem duas chaves: pública e privada • A chaves estão relacionadas por um algoritmo matemático • Existe um algoritmo de encriptação (RSA, DSA, …) • Quando se quer enviar um documento encriptado • O receptor conhece ambas as chaves • O receptor distribui a chave pública livremente JORGE LEIRIA PIRES 19 Criptografia – Chaves assimétricas (exemplo) • O emissor encripta a mensagem com a chave pública do receptor • O receptor desencripta a mensagem com a chave privada JORGE LEIRIA PIRES 20 texto texto http://pplware.sapo.pt/wp-content/uploads/2010/12/crypto_03.jpg http://pplware.sapo.pt/wp-content/uploads/2010/12/crypto_03.jpg Criptografia – Quantos bits usar Comparando chaves simétricas e chaves assimétricas Embora a ideia generalizada seja “quanto mais bits, melhor”, Note-se que uma chave simétrica de 80 bits é tão segura como uma chave assimétrica de 1024 bits JORGE LEIRIA PIRES 21 Criptografia – Que chave usar • Privacidade – Encriptar com chave pública (do outro) • Identidade – Encriptar com chave privada • Integridade – Par de chaves Pública/Privada • Método a ser revisto mais à frente com a utilização do hash JORGE LEIRIA PIRES 22 Criptografia j o rge.p i res@my. istec .pt • 6 créditos • 48 horas Teórico-práticas • 12 horas Orientação tutorial 6 Criptografia – Troca de chaves (Key Exchange) • Como passar a chave de um lado para o outro? • Existem vários métodos • Vamos começar com o Diffie-Hellman (DH) JORGE LEIRIA PIRES 2 Criptografia – Diffie-Hellman Ambos os lados acordam 2 valores G e n (n tem de ser primo) • Gera um número aleatório (x) – secreto! • Calcula A de acordo com a expressão A = Gx mod n • Envia A para o receptor • Calcula a chave K1 K1 = Bx mod n • Gera um número aleatório (y) – secreto! • Calcula B de acordo com a expressão B = Gy mod n • Envia B para o emissor • Calcula a chave K2 K2 = Ay mod n JORGE LEIRIA PIRES 3 Emissor Receptor Criptografia – Diffie-Hellman (exercício prático) • Juntem-se aos pares para fazer 2 ou 3 testes • Lembrem-se que • Precisam de combinar inicialmente 2 números (um é primo!!) • Os aleatórios são… quaisquer • Só passam ao colega o resultado do primeiro cálculo • Cada um faz as suas contas • No final, comparem os resultados K1 e K2 JORGE LEIRIA PIRES 4 Criptografia – Diffie-Hellman (exercícios) Ambos os lados acordam 2 valores 5 e 7 (n tem de ser primo) • Gera um número aleatório (foi 3) • Calcula A e K1 A = 53 mod 7 = 6 K1 = 23 mod 7 = 1 Surpresa!!! • Gera um número aleatório (foi 4) • Calcula B e K2 B = 54 mod 7 = 2 K2 = 64 mod 7 = 1 As chaves são iguais!!!!!! JORGE LEIRIA PIRES 5 Emissor Receptor Criptografia – Diffie-Hellman (fragilidades) • E se alguém se interpuser entre as duas partes durante a negociação? • Vai “fingir” que é a outra parte • Para o emissor, finge de receptor • Para o receptor, finge de emissor • Na realidade, negoceia uma chave com cada um deles • Nenhum dos dois percebe que não está a falar com o outro! • A este ataque chama-se “Man-in-the-Middle Attack” JORGE LEIRIA PIRES 6 Criptografia j o rge.p i res@my. istec .pt • 6 créditos • 48 horas Teórico-práticas • 12 horas Orientação tutorial 7 Criptografia – Chaves assimétricas • Existem duas chaves: pública e privada • A chaves estão relacionadas por um algoritmo matemático • Existe um algoritmo de encriptação (RSA, DSA, …) • Quando se quer enviar um documento encriptado • O receptor conhece ambas as chaves • O receptor distribui a chave pública livremente JORGE LEIRIA PIRES 2 Criptografia – Chaves assimétricas (exemplo) • O emissor encripta a mensagem com a chave pública do receptor • O receptor desencripta a mensagem com a chave privada JORGE LEIRIA PIRES 3 texto texto http://pplware.sapo.pt/wp-content/uploads/2010/12/crypto_03.jpg http://pplware.sapo.pt/wp-content/uploads/2010/12/crypto_03.jpg Criptografia – Quantos bits usar Comparando chaves simétricas e chaves assimétricas Embora a ideia generalizada seja “quanto mais bits, melhor”, Note-se que uma chave simétrica de 80 bits é tão segura como uma chave assimétrica de 1024 bits JORGE LEIRIA PIRES 4 Criptografia – Que chave usar • Privacidade – Encriptar com chave pública (do outro) • Identidade – Encriptar com chave privada • Integridade – Par de chaves Pública/Privada • Método a ser revisto mais à frente com a utilização do hash JORGE LEIRIA PIRES 5 Criptografia – Usando uma chave pública • Resolve o problema do Man-in-the-Middle Attack • É feito com base numa função de “sentido único” • O primeiro método foi descoberto em 1977 por um grupo de 3 pessoas • Ron Rivest • Adi Shamir • Leonard Aldemon JORGE LEIRIA PIRES 6 Algoritmo RSA Da esquerda para a direita: Shamir, Rivest, Aldemon Criptografia – Algoritmo RSA (gerar a chave) 1. Escolhem-se 2 números primos (p e q) • Teoricamente, para uma chave de 2048 bits, cada número teria 617 dígitos • Isto permitir-nos-ia ter uma chave segura até 2030 2. Calcula-se n = p x q, que indica o espaço modular 3. Calcula-se (Fi) 𝝋(𝒏) = (p-1)x(q-1) • Função totiente de Euler que indica a quantidade de co-primos de n menores que o próprio n 4. Calcula-se o expoente público e • tem de ser co-primo de 𝝋 e pertencer ao intervalo ]1 , 𝝋-1] • 2 números são co-primos quando o MDC entre eles é 1 • Isto pode ser feito por tentativas, mas e nunca será um divisor de 𝝋 5. A chave pública é dada por Kpu = (n, e) JORGE LEIRIA PIRES 7 Só porque eles são primos Criptografia – Algoritmo RSA (gerar a chave) 1. Para a chave privada, calcula-se d de tal forma que ele é o inverso multiplicativo de e em mod 𝝋(𝒏) d = e(-1) mod [(p-1)x(q-1)] 2. A chave privada é dada por Kpr = (n, d) • Estes cálculos implicam o conhecimento de conceitos matemáticos de • Aritmética modular • Algoritmo de Euclides estendido JORGE LEIRIA PIRES 8 Criptografia – RSA (cifrar e decifrar) Para cada letra da frase a encriptar faz-se o seguinte • Obtém-se o código numérico da letra (chamemos-lhe m) • Aplica-se a fórmula me mod n • O conjunto dos números obtidos é a frase cifrada Para cada letra da frase a desencriptar faz-se o seguinte • Parte-se do número cifrado (chamemos-lhe c) • Aplica-se a fórmula cd mod n • O valor obtido é o código numérico da letra JORGE LEIRIA PIRES 9 Kpu = (n,e) Kpr = (n,d) Criptografia – RSA (cifrar e decifrar mensagens) Para cada mensagem a encriptar faz-se o seguinte • Obtém-se o código numérico de cada letra (com o mesmo número de dígitos) • Juntam-se os códigos em blocos (m), de forma a que cada bloco tem de ser inferior a n • A cada bloco aplica-se a fórmula me mod n • O conjunto dos números obtidos é o texto cifrado Para desencriptar a mensagem faz-se o seguinte • Parte-se de cada número cifrado (chamemos-lhe c) • Aplica-se a fórmula cd mod n • Separam-se em blocos (processo inverso ao da encriptação) • Para cada código numérico obtém-se a respectiva letra JORGE LEIRIA PIRES 10 Kpu = (n,e) Kpr = (n,d) Criptografia – RSA (conclusões) O algoritmo RSA • É um sistema de chave pública e chave privada (assimétricas) • A chave pública (e) pode ser um número relativamente pequeno (e.g. 3) o que permite uma grande velocidade na encriptação • A chave privada (d) deve ser um número com uma dimensão similar ao módulo (n) o que torna a desencriptação lenta (mais difícil de atacar por tentativas – brute force) • Actualmente uma chave de 1024 bits não consegue ser descoberta em tempo útil, mas prevê-se que a sua duração seja de apenas 10 a 15 anos • Deve usar-se uma chave de 2048 ou 4096 bits • É um sistema lento, quando comparado com a encriptação simétrica, pelo que se usa tipicamentepara encriptar poucos dados (chaves e assinaturas digitais) JORGE LEIRIA PIRES 11 Criptografia – RSA (exercícios) Encriptar a frase (letra a letra) Bom dia • Usar código ASCII para as letras (Google it!) • Sabe-se que • Kpu = (697, 13) • Escrever o conjunto de números resultante JORGE LEIRIA PIRES 12 Nota: para os curiosos Kpr= (697, 197) 291 110 465 155 461 318 252 https://www.cs.drexel.edu/~introcs/Fa11/notes/10.1_Cryptography/RSA_Express_EncryptDecrypt.html https://www.cs.drexel.edu/~introcs/Fa11/notes/10.1_Cryptography/RSAWorksheetv4d.html http://nmichaels.org/rsa.py Criptografia – RSA (exercícios) Desencriptar o texto 015 692 391 501 421 176 • Sabe-se que • Kpr = (697, 197) • Usou-se código simples (a=1, b=2, …) para as letras • Não tem k, w nem y • Escrever o texto resultante JORGE LEIRIA PIRES 13 Nota: para os curiosos Kpu= (697,13) Criptografia j o rge.p i res@my. istec .pt • 6 créditos • 48 horas Teórico-práticas • 12 horas Orientação tutorial 8 Criptografia – Codificação Base64 • Sistema usado para transmissão de dados binários em formato de texto • Base64 significa que o sistema numérico tem 64 símbolos diferentes • Valores entre ZERO e 63 • Visto em binário, cada símbolo são 6 bits • Usam-se os símbolos [A..Z], [a..z], [0..9], ‘+’ e ‘/’, por esta ordem JORGE LEIRIA PIRES 2 32 16 8 4 2 1 Criptografia – Codificação Base64 (continuação) • Para codificar uma palavra ASCII • Obtemos o código de cada letra (tabela ASCII) • Passamos esses valores para binário, usando sempre 8 bits para cada um • Escrevemos o resultado em sequência, com se fosse apenas um número • Dividimos em grupos de 6, a partir da esquerda • Para cada novo grupo obtemos o símbolo na base64 -> [A..Z][a..z][0..9][+/] • Codifique “Criptografia” em Base64 JORGE LEIRIA PIRES 3 Q3JpcHRvZ3JhZmlh Criptografia – Codificação Base64 (continuação) • No exemplo anterior, os grupos de 6 bits coincidiram com o total de bits da palavra a codificar • E se pretendêssemos codificar apenas “Criptog”? • Iriam “faltar” bits para o último grupo de 6 bits • Note que 3 é o menor número de caracteres ASCII (8 bits cada) cujo total é um múltiplo de 6 (nº de bits de um caracter Base64) JORGE LEIRIA PIRES 4 Criptografia – Codificação Base64 (continuação) • Se pretendermos codificar 2 caracteres ASCII vai faltar 1 caracter para perfazer os 3 • Nesta situação, preenchemos os restantes bits com ZERO • Como falta 1 caracter no original, acrescentamos 1 vez o símbolo “=“ no texto codificado JORGE LEIRIA PIRES 5 Criptografia – Codificação Base64 (continuação) • Se pretendermos codificar apenas 1 caracter ASCII vão faltar 2 caracteres para perfazer os 3 • Nesta situação, preenchemos os restantes bits com ZERO • Como faltam 2 caracteres no original, acrescentamos 2 vezes o símbolo “=“ no texto codificado JORGE LEIRIA PIRES 6 Criptografia – Codificação Base64 (continuação) • Para descodificar uma palavra apresentada em Base64 • Obtemos o código de cada letra (tabela Base64), ignorando o(s) “=“ • Passamos esses valores para binário, usando sempre 6 bits para cada um • Escrevemos o resultado em sequência, como se fosse apenas um número • Por cada “=”, apagamos 2 zeros da direita • Dividimos em grupos de 8 • Convertemos cada grupo para um valor • Cada valor origina um símbolo ASCII • Descodifique “VmlzdGE=” para ASCII JORGE LEIRIA PIRES 7 Vista Criptografia j o rge.p i res@my. istec .pt • 6 créditos • 48 horas Teórico-práticas • 12 horas Orientação tutorial 8 Criptografia – Codificação Base64 • Sistema usado para transmissão de dados binários em formato de texto • Base64 significa que o sistema numérico tem 64 símbolos diferentes • Valores entre ZERO e 63 • Visto em binário, cada símbolo são 6 bits • Usam-se os símbolos [A..Z], [a..z], [0..9], ‘+’ e ‘/’, por esta ordem JORGE LEIRIA PIRES 2 32 16 8 4 2 1 Criptografia – Codificação Base64 (continuação) • Para codificar uma palavra ASCII • Obtemos o código de cada letra (tabela ASCII) • Passamos esses valores para binário, usando sempre 8 bits para cada um • Escrevemos o resultado em sequência, com se fosse apenas um número • Dividimos em grupos de 6, a partir da esquerda • Para cada novo grupo obtemos o símbolo na base64 -> [A..Z][a..z][0..9][+/] • Codifique “Criptografia” em Base64 JORGE LEIRIA PIRES 3 Q3JpcHRvZ3JhZmlh Criptografia – Codificação Base64 (continuação) • No exemplo anterior, os grupos de 6 bits coincidiram com o total de bits da palavra a codificar • E se pretendêssemos codificar apenas “Criptog”? • Iriam “faltar” bits para o último grupo de 6 bits • Note que 3 é o menor número de caracteres ASCII (8 bits cada) cujo total é um múltiplo de 6 (nº de bits de um caracter Base64) JORGE LEIRIA PIRES 4 Criptografia – Codificação Base64 (continuação) • Se pretendermos codificar 2 caracteres ASCII vai faltar 1 caracter para perfazer os 3 • Nesta situação, preenchemos os restantes bits com ZERO • Como falta 1 caracter no original, acrescentamos 1 vez o símbolo “=“ no texto codificado JORGE LEIRIA PIRES 5 Criptografia – Codificação Base64 (continuação) • Se pretendermos codificar apenas 1 caracter ASCII vão faltar 2 caracteres para perfazer os 3 • Nesta situação, preenchemos os restantes bits com ZERO • Como faltam 2 caracteres no original, acrescentamos 2 vezes o símbolo “=“ no texto codificado JORGE LEIRIA PIRES 6 Criptografia – Codificação Base64 (continuação) • Para descodificar uma palavra apresentada em Base64 • Obtemos o código de cada letra (tabela Base64), ignorando o(s) “=“ • Passamos esses valores para binário, usando sempre 6 bits para cada um • Escrevemos o resultado em sequência, com se fosse apenas um número • Por cada “=”, apagamos 2 zeros da direita • Dividimos em grupos de 8 • Convertemos cada grupo para um valor • Cada valor origina um símbolo ASCII • Descodifique “VmlzdGE=” para ASCII JORGE LEIRIA PIRES 7 Vista Criptografia – Funções de HASH • Existem várias funções de Hash • As mais usadas são: MD5 e SHA (que tem várias versões) • Uma função de Hash serve para gerar uma assinatura única de um dado texto • É uma função de “sentido único”, ou seja, a partir do código gerado não é possível reconstruir a mensagem original JORGE LEIRIA PIRES 8 Message Digest 5 Secure Hash Algorithm Criptografia – Funções de HASH • Então para que se usa? • Para guardar passwords numa base de dados (BD) • Mesmo acedendo à BD, não se consegue saber qual a password • Para criar uma assinatura digital • Como se utiliza? • Quando o utilizador escreve a password, gera-se o Hash correspondente • Seguidamente compara-se com o que está na BD Et voilà! JORGE LEIRIA PIRES 9 Criptografia – Funções de HASH • Qual será a técnica para descobrir a password? • Tenta-se uma palavra de cada vez e compara-se o hash resultante • E que palavras tentar? JORGE LEIRIA PIRES 10 Criptografia – Passwords do Windows Nomes de utilizador e passwords (onde se guardam?) • Computador inserido num domínio -> AD • Computador sem pertencer a um domínio -> SAM JORGE LEIRIA PIRES 11 Criptografia – Passwords do Windows Nomes de utilizador e passwords (onde se guardam?) • O ficheiro da SAM está… • Não se consegue abrir se o Windows estiver a correr • Arranca-se por outro sistema (Pen, CD, …) e já se pode copiar JORGE LEIRIA PIRES 12 Criptografia – Identificadores no Windows Security Identifier - SID • Cada utilizador tem um identificador único que não muda mesmo que, por exemplo, se altere o nome • É com base neste identificador que se validam os privilégios e acessos JORGE LEIRIA PIRES 13 Criptografia – Identificadores no Windows User Security Identifier – User SID • Para saber os utilizadores e grupos existentes num PC wmic useraccount get name,sid JORGE LEIRIA PIRES 14 Nota: WMIC - Windows Management Instrumentation Command-line Criptografia – Exemplos de utilização do wmic Obter o modelo do PC (útil para portáteis)wmic csproduct get name Obter o número de série a partir da BIOS (útil para portáteis) wmic bios get serialnumber JORGE LEIRIA PIRES 15 Experimente: wmic -? Criptografia j o rge.p i res@my. istec .pt • 6 créditos • 48 horas Teórico-práticas • 12 horas Orientação tutorial 9 Criptografia – Linha de comando (1) Nome completo de um ficheiro <drive>:<caminho>\<nome>.<ext> . representa a pasta corrente .. é a referência para a pasta anterior Quando uma pasta tem espaços no nome, tem de ficar entre aspas “” Se começar a escrever o nome da pasta e carregar em Tab, o Windows completa a informação. Caso existam várias, carregar novamente em Tab para apresentar a seguinte. JORGE LEIRIA PIRES 2 Generalidades Criptografia – Linha de comando (2) DIRETORIAS (OU PASTAS) • DIR – mostra o conteúdo da pasta • CD xxx – change directory • Muda dir. corrente para a pasta xxx • Vazio, mostra a pasta corrente • MD xxx – make directory • Cria a pasta xxx • RD xxx – remove directory • Apaga a pasta xxx • CLS – clear screen • PROMPT – altera o prompt • prompt $g • prompt $t$g • prompt $d$g • prompt $p$g • prompt Yes, master… • SET – ver/definir variáveis • set • set x1=Batata (sem espaços) • set x1= (apaga a variável) JORGE LEIRIA PIRES 3 Criptografia – Linha de comando (3) FICHEIROS • TYPE xxx.yyy – mostra conteúdo • COPY <origem> <destino> – copia • DEL x.y – apaga ficheiro • REN <antigo> <novo> – muda nome ? – substitui 1 caracter * – substitui zero ou mais caracteres JORGE LEIRIA PIRES 4 TOKENS OUTROS… | – pipe – passa a informação para o próximo… > – redirecionar saída (cria fich.; se existe, apaga-o) >> – redirecionar saída (cria ou acrescenta ficheiro) < – redirecionar como entrada con – dispositivo de entrada/saída ^z – CTRL+Z – caracter de fim de ficheiro ^c – CTRL+C – abortar comando em execução MAIS COMANDOS • ECHO teste – escreve teste no ecrã • TREE – mostra a árvore de directorias Criptografia – Linha de comando (exercícios 1) Todos os exercícios são para fazer sem recurso a ambiente gráfico 1. Passe para a pasta “Documentos” a) Crie uma pasta “Lixo” b) Passe para dentro dessa pasta 2. Altere o prompt do sistema para Comando> 3. Crie um ficheiro “Teste.c” com o texto “Aula de Cripto” lá dentro 4. Experimente o comando “time” 5. Experimente o comando “date” 6. Mostre o conteúdo da pasta actual 7. Crie a seguinte estrutura (use o comando “tree” para ir vendo o resultado) JORGE LEIRIA PIRES 5 Criptografia – Linha de comando (exercícios 2) Todos os exercícios são para fazer sem recurso a ambiente gráfico 8. Copie o ficheiro Teste.c para a pasta D21 9. Mostre no ecrã o conteúdo do ficheiro Teste.c 10. Passe para a pasta d222 11. Confirme que d222 é a pasta corrente 12. Sem sair de d222, use o tree para ver a estrutura completa 13. Sem sair de d222, copie para lá um dos ficheiros Teste.c 14. Copie para D3 o ficheiro de modo a que ele fique com o nome T.c 15. Apague todos os ficheiros e pastas criados (CUIDADO) 16. Mude o prompt de forma a mostrar a data e hora correntes, seguidas do sinal “>” Parabéns! Está apto para usar o openssl na aula seguinte JORGE LEIRIA PIRES 6 Criptografia – Utilitário Openssl Exercícios • Criar uma pasta com o nome testes • Copiar para lá o HashGenerator.exe • Criar um ficheiro de texto de nome myfile.t com “Bom dia” • Abrir uma sessão de MSDOS e passar para dentro da pasta testes • Gerar vários hash do ficheiro myfile.t usando 1. MD4 2. MD5 3. SHA1 4. SHA256 • Comparar com o que é obtido pelo HashGenerator.exe • Com o openssl e o echo, gerar um hash MD5 para a palavra “password” • Comparar com o que é obtido pelo HashGenerator.exe JORGE LEIRIA PIRES 3 Criptografia – Utilitário Openssl Fazer tudo sem sair da linha de comando • Criar um ficheiro de texto (f1.t) com o seu nome dentro • Criar um hash de f1.t com MD5 e redirecionar para outro ficheiro (f2.t) • Gerar uma chave privada de 512 bits com RSA, para o ficheiro chpr.k • Ver o ficheiro chpr.k gerado • Gerar a correspondente chave pública, para o ficheiro chpu.k • Ver o ficheiro chpu.k gerado JORGE LEIRIA PIRES 4 Criptografia j o rge.p i res@my. istec .pt • 6 créditos • 48 horas Teórico-práticas • 12 horas Orientação tutorial 10 Criptografia – Linha de comando MSDOS • Forma mais eficiente de resolver os exercícios do MSDOS • Help do openssl • Linha de comandos • Site • Editor hexadecimal JORGE LEIRIA PIRES 2 Criptografia – Utilitário Openssl Exercícios • Criar uma pasta com o nome testes • Copiar para lá o HashGenerator.exe • Criar um ficheiro de texto de nome myfile.t com “Bom dia” • Abrir uma sessão de MSDOS e passar para dentro da pasta testes • Gerar vários hash do ficheiro myfile.t usando 1. MD4 2. MD5 3. SHA1 4. SHA256 • Comparar com o que é obtido pelo HashGenerator.exe • Com o openssl e o echo, gerar um hash MD5 para a palavra “password” • Comparar com o que é obtido pelo HashGenerator.exe JORGE LEIRIA PIRES 3 Criptografia – Utilitário Openssl Fazer tudo sem sair da linha de comando • Criar um ficheiro de texto (f1.t) com o seu nome dentro • Criar um hash de f1.t com MD5 e redirecionar para outro ficheiro (f2.t) • Gerar uma chave privada de 512 bits com RSA, para o ficheiro chpr.k • Ver o ficheiro chpr.k gerado • Gerar a correspondente chave pública, para o ficheiro chpu.k • Ver o ficheiro chpu.k gerado JORGE LEIRIA PIRES 4 Criptografia – Utilitário Openssl Soluções: 1. openssl md4 myfile.t 2. openssl md5 myfile.t 3. openssl sha1 myfile.t 4. openssl sha256 myfile.t • Comparar com o que é obtido pelo HashGenerator.exe • Com o openssl e o echo, gerar um hash MD5 para a palavra “password” echo password| openssl md5 • Porque não fica igual ao hash criado a partir dum ficheiro? (usar editor hexadecimal para ver as diferenças) O pipe tem de estar colado ao "d" final de "password". No HashGenerator, é preciso dar um "Enter" no final da palavra "password“ porque o comando "echo" coloca automaticamente o fim de linha (CR e LF) JORGE LEIRIA PIRES 5 Criptografia – Utilitário Openssl Soluções: • Criar um ficheiro… copy con f1.t (e depois) jorge^z • Criar um hash… openssl md5 f1.t > f2.t • Gerar uma chave privada de 512 bits com RSA openssl genrsa -out chpr.k 512 type chpr.k • Gerar a correspondente chave pública openssl rsa -in chpr.k -out chpu.k -pubout type chpu.k • NOTA: experimente openssl rsa -in chpr.k -text JORGE LEIRIA PIRES 6 Criptografia – Usando Hash e chaves assimétricas Como garantir a autenticidade de uma mensagem? Do lado do emissor 1. Emissor usa hash para gerar uma assinatura digital da MSG 2. Encripta a assinatura com a sua chave privada (serve para se autenticar!) 3. Junta MSG e assinatura encriptada num ficheiro 4. Encripta o ficheiro com a chave pública do receptor 5. Envia o resultado JORGE LEIRIA PIRES 7 Criptografia – Usando Hash e chaves assimétricas Como garantir a autenticidade de uma mensagem? Do lado do receptor 1. Recebe o ficheiro 2. Desencripta com a sua chave privada 3. Separa a mensagem do hash 4. Desencripta o hash com a chave pública do emissor 5. Gera um novo hash (usa a mensagem e o mesmo método de hash do emissor) 6. Compara com o hash recebido JORGE LEIRIA PIRES 8 Criptografia j o rge.p i res@my. istec .pt • 6 créditos • 48 horas Teórico-práticas • 12 horas Orientação tutorial 11 Criptografia – Chaves e hash (quando usar o quê) JORGE LEIRIA PIRES 2 Utilização de chaves assimétricas Encriptar Privada Pública de outrem Minha pública Desencriptar Criptografia – Chaves e hash (quando usar o quê) JORGE LEIRIA PIRES 3 Objetivo Confidencialidade (da transmissão) Pública de outrem Usar Autenticação (quem sou) Integridade (não modificar) Privacidade (dos meus dados) Método Chave Privada Algoritmo de Hash Minha Pública Criptografia – Certificados digitais • São sistemas que necessitam de um 3º interveniente: • A entidade certificadora• Servem para • Identificar entidades (pessoas/dispositivos/dados/sistemas) • Encriptar comunicações • Distribuir chaves públicas • Guardar chaves privadas JORGE LEIRIA PIRES 4 Criptografia – Certificados digitais Como aceder a um certificado? • Painel de controlo • Opções da Internet JORGE LEIRIA PIRES 5 Criptografia – Certificados digitais Exemplo de certificado JORGE LEIRIA PIRES 6 Criptografia – Certificados digitais Detalhes • É guardado num formato P7b (texto), PFX/P12 (binário) • Algoritmo usado na assinatura • Assinatura digital do próprio certificado (para verificar que o certificado em si não foi alterado) JORGE LEIRIA PIRES 7 Criptografia – Certificados digitais Detalhes • Emissor • Algoritmo da chave pública • Chave pública JORGE LEIRIA PIRES 8 Criptografia – Certificados digitais Caminho da certificação JORGE LEIRIA PIRES 9 Criptografia – Certificados digitais JORGE LEIRIA PIRES 11 Podem ser de vários tipos • Email • Autenticação de servidor • Assinatura de código (programa) • Autenticação de driver • Validação de data/hora • Autenticação de cliente • IP Tunnelling • EFS (Encripted File System) Criptografia – Certificados digitais JORGE LEIRIA PIRES 12 Há vários separadores na janela dos certificados • Estes são instalados com o S.O. • Certificam tudo, ou quase tudo Criptografia – Certificados digitais JORGE LEIRIA PIRES 13 Há vários separadores na janela dos certificados • Estes só certificam algumas coisas Criptografia – Certificados digitais JORGE LEIRIA PIRES 14 Há vários separadores na janela dos certificados • Aqui ficam os nossos • Tipicamente aqueles que têm chave privada! Criptografia – Certificados digitais JORGE LEIRIA PIRES 15 Há vários separadores na janela dos certificados • Aqui ficam os públicos que as outras pessoas nos enviaram • Tipicamente aqueles que têm chave pública de outrem! Criptografia j o rge.p i res@my. istec .pt • 6 créditos • 48 horas Teórico-práticas • 12 horas Orientação tutorial 11 A Criptografia – Certificados digitais (exercício) JORGE LEIRIA PIRES 2 Objectivo: Criar um certificado auto-assinado para um servidor 1. Criar um certificado para simular a entidade certificadora • Gerar uma chave privada RSA (a ser usada para o certificado de raiz) • Gerar o certificado de raiz com essa a chave 2. Criar um pedido (requisição) de certificado • Gerar uma chave privada RSA (a ser incluída no certificado final do servidor) • Gerar a requisição de certificado para o servidor (que seria enviada à entidade) 3. Assinar a requisição do certificado do servidor com o certificado de raiz e gerar o certificado de servidor • Este passo seria efectuado pela entidade NOTA: O exercício resolve-se com um total de 5 comandos ( a ) Criptografia j o rge.p i res@my. istec .pt • 6 créditos • 48 horas Teórico-práticas • 12 horas Orientação tutorial 11 A Criptografia – Certificados digitais (exercício) JORGE LEIRIA PIRES 2 Objectivo: Criar um certificado auto-assinado para um servidor 1. Criar um certificado para simular a entidade certificadora • Gerar uma chave privada RSA (a ser usada para o certificado de raiz) • Gerar o certificado de raiz (válido por 10 anos) com essa a chave 2. Criar um pedido (requisição) de certificado • Gerar uma chave privada RSA (a ser incluída no certificado final do servidor) • Gerar a requisição de certificado para o servidor (que seria enviada à entidade) 3. Assinar a requisição do certificado do servidor com o certificado de raiz e gerar o certificado (válido por 1 ano, com número de série) de servidor • Este passo seria efectuado pela entidade NOTA: O exercício resolve-se com um total de 5 comandos ( a ) Criptografia – Certificados digitais (solução) JORGE LEIRIA PIRES 3 Objectivo: Criar um certificado auto-assinado para um servidor 1. openssl genrsa -des3 -out ca.key 4096 2. openssl req -new -x509 -days 3650 -key ca.key -out ca.crt 3. openssl genrsa -des3 -out server.key 4096 4. openssl req -new -key server.key -out server.csr 5. openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 05062016 -out server.crt Criptografia j o rge.p i res@my. istec .pt • 6 créditos • 48 horas Teórico-práticas • 12 horas Orientação tutorial 12 Criptografia – Chaves simétricas (DES e AES) • A encriptação baseia-se em duas primitivas • Confusão (confusion) • A relação entre o texto e o texto cifrado não é clara (é confusa ) • Pode-se obter por mera substituição de símbolos • Difusão (difusion) • O mesmo símbolo não encriptado dá origem a vários símbolos encriptados • Isto impede a análise da frequência de ocorrência dos símbolos • Um sistema que só utilize um dos métodos não é seguro • Para encriptar, encadeiam-se operações de confusão e difusão JORGE LEIRIA PIRES 2 confusão difusão confusão difusãotexto texto encriptado Criptografia – Chaves simétricas (DES e AES) • A encriptação simétrica pode-se fazer usando • Stream ciphers encriptam 1 bit do texto de cada vez, juntando-o com 1 bit da chave a utilizar • Síncronos quando o stream só depende da chave • Assíncronos quando o stream depende da chave e do texto cifrado anteriormente • Block ciphers encriptam um conjunto de bits de cada vez • Exemplos de block ciphers são o DES (8 bytes) e o AES (16 bytes) JORGE LEIRIA PIRES 3 Block ciphers Stream ciphers assíncronos síncronos Criptografia – Data Encryption Standard (DES) •Data Encryption Standard • Especificações publicadas em 1977 • Feita para durar 10 anos • Como não se descobriram falhas graves, foi utilizada até 1999, altura em que foi substituída pela Advanced Encryption Standard • Encripta blocos de 8 bytes (64 bits) • Usa uma chave de 7 bytes (56 bits) • Actualmente é considerado pouco seguro porque o nº de chaves (256) é pequeno (nota: 3DES já é seguro!) • Usa uma chave simétrica • São feitas 16 cadeias de confusão + difusão JORGE LEIRIA PIRES 4 Criptografia – Data Encryption Standard X -> bloco a encriptar (8 bytes) Y -> bloco encriptado (8 bytes) K -> chave de encriptação (7 bytes) • São feitos 3 passos principais • Permutação inicial • Encriptação (16 vezes) • Permutação final NOTA: em cada encriptação é usada uma chave parcial criada a partir da chave principal JORGE LEIRIA PIRES 5 Criptografia – Data Encryption Standard Permutação inicial (ao nível do bit) JORGE LEIRIA PIRES 6 Criptografia – Data Encryption Standard Rede de Feistel (para cada uma das 16 encriptações) JORGE LEIRIA PIRES 7 Chaves parciais Criptografia – Data Encryption Standard Criação das chaves parciais de encriptação (16 chaves) • Divide-se em duas metades • Cada metade sofre uma rotação • 1 bit para chaves k1, k2, k9 e k16 • 2 bits para as restantes • Os 56 bits resultantes são permutados • e daí resultam apenas 48 para a chave JORGE LEIRIA PIRES 8 Criptografia – Data Encryption Standard Rede de Feistel (para cada uma das 16 encriptações) JORGE LEIRIA PIRES 9 Encriptação Criptografia – Data Encryption Standard Função f de encriptação JORGE LEIRIA PIRES 10 Há 8 funções s diferentes Criptografia – Data Encryption Standard Função s de substituição • Há 8 tabelas diferentes • Entram 6 bits • Os bits de entrada servem para indexar a tabela • Saem 4 bits • A saída é o conteúdo indexado, escrito em binário JORGE LEIRIA PIRES 11 entrada 1 1 0 1 0 0 1 1 0 1 0 0 1 0 é a linha 2 1 1 0 1 0 0 1 0 1 0 é a coluna 10 saída 1 0 0 1 (9) Criptografia – Data Encryption Standard Permutação final (ao nível do bit) JORGE LEIRIA PIRES 12 Criptografia j o rge.p i res@my. istec .pt • 6 créditos • 48 horas Teórico-práticas • 12 horas Orientação tutorial 13 Criptografia – Advanced Encryption Standard (AES) •Advanced Encryption Standard • Em utilização desde 1999 (especificações finais em 2000) • O nome do algoritmo é Rijndael • Foi feito por 2 criptógrafos Belgas: Joan Daemen e Vincent Rijmen • Estápresente em inúmeras aplicações • IPsec, TLS, SSH, WiFi (802.11i), Skype • Encripta blocos de 128 bits • Usa vários tamanhos de chave • 128, 192 e 256 bits • Actualmente é considerado muito seguro porque o nº de chaves (e.g. 2256) é muito grande (nota: DES era 256) JORGE LEIRIA PIRES 2 Criptografia – Advanced Encryption Standard (AES) Ciclos de repetição • O número de ciclos depende do comprimento da chave • 128 bits 10 ciclos • 192 bits 12 ciclos • 256 bits 14 ciclos • Cada ciclo contém 3 camadas • Substituição – usando uma tabela (S-box) • Difusão (Shift e Mistura) • Adição (XOR) • Cada ciclo usa uma subchave obtida a partir da inicial • Há mais uma subchave (subchave extra) que o nº de ciclos JORGE LEIRIA PIRES 3 Criptografia – Advanced Encryption Standard Esquema de blocos JORGE LEIRIA PIRES 4 X -> bloco a encriptar (16 bytes) Y -> bloco encriptado (16 bytes) K -> chave de encriptação (16/24/32 bytes) NOTA: na primeira adição é usada a subchave extra (k0) criada a partir da chave principal Chaves parciais Criptografia – Advanced Encryption Standard “Transform” Geração das subchaves – 128 bits • A chave key0 é igual à chave inicial • A key1 depende da key0 e da função g • O mesmo acontece com as chaves restantes: cada uma delas depende da anterior e da função g JORGE LEIRIA PIRES 5 Criptografia – Advanced Encryption Standard Geração das subchaves – 128 bits (função g) • Faz-se uma rotação inicial • Cada grupo de 8 bits sofre uma permutação • Aos 8 bits da esquerda soma-se (XOR) um coeficiente RC que é diferente para cada um dos 10 ciclos JORGE LEIRIA PIRES 6 NOTA: os algoritmos para as chaves de 192 e 256 bits são ligeiramente diferentes deste, de 128 bits Criptografia – Advanced Encryption Standard Esquema de blocos JORGE LEIRIA PIRES 7 X -> bloco a encriptar (16 bytes) Y -> bloco encriptado (16 bytes) K -> chave de encriptação (16/24/32 bytes) Ciclos Criptografia – Advanced Encryption Standard Ciclos JORGE LEIRIA PIRES 8 Substituição Shift Mistura Adição Difusão Criptografia – Advanced Encryption Standard Camada de Substituição • 1 byte de entrada (xy) índice • 1 byte de saída conteúdo da tabela JORGE LEIRIA PIRES 9 entra (11010010) sai (10110101) Criptografia – Advanced Encryption Standard Camada de Difusão • Subcamada de Shift • Faz uma rotação a cada uma das linhas • Não modifica a primeira linha • Shift da 2ª linha 3 bytes para a direita • Shift da 3ª linha 2 bytes para a direita • Shift da 4ª linha 1 byte para a direita • Subcamada de Mistura • “Baralha” as colunas JORGE LEIRIA PIRES 10 Tabela inicial Após o shift Criptografia – Advanced Encryption Standard Camada de Adição • Faz um XOR com a chave JORGE LEIRIA PIRES 11
Compartilhar