quinta-feira, 4 de setembro de 2014

Pesquisa descobre nova forma de quebrar criptografias


Pesquisadores da Universidade de Tel Aviv, em Israel, afirmam ter encontrado um novo método para quebrar criptografias. A pesquisa mostra que dados protegidos por criptografia podem ser acessados "tocando o computador", após copiar chaves que destravam o arquivo.

A vulnerabilidade descoberta usa da diferença de potencial gerada enquanto o computador trabalha nos cálculos para a desencriptação para burlar o processo. Essa diferença pode ser medida com um cabo tocando partes metálicas do computador, como entradas para dispositivos VGA, USB e até a ponta de um cabo qualquer já conectado. Assim é possível copiar a chave de encriptação utilizando aparelhos especiais para esta medição.

Os testes mostraram que o método foi bem sucedido em chaves como a RSA de 4096 bits e ElGamal de 3072 bits, consideradas de alta segurança. Mas para amenizar esse fato, o que torna o problema um pouco menos preocupante, é que para o método funcionar é preciso conseguir acesso físico ao computador no exato momento em que ele realiza a desencriptação junto aos aparelhos especiais necessários, o que deve ser um pouco dificil de não ser notado. UFA!!

Para resolver o problema, desenvolvedores do encriptador de código aberto GnuPG introduziram a geração de dados randômicos em seu software, o que torna impossível a descoberta da chave.

retirado de: http://www.technologyreview.com/news/530251/how-to-break-cryptography-with-your-bare-hands/

GNU Privacy Guard

O GNUPG é uma implementação do OpenPGP desenvolvido pela GNU. Sendo uma alternativa ao software proprietario PGP, o GNUPG permiti criptografar mensagens e arquivos utilizado criptografia assimétrica, é um software gratuito e está disponível para varias plataformas. 

Desde sua concepção enfrentou diversos obstaculos,  sendo um dos maiores o governo dos Estados Unidos. Surgiu na década de 90, numa época em que o governo americano rechaçava toda forma de criptografia não analisada pelos mesmos, permitindo até então apenas criptografias fracas.

Como uma forma de driblar as leis locais, os fundadores decidiram publicar a aplicação em servidores na Europa. Sua primeira versão estável foi lançada em 7 de Setembro de 1999. No mesmo ano, como uma forma de apoiar o livre desenvolvimento de novas criptografias o governo Alemão decidiu financiar uma versão para windows do projeto.

Em 2001 foi fundada a G10-Code, uma empresa voltada para manutenir o GNUPG. Em 2010 a g10 disponibilizou o gpg4win, uma implementação do gpg para windows, acesso para o site oficial.

O GNUPG também chegou ao android, em 2012 foi lançado sua primeira versão. O aplicativo pode ser adquirido na loja de aplicativos da Google e promete trazer privacidade para emails e arquivos do dispositivo móvel.


Referencias:
  1. http://www.openpgp.org/members/gnupg.shtml
  2. http://lists.gnupg.org/pipermail/gnupg-announce/2007q4/000268.html
  3. http://www.gpg4win.org/

quarta-feira, 3 de setembro de 2014

Heartbleed

O Heartbleed é uma vulnerabilidade critica na biblioteca de criptografia OpenSSL, a falha encontrada permite o acesso a uma parte da memoria ram, possibilitando, dessa forma, o acesso as chaves de acesso e consequentemente a diversas informações.
O OpenSSL é uma variação em código aberto do SSL. Você pode saber mais sobre SSL clicando aqui. O Open é uma biblioteca altamente utilizada na web para a comunicação segura de dados, muita utilizada em mensageiros e aplicações web.

O problema foi encontrado por um grupo de pesquisadores do Google, nesse ano de 2014, é sabido que o erro estava presente desde 2012. Diversas empresas como Amazon, Facebook, Twitter, Yahoo e etc, entraram na corrida para disponibilizar uma solução para a falha.

