Feliz 2015

É praticamente impossível chegar nesta época do ano sem refletir nas coisas que aconteceram durante o ano vigente.

Comparando os anos de 2013 e 2014, eu posso dizer que 2014 foi melhor pois foi
um pouco menos turbulento, posso afirmar que ele está chegando ao fim com o
saldo positivo e dentre tudo que aconteceu eu posso enumerar as seguintes como muito positivas:

  • Fiz uma cirurgia que mudou a minha vida;;
  • Mudei de cidade (Francisco Beltrão para Guarapuava);
  • Depois de quase 3 anos trabalhando em home-office, voltei a trabalhar na
    modalidade presencial (post em breve para explica o lado positivo disso);
  • Atualizei meus conhecimentos em C# e Powershell;
  • Comecei a praticar exercícios;
  • Conheci bastante pessoas;

Existem outros pontos mas estes são os que considero mais positivos e enumerar
apenas estes é suficiente para acreditar que apesar de ter consciência de que
2015 será um ano difícil, com trabalho e dedicação eu tenho certeza que é
possível deixar o saldo dele no positivo também, se D-us quiser.

Um abraço a todos e feliz ano novo.

Introdução a Criptografia – Parte 2

Como eu havia prometido, continuo com a série de posts sobre criptografia, se você chegou aqui sem ter visto a parte 1, sugiro que comece lendo por aqui.

Introdução


Public and Private Keys

Atualmente as duas formas mais comuns de criptografia são a simétrica e
a assimétrica, fique tranquilo pois apesar dos nomes intimidarem são dois
conceitos bem simples de serem compreendidos.

Criptografia Simétrica

A criptografia é feita usando a mesma chave para criptografar e descriptografar a informação, similar ao que foi mostrado na primeira parte deste tutorial.

Uma analogia clássica usada para ilustrar esta abordagem é o da chave da casa, que é usada tanto para abrir quanto para trancar uma porta.

Esta forma exige menos poder computacional para criptografar e descriptografar a informação, entretanto ela é mais sujeita a falhas na manipulação e proteção da chave.

Criptografia Assimétrica

Esta abordagem é mais segura pois envolve um par de chaves ao invés de apenas uma.
Este par de chaves é composto pela chave pública e pela chave privada, uma para criptografar e outra para descriptografar.

A chave pública pode ser disponibilizada ao público em geral, pois ela só pode ser usada para criptografar uma informação cujo destinatário é quem possui a chave privada que forma o par com esta pública.

Vamos imaginar a seguinte situação:

  • José possui um par de chaves pública e privada;
  • Maria também possui um par de chaves pública e privada;
  • Ambos disponibilizaram entre si suas chaves públicas;

Ficou claro que cada ator neste cenário possui um par de chaves, cada uma usada para seu propósito, criptografar e descriptografar.

Vamos continuar:

  • José quer mandar uma mensagem criptografada para a Maria;
  • José possui a chave pública da Maria, então ele escreve sua mensagem e
    usando a chave pública dela ele a criptografa;
  • A partir deste ponto, nem José pode mais descriptografar esta mensagem;
  • José envia a mensagem criptografada para Maria através da internet (e-mail por exemplo);
  • Maria recebe a mensagem;
  • Maria usa a sua chave privada para descriptografar a mensagem;
  • Maria lê a mensagem original;

Presumo que o exemplo ficou claro: José escreveu uma mensagem e a criptografou usando a chave pública da Maria e como somente a Maria possui a chave privada dela, somente ela pode descriptografar esta mensagem.

Mas e se a Maria quiser responder a mensagem para o José? Vamos continuar usando a imaginação:

  • Maria recebeu a mensagem e deseja respondê-la e criptografá-la para José;
  • Maria possui a chave pública do José;
  • Maria escreve a mensagem e em seguida a criptografa usando a chave pública do José;
  • Maria envia a mensagem criptografada para o José usando a internet (via e-mail por exemplo);
  • José recebe a mensagem e usando a sua chave privada ele a descriptografa;
  • José lê a mensagem enviada por Maria;

Nos dois casos, sempre o remetente utiliza a chave pública do destinatário para criptografar a informação e o destinatário utiliza a sua chave privada para descriptografa-la.

