Encriptando suas senhas de forma (mais) segura no Pidgin
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. Este artigo vai lhe ajudar e explicar o por quê que isto ocorre.
Introdução
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:
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. :)
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.
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. :)