sábado, 21 de novembro de 2009

Chave GPG - Windows

Após muito tempo, venho nesse artigo escrever sobre o uso do GnuPG no Sistema Operacional Windows. Os testes foram feitos apenas no Windows XP, não garanto o funcionamento em outras versões, mas acho que roda normalmente no Vista e no Seven.

Primeiro faça o Download do Gpg4win nesse site: http://www.gpg4win.org/
Esse é o link de download direto da última versão do programa no momento que escrevo: http://ftp.gpg4win.org/gpg4win-2.0.1.exe (35MB)

Depois de instalar (A parte mais importante da instalação é marcar a opção GPA para instalação, as outras não importam, são opcionais), abra o GPA (Gnu Privacy Assistant) no Menu Iniciar -> Programas -> Gpg4win -> GPA. Aqui nós temos várias opções, é nesse programa que se pode criar, editar e excluir, ou seja, gerenciar uma ou várias chave GPG.

Criando sua chave GPG com o Gnu Privacy Assistant - GPA

Clique no menu Keys -> New Key...;
Na janela que vai abrir você vai digitar o seu nome;
Na próxima, digite o seu e-mail;
Na próxima tela será perguntado se você quer criar um backup da chave que será criada (Eu optei por criar, mas fica a seu critério);
Na próxima tela o programa dirá que sua chave foi criada e mostrará uma janela para que você digite a Passphrase (A Passphrase é a frase secreta que você utilizará como senha para criptografar e descriptograr arquivos e textos) - Tente utilizar uma frase com números e caracteres especiais se possível, que seja fácil para você lembrar mas difícil para alguém deduzir.
Na próxima tela ele perguntará onde quer salvar o arquivo de backup. Escolha o local, o nome do arquivo e salve.

Pronto, sua chave irá aparecer listada no Key Manager. Agora podemos utilizá-la para encryptar arquivos e/ou assiná-los. Clique em "Files", na janela que abrir clique em "Open". Abra o arquivo desejado e você poderá assinar ou criptografá-lo.

A criptografia é feita com a chave pública, ou seja qualquer um pode criptografar com a sua chave pública, mas só o dono da chave pode descriptografar um documento que foi encryptado com a respectiva chave pública, utilizando a Passphrase.

Por enquanto é isso, o artigo ainda não está completo, mas se quiser ir fazendo algumas experiências, é interessante.

Logo mais vou explicar como utilizar GPG para a troca de e-mails com assinatura e criptografia, dessa forma é possível ter certeza de que quem enviou uma mensagem é realmente aquela pessoa que enviou, e ainda possibilitar que caso alguém venha a ter acesso a esse e-mail, não possa entender o seu conteúdo.

sábado, 17 de outubro de 2009

Criptografia - 1ª Parte - Monogâmica Monoalfabética

A criptografia é um assunto que desperta interesse em grande parte dos loucos da tecnologia, e também de todas as pessoas de uma forma geral. É claro que a profundidade no estudo é que vai determinar o grau de interesse de cada um. O importante é que a criptografia é algo realmente interessante (se repito tanto a palavra "interessante" deve ser mesmo) e resolvi falar sobre o assunto nesse artigo.

A criptografia hoje é vista principalmente como algo pertencente à tecnologia, mas surgiu a muitos anos atrás com o simples intuito de trocar mensagens entre duas pessoas, a fim de que, se alguém não autorizado por ventura tivesse acesso à mensagem, não pudesse entender o seu conteúdo. E esse é o objetivo da criptografia.

Com a evolução dos meios de comunicação, principalmente a internet, surgiram os criminosos virtuais que se preocupam em roubar informações, e o canal mais propício para isso é a internet. Porém os ambientes fora da rede mundial também correm riscos. Dados confidenciais armazenados em um computador sem nenhum tipo de cifragem dos dados, podem ser lidos e compreendidos por qualquer pessoa que tenha acesso à essa máquina.

Agora chega de "blá, blá, blá..." e vamos direto ao ponto. O uso da criptografia mais simples é o tipo monogrâmica monoalfabética. Nesse tipo de criptografia o algoritmo criptográfico analisa caracter por caracter (monogrâmica) e substitui cada caracter por outro caracter equivalente ao alfabeto cifrante.