Considerações Finais

Espero que o conceito de chaves públicas e privadas tenha ficado claro, pois na próxima parte eu ensinarei a configurar o ambiente necessário para poder criar (manter em geral) chaves, criptografar e descriptografar arquivos e enviar e-mails criptografados diretamente do cliente de e-mail.

Até lá.

Introdução a Criptografia – Parte 1

Eu gosto muito de chuva – apenas quando estou tranquila e confortavelmente em casa – e agora no momento em que escrevo este, está caindo uma chuva muito boa aqui em Guarapuava/PR, além disso está ventando bastante a ponto das janelas da minha casa ficarem vibrando, isso é muito bom para relaxar…

Eu não sei porque escrevi isso, mas tudo bem, agora vamos ao que interessa.

Introdução

Binary

O objetivo deste post é tentar mostrar o conceito básico de criptografia de uma maneira bem simples para que todos possam entender, pois o que eu desejo é que usuários comuns aka não-técnicos, saibam o que é criptografia e como fazer uso dela em seu dia-a-dia.

Nos próximos dias eu mostrarei em uma série de posts sobre como configurar e usar tudo o que for necessário para criptografar arquivos e e-mails, creio que assim eu estarei fazendo ao menos um pouquinho para ajudar aqueles que se interessam em proteger a sua privacidade mas não sabem por onde começar.

O que é criptografia?

O nome tem origem no grego Kryptós (escondido) e gráphein (escrita). É uma ciência que estuda meios que transformem uma informação de seu estado original para outro completamente ilegível, normalmente utilizando técnicas que permita que uma informação fique escondida dentro de outra.

Obviamente a criptografia atual não é algo o simples pois envolve cálculos matemáticos complexos para atingirem seu objetivo.

Personalidades históricas que eram entusiastas da criptografia

Como o principal objetivo da criptografia é esconder a informação de atores não autorizados a terem acesso a ela, obviamente estrategistas militares infames ou não, tinham um profundo interesse nela.

Uso na segunda guerra mundial

No final da primeira guerra mundial foi desenvolvida uma máquina criptográfica chamada Enygma, que foi amplamente usada pelos nazistas e deu bastante trabalho para os aliados que só conseguiram compreender as mensagens trocadas entre os alemães após conseguirem quebrar o código criptográfico dela.

Uma outra forma mais rústica, mas que não deixa de ser criptografia e que também foi usada na segunda guerra mundial, foi a “Navajo Code Talkers” que consistia basicamente no uso de indígenas norte-americanos como operadores de rádio que enviavam mensagens em código no idioma deles. Esta história é apresentada no filme Códigos de Guerra.

Uso atualmente

Atualmente a criptografia é utilizada para proteger qualquer informação considerada importante como:

  • Transações bancárias;
  • Privacidade;
  • Garantia de autenticidade;
  • Certificação Digital;
  • Navegação segura na internet;

Emfim, são vários os exemplos, como:  Quando você acessa um site e ele conta com criptografia para garantir a comunicação segura entre seu navegador e o servidor onde este site está rodando, o navegador mostra um cadeado que é o sinal que a conexão está criptografada.

Exemplo rústico de cifra

Supondo que você queira mandar a seguinte mensagem para alguém, mas deseja que somente o destinatário possa interpreta-la:

EU VOU PRA CASA

5 20 21 14 20 15 17 1 3 18 1

Acho que deu pra compreender que cada letra foi substituída pelo seu respectivo número na ordem do alfabeto, supondo que o código para cifrar/decifrar a mensagem fosse 10, ela ficaria conforme abaixo, pois seria somado o valor original com 10:

15 30 31 24 30 25 27 11 13 11 28 11

Para decifrar a mensagem, bastaria conforme previamente combinado com o destinatário, subtrair 10 de cada número da mensagem para então poder converte-la em letra novamente e ficar ciente que a mensagem era “EU VOU PRA CASA”.

Obviamente, isso é só um exemplo, não use isso de maneira nenhuma.

Outra técnica interessante para ser estudada é a Cifra de Cesar.

Mas ficou bem claro que uma das vulnerabilidades deste tipo de método é que o mesmo código que criptografa é usado para descriptografar, certo?

