Como a chave em um protocolo de criptografia de chave privada é trocada?

12

O Windows NT usou um protocolo ponto a ponto em que um cliente pode se comunicar "com segurança" com um servidor usando uma cifra de fluxo para criptografar uma matriz de mensagens com alguma tecla . O servidor também criptografa sua resposta com a mesma chave k . Mas como está ciente dessa chave?kk

Mais geral: se Alice e Bob usam algum algoritmo de criptografia / descriptografia que opera na mesma chave privada , qual é a maneira segura de trocar essa chave? (sem usar uma chave de curso diferente)k

Isso é algo que sempre me perguntei ao estudar a criptografia de chave privada.

codd
fonte

Respostas:

6

A maioria dos algoritmos de chave privada depende da inviabilidade de certos cálculos, como a fatoração de um número em seus fatores primários, dada a infraestrutura de computação atual.

Ao mesmo tempo, a maioria deles também é intensivamente computacional quando usada para criptografia e descriptografia e, portanto, todo o fluxo de mensagens não é criptografado usando as chaves privadas. Em vez disso, a mensagem é criptografada usando outro algoritmo (menos intensivo) e a chave usada para essa criptografia é criptografada usando a Chave Privada.

Obviamente, como você aponta, a troca segura de chaves continua sendo um problema que pode ser, em certa medida, resolvido por:

  • Troca de chaves Diffie-Hellman : usa arthimetic modular para trocar chaves com segurança.
  • Centro de distribuição de chaves únicas / múltiplas (KDC) : usa um sistema confiável de emissão de bilhetes com base em terceiros.
  • Protocolo de autenticação Kerberos : um protocolo relativamente complexo baseado no KDC.
check123
fonte
7

Sempre que Alice e Bob quiserem concordar com a mesma chave privada, o método mais popular é usar Diffie-Hellman . Funciona da seguinte maneira:

  1. Dois valores públicos são primeiramente escolhidos digamos e g = 17 . (Geralmente, são números primos muito grandes e são conhecidos por todos que usam esse protocolo).n=13g=17

  2. Alice escolhe um valor privado uma=3b=7

  3. UMA=gumamodnB=gbmodnUMA=12B=4UMAB

  4. K=BumamodnK=UMAbmodnK=12

Kng

Um problema na criptografia de chave privada é o ataque man-in-the-middle e esse é um dos principais motivos para escolher a criptografia de chave pública em vez da criptografia de chave privada.

0x0
fonte
5

Primeiro, um ponto de terminologia: o que você descreve é criptografia simétrica , e uma chave compartilhada entre os participantes é geralmente conhecida como chave secreta; "Chave privada" geralmente significa a parte de uma chave na criptografia de chave pública que apenas um participante conhece.

Há duas maneiras de disseminar uma chave secreta: ela pode ser transportada de alguma maneira fisicamente segura ou pode ser transportada usando alguma outra forma de criptografia, geralmente a criptografia de chave pública.

Existem maneiras de trocar uma chave secreta que não requer um canal de comunicação secreto. O mais popular é o protocolo de troca de chaves Diffie-Hellman. O princípio de Diffie-Hellman é que cada participante gera seu próprio par de chaves e há uma operação matemática que constrói um grande número a partir de uma chave pública e uma chave privada. Essa operação matemática tem uma propriedade muito interessante: o grande número pode ser construído a partir da chave privada de Alice e da chave pública de Bob, ou da chave privada de Bob e da chave pública de Alice; você obtém o mesmo número de qualquer maneira. Então, Alice e Bob trocam suas chaves públicas, e ambas as partes conhecem o grande número, que pode ser usado como uma chave secreta. Um bisbilhoteiro pode descobrir as duas chaves públicas, mas é impossível encontrar o grande número somente das chaves públicas.

A troca de chaves Diffie-Hellman permite que duas partes troquem um segredo, não importa quem esteja ouvindo. No entanto, não autentica Alice para Bob ou vice-versa. Portanto, é passível de um ataque do tipo homem do meio : Mallory realiza a troca de chaves com Alice (que acredita estar conversando com Bob) e separadamente com Bob (que acredita que está conversando com Alice), e assim decide ou menos conhece o segredo.

