Um pouco sobre criptografia

Há muitos aspectos de nossa vida que precisamos manter em segredo. Por exemplo, o perfil da chave da porta de casa. Se todos tivessem acesso a isso, seria fácil a qualquer um entrar em nossas casas. O que muita gente não percebe é que nossas senhas eletrônicas são como as chaves de nossas casas. Se você paga mais caro para ter uma chave “tetra” na porta da frente, por que usa senhas fracas para tudo?

Mas não é só isso. Há muitos documentos que precisam ser protegidos. Dados bancários, tributários, diários íntimos, etc. Se você é daqueles que acham que não tem nada a esconder, pare e pense um pouco. Com a quantidade de informações que confiamos a computadores, é fácil para alguém se passar por você, se tiver acesso a uma quantidade suficiente de informações. Também, ao deixar sua correspondência aberta a grandes empresas, você contribui para que tenham um poder imenso sobre todos nós – o controle absoluto. Não, não é ficção científica. Hoje, usando técnicas de mineração de dados, é possível prever o resultado de eleições, com bastante precisão. É possível prever surtos de gripe, entre outras doenças. Tudo porque as pessoas fornecem as informações às empresas, que são capazes de tratar essa quantidade imensa de dados. Já é possível, até mesmo, interferir no humor de um grande grupo de pessoas, com as ferramentas adequadas.

O que quero dizer é que é essencial que as pessoas comecem a proteger seus dados e sua privacidade. Do contrário, todos nós estaremos à mercê de sermos explorados por ferramentas de análise estatística. É aí que entra o papel da criptografia.

Criptografia significa, ao pé da letra, escrita obscura. Como minha esposa diz, criptografar algo é como traduzir aquilo para uma linguagem que só quem é autorizado consegue entender.

Existem dois tipos de criptografia, a de chave simétrica e a de chave assimétrica.

Criptografia de chave simétrica

Na de chave simétrica, o processo de encriptação (a tradução para a linguagem oculta) é o mesmo do de decriptação (a tradução de volta ao idioma original). É como a chave de casa: a chave que usamos para fechar a porta é a mesma que usamos para abri-la. Se alguém roubar sua chave, enquanto você estiver fora, poderá abrir sua casa. Um dos protocolos mais usados (sendo padrão de segurança) é o AES. Como exemplo de uso, posso citar o teclado wireless que estou usando agora. Ele criptografa os códigos das teclas que digito, usando AES-256, envia para o receptor no desktop e lá o software descriptografa a mensagem, usando a mesma chave. Assim, evito que meu vizinho bisbilhote tudo o que digito no meu computador. Um par teclado/receptor tem a mesma chave. Pares diferentes, têm chaves diferentes.

Criptografia de chave assimétrica

