sexta-feira, outubro 20, 2006

Exemplo de Criptografia em VB

Taí galera, um link pra criptografia...

http://www.di-mgt.com.au/src/basModExp.bas.html

Té mais

sexta-feira, outubro 06, 2006

Instalando Certificados no APACHE

1) Como faço para efetuar a instalação da certificação digital de 128 Bits em um servidor Apache.

Os Certificados de 128 Bits emitidos pela CertiSign, tem o formato PKCS 7 , que é o certificado de servidor junto com o certificado intermediário.Antes de efetuar a instalação, você deve efetuar a separação das cadeias de certificação.
Para isso, você deverá digitar a seguinte linha de comando :

openssl pkcs7 -inform PEM -in .p7c -print_certs
(ex.: openssl pkcs7 -inform PEM -in CertiSign.p7c -print_certs)

Com isso, ele irá estornar na tela a cadeia separadamente. Certificado de servidor e o certificado intermediária, Bastando você selecione o certificado de servidor, desde as linhas "-----BEGIN CERTIFICATE-----" e "-----END CERTIFICATE-----" e colá-lo em um novo arquivo texto e proceder com a instalação de acordo com o procedimento descrito Aqui.

2) Como faço uma cópia de backup do meu certificado digital em um servidor Apache?

Em seu httpd.conf você tem configurado três arquivo, (chave pública e Privada) mais o certificado intermediário em caso de certificados de 128Bits.
Você deve copiar esses três arquivos que estão configurados nas linhas abaixo em seu httpd.conf.
  • SSLCACertificateFile -> Certificado Intermediário
  • SSLCertificateFile -> Chave Pública
  • SSLCertificateKeyFile -> Chave Privativa

3) Instalei a certificação digital em meu servidor Apache e está ocorrendo o Erro: "no start line:pem_lib.c" ou "no end line:pem_lib.c".

O Apache-SSL utiliza um kit de ferramentas chamado OpenSSL (anteriormente SSleay) para suas rotinas de segurança. O kit OpenSSL é muito específico quanto ao formato dos pedidos de certificado e dos certificados. Especificamente quanto às linhas BEGIN e END, que devem ter o seguinte formato:

-----BEGIN CERTIFICATE-----

este é o seu certificado em código BASE64 para facilidade de transporte

-----END CERTIFICATE-----

Observe que há 5 hífens antes e depois do texto BEGIN e END e eles devem formar a primeira e última linha do certificado (como demonstrado acima). Seja cuidadoso ao recortar e colar o certificado da janela do navegador para o editor de texto, para criar corretamente o arquivo de texto do certificado. Certifique-se de remover quaisquer espaços adicionais, antes e depois das linhas BEGIN e END, caso contrário você verá esta mensagem de erro. Na plataforma UNIX, você talvez precise eliminar também os caracteres CTRL-M.

4) Sempre que inicializo o meu servidor web uma Senha é solicitada, o que é isso?

Quando você gerou o seu par chaves, você solicitou ao OpenSSL (SSLeay) que a sua chave privativa fosse criptografada. Isso é bom, pois se um 'hacker' conseguir o seu arquivo de chave privada, ainda terá que adivinhar a 'Senha de acesso' utilizada para criptografá-lo. Definitivamente, isso não é uma tarefa fácil. Por outro lado, quando o servidor for iniciado, você terá que digitar a 'Senha de acesso' para poder utilizar a chave privativa.

5) Como posso eliminar a exigência da 'Senha de acesso'?

Você pode criar uma cópia não-criptografada da chave, utilizando o seguinte comando:

openssl rsa -in file1.key -out file2.keyfile2.key

conterá sua chave não-criptografada. Se você apontar o seu servidor para este arquivo de chave, ele não pedirá uma 'frase de acesso' dessa vez. Nota Importante: se alguém conseguir a sua chave não-criptografada, poderá fazer-se passar por você (as chaves criam a sua assinatura digital de identificação). Certifique-se de que as permissões relativas àquele arquivo autorizam a leitura apenas pelo usuário 'root' ou 'web server user'. Preferivelmente, inicie o seu servidor de Internet como 'root', mas execute-o como outro servidor, e faça com que a chave possa ser lida somente pelo usuário 'root'.

6) Como posso saber a que chave corresponde cada certificado par o meu servidor Apache?

Sua chave privada contém uma série de números. Dois desses números formam a "chave pública", os outros fazem parte da sua "chave privada" (as duas formam um par exclusivo). Os bits da "chave pública" são incorporados ao seu certificado (obtidos a partir do seu Pedido de Assinatura de Certificado - CSR). Assim, você precisará utilizar os arquivos correspondentes da chave e do certificado. Para verificar se a chave pública em seu certificado corresponde à parte pública da sua chave privada, visualize os dois arquivos e compare os valores "modulus". Para visualizar o certificado:

openssl x509 -noout -text -in certfile

Para visualizar a chave:

openssl rsa -noout -text -in keyfile

As partes "modulus" e "public exponent" da chave e do certificado devem ser exatamente correspondentes.

7) A documentação pede um certificado em formato PEM, mas vocês não me mandam o certificado assim o que devo fazer ?

A documentação do ApacheSSL e os documentos do kit de ferramentas SSLeay referem-se a certificados e solicitações de certificado como arquivos "PEM". Porém, isso não é verdade. O ApacheSSL, como todos os servidores seguros SSL, utiliza o formato padrão X.509 de certificados. Os certificados X.509 são arquivos binários, difíceis de serem enviados por e-mail. Assim, o SSLeay armazena os certificados no formato codificado BASE64 entre as linhas '-----BEGIN-----' e '-----END-----'. A codificação BASE64 foi definida como parte da (antiga) especificação "Privacy Enhanced Mail (PEM)", e por isso a documentação chama o formato dos arquivos de "PEM format".

