conceitos básicos de criptografia -...
TRANSCRIPT
1
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Conceitos básicos de criptografia
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Criptografia
• A base da criptografia é conseguir que um grupo de pessoas transmita informação entre elas que seja ininteligível para todas as outras
• Uma solução: ter um dialecto próprio
– não é escalável, nem seguro.
• Melhor solução: – algoritmo que cifra a informação que é conhecido
– e uma chave que parametriza o algoritmo,
– Algoritmo público, chave é segredo
– Análogo às fechaduras físicas...
Departamento de Engenharia Informática
Criptografia – Segurança Total vs Prática
• As funções de cifra são consideradas totalmente segurasse: – independentemente do tempo e do poder computacional envolvido,
a chave não puder ser descoberta.
• Normalmente são praticamente seguras– o valor da informação não justifica o investimento computacional
(em máquinas especiais) – temporalmente limitada a sua validade e muito inferior ao tempo
necessário para decifrá-la com a tecnologia existente.
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
CriptografiaConceitos
• Algoritmo de cifra– Função injectivas– Parametrizadas por uma chave
• Algoritmo de decifra– As cifras são reversíveis apenas por quem possuir o algoritmo
inverso– Parametrizado por chave inversa
• NomenclaturaM � {M}K1 : cifra da mensagem M com a chave K1
é gerado um criptograma
2
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Comunicação Cifrada (Modelo)
{P}K
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Criptografia: Aspectos operacionais
• Cifras simétricas– Normalmente usam técnicas de substituição e difusão
– São normalmente muito mais rápidas que as assimétricas
• Cifras assimétricas– Normalmente usam operações matemáticas
– A sua segurança baseia-se na complexidade de certas operações matemáticas
• Logaritmo modular
– Y = aX mod b; Dados a, b e Y, calcular X
• Factorização de grandes números
– Y = ab, a e b primos; Dado Y, calcular a ou b
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Criptografia Simétrica
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Cifra simétrica
• Substituição– Mono-alfabética– Poli-alfabética
• Exemplo Mono-alfabético– Chave – troia
– Problema?
ABCDEFGHIJLMNOPQRSTUVXZ
TROIABCDEFGHJLMNPQSUVXZ
3
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Cifra Simétrica
• Poli-alfabético– Procura que as distribuições sejam
combinadas de forma a que não existam caracteres que sejam mais frequentes
• Exemplo: Tabelas de Vigenère
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Exemplo de Cifra com a Tabela de Vigenère
• Vamos, supor que se pretende cifrar uma mensagem em claro (plaintext) :– ATTACKATDAWN
• O cifrador escolhe a chave e repete-a até que tenha o tamanho da mensagem– Vamos usar "LEMON": LEMONLEMONLE
• A primeira letra da mensagem, A, é cifrada usando o alfabeto na linha L, que é a primeira letra da chave. Na tabela de Vigenère corresponde à linha L e à coluna A.
• Da mesma forma para a segunda letra da mensagem: a linha E e a coluna T resulta X.
• A restante mensagem é cifrada da mesma forma • Mensagem:
– ATTACKATDAWN• Chave:
– LEMONLEMONLE• Mensagem Cifrada
– LXFOPVEFRNHR
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
One-time pads
• Substituição poli-alfabética
• Chave de grande dimensão não repetida
• O emissor usa a parte da chave que necessita para cifrar a mensagem e o receptor usa a mesma parte da chave estando ambos sincronizados sobre que parte já utilizaram
• Totalmente seguro, mas... como distribuir a chave?– Uma aproximação a one-time pads nos computadores são
geradores de números aleatórios
– Que funcionam a partir de chave (limitada) distribuída inicialmente
4
Departamento de Engenharia Informática
Exemplo de cifra simétrica: TEA
• Algoritmo académico, pouco usado na prática
• Muito simples
• Razoavelmente rápido
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Exemplo de cifra simétrica: TEA
Sistemas Distribuídos 2010/11
void encrypt(unsigned long k[], unsigned long text[]) {
unsigned long y = text[0], z = text[1]; 1
unsigned long delta = 0x9e3779b9, sum = 0; int n; 2
for (n= 0; n < 32; n++) { 3
sum += delta; 4
y += ((z << 4) + k[0]) ^ (z+sum) ^ ((z >> 5) + k[1]); 5
z += ((y << 4) + k[2]) ^ (y+sum) ^ ((y >> 5) + k[3]); 6
}
text[0] = y; text[1] = z; 7
}32 etapas.
Técnicas base:shift de bits, XOR, soma,dependentes da chave k
Departamento de Engenharia Informática
Exemplo de cifra simétrica: TEA
Sistemas Distribuídos 2010/11
void decrypt(unsigned long k[], unsigned long text[]) {
unsigned long y = text[0], z = text[1];
unsigned long delta = 0x9e3779b9, sum = delta << 5; int n;
for (n= 0; n < 32; n++) {
z -= ((y << 4) + k[2]) ^ (y + sum) ^ ((y >> 5) + k[3]);
y -= ((z << 4) + k[0]) ^ (z + sum) ^ ((z >> 5) + k[1]);
sum -= delta;
}
text[0] = y; text[1] = z;
}
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Data Encription Standard - DES
• 1970 - O National Bureau of Standards (NBS) dos EUA reconheceu a necessidade de um algoritmo padrão para cifra na sociedade civil
• 1972 – O NBS abriu um concurso para uma novo algoritmo que devia ter várias características, entre elas:
– Alto nível de segurança– Completamente especificado e fácil de perceber– O algoritmo devia ser público, a sua segurança não vinha de ser secreto– Adaptável a diversas utilizações– Fácil de realizar em dispositivos electrónico
• 1974 - Os primeiros resultados foram desencorajadores e houve um segundo concurso
• Desta vez foi considerada aceitável a proposta do algoritmo de cifra Lucifer desenvolvido pela IBM
• 1976 – depois de análise pelo DoD em particular pela NSA foi aceite como standard nos EUA
5
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Data Encription Standard - DES
• Blocos de 64 bits• Aplica funções de permutação e substituição a cada bloco• 16 etapas e duas permutações totais• Chave de 56 bits, desdobrada em chaves de 48 bits para
cada etapa• Pode ser realizado em software ou em hardware
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
DES
• Substituição, Permutação, Compressão e Expansão
Input (64)
P I
L0 R0
Li Ri
L1 R1
KS1
L16 R16
KS16
inverso PI
output (64)
Li-1 Ri-1
Ri
E + P
S-Box i
K (56)
[i] [i]
C + P
P-box
KSi
Departamento de Engenharia Informática
Chave do DES
• Só há registos de quebra por teste sistemático da chave
• Desde a sua publicação que a chave de 56 bits é considerada insuficiente, permitindo que o sistema seja alvo de ataques sistemáticos.
• Com o rápido aumento do desempenho das máquinas, esta questão torna-se cada vez mais preocupante.
• [Kaufman95] considera que as chaves deveriam crescer 1 bit cada dois anos.
• Se admitirmos que 56 bits era adequado em 79, este valor deveria ser 64 em 93 e 128 em 2121.
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Chave do DES
• Em 2006 um computador dedicado designado de COPACOBANA construído por $10,000 quebrou o DES com ataques de força bruta em 8,7 dias
• Em 2009 conseguia-se o mesmo em apenas 6 dias.
Sistemas Distribuídos 2010/11
6
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
DES Triplo
- Com 3 chaves de 56 bits diferentes, DES triplo consegue segurança efectiva de 112 bits (< 168 bits)
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Algoritmos de Cifra Simétrica
• DES
• Triple DES
• RC4
• RC5
• IDEA
• Blowfish
• AES – Advanced Encription Standard – norma futura dos EUA com chaves de 128, 196 e 256 bits
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Criptografia Assimétrica
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Algoritmos de cifra assimétrica
• Diffie Hellman
• RSA
• DSS – baseado ElGamal
• Curvas elípticas
7
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
RSA - Rivest Shamir Adleman
• Algoritmo de cifra de chave pública mais divulgado
• Patente expirou recentemente• Enquanto era válida, os autores permitiram aos
browsers utilizar o algoritmo sem pagar desde que reconhecessem a sua empresa (VeriSign) como autoridade para gerar certificados
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Fundamento do RSA
• P,Q números primos da ordem de 10100
• N = P*Q
• Z = (P-1)*(Q-1)
• Kp e Ks são coprimos com Z tais que Kp*Ks = 1 mod Z
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Exemplo do cálculo das Chaves
1- Escolhem-se dois números primos P e Q e calcula-se N e Z,
– Vamos supor P = 13, Q = 17:
– N = P * Q = 13 x 17 = 221
– Z = (P - 1)*(Q - 1) = 12 x 16 = 192
2 - A chave Kp é um número co-primo com Z.
Neste caso, Z = 2*2*2*2*2*2*3, pelo que podemos escolher Kp = 5
3 - Para calcular Ks é necessário resolver a equação Kp* Ks = 1 mod Z,
– Ks *5= 1 mod 192
– Ks * 5 = 1, 193, 385, …
– Ks = 385:5 = 77
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Chaves
• São trocados N e Kp que constituem a chave pública
• N e Ks são a chave privada
8
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Cifra/Decifra em RSA
• Cifra por blocos de dimensão k, em que 2k < N– No nosso exemplo, k=7
• Para cifrar mensagem em claro M:
{M}Kp = MKp mod N
• Para decifrar mensagem cifrada C:
{C}Ks = CKs mod N
Departamento de Engenharia Informática
Quebrar a chave privada sabendo a chave pública?
• Se atacante sabe Kp e N, como consegue descobrir a chave privada?– Para saber Ks é preciso saber Z
• (ver slides de geração de chaves)
– Para saber Z é preciso saber os dois números primos P e Q tal que PxQ=N
• Este problema é considerado demasiado difícil
• Se N > 10100, demora cerca de um milhão de anos com melhores algoritmos actuais
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Segurança do RSA
• Actualmente, chaves são normalmente de 1024-2048 bits
• Recomendação é de 2048 bits, pelo menos– Chaves de 256 bits quebradas em poucas horas com PC
– Em 1999, chave de 512 bits foi quebrada por sistema distribuído de centenas de computadores
– Alguns peritos acreditam que 1024 bits será quebrável a curto-prazo
– Computador quântico (se algum dia vier a existir) quebra chave RSA facilmente (tempo polinomial)
• Usando Algoritmo de Shor
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Segurança do RSA (2)
9
Departamento de Engenharia Informática
Considerações genéricas sobre utilização dealgoritmos de criptografia
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Criptografia – Segurança Total vs Prática
• As funções de cifra são consideradas totalmente segurasse: – independentemente do tempo e do poder computacional envolvido,
a chave não puder ser descoberta.
• Normalmente são praticamente seguras– o valor da informação não justifica o investimento computacional
(em máquinas especiais) – temporalmente limitada a sua validade e muito inferior ao tempo
necessário para decifrá-la com a tecnologia existente.
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Métodos genéricos de ataquea funções de cifra
• Dependem de em que situação o atacante estáa) Só tem acesso a mensagens cifradasb) Tem acesso a amostras de um texto em claro e cifradoc) A partir de qualquer texto original, pode gerar o cifrado
• Nos dois últimos, ataque exaustivo (brute-force) é sempre possível– Atacante itera todas as chaves possíveis até que cifra do texto
original resulte no cifrado
• Em c), caso a mensagem cifrada seja pequena, é também possível o chosen plaintext attack
– Quando mensagem cifrada C é pequena, itera-se todas as mensagens M até se obter C
Em qual se encontracifra assimétrica?
Como prevenir?
Como prevenir?Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Cifra híbrida (ou mista)
• Os algoritmos de cifra assimétrica são computacionalmente mais complexos que cifra simétrica– 100 a 1000 vezes mais lentos
• Mas a distribuição da chave pública é mais prática que a chave secreta
• Como conseguir o melhor dos dois mundos?
• Cifras híbridas
– Gera-se chave secreta, chamada chave de sessão
– Usa-se cifra assimétrica para trocar apenas uma chave secreta
– Usa-se cifra simétrica e a chave secreta para os restantes dados
10
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Criptografia:Classificação das cifras
• Segundo o modelo de operação – Por blocos (todas as que vimos até agora excepto One-time Pad)
• Facilita a análise
– Contínuas (stream)• Cifra de um bloco depende dos blocos anteriores
• Necessita mecanismo de inicialização
EKP C DK P
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Por Blocos versus Contínuas: Exemplo
Original Cifra Por Bloco Cifra Contínua
Fonte: Wikipedia
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Modos de cifra
• Inicialmente apresentados para o DES– ECB (Electronic Code Book)
– CBC (Cipher Block Chaining)
– Stream Cipher
• Podem ser usados por outras cifras por blocos
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Modos de cifra:ECB vs CBC
Electronic Code Book
Ci = EK(Ti)
Ti = DK(Ci)
Cipher Block Chaining
Ci = EK(Ti ⊕ Ci-1)
Ti = DK(Ci ) ⊕ Ci-1
T1 T2 Tn
C1 C2 Cn
EK EK EK EK
DK DK DK DK
T1 T2 Tn
T1 T2 Tn-1 Tn
C1 C2 Cn-1 Cn
EK EK EK EK EK
T1 T2 Tn-1 Tn
DK DK DK DK DK
IV
IV
Se Ci se perde narede, conseguedecifrar Ci+1?
CBC também pode ser usado com cifra
assimétrica
11
Departamento de Engenharia Informática
CBC (outra maneira de o entender)
Sistemas Distribuídos 2010/11
n
n+3 n+2 n+1 XOR
E(K, M)
n-1n-2n-3
plaintext blocks
ciphertext blocks
Departamento de Engenharia Informática
Modos de cifra:Stream Cipher
Sistemas Distribuídos 2010/11
XOR
E(K, M)number generator n+3 n+2 n+1
plaintext stream
ciphertext stream
buffer
keystream
Se Ci se perde narede, conseguimosdecifrar restantes?
Semelhança com outro algoritmo de
Cifra?
Stream Cipher não pode ser usado com cifra assimétrica. Porquê?
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Representação de dados binários em texto
• Codificação de base 64
• Usa um sub-conjunto de 64 caracteres do ASCII que são os caracteres mais "universais", ou seja, caracteres que são iguais em practicamente todos os códigos: A-Z, a-z, 0-9, +, /
• Caracter ‘=‘ usado no final para identificar quantidade de padding requerido
• Aumenta tamanho do conteúdo. Qual o overhead?
Departamento de Engenharia Informática
Assinatura Digital
Autenticação e Integridade da Informação
12
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Assinaturas digitais
• Identificar inequivocamente o autor de um texto (autenticidade)
• Impedir alterações do texto (integridade)• Impedir que o autor repudie o conteúdo a
posteriori (não-repudiação)
• As assinaturas não fazem sentido isoladas; só junto do texto a que se referem
Departamento de Engenharia Informática
Assinatura Digital
Sistemas Distribuídos 2010/11
{h}Kpri
M
Signing
Verifying
E(Kpri, h)
128 bits
H(M) h
M
hH(doc)
D(Kpub ,{h}) {h}Kpri h'
h = h'?
M
signed doc
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Funções de Resumo ou Dispersão (Digest/Hash)
• Função H que recebe um texto (possivelmente longo) e devolve uma sequência de bits de comprimento fixo (e.g., 160 bits)
• Propriedades:– Eficiente – dado P é fácil calcular H(P)– Não-invertível – dado H(P) é difícil determinar P’ tal
que H(P’) = H(P)– Difícil encontrar P1, P2 tais que H(P1) = H(P2)
• Esta situação é chamada uma colisão
Departamento de Engenharia Informática
Porque é que deve ser difícil encontrar colisões?
Se não, seria fácil forjar assinaturas digitais.
Como?
Sistemas Distribuídos 2010/11
13
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Funções Resumo (Digest)
• A função MD5 [Rivest92]. – A informação é processada em blocos de 512 bits (16 palavras de 32 bits)
e o valor do resumo é uma palavra de 128 bits.
– Em cada etapa é calculado um novo valor de resumo baseado no valor anterior e no bloco seguinte de 512 bits da mensagem.
• A função SHA-1 é a norma dos EUA. Resumo de 160 bits
• A mais recente função SHA-2 produz um resumo de 256 a 516 bits
Message MD5 Digest
I need a raise of $10,000. 9i5nud5r2a9idskjs2tbuop2ildax
I need a raise of $100,000. 8m4ikijuelaidsfg8asyfnasdfgll
I need a raise of $1,000,000. 4M9i2t8c7h4361712t1h4e1d1otg7
Departamento de Engenharia Informática
MACs: Assinaturas low-cost
• Funções de hash muito mais rápidas que as funções de cifra
• Interessante ter método de assinatura digital que não implicasse cifra
…Como?
• Assumindo que interlocutores partilham segredo K é possível– Por exemplo, K pode ser chave de sessão em cifra
híbrida
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
MACs: Assinaturas low-cost
Sistemas Distribuídos 2010/11
M
Signing
Verifying
H(M+K) h
h'H(M+K)
h
h = h'?
K
M
signed doc
M
K
Departamento de Engenharia Informática
MACs: Discussão
• Quem pode validar mensagens assinadas?
• Que requisitos são assegurados?– Autenticidade e Integridade apenas
Sistemas Distribuídos 2010/11
14
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Distribuição e gestão de chaves
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Distribuição e gestão de chaves
• Distribuição das chaves é problema de difícil resolução• Cifras simétricas
– Há que divulgar um valor secreto a universos limitados de interlocutores legítimos
• Que o devem manter secreto
• Cifras assimétricas– Há que garantir que a chave privada apenas é conhecida pela
entidade a que pertence– Há que garantir que a chave pública é verdadeira e que não foi
modificada para induzir um agente a trocar informação com um atacante
• Ataque “man in the middle”• Autoridades de certificação
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Diffie-Hellman
• O objectivo deste protocolo é criar uma chave simétrica a partir da troca de valores em claro entre os dois interlocutores
• O algoritmo baseia-se na dificuldade computacional de efectuar logaritmos de grandes números.
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Diffie-Hellman
1. A e B escolhem números primos de 512 bits n e g e trocam-nos abertamente na rede.
2. Cada um escolhe agora aleatoriamente um número de 512 bits e mantém-no secreto (designemo-los por x e y). Calculam respectivamente:
1. TA = gx mod n2. TB = gy mod n
3. TA e TB são trocados entre os dois interlocutores.
4. A calcula TBx mod n e B calcula TAy mod n.
5. Estes valores são a chave secreta a utilizar pelos interlocutores. Os valores são idênticos, porque:
TBx mod n = (gy)x mod n = gx.y mod n = (gx)y mod n = TAy mod n
Propriedade de aritmética modular
15
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Man-in-the-Middle
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Certificados de chaves públicas
• Validação de assinaturas digitais– Sensível à correcção das chaves públicas respectivas
• Têm de ser as correctas• Têm que estar ainda em uso
• Certificados de chaves públicas– Documento que associa uma chave pública a:
• Um dono (nome, e-mail, etc.)• Datas (de emissão, de validade)• Outra informação
– assinado por uma autoridade de certificação• Institucional ou não
• A norma X.509 é a mais utilizada para formato de certificados
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Formato do Certificado X509
Subject Distinguished Name, Public Key
Issuer Distinguished Name, Signature
Period of validity Not Before Date, Not After Date
Administrative information Version, Serial Number
Extended information
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Autoridades de certificação:Sistemas ad-hoc ou hierárquicos
• Certificação ad-hoc– Cada utilizador escolhe em quem confia como autoridade de
certificação (ex. PGP)
• Certificação hierárquica– Existe uma hierarquia de certificação (institucional)
• Árvore de Certification Authorities (CAs)– Cada CA emite certificados assinados com a sua chave pública
• Que é distribuída em certificados assinados pela CA acima na hierarquia
• A chave pública da raiz é bem conhecida (configurada manualmente, e.g., os browsers reconhecem a VeriSign)
– Funções de uma CA• Emissão e distribuição de certificados• Gestão e distribuição de listas de certificados revogados
16
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Public Key Infrastructure (PKI)
• Infra-estrutura de apoio ao sistema de Chaves-públicas– Criação segura de pares de chaves assimétricas
– Criação e distribuição de certificados de chaves-públicas
– Definição e uso das cadeias de certificação
– Actualização, publicação e consulta da lista de certificados revogados
– Revogação de certificados: qual o compromisso?
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Sistemas Distribuídos
Autorização
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Controlo de direitos de acesso
• Modelo conceptual– Os objectos são protegidos por um monitor de controlo de
referências
– Cada agente, antes de poder efectuar um acção sobre um objecto, tem que pedir autorização ao monitor
– O monitor verifica se o agente está ou não autorizado através de uma matriz de direitos acesso
17
Departamento de Engenharia Informática
Controlo dos Direitos de Acesso
• Um Monitor de Controlo de Referências valida quando uma operação é efectuada se o agente tem direito de a executar.
– Os objectos só podem ser acedidos através do monitor de controlo de referências;
– Os objectos têm de ser univocamente identificados e o identificador não pode ser reutilizado sem precauções adicionais.
– Num sistema multiprogramado a informação relativa à matriz é mantida dentro do espaço de isolamento do núcleo.
– Esta situação é, obviamente, diferente numa rede
• Os ataques a esta política visam essencialmente subverter o isolamento entre os agentes mais que procurar alterar a matriz ou eliminar o controlo do monitor de controlo de referências.
Departamento de Engenharia Informática
Matriz de direitos de acesso
• Decomposição da tabela– Listas de controlo de acesso (Access Control Lists, ACLs)
• Guardadas junto de cada objecto
– Capacidades (capabilities)• Guardadas junto de cada agente
• A autenticação dos agentes é fulcral– Para determinar a parcela da ACL que lhe é aplicável
– Para distribuir as capacidades correctas
Objectos
Agentes O1 O2 O3 O4
A1 R RW RX ---
A2 RX --- RW R
Departamento de Engenharia Informática
ACLs vs Capacidades
• Capacidades permitem descentralizar autorização– Servidor analisa a capacidade enviada no pedido para
determinar se cliente tem direito ao que pede
– Não é necessário contactar nenhuma entidade centralizada que armazena ACLs
• Também suportam delegação facilmente
• Capacidade análoga a uma chave do mundo real
• E tem limitações análogas:– Pode ser roubada
– Revogar acesso a alguém que tem a chave é difícil
Como lidar com isto?
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Autenticação
18
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Autenticação
• A autenticação baseia-se sempre em o sistema apresentar um desafio que o agente deve saber responder.
• O desafio pode ser:– Fornecer um informação que deve ser secreta,
• Senha
– Apresentar um identificador físico• Cartão, Chave física
– Fornecer informação biométrica• Impressões digitais, estrutura da íris
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Autenticação em sistemas distribuídos: Aproximações
• Uso do mecanismo local de autenticação– Autenticação por cada ligação TCP/IP
• telnet, ftp, http
• Envio em claro de pares (nome, senha)
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Protocolo Simples de Autenticação
O segredo neste caso é a chave Kcs
O protocolo tem vários problemas:
– Não é recíproco, só autentica o cliente;
– O valor de D tem de variar senão pode ser reutilizado;
– É necessário estabelecer a chave secreta entre o cliente e o servidor.
1) C ->S: “Iniciar Sessão”2) S ->C: D3) C ->S: {D}Kcs
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Protocolo de Needham-Schroeder – criptografia simétrica
C
S
Saut
C, S, Nc
{Nc ,S, Kcs, {Kcs, C}Ks}Kc
{Kcs, C}Ks
{Ns}Kcs
{Ns-1}Kcs
C S Saut
C
S Kcs
Saut Kc Ks
Pode ser alvo de Replay Attackse atacante descobrir KCS e enviar esta mensagem para S
19
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Autenticação : Kerberos (Simplificado)
C
S
Saut
C S Saut
C
S Kc,s
Saut Kc KS
ticketx,y = {x, y, T1, T2, Kx,y}Ky
authx,y = {x, Treq}Kx,y
C, S, n
{Kc,s, n}Kc, ticketc,s
login
{Treq, resposta}Kc,s
ticketc,s, authc,s, pedido, Treq
acesso a S
Timestamps reais para evitar re-utilização de tickets antigos (implica relógios sincronizados)
Autenticador: para evitar re-envio de pedidos antigos(implica relógios sincronizados)
Departamento de Engenharia Informática
Arquitectura Kerberos (completo)
Sistemas Distribuídos 2010/11
ServerClient
DoOperation
Authenticationdatabase
Loginsession setup
Ticket-grantingservice T
Kerberos Key Distribution Centre
Serversession setup
Authen-tication
service A1. Request for
TGS ticket
2. TGSticket
3. Request forserver ticket
4. Server ticket5. Service
request
Request encrypted with session key
Reply encrypted with session key
Servicefunction
Step B
Step A
Step C
C S
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Autenticação : Kerberos (V5)
C S TGS Saut
C
S Kc,s
TGS Kc,tgs Ks
Saut Kc Ktgs
ticketx,y = {x, y, T1, T2, Kx,y}Ky
authx,y = {x, Treq}Kx,y
C
S
Saut
TGS
C, TGS, n
{Kc,tgs, n }Kc , ticketc,tgs
login
ticketc,tgs, authc,tgs, S, n2
{Kc,s, n2 }Kc,tgs, ticketc,s
{Treq, resposta}Kc,s
ticketc,s, authc,s, pedido, Treq
acesso a S
Porquê a separação Saut/TGS?
pedido deacesso a S
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Kerberos
• Escalabilidade– Subdivisão em realms
– Cada realm possui um Saut e um TGS
– Um realm pode aceitar autenticações feitas por outro
• Exploração– Segurança física dos servidores e das respectivas BDs
• Saut e TGS
– Relógios sincronizados• Para validar tickets e authenticators
20
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Canal de Comunicação Seguro
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Canais de comunicação seguros: Funcionalidade
• Privacidade– Dos dados
• Cifra dos dados enviados– Dos fluxos de informação
• Integridade– Das mensagens
• Adição de valores de controlo não forjáveis– Dos fluxos de mensagens
• Contextos de cifra e/ou controlo
• Autenticidade– Dos interlocutores
• Cifra de valores pré-combinados e frescos– Com uma chave secreta partilhada por emissor e receptor– Com a chave privada do emissor
• Não Repudiação• Autorização
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Argumento “extremo-a-extremo”(End-to-end principle)
• As funcionalidades dos protocolos de comunicação devem ser implementadas pelos extremos do canal de comunicação (sempre que possível), pois…– Ao implementar nos níveis mais baixos, obrigam todos
os canais a pagar o seu custo, mesmo que não queiram
– Evitam redundâncias, quando as funcionalidades têm de ser repetidas extremo-a-extremo
• Princípio de desenho do IP
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Nível de Protocolo
• Nível de protocolo onde realizar o canal seguro– Ligação de dados
• Podia ser eficientemente implementado no hardware do controlador de rede.
• Não evita o ataque aos comutadores
– Rede • ex.: IPsec – para Virtual Private Networks• Não vai até ao nível do transporte
– Interfaces de Transporte • Sockets - ex.: SSL
– Aplicação : • ex.: HTTPS, SSH, PGP, PEM, SET, Handlers dos Web Services
21
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Exemplo: Canal seguro e os RPC
• Se a cifra para garantir o canal seguro for efectuada antes dos stubs perde-se a sua capacidade de tratar a heterogeneidade
– Uma grande vantagem dos sistemas de RPC é tratar a heterogeneidade automaticamente nas funções de adaptação - stub
• A cifra tem de ser feita depois– Mas convém que seja dentro do mecanismo de RPC para garantir
segurança de extremo a extremo,
• O RPC pode ser baseado num canal SSL mas há limitações importantes
• Se a mensagem SOAP tiver intermediários estes têm de receber parte da informação mas não necessitam de a receber toda em aberto.
– Necessidade de cifrar apenas partes da mensagem.
• Nos Web Services os handlers foram pensados para permitir implementar as funções de segurança na sequência certa
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Web Services - Handlers
• Handler Chain– Sequência de handlers executados sobre pedidos e respostas
• Handler– Extende a classe
• javax.xml.rpc.handler.Handler
– Métodos relevantes• handleRequest(MessageContext context)
• handleResponse(MessageContext context)
• handleFault(MessageContext context)
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Exemplo handler de segurança
public boolean handleRequest(MessageContext context) {
System.out.println(this + ">\n\t handleRequest(MessageContext=" + context + ")");
try {
SOAPMessageContext smc = (SOAPMessageContext) context;
SOAPMessage msg = smc.getMessage();
SOAPPart sp = msg.getSOAPPart();
SOAPEnvelope se = sp.getEnvelope();
SOAPBody sb = se.getBody();
SOAPHeader sh = se.getHeader();
if (sh == null) {sh = se.addHeader();
}
// cipher message with symmetric key
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
msg.writeTo(byteOut);
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, KeyManager.getSecretKey());
byte[] cipheredMessage = cipher.doFinal(byteOut.toByteArray());
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Exemplo handler de segurança
// encode in base64
BASE64Encoder encoder = new BASE64Encoder();
String encodedMessage = encoder.encode(cipheredMessage);
// remove clear text
sb.detachNode();
sh.detachNode();
// reinitialize SOAP components
sb = se.addBody();
sh = se.addHeader();
// store message
SOAPBodyElement element =
sb.addBodyElement(se.createName("CipherBody"));
element.addTextNode(encodedMessage);
} catch (Exception e) { System.out.println(this + ">\n\t
Exception caught in handleRequest:\n" + e);
return false;
}
return true;
}
22
Departamento de Engenharia Informática
Caso de estudo: TLS/SSL(base do HTTPS)
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
SSL protocol stack
Sistemas Distribuídos 2010/11
SSLHandshakeprotocol
SSL ChangeCipher Spec
SSL AlertProtocol
Transport layer (usually TCP)
Network layer (usually IP)
SSL Record Protocol
HTTP Telnet
SSL protocols: Other protocols:
Departamento de Engenharia Informática
TLS handshake protocol
Sistemas Distribuídos 2010/11
Client Server
ClientHello
ServerHello
Certificate
Certificate Request
ServerHelloDone
Certificate
Certificate Verify
Change Cipher Spec
Finished
Change Cipher Spec
Finished
Establish protocol version, session ID,
cipher suite, compression method,
exchange random values
Optionally send server certificate and
request client certificate
Send client certificate response if
requested
Change cipher suite and finish
handshake
Departamento de Engenharia Informática
TLS handshake: opções
Sistemas Distribuídos 2010/11