Tópicos
Acordo de Chaves
Criptografia simétrica tem por base um segredo partilhado entre duas entidades. No entanto, o acordo deste segredo é muito complicado aquando num canal não seguro (99% dos casos).
Problemas complicados
- Fatorização de inteiros - dado um inteiro N, encontrar a sua fatorização em números primos.
- Logaritmo discreto - dado um
a
e umb
, encontrarx
, tal que . - Raiz quadrada discreta - dado um
y
e umn
, encontrarx
, tal que .
Diffie-Hellman exchange
Funcionamento
-
Dois utilizadores, Alice e Bob, concordam em dois números
p
eg
(que podem ser públicos até). -
Alice escolhe um número aleatório
a
e Bob escolhe um número aleatóriob
como chave privadas. -
Alice calcula e Bob calcula .
-
Alice envia
A
para Bob e Bob enviaB
para Alice. -
Alice calcula e Bob calcula .
Repare-se que , ou seja, . Da mesma forma, e . Visto que a multiplicação é comutativa, os dois
s
gerados são exatamente iguais.
Ataque Man-in-the-middle
Visto que o algoritmo Diffie-Hellman não possui uma forma de garantir a autenticidade das mensagens trocadas no canal, não é possível afirmar com certeza com quem estamos realmente a comunicar. Nada impede que um adversário intercete a comunicação fazendo uso das chaves públicas de ambos os extremos.
Encriptação Híbrida
Combina a utilização de criptografia simétrica com a utilização de criptografia assimétrica. Também pode ser chamado de envelope digital.
Funcionamento
- Chave simétrica é gerada de forma aleatória.
- Mensagem é cifrada com essa chave.
- Chave gerada é cifrada com a chave pública do destinatário.
- No destino, é decifrada, com recurso à chave privada, a chave gerada aleatoriamente.
- Com recurso a essa, é decifrada a mensagem propriamente dita.
Criptografia de chave pública
Baseia-se no princípio de existir sempre um par de chaves por utilizador. Uma chave pública, que pode ser partilhada sem qualquer problema, e uma chave privada, que deve ser mantida em segredo.
Alguns exemplos
- Conteúdo cifrado com uma chave pública só pode ser decifrado com recurso à chave privada.
- Conteúdo cifrado com uma chave privada pode ser decifrada por qualquer utilizador, visto que a chave pública é, como o nome indica, pública.
Warning
Um dos maiores problemas em seguir a abordagem de cifrar mensagens com a chave pública do destinatário é que estaremos sempre a usar a mesma chave para decifrar (a privada). Se esta for comprometida, todas as mensagens anteriormente (e futuramente) trocadas são, também, comprometidas.
Primitivas
RSA
Algoritmo proposto por Ron Rivest, Adi Shamir e Leonard Adleman em 1977/8. A sua segurança é baseada na dificuldade de fatorizar inteiros - relembrar problemas complicados. O mesmo pode ser usado tanto para criptografia de chave pública como para assinaturas digitais.
Vantagens
- Segurança, já relatada no parágrafo anterior.
- Primitiva amplamente testada no mundo inteiro.
Desvantagens
- Lento para cifrar grandes quantidades de dados.
- Requer o uso de chaves cujo tamanho é muito grande.
- Não é possível (aconselhado) encriptar mensagens maiores que o tamanho da chave.
ECs
Curvas elípticas. A sua segurança é baseada na dificuldade de encontrar o logaritmo discreto - relembrar problemas complicados.
Vantagens
- Tamanhos de chave muito menores em comparação com o RSA, para o mesmo nível de segurança (256 vs 3072 bits, por exemplo).
- Mais eficiente que o RSA.
Desvantagens
- Complexidade matemática mais elevada.
- Menos compatibilidade com hardware antigo.
Referências
Secret Key Exchange (Diffie-Hellman) - Computerphile Diffie Hellman -the Mathematics bit- Computerphile