Na criptografia de chave assimétrica, os processos de encriptação e decriptação são ligeiramente diferentes. O tipo de cálculo é o mesmo, mas são usados valores diferentes (ditas chaves) para cada uma dessas tarefas. É como se você tivesse uma caixa de correio com duas chaves, uma que você mostra para quem quiser, que permite que eles coloquem correspondências em sua caixa (mas não que retirem) e uma que você mantém escondida, com você, que permite que você retire as correspondências da sua caixa. A chave que você mostra a todos é dita chave pública. A que você mantém escondida é dita chave privada. Implementar isso matematicamente é um pouco mais complicado. A criptografia de chave assimétrica é bastante conveniente, pois permite que você divulgue sua chave pública, fazendo com que qualquer pessoa possa escrever um documento que só você conseguirá ler, pois só você tem a chave secreta. Grosso modo, quando usamos a chave pública para criptografar um documento, fazemos uma conta que só quem possui a chave privada conseguirá desfazer (e recuperar a mensagem, ou arquivo, original). Por outro lado, se eu fizer a conta no arquivo usando minha chave privada, quem tiver minha chave pública conseguirá revertê-la. Porém, saberá que fui eu quem produzi aquela mensagem, pois é necessário ter minha chave secreta para tanto. Esta é a base das chamadas “assinaturas digitais“. Sabemos o quanto é importante ter uma boa assinatura. Se ela for fácil de copiar, teremos problemas, na certa. Mas há dois grandes problemas com a criptografia de chave assimétrica. Em primeiro lugar, ela é difícil de implementar e as contas que faz são custosas, levam muito tempo (se comparadas às de chave simétrica – muito mais rápida). A solução para isso é simples. Usamos a criptografia de chave assimétrica para trocar, de maneira segura, chaves de criptografia simétrica. Ao acessar este blog, seu navegador está fazendo exatamente isso: usou criptografia assimétrica para trocar chaves simétricas com o servidor web, que pode agora usar criptografia simétrica, bem mais rápida, para ocultar o conteúdo desta conexão, criptografando todas as mensagens. Este é o básico do protocolo HTTPS. A chave simétrica é usada apenas para esta conexão. Por isso é dita “chave de seção”. O segundo problema é mais difícil de resolver. Digamos que alguém queira minha chave pública. Quem garante que a chave que aquela pessoa recebeu é a minha chave, e não a de outra pessoa (de um farsante que se coloca entre os interlocutores, fingindo para cada um, ser o outro)? As soluções a este problema são variadas. No caso do protocolo HTTPS, existe um órgão central, que confere autonomia a servidores especiais, que se encarrega de “autenticar” chaves e donos. É o que chamamos de Autoridade Certificadora. As entidades que querem a criptografia do HTTPS se dirigem a esta autoridade, produzem um par de chaves e entregam à autoridade um certificado, contendo informações sobre a entidade e a sua chave pública. A autoridade se encarrega de verificar a autenticidade de todas as informações e emite um certificado assinado por ela. De tempos em tempos, há a necessidade de renovar este certificado, junto à autoridade. É este o significado daqueles erros de “certificado expirado”, ou de conexão não segura, que aparecem às vezes. Quando esse erro aparece, isso significa que não foi possível estabelecer se a chave pública que você está usando pertence mesmo a quem você acha que pertence. É um mal sinal. E se alguém comprometer a segurança da autoridade certificadora? É difícil, mas… Os críticos desta solução normalmente preferem o esquema de web-of-trust (rede de confiança). Você vai a um lugar (uma festa, por exemplo) onde todos levam suas chaves públicas. Você troca chaves públicas com outras pessoas, tendo a certeza de que são elas mesmo. Então você assina a chave delas, confirmando sua autenticidade. Quando você repassa a chave de alguém a um amigo seu, este seu amigo tem quase certeza da autenticidade da chave recebida (mas não certeza absoluta, pois ele não foi à festa). Assim, ele marca aquela chave como relativamente confiável. Quanto mais gente concordar que uma chave é relativamente confiável, maiores as chances de ela ser autêntica. Deste modo, é possível ponderar se a legitimidade de uma dada chave é aceitável ou não. Também é possível espalhar as chaves em servidores de chaves, para torná-las mais acessíveis. Este é o modelo empregado pelo OpenPGP (Pretty Good Privacy). No meu caso, eu tenho vários sites e perfis em redes sociais. Cada um deles tem uma boa senha (diferentes, uma da outra!). Coloco minha chave pública em cada um deles. Para alterar esta chave e se passar por mim, um atacante teria que invadir todos estes sites e alterar a chave em todos eles. É improvável que alguém seja capaz disso. Futuramente vou hospedar meu servidor de chaves e a minha estará lá. Até que isso aconteça, é bom que você compare as chaves fornecidas aqui, no Facebook, no meu site na USP, etc. e confira se possuem o mesmo identificador. Eu não uso o web-of-trust, porque não vou a festas. Os principais protocolos usados são o Diffie-Hellman (para a troca de chaves), o RSA e protocolos da família El-Gamal (que eu prefiro, para assinatura e criptografia de documentos).

Criptografia de discos

