segunda-feira, 23 de novembro de 2009

Sistema anti-cópia para aplicativos em stick USB

Esta não é uma idéia completamente nova e nem completamente minha. Uma versão dela é usada pelo aplicativo MacLockPick, mas estou descrevendo o que penso ser o esquema de funcionamento.
Vamos ao funcionamento: O segredo está em ligar o número de série do dispositivo de armazenamento ao aplicativo em questão. Sendo assim se mudar o número de série (o que acontece no caso de uma cópia não autorizada para outro stick USB) o aplicativo não funcionará. Ok, aí está a idéia básica: Ligar o aplicativo ao número de série do stick USB.
Mas ocorre um problema: Deve-se incluir o número de série e recompilar o programa para ele se "encaixar" em cada stick USB. Imagine: Pegar o número de série do stick USB, inserir o número de série no programa, compilar o programa, gravar no stick USB. E se mudar de stick USB (para uma maior, por exemplo) precisa baixar todo um novo programa.
Vamos a solução do problema: Associar o número de série a um arquivo e este arquivo com o programa, assim basta reescrever o arquivo e o programa se mantém inalterado. O processo de criação do arquivo pode ser feito por um outro programa que pega o número de série, gera o arquivo e grava no stick USB.
Ótimo! Já foi explicado o segundo ponto: Associar o número de série com um arquivo e o arquivo com o programa.
Agora uma questão: Qual deve ser o conteúdo do arquivo? Resposta: Algo diretamente relacionado ao número de série e que possa ser verificado pelo programa (para garantir que o programa está no stick USB que deveria estar). A primeira coisa que se pensa (e está perfeitamente correto) é gravar no arquivo o número de série do stick USB. Dessa forma fica fácil: O programa compara o número de série do stick USB com o número armazenado no arquivo. Se bater o programa roda. Se não dá um erro e termina.
Mas gravar apenas o número é uma proteção fraca, já que basta copiar para outro stick USB e colocar no arquivo o número de série correspondente. Então se pensa em algum jeito de proteger o número de série para impossibiltar sua modificação. Neste caso temos três métodos:
a) Utilizar um algortimo de hash (MD5, SHA-1 ou proprietário). Assim o que o programa deve fazer é aplicar o hash em cima do número de série e comparar com o conteúdo do arquivo. Porém se for usado um algortimo conhecido fica fácil burlar este sistema e mesmo que seja um algoritmo totalmente novo o código dele deverá estar presente na aplicação, o que, através de engenharia reversa, pode permitir que seja descoberto e o sistema de proteção quebrado.
b) Utilizar criptografia simétrica: Boa opção, já que mesmo que o algoritmo seja conhecido ainda é necessário saber a chave. Porém vai exigir que a chave esteja presente no código do programa, o que causa a mesma fraqueza do item A.
c) Utilizar criptografia assimétrica: Esta é a solução que considero a ideal. Ela é ideal por que permite utilizar um algoritmo conhecido, já que conta com a proteção das chaves. Mas não tem a desvantagem do item B, já que as chaves são completamente diferentes então é perfeitamente seguro incluir uma das chaves no código.
Então a solução final (e perfeita, ao meu ver) é simples: Crie um pequeno programa que criptografe o número de série com uma chave privada e grave o arquivo no stick USB. Inclua no programa um trecho de código que descriptografe com a chave pública o conteúdo do arquivo e compare o número de série obtido com o número de série do stick USB onde o programa está gravado. Pronto! O sistema anti-cópia perfeito!
Dúvidas, comentários e sugestões serão bem-vindos. Lembrando que esta idéia esta licenciada sob Creative Commons Atribuição-Compartilhamento, sendo assim você só possui duas restrições: Citar o autor original e, em caso de modificação, compartilhar sobre a mesma licença. Have fun :)

Update:
Detectei uma falha no sistema anti-cópia com criptografia assimétrica que quero comentar. A falha é a seguinte: Um hacker pode alterar a chave pública presente na aplicação, assinando o número de série do stick USB com uma chave privada própria e que terá sua chave pública correspondente inserida na aplicação.