Alguns servidores realmente utilizam o formato Privacy-Enhanced Mail (PEM), por exemplo, o Lotus Domino antigo, o 4D WebSTAR Server Suite/SSL. Não selecione este formato! Use o formato "Standard", que é o certificado X.509 codificado como BASE64 que o ApacheSSL espera.

Como saber se uma página é segura??

Para ter certeza de que uma página é segura não basta verificar se existe um certificado de servidor, ou seja, não basta à presença do cadeado fechado na barra de seu navegador.Para sua segurança, preste atenção a dois detalhes fundamentais:

1. Ao clicar no cadeado, verifique se o certificado exibido, foi emitido para o mesmo endereço da página onde você está.
2. Confira no certificado se ele foi emitido por uma autoridade certificadora confiável.


Para emitir um Certificado de Servidor a CertiSign, assim como a VeriSign e suas afiliadas, realiza rigorosa validação de dados para conferir a propriedade do domínio para o qual o certificado será emitido. Se a empresa solicitante não tiver a propriedade do domínio deverá apresentar procuração da proprietária autorizando o gerenciamento do certificação digital para aquele domínio.


Outras autoridades certificadoras, de segundo e terceiro níveis, emitem o certificado de servidor sem nenhum processo de validação de dados de propriedade de domínio.

Não confie em certificado emitido por uma autoridade certificadora sem reconhecimento público porque ele pode ser clonado ou emitido para por uma terceira pessoal para uso indevido chegando a ações criminosas.

Reconhecer um site seguro é muito fácil. Basta prestar atenção nestes detalhes:

1. Verifique na barra de endereços se o site utiliza o protocolo https. Basta conferir se o endereço começa com https.







2. No rodapé da página, confira o cadeado à direita.
3. Clique 2 vezes no cadeado para exibir o certificado de segurança...



... onde devem constar a validade (Válido de: 12/08/2002 até 27/08/2003, no exemplo), a quem foi atribuído (Emitido para: www.certisign.com.br, no exemplo) e a entidade certificadora (Emitido por Secure Server Certification Authority, no exemplo).

4. Confira se o endereço da página que você está acessando é o mesmo do campo "emitido para" do certificado.

Tomando esses simples cuidados, você estará seguro de que as informações que você enviar serão dirigidas ao site da CertiSign e somente pela CertiSign serão usadas.

Todas essas precauções só têm efeito para quem toma os devidos cuidados com o sigilo de sua senha, requisito absolutamente essencial para sua segurança. Para conferir as recomendações sobre sigilo de senhas e obter informações mais detalhadas sobre segurança, clique aqui.

Certificado Digital (continuação)

Como utilizar Certificados Digitais?

Após receber um Certificado Digital do Centro de Certificação Digital, você precisa instalá-lo nos aplicativos de software que utiliza. Normalmente, você o instala em seu navegador ou em seu aplicativo de e-mail (Consulte a seção "Como Fazer" na ajuda on-line para obter instruções completas). Depois de serem configurados corretamente, os aplicativos fazem a maior parte do trabalho para você, o que torna razoavelmente fácil o uso de Certificados Digitais. A forma de utilizar o Certificado Digital depende do motivo pelo qual você precisa de um:


  • Se você acessa sites ou aplicativos de rede que requerem seu Certificado Digital, você precisa digitar a senha de sua chave privativa para confirmar que seu certificado deve ser enviado por seu aplicativo. Este, ou o navegador, se encarrega do envio de seu Certificado Digital para o site ou aplicativo de rede (Naturalmente, este processo varia em função de qual aplicativo você está usando).
  • Ao enviar e-mails criptografados (seguros), você precisa recuperar os Certificados Digitais das pessoas com quem se comunica para, então, configurar seu aplicativo de e-mail e criptografar suas mensagens para essas pessoas. Depois de serem configuradas, todas as mensagens de e-mail, para estas pessoas, serão enviadas criptografadas. Alguns aplicativos de e-mail fazem com que você selecione uma opção quando desejar criptografar uma mensagem. Esta funcionabilidade varia dependendo do programa de e-mail que você utiliza.
  • Ao assinar digitalmente as mensagens, seu aplicativo de e-mail anexa seu Certificado Digital à mensagem de e-mail


Qual é o nível de segurança dos Certificados Digitais?


Os Certificados Digitais são muito seguros, desde que você não divulgue para ninguém sua chave privativa e sua senha. Pense em sua senha como a chave de um cofre. Se você é a única pessoa a possuir a chave, o conteúdo do cofre estará seguro. Entretanto, se você compartilhar a chave com outras pessoas, estará diminuindo a segurança do que está contido no cofre. Se alguém conseguir seu Certificado Digital, não poderá utilizá-lo a menos que tenha a chave privativa correspondente e a senha para esta. Antes que seu navegador envie seu Certificado Digital, ele lhe pedirá sua senha. Você deve digitar a senha para poder utilizar seu Certificado Digital.

Os Certificados Digitais também são apresentados em diversas intensidades. A intensidade menor é chamada de "40 bits," referindo-se ao tamanho da chave para o Certificado Digital. A intensidade maior é chamada de "128 bits". Se uma chave de 40 bits pode ser decifrada em 4 horas, para decodificar uma chave de 128 bits seria necessário mais tempo que a idade do universo.


Como proteger meu Certificado Digital?


