Escolar Documentos
Profissional Documentos
Cultura Documentos
Objetivos
• Garantir que uma mensagem ou informação só será lida e compreendida pelo
destinatário autorizado para isso
Princípios Básicos
• Confidencialidade
o Garantir que o acesso à informação seja feito somente por pessoas
autorizadas
• Integridade
o Garantia de que os dados não foram alterados desde sua criação
• Disponibilidade
o Garantia de que a informação estará disponível para as pessoas autorizadas
quando estas precisarem da informação
• Não‐repúdio/irrefutabilidade/irretratabilidade
o Previne que alguém negue o envio e/ou recebimento de uma mensagem
o Autenticação de usuários por senha não garante o não‐repúdio, pois não prova
a autoria da operação, não é possível sabermos quem digitou a senha
• Autenticidade
o Garantia da origem da informação
• Usabilidade
o Prevenir que um serviço tenha sua usabilidade deteriorada devido à segurança
• Tempestividade
o Possibilidade de comprovar que um evento eletrônico ocorreu em um
determinado instante.
“entidade protocolizadora digital”
• Vulnerabilidade
o Fraqueza que pode ser explorada para violar um sistema ou informações que
este contém
o Pontos fracos na segurança
• Princípios Criptográficos by Tanenbaum (TRF 2ª Região)
o Redundância = mensagens devem conter redundância
o Atualidade = algum método deve ser implementado para anular ataques de
repetição
Conceitos
• Texto pleno / texto claro (plaintext)
o Mensagem antes de ser criptografada
• Texto cifrado ou criptografado
o Texto resultante de um algoritmo de criptografia sobre um texto pleno
• Chave
o Mensagem utilizada por alguns algoritmos de criptografia para gerar o texto
cifrado
• Cifra
o Algoritmo de encriptação que combina a informação contida na chave para
codificar um texto cifrado de forma que não seja possível obter o texto pleno
original sem a posse desta mesma chave
• Criptoanálise
o Técnicas para decodificar uma mensagem sem possuir a chave
• Esteganografia = “arte” de ocultar a existência da mensagem
1
Tipos de Criptografia (a criptografia garante o sigilo)
Segredo Baseado em Algoritmos
Baseia‐se em usar um processo que apenas os envolvidos conheçam para cifrar o texto
pleno. Não usa chaves, quem souber o algoritmo sabe decifrar e são computacionalmente
fáceis de quebrar
• A cifra de substituição consiste em deslocar o alfabeto algumas letras para frente
• A cifra de permutação (transposição) consiste em embaralhar as letras da própria
mensagem
o JOÃO = ÃOJO
Cifra de César
É uma cifra de substituição monoalfabética (utiliza apenas um alfabeto). O exemplo
abaixo mostra uma C3, ou seja, cifra de césar que desloca o alfabeto três letras à frente.
Utilizando C3 na frase MANEH GAY obtemos PDQHK JDB. Lembre‐se que você pode utilizar
qualquer deslocamento C1, C3276, C666. A cifra de César pode ser facilmente quebrada
utilizando análise de freqüência.
Também conhecida como ROT‐X que consiste em deslocar o alfabeto para a direita X
casas. Desses, o ROT‐13 é o mais conhecido.
Cifra de Vigenère
É uma cifra de substituição polialfabética (utiliza mais de um alfabeto) que utiliza 26
alfabetos e uma chave alfabética. A análise de freqüência não quebra a cifra, porém a análise
de período pode ser utilizada para quebrar a cifra. A tabela de 26 alfabetos abaixo é a utilizada
na cifra. A primeira coluna corresponde a um deslocamento zero e a última a 25:
2
Uma mensagem é cifrada combinando a linha da chave com a linha da coluna, por
exemplo, a mensagem MANEH GAY com a chave JOAO é cifrada da seguinte forma:
O processo de decifrar é exatamente o oposto.
Cifra de Gronsfeld (ou Grosfeld?)
É uma variação da cifra de Vigenère que, ao invés de usar uma chave alfabética, utiliza
uma chave numérica. O Processo de encriptar uma mensagem é análogo ao da cifra de
Vigenère. Utilizando uma chave 4321, a primeira letra da mensagem será substituída por uma
que esteja 4 posições à frente:
OneTime Pads
Descrição do livro CISSP:
Consiste em escolher aleatoriamente uma chave alfabética sem repetições do tamanho da
mensagem (impossível para mensagens longas, utiliza‐se longas chaves aleatórias com
períodos grandes) e somar modulo 26 cada caractere da mensagem a cada caractere da chave.
Descrição do Tanenbaum:
Consiste em escolher uma chave de bits aleatória, converter a mensagem original em bits,
utilizando ASCII, por exemplo, e fazer o XOR entre a chave e a mensagem bit a bit. Segundo o
nosso amigo Tanenbaum a cifra é inquebrável...
Cifra Garrafa de Cerveja
É baseada naquela música que os bêbados estadunidenses cantam: 99 garrafas de
cerveja na parede blábláblá. Para maiores informações consulte o link abaixo:
http://www.gris.dcc.ufrj.br/artigos/GRIS‐2005‐A‐004.pdf
Criptografia Simétrica
Utiliza a mesma chave para criptografar e decriptografar as mensagens. Podem ser de
blocos ou de fluxo:
• De Bloco (DES, 3DES, RC2, entre outros)
o Pegam um bloco de n bits do texto pleno como entrada e o transforma em um
bloco de n bits de texto cifrado.
o São mais lentos que os de fluxo
• De Fluxo (RC4, entre outros)
o Criptografam um texto pleno bit a bit
o São mais rápidos que os de bloco
• Vantagem da criptografia simétrica
o Rapidez na criptografia e decriptogtafia das informações
• Desvantagem
o A chave secreta deve ser transmitida ou comunicada para o receptor,
tornando‐a mais vulnerável a furtos.
3
DES – Data Encryption Standard
• Algoritmo criptográfico de bloco que utiliza blocos de 64 bits e chaves de 56 bits
o O algoritmo transforma uma entrada de 64 bits do texto claro, após vários
passos, em uma saída cifrada de 64 bits. Os mesmos passos, com as mesmas
chaves são utilizados para decifrar o texto.
o As chaves são de 56 bits + 8 bits para preencher, mas somente 56 bits são
usados
• Opera em 16 rounds além da permutação inicial e da permutação final (que é a inversa
da inicial)
• Utiliza XOR e S‐Boxes (estrutura Feistel)
• O DES é um algoritmo ultrapassado e já foi quebrado
64 bits texto claro 64 bits chave (56+8)
64 64
Permutação Inicial Escolha permutada 1
64 56
48 56
K1
Round 1 Escolha permutada Shift circular à esquerda
64 56
48 56
K2
Round 2 Escolha permutada Shift circular à esquerda
… K16
48 56
56
32‐bit swap
64
Permutação Final
64
64 bits texto cifrado
Efeito Avalanche
É uma propriedade desejável em qualquer algoritmo criptográfico. Uma pequena
mudança no texto claro deve produzir uma mudança significativa no texto cifrado.
O DES possui tal propriedade.
• Uma pequena mudança de 1 bit no texto claro produz textos cifrados bastante
diferentes
• O mesmo ocorre quando a mudança de 1 bit é na chave utilizada
4
Triple DES – 3DES
Já que o DES foi quebrado, foi desenvolvido o 3DES, que utiliza blocos de 64 bits e
chaves de 56, 112 ou 168 bits.O Triple DES é basicamente o DES 3 vezes. É um algoritmo
largamente utilizado.
• Com duas chaves distintas = 112 bits (encripta – decifra – encripta = EDE)
o É um método compatível com o DES tradicional
o C = E (K1, D(K2 (E (K1, P)))
o Um ataque de força bruta é impraticável, 2112 chaves distintas, consumiria
muito tempo
• Com três chaves distintas = 168 bits (EDE)
o C = E(K3,D(K2,E(K1,P)))
o Pode ser compatível com o DES se fazendo K3=K2 ou K1=K2
Modos de Operação das Cifras de Bloco
Electronic Codebook (ECB)
• Cada bloco de 64 bits é cifrado independentemente com a mesma chave
• É um método bom para pequenas quantidades de dados. Para mensagens longas pode
ser um método inseguro.
o O criptoanalista pode se aproveitar da regularidade
• A característica mais significante é que se o mesmo bloco‐b de texto claro aparece
mais de uma vez na mensagem, o texto cifrado gerado é idêntico
o Ele não esconde padrões de dados de maneira adequada
o Pode gerar repetições que facilitam os ataques
• Ocorre a propagação de erros
• Observação TST 2007:
o O texto claro com baixa entropia é um texto com muitas repetições
Entropia é a medida de desordem
o Muitas repetições = muitos padrões iguais = texto cifrado igual (devido à
característica do ECB de gerar código igual para textos iguais)
Tempo =1 Tempo =2 Tempo =N Tempo =N
P1 P2 PN CN
5
Cipher Block Chaining (CBC)
Chaining (CBC)
• Técnica na qual o mesmo bloco de texto claro, se repetido na mensagem, produz
diferentes blocos de texto cifrado
• A entrada do algoritmo de codificação é o XOR do bloco de texto claro atual com o
anterior
• Utiliza um vetor de inicialização (IV) para cifrar o primeiro bloco
o IV deve ser conhecido pelo transmissor e pelo receptor, mas imprevisível para
terceiros
• É um modo apropriado para cifrar mensagens longas
• O CBC permite a construção de MAC – message authentication code
o MAC é semelhante ao hash, é conhecido também como hash com chave
• Ocorre a propagação de erros
Tempo =1 Tempo =2 Tempo =N
P1 P2 PN
IV
⊕ ⊕ ...
CN‐1
⊕
K cifrar K cifrar K cifrar
Tempo =1 Tempo =2 Tempo =N
C1 C2 CN
K ... K
K decifrar decifrar decifrar
IV
⊕ ⊕
CN‐1
⊕
P1 P2 PN
6
Cipher Feedback (CFB)
• Possibilita o DES funcionar como um algoritmo de fluxo
• Utiliza um vetor de inicialização para o primeiro passo
• A entrada é “shift register” (vetor de inicialização IV)
o IV é cifrado
o Os s bits mais significantes da saída da cifra passam por um XOR com o
primeiro segmento do texto claro (P1) e produz o primeiro segmento cifrado
C1
O “shift register” é deslocado em s bits e C1 é colocado em seus bits
menos significativos, e assim sucessivamente
7
Output Feedback (OFB)
• Modo semelhante ao Cipher Feedback mode
• A vantagem é que este método não propaga erros
• A diferença é a entrada nos passos 2 em diante:
8
Counter Mode (CTR)
• Temos um contador de tamanho igual ao tamanho do bloco de texto claro
• Para cada bloco a ser cifrado, o contador é incrementado em 1
• Cifrar:
o Contador + chave são cifrados
o Saída passa por XOR com o bloco de texto claro = texto cifrado
• Decifrar:
o Contador + chave são cifrados
o A saída passa por XOR com o bloco cifrado e a saída é o texto claro
• O CTR permite paralelismo (hardware e software) o que aumenta o throughput
• Permite pré‐processamento
• Permite acesso aleatório
o Ou seja, o bloco CK pode ser cifrado independente dos outros blocos
• É tão seguro quanto os outros modos e é simples
9
Blowfish
• Algoritmo de bloco que utiliza chaves de 32 até 448 bits com um bloco de 64 bits
• Opera em 16 rounds
AES – Advanced Encryption Standard
• Algoritmo Rijndael
• Cifra de bloco desenvolvida para substituir o DES (3DES)
o Pode operar nos modos ECB, CBC, CFB, OFB e CTR (assim como qualquer outro
algoritmo de bloco)
• Utiliza chaves de 128, 192 ou 256 bits e blocos de 128 bits
• Não utiliza a estrutura Feistel
• O AES foi desenvolvido para ter as seguintes características
o Resistência a todos os ataques conhecidos
o Velocidade/código compacto em várias plataformas
o Simplicidade de design
• Cada round utiliza 4 funções separadamente
o Substituição de bytes
o Permutação
o Operações aritméticas de corpos finitos (finite fields)
o XOR com uma chave
Key size
4/16/128 6/24/192 8/32/256
(words/bytes/bits)
Plaintext block size 4/16/128 4/16/128 4/16/128
Rounds 10 12 14
10
11
Cifras de Fluxo
São cifras que operam bit a bit ou byte a byte e são mais rápidas que as cifras de bloco.
RC4 – Rivest Cipher 4 ou Ron’s Code 4
• Utiliza chaves de 8 a 2048 bits, por padrão 128 bits
• É o algoritmo utilizado nos protocolos WEP (wired equivalency protection) e no WPA
(wi‐fi protected access), é também suportado pelo SSL/TLS, pelo Kerberos, entre
outros
• Utiliza um gerador pseudo‐randômico para gerar um fluxo de bits que é utilizado como
chave – o key stream
o A utilização do mesmo key stream é um risco, pois torna o algoritmo
vulnerável a uma série de ataques
• Para cifrar e decifrar, basta utilizar XOR entre a chave e o texto claro/cifrado
Gerador de chave
Key stream
⊕
Fluxo de Fluxo de
texto claro texto cifrado
12
Criptografia Assimétrica
• Também conhecida como criptografia de chave pública
• Utiliza duas chaves diferentes, uma pública e a outra privada
• A criptografia assimétrica permite garantir a confidencialidade e/ou a autenticidade da
mensagem (os métodos serão descritos mais detalhadamente nos próximos tópicos)
Chave pública de Manoel Chave Privada de Manoel
João Manuel
Método que garante
confidencialidade
Chave Privada de Manoel Chave Pública de Manoel
13
RSA (Rivest, Shamir, Adleman)
É um algoritmo de blocos baseado na fatoração de números primos muito grandes e
exige chaves de pelo menos 1024 bits para ser seguro o que o torna lento em comparação com
os algoritmos simétricos. Suporta chaves de até 2048 bits.
Normalmente é utilizado em conjunto com algum algoritmo simétrico, ele é utilizado
para codificar a chave privada (chamada de chave de sessão) que será utilizada pelo algoritmo
simétrico. É muito utilizado em assinaturas digitais em conjunto com algum algoritmo de
hash.
É utilizado pelo protocolo PGP – pretty good privacy.
Gerar a Chave
1. Escolha p e q Æ primos e p ≠ q
2. Calcule n = p x q
3. Calcule z = (p – 1)x(q ‐1)
4. Escolha e, tal que mdc(z,e) = 1 e 1 < e < z, ou seja, z e e são primos entre si
5. Calcule d ≡ e (mod z) Æ d x e = 1 mod z
‐1
6. Chave pública PU = {e,n} ; Chave privada PR = {d,n}
Cifrar
• Texto claro M < n
e
• Texto cifrado C = M mod n
O emissor deve conhecer e e n enquanto
Decifrar que o receptor deve conhecer d e n.
• Texto cifrado C
d
• Texto claro M = C mod n
EXEMPLO:
1. p = 3 ; q = 11
2. n = 3 x 11 = 33
3. z = (3‐1)x(11‐1) = 20
4. escolhi e = 7
5. e x d = 1 mod z Æ 7d=1(mod20) Æ d=3
6. C = M7mod20 ; M = C3mod20
14
DiffieHellman Key Exchange
• É um algoritmo que permite a troca segura de uma chave secreta entre dois
usuários
o Baseado em logaritmos discretos (...)
Elementos públicos
q Æ número primo
α Æ α < q e α é uma raiz primitiva de q
Usuário A Usuário B
Escolhe XA Æ XA < q (mantém em segredo) Escolhe XB Æ XB < q (mantém em segredo)
Calcula YA Æ YA = αXAmod q (público) Calcula YB Æ YB = αXBmod q (público)
Cálculo da chave secreta por A Cálculo da chave secreta por B
K = (YB)XAmod q K = (YA)XBmod q
• Um atacante teria acesso a q,α, YA e YB
o Para achar a chave K ele teria que conseguir calcular, por exemplo,
XB=dlog α,q(YB); o que é computacionalmente impraticável
EXEMPLO:
q=353; α=3; XA=97; XB=233
97
A calcula YA = 3 mod353 = 40
B calcula YB = 3233mod353 = 248
A calcula K = 24897mod353 = 160
233
B calcula K = 40
mod353 = 160
• O atacante tem em mãos q; α; YA e YB
• Ele teria que calcular 3 mod353=40 ou 3 mod353=258; no exemplo é facilmente calculado, mas
a b
para números grandes é impraticável.
Elliptic Curve Cryptography – ECC
• É um método semelhante ao Diffie‐Hellman para troca de chaves que, ao invés de
logaritmos discretos, é baseado em curvas elípticas.
15
Message Authentication Codes – MAC (garantem integridade e autenticidade)
• Método que utiliza uma chave secreta e a mensagem para gerar um pequeno
bloco de tamanho fixo (checksum criptográfico / MAC) que é anexado à mensagem
• O algoritmo MAC, diferente dos algoritmos criptográficos, não precisa ser
reversível, em geral são funções um para muitos.
• A e B compartilham uma chave secreta K
o A calcula o MAC da mensagem que quer enviar para B
MACA=C(K,M)
• MAC = message authentication code
• C = função MAC
• K = chave secreta
• M = mensagem
o A envia a mensagem + MAC para B
o B faz o mesmo cálculo que A (MACB=C(K,M)) e compara MACA recebido
com o MACB calculado
o Se os MACs forem iguais então a mensagem é integra (MACA = MACB) e
autêntica (só A e B sabem K)
HMAC – Hash Message Authentication Code
• Algoritmo para calcular Message Authentication Codes baseado em funções hash
• Ele é independente da função hash utilizada, ou seja, podemos utilizar o HMAC com
qualquer função hash que desejarmos. A figura abaixo (Wikipédia) ilustra o HMAC de
forma simplificada:
• K = chave
• m = mensagem
• ipad = 00110110 = 36 em hexadecimal; o ipad é repetido
o número de bits do bloco/8 vezes
• opad = 01011100 = 5C em hexadecimal; o opad é repetido
o número de bits do bloco/8 vezes
• h é a função hash
16
Algoritmos de Hash (garantem integridade)
Os algoritmos de hash são baseados em funções matemáticas de um sentido, ou seja,
dada uma entrada x, a função gera uma saída y e a partir de y é praticamente impossível gerar
a entrada x. Entenda “praticamente impossível” como matematicamente improvável.
Na teoria, duas entradas diferentes nunca vão gerar saídas iguais, o que seria uma
colisão. Na prática sabemos que colisões acontecem.
Tais algoritmos recebem uma entrada de tamanho variável e produzem uma saída de
tamanho fixo.
MD5 (RFC 1321)
É um algoritmo de hash que produz uma saída (resumo da mensagem, fingerprint ou
message digest) de 128 bits, muito utilizado por softwares P2P, na verificação de integridade
de arquivos e em logins (ao invés de guardar a senha no banco de dados, guarda‐se o hash da
senha).
Apesar de largamente utilizado, várias colisões já foram detectadas
SHA (Secure Hash Algorithm)
Algoritmo de hash largamente utilizado. A tabela abaixo resume bem as várias versões
existentes. A FCC considerou em uma de suas provas o SHA‐1 como o algoritmo de hash mais
seguro existente.
Tabela emprestada do Stallings
Whirlpool
Algoritmo de hash cuja função de compressão é baseada em um algoritmo
criptográfico simétrico de bloco, o AES (Rijndael). Ele produz um message digest de 512 bits.
17
Assinatura Digital (Integridade, autenticidade, nãorepúdio)
• O propósito da assinatura digital é detectar modificações não‐autorizadas nos dados e
autenticar a identidade dos signatários, garantindo o não‐repúdio.
• Utiliza‐se a criptografia assimétrica e os algoritmos de hash
• Garante a integridade, a autenticidade e o não‐repúdio das mensagens assinadas
• Funcionamento:
o Calcula‐se o message digest da mensagem usando uma função de hash
o Cifra‐se o message digest com a chave privada do emissor
o Junta‐se a message digest cifrada com a mensagem original e envia para o
receptor
o O receptor decifra o message disgest usando a chave pública do emissor
o O receptor calcula o message digest da mensagem recebida usando a mesma
função de hash do emissor, se o message digest obtido for idêntico ao enviado
pelo emissor, então a mensagem é integra e autêntica.
Certificados Digitais
“A Certificação Digital é um processo que garante, de forma única, a identidade de
uma pessoa ou de um computador. A certificação digital é garantida por um terceiro de
confiança: uma instituição conhecida, normalmente, como CA (Autoridade Certificadora). A
Certificação Digital se baseia na existência de documentos chamados Certificados Digitais para
cada indivíduo a ser autenticado.”
“Um Certificado Digital é um documento (um arquivo em seu computador, por exemplo)
que guarda informações sobre seu titular e é atestado (garantido) por uma Autoridade
Certificadora.”
• Amarram indivíduos a suas respectivas chaves públicas
• Autoridade certificadora (CA)
o Verifica a identidade de uma pessoa e emite um certificado que atesta que a
chave pública é desta pessoa
o Assina o certificado com sua própria chave privada
• Verifica‐se a procedência da mensagem se a chave pública do emissor decifrar os
dados
• Os certificados são enviados para um repositório que guarda os certificados e as listas
de certificados revogados
• Os certificados são revogados quando:
o A chave secreta do usuário foi comprometida
o Dados pessoais do usuário são alterados
o Usuário não quer mais ser certificado
o O certificado da CA foi comprometido
o O usuário violou a política de segurança
• Para verificar a assinatura da CA, a chave dela é cross‐certified por outra CA
• A validade de um certificado é verificada junto à autoridade certificadora que o emitiu,
nunca de forma independente da CA.
18
Infraestrutura de Chaves Públicas (ICP) / Public Key
Infrastructure (PKI)
Uma PKI é um conjunto de regras, técnicas, práticas e procedimentos que existe para gerar
garantias aos seus usuários. Uma PKI é, em suma, uma grande “cadeia de confiança” em que,
quando se confia em um de seus componentes, se está confiando também, em toda a PKI.
Portal ICP‐Brasil: https://www.icpbrasil.gov.br/
Uma PKI é formada por:
• Uma Autoridade Certificadora Raiz (CA Raiz): o topo da PKI, todos os componentes da
PKI confiam na CA Raiz. Ela é o gênese de toda a confiança. A CA Raiz emite
certificados atestando a autenticidade das CAs intermediárias e a CA Raiz é auto‐
certificada (ou seja, ela emite seu próprio certificado), mas a AC Raiz não pode emitir
certificados para usuários finais (como sites ou pessoas físicas).
• Autoridades Certificadoras Intermediárias (CA): São subordinadas à CA Raiz e têm
seus certificados emitidos por esta. As CAs são entidades públicas ou privadas com
estrutura física segura o suficiente para guardar, sigilosamente, os dados de seus
clientes (certificados). É uma CA intermediária que emite os certificados para os
usuários finais.
• Autoridades de Registro (AR): é uma instituição, associada a uma AC, que recebe as
solicitações de emissão de certificados dos usuários que os requerem e, caso o pedido
seja considerado válido, o repassa para a CA Intermediária emitir o certificado.
• Usuários: pessoas/empresas/sites que se beneficiam do “universo de confiança” da
PKI, são os componentes que solicitarão e utilizarão certificados emitidos pelas CAs
daquela PKI. Confiar num certificado de um usuário qualquer requer confiança em
todos os níveis daquele certificado, desde a AC Raiz.
• DPC (Declaração de Práticas de Certificação): documento, ligado as CAs, que
especifica os critérios técnicos da estrutura de certificação, como: algoritmos usados,
tamanho das chaves, validade dos certificados, tempo máximo de publicação da LCR
(Lista dos Certificados Revogados), critérios para a emissão dos certificados,
documentos exigidos, etc.. A DPC é revisada e republicada várias vezes e suas
diretrizes determinam como ela vai agir para emitir, revogar ou renovar certificados.
19