Quando o invasor pode interceptar e injetar mensagens, é necessária mais criptografia para que os participantes se autentiquem. (Um invasor passivo significa efetivamente que o protocolo de transporte subjacente fornece autenticação.) A maneira mais fácil é que cada participante já conheça a chave pública do outro. Se Alice conhece a chave pública de Bob:

  • Alice pode autenticar Bob enviando a ele um desafio: um valor aleatório (um nonce ) criptografado com a chave pública de Bob. Se Bob pode descriptografar esse valor e enviá-lo de volta, Alice sabe que está realmente conversando com Bob.
  • Bob pode se autenticar com Alice, enviando uma mensagem assinada com sua chave pública. Alice verifica a assinatura para verificar se está realmente conversando com Bob.

Existem muitas variantes que usam um desses métodos (ou ainda outra variante) em uma direção e o mesmo ou um método diferente na outra direção, ou que são autenticadas apenas em uma direção. Por exemplo, SSL / TLS (a camada de criptografia para muitos protocolos -s como HTTPS, SMTPS, IMAPS etc.) pode usar várias combinações de cifras diferentes e geralmente autentica o servidor para o cliente, mas também pode opcionalmente autenticar o cliente. Diffie-Hellman é lento e complicado para esta aplicação; o algoritmo mais amplamente distribuído de chave pública é o RSA .

É claro que Alice e Bob podem não conhecer a chave pública um do outro antes. Então eles confiam em uma cadeia de confiança: Bob envia a Alice sua chave pública, juntamente com uma declaração assinada de um terceiro que afirma que essa chave é realmente a chave pública de Bob. Essa declaração assinada é chamada de certificado e a terceira parte é uma autoridade de certificação . O terceiro pode ser conhecido por Bob ou sua identidade pode ser confirmada por um quarto e assim por diante. Eventualmente, essa cadeia de confiança (... atesta Dominique atenta a Charlie que atesta Bob) deve chegar a alguma parte em que Ron já confia, o que significa que Bob tem a chave pública de Ron e confia que Ron assine apenas certificados válidos.

Existem protocolos que não dependem da criptografia de chave pública. Em particular, o protocolo Kerberos é usado em redes baseadas em unix e baseadas em Windows para estabelecer conexões entre um cliente e um servidor. O Kerberos usa um servidor de autenticação central chamado KDC ( Key Distribution Center ). O KDC deve ter a senha do usuário armazenada em um banco de dados e o cliente normalmente solicita a senha do usuário. Para evitar expor a senha, o protocolo não usa a senha diretamente, mas um hash criptográfico ou, mais geralmente, uma função de derivação de chave aplicada à senha.

Com esse segredo compartilhado, o cliente e o KDC estabelecem um canal seguro e o KDC envia ao cliente um "ticket". O ticket contém uma chave de sessão (ou seja, uma chave secreta recém-gerada), bem como uma cópia da chave que é criptografada com outra chave simétrica compartilhada entre o KDC e o servidor que o cliente deseja entrar em contato. O cliente então encaminha esta cópia criptografada para o servidor. O servidor descriptografa essa mensagem para obter a chave da sessão e gera um nonce que criptografa com a chave da sessão e envia de volta ao cliente. O cliente inicia um canal seguro com o servidor, criptografado com a chave da sessão e começa mostrando que pode descriptografar o nonce: isso autentica o cliente no servidor. Um estabelecimento de sessão Kerberos é uma variante do protocolo Needham-Schroeder .

¹ No sentido de que os criptografadores se esforçaram muito, mas a melhor maneira que encontraram para isso exige uma quantidade inatingível de poder de computação.

Gilles 'SO- parar de ser mau'
fonte
3

Uma maneira possível é primeiro usar a Criptografia de Chave Pública para trocar uma chave privada. No entanto, quando não é possível, existem alguns protocolos específicos de troca de chaves, provavelmente o mais conhecido é o protocolo Diffie-Hellman .

Charles
fonte
3

Sempre existe a solução trivial: os usuários encontram e trocam chaves. Isso não é muito prático para muitos casos, mas é possível.

Além do protocolo de troca de chaves Diffie-Hellman (DH), também existem protocolos de distribuição de chaves quânticas . Um dos protocolos QKD mais conhecidos é o protocolo Bennett-Brassard, BB84 .

A vantagem do BB84 sobre o DH é que o DH é seguro apenas se o logaritmo discreto não puder ser feito com eficiência (consulte a suposição do logaritmo discreto e também a suposição DDH relacionada ). No entanto, o BB84 é seguro em termos de informação . Ou seja, mesmo queP=NP, O BB84 ainda estaria seguro (mas o DH não).

Por outro lado, o ataque MITM também é um problema para o BB84, e é preciso supor que os usuários usem o canal autenticado para superar esse problema (mas isso geralmente exige que eles compartilhem previamente uma chave de autenticação e estamos de volta à estaca zero).

Tocou.
fonte