domingo, 17 de março de 2013

Assinatura e Certificação Digital - Diffie-Hellman key exchange

... ainda dentro de Criptografia Assimétrica ...


A troca de chaves de Diffie-Hellman do inglês Diffie-Hellman key exchange é uma apenas uma especificação de um método de trocas de chaves, pode ser comparado a uma interface ou um protocolo, a especificação trata muito mais do que deve ser feito do que como deve ser feito. A especificação da troca de chaves de Diffie-Hellman é um método que permite que duas partes interessadas em estabelecer uma comunicação em um canal de comunicação não seguro, e sendo que estas partes ainda não têm uma chave de segurança compartilhada. Bem, o protocolo de Diffie-Hellman vem a estabelecer justamente a possibilidade da criação desta chave compartilhada para que possa existir a comunicação entre as tais partes interessadas até mesmo posteriormente fazendo a comunicação por um cifrador simétrico.
            Vale mencionar que o protocolo de troca de chaves de Diffie-Hellman tem alguns vários sinônimos, que são; acordo de chaves de Diffie-Hellman (Diffie-Hellman key agreement), estabelecimento de chaves de Diffie-Hellman (Diffie-Hellman key establishment), negociação de chaves de Diffie-Hellman (Diffie-Hellman key negotiation), troca de chave exponencial (Exponential key exchange), protocolo de Diffie-Hellman (Diffie-Hellman protocol), aperto de mão de Diffie-Hellman (Diffie-Hellman handshake). Portanto, qualquer que seja um dos supracitados dito, estaremos nos referenciando a mesma especificação de Diffie-Hellman.
            O protocolo de Diffie-Hellman foi desenvolvido em 1976 durante a colaboração entre o Whitefield Diffie e Martin Hellman e foi o primeiro método a praticar o estabelecimento de uma chave secreta compartilhada sobre um canal de segurança inseguro, o trabalho de Ralph Merkle foi uma grande influência, e Merkle notado como um dos inventores, tanto que o próprio Martin Hellman comentou em 2002 a importância de Merkle e colocou que o nome do protocolo correto deve ser “Diffie-Hellman-Merkle key exchange”. O protocolo permitiu em curto prazo o desenvolvimento do sistema RSA que é outro algoritmo de implementação da criptografia das chaves públicas que utiliza algoritmos assimétricos (analisaremos este no decorrer do trabalho).
            Em suma, a implementação do protocolo utilizaria naturalmente o Grupo Multiplicativo de inteiros de módulo p, onde p deve ser um número primo, e precisa também de outra variável que é “g”, cujo deve ser um primo raiz de “p”.
            Um exemplo na prática pode ser mais claro para ilustrar o estabelecimento da comunicação, para ajudar, dois personagens sendo eles Alice e Bob irão ilustrar os passos seguintes. Primeiramente, Alice e Bob devem combinar um número primo e atribuir este valor para “p”, vamos assumir que o valor é 23, sendo este um número primo válido. É necessário então obter um valor para “g”, cujo este deve ser um número primo raiz de “p”, sendo que o valor obtido é então o “5”. Estes valores não são secretos, são públicos, e trafegam normalmente em no canal não protegido. Agora Alice deve escolher um valor inteiro e assumir este valor para variável “a”, cujo podemos assumir o valor 6, então Alice envia para Bob no canal inseguro o valor de “g” elevado a “a” mod “p”, o valor obtido e a ser enviado a Bob pode ser denominado como “A”. O valor obtido então para “A” é 8, e o mesmo é enviado a Bob. Bob agora escolhe um valor inteiro, que deve ser atribuído a “b”, o valor para nosso exemplo será o valor 15, então ele deve calcular “B” que tem a expressão “g” elevado a “b” mod “p”. O valor calculado e obtido é o 19, que é então enviado a Alice. Alice deve então computar para si o valor “s” que é secreto, cujo obedece a expressão “B” elevado a “a” mod “p”, que obtém 2. Bob igualmente deve fazer este cálculo, porém com “A” que foi o valor recebido por Alice, e naturalmente deve obter o mesmo valor que Alice computou, sendo o valor 2.
Observa-se então que tanto Bob quanto Alice obtiveram o mesmo resultado no final das contas, e este resultado é a chave secreta compartilhada entre os dois, o que permite então que dado determinado método de criptografia simétrica, as duas partes podem manter uma comunicação segura, pois a chave de segurança foi estabelecida seguramente. Os únicos valores obtidos secretamente foram “a”, “b” e “s” que foi a chave secreta compartilhada no final, e os outros valores foram transmitidos em texto claro na comunicação não segura, os valores de “p”, “g”, “A” e “B”. Na prática, os valores obtidos para “p”, “a” e “b” não poderiam ser pequenos como o do nosso exemplo, pois desta maneira um terceiro poderia efetuar algumas poucas tentativas e acabar descobrindo a chave secreta, o ideal é que o valor para “p” seja um primo que tenha por volta de 300 dígitos ou mais, e os valores para “a” e “b” tenha por volta de 100 dígitos ou mais, assim, nem os melhores algoritmos ainda conhecidos ou os mais potentes computadores poderiam efetuar o cálculo de “a”, “b” e consequentemente da chave secreta cujo valor é referenciado por “s”. Desta maneira fica claro que a segurança do algoritmo contra terceiros maliciosos depende diretamente dos valores “p” que é um primo e dos valores secretos de cada uma das partes, estes valores devem ser muito grandes.
O exemplo apresentado é claramente utilizado em contextos em que é definida a chave secreta para comunicação com o protocolo de Diffie-Hellman e após isto a comunicação deveria ocorrer com a criptografia simétrica, onde é realidade para alguns protocolos de comunicação como a comunicação cliente servidor (SSL), onde os personagens Alice e Bob são dois computadores, ou aplicações como um Browser solicitante e a aplicação no servidor, que é o requisitado.
De qualquer maneira, o protocolo ou a especificação Diffie-Hellman pode ser naturalmente utilizado na infra-estrutura de chaves públicas. Por exemplo, a chave pública de Alice seria formada por (ga,g,p), sendo que para enviar uma mensagem para Bob, este deveria escolher um valor randômico “b” e informar este a Alice gb, assim Alice necessitaria de algoritmo de criptografia simétrico para cifrar a mensagem utilizando a chave (ga)b. Sendo o protocolo de Diffie-Hellman apenas uma especificação, então a escolha do algoritmo de criptografia simétrico é livre ao sistema de chaves públicas a ser implementado, lembrando é lógico que o algoritmo escolhido pelo remetente para cifrar deve ser informado ao destinatário para a operação de decifragem.

Nenhum comentário:

Postar um comentário

Obrigado por deixar seu comentário. Volte sempre.