XADM: Como Secure Sockets Layer Works

Traduções deste artigo Traduções deste artigo
ID do artigo: 245152 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Este artigo fornece uma visão geral de como funciona a SSL (Secure Sockets LAYER).

Mais Informações

Uma introdução à criptografia de chave

Criptografia de chave pública Rivest-Shamir-Adleman (RSA) é amplamente usada para autenticação e criptografia no setor de computador. Netscape tem licenciado RSA criptografia de chave pública pela RSA Data Security Inc. para uso em seus produtos, especificamente para autenticação.

Criptografia de chave pública é uma técnica que usa um par de chaves assimétricas para criptografia e descriptografia. Cada par de chaves consiste em uma chave pública e uma chave particular. A chave pública é feita público quando ele é distribuído amplamente. A chave particular nunca é distribuída; ele é sempre mantido em segredo.

Dados criptografados com a chave pública só podem ser descriptografados com a chave particular. Por outro lado, os dados criptografados com a chave particular podem ser descriptografados somente com a chave pública. Este assimetria é a propriedade que torna a criptografia de chave pública tão útil.

Usando criptografia de chave pública para autenticação

Autenticação é o processo de verificar a identidade para que uma entidade possa ser certeza da identidade de outra entidade. Nos exemplos a seguir, o usuário A e B usam criptografia de chave pública para verificar a identidade do usuário B. A notação a seguir indica que um item tiver sido criptografados ou descriptografados usando criptografia de chave
{something}key
onde something é uma descrição do item que tenha sido criptografado ou descriptografado e key é a chave que é usada para criptografar ou descriptografar esse item.

No exemplo a seguir, quer de usuário para autenticar o usuário do usuário B. tem um par de chaves, uma pública e uma privada. O usuário B divulga a chave pública para o usuário (isso é discutido na seção "Entregando out pública chaves" deste artigo). Usuário gera uma mensagem aleatória e a envia para o usuário B da seguinte maneira:
UM-> Brandom_message
O usuário B usa a chave particular para criptografar a mensagem aleatória e retorna a versão criptografada para usuário A:
B-> UMA {random_message}User_B's_private_key
O usuário A recebe essa mensagem e a descriptografa usando a chave pública que o usuário B publicado anteriormente. O usuário A compara a mensagem descriptografada com a mensagem que usuário originalmente enviou para o usuário B; se as mensagens forem correspondentes, o usuário sabe que a mensagem posterior veio de B, porque um impostor supostamente não saberia chave particular do usuário B e, portanto, conseguirá corretamente criptografar a mensagem aleatória para enviar ao usuário a.

Considerações adicionais

A menos que você saiba exatamente o que você estiver criptografando, nunca é uma boa idéia para criptografar algo com sua chave particular e, em seguida, enviá-lo a alguém. Isso ocorre porque você pode ser mantido responsável por valor criptografado (Lembre-se de que somente você pode executar a criptografia porque somente você tem a chave particular).

Devido a isso, neste exemplo, em vez de criptografar a mensagem original que usuário enviado, o usuário B constrói uma síntese da mensagem e criptografa que síntese da mensagem. Uma síntese da mensagem é derivada da mensagem original aleatória e tem as seguintes propriedades úteis:
  • O resumo é difícil reverter. Alguém está tentando representar o usuário B não pode determinar a mensagem original do resumo.
  • Um impersonator tem dificuldade em localizar uma mensagem diferente que computa para o mesmo valor de digest.
O usuário B é protegido por meio de um resumo. O usuário B calcula o resumo da mensagem aleatório que usuário enviados e, em seguida, criptografa o resultado. O usuário B envia digest criptografado de volta ao usuário a. usuário pode calcular o resumo mesmo e autenticar o usuário B descriptografar mensagem do usuário B e comparar os valores.

Dados de origem para a autenticação

A técnica descrita na seção "Considerações adicionais" deste artigo é conhecida como uma assinatura digital. Essa técnica exige que o usuário B assinar uma mensagem que usuário gerados; isso é quase como perigoso para o usuário B como criptografar um valor aleatório que foi originada com o usuário a. Conseqüentemente, esse protocolo de autenticação de exemplo precisa mais uma etapa para ser seguro; B precisa se originam alguns (ou todos) dos dados da seguinte maneira:
A-> B B-> uma saudação, são você B? O usuário A, este é o usuário B {digest[Usuário A, isso É B]} User_B's_private_key
Quando o usuário B usa esse protocolo, que será que está sendo enviada ao usuário o usuário B saberá e então B com segurança pode assinar a mensagem. O usuário B envia a versão descriptografada da mensagem primeiro, "usuário, este é o usuário B," e, em seguida, B envia a versão digerida-criptografado. O usuário A facilmente pode verificar se B é o usuário B e B não precisa assinar tudo o que não se originam com usuário B.