Há várias coisas que você pode fazer para proteger seu Certificado Digital:

  • Lembre de suas senhas e não as compartilhe com outras pessoas.
  • Proteja seu computador de acesso não-autorizado, mantendo-o fisicamente seguro.
  • Por exemplo, tranque-o em um escritório. Quando sair de sua mesa, utilize um protetor de tela com senha ou desligue o computador.
  • Use produtos de controle de acesso ou recursos de proteção ao sistema operacional (como uma senha de sistema ou protetor de tela ativado por senha).
  • Tome medidas para proteger seu computador de vírus, porque um vírus pode atacar uma chave privativa.

Sua chave privativa é protegida de duas maneiras:

Quando você se inscreve para obter um Certificado Digital, seu navegador da Web cria uma chave privativa* que, em seguida, é armazenada no disco rígido do computador para que você possa controlar o acesso a ela. Ao gerar sua chave privativa, o software que você utiliza (como seu navegador), provavelmente, lhe pedirá uma senha. Esta senha protege o acesso a sua chave privativa. Para usuários do Microsoft Internet Explorer, sua chave privativa é protegida pela sua senha do Windows.

Um terceiro pode acessar sua chave privativa, bastando que tenha acesso ao arquivo onde sua chave está armazenada e conheça a senha da sua chave privativa. Alguns softwares lhe permitem optar por não ter uma senha para proteger sua chave privativa. Se você usar esta opção, estará confiando que ninguém, atualmente ou no futuro, tenha acesso não-autorizado a seu computador.

Em geral, é bem mais fácil usar uma senha do que proteger totalmente seu computador fisicamente. Não usar uma senha é como assinar com antecedência todos os cheques em seu talão e deixá-lo aberto em sua mesa. É sua responsabilidade proteger sua chave privativa. Qualquer pessoa que obtiver sua chave privativa pode falsificar sua assinatura digital** e tomar atitudes em seu nome!

* CHAVES PÚBLICAS E PRIVATIVAS Um Certificado Digital possui duas chaves que são usadas durante a criptografia de dados (embaralhamento de dados). As duas chaves coincidem perfeitamente, porém são utilizadas em par, de forma que uma chave desfaça o que a outra faz. Por exemplo, se uma chave criptografa uma mensagem, apenas a outra chave pode decriptografá-la.

A chave pública é usada por outras pessoas para lhe enviar e-mails criptografados. Ela também é usada para a autenticação de clientes, assegurando que o Certificado Digital não seja violado quando você o enviar do seu computador para um Web site.

A chave privativa é armazenada apenas no seu computador, através do seu navegador. Você nunca deve copiar ou enviar a sua chave privativa para ninguém. Dependendo do seu navegador e das configurações de segurança que você utilize, você pode ter uma senha associada a sua chave privativa. Isto é uma segurança a mais que você pode ter, de forma que, caso alguém pegue a sua chave privativa ou utilize o seu computador, não consiga utilizá-la (ou a seu Certificado Digital).

** ASSINATURA DIGITAL Uma assinatura digital é parecida com uma assinatura feita à mão, na medida em que dá validade a um documento vindo de você. Seu Certificado Digital é anexado a um formulário da web ou a uma mensagem de e-mail, os quais são enviados tanto em texto puro como criptografado.

Depois de decriptografar a mensagem com seu Certificado Digital, o destinatário compara o texto puro com o criptografado. Se as duas mensagens forem iguais, ele pode ter certeza que as informações enviadas realmente vieram de você, e não de outra pessoa. Ele também sabe que você deve ter aprovado tais informações, já que foram enviadas utilizando o seu Certificado Digital.


Como funciona a criptografia?


Criptografia é o processo de embaralhamento de informações. Existem muitas maneiras diferentes (e complicadas) de codificar e decodificar informações. Esta seção oferece uma breve descrição sobre o que é criptografia, sem aprofundar-se em detalhes técnicos. Existem duas finalidades básicas para a criptografia na Internet. Uma, quando você visita um site "seguro" da Web, como uma loja que efetue transações on-line ou um shopping center. Esta é a chamada criptografia através do servidor (server-side encryption), pois utiliza o Certificado Digital dado ao servidor (computador) que gerencia o site da Web. A outra ocorre quando você envia ou recebe mensagens criptografadas. Em ambos os casos, é necessária a permuta de chaves públicas.

Ao criptografar informações, o processo é feito com uma chave pública e, em seguida, desfeito com a correspondente chave privativa. Pense nisso como um cofre que necessita de duas chaves, uma para fechar e outra para abrir. Por exemplo, quando você visita um site "seguro" da Web, o seu computador recebe a chave pública deste site. Quando seu computador envia informações para o mesmo site, ele as criptografa usando a chave pública do site visitado. A única maneira de decriptografar as informações enviadas é usando a chave privativa do site.

O mesmo processo é necessário para um e-mail seguro. Antes que se possa enviar para alguém uma mensagem criptografada, você precisa do Certificado Digital dessa pessoa contendo sua chave pública. Seu aplicativo de e-mail usa esta chave pública para criptografar a mensagem. Deste ponto em diante, somente a chave privativa desta mesma pessoa pode decriptografar a mensagem. Assim sendo, você pode distribuir seu Certificado Digital (e sua chave pública) para quantas pessoas quiser, sem comprometer a integridade de seu Certificado. Entretanto, você não deve divulgar sua chave privativa a ninguém, uma vez que ela é necessária para decriptografar qualquer mensagem que lhe for enviada.

Há mais um ponto importante: Confiança. Muitas CAs diferentes podem oferecer Certificados Digitais. Os aplicativos que você usa são configurados para confiar em certificados vindos de um pequeno número de empresas com sólida reputação. Sendo assim, caso alguém lhe envie seu Certificado Digital (via e-mail ou por um site que você visite) e ele for de uma fonte não confiável, segundo seu aplicativo, aparecerá uma mensagem perguntando se você deseja confiar nesta CA.


O que é infra-estrutura de chave pública (PKI)?


