sexta-feira, 17 de julho de 2009

Guardando as senhas em segurança com o GnuPG...

Um dos problemas que assolam a todos na sociedade pós internet é guardar n senhas dos n sítios que nos cadastramos web a fora. Como é difícil guardar no cérebro n senhas diferente, uma para cada coisa, usar a mesma senha para tudo parece ser uma boa idéia. E de preferencia uma senha facilmente lembrável, como "senha", "123456", "qwerty" ou "pussy" (sim, acredite, a 5ª senha mais usada de todos os tempos). Obviamente, isso não é uma boa idéia.

Para resolver este problema, já fazia algum tempo que eu usava uma solução caseira. Eu tinha criado um arquivo em html com todas as minhas senhas, criptografadas por uma máquina enigma adaptada do código sugerido no artigo Máquina Enigma e encriptação em XOR. Isso já afastaria 99,9% do problema, já que os dados estariam seguros contra um eventual bisbilhoteiro. Salvo se este bisbilhoteiro entendesse um pouquinho de criptoanalise, já que a quebra deste tipo de criptografia é muito conhecida, podendo ser feita em questão de pouco tempo.

Para guardar bem minhas senhas e outros arquivos que devam ficar muuuuito bem guardados e em segredo, procurei uma solução mais robusta, e encontrei o GnuPG. O GPG é uma implementação completa e livre do OpenPGP, usado para assinar e criptografar dados, através de um par de chaves assimétricas, uma publica, outra privada. Resumidamente, num algorítimo de criptografia assimétrica, os dados que forem cifrados com a chave publica só podem ser decifrados com a utilização da chave privada, e vice-versa. Possui algumas interfaces gráficas, como o Seahorse, disponível nos pacotes do Ubuntu, mas preferi utilizar a consola mesmo.

Depois de criar as chaves (sugiro a leitura deste artigo), a operação se resume a dois comandos:

Cifrar o arquivo a ser guardado:
$ gpg --encrypt --armor texto.txt
Uso a opção --armor para criar um arquivo em ASCII. No caso, gerou o arquivo criptografado texto.txt.asc. Por padrão, seria criado um arquivo binário, o que geraria, neste caso, o arquivo texto.txt.gpg.

Decifrar o arquivo:
$ gpg --decrypt texto.txt.asc
Neste caso, como eu não informei o arquivo de saída (opção --output), o arquivo mostrado é visualizado no próprio terminal.

F.M.

sábado, 4 de julho de 2009

Criando Mapas para o GPS da Garmin...

Como comentei no post Gerenciando dados de GPS com o Viking..., adquiri recentemente um navegador GPS modelo eTrex Legend da Garmin. Um dos problemas ao se adquirir este e boa parte dos navegadores existentes são seus mapas, já que muitas vezes mal tem o traçado correto das principais rodovias e vias das principais cidades do Brasil, quanto mais o traçado das estradas do interior de Rodeio Bonito e arredores. E, infelizmente, fazer mapas para estes navegadores não é algo muito simples, já que os fabricantes, via de regra, não auxiliam os usuários nisso (para entender um pouco os motivos e dificuldades, sugiro a leitura do artigo Criando Mapas de Fundo para GPS Garmin™, do criador do programa GPS TrackMaker).

No Brasil, um grupo de usuários, sabedores destas dificuldades, se uniu com o intuito de construir mapas para os GPS da Garmin, o Projeto TrackSource. O grupo esta ativo, produzindo bons mapas, e inicialmente pensei em contribuir com o projeto, coletando e desenvolvendo o mapa aqui da minha região. O único problema foi que os programas utilizados eram baseados no sistemas operacional das janelinhas, e a utilização destes através do Wine se mostrou instável e improdutiva. Procurando soluções, me deparei com o OpenStreetMap.

O OpenStreetMap é um projeto que tem por objetivo fornecer a todos mapas free as in speech, sendo um projeto colaborativo, em que qualquer pessoa pode auxiliar, seja coletando dados, seja editando os mapas. O upload dos dados coletados são realizados no formato gpx, que podem ser gerados no Viking, como mencionei no meu post anterior. E o projeto possui um editor online, o Potlatch, desenvolvido em Flash, que permite a edição de mapas em qualquer navegador (possui tambem o editor JOSM, presente nos pacotes do Ubuntu, que, confesso, não usei). Em questão de minutos/horas depois de cada edição, os dados são renderizados para que todos possam se beneficiar do projeto.


E o melhor de tudo, é que o projeto não para por aí. Um dos programas oriundos do projeto é o Mkgmap, presentes nos pacotes do Ubuntu, que é um programa em Java que converte os mapas OpenStreetMap para o formato utilizado nos GPS da Garmin, de forma bem simples. Basta exportar a área do mapa desejada no formato de dados XML OpenStreetMap (*.osm), através do sitio do projeto, e sobre o arquivo gerado, dar o comando mkgmap, por exemplo mkgmap mapa.osm, que o arquivo é gerado.


Agora só falta transferir o arquivo .img gerado para o navegador GPS. Para isso, usei o Sendmap, programa que tem uma versão free as in beer, do mesmo criador do programa cGPSmapper. Depois de baixar o programa e marcar como executável, é dar o comando, no meu caso foi sendmap17Lstatic /dev/ttyS0 -u 63240001.img, e sair por aí com o GPS.

F.M.