A criptografia também é útil para que pessoas não autorizadas não tenham acesso a documentos sensíveis. Imagine o caso de um médico, psicólogo ou advogado que guarda informações confidenciais de seus pacientes em seu laptop. É importante que essas informações estejam em uma partição criptografada do HD. Assim, se alguém roubar o laptop, não terá acesso a essas informações (que são críticas!).

Com o Linux é muito fácil criar uma partição dessas. Basta usar a ferramenta cryptsetup, com o módulo LUKS (ela suporta outros, mas este é a melhor opção para o dia-a-dia).

Escolha um dispositivo a ser usado. Se houver dados nele, faça backup. Ele será formatado. Pode ser um pendrive. Suponha que ele apareça como o dispositivo /dev/sdh. Faça

root@darkstar:# cryptsetup luksFormat /dev/sdh

Veja se deu tudo certo

root@darkstar:# cryptsetup luksDump /dev/sdh

Ele deve mostrar muitas informações sobre o container construído, o “lugar” onde serão colocados os dados criptografados. Por exemplo, ele deve estar usando o protocolo (cipher) AES, que é o padrão de segurança, quando se fala de criptografia de chave simétrica. Note, ao final, que há um slot populado e sete slots livres. Isso acontece porque o container permite ser liberado com até oito senhas diferentes. Isso é útil quando você quer dar acesso temporário a alguém. Você cria uma nova senha para essa pessoa, que você pode revogar depois. Você não precisa fornecer a sua senha a ninguém. Novamente, o container será tão seguro quanto a senha que você criou. Capriche na senha. Agora, vamos associar um dispositivo ao container. Eu escolhi o nome arbitrário de luks0.

root@darkstar:# cryptsetup luksOpen /dev/sdh luks0

Veja se deu tudo certo

root@darkstar:# cryptsetup -v status luks0

Ele deve ter criado o dispositivo em /dev/mapper/luks0. Agora é só formatar e montar, como se fosse um dispositivo físico.

root@darkstar:# mkfs.ext4 /dev/mapper/luks0
root@darkstar:# mkdir /mnt/crypt
root@darkstar:# mount /dev/mapper/luks0 /mnt/crypt

Coloque seus arquivos preciosos lá, desmonte tudo e desative o dispositivo.

root@darkstar:# umount /mnt/crypt
root@darkstar:# rmdir /mnt/crypt
root@darkstar:# cryptsetup luksClose /dev/mapper/luks0

O legal é que, na próxima vez que você plugar o pendrive no computador, ele vai pedir a senha e montar tudo automaticamente, se você estiver em um ambiente desktop amigável, como o XFCE4.

O LUKS tem opções fáceis para adicionar senhas, remover senhas, remover slots e até mesmo uma opção que apaga instantaneamente o cabeçalho do container, deixando o dispositivo inacessível (sem a chave, é impossível recuperar o acesso). Útil em situações de pânico (ao notar que sua empresa ou residência está sendo invadida, por exemplo). Para não inutilizar o dispositivo, é interessante fazer um backup do cabeçalho. É possível, ainda, colocar o cabeçalho em outro dispositivo. Assim, você pode ter uma partição do HD criptografada, que só é acessível se o cabeçalho, que está em um pendrive, estiver presente. Lembre-se de criptografar o arquivo contendo o backup do cabeçalho.

Criptografia de documentos

Para criptografar documentos, eu recomendo fortemente o GnuPG (GNU Privacy Guard). É possível utilizar o gpg a partir de um terminal (o que fornece o maior número de opções). Mas há alternativas gráficas. Uma delas, a mais simples, é o gpa. Ele já vem instalado na maioria das distribuições Linux. Você pode criar suas chaves, importar outras, criptografar documentos, descriptografar, assinar, etc. Agora você já sabe o que fazer com aquele arquivo “senhas.txt” do seu desktop.

Uma boa opção gráfica é o gpg4usb. É só mover seu conteúdo para algum diretório e executar o programa. Há executáveis para Windows, Linux ia-32 e Linux AMD-64. Você pode colocá-lo em um pendrive e andar por aí com ele. Mas pode usá-lo no desktop. A interface dele é bem melhor do que a do gpa.