terça-feira, 17 de fevereiro de 2009

Jogos e virtualização: As game appliances

As principais soluções em virtualização, VirtualBox e VMware, estão trabalhando duro para implementar suporte a aceleração 3D. Com isso, será possível em pouco tempo rodar jogos 3D dentro de máquinas virtuais. Imagine isso: Rodar jogos! Rodar Left 4 Dead perfeitamente na sua máquina Linux! Porém ao fazer isso surgem dois problemas. Primeiro: o dinheiro gasto para comprar a licença do sistema operacional e do jogo. Segundo: O tempo necessário para instalar, configurar e, opcionalmente, otimizar o sistema.
Pensando nisso, me surgiu uma idéia: Vender jogos na forma de máquinas virtuais. São appliances contendo uma versão reduzida do sistema operacional e o jogo. Os jogos poderão ser vendidos no Virtual Appliance Marketplace da VMware (vmware.com/appliances).
Um detalhe: A máquina virtual deve vir com a parte de rede pré-configurada, para que o jogo possa se conectar a Internet e executar funções como autenticação e multiplayer. Outra coisa: O sistema operacional deve ser configurado para inicializar o jogo tão logo a máquina virtual seja inicializada, para que tudo seja transparente ao usuário.
Claro que para as game appliances se tornarem viáveis será necessário um aumento no poder de processamento das máquinas, além de placas de vídeo poderosas, mas como pode ser observado, essa é a tendência natural das coisas.

segunda-feira, 15 de dezembro de 2008

Sem tempo

Tenho estado sem tempo nestes últimos meses. Final de semestre é corrido, muito trabalho e prova para fazer, mas agora já está quase acabando. Tem acontecido umas coisas legais, mas as que mais vale a pena citar são duas: O jogo Prey finalmente foi portado para Linux. Maiores informações em:
http://www.icculus.org/prey
Devo dizer que o Prey emulado com o Wine ficou com uma taxa de qualidade/velocidade bem melhor que a versão nativa. Mas isso foi no meu sistema. É uma observação pessoal, não um teste comparativo. A outra coisa a ser observada é que o Mandriva Flash 2009 foi lançado. Mais informações em:
http://www.mandriva.com/en/product/mandriva-flash-2009
Aparentemente minha idéia não foi adotada nesta versão, já que não anunciaram. Para quem não se lembra, a idéia era fazer como no Slax e usar o posixovl e assim gravar as alterações feitas no sistema de arquivo direto no sistema de arquivo FAT32, assim não precisa ser criado um arquivo formatado com EXT2 (e com tamanho fixo) para gravar as alterações, permitindo que as alterações dividam espaço com os outros arquivos. Outra coisa que não mudou foi que o stick USb ainda é de 8GB e não de 16GB. Quem sabe na versão 2009 Spring. Por enquanto nada do disco de atualização/recuperação. Assim a minha Mandriva Flash continua sendo a versão 2008 Spring (isso me deixa bem chateado).
Daqui a pouco tempo vou estar de férias. Tenho planos de ficar mais nerd/geek/hacker. Para isso vou pegar alguns livros que eu tenho e aprender C++ a fundo, muito além do básico que eu já sei. Também quero colaborar mais e melhor com projetos de Software Livre, além de disponibilizar meus projetos e idéias para que toda a comunidade poossa desenvolver. Se sobrar tempo, vou aprender mais sobre segurança da informação, o que vai ajudar consideravelmente no meu curso, fazendo as coisas serem mais fáceis, já que vou saber de antemão e não ter que aprender extra-classe durante o semestre.
E tudo isso junto com vários livros que peguei. Olha a listinha:
- Dexter, a mão esquerda de Deus (terminei de ler. Peguei por que gosto do seriado)
- A ciência médica de House (por causa do seriado House, óbvio)
- Dom Casmurro (por causa do seriado Capitu, que alias, tenho que assistir)
- O estrangeiro (livro de Albert Camus que peguei para entender a música "Killing a Arab" do The Cure)
- Todas as comédias (Junção de três livros do Luis Fernando Verissimo. Por que eu adoro os textos dele)
E além do mais tem música para ouvir e as atividades normais ver e responder e-mails, scraps, Twitter, etc. além de ajudar os mais tecnologicamente necessitados =D

