11
Criptografia e Criptografia e Segurança em Redes Segurança em Redes
Capítulo Capítulo 1010
Quarta EdiçãoQuarta Edição
por William Stallingspor William Stallings
Tradução por Enrico AlvarezTradução por Enrico Alvarez
22
Capítulo10 – Capítulo10 – Gerenciamento de Gerenciamento de chaveschaves; ; Outros Criptosistemas Outros Criptosistemas
de Chave Públicade Chave Pública
Nenhum Singalês, seja homem ou mulher, se Nenhum Singalês, seja homem ou mulher, se aventuraria a sair de casa sem um punhado aventuraria a sair de casa sem um punhado de chaves em sua mão, pois sem esse de chaves em sua mão, pois sem esse talismã, ele teme que algum demônio possa talismã, ele teme que algum demônio possa tirar proveito do seu estado fraco para entrar tirar proveito do seu estado fraco para entrar em seu corpo. em seu corpo.
——O Ramo DouradoO Ramo Dourado, , Sir James George FrazerSir James George Frazer
33
Gestão de chavesGestão de chaves
a encriptação de chaves públicas ajuda a a encriptação de chaves públicas ajuda a enfrentar os principais problemas de distribuiçãoenfrentar os principais problemas de distribuição
Há dois aspectos presentes:Há dois aspectos presentes: distribuição de chaves públicas;distribuição de chaves públicas; uso da criptografia de chaves públicas de uso da criptografia de chaves públicas de
distribuição de chaves secretasdistribuição de chaves secretas
44
Distribuição de chaves públicasDistribuição de chaves públicas
pode ser considerada como uma utilização de:pode ser considerada como uma utilização de: anúncio público;anúncio público; diretórios publicamente disponíveis; diretórios publicamente disponíveis; autoridade de chave-pública; autoridade de chave-pública; certificados de chaves públicas.certificados de chaves públicas.
55
Anúncio PúblicoAnúncio Público utilizadores distribuiem chaves públicas para os utilizadores distribuiem chaves públicas para os
destinatários ou transmitem a comunidade em destinatários ou transmitem a comunidade em geralgeral por exemplo. anexar chaves PGP em por exemplo. anexar chaves PGP em
mensagens para o e-mail ou correio para mensagens para o e-mail ou correio para grupos de notícias ou lista de e-mailgrupos de notícias ou lista de e-mail
se muito fraco é falsificaçãose muito fraco é falsificação qualquer pessoa pode criar uma chave que qualquer pessoa pode criar uma chave que
diz ser alguém e difundiram-lodiz ser alguém e difundiram-lo até a falsificação ser descoberta alguém pode até a falsificação ser descoberta alguém pode
disfarçar-se como o usuário declaradodisfarçar-se como o usuário declarado
66
Diretório Publicamente disponívelDiretório Publicamente disponível
pode obterpode obter uma maior segurança, através do registo uma maior segurança, através do registo das chaves com uma lista públicadas chaves com uma lista pública
directório deve ser confiável com as propriedades:directório deve ser confiável com as propriedades: conter as entradas {nome, chaves públicas}; conter as entradas {nome, chaves públicas}; registo seguro de participantes no diretório;registo seguro de participantes no diretório; participantes podem substituir a chave a qualquer participantes podem substituir a chave a qualquer
momento;momento; o diretório é periodicamente publicado;o diretório é periodicamente publicado; o diretório pode ser acessado por via electrónica;o diretório pode ser acessado por via electrónica;
ainda vulnerável a adulteração ou falsificaçãoainda vulnerável a adulteração ou falsificação
77
Autoridade da Chave Pública Autoridade da Chave Pública
melhoram a segurança ao apertar controle melhoram a segurança ao apertar controle sobre a distribuição de chaves de diretóriosobre a distribuição de chaves de diretório
tem propriedades de diretóriotem propriedades de diretório e obriga os utilizadores a conhecer a e obriga os utilizadores a conhecer a
chave pública para o diretóriochave pública para o diretório os utilizadores interagem com o diretório os utilizadores interagem com o diretório
desejado para obter as chaves públicas desejado para obter as chaves públicas segurasegura requer acesso em tempo real ao diretorio requer acesso em tempo real ao diretorio
quando as chaves são necessáriasquando as chaves são necessárias
88
Autoridade da Chave Pública Autoridade da Chave Pública
99
Certificados de chave públicaCertificados de chave pública certificados permitem troca de chaves sem acesso certificados permitem troca de chaves sem acesso
em tempo real a autoridade de chaves públicasem tempo real a autoridade de chaves públicas um certificado de chave pública se liga a um certificado de chave pública se liga a
identidadeidentidade normalmente com outras informações como o normalmente com outras informações como o
prazo de validade, dos direitos de utilização, etcprazo de validade, dos direitos de utilização, etc com todo o conteúdo assinado por uma confiável com todo o conteúdo assinado por uma confiável
de chave pública ou Certificado de Autoridade (CA)de chave pública ou Certificado de Autoridade (CA) pode ser verificada por qualquer pessoa que pode ser verificada por qualquer pessoa que
conheça a autoridade de chaves públicasconheça a autoridade de chaves públicas
1010
Certificados de chave públicaCertificados de chave pública
1111
Chave Pública Distribuindo Chave Pública Distribuindo Chaves SecretasChaves Secretas
utilizar métodos anteriores para obter a chave utilizar métodos anteriores para obter a chave públicapública
pode usar de sigilo ou de autenticaçãopode usar de sigilo ou de autenticação mas os algoritmos de chaves públicas são mas os algoritmos de chaves públicas são
lentoslentos de modo geral pretende utilizar a encriptação da de modo geral pretende utilizar a encriptação da
chave privada para proteger o conteúdo chave privada para proteger o conteúdo mensagem mensagem
necessita, portanto, de uma chave de sessãonecessita, portanto, de uma chave de sessão há várias alternativas para a negociação de uma há várias alternativas para a negociação de uma
sessão adequadasessão adequada
1212
Distribuição de Chaves Secretas Distribuição de Chaves Secretas SimplesSimples
proposto em 1979 por Merkleproposto em 1979 por Merkle Um gera um novo par de chaves públicas Um gera um novo par de chaves públicas
temporáriastemporárias A envia a chave pública B e a sua identidadeA envia a chave pública B e a sua identidade B gera uma chave de sessão K e a envia para B gera uma chave de sessão K e a envia para
A criptografada, usando a chave pública A criptografada, usando a chave pública fornecidafornecida
A descriptografa a chave de sessão e ambos A descriptografa a chave de sessão e ambos utilizamutilizam
problema é que um adversário pode interceptar problema é que um adversário pode interceptar e personificar ambas as metades do protocoloe personificar ambas as metades do protocolo
1313
Chave Pública Distribuindo Chave Pública Distribuindo Chaves SecretasChaves Secretas
troca segura de chaves públicas:troca segura de chaves públicas:
1414
Distribuição de Chave HibridaDistribuição de Chave Hibrida mantém o uso da chave privada KDCmantém o uso da chave privada KDC parte da chave mestra para cada usuárioparte da chave mestra para cada usuário distribui sessões da chave utilizando chave mestradistribui sessões da chave utilizando chave mestra a chave pública é usada para distribuir a chave a chave pública é usada para distribuir a chave
mestremestre especialmente útil com usuários amplamente especialmente útil com usuários amplamente
distribuídos distribuídos racionalidaderacionalidade
desempenhodesempenho retrocompatibilidaderetrocompatibilidade
1515
Mudança da Chave Diffie-Hellman Mudança da Chave Diffie-Hellman
primeiro tipo de sistema de chaves públicas primeiro tipo de sistema de chaves públicas propostaspropostas
por Diffie & Hellman em 1976 juntamente com a por Diffie & Hellman em 1976 juntamente com a exposição do conceito de chave pública exposição do conceito de chave pública nota: agora sabemos que Williamson (UK nota: agora sabemos que Williamson (UK
CESG) secretamente propôs o conceito em CESG) secretamente propôs o conceito em 1970 1970
é um método prático para o troca pública de é um método prático para o troca pública de uma chave secretauma chave secreta
utilizado em uma série de produtos comerciaisutilizado em uma série de produtos comerciais
1616
Mudança da Chave Diffie-Hellman Mudança da Chave Diffie-Hellman um esquema de distribuição de chaves públicasum esquema de distribuição de chaves públicas
não pode ser usado para troca de uma não pode ser usado para troca de uma mensagem arbitrária mensagem arbitrária
prefencialmente isto pode estabelecer uma chave prefencialmente isto pode estabelecer uma chave comum comum
conhecido apenas para os dois participantesconhecido apenas para os dois participantes o valor da chave depende dos participantes (e as o valor da chave depende dos participantes (e as
informações de suas chaves privadas e públicas)informações de suas chaves privadas e públicas) baseado em uma exponenciação finita (Galois) baseado em uma exponenciação finita (Galois)
campo(modulo de um primo ou um polinómio)-fácilcampo(modulo de um primo ou um polinómio)-fácil segurança depende da dificuldade de calcular segurança depende da dificuldade de calcular
logaritmos discretos(semelhante ao fatorando)-dificillogaritmos discretos(semelhante ao fatorando)-dificil
1717
Configuração Diffie-Hellman Configuração Diffie-Hellman todos os usuários aceitam os parâmetros todos os usuários aceitam os parâmetros
mundiais:mundiais: grande primo inteiro ou polinómio grande primo inteiro ou polinómio qq aa sendo uma raiz primitiva mod sendo uma raiz primitiva mod qq
cada usuário (ex. A) gera a sua chavecada usuário (ex. A) gera a sua chave escolhe uma chave secreta (número):escolhe uma chave secreta (número): xxAA < q < q computar a sua chave pública: computar a sua chave pública: yyAA = = aa
xxAA mod q mod q
cada usuário torna pública a chave cada usuário torna pública a chave yyAA
1818
Troca de Chave Diffie-Hellman Troca de Chave Diffie-Hellman a chave da sessão compartilha para os usuários A a chave da sessão compartilha para os usuários A
& B é K& B é KABAB: :
KKABAB = = aaxxA.A.xxBB mod q mod q
= y= yAAxxBB mod q (qual mod q (qual BB pode computar) pode computar)
= y= yBBxxAA mod q (qual mod q (qual AA pode computar) pode computar)
KKABAB é usado como chave de sessão em chave é usado como chave de sessão em chave privada no regime de encriptação entre Alice e Bobprivada no regime de encriptação entre Alice e Bob
se Alice e Bob comunicam posteriormente, eles se Alice e Bob comunicam posteriormente, eles terão a mesma chave como antes, a menos que terão a mesma chave como antes, a menos que eles escolham novas chaves públicas eles escolham novas chaves públicas
atacante que precisa de um X, deve resolver um atacante que precisa de um X, deve resolver um log discretolog discreto
1919
Exemplo de Diffie-Hellman Exemplo de Diffie-Hellman os usuários Alice & Bob que desejam trocar as os usuários Alice & Bob que desejam trocar as
chaves:chaves: combinar com o primo combinar com o primo q=353q=353 e e aa=3=3 escolha aleatória de chaves secretas:escolha aleatória de chaves secretas:
A escolhe A escolhe xxAA=97, =97, B escolhe B escolhe xxBB=233=233
computar respectivas chaves públicas:computar respectivas chaves públicas: yyAA==33
97 97 mod 353 = 40 mod 353 = 40 (Alice)(Alice)
yyBB==33233233 mod 353 = 248 mod 353 = 248 (Bob)(Bob)
computar a chave de sessão partilhada como:computar a chave de sessão partilhada como: KKABAB= y= yBB
xxAA mod 353 = mod 353 = 2482489797 = 160 = 160 (Alice)(Alice)
KKABAB= y= yAA
xxBB mod 353 = mod 353 = 4040233233 = 160 = 160 (Bob)(Bob)
2020
Protocolos de Troca de chaveProtocolos de Troca de chave os usuários poderão criar chaves D-H os usuários poderão criar chaves D-H
públicas/privadas aleatórias cada vez que públicas/privadas aleatórias cada vez que se comunicamse comunicam
os usuários poderão criar uma chave D-H os usuários poderão criar uma chave D-H pública/privada conhecida e publicar em pública/privada conhecida e publicar em um diretório, que serão consultadas e um diretório, que serão consultadas e utilizadas para comunicação entre eles utilizadas para comunicação entre eles seguramenteseguramente
ambas estas são vulneráveis a um ataque ambas estas são vulneráveis a um ataque conhecendo-metade conhecendo-metade
autenticação das chaves é necessáriaautenticação das chaves é necessária
2121
Criptografia de Curvas ElípticasCriptografia de Curvas Elípticas a maioria das chaves públicas criptográficas a maioria das chaves públicas criptográficas
(RSA, DH) usa um inteiro ou polinómio (RSA, DH) usa um inteiro ou polinómio aritmético com números muito aritmético com números muito grandes/polinómiosgrandes/polinómios
impõe uma carga significativa de impõe uma carga significativa de armazenamento e processamento as chaves e armazenamento e processamento as chaves e mensagensmensagens
uma alternativa é a utilização curvas elípticasuma alternativa é a utilização curvas elípticas oferece segurança mesmo com poucos bits de oferece segurança mesmo com poucos bits de
tamanhotamanho mais nova, mas não tão bem analisadasmais nova, mas não tão bem analisadas
2222
Curvas Elípticas ReaisCurvas Elípticas Reais
uma curva elíptica é definida por uma uma curva elíptica é definida por uma equação em duas variáveis x e y, com equação em duas variáveis x e y, com coeficientescoeficientes
considere uma curva elíptica cúbica de formaconsidere uma curva elíptica cúbica de forma yy22 = = xx33 + + ax ax + + bb onde x,y,a,b são todos números reaisonde x,y,a,b são todos números reais também defini o ponto zero Otambém defini o ponto zero O
há a adição da operação para a curva elípticahá a adição da operação para a curva elíptica geometricamente a soma de Q+R é reflexo geometricamente a soma de Q+R é reflexo
da interseção de Rda interseção de R
2323
Exemplo de Exemplo de Curvas Elípticas Curvas Elípticas ReaisReais
2424
Curvas Elípticas Finitas Curvas Elípticas Finitas
criptografia de curvas elípticas usa curvas criptografia de curvas elípticas usa curvas cujas variáveis e coeficientes são finitoscujas variáveis e coeficientes são finitos
há duas famílias comumente utilizadas:há duas famílias comumente utilizadas: curva primária curva primária EEpp(a,b)(a,b) definida como Z definida como Zpp
• utilização de modulo de inteiros primosutilização de modulo de inteiros primos
• melhor em softwaremelhor em software curva binária curva binária EE22mm(a,b)(a,b) definida como GF(2 definida como GF(2nn))
• utilizar polinómios com coeficientes bináriosutilizar polinómios com coeficientes binários
• melhor em hardwaremelhor em hardware
2525
Criptografia de Criptografia de Curvas ElípticasCurvas Elípticas
ECC adiciona um modulo analógico de ECC adiciona um modulo analógico de multiplicaçãomultiplicação
ECC de adições repetidas é modulo analógico de ECC de adições repetidas é modulo analógico de exponenciaçãoexponenciação
necessidade de um "duro" problema de equiv para necessidade de um "duro" problema de equiv para um log discretoum log discreto Q=kPQ=kP, onde Q,P pertence a uma curva primaria, onde Q,P pertence a uma curva primaria é “fácil” para computar Q dado k,Pé “fácil” para computar Q dado k,P mas “difícil” para encontrar k dado Q,Pmas “difícil” para encontrar k dado Q,P conhecido como problema do algoritmo de curva conhecido como problema do algoritmo de curva
elípticaelíptica exemplo de Certicom : exemplo de Certicom : EE2323(9,17)(9,17)
2626
ECC Diffie-HellmanECC Diffie-Hellman
podemos fazer a troca de chaves análoga D-Hpodemos fazer a troca de chaves análoga D-H usuário seleciona uma curva adequada usuário seleciona uma curva adequada EEpp(a,b)(a,b) seleciona o ponto básico seleciona o ponto básico G=(xG=(x11,y,y11))
com grande ordem n S.T. com grande ordem n S.T. nG=OnG=O A & B seleciona as chaves primarias A & B seleciona as chaves primarias nnAA<n, n<n, nBB<n<n computa as chaves públicas: computa as chaves públicas: PPAA=n=nAAG, G, PPBB=n=nBBGG computa a chave compartinhada: computa a chave compartinhada: KK=n=nAAPPBB,, KK=n=nBBPPAA
desse mesmo desse mesmo KK=n=nAAnnBBGG
2727
ECC Criptografia/DecriptografiaECC Criptografia/Decriptografia várias alternativas, iremos considerar a mais simplesvárias alternativas, iremos considerar a mais simples primeiro deve codificar qualquer mensagem M como um primeiro deve codificar qualquer mensagem M como um
ponto da curva elíptica Pponto da curva elíptica Pmm
escolha da curva adequada & ponto G como em D-Hescolha da curva adequada & ponto G como em D-H cada usuário escolhe uma chave privada cada usuário escolhe uma chave privada nnAA<n<n
e computa a chave publica e computa a chave publica PPAA=n=nAAGG
para encriptar Ppara encriptar Pmm : : CCmm={kG, P={kG, Pmm+kP+kPbb}}, k aleatoriamente, k aleatoriamente
decripta Cdecripta Cmm e computa: e computa:
PPmm++kkPPbb––nnBB((kGkG) = ) = PPmm++kk((nnBBGG)–)–nnBB((kGkG) = ) = PPmm
2828
Segurança ECC Segurança ECC invoca o problema do logaritmo de curva elíptica invoca o problema do logaritmo de curva elíptica método mais rápido é o "método de Pollard rho"método mais rápido é o "método de Pollard rho" comparando a factoração, pode usar chaves de comparando a factoração, pode usar chaves de
tamanho muito menor do que com RSA etctamanho muito menor do que com RSA etc para chaves de comprimento equivalente os para chaves de comprimento equivalente os
cálculos são mais ou menos equivalentescálculos são mais ou menos equivalentes por isso para uma segurança similar ao ECC por isso para uma segurança similar ao ECC
oferece significativas vantagens computacionaisoferece significativas vantagens computacionais
2929
Comparação de tamanho das chaves Comparação de tamanho das chaves para uma segurança equivalentepara uma segurança equivalenteEsquema Simétrico
(chave com tamanho em bits)
Esquema baseado em
ECC(tamanho de n em bits)
RSA/DSA(modulos de
tamanho em bits)
56 112 51280 160 1024
112 224 2048128 256 3072192 384 7680256 512 15360
3030
SumarioSumario
Foi considerado:Foi considerado: distribuição de chaves publicasdistribuição de chaves publicas chave publica distribuição de chaves secretaschave publica distribuição de chaves secretas troca de cahve Diffie-Hellmantroca de cahve Diffie-Hellman criptografia de curvas elípticascriptografia de curvas elípticas