Entregando sem chaves públicas

Como pode um usuário distribui uma chave pública de maneira segura? Este é um protocolo de autenticação de exemplo para usuário B:
UM-> B-> UM UM-> B-> UM
Saudação Oi, tenho B, User_B's_public_key provar que ele usuário, este é
O usuário B {digest [usuário, este é usuário B]} User_B's_private_key
Se esse protocolo for usado, qualquer pessoa pode representar o usuário B. Um impostor todas as necessidades é uma chave pública e privada. Um impostor pode estar para usuário e representar o usuário B, fornecendo a chave pública do impostor em vez de chave pública do usuário B. Em seguida, o impostor "prova" que o impostor é B criptografando algo usando chave particular do impostor, e usuário não é possível dizer que o impostor não é usuário B.

Para resolver esse problema, a comunidade de padrões foi inventado um objeto chamado de certificado. Um certificado contém as seguintes informações:
  • O nome do emissor de certificados.
  • A entidade para o qual o certificado está sendo emitido (também conhecido como o assunto).
  • A chave pública do assunto.
  • Alguns carimbos de hora.
O certificado é assinado usando a chave particular do emissor do certificado. Todo mundo sabe a chave pública do emissor do certificado (ou seja, o emissor do certificado também tem um certificado). Os certificados são um método padrão para vincular uma chave pública a um nome.

Se a tecnologia de certificado for usada, todos podem examinar o usuário B certificado para ver se o certificado tiver sido forjado. Se B mantém controle rigoroso da chave particular e B, na verdade, obtém o certificado, a tecnologia de certificado é segura. Este é o protocolo alterado usando essa técnica:
A-> B B-> uma A-> B B-> uma saudação Oi, tenho B,User_B's_certificate provar
-Usuário, este É B {digest [usuário, este é usuário B]} User_B's_private_key
Quando o usuário recebe primeira mensagem do usuário B, usuário pode examinar o certificado, verificar a assinatura (como no exemplo anterior, usando um resumo e a descriptografia de chave pública) e em seguida, verifique o assunto (ou seja, o nome do usuário B) e ver que ele é realmente usuário B. usuário pode em seguida, relação de confiança que a chave pública é chave pública do usuário B e pode solicitar a prova de identidade do usuário B.

O usuário B passa pelo mesmo processo conforme descrito no exemplo anterior, criando uma síntese da mensagem e, em seguida, respondendo ao usuário A com uma versão assinada do resumo. O usuário A pode verificar o usuário B síntese da mensagem usando a chave pública do certificado e verificando o resultado.

Uma pessoa em quem pode interferir com comunicações seguras (no exemplo, usuário C) pode criar o cenário a seguir para tentar fazer isso:
A-> C C-> uma A-> C C-> uma saudação Oi, tenho B,User_B's_certificate provar
Ele????
No entanto, o usuário C não pode satisfazer usuário na mensagem final. Usuário C não possui chave particular do usuário B, portanto, o usuário C não é possível construir uma mensagem que usuário irá achar vem do usuário B.

Trocar um segredo

Depois que usuário foi autenticado B, usuário pode enviar B uma mensagem que somente o usuário B pode decodificar da seguinte maneira
UM-> B {secret}User_B's_public_key
onde a única maneira de determinar o secret é descriptografar a mensagem acima com chave particular do usuário B. Trocar um segredo é outra maneira poderosa para usar criptografia de chave pública. Mesmo se a comunicação entre o usuário A e B é observada, ninguém, mas o usuário B poderá determinar informações secretas.

Essa técnica reforça a segurança da Internet usando o segredo como outra chave, mas nesse caso é uma chave para um algoritmo de criptografia simétrica, como padrão de criptografia de dados (DES), RC4 ou IDEA. O usuário A conhece o segredo porque usuário gerado o segredo antes de enviá-la para o usuário B. usuário B conhece o segredo porque o usuário B tem a chave particular e pode descriptografar a mensagem do usuário. Como usuário A e B sabem o segredo, possam tanto iniciar um algoritmo de codificação simétrica e, em seguida, enviar mensagens que são criptografadas com o algoritmo de codificação simétrica. Este é um protocolo revisado que usa essa técnica:
A-> B B-> uma A-> B B-> uma A-> B B-> uma saudação Oi, tenho B,User_B's_certificate
provar que ele usuário, este É B {digest [usuário, este é usuário B]} User_B's_private_key
OK B, aqui está um segredo {secret} User_B's_public_key {some_message} secret_key
O método que é usado para calcular secret_key é o protocolo que está sendo definido, mas secret_key podem ser simplesmente uma cópia do segredo.