Por hora isso é tudo. Um dia vou aprender a fazer posts bonitos, bem estruturados, com imagens, fontes e essas coisas. Mas por enquanto é essa massa de informação. E não deixe de olhar minha conta do Picasa Web que agora coloquei fotos (eu queria o Flickr, mas paciência). O links está na seção de links.

Abraço a todos! =D

sexta-feira, 14 de novembro de 2008

Tec Toy Zeebo? Um video game brasileiro e BOM?



Pelo meu Twitter, fui informado de um novo video game que será lançado pela Sega, o Zeebo. Algumas informações:
- Custo do console: R$ 599,00
- Custo dos jogos: entre R$ 10,00 e R$ 29,90
- Terá os seguintes jogos pré-instalados: Quake, Prey Evil, Action Hero 3D, Treino Cerebral, mais dois jogos da EA, um de corrida e um de futebol (possivelmente, Need For Speed Carbon e FIFA)
- Os jogos só serão disponibilizados por download.
- Especificações Técnicas
* Interface: USB HID
* Alimentação: Adaptador AC 5V 3A
* Consumo: 15 W max.
* Aceleração Gráfica: 4 milhões de triângulos / segundo
* Áudio: 8 canais simultâneos MP3, ADPCM, MIDI
* Resolução: 640x480
* Tamanho: L x P x A - 157 x 215.4 x 44 mm
* Peso: 1.3kg
* Sensibilidade: < - 106 dBm (em UMTS)
Condições de Operação:
* Temperatura: -20 a 55ºC
* Umidade 95% (40ºC)

Diz que vai ter armazenamento interno de 1GB com expansão por cartão SD, logo alguém vai gravar um jogo no cartão, colocá-lo no PC e começou a pirataria.
Mas como sou meio desconfiado com video games "alternativos", fui dar uma pesquisada melhor. No site americano tem muitas informações. Pelo manual do console por exemplo, se percebe que existe uma porta USB atrás além de uma porta mini-USB para manutenção. Com certeza é uma plataforma bem baseada em PC e que deve apresentar algumas gambiarras. Existe um slot para cartões SD na frente Possivelmente jogos poderão vir por ali.
Conclusão: É esperar para ver. Por enquanto achei umas falhas, mas esse video game promete.

Referências:
http://www.zeeboinc.com/ - Site americano, muito informativo
http://genie.tectoy.com.br/zeebo - Página do video game no site da Tec Toy

sexta-feira, 24 de outubro de 2008

Lista de rápidas observações

O disco "Disintegration" do The Cure é um dos melhores discos já feitos

A trilha sonora do filme Juno é demais.

Hair é um dos melhores filmes já feitos. E é baseado em um musical.

Across The Universe é High School Musical ao som de Beatles.

The Rocky Horror Picture Show é um dos melhores filmes já feitos. E também é baseado em um musical.

O disco "Tommy" do The Who é fantástico. Mas o filme é uma droga.

Pare de olhar o meu blog e vá olhar o meu Twitter: http://twitter.com/marcosbarbosa

Foi lançado o jogo Prey em versão para Linux. Atualmente existe apenas o demo. Mas é um jogo ótimo. Mais informações em http://www.icculus.org/prey.

terça-feira, 23 de setembro de 2008

Conta no Delicious

Criei uma conta no Delicious para poder postar os meus links favoritos. O endereço é:
http://delicious.com/marcosbarbosa

quarta-feira, 17 de setembro de 2008

deb2tgz 1.0

Aqui está o pequeno conversor que desenvolvi para converter pacotes DEB em pacotes TGZ. Ele é baseado no rpm2tgz, criado por Patrick Volkerding e incluido no Slackware. Endereço do projeto:
http://code.google.com/p/deb2tgz/