A PKI refere-se a um processo que utiliza chaves públicas e Certificados Digitais para garantir a segurança do sistema e confirmar a identidade de seus usuários. Por exemplo, uma empresa pode usar a PKI para controlar o acesso a sua rede de computadores. No futuro, as empresas poderiam usar a PKI para controlar o acesso a tudo, desde a entrada nos prédios até a obtenção de mercadorias. A PKI permite que pessoas e empresas realizem negócios em particular. Os funcionários podem enviar e-mails pela Internet com segurança, sem se preocupar com a sua interceptação por um concorrente. As empresas podem construir sites privativos, enviando informações somente para clientes conhecidos.

A PKI baseia-se em um sistema de confiança, no qual duas partes (pessoas ou computadores) confiam mutuamente em uma CA (Autoridade Certificadora) para verificar e confirmar a identidade de ambas as partes. Por exemplo, a maioria das pessoas e empresas confia na validade de uma carteira de habilitação de motorista ou em um passaporte. Isto ocorre porque elas confiam na forma pela qual o governo emite estes documentos. Entretanto, uma caderneta de estudante é normalmente aceita como prova de sua identificação apenas para a escola que a emite. O mesmo vale para os Certificados Digitais.

Com a PKI, ambas as partes de uma transação (seja ela um banco on-line e seus clientes ou um empregador e seus funcionários) concordam em confiar na CA que emite seus Certificados Digitais. Normalmente, o aplicativo de software que utiliza seu Certificado Digital tem algum mecanismo para confiar nas CAs. Por exemplo, um navegador contém uma lista das CAs em que confia. Quando é apresentado ao navegador um Certificado Digital (por exemplo, de um shopping on-line realizando comércio seguro), ele consulta a CA que emitiu o Certificado Digital. Se a CA estiver na lista de CAs confiáveis, o navegador aceita a identidade do site da Web e exibe a página da Web. Entretanto, se a CA não estiver na lista de CAs confiáveis, o navegador exibe uma mensagem de aviso que lhe pergunta se você deseja confiar na nova CA. Geralmente seu navegador lhe dá opções para confiar permanente ou temporariamente na CA ou não confiar em absoluto. Como usuário, você tem controle sobre em qual(is) CA(s) deseja confiar, porém o gerenciamento da confiança é feito pelo aplicativo de software (neste exemplo, pelo navegador).


Como funciona a autenticação de cliente?

A autenticação de cliente descreve o processo de confirmação de identidade feito pelo computador. O exemplo a seguir mostra como um site da Web pode utilizar a identificação de cliente, embora este processo não se limite à Internet e possa ser utilizado por aplicativos de rede, entre outras opções. Em geral, o processo é o mesmo. Quando você acessa um site que requer um Certificado Digital, seu navegador apresenta seu Certificado Digital a este site. Ele visualiza a informação contida em seu certificado e determina o que você tem permissão para fazer. (Os Certificados Digitais usados para a identificação de clientes, às vezes, são chamados de certificados de cliente).

Dependendo do navegador que você utilizar, você poderá ter que confirmar que deseja apresentar seu Certificado Digital ao site. Geralmente, você verá uma caixa de diálogo solicitando a senha do Certificado (a mesma de sua chave privativa*). Ao digitar a senha, o navegador envia seu certificado ao site. É importante proteger sua senha, pois se outra pessoa conhecê-la e tiver acesso a seu computador, poderá acessar informações particulares,facilmente, ou passar-se por você on-line.

Depois que o site visualiza seu Certificado Digital, ele verifica a validade do mesmo (se está vencida, por exemplo). O site também pode verificar quem emitiu o Certificado Digital, pois se o servidor não confiar na autoridade certificadora (CA) em questão, seu acesso ao site poderá ser recusado. Por isso, é importante utilizar uma CA de boa reputação.

O site pode utilizar qualquer informação do Certificado Digital para determinar seu nível de acesso, ou seja, o que você tem permissão ou não para acessar. Seu Certificado Digital contém algumas - ou todas - das seguintes informações a seu respeito:

  • Sua chave pública (veja O que é uma chave de Certificado Digital?);
  • Seu nome;
  • Data de validade da chave pública;
  • Nome da companhia (CA) que emitiu seu Certificado Digital;
  • Número de série do Certificado Digital;
  • Assinatura digital da CA;
  • Informações diversas solicitadas pela CA;

Depois que o site da Web confirma sua identidade, você pode ter acesso ao site. Alguns aplicativos de rede ou de sites utilizam as informações do seu Certificado Digital para personalizar as informações apresentadas a você. Essa personalização, às vezes, é chamada de controle de acesso, mas, não confunda controle de acesso com autenticação de cliente. A autenticação de cliente apenas comprova sua identidade.

*CHAVES PÚBLICAS E PRIVATIVAS Um Certificado Digital possui duas chaves que são usadas durante a criptografia de dados (embaralhamento de dados). As duas chaves coincidem perfeitamente, porém são utilizadas em par, de forma que uma chave desfaça o que a outra faz. Por exemplo, se uma chave criptografa uma mensagem, apenas a outra chave pode decriptografá-la.

A chave pública é usada por outras pessoas para lhe enviar e-mails criptografados. Ela também é usada para a autenticação de clientes, assegurando que o Certificado Digital não seja violado quando você o enviar do seu computador para um Web site.

A chave privativa é armazenada apenas no seu computador, através do seu navegador. Você nunca deve copiar ou enviar a sua chave privativa para ninguém. Dependendo do seu navegador e das configurações de segurança que você utilize, você pode ter uma senha associada a sua chave privativa. Isto é uma segurança a mais que você pode ter, de forma que, caso alguém pegue a sua chave privativa ou utilize o seu computador, não consiga utilizá-la (ou a seu Certificado Digital).


