Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
No exemplo de comunicação segura a CNG (Cryptography Next Generation), a ChannelManager classe fornece a infra-estrutura de comunicação entre processos (IPC) para o exemplo.
A classe é responsável pelo seguinte:
Criando, abrindo, fechando e descarte de pipes nomeados.
Enviando e recebendo sinalizadores de controle do aplicativo, nomes de canal, assinaturas digital, as chaves criptográficas e mensagens.
See Exemplo da Secure Communication Cryptography Next Generation (CNG) Para obter uma visão geral sobre o exemplo e as descrições das versões mencionadas neste tópico.
Sumário do arquivo ChannelManager.cs
O arquivo ChannelManager.cs contém as classes e métodos a seguir:
ChannelManager classe:
Construtor: Cria um pipe nomeado e aguarda uma conexão na Outros extremidade do pipe.Se o pipe nomeado for um servidor de pipe, ele aguarda uma conexão de cliente, chamando o WaitForConnection método. Se o pipe nomeado é um cliente de pipe, ele aguarda um servidor de pipe nomeado, chamando o Connect método. The ChannelManager construtor não retorna até que uma conexão é feita.
Dispose método: Implementa o System.IDisposable interface, liberando seus () recursos instanciadoStream m_Stream) quando a classe sai do escopo.
ReadMessage método: Recebe mensagens de clientes pipe.
SendMessage método: Envia mensagens para clientes pipe.
AppControl método: Usado pela Alice para enviar sinalizadores de controle do aplicativo para Bob e Mallory.These flags synchronize the Version,fMallory and fVerbose states among the three command windows.AppControl não é envolvido com criptografia ou transmissão de mensagens. É simplesmente um mecanismo de controle interapplication.Esse método cria um temporária ChannelManager objeto que é descartado após é usado.
SendChannelName método: Método de conveniência que manipula o envio de um novo nome de canal para um cliente.Esse método cria um temporária ChannelManager objeto que é descartado após é usado.
ReceiveChannelName método: Método de conveniência que manipula a receber um novo nome de canal de um servidor.Esse método cria um temporária ChannelManager objeto que é descartado após é usado.
ChannelManager classe Details
Os aplicativos Mallory de Alice e Bob estão conectados por pipes nomeados são criados por ChannelManager instâncias. Cada aplicativo cria e descarta dos dois tipos de ChannelManager objetos:
Objetos de longo prazo: Alice e Bob crie um longo prazo ChannelManager objeto no início do seu Run métodos. Eles usam esse objeto para transmitir contatos de vendas.Mallory cria dois a longo prazo ChannelManager objetos no seu Run método: um para se comunicar com Ana Maria e outro para se comunicar com Bob.Os canais são usados para trocar chaves de criptografia e mensagens criptografadas.Eles persistem até o participante do Run método e são, em seguida, descartados.
Objetos temporários: The AppControl, SendChannelName, e ReceiveChannelName métodos criar temporário ChannelManager objetos para executar uma tarefa específica. Os objetos, em seguida, são descartados.Além disso, nas versões 4 e 5, Alice envia Bob uma chave de assinatura digital particular usando um temporária ChannelManager objeto.
The ChannelManager classe implementa a System.IDisposable interface e gerencia ambos send e receive modos de transmissão.
A classe fornece a ilusão de uma troca dinâmica entre Alice e Bob Mallory.Na realidade, um pipe pode existir apenas no modo de um por vez: Pode ser um servidor ou um cliente.Portanto, os aplicativos de Alice, Bob e Mallory executar maneira cuidadosa e linear.Cada aplicativo espera pipes para em em aberto e fechar em momentos específicos durante a execução do exemplo.Comunicação não é assíncrono, embora possa parecer estar.
Ele pode aparecerá se um Gerenciador de threads está gerenciando segmentos no plano de fundo; no entanto, nenhuma chamada thread é empregada.Temporização entre processos é obtida apenas por meio de intercalação cuidadoso de send e receive chamadas entre Alice e Bob Mallory. sistema autônomo resultado, sistema autônomo três janelas aparecem para se comunicar sem esforço, cenário discutido a seguir o o Visão geral de exemplo da CNG.
Um benefício dessa implementação é sincronização e o código é simples e lineares.Uma desvantagem é a falta de robustez: Se um cliente de pipe não conseguir se conectar ao servidor, o servidor irá parar de responder.Uma abordagem melhor seria usar um servidor de pipe multithread, trataria normalmente essas falhas.No entanto, para evitar a complexidade, o exemplo não terá essa abordagem.
The ChannelManager classe é instanciado a partir de Alice, Bob e Mallory Main métodos e as Communicator Construtor de classe no arquivo Communicator.cs.
Detalhes de uso
The ChannelManager classe é usada em cinco contextos diferentes: controle do aplicativo, transmissão de nome de canal, mensagem transmissão, transmissão de chave de assinatura digital e transmissão de chave pública de criptografia.Na lista a seguir, essas são discutidas na ordem em que aparecem no código-fonte.
Controle do aplicativo: Alice liga para o InitializeOptions método no início de seus Main método e recebe opções de sessão do usuário. These options (Version,fMallory, and fVerbose) are then sent to Bob and Mallory by the AppControl method.Se o usuário decidir fechar o aplicativo digitando a letra "x", oAppControlmétodo envia a seqüência de caracteres "sair" em vez das opções de sessão para Bob e Mallory.
Alice AppControl método cria dois temporário ChannelManager servidores pipe, BobControlChannel e MalloryControlChannel.
Bob e do Mallory AppControl métodos criar temporário ChannelManager Canalize os clientes e conecte-se a seus respectivos controle canais.
Bob e Mallory receber as opções de sessão de Alice e descartar imediatamente o temporária ChannelManager objetos.
Transmissão de nome de canal: Após as opções de sessão de transmissão, Alice envia Bob um novo nome de canal.
Alice usa o SendChannelName método e Bob e Mallory usar o ReceiveChannelName método. Cada método cria um temporária ChannelManager cliente ou servidor do pipe. Após o novo nome de canal foi enviado ou recebido, o temporária ChannelManager instância é descartada.
Falha de segurança ocorre quando Mallory intercepta o novo nome de canal chamando ReceiveChannelName 200 milissegundos antes de Bob. Para uma discussão sobre esta falha de segurança, consulte Implementando um ataque man-in-the-middle (CNG exemplo).
Transmissão de mensagens: Após as opções de sessão e o novo nome de canal foram transmitidos, Alice e Bob Mallory criam Communicator objetos. The Communicator construtores de receber o nome do novo canal enviado na etapa anterior e usá-lo para criar a longo prazo ChannelManager instâncias. Esses objetos são o apenas não temporários ChannelManager instâncias. Eles conservadas até que a última mensagem transmitida e recebida e, em seguida, são removidos.
Observação:O ChannelManager objeto criado pela Alice encapsula um servidor de pipe nomeado AliceAndBobChannel. No entanto, Mallory intercepta esse nome e envia um nome de outro canal (AliceAndBobChannel1) para Roberto. Bob passado essa seqüência de caracteres sistema autônomo a name parâmetro para o seu Communicator construtor, criando um cliente de pipe nomeado AliceAndBobChannel1. Essa alterar de nome permite Mallory representar Alice de suas mensagens de Bob.
Transmissão de chave de assinatura digital: Depois de Alice criou sua Communicator objeto, o Version sinalizar é examinado. Na versão 3, ele envia Bob uma chave de assinatura digital por meio de PublicChannel pipe nomeado, onde ele é interceptado pelo Mallory. Em versões 4and 5, ela cria um segredo, temporário ChannelManager instância. Essa instância é usada para transmitir uma chave particular de assinatura digital para Roberto.
Observação:Mallory não conhece este pipe nomeado particular porque ele não é determinada versão 4 ou 5 de sistema de sistema sistema de mensagens instantâneas (IM) do software .Alice continua a usar o long - sistema de sistema sistema de mensagens de termo ChannelManager objeto criado na etapa 3 para enviar uma assinatura digital falsa para Bob. Nas versões 4 e 5, IM ferramenta Bob foi atualizada para ignorar este objeto.No entanto, Mallory acredita que a assinatura é válida e usa para assinar suas chaves criptográficas e suas mensagens.Isso prova para ser seu downfall.
Transmissão de chave pública de criptografia: The Version sinalizar é examinado novamente. Na versão 2 e posterior, a longo prazo sistema de sistema sistema de mensagens ChannelManager objeto criado na etapa 3 é usado para enviar e receber as chaves de criptografia pública.
Depois de tem sido trocadas os nomes de canal, assinaturas digital e chaves criptográficas, Alice e Bob usar o ChannelManager criado na etapa 3 para transmitir mensagens.
Consulte também
Conceitos
Exemplo da Secure Communication Cryptography Next Generation (CNG)
ChannelManager.cs fonte Code (CNG exemplo)
Visão geral do código fonte (CNG exemplo)
Referência
Date |
History |
Motivo |
|---|---|---|
|
Julho de 2008 |
Tópico adicional. |
Aprimoramento de informações. |