Em pouco tempo uma correção foi lançada, restando as prestadoras de serviços atualizarem sua versão para evitar ataques. Uma campanha de marketing foi iniciada para explicar os danos relacionados a falha e assim agilizar o processo de atualização. Segue um vídeo da campanha aqui no Brasil, o link para o site da campanha se encontra nas referencias.



 Pela gravidade da ocorrência, uma campanha tornou-se realmente necessária. O OpenSSL está presente na vida de milhões de usuários, que na maioria das vezes utilizam o canal de criptografia para realizar transações comerciais. Uma vulnerabilidade que poderia expor cartões de créditos, senhas bancarias e dados pessoais.

Referencias:
  1. http://www1.folha.uol.com.br/tec/2014/04/1438015-especialistas-encontram-falha-de-seguranca-que-compromete-multiplos-servicos-de-internet.shtml
  2. http://www.heartbleed.com.br/
  3. http://idgnow.com.br/blog/circuito/2014/04/15/heartbleed-tudo-o-que-voce-precisa-saber-sobre-a-falha-no-openssl/

segunda-feira, 25 de agosto de 2014

Integridade em chamadas VoIP com ZRTP

O ZRTP(Z e Real Time Protocol) é um protocolo de comunicação VoIP, ele utiliza em sua base um sistema de negociação de chaves Diffie-Hellman para criptografar as chamadas.
A criptografia do ZRTP é realizada nos endpoints, celulares, computadores, tablets, etc. Dois métodos são utilizados para realizar verificação. No primeiro é gerado uma sequência de 4 letras e números, que devem ser iguais nas duas pontas. No Segundo, é aberto um canal de voz para os usuários falarem as chaves e realizado a identificação por voz da pessoa.
Figura 1: Simulação de aplicação do ZRTP.

Para iniciar o processo de comunicação uma mensagem Hello é enviada a um endpoint, essa mensagem vai ser capaz de informar se o outro endpoint suporta o protocolo. Na mensagem é enviada a configuração da sessão SRTP, além disso é repassado um ZRTP ID de 96-bits.
O Hello é respondido com um HelloACK, um hash é utilizado para autenticar a mensagem, e dessa forma evitar man-in-the-middle. Uma a resposta autenticada os dispositivos são conectados e a comunicação por voz pode ser iniciada.

Segue um vídeo exibindo uma comunicação VoIP utilizando o ZRTP com o software Jitsi.

Referências:
  1. http://www.gehirn.com.br/blog/criptografia-e-testes/
  2. http://www.madeira.eng.br/liberty/download_file.php?attachment_id=178

sábado, 16 de agosto de 2014

Bitcoin

O que é?

O bitcoin é uma moeda virtual, baseada em criptografia. Foi criada por Satoshi Nakamoto e ganhou notoriedade por sua forma livre de transferência, sendo totalmente independente de uma autoridade central. Por isso, acabou se tornando uma moeda popular no mercado negro.
O bitcoin roda numa rede peer-to-peer, dessa forma circular independente de um servidor. A moeda pode ser transferida por computadores e smartphones sem a necessidade de uma instituição financeira.
As moedas são armazenadas em carteiras, as carteiras, por sua vez, podem ser mantidas nos próprios computadores do usuário ou em servidores que disponibilizam o serviço de armazenamento, funcionando com uma espécie de banco.
Atualmente, o bitcoin já pode ser usados em diversas empresas: bares, escritórios, bicicletárias, oficinas etc.

Carteira e a Criptografia

As carteiras são as responsáveis pela possibilidade de transação e armazenamento da moeda, cada carteira possui dois números, um representa uma chave publica e o outro uma chave privada. Donos de carteiras podem ter várias chaves, correspondendo ao número de moedas. Quando é realizado uma transação um usuário adiciona a chave publica de outro usuário na moeda e assina as moedas com sua própria chave privada, algo semelhante ao usado em certificados digitais. Para consolidar a transação, é comunicado a outros nós na rede P2P sobre a mesma, a rede atua na validação e confirmação da transação.

Mineração