Como funciona uma assinatura digital?


Quando você utiliza um aplicativo para assinar digitalmente uma mensagem, basicamente, você anexa a parte pública do seu Certificado Digital à mensagem, juntamente com outras informações que garantem a integridade do seu e-mail. Antes da mensagem de e-mail e o Certificado Digital serem enviados, a mensagem passa por um processo de codificação chamado algoritmo hash, através do qual a mensagem que você está enviando é utilizada para gerar matematicamente um conjunto de caracteres (letras e números), que só poderiam ser criados especificamente pela sua mensagem. Esse conjunto leva o nome de message digest (resumo da mensagem).

Vale a pena ressaltar que o algoritmo hash funciona rapidamente numa direção, mas é muito difícil de funcionar na direção inversa. Ou seja, o seu aplicativo de e-mail pode pegar a mensagem, aplicar o algoritmo hash e criar rapidamente um resumo exclusivo da mensagem. Entretanto, se este recebesse a mensagem resumida, levaria anos para decodificá-la.

Uma vez criado o message digest pelo seu e-mail, este usa sua chave privativa para criptografá-lo. Isto é crítico. Se você enviasse o e-mail, mais o message digest, alguém poderia facilmente alterar o seu texto, recriar a mensagem resumida e, em seguida, enviá-la como se fosse você.
Seu programa manda o e-mail com o Certificado Digital e o message digest criptografado como anexos. Observe que o texto do e-mail não está criptografado. Assim, alguém ainda seria capaz de ler o conteúdo de sua mensagem.

Quando alguém recebe seu e-mail, o aplicativo dessa pessoa utiliza a sua chave pública para decriptografar o message digest. Sendo assim, este aplicativo executa o texto de seu e-mail pelo mesmo algoritmo hash que o seu aplicativo de e-mail utilizou, comparando os resultados. Se o message digest criado agora for igual ao anexado ao seu e-mail, isto indica que seu texto não foi indevidamente alterado entre o seu envio e o recebimento.

Para obter mais informações, consulte Chaves públicas e Privativas.


Como funciona o e-mail seguro?


Você pode usar o e-mail seguro para fazer o seguinte:

Assinar digitalmente uma mensagem para que o destinatário possa verificar se ela partiu de você e não de um impostor. A assinatura de uma mensagem também garante a integridade desta, ou seja, que ninguém a adulterou.

Criptografar uma mensagem para que ninguém possa lê-la enquanto ela percorre o trajeto entre o seu computador e um outro. Você pode configurar a maioria dos aplicativos de e-mail para assinar ou criptografar automaticamente suas mensagens ou, se preferir, pode fazê-lo manualmente, uma a uma.


Que aplicativos utilizam os Certificados Digitais?

Os Certificados Digitais são compatíveis com o Netscape Navigator 3.0, e versões mais avançadas (no Win 95, NT, Sun Solaris 2.5x, 2.6, SGI Irix 6.x e HP-UX 10.20) e também com o Microsoft Internet Explorer 3.02, com atualização authenticode, ou versões mais avançadas da atualização 2.0 (no Win95 e Win NT 3.5.x ou posteriores em plataforma x86.) Para assinar e criptografar e-mail, os Certificados Digitais são compatíveis com Netscape Messenger, Microsoft Outlook e Outlook Express, e também com qualquer outro S/MIME (Secure Multipurpose Internet Mail Extensions) aplicativos de e-mail habilitados, como o Deming, Frontier, Pre-mail, Opensoft, Connectsoft e Eudora.

Os pacotes de navegador da Web mais recentes (o Netscape Communicator e Microsoft Internet Explorer), têm aplicativos de e-mail (Netscape Messenger e Microsoft Outlook Express), dessa forma, os Certificados Digitais obtidos através desses pacotes podem ser utilizados tanto para o e-mail como para a Web. Se você está utilizando um aplicativo de e-mail diferente do Netscape Messenger ou do Microsoft Outlook Express, deve obter seu Certificado Digital através do fornecedor de seu programa de e-mail.


Como se usa as chaves de Certificado Digital?


Os usuários devem ser capazes de obter seu Certificado Digital com segurança, para que possam lhe enviar e-mails criptografados. Do mesmo modo, você precisa de uma forma para pesquisar os Certificados Digitais deles. Você pode enviar uma mensagem de e-mail assinada digitalmente para as pessoas de quem deseja receber mensagens criptografadas. E também pode fazer com que elas lhe enviem mensagens assinadas para que você possa obter seus Certificados Digitais.

Além disso, é possível pesquisar Certificados Digitais em diversos diretórios. O Centro de Certificação Digital contém um recurso de pesquisa que lhe permite localizar Certificados Digitais que pertencem a você e a outras pessoas em sua organização.


O que acontece quando uma chave perde a validade?


Para obter proteção contra um ataque à força bruta, toda chave tem um ciclo de vida, após o qual ela não poderá mais será usada. A data de validade é armazenada na chave pública de um Certificado Digital. Todo navegador ou aplicativo de e-mail verifica a validade de um Certificado Digital, certificando-se de que a data em que você receber o Certificado Digital (e as informações que ele está protegendo) consta das datas válidas. Isto significa que, quando sua própria chave vence, tudo que você assinou com ela não será mais válido.

Uma vez expirado o ciclo de vida, você precisará renovar seu Certificado Digital através do Centro de Certificação Digital.


O que é um algoritmo hash?

Uma função hash é uma equação matemática que utiliza texto (tal como uma mensagem de e-mail) para criar um código chamado message digest (resumo de mensagem). Alguns exemplos conhecidos de funções hash: MD4 (MD significa message digest), MD5 e SHS.