Para dispositivos Android, há o OpenKeychain. Ele pode ser baixado com o F-Droid, por exemplo.

Criptografia de tráfego

Está naquela rede wi-fi pública, aberta, sem senha, e precisa realizar uma transação bancária? Não faça isso sem usar um túnel criptografado. Estou me referindo às redes privadas virtuais (VPN). Elas criam uma conexão criptografada do seu computador (ou dispositivo móvel) até uma rede segura, de onde partirão acessos futuros. Há vários serviços desses disponíveis. A maioria implementa alguma versão do OpenVPN.

E o email?

Existe a possibilidade de integrar o OpenPGP com o serviço de emails (na verdade, o PGP foi feito para isso). Para os que gostam de usar um cliente de email no desktop existe o Evolution. Eu não uso. Para Android, existe o K-9, que se integra bem com o OpenKeychain.

Porém, quando se trata de serviços de email, o melhor é usar um webmail que use criptografia em todas as etapas da conexão, de modo simples e fácil. Para isso, existe o ProtonMail. Caso queira me enviar um documento sensível, abra uma conta lá e me envie um email usando o endereço cientistadealuguel [arroba] protonmail.com. A partir dele você pode enviar emails convencionais a outros correspondentes (como gmail, por exemplo), ou mesmo enviar emails criptografados, protegidos por senha, a outros correspondentes. Dentro do próprio Proton não faz muito sentido, pois todo o tráfego e armazenamento são criptografados por padrão. Eles também têm um serviço de VPN, mas eu ainda não o testei.

Enfim

Não use a Internet sem a proteção da criptografia. Há pessoas mal intencionadas por toda a parte. Se você deixar que usem seu computador, eles podem prejudicar muitas pessoas. Se você não se proteger, eles podem usar suas informações para agir contra você ou sua família. Por exemplo, de posse de informações sensíveis, é possível criar um golpe em que qualquer um cairia. Não seja relapso com seus dados.

Sempre use aplicativos de mensagens que forneçam tráfego criptografado, como o oferecido pelo protocolo OTR (como Pidgin, SecureChat, TOR-messenger e Telegram).

 

Dicas para o Bash: subshells

Uma das coisas que mais me atraiu, quando comecei a usar Linux, foi a shell. À sua disposição, encontra-se um interpretador de comandos com uma linguagem de programação completa e de altíssimo nível. Não demorou para que eu estivesse escrevendo programas completos nesse interpretador.

Porém, certas coisas parecem não dar certo. Isso porque quem está acostumado a programar em linguagens compiladas pressupõe um comportamento que não é obedecido pela shell. Nem deveria – a shell tem suas peculiaridades e elas têm sua razão de ser. Aí você procura a informação necessária no manual. Digita ‘man bash’ e caboom! Um texto gigantesco aparece para você. A ideia deste post e de outros como este que virão é dar algumas dicas, coisas que podem passar despercebidas por programadores e entusiastas e que seriam difíceis de serem absorvidas em uma leitura do manual.

Eu gosto do Bash. Portanto, vou falar sobre ele. Eu uso a versão 4.2.37 e, portanto, o que é colocado aqui foi testado nele.

Subshells

No Linux (e em sistemas Unix em geral), um processo é originado a pedido de um processo pai. As únicas exceções são a tarefa ociosa e o processo init, que são iniciados diretamente pelo kernel. O processo pai pede para que seja clonado e o kernel constrói um ambiente para que o novo processo execute. Esse ambiente é herdado do processo pai. O significado disso é que o processo filho detém as mesmas variáveis do pai, compartilha alguns recursos com ele, etc. Porém, as variáveis que o filho criar não poderão ser acessadas pelo pai, a menos que o filho permita explicitamente isso (exportando a variável). Uma subshell é um processo filho de uma shell.

