Troca de Chave Criptográfica
Anteriormente , discutimos a diferença entre criptografia simétrica e assimétrica e hoje falaremos sobre como as chaves são realmente trocadas.
Em geral, os protocolos de troca de chave criptográfica ou troca de chave criptografada (EKE) permitem que as duas partes gerem um segredo compartilhado sem revelar o segredo a terceiros. Isso geralmente é feito usando uma combinação de criptografia de chave pública e algoritmos matemáticos. O segredo compartilhado pode então ser usado como uma chave para uma cifra simétrica, que permite que as duas partes se comuniquem com segurança.
Uso
Como o método usa chave pública, ele naturalmente se aplica apenas à criptografia assimétrica, pois na criptografia simétrica as chaves não são compartilhadas - conhecidas e acordadas com antecedência.
A troca de chaves criptográficas é um método de troca segura de chaves criptográficas em uma rede. É um aspecto fundamental de muitos protocolos criptográficos, pois permite que duas partes estabeleçam um segredo compartilhado que pode ser usado para se comunicar com segurança entre si.
A troca é usada em uma variedade de aplicações, incluindo comunicação segura, transações online seguras e controle de acesso. Geralmente é usado para estabelecer uma conexão segura entre duas partes, como um cliente e um servidor, ou entre dois dispositivos. Portanto, antes que qualquer arquivo possa ser enviado com segurança por protocolos como FTPS, HTTPS e SFTP, as duas partes em comunicação devem primeiro se envolver em uma troca de chaves.
Visão geral
Na forma mais geral de EKE, pelo menos uma parte criptografa uma chave pública efêmera (única) usando uma senha e a envia para uma segunda parte, que a descriptografa e a usa para negociar uma chave compartilhada com a primeira parte.
Existe outra variação deste esquema, chamada Augmented-EKE. Os métodos aumentados têm o objetivo adicional de garantir que os dados de verificação de senha roubados de um servidor não possam ser usados por um invasor para se fazer passar pelo cliente, a menos que o invasor primeiro determine a senha (por exemplo, executando um ataque de força bruta nos dados roubados).
Os dois algoritmos de troca de chaves mais populares são RSA e Diffie-Hellman (agora conhecido como Diffie-Helmlman-Merkle). Provavelmente não seria exagero dizer que o advento desses dois principais protocolos de troca acelerou o crescimento da Internet, especialmente em termos de negócios. Isso ocorre porque esses dois protocolos permitem que clientes e servidores, bem como servidores e servidores, troquem chaves criptográficas em um meio inseguro (a Internet) e, por sua vez, permitem que eles façam transações eletronicamente de maneira segura.
Ultimamente, o surgimento da criptografia de curva elíptica introduziu novos protocolos de troca como ECDH (Elliptic Curve Diffie-Hellman) e ECDHE (Elliptic Curve Diffie-Hellman Ephemeral).
Vamos nos concentrar na família Diffie-Hellman, conhecida como DH-EKE, que sobreviveu a vários ataques ao longo dos anos e levou a variações aprimoradas.
Diffie-Hellman
Em 1976, Whitfield Diffie e Martin Hellman publicaram um protocolo criptográfico chamado troca de chaves Diffie-Hellman (D-H) baseado em conceitos desenvolvidos pelo aluno de doutorado de Hellman, Ralph Merkle. O protocolo permite que os usuários troquem chaves secretas com segurança, mesmo que um oponente esteja monitorando esse canal de comunicação. Baseia-se na ideia de usar a exponenciação em um campo finito para gerar um segredo compartilhado que pode ser usado para criptografar e descriptografar mensagens.
Aqui está um exemplo do processo de troca de chaves Diffie-Hellman e conforme ilustrado no diagrama abaixo:
Alice e Bob concordam em um corpo finito e um número primo dentro desse corpo (isso é conhecido como “módulo”). Digamos que eles escolham o corpo finito GF(23), p , e o número primo 5, g .
- Alice seleciona um inteiro secreto, “a”, e Bob seleciona um inteiro secreto, “b”. Esses inteiros serão usados para gerar o segredo compartilhado.
- Alice calcula A = 5^a mod 23 e envia A para Bob. Bob calcula B = 5^b mod 23 e envia B para Alice.
- Alice calcula o segredo compartilhado executando o seguinte cálculo: sharedSecret = B^a mod 23. Bob calcula o segredo compartilhado usando o mesmo cálculo: sharedSecret = A^b mod 23.
- Tanto Alice quanto Bob agora têm o segredo compartilhado, que podem usar como uma chave para criptografar e descriptografar mensagens.
# Alice's side of thNote that in this example, the shared secret is the same for both Alice and Bob, even though they used different secret integers to generate it. This is because the shared secret is generated using a mathematical function that is commutative, meaning that the order of the operands does not affect the result. This property is what allows Alice and Bob to establish a shared secret without revealing their secret integers to each other.e key exchange
# Choose finite field and prime number
field = GF(23)
prime = 5
# Choose secret integer
secretA = 6
# Compute A and send to Bob
A = (prime ^ secretA) mod field
send A to Bob
# Receive B from Bob
B = receive from Bob
# Compute shared secret
sharedSecret = (B ^ secretA) mod field
# Bob's side of the key exchange
# Choose secret integer
secretB = 15
# Compute B and send to Alice
B = (prime ^ secretB) mod field
send B to Alice
# Receive A from Alice
A = receive from Alice
# Compute shared secret
sharedSecret = (A ^ secretB) mod field
Essa propriedade é o que permite que Alice e Bob estabeleçam um segredo compartilhado sem revelar seus inteiros secretos um ao outro.
A razão pela qual a troca de DH funciona é a criptografia de logaritmo discreto, que se baseia na dificuldade de resolver o problema do logaritmo discreto.
Resumidamente, é um problema matemático que envolve encontrar o inteiro “x” na equação “g^x = y mod p”, onde “g” e “y” são conhecidos, e “p” é um número primo. Este problema é considerado difícil de resolver porque não há nenhum algoritmo eficiente conhecido para encontrar o valor de “x” para valores arbitrários de “g”, “y” e “p”.
No geral, embora o Diffie-Hellman seja um protocolo de troca de chaves amplamente usado e eficaz, no entanto, existem várias limitações práticas, o que torna a Curva Elíptica Diffie-Hellman (ECDH) uma escolha preferível, se possível.
Curva Elíptica Diffie-Hellman (ECDH)
Elliptic Curve Diffie-Hellman (ECDH) é uma variante do protocolo de troca de chaves Diffie-Hellman que usa criptografia de curva elíptica em vez da exponenciação tradicional em um campo finito. O ECDH tem várias vantagens sobre o Diffie-Hellman comum:
- O ECDH é mais eficiente: as operações de curva elíptica são geralmente mais rápidas e requerem menos poder computacional do que as operações de campo finito, tornando o ECDH mais eficiente do que o Diffie-Hellman comum. Leia mais sobre como funciona e suas vantagens no artigo anterior .
- O ECDH é mais seguro: a criptografia de curva elíptica geralmente é considerada mais segura do que a criptografia de campo finito, pois é mais resistente a certos tipos de ataques.
- As chaves ECDH são mais curtas: como as operações de curva elíptica usam números menores, as chaves ECDH são geralmente mais curtas do que as chaves Diffie-Hellman comuns, tornando-as mais fáceis de transmitir e armazenar.
- O ECDH tem um tamanho de chave menor: como as operações de curva elíptica são mais eficientes e seguras, o ECDH pode atingir o mesmo nível de segurança que o Diffie-Hellman comum com um tamanho de chave menor. Isso pode ser particularmente útil em aplicativos em que o tamanho da chave é um fator limitante, como em certos tipos de dispositivos de hardware.
Curva Elíptica Diffie-Hellman Ephemeral (ECDHE)
Curva Elíptica Diffie-Hellman Efêmera (ECDHE) é uma variante da Curva Elíptica Diffie-Hellman (ECDH), que usa chaves efêmeras.
No ECDHE, cada parte gera um novo par de chaves de curta duração para cada sessão, em vez de usar um par de chaves estático de longa duração como no ECDH. Isso tem várias vantagens:
- Segurança aprimorada: como o ECDHE usa chaves efêmeras que são usadas apenas para uma única sessão, ele é mais resistente a certos tipos de ataques, como ataques de repetição, nos quais um invasor captura e reutiliza uma chave de uma sessão anterior.
- Segredo de encaminhamento: No ECDHE, o segredo compartilhado é derivado das chaves efêmeras, que são descartadas após a sessão. Isso significa que, mesmo que um invasor obtenha uma cópia das chaves efêmeras, ele não poderá descriptografar a comunicação anterior, pois o segredo compartilhado não é mais conhecido.
- Gerenciamento simplificado de chaves: no ECDHE, cada parte gera um novo par de chaves para cada sessão, em vez de gerenciar um par de chaves estático de longa duração. Isso pode simplificar o gerenciamento de chaves e reduzir o risco de comprometimento de chaves.





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)