Todos nós já estamos fartos de saber que o
pidgin (formalmente conhecido como
Gaim), por padrão, não encripta e provavelmente nunca encriptará as senhas do arquivo
accounts.xml.
Se você usar o pidgin e faz ele lembrar suas senhas, provavelmente se espantará ao ler a saída do seguinte comando:
$ grep password ~/.purple/accounts.xml
<password>sua_senha</password>
<password>sua_senha</password>
<password>sua_senha</password>
<password>sua_senha</password>
<password>sua_senha</password>
O output varia de acordo com o número de protocolos que você pediu ao Pidgin para lembrar sua senha. No meu caso estas são as minhas senhas <b>em puro-texto</b> dos seguintes protocolos: AIM, ICQ, MSN, Jabber, IRC.
Isto é, de longe, uma exposição de senhas grave, não? A equipe que desenvolve o Purple não pretende encriptar as senhas em nenhum release futuro e usa dos seguintes argumentos:
"Mensagem instantânea não é lá muito segura, e não há porque perder muito tempo adicionando proteções na forte proteção de arquivos do UNIX (nossa plataforma nativa) quando os protocolos por si próprios não são muito seguros. A única forma de realmente saber com quem você está falando é usando um plugin de encriptação em ambos lados (como OTR ou gaim-encryption), e usar chaves GPG verificadas. Segundo, você não deve estar usando a senha de seu mensageiro instantâneo para nada mais. Enquanto alguns protocolos possuem decente segurança de senhas, outros são insuficientes e alguns (como o IRC) não tem nenhuma proteção sequer".
http://developer.pidgin.im/wiki/PlainTextPasswords
O arquivo accounts.xml é, por padrão, legível apenas para o dono do arquivo. Isto é seguro mas não previne que o super-usuário (root) tenha acesso a ele. É óbvio que num ambiente corporativo o tal sr. root provavelmente tenha lá seu caráter (a não ser que você tenha-o realmente irritado :), mas hoje em dia, com a proliferação das distribuições que vem direto de fábrica com o sudo habilitado por padrão, somado ao crescimento de computadores já com
Linux pré-instalado, isto aumenta o risco drasticamente.
Um outro exemplo prático é para quem gosta de convidar amigos a acessar seu PC remotamente, eu convido vários amigos para acessarem aqui via SSH, mas definitivamente não os dou login ou senha de meu usuário, pois seria um cat e minha vida estaria em suas mãos. :)
E para quem usa Windows? O Windows não possui uma proteção de arquivos tão rígida quanto a do UNIX, lembrando que praticamente todos dessa plataforma utilizam contas de administrador.
Não, a desculpa dos desenvolvedores do Pidgin não me convenceu... uma coisa é o ladrãozinho abrir um arquivo de texto e encontrar suas senhas, outra é o tal ladrãozinho filtrar a rede afim de pegar mensagens enviadas como texto-puro. :)
Então nos resta as seguintes opções:
- Usar a famosa security through obscurity... Que obviamente não é o que queremos. :)
- Não salvar as senhas, o que é prático para ambientes públicos, mas terrível para quem tem muitas contas como eu, por exemplo.
- Guardar as senhas atrás de uma senha - Basicamente significa que a aplicação iria requerer que você digitasse alguma palavra-chave assim que o Purple se iniciasse para ler o arquivo accounts.xml e, para ser realmente seguro, requerer que você digitasse ela novamente se você escrever no arquivo.
A verdade é que os desenvolvedores do Pidgin nos encorajam a desenvolver integração com chaveiros (keyrings). Ela seria usada para criptograficamente assegurar sua senha de uma forma que geralmente seria mais segura (no entanto, não perfeita). Ela iria requerer uma senha mestre, compartilhada por todas as aplicações de seu computador para, então, pegar todas suas senhas.
O problema desta implementação é que o Pidgin roda em tantas plataformas diferentes, cada qual que possui seu próprio sistema para keyrings. Seria difícil (mas não impossível) fazer com que o Pidgin se integrasse com todas elas e ainda permitir a você usar o set de arquivos de configuração para cada uma delas. Para quem usa o ambiente gnome, o OpenSolaris CVS possui um patch que integra o Pidgin com o gnome-keyring e pode ser encontrado aqui:
Como o intuito deste artigo é encontrar uma solução independente da plataforma do usuário, eu não vou abordar como aplicar e utilizar este patch, o link está aqui somente para futura referência. :)