Uma função hash utilizada para autenticação digital deve ter certas propriedades que a tornem segura para uso criptográfico. Especificamente, deve ser impraticável encontrar:

  • Texto que dá um hash a um dado valor. Ou seja, mesmo que você conheça o message digest, não conseguirá decifrar a mensagem.
  • Duas mensagens distintas que dão um hash ao mesmo valor.

A capacidade de descobrir uma mensagem que dê um hash a um dado valor possibilita a um agressor substituir uma mensagem falsa por uma mensagem real que foi assinada. Permite ainda que alguém rejeite de forma desleal uma mensagem, alegando que, na realidade, ele ou ela assinou uma mensagem diferente, dando um hash ao mesmo valor e violando assim a propriedade de não-repúdio das assinaturas digitais.

A capacidade de descobrir duas mensagens distintas que dêem um hash ao mesmo valor possibilita um tipo de ataque no qual alguém é induzido a assinar uma mensagem que dá um hash ao mesmo valor como sendo outra mensagem com um conteúdo totalmente diferente.


O que é um resumo de mensagem (message digest)?

Um resumo de mensagem (message digest) é o resultado obtido com a execução de um texto (tal como uma mensagem de e-mail) por meio de um algoritmo hash. Em resumo, um message digest representa uma mensagem ou documento de maior extensão. Você pode pensar em um message digest como a "impressão digital" de um documento maior. Ele é usado para criar uma assinatura digital que será exclusiva de um determinado documento.

Um message digest não revela o conteúdo de um documento. Isto é, mesmo que você consiga visualizar o message digest, não será capaz de imaginar o que a mensagem original contém.

MD2, MD4 e MD5 (MD significa Message Digest) são funções hash, destinadas especificamente ao uso criptográfico. Elas geram digests de 128 bits.


O que implicaria o uso de um certificado “wildcard”?

Um certificado digital não é apenas uma forma de proteger os dados em transações na Internet. É também uma identificação digital de sua empresa. Quando você utiliza um certificado "wildcard" emitido para uma outra organização, o cliente que for fazer uma transação com a sua empresa não terá a garantia de estar realmente enviando as informações para a empresa correta. Isso faz com que muitas pessoas, ao verificarem que foram redirecionadas para um outro domínio, onde o nome da organização listado no certificado não é o da organização com quem estão lidando, fiquem inseguras e desistam da transação.

A própria Microsoft não aprova a utilização destes certificados, pois em muitas versões do Internet Explorer o cliente recebe um erro ao tentar acessar um site com um certificado "wildcard".

Certificado Digital

Material retirado de www.certisign.com.br


O que é um Certificado Digital?
Um Certificado Digital é um arquivo no computador que identifica você. Alguns aplicativos de software utilizam esse arquivo para comprovar sua identidade para outra pessoa ou outro computador. Dois exemplos típicos são:
- Quando você consulta seu banco on-line, este tem que se certificar de que você é a pessoa que pode receber a informação sobre a conta. Como uma carteira de motorista ou um passaporte, um Certificado Digital confirma sua identidade para o banco on-line.
- Quando você envia um e-mail importante, seu aplicativo de e-mail pode utilizar seu Certificado Digital para assinar "digitalmente" a mensagem. Uma assinatura digital faz duas coisas: informa ao destinatário que o e-mail é seu e indica que o e-mail não foi adulterado entre o envio e o recebimento deste.

Um Certificado Digital normalmente contém as seguintes informações:

  • Sua chave pública (para mais informações, veja O que é um par de chaves digitais?);
  • Seu nome e endereço de e-mail; - A validade da chave pública;
  • O nome da empresa (a Autoridade Certificadora - CA*) que emitiu seu Certificado Digital;
  • O número de série do Certificado Digital; - A assinatura digital da CA.
* AUTORIDADE CERTIFICADORA Uma CA (Autoridade Certificadora) é a empresa que emite um Certificado Digital para você.A sua CA pode ser a empresa para a qual você trabalha ou uma empresa que você paga para emitir Certificados Digitais.

O que posso fazer com um Certificado Digital?
Os aplicativos de software, redes e computadores podem utilizar seu Certificado Digital de várias maneiras:

  • Criptografia (ou embaralhamento de dados) é uma maneira de proteger informações, antes de enviá-las de um computador para outro. Normalmente, os aplicativos de e-mail utilizam o Certificado Digital do destinatário do e-mail criptografado. Para enviar mensagens criptografadas, você precisa da chavepública do destinatário. Veja mais informações na seção sobre e-mail seguro.
  • Autenticação de cliente é o termo usado para descrever como você (o cliente) pode comprovar sua identidade para outra pessoa ou computador. Por exemplo, os bancos on-line precisam se certificar de que você é o cliente verdadeiro de uma determinada conta bancária. No banco, a pessoa geralmente comprova sua identidade através da carteira de identidade. Quando você está on-line, seu aplicativo de software apresenta seu Certificado Digital. Alguns sites exigem que você apresente seu Certificado Digital para permitir que você entre em áreas de acesso restritas, como as destinadas a assinantes de determinado serviço oferecido pelo site.
  • A assinatura digital, como a assinatura escrita, comprova que a pessoa criou ou concorda com o documento assinado. A assinatura digital oferece um nível mais alto de segurança do que uma assinatura escrita porque a assinatura digital verifica que a mensagem veio de determinada pessoa e não foi alterada por acidente intencionalmente. Desta forma, se você assinar um documento, não poderá renegar a assinatura, alegando que ela foi falsificada (isto é conhecido como não-repúdio).

Como posso obter um Certificado Digital?

Você pode obter um Certificado Digital através de uma Autoridade Certificadora (CA), ou através do Centro de Certificação Digital, em que sua empresa age em parceria com uma CA.