Os bitcoins são gerando através a partir do programa de geração de moedas. Todos os nós da rede competem entre si para ser o primeiro a achar uma solução para um problema criptográfico envolvendo o lote escolhido para minerar, todo processo funciona como uma especie de tentativa e erro.

Conclusão

Essa postagem teve como principio apresentar mais uma aplicação da criptografia assimétrica, vemos como o uso de chaves publicas e privadas possibilitam a transação de dinheiro virtual, garantindo a integridade e confiabilidade as moedas.


Referencias:

  1. http://g1.globo.com/tecnologia/noticia/2014/02/moeda-virtual-bitcoin-comeca-ganhar-espaco-no-comercio-brasileiro.html
  2. http://www.techtudo.com.br/artigos/noticia/2014/01/bitcoin-carteiras-bitcoin.html
  3. http://pt.wikipedia.org/wiki/Bitcoin#Informa.C3.A7.C3.B5es_t.C3.A9cnicas
  4. http://jovemnerd.com.br/nerdcast/nerdcast-393-ouro-diamantes-e-bitcoins/

quinta-feira, 14 de agosto de 2014

Padrão OpenPGP

O OpenPGP é um padrão aberto de criptografia é baseado no programa de encriptação e descriptografia de chave pública, PGP, criado por Phil Zimmermann em 1991.

O padrão surgiu como uma consequência do sucesso obtido pelo PGP, quando vários programadores demonstraram interesse em desenvolver programas compatíveis. Concedida a licença e permissão do uso do nome pela PGP Inc., a IETF (Internet Engineering Task Force) criou o padrão OpenPGP, definido através da normativa técnica RFC 2440.

A partir disso, a FSF (Fundação para o Software Livre) desenvolveu seu próprio software criptográfico, o GnuPG, que ganhou preferência de muitos usuários por ser código aberto, enquanto o PGP, que a princípio era livre, tornou-se pago em suas últimas versões.

Como usar o OpenPGP

Para entender o funcionamento e a utilização da criptografia assíncrona no OpenPGP, vamos entender como ele funciona.

No OpenPGP cada usuário gera, em seu computador, seu par de chaves: uma pública e uma secreta correspondente. Enquanto a chave secreta fica apenas com o usuário criador, a chave pública é compartilhada.

A criptografia funciona da seguinte maneira: qualquer arquivo criptografado pela chave pública só pode ser criptografado através do uso da chave secreta, dessa forma o arquivo se mantém ilegível para aqueles que não detém a chave secreta válida.

Já a assinatura de um arquivo segue o fluxo contrário da criptografia: o usuário assina o arquivo com sua chave secreta e, dessa forma, quem tem posse da chave pública consegue verificar a autenticidade do arquivo enviado. Para manter a segurança da informação, qualquer alteração em um arquivo assinado torna a assinatura inválida.

No ato de criptografar, é sempre preferível que também seja feito a assinatura. Assim, pode ser confirmado tanto a autenticidade do remetente quanto a confidencialidade da informação.

Para obter a chave pública é preciso entrar em contato com alguém que já a tenha, podendo ser o próprio usuário criador. De outra maneira, é possível obter uma chave pública através de um servidor de chaves, que contém as chaves públicas de muitos usuários. Para confirmar a autenticidade de uma chave pública é necessário verificar sua assinatura.

A vericidade da chave pública verificada diretamente com o usuário dono é feita a partir da impressão digital, código que se deduz através de cada chave. Se duas chaves são correspondentes, elas terão a mesma impressão digital.  Por outro lado, verificar a assinatura é conferir quem assinou aquela chave pública, ou seja, qual o usuário atesta sua validade. Exemplo: se a chave obtida do usuário C é assinada pelos usuários A e B, que por sua vez são usuários que tiveram impressões digitais válidas, então você pode deduzir que a chave do usuário C também será válida.

É dessa forma que é gerada a cadeia de confiança do OpenPGP: a partir do grau de confiança que você definiu para os seus contatos, é calculado o grau de confiabilidade da chave obtida - a partir de suas assinaturas e das impressões digitais de seus assinantes. Retornando ao exemplo anterior: para que a chave do usuário C seja confiável, você antes deve ter marcado como confiáveis (a partir de suas impressões digitais, por exemplo) os usuários A e B.