Quando executamos um comando externo em uma shell, ele cria uma subshell para este comando. O comando é executado como um processo separado. Para evitar isso, o comando pode ser chamado com a diretiva exec, se necessário. Note que há diferença ao executar um comando externo e uma função interna da shell. O comando cd, é uma função interna (builtin) e não é executado em uma subshell. Para saber se um comando é uma uma função interna ou um programa externo, use ‘type <comando>’. Por exemplo, ‘type ls’ deve retornar o caminho do binário ls (geralmente /bin/ls) e ‘type cd’ deve retornar algo como “cd is a shell builtin”.

Outra ocasião em que uma subshell é criada é quando fazemos redirecionamento de entrada e saída, com um conduíte (o pipe ‘|’). O que vem depois do pipe é executado em uma subshell.

Mas, nós mesmos podemos criar uma subshell. Existem duas maneiras de agruparmos comandos. Uma é usar

{ comando1
  comando2
  ...
  comandoN; }

Esta maneira de agrupamento não cria nova subshell. Note os espaços ao redor das chaves. As chaves, usadas desta maneira, são palavras reservadas da linguagem de programação. Assim, devem ser “isoladas” por espaços em branco. Também, o ponto-e-vírgula é obrigatório, ao final do último comando.

O agrupamento que cria a subshell é o dado por parênteses. Assim,

( comando1
  comando2
  ...
  comandoN )

será executado em uma subshell. Note os espaços em branco ao redor dos parênteses. Façamos uma experiência. Abra um terminal e digite

i=10
echo $i

O resultado deve ser ’10’. Agora, façamos o seguinte:

i=10
( i=70
echo $i )
echo $i

O que aconteceu? A variável i interna à subshell é diferente da variável i do ambiente. Modificações nela, feitas pelo filho, não podem ser vistas pelo pai, a não ser que sejam exportadas. Assim, para o pai, i=10. O filho muda a variável de 10 para 70, mas o pai não recebe as modificações. Tente o mesmo código substituindo o agrupamento de parênteses pelo de chaves.

Tá, e daí?

Suponha que, dentro de um script, queiramos fazer modificações no ambiente, como mudar o diretório de trabalho ou mudar o separador interno de campos, mas depois teremos que restaurar tudo como estava. É só em um trecho do script que essas coisas devem ser diferentes. Uma solução é criar uma variável temporária para cada coisa que você alterar e depois restaurar tudo como estava, torcendo para não se esquecer de nada. Outra é fazer todas as modificações em uma subshell. Ao sair da subshell, as modificações desaparecem, sem precisar guardar nada, sem precisar lembrar do que deve ser restaurado, nada. Simples assim.

Outra utilidade está na execução assíncrona de processos. Em uma shell, ao executarmos um comando, o comportamento padrão é esperar que o comando termine para retornar o controle ao usuário. Esta é a execução síncrona. Se quisermos continuar a executar outros comandos, sem esperar que um determinado comando termine (a execução assíncrona), basta colocarmos o caractere & ao final do comando. É comum as pessoas se referirem a isto como “execução em segundo plano”. Suponha que você precise executar cálculos difíceis em uma máquina com quatro núcleos e que o programa possa ser dividido em quatro blocos de execução. Então, o código

( bloco1 ) &
( bloco2 ) &
( bloco3 ) &
( bloco4 ) &

atribuirá cada bloco a um processador.

Para saber em que nível de aninhamento o código se encontra, há duas variáveis ambiente que guardam essa informação. A primeira delas é a SHLVL (shell level) que indica quantas instâncias aninhadas do Bash estão em execução. Experimente:

echo $SHLVL
bash
echo $SHLVL

O valor deve ter sido incrementado em uma unidade. Esta variável não indica os subníveis, apenas instâncias. Veja:

echo $SHLVL
( echo $SHLVL )

que devem ter fornecido os mesmos resultados. Para saber o subnível, a variável a ser chamada é a BASH_SUBSHELL. Experimente:

echo $BASH_SUBSHELL
( echo $BASH_SUBSHELL )

que deve ter sofrido incremento na subshell. Você pode usar essas variáveis para depurar aquele script em que o laço for, ou while, deveria fazer alguma coisa com uma variável, mas ela não se altera. Estaria ela em uma subshell ao ser alterada? Imprimir o conteúdo dessas variáveis pode ajudar.