O nosso alfabeto: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Poderíamos cifrar uma mensagem trocando cada letra da mensagem por sua correspondente no alfabeto três letras à frente, por exemplo, trocar o A por D, B por E, e assim por diante...

Por exemplo:
A mensagem: Essa e a primeira parte do artigo sobre criptografia
O resultado: Hvvd h d sulphlud sduwh gr duwljr vreuh fulswrjudild

Notem que os espaços não foram criptografados, mas é opcional. Também optei por não utilizar acento, nesse caso até seria interessante o uso. Mas estou disponibilizando o algoritmo utilizado para fazer essa "mágica" abaixo, em linguagem C, Javascript e PHP só para você testar e compreender melhor na prática como funciona.

Algoritmo completo em C:

/*Criptografia - 1ª parte - Monogâmica Monoalfabética*/
#include
#include
#include
char *cifrar(char *mensagem) {
int i;
char *result;
result = (char *) malloc(sizeof(char) * strlen(mensagem));
for (i=0;i<strlen(mensagem);i++) {
if (mensagem[i] != ' ' && mensagem[i] != '\0')
result[i] = mensagem[i]+3;
else
result[i] = mensagem[i];
}
return result;
}
int main() {
char mensagem[100];
printf("Informe a mensagem a ser cifrada (no maximo 100 caracteres): ");
gets(mensagem);
printf("\nEssa e a mensagem cifrada: \n%s",cifrar(mensagem));
exit(0);
}
Algoritmo em Javascript (Função):

function cifrar(mensagem) {
var result = "";
for (var i=0;i<mensagem.length;i++) {
if (mensagem.charAt(i) != ' ')
result += String.fromCharCode(mensagem.charCodeAt(i)+3);
else
result += mensagem.charAt(i);
}
return result;
}

Algoritmo em PHP:

function cifrar($mensagem) {
$mensagem = str_split($mensagem);
for ($i=0;$i<count($mensagem);$i++) {
if ($mensagem[$i] != ' ')
$result .= chr(ord($mensagem[$i])+3);
else
$result .= $mensagem[$i];
}
return $result;
}


Bom, por enquanto é isso, continuaremos no próximo episódio, não vou fazer como o artigo sobre GPG que está a quase dois anos com a promessa de que teria uma nova parte (por falar nisso, vou escrever sobre isso na semana que vem, é um assunto relacionado a criptografia).
Podem testar os algoritmos, se precisarem do código completo com html em php e javascript é só pedir, todos os códigos são livres :D

No mais, um site que tem muuuita coisa sobre criptografia: http://www.numaboa.com.br. É um pouco complicado de se ambientar lá, mas quando se acostumar vai se fartar de tanto conteúdo.

Até a próxima.

sábado, 2 de maio de 2009

FLISOL DF - 25 de Abril de 2009 - 3ª Edição

Estive presente na 3ª edição do FLISOL DF, estou aqui para expressar minha opinião sobre o evento.

Esse é o 5º evento sobre software livre que frequentei, um desses eventos foi a segunda edição do FLISOL DF no ano passado.

De cara, na chegada do evento percebi que estavam bem mais organizados que no ano anterior. Acabei chegando depois da abertura do evento, pois não consegui acordar cedo o suficiente para chegar às 09:00. No ano passado, houve atraso de uma hora, acabei confiando que iria acontecer novamente, mas quando cheguei lá corri para pegar a primeira palestra que eu tinha selecionado, pois já tinha começado.

A primeira palestra que escolhi foi "Joomla no mercado de trabalho - Um CMS de sucesso!" ministrada por Washington Ribeiro. Ao chegar no Laboratório TUX onde foi realizada a palestra, o local já estava lotado, tive que pegar uma cadeira para me sentar na sala, enfim, deu tudo certo. Gostei da palestra, muito interessante, mas abordou aspectos fundamentais sobre o Joomla, nada de tão específico nem prático. Houve também uma discussão sobre filosofia do Software Livre que foi divertida e educativa, até mesmo a mulher do palestrante que é professora de inglês e estava filmando a palestra entrou no papo, e se saiu bem.

