Self-organised Group Key Management for Ad Hoc Networks Adriano Simões 53813 Tiago Almeida 53867 Problema ■ Desenvolver um protocolo para estabelecer uma chave de sessão comum a um conjunto de nós. Motivação ■ Cenários de Guerra ■ Catástrofes ■ Emergências ■ Monitorização Ambiental ■ Entretenimento (Rede Segura de Portáteis/PDA's) Requisitos ■ Não existe qualquer tipo de acordo à priori (infraestrutura, chaves partilhadas, routing, “terceiras entidades confiáveis”) ■ Chave tem de ser gerada por todos. ■ Rede tem de permitir que nós se juntem ou a abandonem facilmente. ■ TEM DE SER SEGURO! (Confidencial) Ideia do protocolo ■ Alguns nós da rede são definidos como “grupo iniciador” (Initiator Group = IG) ■ IG combina entre si (de forma segura) uma chave de sessão a usar. ■ Chave de sessão é propagada ao resto da rede (de forma segura). ■ Todo o tráfego “útil” é cifrado com chave de sessão (qualquer algoritmo) Restrições ■ Os nós que iniciam a rede (IG) têm de conseguir comunicar uns com os outros directamente. ■ Cada nó tem uma maneira única de ser identificado. (ex: SIM card) Ideia “refinada” do protocolo ■ IG acorda um conjunto P de chaves e particiona-o em K subconjuntos. {1,2,3,4,5,6} { {1,2} , {3,4} , {5,6} } ■ Cada nó escolhe aleat. Uma chave de cada subconjunto. (cada um fica com K chaves). ■ Nós tentam “adivinhar” as chaves que os vizinhos escolheram aleat. ■ Quando cada nó souber as chaves do vizinho, geram todos uma chave de sessão. Notação ■ Existe um conjunto P de chaves igual para todos os nós e público. ■ Conjunto P tem tamanho N. ■ O conjunto P irá ser partido em k blocos de m elementos (N=mk). ■ L é o número mínimo de chaves partilhadas entre cada par de nós para que se considere que eles têm uma ligação segura. Protocolo ■ Consiste em 3 fases: Setup Inicial. Descoberta de chaves partilhadas. Estabelecer chave de sessão e propagá-la a toda a rede. Protocolo ■ Consiste em 3 fases: Setup Inicial. Descoberta de chaves partilhadas. Estabelecer chave de sessão e propagá-la a toda a rede. Setup Inicial ■ Definir o conjunto P (tamanho N e elementos). ■ Definir k (número de subconjuntos). ■ Partir P em k subconjuntos chamados blocos. ■ Definir L. ■ (Isto pode ser hardcoded ou negociado dinamicamente) ■ Cada nó escolhe 1 chave de cada bloco aleatoriamente. Protocolo ■ Consiste em 3 fases: Setup Inicial. Descoberta de chaves partilhadas. Estabelecer chave de sessão e propagá-la a toda a rede. ■ ■ Cifras Homomórficas Cifras Homomórficas: E(A) & E(B) = E(A&B) , & é uma operação qualquer. K*E(A) = E(K*A) Descoberta de chaves partilhadas 1/6 ■ Na fase de Setup cada nó escolheu k chaves do conjunto P. ■ A tem de conseguir perceber as chaves de B e de C que são iguais às suas. Como? Descoberta de chaves partilhadas 2/6 ■ A constrói um polinómio FA(x)=(x-KA1)*…*(x-KAk) (fácil ver que FA(KA1) = 0) ■ Aplica a distributiva e obtém os coeficientes do polinómio. (Exemplo para B) ■ Cifra os coeficientes com algoritmo de cifra homomórfico e envia a B. ■ B recebe o polinómio, calcula: Zi = EKA(rFA(KBi)) onde r é um número aleatório e envia para A. Descoberta de chaves partilhadas 3/6 ■A decifra obtendo rFA(KBi). ■Se este valor for 0 então a chave é igual tanto em A como em B. Descoberta de chaves partilhadas 4/6 ■ “Demonstração” ■ B tem o seguinte: EKA(c1), … , EKA(ck+1) EKA(c1)*xk + … + EKA(ck+1)* x0 EKA(c1)*B1k + … + EKA(ck+1)* B10 EKA(c1 * B1k) + …. + EKA(ck+1 *B10) EKA(c1 * B1k + ... + ck+1 *B10) EKA(FA(KB1)) = = = = Porquê o r ? Atacante sabe que o B respondeu com algo estilo: EKA(c1)*Xk + … + EKA(ck+1)* X0 E também sabe EKA(ck) , portanto seria só resolver a equação em ordem a X para obter os Bi Descoberta de chaves partilhadas 5/6 ■ Este processo é repetido para todas as chaves de cada nó, para todos os nós. ■ Finalmente, cada nó fica com uma matriz que diz para cada nó as chaves que são comuns. ■ Matriz tem q-1 linhas por k colunas, onde q é o número de nós no IG. Descoberta de chaves partilhadas 6/6 ■ O IG considera-se bem formado se existirem L chaves partilhadas entre cada par de nós do IG. ■ Se não existirem, os nós não concordantes voltam a repetir o processo para tentar acertar em chaves comuns. Protocolo ■ Consiste em 3 fases: Setup Inicial. Descoberta de chaves partilhadas. Estabelecer chave de sessão e “propagá-la” a toda a rede. Estabeler chave de sessão ■ Cada nó i (pertencente a IG) gera um aleatório Si ■ Cada nó i calcula o XOR de todas as L chaves partilhadas KIG = K1IG xor…xor KLIG ■ Cada nó i cifra Si com KIG e envia para todos os vizinhos (pertencentes a IG). ■ Cada nó decifra com KIG e calcula a chave de sessão Ks = S1 xor … xor Sr ■ Finalmente (Chave partilhada entre o IG)! Propagar chave de sessão ■ Cada nó do IG manda a chave de sessão para os vizinhos (só para os que tem ligação segura, ou seja, L chaves partilhadas). Ideia: O novo Nó junta-se a partir de um Nó já pertencente à rede. ➔ A Chave de Sessão tem que ser mudada para que o novo nó não veja comunicação passada (Segurança Futura Perfeita). ➔ Propagar chave de sessão 2 ■ Cada nó na fronteira repete a fase 2 com os vizinhos fora do IG. ■ Gera-se uma nova chave de sessão aplicando função não invertível à chave de sessão actual. (seg. futura perfeita) ■ Nós da rede passam a usar a nova chave. ■ Nova chave enviada para o novo membro usando as L chaves comuns como cifra. Seguro? ■ Soa bem, mas será realmente seguro?! ■ Situação1: Atacante consegue apanhar o tráfego entre todos os nós. Seguro? ■ Mensagens trocadas na fase 2 são cifradas com cifra homomórfica segura. ■ Desde que o algoritmo de cifra seja seguro, atacante não tem qualquer informação das L chaves partilhadas. Chave de sessão também vai cifrada com algoritmo seguro. ■ ■ ■ ■ N=mk chaves possíveis. Ele sabe valor de L (público) mas não sabe de que bloco é que cada chave veio. Vai ter de testar (kCL)mL conjuntos de chaves. Seguro? ■ ■ Parâmetros bem definidos: 1264 chaves, partidas em blocos de 4 316 blocos. 20 chaves partilhadas por todos. ■ m=4 , L=20 , k=316 ■ (316C20)420 Seguro! ■ ■ Parâmetros bem definidos: 1264 chaves, partidas em blocos de 4 316 blocos. 20 chaves partilhadas por todos. ■ m=4 , L=20 , k=316 ■ (316C20)420 ~= 2150 Seguro! ■ Situação 2: Atacante apoderou-se de um dos nós. ■ ■ Assumindo que os vizinhos conseguem detectar essa situação… B envia para rede a dizer “D é espião!” Todas as chaves comuns entre B e D estão comprometidas! Seguro! ■ D é eliminado da lista de nós autorizados da rede. ■ Se a intersecção entre chaves comuns BD com chaves BA e BC for “pequena” segurança da rede continua intacta. ■ B volta a juntar-se à rede. Mais detalhes ■ Protocolo é independente do algoritmo de Cifra E(.) desde que seja homomórfico na soma. ■ Paper usa algoritmo de cifra algo complexo para ser usado, proposto por Chan. ■ A. C.-F. Chan and E. S. R. Sr. Distributed symmetric key management for mobile ad hoc networks. In Infocom 2004, 2004. Consideramos não ser importante devido à independência do protocolo. Eficiência e mobilidade • Protocolo é muito pesado. – K+1 coefs k+1 cifras + k decifras. – Cada nó faz o mesmo. N nós n(k^2 + 2k +1) trocas de informação na rede e cálculos. – Nj - nós a juntar, p – custo (de)cifra homomórfica , a – custo de soma em dados cifrados homomórficamente. Memória K valores Tempo processamento N((2k+1)p + ak2) Custo junção Nj((2k+1)p + ak2) Mais detalhes ■ Custo amortizado. Cada nó só precisa de 1 ligação segura com 1 vizinho para pertencer à rede. ■ Um nó ao mover-se pode ganhar novos vizinhos e negociar chaves com eles aumentando a fiabilidade da rede. Como definir bem os parâmetros? ■ Parâmetros mal definidos podem tornar a probabilidade de formação de IG muito baixa ou tornar o sistema fraco. ■ Bons valores tornam o sistema fortíssimo e com boa probabilidade de formação de IG (>=0.5). ■ Fácil ver que: Quanto maior L maior a segurança e menor a probabilidade de formação de IG. Quanto mais nós no IG maior a força da chave de sessão mas menor a probabilide de formação de IG. Quanto menor k (e menor m para N fixo N=mk) menor a probabilidade de formação de IG mas maior a segurança. Trabalhos relacionados ■ Artigo refere dois outros trabalhos parecidos: Chan Eschenauer and Gligor ■ O primeiro tem baixa probabilidade de formação de IG (muito baixa). ■ Segundo requer terceira entidade confiável. ■ Algoritmo de cifra usado é o do Chan. Dúvidas / sugestões?