Ficou com dúvidas? Alguma curiosidade? Conhece um uso diferente de subshells? Deixe seu comentário!

Segurança digital

Computadores se tornaram tão onipresentes em nossas vidas que temos a tendência de esquecer que, uma vez conectados a uma rede, o mundo todo pode ter acesso a eles. Muitas pessoas ignoram a necessidade de melhorar a segurança de seus dispositivos sob os mais variados pretextos, como por exemplo, o famoso “eu não tenho nada a esconder”. Será que é só isso mesmo? Quero argumentar aqui que a segurança digital deveria ser uma preocupação de todos.

Quando se fala em segurança de dados, há quatro aspectos que devemos observar. Em primeiro lugar, os dados devem ser acessíveis apenas às pessoas autorizadas a acessá-los. Ou seja, dados privados devem ser privados – esta é a questão da privacidade. Em segundo lugar, não deve ser possível, a pessoas não autorizadas, a destruição ou alteração de dados. Esta é a questão da integridade. Em terceiro lugar, os dados devem estar disponíveis às pessoas autorizadas, sempre que necessário. É a questão da disponibilidade. O último aspecto envolve os três últimos e é válido para ambientes em que muitas pessoas são autorizadas a ter acesso aos dados. Em qualquer atitude de modificação, acesso ou destruição de dados deve ser possível apontar quem foi o autor da ação. Esta é a questão da atribuição de culpa. Quero me concentrar nos três primeiros itens.

Privacidade

Manter dados sensíveis longe de desconhecidos é importante a todas as pessoas. No caso de empresas, expor dados de funcionários, de clientes, de fornecedores ou do seu caixa, pode ser desastroso. Concorrentes podem usar os dados de seu caixa para explorar suas vulnerabilidades e levá-la à falência. Ou roubar seus segredos industriais. Mas há um aspecto mais sutil. Suponha que uma empresa de tecnologia resolva oferecer serviços de hospedagem de dados a várias empresas de um mesmo ramo. As empresas, confiando nos contratos estabelecidos, colocam nas mãos de uma mesma entidade informações sensíveis de seus negócios. A empresa de tecnologia promete não utilizar os dados de seus clientes sem uma prévia “anonimização”. Parece inofensivo, certo? Não é. De posse desses dados, mesmo anonimizados, é possível fazer previsões sobre o comportamento futuro do mercado, que possibilitaria a empresa de tecnologia a manipular todo o setor econômico. É o tipo de poder que instituição alguma deveria ter. Mas é o que tem acontecido. É muito importante que as empresas comecem a manter seus dados privados.

Há setores em que a privacidade tem necessidade óbvia e, ainda assim, é negligenciada. Imagine, por exemplo, profissionais de saúde ou advogados. Se os sistemas que armazenam os dados de seus clientes estiverem vulneráveis a ataques, suas vidas podem ser colocadas em risco. Não conheço um único profissional destas áreas que tenha recebido qualquer treinamento em segurança digital. Em pequenos consultórios ou escritórios, os dados são armazenados em computadores pessoais, com sistemas operacionais inseguros. Outro exemplo são as instituições de pesquisa. Muitas deixam seus computadores completamente expostos, permitindo que informações valiosas caiam nas mãos de pessoas de má índole, ou até mesmo, de nações concorrentes.

Mas nenhum perigo é tão presente quanto ao cidadão comum. Soluções de segurança são chatas e não permitem que certas funcionalidades, tão atraentes, sejam executadas. Aí surgem as desculpas: “esse serviço é importante para mim”, “é o único jeito de eu me comunicar”, ou ainda, “eu não tenho nada a esconder”. Será que não tem mesmo? Imagine alguém de posse de todos os seus dados. Documentos de identificação, endereço, etc. Ele pode se passar por você e lhe causar grandes transtornos. Ele pode fornecer seus dados a criminosos que podem organizar, desde golpes pequenos, até sequestros. Ainda há o problema das informações voluntariadas a empresas de tecnologia. É o mesmo caso das empresas relatado acima. Alguém que possua tanta informação pessoal sobre tanta gente, pode manipular mercados, sociedades, eleições, etc.