Depois do fim da palestra ao meio dia, fui para casa almoçar, pois a minha casa é na rua da FAJESU.

Voltei novamente para o evento às 13:00 para tentar a palestra Proxy Squid ou Desenvolvendo aplicações PHP com Zend Framework. Havia uma fila de pessoas à espera dos palestrantes, enquanto isso descobri que a sala em que havia a palestra "Desenvolvendo aplicaçõe sPHP com Zend Framework" ficava no andar de cima. Fui até lá, no entanto a sala já estava lotada. Voltei para tentar a palestra Proxy Squid, no entanto o palestrante não veio mesmo, também o palestrante que iria ministrar "Zabbix: monitorando serviços e economizando milhões" não compareceu ao evento. Em instantes o Prof. Ronald veio avisar que havia tentando contactar os dois, sem sucesso, e que os participantes que estavam no aguardo podiam ir à outras salas para ver as outras palestras.

Bom, gostaria de fazer um comentário sobre os palestrantes que não vieram. Esse é um evento em que eles doam seu tempo para compartilhar conhecimento, então não recebem nada em termos financeiros para ministrar as palestras no evento. Se acontece algum imprevisto, não há problema em faltar ao evento, mas é de fundamental importância que isso seja avisado aos organizadores do evento, pois na falta da informação deixam o evento desorganizado, e a culpa muitas vezes cai sobre os organizadores, injustamente. De qualquer forma, pode ser que os palestrantes tenham tido algum problema que os impossibilitou de avisar.

Apesar disso, o evento foi muito bom, continuemos os comentários...

A palestra sobre Latex foi adiantada devido ao ocorrido, no entanto o palestrante preferiu aguardar um pouco até dar a hora de início da palestra por conta das pessoas que viriam no horário.

Ministrada pelo professor Alexandre Zaghetto, foi a melhor palestra que assisti no evento. Muito bem explicada e sobre um assunto muito interessante que eu não tinha tido contato ainda que é o Latex. Uma linguagem de marcação para a produção de documentos estilizados de acordo com algum padrão.

Ao final da palestra sobre Latex, assisti a palestra "Desenvolvendo aplicações Desktop com PHP-GTK". O palestrante não parecia estar bem à vontade (me lembrei muito de quando eu apresento trabalhos na Faculdade), um pouco nervoso. Muitas pessoas sairam da sala antes da palestra terminar. Me desculpem, caso alguém não pense assim, mas na minha opinião, sair antes da palestra terminar é falta de educação, e ainda incentiva o palestrante a desistir. Por mais que eu não estivesse muito satisfeito com a palestra eu fiquei até o fim. A palestra não foi longa, 30 minutos. Uma explicação básica sobre o funcionamento do PHP-GTK com exemplos.

Agora vem uma das melhores partes, fora a palestra sobre Latex. Ganhei uma camisa e uma bolsa de estudos da Training tecnologia (Infelizmente não vou poder fazer o curso devido ao valor que ainda é alto e me pegou em um mês atribulado financeiramente. Mas adoraria fazer pois é com Julio Neves)!! Nem acreditei quando vi meu nome lá escrito no sorteio (apesar de ser o 50º). É a primeira vez que ganhei alguma coisa sorteada em algum evento. Fiquei feliz!! hehe.

Finalizando, gostaria de parabenizar a organização do evento que nesse ano cumpriu seu papel e o evento foi super organizado. Parabéns de verdade! Ao mesmo tempo gostaria de pedir desculpas por não participar da organização, pois moro na rua da FAJESU, tão perto. Mas andei super oculpado esses dias, na realidade até hoje. Deveria ter escrito essa postagem no sábado do FLISOL, mas só consegui hoje. A correria está grande.

Gostaria de parabenizar todos os palestrantes que se disporam à ir ao evento compartilhar conhecimento, parabéns especial ao professor Alexandre que ministrou a palestra sobre Latex muito bem. E também parabéns à todas as pessoas envolvidas no evento direta ou indiretamente. O FLISOL DF foi muito bom, está a cada ano melhor, vamo que vamo!

Longa vida ao Software Livre!