Não é a primeira vez que eu posto sobre o MEGA: a primeira vez que falei dele era reclamando da SDK dele que não me ajudou em nada. Agora quero escrever por que mesmo assim eu gostei do site, o que eu fiz em relação a ele e o que acho que poderá acontecer pela frente.

Como qualquer sabe - ou se quiser saber dá para achar na Wikipédia - o MEGA é o descendente do MegaUpload, que foi fechado por problemas legais, como, por exemplo, hospedar diversos arquivos ilegais. Uma das grandes fontes de renda do MegaUpload era as contas pagas, que tinham recursos como maior capacidade de armazenamento e transferência de dados. Claro que os desenvolvedores não queriam perder essa oportunidade de ganhar dinheiro, mas também não queriam ser processados novamente, então criaram o MEGA.

O MEGA, assim como o MegaUpload, é um site de hospedagem de arquivos. Também funciona baseado no modelo de contas pagas. Só que tem uma diferença essencial: enquanto o MegaUpload guardava os arquivos exatamente iguais a maneira que foi enviado, isso é, era possível saber o que estava nos servidores do serviço; o MEGA usa criptografia para evitar isso. Em outras palavras, ninguém pode acusar eles de infringir nenhum copyright se não tiverem como descriptografar os arquivos. Mas descriptografar os arquivos deveria ser fácil, só olhar onde os arquivos são compartilhados, não é? Aí que a coisa fica boa para eles: quando se faz isso fica claro que quem está infringindo copyrights não são eles, porém os usuários, e eles se safam.

Só que nem tudo são flores: como eles fizeram isso com o único objetivo de evitar problemas judiciais a segurança não é tão boa. Mal lançaram o serviço e vieram um enxame de especialistas de criptografia criticando. Para começar: é um site, navegadores não oferecem segurança suficiente para qualquer aplicação que precise de criptografia, pois sempre o servidor onde a aplicação resiste que terá o controle.

Vamos comparar o modelo “site” com o modelo “extensão” ou o modelo “aplicativo de celular”: em ambos você tem que assinar digitalmente o seu arquivo e publicá-lo em uma loja. Enquanto invadir o servidor é suficiente para tirar toda a segurança de um site no caso dos outros modelos é preciso ter acesso a chave que assina o aplicativo e acesso as credenciais da loja. Não é um modelo perfeito, porém melhor que sites.

Não é atoa que o MEGA lançou aplicativos e extensões. Vários. Tem para Chrome, Firefox, Windows, Android e iOS. Quem quiser segurança baixe elas, quem quiser mais segurança ainda desative as atualizações automáticas - uma função que o Android e o Firefox suportam - e verifique cada atualização manualmente. Só que mesmo assim isso não é seguro: primeiro que ninguém verifica o código deles - perguntei no reddit isso, ninguém verifica - segundo que o código deles era, faz muito tempo, muito bagunçado, e de um tempo para cá deram uma melhorada na escrita, mas não corrigiram boa parte dos erros de segurança para não quebrar a compatibilidade com os clientes já existentes.

Já faz um tempo eu venho criando ferramentas para o MEGA. Minha maior motivação são, claro, animes, em especial, fansubs que usam o serviço. O pessoal delas reclama frequentemente que os arquivos são apagados, o que não faz muito sentido já que os dados são criptografados. Então criei o safeme.ga que possibilita criar senhas em pastas do MEGA, que acaba impedindo que robôs possam acessar o conteúdo dos arquivos e removê-los. Obviamente ninguém usou, mas foi um bom experimento, aproveitei para implementar um sistema de segurança baseado em service workers que dá mais segurança a sites tirando o controle do servidor.

Pensaram que o problema fosse outro: não são robôs removendo os arquivo, porém a concorrência que está denunciando eles. Então criei o directme.ga, que tinha, entre outros objetivos, permitir que continuassem hospedando arquivos no MEGA porém sem que o caminho do arquivo fosse revelado, ou, melhor ainda, possibilitando que os arquivos fossem acessados sem precisar nem de baixar eles - uma função que nunca deu certo já que navegadores não reproduzem os formatos utilizados.

Para criar esse site eu peguei a biblioteca mega no NPM e tentei atualizá-la para uma versão mais moderna, suportando o mega.nz e resolvendo problemas de compatibilidade com navegadores modernos - já que ela é muito velha e usa funções que não existem mais. Eu ainda queria adicionar o suporte a pastas, mas como o directme.ga não foi para frente não terminei ela.

Recentemente - isso é, ontem e hoje - consegui implementar o download de arquivos em pastas. É até simples de fazer isso: o site usa a velha criptografia AES, usando chaves de - só - 128 bits, no modo ECB para criptografar chaves (isso é, quando a chave de compartilhamento das pastas criptografa as chaves dos arquivos nelas) e no modo CBC para criptografar atributos dos arquivos e os arquivos em si. As chaves não são derivadas, porém completamente aleatórias, talvez por isso eles escolheram adotar como vetor de iniciação valores nulos, o que, na verdade, não é muito comum.

Acontece que eu acabei implementando isso tudo sozinho por um motivo: como eu disse antes quem gosta de criptografia não gosta do MEGA. Aliás, a situação dele está tão ruim que quem criou ele vendeu, resolveu fazer outro site e ficou falando que não é mais seguro usar ele. Bem, eu continuo usando pois evito utilizar as versões inseguras dele, isso é, o site e extensões, que supostamente tiveram mudanças que não são tão agradáveis. Não sei por quanto tempo isso será possível, mas estou aproveitando como posso.


Gustavo bio photo

Gustavo

Escrevo sobre programas, animes e um pouco mais.

Twitter Github Stackoverflow MyAnimeList