Quando sua empresa emite um Certificado Digital, ela está fornecendo uma forma de você se identificar perante outras pessoas, como os sócios de sua empresa ou os computadores da rede.

Se você quer um Certificado Digital por razões pessoais, deve ter cuidado ao escolher sua CA. Afinal, as pessoas precisam confiar nela, para que você consiga comprovar sua identidade. Para comprovar sua identidade, você precisa de uma CA em que as pessoas confiem. Por exemplo, a maioria das pessoas e companhias confiam em uma carteira de identidade, pois confiam na maneira como o governo emite esse documento. Por outro lado, uma caderneta escolar, normalmente, só é aceita como comprovação de identidade na escola que a emitiu. O mesmo acontece com os Certificados Digitais. É preciso que seu Certificado Digital venha de uma CA que desfrute da confiança das principais companhias que trabalham na Internet.

A CertiSign é, hoje, a maior Autoridade Certificadora do Brasil.

O que é um par de chaves de Certificado Digital?


Quando você se comunica com outra pessoa (ou computador), precisa de um ambiente seguro para trocar informações, de modo que ninguém as possa interceptar e ler. Atualmente, a maneira mais avançada de criptografar (embaralhar) dados é através de um sistema que utiliza pares de chaves. Um par de chaves é formado por uma chave pública e uma privativa. Estas são utilizadas como as chaves de uma fechadura, sendo que uma chave serve para proteger a fechadura e outra, para abri-la.

Quando você tem um par de chaves, seu aplicativo de software utiliza uma chave para criptografar o documento. Este, ao ser recebido, só poderá ser lido com o auxílio de uma chave correspondente, que irá decriptografar a mensagem. O problema com esse processo é como dar a alguém a "chave" para decriptografar sua mensagem, sem que ela caia nas mãos de outra pessoa?

A solução está na maneira como as chaves são utilizadas. Você cria uma chave privativa, que só pode ser usada com o Certificado Digital que você pediu, e uma chave pública, que passa a fazer parte do Certificado Digital. O navegador pode pedir a senha quando você acessar a chave privativa. É muito importante que você escolha uma senha que só você conheça. Não escolha seu aniversário, outras datas pessoais ou frases que alguém possa adivinhar.
Depois de receber e instalar o Certificado Digital, você pode distribui-lo a quem quiser. O Certificado Digital que você envia contém sua chave pública. Quando alguém quiser enviar uma mensagem criptografada para você, usará sua chave pública. A mensagem criptografada com sua chave pública somente poderá ser decriptografada por você, pois só você possui sua chave privativa.

Da mesma forma, quando você quiser enviar uma mensagem criptografada, primeiro você deverá obter a chave pública do destinatário. Isso pode ser feito procurando numa listagem ou pedindo que lhe enviem um e-mail assinado com o respectivo Certificado Digital, contendo a chave pública necessária. Seu aplicativo de e-mail pode guardar o Certificado Digital para quando este for necessário.

Para que serve um Certificado Digital?

Centros de compra virtuais, transações bancárias eletrônicas e outros serviços via Internet estão se tornando cada vez mais comuns. Entretanto, as preocupações que você tem quanto à privacidade e à segurança podem impedir que você se beneficie deste novo meio de comércio pessoal. Um Certificado Digital pode ajudar. Ou então, a empresa onde você trabalha talvez tenha uma rede que exija de você um Certificado Digital para os aplicativos utilizados em seu trabalho. Como você utilizará esta tecnologia no trabalho, você precisa aprender a usar Certificados Digitais o mais rápido possível.

Os Certificados Digitais são utilizados por sites e aplicativos de rede para embaralhar os dados permutados entre dois computadores. A criptografia é uma ferramenta poderosa, mas, por si só, não constitui proteção suficiente para suas informações.

A criptografia não pode provar sua identidade ou a identidade da pessoa que está te enviando dados criptografados. Por exemplo, um acionista on-line pode ter um site que criptografa os dados que lhe são enviados através de suas páginas da rede. O site pode até exigir que você digite o nome do usuário e sua senha. No entanto, estes tipos de nome de usuário e senha podem ser facilmente interceptados e não servem como prova de sua identidade. Sem garantias extras, alguém pode assumir sua identidade on-line e ter acesso a suas contas e a outros dados particulares ou confidenciais.

Os Certificados Digitais resolvem este problema, fornecendo um meio eletrônico de verificar sua identidade. Eles fornecem uma solução de segurança mais completa, assegurando a identidade de todas as partes envolvidas na transação.

Devido ao modo como o Certificado Digital funciona, ele fornece uma função de não-repúudio que, essencialmente, impede que as pessoas neguem o envio de uma mensagem. Por exemplo, ao usar o cartão de crédito, você tem que assinar um recibo autorizando o pagamento. Devido à exigência de asssinatura, você pode provar que alguém roubou o seu cartão, ou o utilizou indevidamente, comparando sua assinatura com a que está no recibo. Com a irrefutabilidade, sua autorização se dá de forma automática, no momento em que você envia o Certificado.
Caso alguém consiga roubar o seu Certificado Digital, não poderá utilizá-lo, a menos que tenha a senha de sua chave privativa. Por isso é tão importante não confiar sua senha a ninguém.

sexta-feira, setembro 29, 2006

Site bem explicado sobre RSA

https://www.redes.unb.br/security/criptografia/rsa/rsa.html

HASH

Um hash é uma seqüencia de letras ou números geradas por um algorítmo de hashing.

Essa seqüencia busca identificar um arquivo ou informação unicamente. Por exemplo, um e-mail, uma senha, uma chave ou mesmo um arquivo. Ele é um método para transformar dados de tal forma que o resultado seja (quase) exclusivo. Além disso, funções usadas em criptografia garantem que não é possível a partir de um valor de hash retornar à informação original.