No próximo post eu mostrarei os meios utilizados hoje em dia que garantem uma segurança maior em todos os sentidos.

Quer ler a parte 2 agora? Vamos lá.

Meu ambiente de trabalho na plataforma Windows

A cerca de um ano e alguns meses eu tenho usado a plataforma Microsoft Windows
de uma forma sistemática e eu achei interessante escrever um pouco sobre o que
eu costumo usar em meu computador.

Multimídia

  • Eu faço uso recorrente do player desktop do Rdio para ouvir música em
    streaming. Este é um serviço que vale muito a pena e apesar de ver bastante
    gente migrando para o Spotify eu estou feliz com o Rdio pois ele me atende bem;
  • VLC – Player de vídeo open-source com suporte à maioria dos
    formatos disponíveis no mercado;
  • gPodder – Gerenciador de podcasts. Ele é bem simples de usar e
    promete fazer sincronização dos podcasts com dispositivos móveis, no meu caso
    nunca funcionou com o Android, mas eu não ligo porque faço a sincronização
    manualmente mesmo. No geral é um software simples que em geral faz o que se
    propõe a fazer;

Gerenciamento de Pacotes

Emulador de terminal

  • Cmder – Até o momento o melhor emulador de terminal para Windows
    que eu já vi. Baixando o pacote completo ele já vem com Git e outras ferramentas
    úteis de ambientes nix que o tornam além de uma opção mais atraente ao
    Prompt do DOS e ao Powershell em uma ferramenta poderosa.
    Se você gosta de usar o terminal e está usando o Windows, o Cmder é para você;

Client de e-mail

  • Postbox – Simplesmente o melhor cliente de e-mail do universo.
    É baseado no Mozilla Thunderbird, ou seja, é o Thunderbird funcionando direito.
    É pago mas não é caro, custa cerca de U$10 e vale cada centavo, além de suportar
    a grande maioria dos plugins para o Thunderbird, alguns foram otimizados para
    funcionar com ele como o Enigmail, sem falar na variedade de funcionalidades
    out of the box que ele possui;

Editores de texto e suíte de escritório

  • Atom – Eu tenho usado o Atom em meu dia-a-dia e estou
    gostando mesmo ele sendo meio pesadinho, mas como ele está numa fase beta
    e no geral ele tem me atendido eu estou insistindo. Quando ele sair da fase beta
    ele será uma ferramenta paga e eu estou considerando a hipótese de pagar por ela
    dependendo do preço;</p>
  • Markdownpad – Simplesmente o melhor editor Markdown para Windows.
    Ele possui uma versão grátis e uma paga. Eu comprei ele por valer cada centavo.
    É com ele que eu redijo os posts deste blog e
    o meu livro (que espero finalizar em breve);
  • Microsoft Office – É a melhor ferramenta do gênero e não adianta
    me falar de LibreOffice (esse nome me dá vontade de vomitar), porque ele ainda
    precisa comer muito feijão com arroz para se igualar ao seu congênere da
    Microsoft, verdade seja dita;

Ambiente de Desenvolvimento

  • Github for Windows – As vezes eu o utilizo para gerir meus
    repositórios no Github, apesar de estar aos poucos deixando de usa-lo para o
    usar o sourcetree;
  • Sourcetree – Ferramenta que facilita a gestão de repositórios
    Git e Mercurial;
  • Visual Studio Community 2013 – Estou utilizando para estudar C#,
    ASP.net MVC e ASP.net Web API;
  • Para desenvolvimento PHP estou usando o Atom, mas estou realmente
    considerando a compra da licença do PHPStorm, que é a melhor IDE para
    PHP do mercado;
  • IIS 8.0 e Microsoft Web Platform Installer – Eu tenho usado
    este ambiente para rodar aplicações PHP e ASP.net localmente quando necessário,
    eu já testei usa-lo com node.js também e aparentemente rodou suave. No caso do
    PHP, eu tenho as versões do PHP 5.3,5.4,5.5 e 5.6 instaladas com ele.
  • Eclipse – Para usar com Java e linguagens que rodam sob a JVM,
    como Scala por exemplo, apesar de ainda não ter usado Scala e Play Framework
    profissionalmente, eu tenho estudado e gostado bastante;
  • Tenho estudado a linguagem Elixir e para isso tenho usado o editor
    Atom também;
  • Vim com o spf13-vim – Melhor distribuição do Vim que conheço e pode
    ser instalada com o chocolatey usando o comando: choco install spf13-vim;

