O
GPG é baseado em uma tecnologia conhecida como OpenPgp, que é um padrão internacional de segurança considerado bastante confiável e amplamente utilizado. O OpenPgp possui um sistema de criptografia um pouco diferente daquele com o qual estamos acostumados.
Geralmente arquivos zip encriptados em AES256 possuem apenas uma senha que os abre e fecha. O OpenPgp tem um sistema baseado em chaves onde uma é pública e outra é privada. Ele foi criado para que pessoas e grupos pudessem compartilhar arquivos encriptados entre si de forma segura.
Terminologia:
- Chave Privada: esta chave é responsável por decriptar os arquivos. Ela é exclusiva do dono.
- Senha: esta senha não tem nada haver com a encriptação, como nos arquivos Zip. Ela serve para proteger a Chave Privada.
- Chave Pública: esta chave pode ser distribuída por aí, ele serve para encriptar os arquivos.
Basicamente, a Chave Pública é como uma senha que só serve para encriptar. Assim, podemos distribuir nossa chave pública para amigos e colegas de trabalho e todos eles poderão criar arquivos encriptados para nós, mas ninguém será capaz de abri-los sem a Chave Privada. Esta, por sua vez, é exclusivamente nossa e deve ser mantida em local seguro.
A Chave Privada pode tanto decriptar quanto assinar arquivos e assim assegurar sua autenticidade, por acaso é como o uso de chaves OpenPgp que os gerenciadores de pacotes verificam se os arquivos rpm e deb da vida são originais ou não. Ambas as chaves OpenPgp são códigos grandes e complicados, humanamente intragáveis, exatamente como uma boa senha deve ser.
Essa é uma das grandes vantagens deste sistema, você tem senhas de alta segurança sem nenhum super esforço mental.
E tem mais uma coisa interessante sobre OpenPgp que é a senha, não as chaves, mas a senha que protege a Chave Privada. Imagine que você tenha o hábito saudável (e paranoico) de mudar suas senhas de 6 em 6 meses. Agora você tem um monte de arquivos encriptados no disco (zip com aes256, por exemplo), alguns são de antigos projetos. Você terá que descompactar, decriptar, recompactar e encriptar todo mundo novamente a cada troca de senha. Isso se um deles não escapar, aí você já esqueceu a senha anterior e o conteúdo do arquivo será dado como perdido...
Graças ao OpenPgp isso deixa de ser preocupação. É que a "senha" que realmente protege os arquivos é a chave privada e essa você nunca vai mudar. Por outro lado a "senha" que a protege pode ser mudada livremente e os arquivos encriptados com o uso dela podem ser decriptados depois que ela for mudada, o que importa e que a Chave Privada seja sempre a mesma. Isto torna o gerenciamento de arquivos encriptados mais simples.
Funcionalidade básica do Gnu Privacy Guard
O GPG é uma ferramenta de console, bastante simples de usar diga-se, mas temos alternativas para operá-la. Primeiro veremos como ela funciona em sua forma mais básica. O comando é gpg e recebe alguns argumentos como opções de encriptação e nome do arquivo. As opções são inúmeras e extremamente específicas. Além disto o gpg tem uma sintaxe extremamente permissiva que o torna prático e ao mesmo tempo confuso. Veremos aqui uma sequencia de comandos simples do gpg:
- gpg --help: ajuda do gpg.
- man gpg: ajuda completa do gpg, vale a pena dar uma lida.
- gpg --sign chave arquivo: assina o arquivo mencionado.
- gpg --encrypt chave arquivo: encripta o arquivo com a chave mencionada. Lembre-se que você pode ter várias.
- gpg --decrypt arquivo: decripta o arquivo, não precisa mencionar a chave porque você TEM que ter a chave privada do arquivo, ele só pedirá a senha.
- gpg --list-keys: lista as chaves públicas para encriptação. Aqui você pega o identificador da chave para usá-lo nos comandos acima.
- gpg --list-secret-keys: lista as chaves privadas, geralmente você só tem a sua...
Você só precisará listar as Chaves Privadas se quiser exportar suas chaves. É bom lembrar que sem a Chave Privada os arquivos são praticamente irrecuperáveis. Então é uma boa manter sua Chave Privada guardada em um local seguro, afinal, estamos tentando proteger os nossos arquivos contra roubo e precisaremos dela para recuperar os arquivos do backup. Os seguintes comandos permitem exportar as chaves públicas e privadas:
- gpg --export -a chave > arquivo: exporta a chave pública mencionada para um arquivo.
- gpg --export-secret-keys -a chave > arquivo: exporta a chave privada mencionada para um arquivo.
- gpg --import arquivo: importa chaves para o gpg, ele não faz distinção para importar.
Tem um artigo muito bom no VOL cobrindo as principais opções do gpg:
Assinatura e criptografia de dados com GPG
Usando o GPG e o Seahorse
Para quem é avesso ao console ou prefere algo mais prático temos o Seahorse. Este aplicativo faz parte do Gnome e além de fornecer uma interface para operar o gpg ele também acrescenta algumas funcionalidades para o ambiente.
Para instalar o Seahorse basta procurar no gerenciador de pacotes. Aqui está uma lista de pacotes do YUM e suas funcionalidades:
- seahorse: interface principal que gerencia chaves gpg.
- seahorse-plugins: existem vários pacotes com este nome que adicionam integração com o seahorse em aplicativos como gedit, nautilus e empathy.
Com o Seahorse teremos acesso à maioria das funcionalidades do gpg e mais algumas. Por exemplo, uma vez instalado o Seahorse assume o controle dos logins em sua conta de usuário. Então a maioria dos programas do Gnome passarão a depositar senhas no Seahorse de forma segura o que adiciona uma funcionalidade a todo o sistema.
Os plugins tornam a integração com o Nautilus e outros aplicativos totalmente transparente. Poderemos encriptar arquivos e pastas inteiras rapidamente sem grandes complicações. Ele também permite publicar suas chaves públicas em diretórios na Web além de importar chaves de outras pessoas que estejam disponíveis online.
A única coisa que o Seahorse não faz é exportar Chaves Privadas, isso ele não faz nem sob ameaça, para isto só o console.
Criando uma Chave Pessoal:
Além das chaves OpenPgp o Seahorse também é um gerenciador de chaves SSH e outros tipos de senha. A criação das chaves e serviços como um todo é bem simples:
A criação da chave pode demorar um pouco pois ela é relativamente complexa. As opções padrão são as recomendadas. Uma vez criada, ela fica listada em "Minhas Chaves Pessoais". A aba "Outras Chaves" guarda as Chaves Públicas que você coleciona e a aba "Senhas" guarda senhas do sistema.
Opções da chave:
Uma vez criada a chave pessoal é possível adicionar assinaturas a ela e fotografia do dono. Nas opções da chave também é possível mudar a senha que dá acesso à Chave Privada.
Com a chave criada é possível usar os serviços do Seahorse por todo o Gnome. As opções de encriptação e desencriptação de arquivos estão disponíveis no menu de contexto de todos os arquivos. Para encriptar, basta selecionar uma chave. Para decriptar ou assinar é necessário fornecer a senha da chave privada escolhida.
Lembre-se que para encriptar diretórios é necessário primeiro compactá-las, mas o plugin se oferece para fazer isso. Como a encriptação do gpg afeta o arquivo todo, qualquer formato de arquivo compactado serve.
Quando se insere a chave para assinar ou decriptar um arquivo o Seahorse se oferece para gerir esta senha para você. Geralmente ele guarda a senha durante toda uma sessão do Gnome ou por alguns minutos.
Se você guardar a senha no Seahorse ela será protegida pela senha de sua conta de usuário, mas se essa senha for quebrada então o Seahorse ficará exposto, por isso é melhor manter a senha das chaves OpenPgp na cabeça mesmo.
Além do Nautilus, o Gedit também tem acesso direto aos recursos do gpg como a encriptação dos arquivos abertos.