Interferência de segurança

Mesmo se todas as técnicas anteriores forem usadas, uma pessoa que deseja interferir com comunicações seguras (usuário C) poderá fazer isso. Embora C de usuário não pode descobrir o segredo trocou usuário A e B, C de usuário pode interferir com sua conversa por re-arranging (ou garbling) informações secretas. Por exemplo, se o usuário C está colocada entre o usuário A e B, C de usuário pode passar a maioria das informações e para trás inalteradas mas garble certas mensagens (isso é mais fácil para C de usuário para fazer porque C usuário sabe o protocolo desse usuário A e B está usando para se comunicar):
UM-> C C-> B-> C C-> UM UM-> C C-> B-> C C-> UM UM-> C C-> B-> C C-> UM
Olá Olá Hi, estou B, User_B's_certificate hi, sou usuário B
User_B's_certificateprovar ela prova usuário, isso É {digest [usuário A, B
Este É B]} User_B's_private_key usuário, este É B {digest [usuário, este é
O usuário B]} User_B's_private_key ok B, aqui está um segredo {secret} User_B's_public_key
OK B, aqui está um segredo {secret} User_B's_public_key {some_message} secret_key
Garble [{some_message} secret_key]
Usuário C passa os dados sem modificação até que o usuário A e B compartilham um segredo. Em seguida, o usuário C garbles mensagem do usuário B ao usuário a. Neste ponto, relações de confiança usuário B, usuário caso podem acredita que a mensagem com erros e tente atuar sobre ele. Observe que C de usuário não conhece o segredo; todos os usuários C pode fazer é danos os dados criptografados com a chave secreta. Dependendo do protocolo, usuário C podem não produzir uma mensagem válida, mas C de usuário pode obter sorte e produzir uma mensagem válida.

Para evitar esse tipo de dano, o usuário A e B podem introduzir um código de autenticação de mensagem em seu protocolo. Um código de autenticação de mensagem é um trecho de dados que são calculados usando um segredo e transmitido alguns dados. O algoritmo de síntese descrito acima tem apenas as propriedades direita para a criação de uma função de código de autenticação de mensagem que pode se defender contra usuário C:
message_authentication_code: = digest [some_message, secret]
Pois C de usuário não terá o segredo, usuário C não é possível calcular o valor correto para o resumo. Mesmo se o usuário C aleatoriamente garbles mensagens, as chances de sucesso é pequena se houver uma grande quantidade de dados de resumo. Por exemplo, usando MD5 (um algoritmo digest boa criptografia inventado por RSA), o usuário A e B podem enviar valores de código de autenticação de mensagem de 128 bits com suas mensagens. As chances do usuário C adivinhar o código de autenticação de mensagem correta são aproximadamente 1 em 18,446,744,073,709,551,616. Para todos os fins práticos, usuário C não é possível adivinhar o código de autenticação de mensagem correto.

Este é o protocolo de exemplo, revisado novamente para usar essa técnica:
A-> B B-> uma A-> B B-> uma saudação Oi, tenho B,User_B's_certificate provar
-Usuário, este É B {digest [usuário, este é usuário B]} User_B's_private_key ok
Usuário B, aqui está um segredo {secret} User_B's_public_key {some_message, message_authentication_code} secret_key
Usuário C pode tentar garble mensagens, mas as computações de código de autenticação de mensagem revelam que as mensagens não vêm usuário B. usuário ou usuário B pode descobrir o valor de código de autenticação de mensagem incorreto e parar de comunicação. Usuário C não pode representar o usuário B.

Propriedades

ID do artigo: 245152 - Última revisão: sábado, 28 de outubro de 2006 - Revisão: 3.3
A informação contida neste artigo aplica-se a:
  • Microsoft Exchange Server 4.0 Standard Edition
  • Microsoft Exchange Server 5.0 Standard Edition
  • Microsoft Exchange Server 5.5 Standard Edition
Palavras-chave: 
kbmt kbinfo KB245152 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 245152
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com