Browsers

  • Mozilla Firefox;
  • Internet Explorer 11;
  • Google Chrome;

Estou usando nesta ordem de preferência.

Ambiente de Virtualização

A maioria das VMs são CentOS, mas possuo algumas Ubuntu 14.04, ambas distros
usadas com Vagrant e uma instalação desktop do CentOS com interface gráfica
para uso cotidiano
.

Client SSH, SFTP e FTP

  • Putty – Simples e objetivo, é o melhor client SSH que existe;
  • WinSCP – Mesma coisa que o Putty, só que para SFTP e FTP
    :)

Criptografia

  • GPG4Win – Port para Windows do GnuPG. Uso normalmente para criptografar e-mails;
  • Enigmail – Plugin GPG/GnuPG para Thunderbird que uso com o Postbox;
  • Safe – Ferramenta que me permite gerir volumes criptografados;

Se quiser me mandar e-mail criptografado, minha chave pública PGP segue abaixo:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2

mQINBFR4VB0BEADGxlxNfeUes6JzqCpHf1ELfqcmqyhw9wOySoVTkebRTrLcLJ4T
PFjI4O/CWlO4hI7T0bKbGEqMHcmdMIVhJZWs3HuLaLEBEAuTptBQF2VNPwC6+RKh
0etBMA+qJY5hzD/cMo5wx/3YNiET6pRhadbY4+wa/bw3NeF6yJHCC0yKA6u017+c
ncu96Xlpvx8uV+TaizkDTatPttWWze+EwnFrMGwGEQlMRHdaQ9G6ATlfUHfm/FZu
94cs7zJnshV05R2HwiKBVrYuKddnIerEQng3+yPOplxJzFgn1NcUcTET3u/wCY4g
SR843RhDLUwkHbIxgNSOh1njDOdjtsqF7nYcYP/nK+FXa+YxqeL+t2q1EgKCNuPd
47pJVkMNhzwRzhKKdYr4h/cHvZx67lJLSdWkdAevMyrkZ0rwOFfwueD8o/IHOjpa
RKcDiK+h2GZSNDuaYmvmxCmT8FnFAAq+O23cwY/yaUnzntOfunduduTBbFexzPyT
678TXnzyhjDCgjby+EIZvdQ62xkUthpC4dGISbqzUL+Oax+l9yNKIHxOsSE3Q/RU
foHGZG8LK6Pl1kJdeloiyHAUVP5ZYeqXh3WoMoQpV0tTtyuxnzaI0NpcrqIujMXB
z47LxU8BbzVqIkZYCJndGlG0j0Eq+mAOkd2T9aEebg/CRu/hsA94sjWYNwARAQAB
tClBZGxlciBNZWRyYWRvIDxhZGxlckBhZGxlcm1lZHJhZG8uY29tLmJyPokCOQQT
AQIAIwUCVHhUHQIbDwcLCQgHAwIBBhUIAgkKCwQWAgMBAh4BAheAAAoJECK8ZIYV
grmfpq4P/iw1gcUxqcj2njAYpg4g63k0nPs6ZuxEgOKWnWou2oNSZQ8Ke0HIXyPw
yhh2LEFOpSZleEImz9Yl9eeRLc9q+utbjYpIC3107tDHWgUF2wofyQynPVnh2S6O
hPOYNkMd8HgjEsf8wKT+sF2YAd2dZLNbQYrPSdpF8wP6dQfG7kkgms06+5g33Adz
bZJkcx8gysDmkDPtw8/iMKeR/fIJ8qBJUM3rAsLpwHOytwF756q/JEX9dHukXbuH
XwGezKz/a7A2RSAhgsqPPYh99Nh6I8jijBJrndy29X0UHht2NO4lGHb0Bv1dcL7K
+XZ8oeHixo+vBB5Z/g/rgrPCQE8bTgtr7VQg7pmaJB3I9DXu7Wj5LPeLJ90InSMv
vwGKrrDTkrqpDR/XaJN77g62Ez+2D4gNAGb/3IWGLP4MMqVxdiJZgf9WJpG7QjtB
4MvbzNS4tUE3ReuNP7qv1y097+iW5E6nDUv4XXkVk+gcs7e8iWBNCh+6GP+2MOkH
+b7IahDQj6KFI//to3xWauPTH7995Tzn4zg8UfQaCnTLSbELJzeynSVr9VIGMg8E
CTyDGT0et9m30bl4LJ0MSK88g76g3bw5d5o8UuxGAriVDwQDjs7X5OjyFsxKalRr
c2ZVC6RL70hqWnuObvJ/wcC+atuRpwBdo2SYLqN7YEXRMtQsWx+x
=/B96
-----END PGP PUBLIC KEY BLOCK-----