Integridade

Imagine se alguém for capaz de destruir os dados de seu computador. Você teria como recuperá-los? Isso vale para empresas, profissionais de vários setores, instituições de pesquisa e para o cidadão comum. Imagine se seu médico perder todos os dados daquele longo tratamento que você está fazendo. Imagine se alguém for capaz de alterar resultados de seus exames.

Um crime crescente, hoje em dia, é o sequestro de dados. O computador da vítima é comprometido e seus dados são criptografados, ficando inacessíveis. Os criminosos exigem uma quantia para liberar a chave criptográfica que retornaria o acesso aos dados à vítima. Em muitos casos, não pagar significa perder aqueles dados permanentemente. Pagar, não é garantia de nada. Lembre-se, são criminosos.

Disponibilidade

O sistema caiu. E agora? Você não odeia quando isso acontece com você? Seja na fila do caixa ou na biblioteca, não importa. Esperamos que os sistemas estejam disponíveis o tempo todo. Afinal, imagine se seus dados de comprovantes para o Imposto de Renda ficam indisponíveis, justamente no dia em que você vai preencher a declaração (normalmente, no último dia possível). Imagine se os dados de uma compra grande de um cliente seu ficam indisponíveis, justamente no momento de fechar um grande negócio.

Tudo isso pode ser evitado

Em primeiro lugar, não existe solução de segurança 100% eficaz. Mas é possível chegar perto. O que pode ser feito:

  • Blindagem do sistema operacional de seu computador.

Se você usa um sistema operacional proprietário, talvez fosse interessante substituí-lo por um livre. Só assim é possível garantir a segurança de seu sistema, sem ter que confiar cegamente em uma empresa estrangeira. No caso de sistemas livres, é possível modificar seu núcleo (o componente principal de um sistema operacional) para que se tornem bastante seguros. Com isso, é possível praticamente eliminar (mas não totalmente) o risco de invasões, vírus, cavalos de Troia e várias outras ameaças à privacidade e à integridade dos dados.

  • Proteção da rede.

É essencial um firewall instalado e bem configurado. Isso previne acessos indevidos e roubo de informações. É possível também, em situações mais críticas, instalar Sistemas de Detecção de Invasão (IDS, em inglês). São ferramentas que permitem reconhecer ataques e reagir adequadamente a eles. É importante tornar obrigatório o uso de conexões “seguras”, usando criptografia.

  • Proteção dos dados.

A criptografia também pode ser usada para impedir que, uma vez roubados, os dados sejam legíveis por outros. Informações sensíveis sempre deveriam ser criptografadas para seu armazenamento mas, principalmente, em sua transmissão. Com a criptografia adequada, é seguro fazer cópias de segurança (backups) de seus dados em mídias inseguras, como DVDs, HDs externos, ou fitas digitais.

  • Educação em segurança.

Este é, talvez, o item principal. Não adianta instalar o sistema mais moderno e seguro do planeta e região, se os usuários não souberem se comportar de maneira segura. Um único usuário displicente pode comprometer toda a segurança de um sistema. Empresas e instituições deveriam investir no treinamento de seu pessoal, para que tenham o comportamento adequado. Isso envolve a conscientização da necessidade de boas senhas (e o que é uma boa senha), o armazenamento destas informações (não guarde as senhas em uma planilha eletrônica ao alcance de todos, ou deixe no postite grudado no monitor), a atenção a técnicas de engenharia social (a mais eficaz das técnicas: se você quer saber a senha de alguém, pergunte – se fizer direitinho, a pessoa vai dizer), enfim, envolve uma mudança de comportamento.

Hoje, entregamos nossas vidas aos computadores. Então, cabe a pergunta: você tem zelado por sua segurança?


Imagem destacada: adaptação de xfce-system-lock, ícone do pacote Tango.