Quando uma chave está sendo usada de maneira indevida, é possível revogá-la e torná-la inválida. Para tanto, é possível acessar os chaveiros, que mantém as chaves públicas, utilizando a chave secreta, e revogar a chave que queira invalidar. Caso não seja possível acessar os chaveiros, a opção é utilizar um certificado de revogação, que deve ser criado junto com o par de chaves pública e secreta. É possível também escolher um de seus contatos como revogador de chaves.

Depois que uma chave é revogada, é necessário informar a todos os contatos, afim de torná-la inválida também para eles. A maneira mais eficiente seria através de um servidor, usado para manter o chaveiro: uma vez atualizado o status da sala (se ela foi revogada) em seu servidor, o usuário que acessa as chaves públicas através deste servidor também terá sua chave revogada.

Por fim, para utilizar o OpenPGP para criptografar seus dados, basta instalar um software que utilize o padrão (como o GnuPG) e escolher os programas ou arquivos que farão uso desta ferramenta. Assim, é possível manter a comunicação na internet mais protegida e confiável.

Referências e links úteis:
http://www.cripto.info/oqueepgp.shtml
http://www.cripto.info/pgpem10licoes.shtml
http://pt.wikipedia.org/wiki/PGP
http://pt.wikipedia.org/wiki/OpenPGP
http://pt.wikipedia.org/wiki/FSF
http://pt.wikipedia.org/wiki/IETF




Certificado Digital e Criptografia

Assinatura Digital

Para um melhor entendimento vamos iniciar nossos estudos explicando o conceito de Assinatura Digital.
A assinatura digital permitir comprovar e autenticar documentos eletrônicos. O objetivo aqui é representar a legitimidade de uma assinatura comum, usando meios virtuais. Para isso, é utilizado um esquema criptográfico, para proteção dos dados, e uma entidade nacional, que realiza a verificação da veracidade da assinatura, no Brasil esse órgão é o Instituto Nacional de Tecnologia da Informação e organizações autorizadas pelo mesmo.
A assinatura utiliza basicamente criptografia assimétrica, ou seja, todo o esquema de proteção funciona em cima de chaves publicas e privadas. Caso você tenha uma chave pública, vai haver apenas a possibilidade de acessar um documento recebido e repassar essa informação. Já se você for detentor de uma chave privada, vai ser possível emitir dados com uma identidade própria.

Certificado Digital

Finalizado o entendimento da assinatura vamos compreender como funciona o certificado digital. O certificado é um documento eletrônico com assinatura digital, pode ser utilizado por empresas, instituições, pessoas etc.
O certificado, por exemplo, permite garantir a autenticidade de um site, largamente utilizado em paginas de banco, e-commerce, órgãos governamentais ,redes sociais e correios de emails.
Todos os certificados devem estar associados a uma entidade regulamentadora, que podem ser uma Autoridade Certificadora (AC) ou uma Autoridade de Registro (AR). Uma AC tem a função de associar uma identidade a uma chave e "inserir" esses dados em um certificado digital. Para tanto, o solicitante deve fornecer documentos que comprovem sua identificação. Já uma AR tem uma função intermediária, já ela pode solicitar certificados digitais a uma AC, mas não pode emitir esse documento diretamente.

Figura 1: Árvore de Certificação

Conclusão

Como vimos, o certificado e a assinatura são dois exemplos de aplicações onde pode ser encontrado o uso de criptografia assimétrica. Onde chaves publicas e chaves privadas são utilizadas com algoritmos de criptografia, como o RSA, que é amplamente utilizado para certificados.
Vemos a importância desse modo de criptografia quando processos bancários e compras onlines podem ser feitas com segurança.

Referências:
  1. http://www.infowester.com/assincertdigital.php
  2. http://www.tecmundo.com.br/web/941-o-que-e-assinatura-digital-.htm
  3. Figura 1: http://www.infowester.com/assincertdigital.php