Ferramentas de Comunicação aka Instant Messengers

  • Skype – Se não fosse tão vulnerável e cheio de bugs, seria
    perfeito;
  • Pidgin – Eu não gosto do Google Hangouts, por isso enquanto houver
    a possibilidade, eu usarei o Pidgin para me comunicar via Google Talk;
  • HipChat – Uma das melhores ferramentas de comunicação para equipes
    de desenvolvimento já criadas;

Cloud Drive

Bitcoin Wallet

  • Multibit – Não é a melhor opção, admito, mas eu realmente não
    tive paciência ainda para usar o app oficial do Bitcoin devido à
    demora para fazer o download do blockchain, como eu não movimento tanto
    dinheiro assim, eu prefiro assumir o risco.

Resumindo …

Acho que é isso, se eu me lembrar de algo relevante eu atualizarei o post.

E você, tem alguma sugestão de algo interessante que eu não tenha colocado na lista?

Dica: Criptografia de informações importantes


Cofre - Safe

Imagine a seguinte situação: Quando você sai da sua casa você tranca as janelas,
as portas e o portão, entretanto você possui um cofre para garantir que itens
valiosos como documentos, dinheiro, jóias, etc. fiquem seguros, pois você sabe
que para abri-lo é necessário uma chave que somente você tem e um código que
somente você sabe.

Você sabe que o cofre não garante 100% de segurança contra arrombamentos mas tem consciência que ele dará muito mais trabalho para quem quiser roubar suas coisas.

Agora imagine a mesma situação só que a casa é seu computador e seus itens valiosos são arquivos digitais como documentos, imagens, etc.

Só você tem a senha para logar em seu computador, mas você quer garantir que
caso alguém o acesse sem autorização, estes arquivos importantes não estejam acessíveis ou na pior das hipóteses, seja muito trabalhoso para o ladrão ter acesso a eles.

Manjou?

Meus próximos posts abordarão a criptografia, e hoje eu pretendo mostrar
de maneira bem simples uma ferramenta que auxilia na tarefa de encriptação de dados para usuários de sistemas operacionais Windows e Mac OS X.

Safe

Safe é uma aplicação multiplataforma baseada no projeto Open-Source EncFS que cria volumes que salvam todos os arquivos dentro deles de forma criptografada, basicamente depois de criar uma pasta e definir uma senha a ela, você acessa esta pasta como se fosse uma outra unidade de disco (um pen-drive
por exemplo) e os arquivos dentro desta pasta sempre que forem acessados sem a
senha estarão encriptados impossibilitando que seu conteúdo seja interpretado.

A maior vantagem em usar o Safe em vez de truecrypt (não recomendável atualmente)
ou ferramentas como os contêineres de dados criptografados da Kaspersky é que nestes últimos o espaço alocado para armazenar os dados criptografamos será fixo, por exemplo, se você criar uma unidade com 10GB será criado um arquivo de 10GB independente de ter algum arquivo ou não criptografado nela, o Safe por sua vez, criptografa os arquivos individualmente facilitando a
manipulação deles, como enviar para o dropbox por exemplo.

Para finalizar

Agora não tem mais desculpas para você que usa Windows ou Mac OS X guardar dados descriptografados, a ferramenta é livre (GPLv3) e fácil de usar.

Dê uma olhada no site do Safe, faça o download e comece a guardar suas informações com um pouco mais de segurança.