Como a seqüencia do hash é limitada, muitas vezes não passando de 512 bytes, existem diversas colisões (seqüencias iguais para dados diferentes). Quanto maior for a dificuldade de se criar colisões intencionais, melhor é o algoritmo.

Uma função de hash recebe um valor de um determinado tipo e retorna um código para ele. Enquanto o ideal seria gerar identificadores únicos para os valores de entrada, isso normalmente não é possível: na maioria dos casos, o contra-domínio de nossa função é muito menor do que o seu domínio, ou seja, x (o tipo de entrada) pode assumir uma gama muito maior de valores do que hash(x) (o resultado da função de hash).

Os mais usados algoritmos de hash são os 16 bytes: MD2, MD4, MD5 ou o SHA-1, de 20 bytes. Características de alguns algoritmos:

  1. MD4: Desenvolvido em 1990/91 por Ron Rivest, vários ataques foram detectados, o que fez com que o algoritmo fosse considerado frágil.
  2. SHA-1 (Secure Hash Algorithm): Desenvolvido pelo NIST e NSA e é considerado como o mais seguro atualmente.

O processo é unidirecional e impossibilita descobrir o conteúdo original a partir do hash. O valor de conferência ("check-sum") muda se um único bit for alterado, acrescentado ou retirado da mensagem.


Criptografia de chave pública

Origem: Wikipédia, a enciclopédia livre.

A criptografia de chave pública ou criptografia assimétrica é um método de criptografia que utiliza um par de chaves: uma chave pública e uma chave privada. A chave pública é distribuída livremente para todos os correspondentes via e-mail ou outras formas, enquanto a chave privada deve ser conhecida apenas pelo seu dono.

Em um algoritmo de criptografia assimétrica, uma mensagem cifrada (encriptada é um termo incorrecto) com a chave pública pode somente ser decifrada pela sua chave privada correspondente. Do mesmo modo, uma mensagem cifrada com a chave privada pode somente ser decifrada pela sua chave publica correspondente.

Os algoritmos de chave pública podem ser utilizados para autenticidade e confidencialidade. Para confidencialidade, a chave pública é usada para cifrar mensagens, com isso apenas o dono da chave privada pode decifra-la. Para autenticidade, a chave privada é usada para cifrar mensagens, com isso garante-se que apenas o dono da chave privada poderia ter cifrado a mensagem que foi decifrada com a 'chave

Criptografia RSA

Criptografia RSA

Para criar uma chave RSA precisamos escolher dois números primos grandes, geralmente este numeros sao maiores que 10^100, mas para facilitar vamos escolher dois números pequenos que serão associados a "p" e "q".

p = 3
q = 11

Depois vamos calcular dois novos números com base nos dois números primos escolhidos

n = p * q
z = (p - 1) * (q - 1)

Os resultados serão

n = 33
z = 20

Note que o valor "n" vai ser importante quando relacionarmos os caracteres a numeros pois os valores de cada caracter não podera eceder este valor.
Em seguida deveremos escolher um número primo em relação a "z" que será associado a "d", o único requsito é que não haja fatores comuns entre eles, por exemplo:

d = 7

O número 7 não tem fator comum com 20 por isso foi escolhido. Agora complica um pouco e seus conhecimentos em matemática serão requisitados. Voce deverá encontrar um número que será associado a "e" na seguinte formula:

(e * d) mod z = 1

Substituindo "d" e "z" pelos seus valores. Bom voce vai pensar: "Putz até dá para fazer, mas acho que esse mod vai complicar". Não se preocupe "mod" nada mais é do que o módulo do resto de uma divisão, ou seja 5 dividido por 3 vai restar 2 certo, então escrevemos assim: 5 mod 3 = 2
Entendeu? Então vamos testar, iremos escolher o número 1 para associarmos a "e":

e = 1
(1 * 7) mod 20 = 1
O valor retornado será 7 e não 1 então não pode ser 1

e = 3
(3 * 7) mod 20 = 1
O valor retornado será 1 então o nosso número será o 3

Bom já temos os valores das chaves privadas e publicas, ambas são compostas por dois valores, v1 e v2 que aplicados na seguinte fórmula genérica faz a criptografia ou descriptografia:

saída = entrada ^ v1 mod v2

Os valores "e" e "n" formam a chave pública e "d" e "n" formam a chave privada. Substituindo v1 por "e" e v2 por "n" você terá a formula de emcriptação

texto criptografado = texto original ^ e mod n

Logo o inverso será a formula para descriptografar, substituindo v1 por "d" e v2 por "n" que é a chave privada:

texto original = texto criptografado ^ d mod n

Para usar as chaves públicas e privadas é necessário associar um número a cada letra do alfabeto, por exemplo:

A = 1; B = 2; C = 3; D = 4; E = 5; F = 6; G = 7; H = 8; I = 9; J = 10; K = 11; L = 12; M = 13; N = 14;
O = 15; P = 16; Q = 17; R = 18; S = 19; T = 20; U = 21; V = 22; X = 23; Y = 24; W = 25; Z = 26

Com exemplo vamos encriptar de desencriptar a letra "m", para isso veremos qual o número correspondente na tabela acima e verificamos que é o número 13, então:

texto criptografado = 13 ^ e mod n
texto criptografado = 13 ^ 3 mod 33
texto criptografado = 19

Convertendo o valor para a tabela padronizada anteriormente teremos a letra "S". O destinatário ao receber a mensagem deverá descriptografá-la usando a fórmula usando os dados da chave privada:

texto original = 19 ^ d mod n
texto original = 19 ^ 7 mod 33
texto original = 13

O número 13 é equivalente a letra "M" na tabela padronizada anteriormente.