<?xml version="1.0"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">

  <channel>
    <title>Cabaladadá</title>
    <link>http://www.cabaladada.org/</link>
    <atom:link href="http://www.cabaladada.org/rss.xml" rel="self" type="application/rss+xml" />
    <description>Rafael Beraldo's rants</description>
    <language>en-us</language>
    <pubDate>Thu, 16 Mar 2023</pubDate>
    <lastBuildDate>Thu, 16 Mar 2023</lastBuildDate>

    
      <item>
        <title>Repetidoras ativáveis ou sintonizáveis em Campinas</title>
        <link>http://cabaladada.org/2023/03/16/repetidoras-campinas/</link>
        <pubDate>Thu, 16 Mar 2023</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2023/03/16/repetidoras-campinas/</guid>
        <description>&lt;p&gt;O excelente canal &lt;a href=&quot;https://www.youtube.com/@cacadorderepetidoras674/&quot;&gt;Caçador de Repetidoras&lt;/a&gt; do Ricardo PY2QB traz uma longa lista de repetidoras em 2m e 70cm com as quais o radioamador conseguiu estabelecer contato, inclusive algumas bastante longe de São Paulo, SP, onde está localizada a sua estação.&lt;/p&gt;

&lt;p&gt;Baseado naquele trabalho, apresento uma pequena lista de repetidoras ativáveis ou que consegui captar a partir da minha estação em Barão Geraldo, Campinas, SP. Atualmente, estou usando um Retevis RT3S rodando OpenGD77 e uma antena &lt;em&gt;flowerpot&lt;/em&gt; montada no telhado de casa. Consigo estabelecer contatos a cerca de 120km com esse equipamento.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/public/repetidoras-campinas.ods&quot;&gt;Clique aqui para baixar o arquivo &lt;code&gt;.ods&lt;/code&gt; com a relação das repetidoras&lt;/a&gt; que consigo ouvir pela região. Outros formatos disponíveis:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/public/repetidoras-campinas.txt&quot;&gt;Repetidoras na região de Campinas &lt;code&gt;.txt&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/public/repetidoras-campinas.csv&quot;&gt;Repetidoras na região de Campinas &lt;code&gt;.csv&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      </item>
    
      <item>
        <title>O radioamadorismo é sustentável no Brasil?</title>
        <link>http://cabaladada.org/2023/01/15/radioamadorismo-numeros/</link>
        <pubDate>Sun, 15 Jan 2023</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2023/01/15/radioamadorismo-numeros/</guid>
        <description>&lt;p&gt;Numa trilha pelo Espinhaço no carnaval de 2022, me dei conta de que um rádio teria
feito toda a diferença. Estávamos em um grupo com cerca de quinze pessoas e houve
momentos de algum estresse por não podemos nos comunicar facilmente. Foi assim que
resolvi tirar a licença de radioamador no ano passado, comprei meu primeiro rádio (um
Baofeng UV-5R) e tenho estudado e aprendido cada vez mais sobre a prática. Aliás, o
meu indicativo é &lt;code&gt;PU2URT&lt;/code&gt; (de Urutu Branco – leitores do Guimarães Rosa entenderão);
me encontrem no &lt;a href=&quot;https://www.qrz.com/db/pu2urt&quot;&gt;QRZ.com&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/me-radio.webp&quot; alt=&quot;Em Ilha Grande, fazendo a volta munido do meu fiel Baofeng
UV-5R.&quot; title=&quot;Selfie em Ilha Grande durante a volta à ilha,
com meu Baofeng UV-RT preso à mochila.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Como atualmente moro em Campinas, tenho acompanhado as conversas nas repetidoras
locais, como as Chapéu de Couro (146.910 MHz) e de Palha (439.900 MHz), em Amparo, as
repetidoras do &lt;a href=&quot;https://www.cram.org.br/&quot;&gt;Clube de Radioamadores de Americana&lt;/a&gt; (CRAM; 146.770 MHz) e as
raras conversas que escuto na repetidora do Capricórnio (146.810 MHz), localizada na
Serra das Cabras, próximo do Observatório Municipal Jean Nicolini. Aliás, fiz um
compilado das frequências que costumo ouvir para uso no CHIRP para quem estiver
interessado em configurar seu rádio para ouvir e transmitir nas repetidoras da região.
&lt;a href=&quot;/public/Campinas-Repetidoras-CSV-20230115.csv&quot;&gt;Baixe aqui&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Uma das coisas que mais tem me chamado a atenção no radioamadorismo é a (aparente,
pelo menos) falta de pessoas jovens ou novatos. Quer dizer, a prática me parece
dominada por pessoas mais experientes, que aprenderam o rádio há algumas décadas e
novos radioamadores não parecem estar entrando no hobby. Minhas elucubrações me
levaram a crer que a facilidade de comunicação via Internet, juntamente com a presença
universal dos celulares, foram um tipo de tiro de misericórdia no radioamadorismo.
Isso explicaria a falta de tráfego nas repetidoras e no &lt;em&gt;simplex&lt;/em&gt;, ou seja,
comunicação ponto-a-ponto entre dois rádios.&lt;/p&gt;

&lt;p&gt;Mas, será mesmo que esse é o caso? Que métricas podemos consultar para obter uma
imagem do radioamadorismo no Brasil? Neste post, vou tentar obter alguns dados no site
da Anatel para caracterizar quem e quantos são, onde vivem e qual a idade dos
radioamadores.&lt;/p&gt;

&lt;h2 id=&quot;uma-hipótese-e-algumas-perguntas&quot;&gt;Uma hipótese e algumas perguntas&lt;/h2&gt;

&lt;p&gt;A minha hipótese sobre o estado do radioamadorismo no Brasil foi exposta acima: minha
breve experiência parece indicar que há poucos novos radioamadores, de modo que essa
poderia ser uma prática que está fadada a deixar de existir no Brasil. Rádios são
equipamentos caros e as repetidoras usadas no VHF (faixa dos 2m) e no UHF (faixa dos
70cm), que me parecem ser as mais acessíveis para os novatos, exigem constante
manutenção e alguém ou uma associação que pague a conta. Com menos radioamadores na
cena, como essa infraestrutura iria se manter?&lt;/p&gt;

&lt;p&gt;Assim, queria responder pelo menos as seguintes perguntas:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Qual a idade dos radioamadores no Brasil?&lt;/li&gt;
  &lt;li&gt;Quantos radioamadores há no país?&lt;/li&gt;
  &lt;li&gt;Onde eles estão localizados?&lt;/li&gt;
  &lt;li&gt;Qual a tendência para a taxa de novos licenciamentos?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nem todas elas puderam ser respondidas satisfatoriamente. Além disso, de acordo com os
dados limitados que consegui levantar, parece que eu estava errado em supor que há
poucos novos radioamadores. Vamos aos números.&lt;/p&gt;

&lt;h2 id=&quot;dados-oficiais-da-anatel&quot;&gt;Dados oficiais da Anatel&lt;/h2&gt;

&lt;p&gt;O primeiro lugar onde podemos obter e visualizar dados é no próprio site da Anatel, em
&lt;a href=&quot;https://informacoes.anatel.gov.br/paineis/outorga-e-licenciamento/estacoes-licenciadas&quot;&gt;Painéis de Dados → Outorga e Licenciamento → Estações Licenciadas&lt;/a&gt;. Lá
é possível filtrar a exibição apenas para as estações licenciadas de radioamador, o
que nos dá um número total de 42.516 licenças. Para fins de comparação, há cerca de
dez mil estações de rádio no Brasil &lt;a href=&quot;https://www.gov.br/mcom/pt-br/noticias/2021/setembro/radio-no-brasil-ha-mais-de-100-anos-criando-e-contando-historias&quot;&gt;segundo o Ministério das
Comunicações&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Façamos algumas contas de padaria colocar esse número em perspectiva. A proporção da
população que tem licença para operar estações de radioamador é de aproximadamente
0,02% (segundo o IBGE, estávamos estimados em 213,3 milhões em 2021). Isso significa
que uma a cada 5.000 pessoas está outorgada. Nos Estados Unidos, um país com dimensões
e população relativamente comparáveis, a quantidade de radioamadores é dez vezes
maior: &lt;a href=&quot;https://en.wikipedia.org/wiki/Amateur_radio_operator&quot;&gt;há quase 800.000 licenciados&lt;/a&gt;, ou cerca de 0,233% da
população.&lt;/p&gt;

&lt;p&gt;Mas como os radioamadores nos distribuímos pelo território nacional? O mapa abaixo,
extraído do site da Anatel, indica que há uma concentração de radioamadores no
Sudeste, no Sul e em estados do Nordeste (cores escuras indicam maior densidade):&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/mapa-radioamadores.png&quot; alt=&quot;Há cerca de dez mil radioamadores em São Paulo, metade disso no Rio de Janeiro e
cerca de três mil em Minas Gerais; o Nordeste também se
destacada.&quot; title=&quot;Mapa com a densidade de
radioamadores por estado.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Em valores numéricos:&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Estado&lt;/th&gt;
      &lt;th&gt;Estações&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;São Paulo&lt;/td&gt;
      &lt;td&gt;10.800&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Rio de Janeiro&lt;/td&gt;
      &lt;td&gt;4.685&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Minas Gerais&lt;/td&gt;
      &lt;td&gt;3.506&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Paraná&lt;/td&gt;
      &lt;td&gt;3.299&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Rio Grande do Sul&lt;/td&gt;
      &lt;td&gt;3.239&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Santa Catarina&lt;/td&gt;
      &lt;td&gt;2.748&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Ceará&lt;/td&gt;
      &lt;td&gt;2.107&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Paraíba&lt;/td&gt;
      &lt;td&gt;1.875&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Rio Grande do Norte&lt;/td&gt;
      &lt;td&gt;1.553&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Pernambuco&lt;/td&gt;
      &lt;td&gt;1.244&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Distrito Federal&lt;/td&gt;
      &lt;td&gt;1.189&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Bahia&lt;/td&gt;
      &lt;td&gt;1.168&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Goiânia&lt;/td&gt;
      &lt;td&gt;699&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Piauí&lt;/td&gt;
      &lt;td&gt;622&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Mato Grosso do Sul&lt;/td&gt;
      &lt;td&gt;607&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Espírito Santo&lt;/td&gt;
      &lt;td&gt;587&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Pará&lt;/td&gt;
      &lt;td&gt;462&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Sergipe&lt;/td&gt;
      &lt;td&gt;370&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Alagoas&lt;/td&gt;
      &lt;td&gt;366&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Maranhão&lt;/td&gt;
      &lt;td&gt;296&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Mato Grosso&lt;/td&gt;
      &lt;td&gt;275&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Amazonas&lt;/td&gt;
      &lt;td&gt;237&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Rondônia&lt;/td&gt;
      &lt;td&gt;229&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Amapá&lt;/td&gt;
      &lt;td&gt;126&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Roraima&lt;/td&gt;
      &lt;td&gt;105&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Tocantins&lt;/td&gt;
      &lt;td&gt;66&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Acre&lt;/td&gt;
      &lt;td&gt;58&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Até o momento, conseguimos obter os dados para duas perguntas: a quantidade e
localização dos radioamadores. Entretanto, o site da Anatel não traz dados pessoais,
em especial a idade dos operadores. Para isso, teremos que usar um &lt;em&gt;proxy&lt;/em&gt;, ou seja,
algum outro dado que possa estar correlacionado com a idade dos radioamadores.&lt;/p&gt;

&lt;h2 id=&quot;qual-a-idade-dos-radioamadores&quot;&gt;Qual a idade dos radioamadores?&lt;/h2&gt;

&lt;p&gt;Essa pergunta se provou impossível de responder – a não ser que pesquisássemos os
42.000 radioamadores, um a um. Apesar disso, talvez seja possível estimar a idade dos
radioamadores a partir da obtenção do primeiro registro de estação para cada
indicativo. A hipótese é que, em havendo uma concentração de registros em anos
passados e menos em anos recentes, há de se esperar que a idade dos radioamadores siga
essa tendência.&lt;/p&gt;

&lt;p&gt;A &lt;a href=&quot;https://sistemas.anatel.gov.br/easp/Novo/ConsultaIndicativo/Tela.asp&quot;&gt;página de consulta de indicativos da Anatel&lt;/a&gt; nos permite
inserir um indicativo e obter dados como a localização das estações a ele associadas,
a data de validade da licença de cada estação, o nome do autorizado, a sua classe de
radioamador e, crucialmente, a data de primeiro registro das estações. Por exemplo, a
minha data de inclusão é 15/07/2022 e a data de validade é 23/06/2042. Estou
presumindo, aqui, que ao renovar o indicativo, a data original de inclusão da primeira
estação será mantida.&lt;/p&gt;

&lt;p&gt;O problema é que essa informação deve ser obtida de maneira manual, ou seja, nós
teríamos que digitar os indicativos um a um. Felizmente, foi possível confeccionar uma
série de comandos no terminal do Linux para automatizar a tarefa. De maneira bastante
resumida, primeiro a lista de indicativos foi obtida no site da Anatel. Então, um robô
baixou a página correspondente a cada indicativo. Finalmente, foi possível extrair o
ano mais antigo de cada página, produzindo-se assim os dados que discutiremos a
seguir. A metodologia completa está anexada após a conclusão deste pequeno artigo.&lt;/p&gt;

&lt;h3 id=&quot;primeiros-registros-de-cada-indicativo&quot;&gt;Primeiros registros de cada indicativo&lt;/h3&gt;

&lt;p&gt;O gráfico abaixo (&lt;a href=&quot;/assets/images/registros-indicativos.png&quot;&gt;clique aqui&lt;/a&gt; para uma
versão maior) apresenta o número de primeiros registros de estação por ano,
desde 1987. Podemos ver que o maior número de registros, ao contrário do que minha
hipótese supunha, não se concentra nos anos iniciais; na realidade, observamos
exatamente o contrário! Parece que há uma distribuição relativamente uniforme dos
registros, então não é possível dizer que há uma tendência de desaparecimento nos
registros de novos radioamadores.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/registros-indicativos.png&quot; alt=&quot;Histograma de registros de estação por
ano.&quot; title=&quot;Histograma de registros de estação por
ano. Ao contrário do que supus, não há uma concentração de registros em datas mais
antigas.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Gostaria de especular sobre algumas tendências curiosas:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;O primeiro registro é de 1987, ano em que há apenas uma estação registrada.
Presumivelmente, havia radioamadores desde muito antes disso; é possível que o
sistema informatizado tenha sido implementado no fim dos anos 80.&lt;/li&gt;
  &lt;li&gt;Suponho que o registro informatizado foi um processo gradual e que os radioamadores
paulatinamente atualizaram seu cadastro para o meio digital. A data final para essa
atualização de dados me parece ter sido 1998, quando o número de registros explode,
tendência que não se verifica nos anos consecutivos.&lt;/li&gt;
  &lt;li&gt;Uma outra possibilidade é que a promulgação da Constituição Cidadã de 1988 e o fim
da ditadura militar no Brasil estejam relacionados ao início dos registros
identificados aqui (obrigado, &lt;a href=&quot;https://igordeo-costa.github.io&quot;&gt;Igor Costa&lt;/a&gt;, por esse apontamento
histórico!).&lt;/li&gt;
  &lt;li&gt;No começo dos anos 2010 e até 2019, a média de novos registros por ano fica em quase
2.000 novos registros por ano. Essa tendência acaba justamente em 2020, o ano da
pandemia. É possível que o interesse pelo radioamadorismo tenha crescido em meados
de 2010, seja por mudanças na legislação ou por mais fácil acesso ao equipamento ou
informação.&lt;/li&gt;
  &lt;li&gt;Não podemos concluir, entretanto, que há uma falta de interesse após 2019; é
possível que a pandemia tenha impactado negativamente o processo para a obtenção de
novas licenças. De fato, o sistema de provas online para obtenção do Certificado de
Operador de Estação de Radioamador (COER), que ainda perdura, foi implementado
apenas como resposta à pandemia.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;o-radioamadorismo-tem-futuro-no-brasil&quot;&gt;O radioamadorismo tem futuro no Brasil?&lt;/h2&gt;

&lt;p&gt;Ainda me é um pouco estranho que pareça haver pessoas mais experientes do que novatos
no ar. Apesar disso, se a minha metodologia e os dados levantados estiverem corretos,
então somos obrigados a concluir que, embora não haja um número muito grande de
radioamadores no Brasil proporcionalmente à população, o interesse pela licença parece
ter se mantido constante.&lt;/p&gt;

&lt;p&gt;Embora o Sudeste, Sul e alguns estados do Nordeste concentrem o maior número de
radioamadores, me parece que há poucos justamente em estados menos densamente
populados, onde o serviço fornecido pelo radioamador em situações de emergência, ou
como ponte de contato com o mundo, poderia ser ainda mais valioso. Presumivelmente,
deve haver também menos estrutura, como torres repetidoras, nesses locais. É claro que
isso pode ser mitigado pelo uso de frequências, como os 11m ou 20m, cujas propriedades
naturais podem propagá-las até mesmo para outros locais do mundo. Entretanto, essas
bandas são menos amigáveis para o iniciante tanto do ponto de vista do custo, quanto
da facilidade de operação: é muito comum que se comece, como eu mesmo estou começando,
por exemplo com o uso de HTs (&lt;em&gt;hand talks&lt;/em&gt;, ou rádios móveis).&lt;/p&gt;

&lt;p&gt;O &lt;a href=&quot;https://www.labre.org.br/radioamadorismo-no-brasil-versao-2021/&quot;&gt;estudo estatístico do professor Ricardo da Silva Benedito PY2QB
(UFABC)&lt;/a&gt; aborda essa questão com uma métrica interessante: o
número de estações de radioamador por 100 mil habitantes é relativamente maior em uma
série de estados menos populosos. O estudo especula que isso pode indicar que há uma
cultura de radioamadorismo mais bem difundida nessas regiões, o que pode estar
relacionado ao fato levantado acima de que esses estados são menos densamente
populados. Vale a pena ler o material, que vai muito além desta pequena análise que
realizei, incidindo inclusive sobre a importante questão da proporção desigual de
homens (93%) e mulheres (apenas 7%) no hobby.&lt;/p&gt;

&lt;p&gt;Uma pergunta que me faço desde que iniciei o processo para tirar minha licença e que
me fiz mais agudamente durante essa breve pesquisa foi sobre como poderíamos
popularizar mais a atividade do radioamadorismo. Quais são as barreiras de entrada? Me
parece que&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;a falta de acesso à informação&lt;/li&gt;
  &lt;li&gt;o processo burocrático envolvido no licenciamento&lt;/li&gt;
  &lt;li&gt;o custo dos equipamentos e&lt;/li&gt;
  &lt;li&gt;a universalidade do celular e da Internet nas cidades&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;são fatores que poderiam explicar a baixa adesão ao hobby de radioamador. Por exemplo,
conheci pessoas em grupos de trilha que têm rádios móveis como meu Baofeng, mas
restringem seu uso à trilha e à comunicação &lt;em&gt;simplex&lt;/em&gt;. Não conhecem as associações de
radioamadores, ou diferentes bandas e suas características de uso, nem mesmo como
programar o rádio para ativação de uma repetidora, que poderia ser útil em certos
locais bastante frequentados pelos trilheiros. Esse seria um dos públicos ideais para
se atrair ao radioamadorismo: pessoas motivadas a aprender e que teriam uma aplicação
prática dos conhecimentos e normas desse serviço.&lt;/p&gt;

&lt;p&gt;Hoje mesmo estava escutando a &lt;a href=&quot;https://youtu.be/iQcYBRb1VZ0&quot;&gt;uma transmissão no YouTube do radioamador Alexandre PU2YPO&lt;/a&gt;, em QSO – ou seja, uma conversa – com um senhor de Três
Corações, MG. Esse senhor, &lt;a href=&quot;http://www.hambrasil.com.br/PY4JMB&quot;&gt;Zé Mauro Braz PY4JMB&lt;/a&gt;, é deficiente visual e uma
de suas formas de comunicação com o mundo é justamente o rádio, que o permite conhecer
pessoas de longe e prestar informações quando chamado. Essa anedota representa bem a
comunidade dos radioamadores: pessoas abertas, comunicativas e com vontade de se
conectar umas com as outras para compartilhar interesses em comum. Se uma classe tão
pequena quanto a dos radioamadores consegue manter uma infraestrutura não só física,
mas também comunitária, não seriam eles capazes de expandir ainda mais essa atividade
para novas pessoas que, apesar de não a conhecerem, ficariam fascinadas com sua
riqueza e possibilidades?&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Obrigado pela leitura! Ficou curioso para se tornar um radioamador? Fique de olho
nesse blog, porque estou preparando um material para introduzir o radioamadorismo aos
trilheiros.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;anexo-obtendo-os-dados-de-todos-os-indicativos&quot;&gt;Anexo: obtendo os dados de todos os indicativos&lt;/h2&gt;

&lt;p&gt;Para estimar a idade dos radioamadores no Brasil, decidi encontrar os anos de primeiro
registro das estações no &lt;a href=&quot;https://sistemas.anatel.gov.br/easp/Novo/ConsultaIndicativo/Tela.asp&quot;&gt;site de consulta de indicativos da
Anatel&lt;/a&gt;. Seria impossível pesquisar os mais de quarenta mil
indicativos manualmente, portanto encontrei uma maneira programática de compilar essa
informação.&lt;/p&gt;

&lt;p&gt;Primeiramente, obtive a lista de todos os indicativos existentes baixando o arquivo
ZIP disponibilizado no &lt;a href=&quot;https://informacoes.anatel.gov.br/paineis/outorga-e-licenciamento/estacoes-licenciadas&quot;&gt;site de informações e dados abertos da Anatel&lt;/a&gt;,
clicando no botão de dados abertos. Uma &lt;a href=&quot;/public/estacoes_licenciadas-2023-01-15.zip&quot;&gt;cópia desse arquivo está disponível
aqui&lt;/a&gt;. Abri o CSV no meu editor de planilhas e filtrei tudo aquilo que
não fosse estação de radioamador; depois disso, deletei as colunas espúrias, mantendo
apenas a coluna com os indicativos. Finalmente, removi os indicativos que por algum
motivo estavam repetidos, &lt;a href=&quot;/public/indicativos-uniq-2023-01-15.txt&quot;&gt;obtendo o número exato de 42.516
indicativos&lt;/a&gt;. Bingo!&lt;/p&gt;

&lt;p&gt;De posse dessa informação, com algum custo e usando do método do erro e acerto,
confeccionei um script em Bash para baixar os dados de cada um dos indicativos nessa
longa lista:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt; &lt;span class=&quot;c&quot;&gt;#!/bin/bash&lt;/span&gt;
 &lt;span class=&quot;c&quot;&gt;#&lt;/span&gt;
 &lt;span class=&quot;c&quot;&gt;# Baixa, de maneira paralelizada, informações referentes a indicativos&lt;/span&gt;
 &lt;span class=&quot;c&quot;&gt;# no site da Anatel.&lt;/span&gt;

 &lt;span class=&quot;c&quot;&gt;# Criar 50 instâncias paralelas do curl.&lt;/span&gt;
 &lt;span class=&quot;nv&quot;&gt;N&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;50
 &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;
     &lt;span class=&quot;k&quot;&gt;for &lt;/span&gt;ind &lt;span class=&quot;k&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cat &lt;/span&gt;indicativos-uniq-2023-01-15.txt&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
         &lt;span class=&quot;o&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;i%N&lt;span class=&quot;o&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;((&lt;/span&gt;i++&lt;span class=&quot;o&quot;&gt;==&lt;/span&gt;0&lt;span class=&quot;o&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;wait
         echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Baixando indicativo &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$ind&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
         &lt;span class=&quot;c&quot;&gt;# Baixar a página do indicativo $ind&lt;/span&gt;
         curl &lt;span class=&quot;nt&quot;&gt;-X&lt;/span&gt; POST &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
              &lt;span class=&quot;nt&quot;&gt;-H&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Content-Type=x-www-form-urlencoded&quot;&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
              &lt;span class=&quot;c&quot;&gt;# Preencher o campo do formulário de busca com o indicativo.&lt;/span&gt;
              &lt;span class=&quot;nt&quot;&gt;-d&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;pIndicativo=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$ind&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
                  https://sistemas.anatel.gov.br/easp/Novo/ConsultaIndicativo/Tela.asp?acao&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;e &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
                  &lt;span class=&quot;nt&quot;&gt;-o&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$ind&lt;/span&gt;.html 2&amp;gt; /dev/null &amp;amp;
     &lt;span class=&quot;k&quot;&gt;done&lt;/span&gt;
 &lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;O processo demorou várias horas, porque houve situações em que o processo do &lt;code&gt;curl&lt;/code&gt;
falhou em baixar a página, provavelmente algum erro no servidor da Anatel; tive que
reiniciar o processo algumas vezes, excluindo manualmente os indicativos já baixados.&lt;/p&gt;

&lt;p&gt;Em seguida, notei que alguns indicativos eram especiais, ou seja, concedidos pela
Anatel para uso em eventos específicos. Esse é o caso, por exemplo, de &lt;code&gt;ZZ5FLORIPA&lt;/code&gt;.
Encontrei-os com o seguinte código&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt; &lt;span class=&quot;nb&quot;&gt;grep&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;9 - Especial&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;*&lt;/span&gt;.html &lt;span class=&quot;nt&quot;&gt;-o&lt;/span&gt; | &lt;span class=&quot;nb&quot;&gt;cut&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-d&lt;/span&gt; : &lt;span class=&quot;nt&quot;&gt;-f&lt;/span&gt; 1&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;e excluí todas as páginas referentes a esses indicativos especiais. Ao cabo, sobraram
42.202 indicativos regulares. Agora, só restava obter o ano do primeiro registro de
cada um:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt; &lt;span class=&quot;c&quot;&gt;#!/bin/bash&lt;/span&gt;

 &lt;span class=&quot;c&quot;&gt;# Criar o arquivo CSV&lt;/span&gt;
 &lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;ano&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; anos.csv

 &lt;span class=&quot;k&quot;&gt;for &lt;/span&gt;indicativo &lt;span class=&quot;k&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;ls&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;*&lt;/span&gt;.html&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
   &lt;span class=&quot;c&quot;&gt;# Encontrar as datas no arquivo&lt;/span&gt;
   &lt;span class=&quot;nb&quot;&gt;grep&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-E&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;0-9]&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;2&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;/[0-9]&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;2&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;/[0-9]&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;4&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-o&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$indicativo&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; |
   &lt;span class=&quot;c&quot;&gt;# Pular a primeira data (comentário no HTML)&lt;/span&gt;
   &lt;span class=&quot;nb&quot;&gt;tail&lt;/span&gt; +2 |
   &lt;span class=&quot;c&quot;&gt;# Cortar apenas os anos e ordená-los&lt;/span&gt;
   &lt;span class=&quot;nb&quot;&gt;cut&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-d&lt;/span&gt; / &lt;span class=&quot;nt&quot;&gt;-f&lt;/span&gt; 3 | &lt;span class=&quot;nb&quot;&gt;sort&lt;/span&gt; |
   &lt;span class=&quot;c&quot;&gt;# Retornar primeira linha (ano mais antigo)&lt;/span&gt;
   &lt;span class=&quot;nb&quot;&gt;sed&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-n&lt;/span&gt; 1p &lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; anos.csv &lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;k&quot;&gt;done&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Como havia uma data usada em documentação em um comentário no HTML da página, foi
necessário pular essa primeira data; só depois é que o &lt;em&gt;script&lt;/em&gt; isola os anos, os
ordena, de modo que o mais antigo esteja na primeira linha e retorna exatamente essa
linha. Assim, se o meu código estiver todo correto, obtivemos então os anos de
primeiro registro de estação para cada indicativo na base de dados da Anatel.&lt;/p&gt;

&lt;p&gt;O arquivo com os anos foi então alimentado no seguinte &lt;em&gt;script&lt;/em&gt; em R&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-r&quot; data-lang=&quot;r&quot;&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ggplot2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;

 &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;dados&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;read.csv&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;anos.csv&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
 &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;contagem&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;as.data.frame&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;table&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;dados&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ano&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;

 &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ggplot&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;contagem&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;aes&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Var1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Freq&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
     &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;geom_bar&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;stat&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;identity&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
     &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;geom_text&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;aes&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;label&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Freq&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;vjust&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;m&quot;&gt;-1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
     &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;labs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Número de primeiros registros de estação por indicativo&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
          &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Ano&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
          &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Primeiros registros&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
     &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;theme_minimal&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
     &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;theme&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;panel.background&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;element_blank&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(),&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
           &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;panel.grid.major.x&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;element_blank&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;())&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;que gerou o gráfico apresentado mais acima.&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>Tá na Ponta da Língua: como a Psicolinguística explica seu esquecimento</title>
        <link>http://cabaladada.org/2017/12/10/ponta-lingua/</link>
        <pubDate>Sun, 10 Dec 2017</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2017/12/10/ponta-lingua/</guid>
        <description>&lt;p&gt;Este texto foi escrito como trabalho de divulgação científica para a matéria de
Psicolinguística da pós-graduação em Linguística no Instituto de Estudos da
Linguagem (IEL), Unicamp, para o professor Thiago Oliveira da Motta Sampaio.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Deve ter sido há algumas terças-feiras, voltando do supermercado à pé, passei
por algo que fez minha espinha gelar. Ouvi alguém chamar, “Rafael!”, e quando
vi quem era, tratava-se do corretor de imóveis que havia me mostrado alguns
apartamentos três ou quatro meses atrás. Imediatamente me lembrei de quem era,
bem como podia lembrar dos locais que havíamos visitado e alguns comentários
que havia feito sobre sua vida, como por exemplo que sua filha havia acabado de
fazer aniversário. A ansiedade veio, como muitos podem entender, porque com
frequência me esqueço do nome de pessoas que não vejo há algum tempo.
Felizmente não tive de pensar muito, pois somos xarás! Evitado o desastre de
uma situação desconfortável, segui meu caminho um pouco mais leve.&lt;/p&gt;

&lt;p&gt;O fenômeno de conhecer um conceito, porém não se lembrar da palavra, não é
incomum, muito menos exclusivo dos nomes próprios. Evidência disso é a
existência do verbo &lt;em&gt;coisar&lt;/em&gt;, companheiro magnificamente útil nas situações de
esquecimento. A ocorrência é definitivamente menos desagradável do que esquecer
o nome de um colega que encontramos inesperadamente, porém não menos frustrante
quando se intromete numa conversa. A palavra resiste e esquiva qualquer
tentativa de ser recuperada, muito embora esteja “na ponta da língua”.
Recorremos ao amigo com quem conversamos, nos esforçamos para explicar o seu
significado, dizemos qual era a primeira letra e até mesmo recorremos à
Internet, muitas vezes interrompendo a conversa. Quando finalmente nos
lembramos, o alívio é geral. Mas por que isso acontece?&lt;/p&gt;

&lt;p&gt;Conhecido por psicólogos e linguistas por “tip of the tongue” (TOT), ou “ponta
da língua” (PDL) em português, esse fenômeno tem sido sistematicamente estudado
pelo menos desde 1966, quando &lt;a href=&quot;https://www.researchgate.net/publication/243647754_The_Tip_of_the_Tongue_phenomenon&quot;&gt;Brown e McNeill&lt;/a&gt; realizaram um
experimento para angariar dados iniciais sobre a PDL. Desde então, um grande
número de pesquisadores tem se debruçado sobre o problema. Para entender
algumas das descobertas e explicações que tem sido propostas, convém entender
como a Linguística e a Psicologia dialogam.&lt;/p&gt;

&lt;p&gt;Se por um lado a Linguística estuda a estrutura das línguas, o que as torna
possíveis e como se dá seu uso, a Psicologia trata das capacidades cognitivas
humanas. Na interseção entre as duas ciências está a Psicolinguística, que
busca entender como processamos e produzimos palavras e sentenças, de maneira a
construir modelos que agreguem conhecimentos de ambas as áreas.&lt;/p&gt;

&lt;p&gt;Uma das maneiras mais poderosas de averiguar como um sistema funciona é
observar os casos nos quais ele &lt;em&gt;quebra&lt;/em&gt;. Essa abordagem tem sido lugar comum
na Psicologia. Veja, por exemplo, &lt;a href=&quot;http://oyc.yale.edu/psychology/psyc-110/lecture-11&quot;&gt;a história de Phineas Gage, trabalhador
ferroviário estadunidense do século XIX&lt;/a&gt; que sobreviveu a um acidente que
lhe custou seu lóbulo frontal esquerdo, bem como produziu notáveis mudanças em
sua personalidade. As consequências de seu dano cerebral permitiram avançar a
discussão sobre a hipótese da localização de funções no cérebro. O mesmo
princípio se aplica na Psicolinguística: com frequência, pesquisadores projetam
experimentos usando fenômenos conhecidos sobre o funcionamento do cérebro e da
língua para induzir participantes ao erro, confundi-los com sentidos ambíguos,
ou pedir que resolvam &lt;a href=&quot;https://www.youtube.com/watch?v=xrowWGi20bM&quot;&gt;tarefas deliberadamente difíceis&lt;/a&gt;, tudo em nome
de entender melhor a relação entre língua e cérebro.&lt;/p&gt;

&lt;p&gt;Essas práticas experimentais têm aberto espaço para que modelos
psicolinguísticos possam ser propostos, refutados ou refinados. Para
entendermos, por exemplo, como se dá o &lt;em&gt;acesso lexical&lt;/em&gt;, devemos ter uma boa
ideia sobre como o léxico mental — o “dicionário mental” que codifica palavras,
suas representações fonológicas e sentidos — se organiza. Essa investigação
pode se dar de várias maneiras. Uma delas explora um fenômeno cognitivo
conhecido como &lt;em&gt;priming&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Ao ler ou ouvir, os seres humanos levam um determinado tempo para recuperar a
palavra em questão, uma vez que o estímulo deve ser transformado em fonemas —
as unidades fundamentais de som que compõe uma determinada palavra — e esse
encadeamento de fonemas deve ser comparado com o léxico que conhecemos, o que
então nos levará ao seu significado. Em experimentos conhecidos como &lt;em&gt;decisão
lexical&lt;/em&gt;, nos quais os participantes leem ou ouvem uma palavra e devem decidir
se ela pertence ou não à sua língua, pesquisadores verificaram que palavras
mais frequentes, como &lt;em&gt;casa&lt;/em&gt;, são processadas mais rapidamente. Essa facilidade
indica a existência de algum tipo de mecanismo de reforço dos caminhos mentais
percorridos mais frequentemente. Como é de se esperar, palavras menos
frequentes, como &lt;em&gt;sexteto&lt;/em&gt;, são recuperadas mais lentamente. Por outro lado,
quando um falante de português vê ou ouve uma palavra em checo, o tempo de
processamento é o menor de todos, indicando que em um instante o cérebro
comparou os sons recebidos com o léxico mental e descartou a possibilidade de
ser alguma palavra conhecida, nem se dando ao trabalho de tentar recuperar seu
sentido.&lt;/p&gt;

&lt;p&gt;É possível, no entanto, diminuir esse tempo de processamento ao apresentar uma
palavra relacionada, conhecida como &lt;em&gt;prime&lt;/em&gt;, antes da palavra-alvo. Assim, é
constado que, ao ouvir &lt;em&gt;guitarra&lt;/em&gt;, o participante apresentará um tempo de
ativação consideravelmente menor para &lt;em&gt;piano&lt;/em&gt;. Isso indica que, no léxico
mental, palavras semanticamente relacionadas estão conectadas. Esse fenômeno
não se limita, entretanto, ao sentido: o mesmo efeito se verifica para formas
(&lt;em&gt;c4s4&lt;/em&gt; e &lt;em&gt;casa&lt;/em&gt;) e sons (&lt;em&gt;chá&lt;/em&gt; e &lt;em&gt;pá&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;Se a compreensão é realizada em estágios, o mesmo acontece na &lt;a href=&quot;https://www.jstor.org/stable/27859151?mag=science-thingummyjigs-words-tip-tongue&amp;amp;seq=1#page_scan_tab_contents&quot;&gt;tarefa da
produção de palavras&lt;/a&gt;. O processo começa com uma representação mental
do &lt;em&gt;conceito&lt;/em&gt; do que se quer dizer. Um &lt;em&gt;lema&lt;/em&gt;, a representação mental da
palavra que contém as informações gramaticais e de sentido, é então
selecionado. Após isso, o &lt;em&gt;conjunto ordenado de sons&lt;/em&gt; associado ao lema é
recuperado e os sinais correspondentes são enviados ao aparelho da fala. É
notável que a conexão entre uma palavra e o seu sentido raramente é
enfraquecida; no entanto, com alguma frequência, falhamos em recuperar sua
fonologia, causando o estado da PDL. De acordo com o &lt;a href=&quot;https://link.springer.com/article/10.3758%2FBF03210827&quot;&gt;modelo do déficit de
transmissão&lt;/a&gt;, uma vez que a força entre uma palavra e sua
representação fonológica pode variar, três fatores explicam a ocorrência da
PDL: 1) a frequência da palavra — palavras de baixa frequência são mais
afetadas, 2) o uso não recente e 3) a idade do falante. Por outro lado,
apresentar a primeira sílaba da palavra que se busca tem o mesmo efeito de
&lt;em&gt;priming&lt;/em&gt; discutido acima, ajudando em sua recuperação. Tente se lembrar disso
da próxima vez que você for pego com a sensação de que uma palavra está “na
ponta da língua”.&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>Life update: the last six months</title>
        <link>http://cabaladada.org/2016/06/28/life_update/</link>
        <pubDate>Tue, 28 Jun 2016</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2016/06/28/life_update/</guid>
        <description>&lt;p&gt;Uneventful, ordinary days should be either feared or celebrated. Every major
change in my life seems to have happened on such days. And this year it was no
different. It must have been a very lazy Sunday afternoon when I got a message
from &lt;a href=&quot;https://www.facebook.com/deboradom&quot;&gt;Débora Garcia&lt;/a&gt; a friend I hadn’t
spoken to in a long time. We met because we were both doing research on
computational linguistics back in 2011, under the supervision of Bento Silva.&lt;/p&gt;

&lt;p&gt;I was caught off guard by what she had said: something to the effect that LaTeX
was indeed a great way of producing documents and I’d been right all along. She
had just started writing her PhD thesis, if memory serves me right. Having just
graduated from Unesp, I hadn’t used LaTeX in a few months, and I had totally
forgotten about the time I was advocating its use.&lt;/p&gt;

&lt;p&gt;A few weeks later we were having coffee and catching up on each other’s news.
It was a very stimulating day that rekindled our mutual interested in life and
its possibilities. Through her, I learned that my hometown of São Carlos was
teeming with smart computer science people working on amazing projects.&lt;/p&gt;

&lt;p&gt;When I got home in Araraquara that night, I went straight to my computer and
searched for like-minded people in São Carlos. It didn’t take me more than a
couple of minutes to find &lt;a href=&quot;http://opensanca.com.br/&quot;&gt;OpenSanca&lt;/a&gt;, a local free
software and entrepreneurship meetup group. They offer free workshops and talks
about everything technology. I immediately went nuts with excitement. This was
the group I’d been dying to find for years, right there, only 40 minutes away
by car.&lt;/p&gt;

&lt;p&gt;I joined their Slack channel right away and introduced myself. I said I was a
linguist with a passion for Linux, technology and programming and mentioned
being a LaTeX user. Right off the bat I was invited to do a workshop on the
subject. I’ll talk more about that experience in a later post.&lt;/p&gt;

&lt;p&gt;Very soon, I went back to São Carlos for a OpenSanca-promoted &lt;a href=&quot;https://speakerdeck.com/opensanca/workshop-de-clean-code-angular-and-mocks&quot;&gt;AngularJS
workshop&lt;/a&gt;
with Carlos Gomes, who would later become a friend. The event was great,
jam-packed with information about clean code, Angular and mocking concepts. I
learned a lot that day and I can’t thank Carlos or the OpenSanca staff enough
for putting together such incredible events.&lt;/p&gt;

&lt;p&gt;Since then, I’ve been able to go to a number of talks and workshops. Among so
many other things, I learned what a JavaScript framework really is, how to
program Arduinos and how 3D printing is going to change everything. I’m more
excited than never and the many inspiring people I met over the last three
months made me come to a few realizations and thoughts:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;OpenSanca is a group that promotes technical education free of charge. It is
exactly what I had been dreaming of since my first education class at
college. It is living proof that we all have something to teach and something
to learn, and that empowering our community is not only feasible, but
incredibly important. I must write a post on this point later this year.
Also, I’d like to sincerely thank all of OpenSanca’s staff, specially
Cristofer Sousa, who I’ve had the chance to work with more closely.&lt;/li&gt;
  &lt;li&gt;Fuck the Silicon Valley. I’m not trying to be offensive here, but we have to
face the truth. For a while I dreamed of working and doing great things
abroad. I still think that would be great, however &lt;a href=&quot;https://www.3dhubs.com/s%C3%A3o-carlos/hubs/laure-stelmastchuk&quot;&gt;Laure
Stelmastchuk&lt;/a&gt;,
one of the greatest people I met through OpenSanca, made me realize I was
failing to look around and see the opportunity that is all around us. We’re
&lt;em&gt;not&lt;/em&gt; living in the US or Europe. It would be impossible to emulate their
market and infrastructure, so we’ll have to make do with what we have at hand
instead. In other words, innovating has a different meaning in Brazil: it
means achieving higher grounds in ways that make sense for us. I’ll try to
develop this further in another post, as it’s only the germ of an idea.&lt;/li&gt;
  &lt;li&gt;Finally, this last idea connects with my most important realization. We are
seeing the onset of a community that I hope grows to the point of no return,
forever changing the city of São Carlos. May this sense of community that
free software nurtures spread to other cities all over the country and to
other areas of our lives too.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When I started this post, my initial intention was to report how my two LaTeX
workshops went and where I failed. It grew to become a rather different beast.
However, it’s given me a few ideas to chew on. I’ll try to develop the next
three topics in future posts:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;My two LaTeX workshops: where I failed and where I didn’t&lt;/li&gt;
  &lt;li&gt;The importance of informal education groups&lt;/li&gt;
  &lt;li&gt;How doing our own thing may be better than trying to copy Silicon Valley&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Stay tuned for more!&lt;/p&gt;
</description>
      </item>
    
      <item>
        <title>Security Now #510 Digest</title>
        <link>http://cabaladada.org/2015/06/04/security_now_510_digest/</link>
        <pubDate>Thu, 04 Jun 2015</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2015/06/04/security_now_510_digest/</guid>
        <description>&lt;p&gt;Hello again and welcome to my little Security Now digest. I’m going to try and
assemble a short, actionable digest to help you get the most out of Steve and
Leo’s tips.&lt;/p&gt;

&lt;p&gt;Security Now #510 can be found at &lt;a href=&quot;http://twit.tv/show/security-now/510&quot;&gt;twit.tv&lt;/a&gt;. The show notes are over at
&lt;a href=&quot;https://www.grc.com/sn/SN-510-Notes.pdf&quot;&gt;grc.com&lt;/a&gt;. Here are the most important security news for this week:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;iOS’s iMessage has a “UTF-8 encryption/encoding/viewing error” (as worded by
user &lt;a href=&quot;https://www.reddit.com/user/johnkphotos&quot;&gt;johnkphotos&lt;/a&gt; on &lt;a href=&quot;https://www.reddit.com/r/explainlikeimfive/comments/37edde/eli5_how_that_text_you_can_send_to_friends_turns/&quot;&gt;Reddit&lt;/a&gt;). &lt;strong&gt;The bug can
be triggered by sending a specially crafted message and will turn of the
victim’s device. iPhone users up to iPhone 4 are the only not affected&lt;/strong&gt;
since the bug was introduced after iOS v7.1.2. Apple will probably fix this
soon, so keep your phones up to date!&lt;/li&gt;
  &lt;li&gt;Since we started talking Apple, let’s continue on topic. &lt;strong&gt;A bug &lt;a href=&quot;https://reverse.put.as/2015/05/29/the-empire-strikes-back-apple-how-your-mac-firmware-security-is-completely-broken/&quot;&gt;has been
found&lt;/a&gt; in the Mac UEFI that allows the firmware to be
rewritten.&lt;/strong&gt; Usually, the UEFI is protected against this kind of attack, but
there was a bug in the firmware that allows an attacker to overwrite the
bios after a suspend-resume cycle. &lt;strong&gt;Newer Macs are not affected, but older
Macs still don’t have a fix. For now, you can avoid performing suspends or
buy a new computer =/&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And that’s it! In other noteworthy news, &lt;strong&gt;your Windows 7 or 8 installation
might be bugging you with a suspicious looking traybar notification about
Windows 10.&lt;/strong&gt; That’s not a virus, only Microsoft trying to push the newest,
yet-to-be-released Windows version. If that annoys you, &lt;strong&gt;read this article on
&lt;a href=&quot;http://www.idigitaltimes.com/windows-10-update-icon-real-how-can-i-remove-it-cautious-users-worry-theyve-been-445716&quot;&gt;iDigitalTimes on how to remove the icon&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now on to fun stuff:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Project Vault&lt;/strong&gt; is a Google ATAP project to deliver a Hardware Security
Module that can encrypt and decrypt streams of data.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=0QNiZfSsPc0&quot;&gt;&lt;strong&gt;Project Soli&lt;/strong&gt;&lt;/a&gt; is a Google ATAP radar that Steve and Leo agree
has to potential to completely change the way we interact with our devices.
As Project Vault, Soli was introduced during the latest Google I/O, held on
May 28 and 29.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A thus ends our digest. What did you think about it? Please send your
comments, questions and suggestions to rberaldo at cabaladada dot org. I’ll be
happy to hear from you.&lt;/p&gt;

&lt;p&gt;See you next week!&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>Security Now #509 Digest</title>
        <link>http://cabaladada.org/2015/05/28/security_now_digest/</link>
        <pubDate>Thu, 28 May 2015</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2015/05/28/security_now_digest/</guid>
        <description>&lt;h2 id=&quot;introduction-to-the-security-now-digests&quot;&gt;Introduction to the Security Now Digests&lt;/h2&gt;

&lt;p&gt;I’m a big fan of &lt;a href=&quot;http://twit.tv/show/security-now&quot;&gt;TWIT’s Security Now&lt;/a&gt;. Since the demise of my favorite
show, Linux Outlaws, Security Now has had the highest priority on my playlist.
Computer security has always been one of my favorite areas of interest, and
Leo and Steve do a great job of summing up the big stories of the week, as
well as breaking down complex concepts so they’re much easier to understand.&lt;/p&gt;

&lt;p&gt;As with all podcasts I subscribe to, I usually listen to Security Now while
doing the dishes, driving or doing something else that doesn’t require any
intellectual effort. Furthermore, it often takes me a couple of days to get
through each episode, since I don’t have a long commute every day. As a
result, I can never act on the security breaches immediately. Committing them
to memory doesn’t work either, and for the most part all the plans that I make
while listening to the shows are never put into practice.&lt;/p&gt;

&lt;p&gt;Since Snowden blew the metaphorical whistle there’s been a great spike in
interest in security from the general public. So I thought I’d put together a
short weekly digest with actionable information that I’m hoping may be useful
for me and for other people who are interested in souping up their security.&lt;/p&gt;

&lt;p&gt;Why wait any longer? Let’s hit the news!&lt;/p&gt;

&lt;h2 id=&quot;security-now-509-digest&quot;&gt;Security Now #509 Digest&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/logjam.png&quot; alt=&quot;weakdh.org page screaming at me for not having an up-to-date
browser.&quot; title=&quot;weakdh.org page screaming at me for not having an
up-to-date browser.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;SN #509 can be found at &lt;a href=&quot;http://twit.tv/show/security-now/509&quot;&gt;twit.tv&lt;/a&gt;. The show notes are over at
&lt;a href=&quot;https://www.grc.com/sn/SN-509-Notes.pdf&quot;&gt;grc.com&lt;/a&gt;. Here are the most important security news for this week:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;This week’s big story was &lt;strong&gt;Logjam&lt;/strong&gt;, the latest in cleverly named security
breaches. Without getting into too much detail, Logjam is a
&lt;strong&gt;man-in-the-middle attack&lt;/strong&gt; against TLS that allows the attacker to &lt;strong&gt;lower
the strength of the ciphersuite&lt;/strong&gt; used on a given web session. That allows
the attacker to easily break the encryption and have access to the
communication going between the client and the server. If you are a &lt;strong&gt;systems
administrator, you should update your TLS implementation and configure
services such as Apache or OpenSSH not to use the weak chipersuites.&lt;/strong&gt;
&lt;strong&gt;Regular users,&lt;/strong&gt; on the other hand, &lt;strong&gt;should upgrade their browsers.&lt;/strong&gt; See
more info on &lt;a href=&quot;https://weakdh.org/&quot;&gt;weakdh.org&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;A new security flaw that affects routers has been discovered. There is a
&lt;strong&gt;NetUSB&lt;/strong&gt; bug that affects most routers with a USB port. Such routers allow
the users to remotely access any devices connected to the USB port.
Unfortunately, the NetUSB driver is subject to a buffer overflow. In some
cases, the flaw can be exploited remotely, since the router exposes the
service to the WAN port. &lt;strong&gt;Solution: buy a new router, or use a custom
firmware such as &lt;a href=&quot;https://openwrt.org/&quot;&gt;OpenWRT&lt;/a&gt; or &lt;a href=&quot;http://www.polarcloud.com/tomato&quot;&gt;Tomato&lt;/a&gt;. To check if your
router is vulnerable, use Steve’s SHIELDS UP!:
&lt;a href=&quot;https://www.grc.com/x/portprobe=20005&quot;&gt;grc.com/x/portprobe=20005&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;PKES (Passive Keyless Entry &amp;amp; Start, or The Stuff That Lets You Into Your
Car Just By Having It On You) is Hopelessly Broken. Keep yours at a Faraday
Cage! (I’m so happy my car is older, simpler and safer.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Moving on to the fun stuff:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://chrome.google.com/webstore/detail/scriptblock/hcdjknjpbnhdoabbngpmfekaecnpajba&quot;&gt;ScriptBlock&lt;/a&gt; is a (new?) Chromium/Chrome plugin that, well,
blocks scripts! It works similarly to Firefox’s NoScript, allowing the user
to control which scripts can run and which can’t.&lt;/li&gt;
  &lt;li&gt;Steve read the &lt;a href=&quot;https://letsencrypt.org/&quot;&gt;Let’s Encrypt&lt;/a&gt; subscriber agreement and it’s
looking good! I’m looking forward to using TLS on Cabaladadá, and Let’s
Encrypt is sure to be my CA of choice.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s all for this first digest, guys! Happy hacking!&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>Criptografia no Linux: Importância</title>
        <link>http://cabaladada.org/2013/12/08/linux_cripto_importancia/</link>
        <pubDate>Sun, 08 Dec 2013</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2013/12/08/linux_cripto_importancia/</guid>
        <description>&lt;p&gt;Este é o décimo post de uma série de dez posts traduzindo o original de Tom
Ryder, &lt;a href=&quot;http://blog.sanctum.geek.nz/series/linux-crypto/&quot;&gt;Linux Crypto&lt;/a&gt;. Essa série está sob uma licença &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;Creative
Commons 3.0&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Para a lista de posts, veja a &lt;a href=&quot;/2013/09/16/linux_cripto_intro/&quot;&gt;introdução&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Enquanto esta série estava sendo escrita, a partir de junho de 2013 &lt;a href=&quot;https://en.wikipedia.org/wiki/Edward_Snowden&quot;&gt;Edward
Snowden&lt;/a&gt; começou a vazar documentos ultrassecretos da
Agência Nacional de Segurança [National Security Agency — NSA] dos Estados
Unidos, demonstrando que a agência era capaz de vigilar a Internet em uma
escala massiva com o sistema de vigilância PRISM e usando a interface XKeyscore
nos dados que acumulara. A notícia de que a vigilância governamental secreta
era possível e estava acontecendo não foi particularmente surpreendente para
engenheiros de rede e teóricos da conspiração, mas as revelações finalmente
deram ao público geral e não técnico uma ideia do quão seriamente os sistemas
proprietários sobre os quais eles haviam construído grande parte de suas vidas
digitais pode ser usado para prejudicá-los e comprometer sua privacidade.&lt;/p&gt;

&lt;p&gt;Nos Estados Unidos, pessoas preocupadas são bastante conscientes de como o
abuso secreto do poder de exercer essa vigilância e as fracassadas moções do
Congresso dos Estados Unidos para cerceá-lo abalaram a confiança em seu próprio
governo. No entanto, as implicações dos vazamentos são também internacionais.
No meu próprio país, a Nova Zelândia, a agência de inteligência internacional,
o Escritório Governamental de Segurança nas Comunicações (GCSB), foi no início
do ano &lt;a href=&quot;http://www.nzherald.co.nz/nz/news/article.cfm?c_id=1&amp;amp;objectid=10885098&quot;&gt;acusado de espionar ilegalmente cidadãos neozelandeses&lt;/a&gt;, e as
mensagens diplomáticas da WikiLeaks mostram que a GCSB &lt;a href=&quot;http://www.wikileaks.org/plusd/cables/04WELLINGTON662_a.html&quot;&gt;potencialmente já está
colaborando&lt;/a&gt; com a NSA. Mesmo assim, novas leis estão definidas para
extender os poderes da GCSB, apesar de análises independentes &lt;a href=&quot;https://www.lawsociety.org.nz/news-and-communications/news/august-2013/gcsb-bill-remains-flawed-despite-proposed-changes&quot;&gt;condenarem o
projeto de lei&lt;/a&gt; tanto de uma perspectiva legal quanto do ponto de
vista dos direitos humanos, mesmo após as ementas. O escândalo e a ira sobre o
abuso da vigilância se estende ao &lt;a href=&quot;http://www.theguardian.com/uk-news/2013/aug/01/nsa-paid-gchq-spying-edward-snowden&quot;&gt;Reino Unido&lt;/a&gt;, &lt;a href=&quot;http://www.dw.de/uproar-over-new-details-on-german-nsa-ties/a-16999179&quot;&gt;Alemanha&lt;/a&gt;,
&lt;a href=&quot;https://en.wikipedia.org/wiki/FRA_law&quot;&gt;Suécia&lt;/a&gt; e muitos outros países.&lt;/p&gt;

&lt;p&gt;Realmente continuo com esperanças em esforços como a ação coletiva da
Electronic Frontier Foundation para reduzir a vigilância ou, no mínimo,
registrar a ira pública sobre essa invasão injustificada de nossas vidas
privadas. No entanto, estou preocupado não apenas pela possibilidade do
surgimento de um estado de vigilância global, mas pelas implicações que isso
tem no direito de proteger nossas comunicações utilizando a criptografia para
autenticação e encriptação.&lt;/p&gt;

&lt;p&gt;Não é nenhum segredo que a criptografia e a encriptação &lt;a href=&quot;http://www.techdirt.com/articles/20130725/00120423937/yes-nsa-has-always-hated-encryption.shtml&quot;&gt;representam um
problema para os sistemas de vigilância da NSA&lt;/a&gt; e que eles despendem
muito esforço na tentativa de driblá-las, incluindo &lt;a href=&quot;http://www.businessinsider.com.au/government-demands-encryption-keys-2013-7&quot;&gt;a exigência das chaves
privadas&lt;/a&gt; de empresas para aplicações como o HTTPS. Minha preocupação
é: caso se torne publicamente aceitável que governos espionem, sem mandados,
redes internacionais e que isso é justificável ou necessário, podemos atingir
um ponto no qual a própria legalidade do uso da criptografia pelo público geral
seja questionada.&lt;/p&gt;

&lt;p&gt;Profissionais da área de computação da minha geração provavelmente não
começaram suas carreiras antes que o controle de exportação de criptografia dos
Estados Unidos fosse relaxado em 1999, talvez levando-nos a tomar como certo a
disponibilidade de algorítimos como o RSA e o AES com chaves grandes para
propósitos criptográficos. Um mundo no qual uma agência governamental tentaria
ativamente cercear o uso de tais tecnologias pode parecer inverossímil demais
para nós — talvez menos para quem se lembra que a &lt;a href=&quot;https://en.wikipedia.org/wiki/Pretty_Good_Privacy&quot;&gt;Pretty Good
Privacy&lt;/a&gt; foi uma ideia radical que causou ao seu criador e
ativista, Phil Zimmermann, problemas legais concretos.&lt;/p&gt;

&lt;p&gt;Acredito que entusiastas da computação e usuários de sistemas operacionais
livres, não apenas &lt;em&gt;experts&lt;/em&gt; em criptografia, estão numa posição especial para
ajudar seus amigos e familiares preocupados com a defesa de sua privacidade
online e a segurança de suas comunicações e que, se valorizamos tanto a
liberdade quanto a segurança da informação, como bons hackers fazem, temos, na
verdade, a responsabilidade de fazê-lo. Acredito que as pessoas precisam estar
conscientes não apenas das implicações da vigilância em massa numa escala
global, mas também de como exercitar seus direitos para lutar contra ela. Se a
legalidade da criptografia for algum dia questionada novamente, como um
resultado de seu impedimento da vigilância sem mandados judiciais, sua difusão
e a insistência do público em sua disponibilidade livre também deve tornar sua
restrição não apenas impraticável, mas impensável.&lt;/p&gt;

&lt;p&gt;É por isso que apoio a &lt;a href=&quot;https://www.eff.org/&quot;&gt;Electronic Frontier Foundation&lt;/a&gt;, a &lt;a href=&quot;https://my.fsf.org/&quot;&gt;Free Software
Foundation&lt;/a&gt; e qualquer um que apoie a liberdade e direito de todos para
usar a tecnologia segura e privadamente. Espero que qualquer pessoa que leia
este artigo considere fazer o mesmo.&lt;/p&gt;

&lt;p&gt;Essa entrada é a parte 10 de 10 na série &lt;a href=&quot;/2013/09/16/linux_cripto_intro/&quot;&gt;Criptografia no
Linux&lt;/a&gt;.&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>Criptografia no Linux: Discos</title>
        <link>http://cabaladada.org/2013/11/30/linux_cripto_discos/</link>
        <pubDate>Sat, 30 Nov 2013</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2013/11/30/linux_cripto_discos/</guid>
        <description>&lt;p&gt;Este é o nono post de uma série de dez posts traduzindo o original de Tom
Ryder, &lt;a href=&quot;http://blog.sanctum.geek.nz/series/linux-crypto/&quot;&gt;Linux Crypto&lt;/a&gt;. Essa série está sob uma licença &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;Creative
Commons 3.0&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Para a lista de posts, veja a &lt;a href=&quot;/2013/09/16/linux_cripto_intro/&quot;&gt;introdução&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;O GnuPG oferece uma maneira de criptografar seguramente arquivos individuais
num sistema de arquivos, mas para informações ou sistemas de alta segurança,
pode ser apropriado criptografar um disco inteiro para mitigar problemas como o
cache de arquivos sensíveis em texto plano. Possivelmente, o modo mais popular
de fazê-lo é usar a ferramenta &lt;a href=&quot;http://www.truecrypt.org/&quot;&gt;TrueCrypt&lt;/a&gt;, mas o kernel do Linux
inclui a sua própria solução de criptografia de disco, o &lt;code&gt;dm-crypt&lt;/code&gt;. Você pode
tirar proveito dela utilizando uma ferramenta de baixo nível chamada
&lt;code&gt;cryptsetup&lt;/code&gt;, ou mais facilmente com a LUKS, a &lt;a href=&quot;https://en.wikipedia.org/wiki/Linux_Unified_Key_Setup&quot;&gt;Linux Unified Key Setup&lt;/a&gt;,
implementando criptografia com senhas ou arquivos de chave.&lt;/p&gt;

&lt;p&gt;Neste exemplo, demonstraremos como criptografar um disco USB, um bom método
para armazenar seguramente dados realmente sensíveis, como chaves mestras PGP
que só são necessárias ocasionalmente, ao invés de deixá-las constantemente
montadas num dispositivo conectado à rede. Tenha cuidado, pois essa operação
apagará qualquer arquivo existente no disco.&lt;/p&gt;

&lt;h2 id=&quot;instalação&quot;&gt;Instalação&lt;/h2&gt;

&lt;p&gt;As ferramentas criptográficas utilizadas pelo &lt;code&gt;dm-crypt&lt;/code&gt; e pela LUKS são
embutidas no Linux a partir da versão 2.6, mas você talvez tenha de instalar um
pacote para acessar a interface &lt;code&gt;cryptsetup&lt;/code&gt;. Em sistemas baseados no Debian,
ela está disponível no pacote &lt;a href=&quot;http://packages.debian.org/wheezy/cryptsetup&quot;&gt;&lt;code&gt;cryptsetup&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# apt-get install cryptsetup
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Em sistemas baseados em pacotes RPM, como o Fedora ou CentOS, o pacote tem o
mesmo nome, &lt;a href=&quot;https://admin.fedoraproject.org/pkgdb/acls/name/cryptsetup&quot;&gt;&lt;code&gt;cryptsetup&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# yum install cryptsetup
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;criando-o-volume&quot;&gt;Criando o volume&lt;/h2&gt;

&lt;p&gt;Após identificarmos em qual dispositivo de blocos queremos o sistema de
arquivos criptografado, por exemplo &lt;code&gt;/dev/sdc1&lt;/code&gt;, podemos deletar qualquer
conteúdo existente usando o &lt;code&gt;wipefs&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# wipefs -a /dev/sdc1
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Alternativamente, podemos zerar o disco inteiro, se quisermos sobrescrever
completamente qualquer traço de dados prévios no disco. Essa operação pode
levar um longo tempo para volumes grandes:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# cat /dev/zero &amp;gt;/dev/sdc1
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Se você não tiver um dispositivo USB em mãos, mas ainda assim quiser testar
essas instruções, é possível utilizar um dispositivo de loop num arquivo. Por
exemplo, para criar um dispositivo de loop de 100MB:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# dd if=/dev/zero of=/loopdev bs=1k count=102400
102400+0 records in
102400+0 records out
104857600 bytes (105 MB) copied, 0.331452 s, 316 MB/s
# losetup -f
/dev/loop0
# losetup /dev/loop0 /loopdev
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Você pode seguir o resto deste guia usando &lt;code&gt;/dev/loop0&lt;/code&gt; como o dispositivo de
blocos em lugar de &lt;code&gt;/dev/sdc1&lt;/code&gt;. Na saída acima, o comando &lt;code&gt;losetup -f&lt;/code&gt; retorna
o primeiro dispositivo de loop disponível para uso.&lt;/p&gt;

&lt;p&gt;A configuração de um container LUKS num dispositivo de blocos é realizada como
a seguir, sendo necessário fornecer uma senha forte; como sempre, quanto mais
longa, melhor. Idealmente, você não deve utilizar a mesma senha que suas chaves
do GnuPG ou SSH.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# cryptsetup luksFormat /dev/sdc1

WARNING!
========
This will overwrite data on /dev/sdc1 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase:
Verify passphrase:
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Esse comando cria um container de criptografia abstrato no disco, que pode ser
aberto fornecendo a senha correta. Um dispositivo virtual mapeado é fornecido
para criptografar todos os dados escritos a ele transparentemente, com os dados
criptografados escritos no disco.&lt;/p&gt;

&lt;h2 id=&quot;usando-o-dispositivo-mapeado&quot;&gt;Usando o dispositivo mapeado&lt;/h2&gt;

&lt;p&gt;Podemos abrir o dispositivo mapeado utilizando &lt;code&gt;cryptsetup luksOpen&lt;/code&gt;, que
também irá perguntar a senha:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# cryptsetup luksOpen /dev/sdc1 secreto
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Isso feito, o dispositivo de blocos em &lt;code&gt;/dev/mapper/secreto&lt;/code&gt; pode ser utilizado
da mesma maneira que qualquer outro dispositivo; todas as operações de disco
são abstraídas pelas operações de criptografia. Provavelmente, você irá desejar
criar um sistema de arquivos nele. No meu caso, criarei um sistema &lt;code&gt;ext4&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# mkfs.ext4 /dev/mapper/secreto
mke2fs 1.42.8 (20-Jun-2013)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25168 inodes, 100352 blocks
5017 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
13 block groups
8192 blocks per group, 8192 fragments per group
1936 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Agora, podemos montar o dispositivo normalmente, e os dados colocados no
recém-criado sistema de arquivo serão criptografados transparentemente:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# mkdir -p /mnt/secreto
# mount /dev/mapper/secreto /mnt/secreto
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Podemos, por exemplo, armazenar nossa chave privada do GnuPG:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# cp -prv /home/tim/.gnupg/secring.gpg /mnt/secreto
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;informações-sobre-o-dispositivo&quot;&gt;Informações sobre o dispositivo&lt;/h2&gt;

&lt;p&gt;Podemos obter informações sobre o container LUKS e as especificidades de sua
criptografia usando o argumento &lt;code&gt;luksDump&lt;/code&gt; no sistema de blocos subjacente. Ele
nos mostra o método de criptografia utilizado, nesse caso, &lt;code&gt;aes-xts-plain64&lt;/code&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# cryptsetup luksDump /dev/sdc1
LUKS header information for /dev/sdc1

Version:        1
Cipher name:    aes
Cipher mode:    xts-plain64
Hash spec:      sha1
Payload offset: 4096
MK bits:        256
MK digest:      87 6d 08 59 b2 f0 c6 6e ca ec 5f 72 2c e0 35 33 c2 9e cb 8e
MK salt:        7f a5 38 4c 14 85 61 cb 6c 22 65 48 87 21 60 8f
                fa 40 2a ab ae 7d cc df c9 9b a4 e3 3c 64 b6 bb
MK iterations:  49375
UUID:           f4e5f28c-3b34-4003-9bcd-dbb2352042ba

Key Slot 0: ENABLED
        Iterations:             197530
        Salt:                   2d 57 f6 2b 44 a6 61 ee d6 ee e4 7d 64 f0 71 d6
                                55 16 09 83 b4 f0 94 ca 19 17 11 a9 34 84 02 96
        Key material offset:    8
        AF stripes:             4000
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;desmontando-o-dispositivo&quot;&gt;Desmontando o dispositivo&lt;/h2&gt;

&lt;p&gt;Quando terminamos de trabalhar com o dispositivo, devemos desmontar quaisquer
sistemas de arquivos presentes e, também, fechar o dispositivo mapeado, para
que a senha seja necessária para reabri-lo:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# umount /mnt/secreto
# cryptsetup luksClose /dev/mapper/secreto
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Se ele também é um dispositivo removível, você também deve considerar a remoção
física da mídia e colocá-la em algum local seguro.&lt;/p&gt;

&lt;p&gt;Esse post apenas arranha a superfície da funcionalidade da LUKS; muitas outras
coisas são possíveis com o sistema, incluindo a montagem automática de sistemas
de arquivos criptografados e o uso de arquivos de chave armazenados ao invés de
senhas digitadas. O &lt;a href=&quot;https://code.google.com/p/cryptsetup/wiki/FrequentlyAskedQuestions&quot;&gt;FAQ do &lt;code&gt;cryptsetup&lt;/code&gt;&lt;/a&gt; contém uma grande quantidade de
informações, incluindo considerações sobre a recuperação de dados, e a Arch
Wiki contém &lt;a href=&quot;https://wiki.archlinux.org/index.php/Dm-crypt_with_LUKS&quot;&gt;uma página muito completa&lt;/a&gt; com muitas outras maneiras
de usar a LUKS seguramente.&lt;/p&gt;

&lt;p&gt;Essa entrada é a parte 9 de 10 na série &lt;a href=&quot;/2013/09/16/linux_cripto_intro/&quot;&gt;Criptografia no
Linux&lt;/a&gt;.&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>Criptografia no Linux: Backups</title>
        <link>http://cabaladada.org/2013/11/23/linux_cripto_backups/</link>
        <pubDate>Sat, 23 Nov 2013</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2013/11/23/linux_cripto_backups/</guid>
        <description>&lt;p&gt;Este é o oitavo post de uma série de dez posts traduzindo o original de Tom
Ryder, &lt;a href=&quot;http://blog.sanctum.geek.nz/series/linux-crypto/&quot;&gt;Linux Crypto&lt;/a&gt;. Essa série está sob uma licença &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;Creative
Commons 3.0&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Para a lista de posts, veja a &lt;a href=&quot;/2013/09/16/linux_cripto_intro/&quot;&gt;introdução&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Embora possuir backups locais para a recuperação rápida de dados seja
importante, tal como em um disco USB ou num disco rígido vago, é igualmente
importante ter um backup externo, a partir do qual você possa restaurar seus
documentos importantes se, por exemplo, o seu escritório foi roubado ou pegar
fogo e você perder tanto seu computador quanto o seu meio de backup.&lt;/p&gt;

&lt;p&gt;Para a maior parte das pessoas, a maneira mais fácil de fazê-lo é com um
provedor de armazenamento que ofereça acesso a armazenamento em massa de
tamanho apropriado para você, mantido nos sistemas de outras companhia, por um
preço relativamente modesto ou mesmo de graça, como o &lt;a href=&quot;https://one.ubuntu.com/&quot;&gt;Ubuntu One&lt;/a&gt;
ou o &lt;a href=&quot;https://skydrive.live.com/&quot;&gt;Skydrive&lt;/a&gt;, da Microsoft. Os melhores provedores também
criptografam os dados em seus servidores, não importando se eles têm acesso aos
dados ou não.&lt;/p&gt;

&lt;p&gt;Mas confiar todos os seus dados e a criptografia dos mesmos a uma companhia é
arriscado, particularmente após as recentes revelações de um &lt;a href=&quot;http://www.guardian.co.uk/world/2013/jul/11/microsoft-nsa-collaboration-user-data&quot;&gt;conluio
corporativo com a NSA&lt;/a&gt;, e usuários preocupados com sua privacidade
devem preferir a segurança de criptografar seus backups &lt;em&gt;antes&lt;/em&gt; de serem
enviados aos servidores. O provedor pode implementar seus próprios mecanismos
de criptografia simétrica e/ou fechada, que podem ou não ser confiáveis. Como
estalecemos anteriormente, para uma criptografia pessoal bastante robusta,
podemos usar nossa instalação do GnuPG para criptografar arquivos antes de
enviá-los:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ tar -cf backup_docs-&quot;$(date +%Y-%m-%d)&quot;.tar $HOME/Documentos
$ gpg --encrypt backup_docs-2013-07-27.tar
$ scp backup_docs-2013-07-27.tar.gpg usuario@backup.exemplo.com.br:backup_docs
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;O problema de criptografar arquivos inteiros antes de copiá-los ao servidor de
armazenamento é que mesmo para dados de tamanho modesto, sempre realizar
backups completos e sempre enviar todos os arquivos juntos pode custar muita
banda. Da mesma forma, gostaríamos de ser capazes de restaurar nossos arquivos
tal como eram num dia específico, para o caso de backups que não funcionem ou
arquivos deletados acidentalmente, porém sem armazenar todos os arquivos em
todos os dias de backup, o que pode acabar requerendo espaço demais.&lt;/p&gt;

&lt;h2 id=&quot;backups-incrementais&quot;&gt;Backups incrementais&lt;/h2&gt;

&lt;p&gt;Normalmente, a solução é usar um sistema de backup incremental, o que significa
que, após o upload inicial de seus arquivos em sua totalidade ao sistema de
backup, os backups sucessivos fazem o upload &lt;em&gt;apenas das mudanças&lt;/em&gt;,
arquivando-as num formato recuperável e com um aproveitamento de espaço
eficiente. Sistemas como o &lt;a href=&quot;http://www.dirvish.org/&quot;&gt;Dirvish&lt;/a&gt;, uma interface escrita em Perl
para o &lt;code&gt;rsync(1)&lt;/code&gt;, permitem isso.&lt;/p&gt;

&lt;p&gt;Infelizmente, o Dirvish não criptografa os arquivos nem o conjunto de
alterações que ele armazena. Precisamos de uma solução de backup incremental
que calcule e armazene eficientemente as mudanças nos arquivos num servidor
remoto e que &lt;em&gt;também&lt;/em&gt; os criptografe. O &lt;a href=&quot;http://duplicity.nongnu.org/&quot;&gt;Duplicity&lt;/a&gt;, uma ferramenta
escrita em Python e construída sobre a biblioteca &lt;code&gt;librsync&lt;/code&gt; se destaca nessa
tarefa. Ele pode usar nossa configuração de chave assimétrica do GnuPG para a
criptografia dos arquivos e está disponível em sistemas derivados do Debian no
pacote &lt;a href=&quot;http://packages.debian.org/wheezy/duplicity&quot;&gt;&lt;code&gt;duplicity&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;uso&quot;&gt;Uso&lt;/h2&gt;

&lt;p&gt;Podemos ter uma ideia de como o &lt;a href=&quot;http://linux.die.net/man/1/duplicity&quot;&gt;&lt;code&gt;duplicity(1)&lt;/code&gt;&lt;/a&gt; funciona
pedindo que ele inicie um backup em nossa máquina local. O programa utiliza
quase os mesmo argumentos de fonte e destino que ferramentas como o &lt;code&gt;rsync&lt;/code&gt; ou
o &lt;code&gt;scp&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ cd
$ duplicity --encrypt-key taspargos@exemplo.com.br Documentos file://backup_docs
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;É importante especificar a opção &lt;code&gt;--encrypt-key&lt;/code&gt;, pois de outro modo o
&lt;code&gt;duplicity(1)&lt;/code&gt; utilizará a criptografia simétrica com senha, que é
consideravelmente menos segura, ao invés da chave pública. Indique o endereço
de email que corresponde ao par de chaves que você deseja utilizar para a
criptografia.&lt;/p&gt;

&lt;p&gt;O comando acima realiza o backup completo e criptografado do diretório,
retornando a seguinte saída:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Os metadados remotos e locais estão sincronizados; nenhuma sincronização é necessária.
Data da última cópia de segurança completa: nenhuma
Não encontrou assinaturas, a mudança para backup completo.
--------------[ Estatísticas de backup ]--------------
StartTime 1374903081.74 (Sat Jul 27 17:31:21 2013)
EndTime 1374903081.75 (Sat Jul 27 17:31:21 2013)
ElapsedTime 0.01 (0.01 seconds)
SourceFiles 4
SourceFileSize 142251 (139 KB)
NewFiles 4
NewFileSize 142251 (139 KB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 4
RawDeltaSize 138155 (135 KB)
TotalDestinationSizeChange 138461 (135 KB)
Errors 0
-------------------------------------------------------
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Você poderá notar que sua senha não é requerida. Lembre-se que para
criptografar arquivos, a chave pública não requer uma senha; a ideia geral é
que qualquer um possa criptografar utilizando nossa chave, sem precisar de sua
permissão.&lt;/p&gt;

&lt;p&gt;Verificando o diretório criado, &lt;code&gt;backup_docs&lt;/code&gt;, encontramos três novos arquivos
dentro, todos criptografados:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ ls -1 backup_docs
duplicity-full.20130727T053121Z.manifest.gpg
duplicity-full.20130727T053121Z.vol1.difftar.gpg
duplicity-full-signatures.20130727T053121Z.sigtar.gpg
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;O arquivo &lt;code&gt;vol1.difftar.gpg&lt;/code&gt; contém os dados armazenados; os outros dois
arquivos contém &lt;em&gt;metadados&lt;/em&gt; sobre os conteúdos do arquivo, para que as
diferenças sejam calculadas na próxima vez que o backup for executado.&lt;/p&gt;

&lt;p&gt;Se fizermos uma pequena mudança num arquivo do diretório que estamos copiando e
rodarmos o mesmo comando novamente, notaremos que o backup será realizado
&lt;em&gt;incrementalmente&lt;/em&gt;, e apenas as mudanças (o novo arquivo) será salvo:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ duplicity --encrypt-key taspargos@exemplo.com.br Documentos file://backup_docs
Os metadados remotos e locais estão sincronizados; nenhuma sincronização é necessária.
Data da última cópia de segurança completa: Sab Jul 27 17:34:33 2013
--------------[ Estatísticas de backup ]--------------
StartTime 1374903396.52 (Sat Jul 27 17:36:36 2013)
EndTime 1374903396.52 (Sat Jul 27 17:36:36 2013)
ElapsedTime 0.01 (0.01 seconds)
SourceFiles 5
SourceFileSize 142255 (139 KB)
NewFiles 2
NewFileSize 4100 (4.00 KB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 2
RawDeltaSize 4 (4 bytes)
TotalDestinationSizeChange 753 (753 bytes)
Errors 0
-------------------------------------------------------
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Também encontraremos três novos arquivos no diretório &lt;code&gt;backup_docs&lt;/code&gt;, contendo
os novos dados:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ ls -1 backup_docs
duplicity-full.20130727T053433Z.manifest.gpg
duplicity-full.20130727T053433Z.vol1.difftar.gpg
duplicity-full-signatures.20130727T053433Z.sigtar.gpg
duplicity-inc.20130727T053433Z.to.20130727T053636Z.manifest.gpg
duplicity-inc.20130727T053433Z.to.20130727T053636Z.vol1.difftar.gpg
duplicity-new-signatures.20130727T053433Z.to.20130727T053636Z.sigtar.gpg
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Note que os novos arquivos têm o prefixo &lt;code&gt;duplicity-inc-&lt;/code&gt; ou &lt;code&gt;duplicity-new-&lt;/code&gt;,
denotando que são backups incrementais e não completos.&lt;/p&gt;

&lt;p&gt;Note, também, que para poder rastrear os arquivos que já foram copiados, o
&lt;code&gt;duplicity(1)&lt;/code&gt; armazena os metadados em &lt;code&gt;~/.cache/duplicity&lt;/code&gt;, bem como junto
com os backups. Assim, podemos executar nossos processos de backup de forma
autônoma, ao invés de ter de inserir nossa senha para ler os metadados no
servidor remoto antes de realizar o backup incremental. Naturalmente, se
perdermos nossos arquivos em cache, não há problemas; podemos ler os arquivos
que estão no backup fornecendo nossa senha quando pedida.&lt;/p&gt;

&lt;h2 id=&quot;backups-remotos&quot;&gt;Backups remotos&lt;/h2&gt;

&lt;p&gt;Se você tem acesso SSH ou mesmo apenas SCP/SFTP aos servidores do seu provedor
de armazenamento, não é preciso mudar muito para que o &lt;code&gt;duplicity(1)&lt;/code&gt; armazene
os arquivos nesses servidores:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ duplicity --encrypt-key taspargos@exemplo.com.br Documentos sftp://usuario@backup.exemplo.com.br:backup_docs
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Seus backups serão, então, enviados por SSH ao diretório &lt;code&gt;backup_docs&lt;/code&gt; no
sistema &lt;code&gt;backup.exemplo.com.br&lt;/code&gt;, com o nome de usuário &lt;code&gt;usuario&lt;/code&gt;. Dessa
maneira, os dados são não apenas protegidos durante a transmissão, mas também
armazenados criptografados no servidor remoto, que nunca vê seus dados em texto
plano. Qualquer um que tenha acesso aos seus backups pode ver apenas o tamanho
aproximado dos dados, a data em que foram criados e (se você publicar sua chave
pública) a ID de usuário da chave do GnuPG usada para criptografá-los.&lt;/p&gt;

&lt;p&gt;Se você estiver &lt;a href=&quot;/2013/09/30/linux_cripto_agentes/&quot;&gt;usando o programa &lt;code&gt;ssh-agent(1)&lt;/code&gt;&lt;/a&gt; para armazenar suas
chaves privadas descriptografadas, você nem mesmo terá de digitar sua senha
para isso.&lt;/p&gt;

&lt;p&gt;A interface do &lt;code&gt;duplicity(1)&lt;/code&gt; suporta outros métodos de envio para diferentes
servidores, também, incluindo o backend &lt;code&gt;boto&lt;/code&gt;, para o S3 Amazon Web Services,
o backend &lt;code&gt;gdocs&lt;/code&gt;, para o Google Docs, e &lt;code&gt;httplib2&lt;/code&gt; ou &lt;code&gt;oauthlib&lt;/code&gt; para o Ubuntu
One.&lt;/p&gt;

&lt;p&gt;Se você desejar, também é possível assinar seus backups, para garantir que não
foram modificados, mudando &lt;code&gt;--encrypt-key&lt;/code&gt; para &lt;code&gt;--encrypt-sign-key&lt;/code&gt;. Note que
essa operação exigirá sua senha.&lt;/p&gt;

&lt;h2 id=&quot;restaurando-o-backup&quot;&gt;Restaurando o backup&lt;/h2&gt;

&lt;p&gt;Restaurar a partir de um volume de backup do &lt;code&gt;duplicity&lt;/code&gt; é bastante parecido
com realizar um backup, mas os argumentos são invertidos:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ duplicity sftp://usuario@backup.exemplo.com.br:backup_docs restaura_docs
Sincronizando metadados remotos ao cache local...
Senha GnuPG:
Copiando duplicity-full-signatures.20130727T053433Z.sigtar.gpg ao cache local.
Copiando duplicity-full.20130727T053433Z.manifest.gpg ao cache local.
Copiando duplicity-inc.20130727T053433Z.to.20130727T053636Z.manifest.gpg ao cache local.
Copiando duplicity-new-signatures.20130727T053433Z.to.20130727T053636Z.sigtar.gpg ao cache local.
Data do último backup: Sat Jul 27 17:34:33 2013
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Note que, dessa vez, sua senha será requerida, pois a restauração do backup
requer a descriptografia dos dados e possivelmente as assinaturas em seu volume
de backup. Após inseri-la, o conjunto completo de documentos mais recentemente
copiados estará disponível em &lt;code&gt;restaura_docs&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Usando esse sistema incremental, também podemos restaurar os dados tal como
eram antes de uma data específica. Por exemplo, para recuperar meu diretório
&lt;code&gt;~/Documentos&lt;/code&gt; tal como era há três dias, posso rodar:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ duplicity --time 3D \
    sftp://usuario@backup.exemplo.com.br:backup_docs \
    restaura_docs
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Para volumes maiores, você pode extender esse comando para restaurar apenas
arquivos em particular, se precisar:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ duplicity --time 3D \
    --file-to-restore privado/eff.txt \
    sftp://usuario@backup.exemplo.com.br:backup_docs \
    restaura_docs
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;automatizando-o-backup&quot;&gt;Automatizando o backup&lt;/h2&gt;

&lt;p&gt;Você deve rodar seu primeiro backup interativamente para garantir que ele faz o
que você precisa mas, quando você estiver confiante que tudo está funcionando
corretamente, você pode escrever um Bash script simples para rodar backups
incrementais automaticamente. Aqui está um exemplo, salvo em
&lt;code&gt;$HOME/.local/bin/backup-remote&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#!/usr/bin/env bash

# Rode o keychain para encontrar quaisquer agentes armazenando chaves
# descriptografadas que possamos precisar (opcional, dependendo da sua
# configuração de chave do SSH) 
eval &quot;$(keychain --eval --quiet)&quot;

# Especifique um diretório para realizar o backup, uma ID de chave GnuPG, e
# um usuário remoto e hostname
keyid=taspargos@exemplo.com.br
local=/home/tim/Documentos
remote=sftp://usuario@backup.exemplo.com.br/backup_docs

# Execute o backup com o duplicity
/usr/bin/duplicity --encrypt-key &quot;$keyid&quot; -- &quot;$local&quot; &quot;$remote&quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;A linha com &lt;code&gt;keychain&lt;/code&gt; é opcional, mas será necessária se você estiver usando
uma chave SSH com senha; também será necessário ter se autenticado ao
&lt;code&gt;ssh-agent&lt;/code&gt; ao menos uma vez. Veja o artigo anterior &lt;a href=&quot;/2013/09/30/linux_cripto_agentes/&quot;&gt;sobre agentes
SSH/GPG&lt;/a&gt; para mais detalhes.&lt;/p&gt;

&lt;p&gt;Não esqueça de tornar o script executável:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ chmod +x ~/.local/bin/backup-remote
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Você também pode pedir ao &lt;a href=&quot;http://linux.die.net/man/8/cron&quot;&gt;&lt;code&gt;cron(8)&lt;/code&gt;&lt;/a&gt; que execute-o uma vez por semana,
rodando como seu usuário, editando o &lt;a href=&quot;http://blog.sanctum.geek.nz/user-cron-tasks/&quot;&gt;arquivo &lt;code&gt;crontab(5)&lt;/code&gt; de
usuário&lt;/a&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ crontab -e
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;A linha a seguir roda o script toda manhã, começando às 6:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;0 6 * * *   ~/.local/bin/backup-remote
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;dicas&quot;&gt;Dicas&lt;/h2&gt;

&lt;p&gt;Algumas melhores práticas gerais se aplicam ao nosso caso, consistentes com o
&lt;a href=&quot;http://www.taobackup.com/&quot;&gt;Tao do Backup&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Garanta que seus backups são concluídos; peça ao &lt;code&gt;cron&lt;/code&gt; que envie sua saída
para seu email ou para um arquivo que você cheque pelo menos ocasionalmente,
para ter certeza que seus backups estão funcionando. Altamente recomendo usar
o email e incluir erros:&lt;/p&gt;

    &lt;pre&gt;&lt;code&gt;  MAILTO=voce@exemplo.com.br
  0 6 * * *   ~/.local/bin/backup-remote 2&amp;gt;&amp;amp;1
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Armazene seus backups em servidores locais, também. Você pode prevenir que
seu provedor de backup leia seus arquivos, mas não pode evitar que sejam
deletados acidentalmente.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Não se esqueça de testar/restaurar seus backups ocasionalmente para garantir
que estão funcionando corretamente. Também é aconselhável rodar &lt;code&gt;duplicity
verify&lt;/code&gt; contra os arquivos ocasionalmente, especialmente se você não faz
backups todos os dias:&lt;/p&gt;

    &lt;pre&gt;&lt;code&gt;  $ duplicity verify sftp://usuario@remoto.exemplo.com.br/backup_docs Documentos
  Os metadados remotos e locais estão sincronizados; nenhuma sincronização é necessária.
  Data da última cópia de segurança completa: Sat Jul 27 17:34:33 2013
  Senha GnuPG:
  Verificação completa: 2195 files compared, 0 differences found.
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Esse sistema incremental significa que você, provavelmente, terá de fazer
backups completos apenas uma vez, portanto é melhor copiar dados demais do
que dados de menos; se você pode gastar a banda e o espaço, copiar seu
computador inteiro não é tão extremo quanto soa.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Tente não depender demais dos seus backups remotos; veja-os como último
recurso e trabalhe seguramente e com backups locais tanto quanto puder.
Certamente, nunca confie em backups como controle de versão; &lt;a href=&quot;http://git-scm.com/book&quot;&gt;use o Git para
isso&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essa entrada é a parte 8 de 10 na série &lt;a href=&quot;/2013/09/16/linux_cripto_intro/&quot;&gt;Criptografia no
Linux&lt;/a&gt;.&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>Criptografia no Linux: Email</title>
        <link>http://cabaladada.org/2013/11/04/linux_cripto_email/</link>
        <pubDate>Mon, 04 Nov 2013</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2013/11/04/linux_cripto_email/</guid>
        <description>&lt;p&gt;Este é o sétimo post de uma série de dez posts traduzindo o original de Tom
Ryder, &lt;a href=&quot;http://blog.sanctum.geek.nz/series/linux-crypto/&quot;&gt;Linux Crypto&lt;/a&gt;. Essa série está sob uma licença &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;Creative
Commons 3.0&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Para a lista de posts, veja a &lt;a href=&quot;/2013/09/16/linux_cripto_intro/&quot;&gt;introdução&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Um sistema de armazenamento de senhas criptografado é um bom começo, mas agora
que temos uma instalação do GnuPG em funcionamento, devemos considerar o uso do
PGP para aquilo que foi originalmente criado: emails. Para isso, usaremos o
&lt;a href=&quot;http://www.mutt.org/&quot;&gt;Mutt&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;O Mutt é um cliente de email para o console, ou MUA (do inglês &lt;em&gt;mail user
agent&lt;/em&gt;), projetado sobretudo para gerenciar e ler emails. Ao contrário de
outros clientes como o &lt;a href=&quot;http://www.mozilla.org/en-US/thunderbird&quot;&gt;Thunderbird&lt;/a&gt;, ele não foi projetado para
ser um cliente POP3/IMAP, ou um agente SMTP, embora versões mais recentes
incluam essa funcionalidade; essas são operações realizadas por programas como
o &lt;a href=&quot;http://pyropus.ca/software/getmail/&quot;&gt;Getmail&lt;/a&gt; e o &lt;a href=&quot;http://msmtp.sourceforge.net/&quot;&gt;MSMTP&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Se, como muitas outras pessoas, você estiver usando o Gmail, o Mutt funciona
muito bem com POP3/IMAP e SMTP, permitindo que você componha mensagens em texto
plano, com seu editor de escolha, numa janela de terminal, num ambiente
altamente configurável e utilizando sua própria criptografia para email, para
qualquer comunicação confidencial, de maneira que nem mesmo o seu provedor de
email possa lê-la.&lt;/p&gt;

&lt;p&gt;O uso geral do Mutt e a configuração para usuários do Gmail não será coberta em
detalhes aqui. Por enquanto, existem muitos &lt;a href=&quot;http://www.andrews-corner.org/mutt.html&quot;&gt;artigos excelentes&lt;/a&gt; sobre
a configuração básica do Mutt. Se você está interessado na configuração de
outros clientes de email para o Linux, como o &lt;a href=&quot;http://www.claws-mail.org/&quot;&gt;Claws&lt;/a&gt; ou o Thunderbird,
o Cory Sadowski tem um &lt;a href=&quot;http://probablytechrelated.wordpress.com/2013/07/01/basic-privacy-security-and-encryption-on-the-internet/&quot;&gt;ótimo passo-a-passo&lt;/a&gt;, além de comentar sobre
outras configurações de privacidade relevantes tanto no GNU/Linux quanto no
Windows.&lt;/p&gt;

&lt;p&gt;As instruções abaixo presumem que você já tem um &lt;a href=&quot;#&quot;&gt;par de chaves
GnuPG&lt;/a&gt; pronto, com o &lt;a href=&quot;#&quot;&gt;&lt;code&gt;gpg-agent(1)&lt;/code&gt;&lt;/a&gt; rodando no
background para gerenciar suas chaves.&lt;/p&gt;

&lt;h2 id=&quot;background&quot;&gt;Background&lt;/h2&gt;

&lt;p&gt;A maioria dos &lt;a href=&quot;http://dev.mutt.org/trac/wiki/MuttGuide/UseGPG&quot;&gt;guias de configuração do PGP para o Mutt&lt;/a&gt; online são
bastante antigos e geralmente sugerem muitas linhas para o arquivo de
configuração, &lt;code&gt;.muttrc&lt;/code&gt;, que lidam diretamente com o comando &lt;code&gt;gpg&lt;/code&gt;, com uma
miríade de opções e algumas substituições de variáveis obscuras:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;set pgp_clearsign_command=&quot;gpg --no-verbose --batch --output - ...
set pgp_decode_command=&quot;gpg %?p?--passphrase-fd 0? --no-verbose ...
set pgp_decrypt_command=&quot;gpg --passphrase-fd 0 --no-verbose --batch ...
set pgp_encrypt_only_command=&quot;pgpewrap gpg --batch --quiet ...
set pgp_encrypt_sign_command=&quot;pgpewrap gpg --passphrase-fd 0 ...
set pgp_export_command=&quot;gpg --no-verbose --export --armor %r&quot;
set pgp_import_command=&quot;gpg --no-verbose --import -v %f&quot;
set pgp_list_pubring_command=&quot;gpg --no-verbose --batch --with-colons ...
set pgp_list_secring_command=&quot;gpg --no-verbose --batch --with-colons ...
set pgp_sign_command=&quot;gpg --no-verbose --batch --output - ...
set pgp_verify_command=&quot;gpg --no-verbose --batch --output - --verify %s %f&quot;
set pgp_verify_key_command=&quot;gpg --no-verbose --batch --fingerprint ...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Sou completamente a favor da filosofia do Unix de usar os programas em
conjunto, mas isso é demais. Essa configuração é volúvel e muito difícil de
trabalhar, além de requerer conhecimento demais do &lt;code&gt;gpg(1)&lt;/code&gt; para ser usada e
editada sensatamente. Afinal de contas, queremos uma configuração que possamos
entender razoavelmente bem.&lt;/p&gt;

&lt;p&gt;Então esqueça tudo aquilo; ao invés disso, iremos usar o &lt;a href=&quot;http://www.gnupg.org/related_software/gpgme/&quot;&gt;GPGME&lt;/a&gt;. A
configuração acima é exatamente o problema que essa biblioteca foi projetada
para resolver: os aplicativos podem se ligar a ela para simplificar o uso das
funções do GnuPG, incluindo a interface com agentes. Podemos substituir todas
as linhas acima com o seguinte:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;set crypt_use_gpgme = yes
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;instalação&quot;&gt;Instalação&lt;/h2&gt;

&lt;p&gt;Se você tem o Mutt instalado, há chances que ele já possua uma interface para o
GPGME. Você pode checar se sua versão atual do Mutt é capaz de utilizá-lo com a
saída de &lt;code&gt;mutt -v version&lt;/code&gt;. Essa é a saída do meu, usando o Mutt empacotado
para o Debian GNU/Linux, que suporta o GPGME:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ mutt -v | grep -i gpgme
+CRYPT_BACKEND_CLASSIC_PGP  +CRYPT_BACKEND_CLASSIC_SMIME  +CRYPT_BACKEND_GPGME
upstream/548577-gpgme-1.2.patch
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Se você não tem uma versão do Mutt com GPGME, você pode fazer o download do
código fonte e compilá-lo com a opção &lt;code&gt;--enable-gpgme&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ ./configure --enable-gpgme
$ make
# make install
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Você pode ter de instalar a biblioteca GPGME e suas headers antes disso:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# apt-get install libgpgme11 libgpgme11-dev
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;configuração&quot;&gt;Configuração&lt;/h2&gt;

&lt;p&gt;Adicione as seguintes linhas ao arquivo &lt;code&gt;.muttrc&lt;/code&gt;; remova qualquer texto que
comece por &lt;code&gt;crypt_*&lt;/code&gt; ou &lt;code&gt;pgp_*&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# Use o GPGME
set crypt_use_gpgme = yes

# Assine as respostas para emails já assinados
set crypt_replysign = yes

# Criptografe as respostas para emails já criptografados
set crypt_replyencrypt = yes

# Criptografe e assine as respostas para emails já criptografados e assinados
set crypt_replysignencrypted = yes

# Tente verificar assinaturas automaticamente
set crypt_verify_sig = yes
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Reinicie o Mutt e pronto.&lt;/p&gt;

&lt;h2 id=&quot;uso&quot;&gt;Uso&lt;/h2&gt;

&lt;p&gt;Primeiramente, verifique se você tem a chave pública do seu destinatário
disponível em seu chaveiro do GnuPG:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ gpg --list-keys joao@exemplo.com.br
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Se ela estiver disponível para download, você pode baixá-la usando o
&lt;a href=&quot;http://linux.die.net/man/1/curl&quot;&gt;&lt;code&gt;curl(1)&lt;/code&gt;&lt;/a&gt; e importá-la diretamente com o &lt;code&gt;gpg(1)&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;curl http://www.exemplo.com.br/joao-ninguem.asc | gpg --import
gpg: key 1234ABCD: public key &quot;João Ninguém&quot; imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
gpg: no ultimately trusted keys found
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Lembre-se: é sua responsabilidade decidir o grau de confiança que tem nessa
chave; normalmente, a melhor prática é que vocês se encontrem em pessoa para
trocar as fingerprints das chaves, de modo que se tenha certeza absoluta de que
a chave corresponde àquele usuário.&lt;/p&gt;

&lt;p&gt;Se você conhece mais ninguém que use o PGP para se comunicar, você pode me
enviar uma mensagem criptografada com minha chave pública,
&lt;a href=&quot;http://static.sanctum.geek.nz/thomas-ryder.asc&quot;&gt;0x77BB8872&lt;/a&gt;, para &lt;code&gt;tom@sanctum.geek.nz&lt;/code&gt; (em inglês). Caso você me
envie sua chave pública, ou insira um link em sua mensagem, irei respondê-la
com outra mensagem criptografada com a sua chave pública, para que você pode
verificar se tudo está funcionando.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ curl http://static.sanctum.geek.nz/thomas-ryder.asc | gpg --import
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Você também pode enviar uma mensagem criptografada com a chave pública do
tradutor desse artigo, &lt;a href=&quot;http://cabaladada.org/public/rberaldo.asc&quot;&gt;0x2D4BF1D0&lt;/a&gt;, para
&lt;code&gt;rberaldo@cabaladada.org&lt;/code&gt; (em português ou inglês).&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ curl http://www.cabaladada.org/public/rberaldo.asc | gpg --import
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Voltando ao Mutt, comece a compor sua mensagem com a tecla &lt;code&gt;m&lt;/code&gt;. Preencha os
campos de destinatário e assunto normalmente e escreva sua mensagem. Quando
terminar, salve e saia do &lt;code&gt;$EDITOR&lt;/code&gt; e sua mensagem estará em sua tela de
Composição, esperando para ser enviada. Aperte &lt;code&gt;p&lt;/code&gt; para acessar o menu do PGP,
que aparecerá na parte de baixo da tela:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear?
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Pressione &lt;code&gt;b&lt;/code&gt; para assinar e criptografar a mensagem.&lt;/p&gt;

&lt;p&gt;Caso você queira ser capaz de ler a mensagem após enviá-la, será necessário
criptografá-la tanto com a sua chave quanto com a do destinatário. Em minha
experiência, a maneira mais simples de fazer isso é adicionar o seu próprio
endereço ao campo &lt;code&gt;Bcc:&lt;/code&gt; pressionando &lt;code&gt;b&lt;/code&gt;. Você também pode deixar esse
comportamento como padrão com a seguinte linha em &lt;code&gt;~/.gnupg/gpg.conf&lt;/code&gt;, onde
&lt;code&gt;0x1234ABCD&lt;/code&gt; é a ID curta de sua chave:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;encrypt-to 0x1234ABCD
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/mutt-compose.png&quot; alt=&quot;Tela de Composição do Mutt&quot; title=&quot;Tela de composição do Mutt&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Quando você enviar a mensagem pressionando &lt;code&gt;y&lt;/code&gt;, talvez seja necessário
especificar quais chaves você deseja usar para quais destinatários, se você não
possuir uma única chave para aquele endereço de email.&lt;/p&gt;

&lt;p&gt;Além disso, você terá de inserir a senha de sua chave privada, que será
requerida pelo programa de entrada de PIN, a menos que um agente já a tenha
carregada. A senha é necessária para assinar a mensagem. Quando você a
fornecer, a mensagem será enviada e, caso você tenha se inserido no campo
&lt;code&gt;Bcc:&lt;/code&gt;, você também deve ser capaz de lê-la em seus emails enviados, com alguns
cabeçalhos mostrando informações do PGP (se a mensagem foi assinada,
criptografada ou ambos):&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/mutt-sent.png&quot; alt=&quot;Tela de Mensagens Enviadas do Mutt&quot; title=&quot;Tela de mensagens enviadas do Mutt&quot; /&gt;&lt;/p&gt;

&lt;p&gt;O destinatário será capaz de descriptografar a mensagem usando sua chave
privada, e ninguém mais além de vocês dois poderá lê-la. Note que isso funciona
qualquer que seja número de destinatários, desde que você tenha a chave pública
de cada um deles.&lt;/p&gt;

&lt;p&gt;Lembre-se que os metadados da mensagens, tais como os nomes e endereços dos
remetentes e destinatários, o dia e a hora em que foi enviada e
(principalmente) o assunto, são enviados em texto plano. Apenas o corpo da
mensagem (incluindo os anexos) é criptografado.&lt;/p&gt;

&lt;h2 id=&quot;alguns-extras-úteis&quot;&gt;Alguns extras úteis&lt;/h2&gt;

&lt;p&gt;Com o GPGME, o Mutt tenta utilizar a primeira chave secreta disponível no
chaveiro privado. Caso você queira utilizar outro par de chaves específico para
assinar mensagens, você pode especificá-lo com a opção &lt;code&gt;pgp_sign_as&lt;/code&gt; no arquivo
&lt;code&gt;.muttrc&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;set pgp_sign_as = 0x9876FEDC
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Se você deseja assinar automaticamente todas as mensagens que enviar, você pode
configurar a opção &lt;code&gt;crypt_autosign&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;set crypt_autosign = yes
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;O primeiro conjunto de opções que configuramos anteriormente irá assinar e/ou
criptografar mensagens automaticamente, em respostas para mensagens assinadas,
criptografados ou ambos.&lt;/p&gt;

&lt;p&gt;Se você desejar incluir um link para a sua chave PGP nos cabeçalhos das
mensagens, é possível adicionar uma header personalizada com a opção &lt;code&gt;my_hdr&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;my_hdr X-PGP-Key: http://static.sanctum.geek.nz/thomas-ryder.asc
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Todos esses aspectos, combinados com a rapidez e a configuração poderosa do
Mutt, o tornam um cliente de email PGP conveniente e muito capaz. Como sempre,
quanto mais pessoas que você conhecer utilizarem o PGP, e quanto mais chaves
públicas você tiver, mais útil ele será.&lt;/p&gt;

&lt;p&gt;Essa entrada é a parte 7 de 10 na série &lt;a href=&quot;/2013/09/16/linux_cripto_intro/&quot;&gt;Criptografia no
Linux&lt;/a&gt;.&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>Criptografia no Linux: Senhas</title>
        <link>http://cabaladada.org/2013/10/04/linux_cripto_senhas/</link>
        <pubDate>Fri, 04 Oct 2013</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2013/10/04/linux_cripto_senhas/</guid>
        <description>&lt;p&gt;Este é o sexto post de uma série de dez posts traduzindo o original de Tom
Ryder, &lt;a href=&quot;http://blog.sanctum.geek.nz/series/linux-crypto/&quot;&gt;Linux Crypto&lt;/a&gt;. Essa série está sob uma licença &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;Creative
Commons 3.0&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Para a lista de posts, veja a &lt;a href=&quot;/2013/09/16/linux_cripto_intro/&quot;&gt;introdução&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;É cada vez mais conhecido que o uso de senhas previsíveis ou o uso da mesma
senha para mais de uma conta é um sério risco de segurança, pois um invasor
pode tomar controle de uma conta (como um email) e causar uma série de
prejuízos. Se um invasor conseguir o hash de sua senha para algum serviço na
web, convém ter certeza de que o hash é muito difícil de reverter e, mesmo que
ele possa ser revertido, é exclusivo o bastante para não dar ao invasor acesso
a qualquer outra de suas contas.&lt;/p&gt;

&lt;p&gt;Essa crescente percepção contribuiu para a popularidade dos &lt;strong&gt;gerenciadores de
senhas&lt;/strong&gt;, ferramentas projetadas para gerar, armazenar e recuperar senhas de
forma segura, criptografadas com uma senha ou palavra passe mestra. Em alguns
casos, como o &lt;a href=&quot;http://keepass.com/&quot;&gt;KeePass&lt;/a&gt;, os dados são armazenados localmente; em
outros, como o &lt;a href=&quot;https://lastpass.com/&quot;&gt;LastPass&lt;/a&gt;, são armazenados em um serviço da web.
Ambas são boas ferramentas e funcionam bem no Linux. Pessoalmente, tenho
algumas reservas quanto o LastPass, pois não quero minhas senhas armazenadas em
um serviço de terceiros, além de &lt;a href=&quot;http://www.matasano.com/articles/javascript-cryptography/&quot;&gt;não confiar na criptografia com o
JavaScript&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Curiosamente, agora que temos uma configuração cuidadosa do GnuPG para lidar
com a criptografia, outra opção é a ferramenta [&lt;code&gt;pass(1)][pass], que se
autoproclama “o gerenciador de senhas padrão do UNIX”.  Ela não passa de um
shell script e algumas completações para o &lt;/code&gt;bash(1)&lt;code&gt; baseados em ferramentas
existentes como o [&lt;/code&gt;git(1)&lt;code&gt;][git], o [&lt;/code&gt;gpg2(1)&lt;code&gt;][gpg2], o  [&lt;/code&gt;pwgen(1)&lt;code&gt;][pwgen],
o [&lt;/code&gt;tree(1)&lt;code&gt;][tree], o [&lt;/code&gt;xclip(1)&lt;code&gt;][xclip] e seu &lt;/code&gt;$EDITOR` de escolha. Se você
ainda não investiu em um método de gerenciamento de senhas existente, essa pode
ser uma boa aplicação inicial para o seu sistema de criptografia e uma ótima
abordagem minimalista para o armazenamento seguro de senhas a partir da linha
de comando (e, portanto, SSH).&lt;/p&gt;

&lt;p&gt;Em sistemas derivados do Debian, a ferramenta está disponível como parte do
pacote &lt;code&gt;pass&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# apt-get install pass
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ela inclui um manual:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ man pass
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Instruções para a instalação em outros sistemas operacionais estão disponíveis
no site do projeto. Outras versões também estão disponíveis para o download,
bem como um link para o repositório de desenvolvimento. Caso deseje utilizar o
programa, certifique-se que as outras ferramentas necessárias citadas acimas
estão instaladas, embora o &lt;code&gt;xclip(1)&lt;/code&gt; seja necessário apenas se você utilizar o
sistema X Windows.&lt;/p&gt;

&lt;h2 id=&quot;instalação&quot;&gt;Instalação&lt;/h2&gt;

&lt;p&gt;Podemos obter um panorama geral do &lt;code&gt;pass(1)&lt;/code&gt; invocando-o sem argumentos:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ pass
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Para começar, iremos inicializar nosso armazenamento de senhas. Para nossas
próprias senhas, é necessário rodar o comando como o seu usuário e não como
root. Uma vez que o &lt;code&gt;pass(1)&lt;/code&gt; usa o GnuPG para a criptografia, também
precisaremos informá-lo a ID da chave apropriada que ele deve utilizar.
Lembre-se que você pode encontrar esse código hexadecimal de oito dígitos
digitando &lt;code&gt;gpg --list-secret-keys&lt;/code&gt;. Uma sequência de texto exclusiva que
identifique sua chave privada, como o seu nome ou endereço de email, também
pode funcionar.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ pass init 0x1FC2985D
mkdir: created directory ‘/home/tim/.password-store’
Password store initialized for 0x1FC2985D.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Notamos que, de fato, o diretório &lt;code&gt;~/.password-store&lt;/code&gt; foi criado, embora no
momento esteja vazio exceto pelo arquivo &lt;code&gt;.gpg-id&lt;/code&gt;, que mantém um registro da
ID de nossa chave:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ find .password-store
.password-store
.password-store/.gpg-id
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;inserindo-senhas&quot;&gt;Inserindo senhas&lt;/h2&gt;

&lt;p&gt;Vamos inserir uma senha existente com &lt;code&gt;pass insert&lt;/code&gt;, passando ao comando um
nome descritivo e hierárquico:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ pass insert google.com/gmail/exemplo@gmail.com
mkdir: created directory ‘/home/tim/.password-store/google.com’
mkdir: created directory ‘/home/tim/.password-store/google.com/gmail’
Enter password for google.com/gmail/exemplo@gmail.com:
Retype password for google.com/gmail/exemplo@gmail.com:
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;A senha é digitada e lida na linha de comando, criptografada e colocada em
&lt;code&gt;~/.password-store&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ find .password-store
.password-store
.password-store/google.com
.password-store/google.com/gmail
.password-store/google.com/gmail/exemplo@gmail.com.gpg
.password-store/.gpg-id
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Note que o &lt;code&gt;pass(1)&lt;/code&gt; cria uma estrutura de diretórios automaticamente. Podemos
obter uma boa visão do armazenamento das senhas com o comando &lt;code&gt;pass&lt;/code&gt;, sem
argumentos:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ pass
Password Store
└── google.com
    └── gmail
        └── exemplo@gmail.com
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;gerando-senhas&quot;&gt;Gerando senhas&lt;/h2&gt;

&lt;p&gt;Se, ao invés de inserir uma senha existente, você desejar gerar uma senha nova,
segura e aleatória, você pode usar o comando &lt;code&gt;generate&lt;/code&gt;, incluindo o seu
comprimento como último argumento:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ pass generate google.com/gmail/exemplo@gmail.com 16
The generated password to google.com/gmail/exemplo@gmail.com is:
!Q%i$$&amp;amp;q1+JJi-|X
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Se o site não aceitar símbolos na senha, você pode adicionar a opção &lt;code&gt;-n&lt;/code&gt; ao
comando:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ pass generate -n google.com/gmail/exemplo@gmail.com 16
The generated password to google.com/gmail/exemplo@gmail.com is:
pJeF18CrZEZzI59D
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;O &lt;code&gt;pass(1)&lt;/code&gt; usa o &lt;code&gt;pwgen(1)&lt;/code&gt; para gerar as senhas. Nos dois casos acima, ela é
automaticamente inserida no armazenamento.&lt;/p&gt;

&lt;p&gt;Se você precisa modificar uma senha existente, você pode tanto sobrescrevê-la
com o comando &lt;code&gt;insert&lt;/code&gt;, ou usar a operação &lt;code&gt;edit&lt;/code&gt; para chamar o &lt;code&gt;$EDITOR&lt;/code&gt; de
sua escolha:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ pass edit google.com/gmail/exemplo@gmail.com
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Caso utilize a opção &lt;code&gt;edit&lt;/code&gt;, você deve ser cuidadoso e ter certeza que seu
editor não está configurado para manter arquivos de backup ou de troca, em
texto plano, dos documentos que ele edita, em diretórios temporários ou em
sistemas de arquivos na memória. Caso esteja utilizando o Vim, eu &lt;a href=&quot;https://gist.github.com/tejr/5890634&quot;&gt;escrevi um
script&lt;/a&gt; para tentar resolver esse problema.&lt;/p&gt;

&lt;p&gt;Note que a adição ou mudança de senhas não requer a senha de sua chave privada;
apenas a sua recuperação a requer, consistente com a maneira como o GnuPG
normalmente trabalha.&lt;/p&gt;

&lt;h2 id=&quot;recuperando-senhas&quot;&gt;Recuperando senhas&lt;/h2&gt;

&lt;p&gt;A senha que adicionamos ao programa pode ser, agora, recuperada e impressa na
linha de comando, desde que digitemos a senha correta para nossa chave privada:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ pass google.com/gmail/exemplo@gmail.com
(...tela do gpg-agent pinentry...)
Tr0ub4dor&amp;amp;3
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Se você estiver utilizando o X Windows e o &lt;code&gt;xclip(1)&lt;/code&gt; estiver instalado, a
senha pode ser colocada temporariamente na área de transferência e colada em
formulários online:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ pass -c google.com/gmail/exemplo@gmail.com
Copied google.com/gmail/exemplo@gmail.com to clipboard. Will clear in 45 seconds.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Note que, em todos os casos, se as completações para o bash estiverem
instaladas e funcionando, é possível completar o caminho completo das senhas
usando a tecla &lt;code&gt;Tab &lt;/code&gt;, como se você estivesse navegando uma hierarquia de
diretórios.&lt;/p&gt;

&lt;h2 id=&quot;deletando-senhas&quot;&gt;Deletando senhas&lt;/h2&gt;

&lt;p&gt;Quando uma senha não é mais necessária, pode removê-la com &lt;code&gt;pass rm&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ pass rm google.com/gmail/exemplo@gmail.com
Are you sure you would like to delete google.com/gmail/exemplo@gmail.com? [y/N] y
removed ‘/home/tim/.password-store/google.com/gmail/exemplo@gmail.com.gpg’
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Podemos deletar diretórios de senhas inteiros com &lt;code&gt;pass rm -r&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ pass rm -r google.com
Are you sure you would like to delete google.com? [y/N] y
removed ‘/home/tim/.password-store/google.com/gmail/exemplo@gmail.com.gpg’
removed directory: ‘/home/tim/.password-store/google.com/gmail’
removed directory: ‘/home/tim/.password-store/google.com’
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;controle-de-versão&quot;&gt;Controle de versão&lt;/h2&gt;

&lt;p&gt;Para manter a história de nossas senhas, incluindo senhas que foram deletadas,
se algum dia precisarmos delas novamente, podemos configurar o controle de
versão automático com o comando &lt;code&gt;pass git init&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ pass git init
Initialized empty Git repository in /home/tim/.password-store/.git/
[master (root-commit) 0ebb933] Added current contents of password store.
 1 file changed, 1 insertion(+)
  create mode 100644 .gpg-id
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Esse comando irá atualizar o repositório sempre que uma senha é modificada, o
que significa que, sem dúvidas, seremos capazes de recuperar senhas antigas que
substituímos ou deletamos:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ pass insert google.com/gmail/novoexemplo@gmail.com
mkdir: created directory ‘/home/tim/.password-store/google.com’
mkdir: created directory ‘/home/tim/.password-store/google.com/gmail’
Enter password for google.com/gmail/novoexemplo@gmail.com:
Retype password for google.com/gmail/novoexemplo@gmail.com:
[master 00971b6] Added given password for google.com/gmail/novoexemplo@gmail.com to store.
 1 file changed, 0 insertions(+), 0 deletions(-)
  create mode 100644 google.com/gmail/novoexemplo@gmail.com.gpg
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;backups&quot;&gt;Backups&lt;/h2&gt;

&lt;p&gt;Uma vez que os arquivos contendo as senhas são todos criptografados com apenas
nossa chave do GnuPG, podemos armazenar um backup em sites de terceiros e em
computadores remotos, de maneira relativamente segura, simplesmente copiando o
diretório &lt;code&gt;~/.password-store&lt;/code&gt;. Por outro lado, se os nomes dos arquivos contém
informações confidenciais, tais como nomes de usuários ou sites privativos,
você pode realizar o backup de uma tarball criptografada do diretório:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ tar -cz .password-store \
    | gpg --sign --encrypt -r 0x1FC2985D \
    &amp;gt; password-store-backup.tar.gz.gpg
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;O diretório pode ser restaurado de forma similar:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ gpg --decrypt \
    &amp;lt; password-store-backup.tar.gz.gpg \
    | tar -xz 
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Essa entrada é a parte 6 de 10 na série &lt;a href=&quot;/2013/09/16/linux_cripto_intro/&quot;&gt;Criptografia no
Linux&lt;/a&gt;.&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>Criptografia no Linux: Agentes</title>
        <link>http://cabaladada.org/2013/09/30/linux_cripto_agentes/</link>
        <pubDate>Mon, 30 Sep 2013</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2013/09/30/linux_cripto_agentes/</guid>
        <description>&lt;p&gt;Este é o quinto post de uma série de dez posts traduzindo o original de Tom
Ryder, &lt;a href=&quot;http://blog.sanctum.geek.nz/series/linux-crypto/&quot;&gt;Linux Crypto&lt;/a&gt;. Essa série está sob uma licença &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;Creative
Commons 3.0&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Para a lista de posts, veja a &lt;a href=&quot;/2013/09/16/linux_cripto_intro/&quot;&gt;introdução&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Agora que o GnuPG e o SSH estão configurados seguramente, podemos criptografar,
descriptografar, assinar e verificar mensagens, e autenticar seguramente a
servidores remotos sem o risco de expor nossas senhas e com uma possibilidade
efetivamente nula de ataques de força bruta. Isso tudo é ótimo, mas ainda
existe um elo fraco em nossa corrente com o qual lidar — nossas senhas.&lt;/p&gt;

&lt;p&gt;Se você usa essas ferramentas com frequência, inserir nossa senha para a maior
parte das operações pode se tornar irritante. Podemos ficar tentados a incluir
um meio de automatizar a inserção da senha, ou simplesmente não usá-la,
deixando nossa chave privada descriptografada. Como usuários preocupados com a
segurança, nós definitivamente desejamos evitar a última possibilidade, caso o
arquivo de nossa chave privada seja roubado, e é aqui que o conceito de agentes
para o SSH e GnuPG entra.&lt;/p&gt;

&lt;p&gt;Um agente é um daemon projetado para otimizar o processo de usar chaves
privadas descriptografadas, guardando os detalhes seguramente na memória,
idealmente por um período limitado de tempo. Ele permite que você insira sua
senha do SSH ou GnuPG apenas uma vez e usos subsequentes que requerem a chave
privada descriptografada são gerenciados pelo agente.&lt;/p&gt;

&lt;p&gt;Neste artigo, discutiremos o básico da configuração de agentes para o SSH e o
GnuPG. Depois que você souber como eles funcionam, iremos apresentar uma
ferramenta conveniente para iniciá-los e gerenciá-los facilmente.&lt;/p&gt;

&lt;h2 id=&quot;agentes-para-o-ssh&quot;&gt;Agentes para o SSH&lt;/h2&gt;

&lt;p&gt;O programa &lt;a href=&quot;http://linux.die.net/man/1/ssh-agent&quot;&gt;&lt;code&gt;ssh-agent(1)&lt;/code&gt;&lt;/a&gt; vem como parte da &lt;a href=&quot;http://openssh.org/&quot;&gt;suíte
OpenSSH&lt;/a&gt;. Ele pode ser executado em dois modos, como parte de um
processo pai ou daemonizado e rodando no plano de fundo. Iremos discutir o
último método, uma vez que é mais comumente usado e mais flexível.&lt;/p&gt;

&lt;h3 id=&quot;instalação-e-configuração&quot;&gt;Instalação e configuração&lt;/h3&gt;

&lt;p&gt;Quando rodamos o &lt;code&gt;ssh-agent(1)&lt;/code&gt; pela primeira vez, seu comportamento é curioso:
ele não parece fazer nada além de soltar umas linhas de shell script
enigmático:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-EYqoH3qwfvbe/agent.28881; export SSH_AUTH_SOCK;
SSH_AGENT_PID=28882; export SSH_AGENT_PID;
echo Agent pid 28882;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;No entanto, podemos verificar que o daemon está rodando com o PID que ele
menciona:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ ps 28882
  PID TTY      STAT   TIME COMMAND
  28882 ?        Ss     0:00 ssh-agent
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Mas se ele está executando sem problemas, qual o problema do shell script que
ele produz? Por que ele não roda o script de uma vez?&lt;/p&gt;

&lt;p&gt;A resposta é uma interessante solução alternativa para a rigidez do modelo de
processos do Unix; especificamente, um processo não pode modificar seu ambiente
pai. As variáveis &lt;code&gt;SSH_AUTH_SOCK&lt;/code&gt; e &lt;code&gt;SSH_AGENT_PID&lt;/code&gt; são projetadas para
permitir que programas como o &lt;code&gt;ssh(1)&lt;/code&gt; encontrem o agente e possam se comunicar
com ele, então definitivamente precisamos atribuir valores a elas. No entanto,
se o &lt;code&gt;ssh-agent(1)&lt;/code&gt; tentasse configurá-las automaticamente, as configurações
seriam aplicadas apenas para seu próprio processo e não para o shell no qual o
executamos.&lt;/p&gt;

&lt;p&gt;Assim, além de executar o &lt;code&gt;ssh-agent(1)&lt;/code&gt;, precisamos executar o código que ele
imprime na tela para que as variáveis sejam atribuídas em nosso shell. Um bom
método para fazer isso em Bash é usar o &lt;code&gt;eval&lt;/code&gt; e a substituição de comando com
&lt;code&gt;$(...)&lt;/code&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ eval $(ssh-agent)
Agent 3954
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Se executarmos esse comando, vemos não apenas que o &lt;code&gt;ssh-agent(1)&lt;/code&gt; está
rodando, mas que temos duas novas variáveis em nosso ambiente identificando o
caminho de seu socket e a ID do processo:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ pgrep ssh-agent
3954
$ env | grep ^SSH
SSH_AUTH_SOCK=/tmp/ssh-oF1sg154ygSt/agent.3953
SSH_AGENT_PID=3954
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Com isso feito, o agente está pronto e podemos começar a usá-lo para gerenciar
nossas chaves.&lt;/p&gt;

&lt;h3 id=&quot;uso&quot;&gt;Uso&lt;/h3&gt;

&lt;p&gt;O próximo passo é carregar nossas chaves no agente com o
&lt;a href=&quot;http://linux.die.net/man/1/ssh-add&quot;&gt;&lt;code&gt;ssh-add(1)&lt;/code&gt;&lt;/a&gt;. Dê ao programa o caminho completo da chave privada que
o agente deve usar. O caminho é, provavelmente, &lt;code&gt;~/.ssh/id_rsa&lt;/code&gt; ou
&lt;code&gt;~/.ssh/id_dsa&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/tim/.ssh/id_rsa:
Identity added: /home/tim/.ssh/id_rsa (/home/tim/.ssh/id_rsa)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Você pode deixar esse argumento de lado se desejar que o &lt;code&gt;ssh-add&lt;/code&gt; adicione
todos os tipos de chave padrão em &lt;code&gt;~/.ssh&lt;/code&gt; caso elas existam (&lt;code&gt;id_dsa&lt;/code&gt;,
&lt;code&gt;id_rsa&lt;/code&gt; e &lt;code&gt;id_ecdsa&lt;/code&gt;):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ ssh-add
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;De qualquer maneira, sua senha será requerida; isso é esperado, e você deve
digitá-la.&lt;/p&gt;

&lt;p&gt;Se pedirmos ao &lt;code&gt;ssh-add(1)&lt;/code&gt; que liste as chaves que está gerenciando, veremos a
chave que acabamos de adicionar:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;i$ ssh-add -l
4096 87:ec:57:8b:ea:24:56:0e:f1:54:2f:6b:ab:c0:e8:56 /home/tim/.ssh/id_rsa (RSA)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Agora, caso tentemos conectar a outro servidor utilizando essa chave, não
teremos de providenciar nossa senha; seremos conectados imediatamente:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;tim@local:~$ ssh remoto
Welcome to remote.sanctum.geek.nz, running GNU/Linux!
tim@remoto:~$
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;O padrão do agente é manter as chaves permanentemente, até que ele seja parado
ou até que as chaves sejam explicitamente removidas, uma a uma, com o comando
&lt;code&gt;ssh-add -d &amp;lt;arquivo da chave&amp;gt;&lt;/code&gt;, ou até que todas sejam removidas de uma vez
com &lt;code&gt;ssh-add -D&lt;/code&gt;. Para os cautelosos, você pode configurar um tempo limite com
o comando &lt;code&gt;ssh-add -t&lt;/code&gt;. Por exemplo, para que o &lt;code&gt;ssh-add&lt;/code&gt; esqueça sobre as
chaves após duas horas, você pode executar:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ ssh-add -t 7200 ~/.ssh/id_rsa
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Para matar o agente completamente, você pode usar o comando &lt;code&gt;ssh-agent -k&lt;/code&gt;,
novamente com &lt;code&gt;eval $(...)&lt;/code&gt; envolvendo o comando:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ eval $(ssh-agent -k)
Agent pid 4501 killed
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Para se livrar do agente após sair de sua sessão, você pode considerar
adicionar o comando acimo ao script &lt;code&gt;~/.bash_logout&lt;/code&gt; ou similares.&lt;/p&gt;

&lt;h3 id=&quot;configuração-permanente&quot;&gt;Configuração permanente&lt;/h3&gt;

&lt;p&gt;Se você gostou do agente e ele torna o gerenciamento de suas chaves mais
conveniente, faz sentido colocá-lo num script de inicialização como o
&lt;code&gt;~/.bash_profile&lt;/code&gt;. Dessa maneira, o agente será iniciado a cada login e seremos
capazes de comunicar com ele a partir de qualquer subshell (&lt;code&gt;xterm&lt;/code&gt;, &lt;code&gt;screen&lt;/code&gt;,
ou o &lt;code&gt;tmux&lt;/code&gt;, se configurado apropriadamente):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;eval $(ssh-agent)
ssh-add ~/.ssh/id_rsa
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Em nosso próximo login num TTY, nossa senha será requerida e, a partir daí,
poderemos conectar a qualquer máquina usando as chaves gerenciadas pelo agente:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;tim@local:~$ ssh remoto
Welcome to remote.sanctum.geek.nz, running GNU/Linux!
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Se você deseja utilizar um gerenciador de desktop como o GDM ou o XDM, você
pode adicionar uma variável apontando para o programa
&lt;a href=&quot;http://linux.die.net/man/1/ssh-askpass&quot;&gt;&lt;code&gt;ssh-askpass(1)&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;eval $(ssh-agent)
export SSH_ASKPASS=/usr/bin/ssh-askpass
ssh-add ~/.ssh/id_rsa
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Se a variável &lt;code&gt;SSH_ASKPASS&lt;/code&gt; está atribuída como acima e &lt;code&gt;DISPLAY&lt;/code&gt; se refere a
um monitor em funcionamento, um simples aviso gráfico aparecerá, pedindo nossa
senha:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/ssh-askpass.png&quot; alt=&quot;ssh-askpass&quot; title=&quot;ssh-askpass em funcionamento&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Esse programa talvez tenha de ser instalado separadamente. Em sistemas
derivados do Debian, o nome do pacote é &lt;a href=&quot;http://packages.debian.org/stable/ssh-askpass&quot;&gt;&lt;code&gt;ssh-askpass&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Todos os processos filhos e subshells do shell de login irão herdar as
variáveis do agente, uma vez que foram exportadas utilizando o &lt;code&gt;export&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;tim@local:~$ screen
tim@local:~$ tmux bash
tim@local:~$ bash
tim@local:~$ ssh remote
Welcome to remote.sanctum.geek.nz, running GNU/Linux!
tim@remote:~$
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Dessa maneira, temos que digitar nossa senha apenas uma vez por sessão de login
e podemos conectar a todos os servidores aos quais nossas chaves conferem
acesso… Muito conveniente!&lt;/p&gt;

&lt;h2 id=&quot;agentes-do-gnupg&quot;&gt;Agentes do GnuPG&lt;/h2&gt;

&lt;p&gt;Assim como o &lt;code&gt;ssh-agent(1)&lt;/code&gt;, existe também um agente para gerenciar chaves do
GnuPG, chamado &lt;a href=&quot;http://linux.die.net/man/1/gpg-agent&quot;&gt;&lt;code&gt;gpg-agent(1)&lt;/code&gt;&lt;/a&gt;. O seu comportamento é muito
similar. Em sistemas derivados do Debian, ele pode ser instalado com o &lt;a href=&quot;http://packages.debian.org/stable/gnupg-agent&quot;&gt;pacote
&lt;code&gt;gnupg-agent&lt;/code&gt;&lt;/a&gt;. Você também deve instalar um programa de
&lt;code&gt;pinentry&lt;/code&gt; [entrada de PIN]; como estamos focando no aprendizado dos aspectos
básicos na linha de comando, utilizaremos o
&lt;a href=&quot;http://linux.die.net/man/1/pinentry-curses&quot;&gt;&lt;code&gt;pinentry-curses(1)&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# apt-get install gnupg-agent pinentry-curses
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id=&quot;configuração&quot;&gt;Configuração&lt;/h3&gt;

&lt;p&gt;Iniciaremos o agente usando o mesmo truque com &lt;code&gt;eval $(...)&lt;/code&gt; que aprendemos com
o &lt;code&gt;ssh-agent&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ eval $(gpg-agent --daemon)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Podemos verificar que o agente está rodando no plano de fundo com o PID
infomado e também que temos uma nova variável de ambiente:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ pgrep gpg-agent
5131
$ env | grep ^GPG
GPG_AGENT_INFO=/tmp/gpg-hbro8r/S.gpg-agent:5131:1
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Também iremos atribuir a variável &lt;code&gt;GPG_TTY&lt;/code&gt;, que informa o programa &lt;code&gt;pinentry&lt;/code&gt;
sobre o terminal no qual ele deve desenhar sua tela de inserção de senha:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ export GPG_TTY=$(tty)
$ echo $GPG_TTY
/dev/pts/2
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Finalmente, para estimular o &lt;code&gt;gpg(1)&lt;/code&gt; a realmente usar o agente, precisamos
adicionar uma linha aqui arquivo &lt;code&gt;~/.gnupg/gpg.conf&lt;/code&gt;. Você pode criar esse
arquivo, caso ele não exista.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;use-agent
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id=&quot;uso-1&quot;&gt;Uso&lt;/h3&gt;

&lt;p&gt;Isso feito, caso tentemos realizar qualquer operação que requeira nossa chave
privada, a senha será requerida não diretamente na linha de comando, mas por
nosso programa de entrada de PIN:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ gpg --armor --sign mensagem1.txt

┌──────────────────────────────────────────────────────────┐
│ You need a passphrase to unlock the secret key for user: │
│ &quot;Timoteo Aspargos (taspargos) &amp;lt;taspargos@exemplo.com.br&amp;gt;&quot;│
│ 4096-bit RSA key, ID 25926609, created 2013-08-22        │
│ (main key ID 1FC2985D)                                   │
│                                                          │
│                                                          │
│ Passphrase ***__________________________________________ │
│                                                          │
│       &amp;lt;OK&amp;gt;                                 &amp;lt;Cancel&amp;gt;      │
└──────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Após inserirmos a senha, a operação é realizada:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ ls mensagem1*
mensagem1.txt
mensagem1.txt.asc
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Mais tarde, se realizarmos outra opção que requeira a chave privada, veremos
que a senha não é pedida:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ gpg --armor --sign mensagem2.txt
$ ls mensagem2*
mensagem2.txt
mensagem2.txt.asc
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;O agente armazenou nossa chave privada em cache, tornando muito mais fácil
realizar uma série de operações utilizando-a. O tempo limite padrão é de 10
minutos, mas você pode mudá-lo com as configurações &lt;code&gt;default-cache-ttl&lt;/code&gt; e
&lt;code&gt;max-cache-ttl&lt;/code&gt; em &lt;code&gt;~/.gnupg/gpg-agent.conf&lt;/code&gt;. Por exemplo, para reter a chave
privada por uma hora após o seu último uso, com um máximo de duas horas a
partir do primeiro uso, escreveríamos:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;default-cache-ttl 3600
max-cache-ttl 7200
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Para que esses valores façam efeito, precisamos recarregar o agente:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ gpg-connect-agent &amp;lt;&amp;lt;&amp;lt;RELOADAGENT
OK
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id=&quot;configuração-permanente-1&quot;&gt;Configuração permanente&lt;/h3&gt;

&lt;p&gt;Assim como o &lt;code&gt;ssh-agent(1)&lt;/code&gt;, um local ideal para o código de inicialização do
&lt;code&gt;gpg-agent(1)&lt;/code&gt; é um script de login como o &lt;code&gt;~/.bash_profile&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;eval $(gpg-agent --daemon)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;O agente será iniciado e todas as suas variáveis de ambiente serão atribuídas
para todos os subshells, assim como com o &lt;code&gt;ssh-agent&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Se você estiver usando uma ferramenta de entrada de PIN, você também deve
adicionar o seguinte ao fim de seu script de inicialização interativo. No
Linux, ele é arquivo &lt;code&gt;~/.bashrc&lt;/code&gt;; no Mac OS X, você talvez precise colocá-lo em
&lt;code&gt;~/.bashrc&lt;/code&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;export GPG_TTY=$(tty)
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;keychain&quot;&gt;Keychain&lt;/h2&gt;

&lt;p&gt;Para gerenciar tanto o &lt;code&gt;ssh-agent(1)&lt;/code&gt; quanto o &lt;code&gt;gpg-agent(1)&lt;/code&gt; eficientemente,
existe uma ferramenta chamada &lt;code&gt;keychain(1)&lt;/code&gt;. Ela fornece uma maneira simples de
iniciar ambos os agentes com um único comando, incluindo carregar as chaves
durante a inicialização. Ele também evita que qualquer um dos agentes seja
executado duas vezes, identificando agentes inciados em outros locais do
sistema. Muitos ambientes de desktop são configurados para iniciar um ou ambos
os agentes, por isso faz sentido reutilizá-los quando possível, e nisso o
&lt;code&gt;keychain(1)&lt;/code&gt; se sobressai.&lt;/p&gt;

&lt;p&gt;Em sistemas baseados no Debian, o programa está disponível no &lt;a href=&quot;http://packages.debian.org/stable/keychain&quot;&gt;pacote
&lt;code&gt;keychain&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# apt-get install keychain
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Com o &lt;code&gt;keychain&lt;/code&gt; instalado, podemos iniciar ambos os agentes com apenas um
comando em &lt;code&gt;~/.bash_profile&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;eval $(keychain --eval)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Opcionalmente, podemos incluir os nomes dos arquivos das chaves SSH em &lt;code&gt;~/.ssh&lt;/code&gt;
ou das IDs em hexadecimal das chaves do GnuPG como argumentos para o
carregamento imediato das chaves privadas (incluindo a solicitação das senhas)
durante a inicialização.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;eval $(keychain --eval id_rsa 0x1FC2985D)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Se esse programa estiver disponível em seu sistema, ele é altamente
recomendável; gerenciar seus agentes e ambientes pode ser trabalhoso, e o
&lt;code&gt;keychain(1)&lt;/code&gt; faz todo o trabalho duro, sem que você tenha de se preocupar se
um agente está disponível em seu contexto em particular. Confira &lt;a href=&quot;http://www.funtoo.org/Keychain&quot;&gt;a página do
projeto&lt;/a&gt; para mais informações sobre essa ferramenta.&lt;/p&gt;

&lt;p&gt;Essa entrada é a parte 5 de 10 na série &lt;a href=&quot;/2013/09/16/linux_cripto_intro/&quot;&gt;Criptografia no
Linux&lt;/a&gt;.&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>Criptografia no Linux: Chaves SSH</title>
        <link>http://cabaladada.org/2013/09/27/linux_cripto_chaves_ssh/</link>
        <pubDate>Fri, 27 Sep 2013</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2013/09/27/linux_cripto_chaves_ssh/</guid>
        <description>&lt;p&gt;Este é o quarto post de uma série de dez posts traduzindo o original de Tom
Ryder, &lt;a href=&quot;http://blog.sanctum.geek.nz/series/linux-crypto/&quot;&gt;Linux Crypto&lt;/a&gt;. Essa série está sob uma licença &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;Creative
Commons 3.0&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Para a lista de posts, veja a &lt;a href=&quot;/2013/09/16/linux_cripto_intro/&quot;&gt;introdução&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;O método mais comum de autenticação a um servidor OpenSSH é a inserção de sua
senha na máquina remota:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;tim@local:~$ ssh remoto
The authenticity of host &apos;remoto (192.168.0.64)&apos; can&apos;t be established.
RSA key fingerprint is d1:35:45:a6:d1:b2:e4:08:f8:67:b1:19:fe:04:ca:1c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added &apos;remoto,192.168.0.64&apos; (RSA) to the list of known hosts.
tim@remoto&apos;s password:

tim@remoto:~$
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Esse método é apropriado para o primeiro contato com a máquina e é suportado de
fábrica pelo &lt;code&gt;sshd(8)&lt;/code&gt; na maior parte das instalações do OpenSSH.&lt;/p&gt;

&lt;p&gt;O &lt;code&gt;sshd(8)&lt;/code&gt; é um alvo muito comum de ataques, particularmente de ataques
automáticos. Bots mal-intencionados tentam se conectar a servidores escutando a
porta padrão do SSH, &lt;code&gt;tcp/22&lt;/code&gt;, bem como algumas alternativas comuns, como a
&lt;code&gt;tcp/2222&lt;/code&gt;. Se você impor uma política de senhas altamente seguras em seu
sistema, isso geralmente não é um grande problema, especialmente se apenas os
usuários apropriados possuírem acesso à linha de comando, ou se você restringir
as conexões SSH a certos usuários ou grupos.&lt;/p&gt;

&lt;p&gt;Existem outras medidas para se defender contra ataques automáticos, tais como a
aplicação de sistemas como o &lt;a href=&quot;http://www.fail2ban.org/&quot;&gt;fail2ban&lt;/a&gt;, que rejeita clientes que
realizam muitas tentativas falhas de conexão. No entanto, a maneira
possivelmente mais efetiva de sabotar ataques automáticos é ignorar
completamente as senhas e utilizar &lt;strong&gt;chaves SSH&lt;/strong&gt;, permitindo apenas esse
método de conexão às máquinas relevantes.&lt;/p&gt;

&lt;h2 id=&quot;como-as-chaves-funcionam&quot;&gt;Como as chaves funcionam&lt;/h2&gt;

&lt;p&gt;Assim como na configuração de chaves para o GnuPG nos dois primeiros artigos
desta série, pares de chaves SSH são compostos de uma &lt;strong&gt;chave privada&lt;/strong&gt; e uma
&lt;strong&gt;chave pública&lt;/strong&gt;, dois arquivos vinculados criptograficamente. As chaves para
autenticação são baseadas na ideia de que se alguém possui sua chave pública,
essa pessoa é capaz de autenticá-lo ao requerer operações que podem ser
realizadas apenas com a chave privada correspondente; o funcionamento é similar
à &lt;strong&gt;assinatura&lt;/strong&gt; criptográfica.&lt;/p&gt;

&lt;p&gt;Esse método é efetivo pois requer uma chave pública válida para realizar a
autenticação. Com uma chave longa o suficiente, torna-se efetivamente
impossível que um invasor adivinhe seus detalhes de autenticação; não existe
uma chave privada “comum” para adivinhar. Desse modo, os invasores teriam de
testar todas as chaves públicas possíveis, o que não é nem remotamente prático.&lt;/p&gt;

&lt;p&gt;O &lt;code&gt;sshd(8)&lt;/code&gt; de seu sistema ainda pode ser atacado, mas caso utilize apenas a
autenticação por chave pública, você pode estar confortavelmente certo de que é
&lt;em&gt;efetivamente impossível&lt;/em&gt; descobrir suas credenciais usando ataques de força
bruta. Note, no entanto, que isso não necessariamente te protege contra
problemas de segurança no próprio &lt;code&gt;ssh(8)&lt;/code&gt;, e você ainda deve proteger sua
chave privada de ser roubada, daí a necessidade de uma senha.&lt;/p&gt;

&lt;p&gt;Todas as informações abaixo supõe que você tenha o OpenSSH instalado tanto como
cliente quanto como servidor nos sistemas apropriados. Em sistemas derivados do
Debian, ambos podem ser instalados com:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# apt-get install ssh
# apt-get install openssh-server
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Frequentemente, tanto o cliente quanto o servidor vêm instalados por padrão
(por exemplo, no &lt;a href=&quot;http://www.openbsd.org/&quot;&gt;OpenBSD&lt;/a&gt;).&lt;/p&gt;

&lt;h2 id=&quot;gerando-as-chaves&quot;&gt;Gerando as chaves&lt;/h2&gt;

&lt;p&gt;Assim como no processo de configuração do GnuPG, começamos gerando um par de
chaves na máquina a partir da qual queremos conectar, usando o
&lt;a href=&quot;http://linux.die.net/man/1/ssh-keygen&quot;&gt;&lt;code&gt;ssh-keygen(1)&lt;/code&gt;&lt;/a&gt;. Irei utilizar uma chave RSA de 4096 bits neste
artigo, já que ela é suportada mesmo em sistemas muito antigos, e deve ser
relativamente à prova de quebras no futuro, embora gerar novas chaves caso um
dia o RSA se torne inseguro não seja difícil. Se você preferir usar o novo
algorítimo &lt;a href=&quot;http://en.wikipedia.org/wiki/Elliptic_Curve_DSA&quot;&gt;ECDSA&lt;/a&gt;, que é o padrão em versões recentes do
OpenSSH, os passos a seguir ainda irão funcionar. Também utilizarei um
&lt;strong&gt;comentário&lt;/strong&gt; para a chave como um identificador não criptografado, para
distingui-la de outras chaves, caso eu tenha mais de uma. No meu caso,
endereços de email funcionam bem.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ ssh-keygen -t rsa -b 4096 -C taspargos@exemplo.com.br
Generating public/private rsa key pair.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Primeiramente, a localização onde as chaves devem ser salvadas é solicitada.
Recomendo aceitar o padrão pressionando Enter, uma vez que usar a localização
padrão torna os próximos poucos passos mais fáceis:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Enter file in which to save the key (/home/tim/.ssh/id_rsa):
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;A seguir, uma senha é solicitada, e devemos definitivamente adicionar uma para
garantir que a chave não será usada caso seja um dia comprometida. As mesmas
orientações para senhas aplicam nesse caso, e você deve escolher uma senha
diferente:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Enter passphrase (empty for no passphrase):
Enter same passphrase again:
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Isso feito, uma chave é gerada, incluindo uma representação pictórica que
permite o reconhecimento das chaves com um breve olhar. Nunca achei essa
representação muito útil, mas o fingerprint da chave é:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Your identification has been saved in /home/tim/.ssh/id_rsa.
Your public key has been saved in /home/tim/.ssh/id_rsa.pub.
The key fingerprint is:
d5:81:8c:eb:c6:c5:a2:b9:6a:ae:32:cc:20:bf:cf:66 tim@local
The key&apos;s randomart image is:
+--[ RSA 4096]----+
|         o ..    |
|        . o. .   |
|         o. .    |
|        o.o      |
|       =So       |
|o     o +        |
|=.     o         |
|oo..E .          |
| ooO=.           |
+-----------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;As chaves devem estar disponíveis em &lt;code&gt;~/.ssh&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ ls -l .ssh
-rw-------  1 tim  tim  3326 Apr  2 22:47 id_rsa
-rw-r--r--  1 tim  tim   754 Apr  2 22:47 id_rsa.pub
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;O arquivo &lt;code&gt;id_rsa&lt;/code&gt; contém a chave privada criptografada, e deve ser mantido
bloqueado e confidencial. O arquivo &lt;code&gt;id_rsa_pub&lt;/code&gt;, no entanto, contém a chave
pública, que pode ser distribuída com segurança, da mesma maneira que uma chave
pública PGP.&lt;/p&gt;

&lt;h2 id=&quot;autenticação-baseada-em-chaves&quot;&gt;Autenticação baseada em chaves&lt;/h2&gt;

&lt;p&gt;Agora, podemos nos preparar para usar a chave pública recém-gerada para a
autenticação, em lugar de uma senha. Em primeiro lugar, garanta que você
consegue se conectar à máquina remota com seu nome de usuário e senha:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ ssh remoto
tim@remoto&apos;s password:
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Quando você estiver conectado, garanta que o diretório &lt;code&gt;~/.ssh&lt;/code&gt; existe na
máquina remota e que você não tenha chaves já listadas no arquivo
&lt;code&gt;~/.ssh/authorized_keys&lt;/code&gt;, uma vez que iremos sobrescrevê-las:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ mkdir -p ~/.ssh
$ chmod 0700 ~/.ssh
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Se os passos acima funcionarem, feche a conexão (&lt;code&gt;exit&lt;/code&gt; ou &lt;code&gt;Ctrl-D&lt;/code&gt;) para
retornar à linha de comando de sua máquina local e copie sua chave pública na
máquina remota com o &lt;a href=&quot;http://linux.die.net/man/1/scp&quot;&gt;&lt;code&gt;scp(1)&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ scp ~/.ssh/id_rsa.pub remoto:.ssh/authorized_keys
tim@remoto&apos;s password:
id_rsa.pub    100%    754    0.7KB/s    00:00
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Note que existe uma ferramenta, chamada &lt;a href=&quot;http://blog.sanctum.geek.nz/shortcut-for-adding-ssh-keys/&quot;&gt;&lt;code&gt;ssh-copy-ip(1)&lt;/code&gt;&lt;/a&gt;
incluída nas versões mais recentes do OpenSSH que faz as operações acima
automaticamente, mas é bom ter uma ideia do que ela faz por trás dos panos.&lt;/p&gt;

&lt;p&gt;Com isso feito, sua próxima tentativa de conexão ao servidor remoto deve
solicitar a senha da sua chave, ao invés de sua senha de usuário:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ ssh remote
Enter passphrase for key &apos;/home/tim/.ssh/id_rsa&apos;:
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;vantagens&quot;&gt;Vantagens&lt;/h2&gt;

&lt;p&gt;A princípio, pode parecer que você não fez nada de útil. Afinal de contas, você
ainda tem que digitar algo toda vez que conecta. Do ponto de vista da
segurança, a primeira vantagem desse método é que nem a sua senha de usuário,
nem a senha da chave, nem sua chave privada são transmitidas ao servidor ao
qual você está conectando; a autenticação é feita puramente baseado no par de
chaves pública-privada, descriptografado com a senha da chave.&lt;/p&gt;

&lt;p&gt;Assim, se a máquina ao qual você estiver conectando for comprometida, ou se o
seu DNS for envenenado, ou algum ataque similar induzi-lo a conectar a um
daemon SSH falso, projetado para coletar credenciais, sua chave privada e sua
senha continuam seguras.&lt;/p&gt;

&lt;p&gt;A segunda vantagem vem com o desligamento completo da autenticação por senha na
máquina remota, desde que todos os seus usuários estejam usando apenas a
autenticação por chave pública. Esse desligamento é feito com as seguintes
configurações no arquivo &lt;a href=&quot;http://linux.die.net/man/5/sshd_config&quot;&gt;&lt;code&gt;sshd_config(5)&lt;/code&gt;&lt;/a&gt;, geralmente encontrado
em &lt;code&gt;/etc/ssh/sshd_config&lt;/code&gt; no servidor remoto:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;PubkeyAuthentication yes
ChallengeResponseAuthentication no
PasswordAuthentication no
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Reinicie o servidor SSH após aplicar essas configurações:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ sudo /etc/init.d/ssh restart
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Assim, você não será mais capaz de conectar usando senhas, apenas chaves
privadas que são, como mencionado acima, efetivamente (mas não literalmente)
impossíveis de quebrar usando ataques de força bruta. Para conectar ao servidor
com suas credenciais, um invasor teria não apenas de saber sua senha, mas
também ter acesso a sua chave privada, tornando as coisas significantemente
mais difíceis.&lt;/p&gt;

&lt;p&gt;O uso da autenticação por chave pública também permite ao &lt;code&gt;sshd(8)&lt;/code&gt; um controle
refinado sobre a autenticação, tal como quais computadores podem conectar com
quais chaves, se eles podem executar túneis TCP ou X11, e (até um ponto) quais
comandos podem ser executados uma vez conectado. Veja a página do manual do
&lt;a href=&quot;http://linux.die.net/man/5/authorized_keys&quot;&gt;&lt;code&gt;authorized_keys(5)&lt;/code&gt;&lt;/a&gt; para dar uma olhada em alguns exemplos.&lt;/p&gt;

&lt;p&gt;Finalmente, existe uma importante vantagem de usabilidade ao usar chaves SSH
para a autenticação usando os &lt;strong&gt;agentes&lt;/strong&gt;, que iremos discutir no próximo
artigo.&lt;/p&gt;

&lt;h2 id=&quot;chaves-do-servidor-e-fingerprints&quot;&gt;Chaves do servidor e fingerprints&lt;/h2&gt;

&lt;p&gt;Uma conexão SSH deve ser, idealmente, um processo de autenticação de duas vias.
Assim como o servidor ao qual você está se conectando precisa estar certo da
sua identidade, você precisa estar certo de que o servidor ao qual você está se
conectando é o esperado. Com truques como tunnelling, firewalls, envenenamento
de DNS, NAT, sistemas hackeados, entre outros, é apropriado ter cuidado de que
você está se conectando aos sistemas certos. É aí que entra o sistema de chaves
de servidor do OpenSSH.&lt;/p&gt;

&lt;p&gt;A primeira vez que você se conecta a um novo servidor, você deve ver uma
mensagem como essa:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ ssh novoremoto
The authenticity of host &apos;novoremoto (192.168.0.65)&apos; can&apos;t be established.
RSA key fingerprint is f4:4b:f4:8c:c5:50:f6:c8:d3:b2:e9:14:68:86:b5:7b.
Are you sure you want to continue connecting (yes/no)?
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Muitos administrados as desligam, mas não faça isso! Elas são muito
importantes.&lt;/p&gt;

&lt;p&gt;A &lt;em&gt;fingerprint de uma chave&lt;/em&gt; é um hash relativamente curto da chave de servidor
usada pelo OpenSSH naquela máquina. Ela é verificada pelo seu cliente SSH e não
pode ser facilmente falsificada. Se você está se conectando a um novo servidor,
é apropriado checar se a fingerprint da chave de servidor corresponde àquela
que você vê na primeira tentativa de conexão, ou pedir ao administrador do
sistema para que ele o faça.&lt;/p&gt;

&lt;p&gt;A fingerprint de chave do servidor pode ser checada no servidor SSH executando
&lt;code&gt;ssh-keygen(1)&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ ssh-keygen -lf /etc/ssh/ssh_host_rsa_key
2048 f4:4b:f4:8c:c5:50:f6:c8:d3:b2:e9:14:68:86:b5:7b /etc/ssh/ssh_host_rsa_key.pub (RSA)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Se você desejar, é possível checar a chave sem realizar uma tentativa de
conexão com um comando similar no cliente:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ ssh-keygen -lF novoremoto
# Host 192.168.0.65 found: line 1 type RSA
2048 f4:4b:f4:8c:c5:50:f6:c8:d3:b2:e9:14:68:86:b5:7b novoremoto (RSA)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Se você não consegue checar a chave de servidor, peça ao administrador que a
envie num canal seguro e confiável, como em pessoa ou via uma mensagem assinada
usando o PGP. Se a fingerprint SSH delimitada por dois pontos não for
exatamente a mesma, você pode ser vítima de alguém tentando fraudar sua
conexão!&lt;/p&gt;

&lt;p&gt;Essa prática pode ser exagerada para máquinas virtuais novas e provavelmente
máquinas novas numa LAN confiável, mas para máquina acessadas através da
internet pública, ela é muito prudente.&lt;/p&gt;

&lt;p&gt;De maneira similar, o &lt;code&gt;ssh(1)&lt;/code&gt;, por padrão, mantém um registro das chaves de
servidor dos computadores aos quais você já se conectou. Por esse motivo,
quando uma chave de servidor diferente é apresentada numa tentativa de conexão,
o programa mostra um aviso:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ ssh novoremoto
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
d7:06:51:16:80:f6:32:b4:35:7c:53:8d:5a:49:69:ec
Please contact your system administrator.
Add correct host key in /home/tim/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/tim/.ssh/known_hosts:22
RSA host key for novoremoto has changed and you have requested strict checking.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Novamente, esse aviso é algo que usuários do &lt;code&gt;ssh(1)&lt;/code&gt; frequentemente desligam,
o que é bastante arriscado, especialmente se você estiver usando a autenticação
por senha e, consequentemente, pode enviar sua senha a um servidor
mal-intencionado ou comprometido!&lt;/p&gt;

&lt;p&gt;Essa entrada é a parte 4 de 10 na série &lt;a href=&quot;/2013/09/16/linux_cripto_intro/&quot;&gt;Criptografia no
Linux&lt;/a&gt;.&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>Criptografia no Linux: Usando o GnuPG</title>
        <link>http://cabaladada.org/2013/09/23/linux_cripto_gnupg_uso/</link>
        <pubDate>Mon, 23 Sep 2013</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2013/09/23/linux_cripto_gnupg_uso/</guid>
        <description>&lt;p&gt;Este é o terceiro post de uma série de dez posts traduzindo o original de Tom
Ryder, &lt;a href=&quot;http://blog.sanctum.geek.nz/series/linux-crypto/&quot;&gt;Linux Crypto&lt;/a&gt;. Essa série está sob uma licença &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;Creative
Commons 3.0&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Para a lista de posts, veja a &lt;a href=&quot;/2013/09/16/linux_cripto_intro/&quot;&gt;introdução&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Com nossas chaves privada e públicas criadas e guardadas, podemos começar a
usar alguns dos recursos do GnuPG para assinar, verificar, criptografar e
descriptografar arquivos e mensagens para distribuição em canais não
confiáveis, como a internet.&lt;/p&gt;

&lt;h2 id=&quot;assinando-uma-mensagem-ou-arquivo-de-texto&quot;&gt;Assinando uma mensagem ou arquivo de texto&lt;/h2&gt;

&lt;p&gt;Começaremos assinando um simples arquivo de texto, usando a opção
&lt;code&gt;--clearsign&lt;/code&gt;. Ela inclui a assinatura na mensagem, o que significa que podemos
distribuí-la para outras pessoas lerem. Esse é o conteúdo de &lt;code&gt;mensagem.txt&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Essa é uma mensagem pública de Timoteo Aspargos.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Assinamos a mensagem com nossa nova chave privada da seguinte maneira:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ gpg --clearsign mensagem.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Nossa senha da chave privada é solicitada:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;You need a passphrase to unlock the secret key for
user: &quot;Timoteo Aspargos (Apenas para teste) &amp;lt;taspargos@exemplo.com.br&amp;gt;&quot;
4096-bit RSA key, ID 1FC2985D, created 2013-08-22
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Após provê-la, o arquivo &lt;code&gt;mensagem.txt.asc&lt;/code&gt; é criado, com seções do PGP e uma
assinatura ASCII em texto plano:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Essa é uma mensagem pública de Timoteo Aspargos
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.21 (GNU/Linux)

iQIcBAEBCAAGBQJSFqZjAAoJENq55KAfwphdJcYQAM1xBX1fU91rSKBH05MDpKNp
l+y834JPR4P1Zwp6pK0BMXBxfL+xk4V7DAMXOmw6iFpGsxhW/f3ehnIPghH5PkLs
FbdHTWFrxuGBge0B+f7AwAaVabvbcgSL3H7F3QxxXcrdWCajlbX+zKx5o+DlKYMC
uQK0yczfUS0WBTnRMFb//NW7HrS9DU6hydAjNV3+m/NJXvOmh5H2H6dvJM8hxfPR
MdmEYJ8gHPTXIwd+Xtt+0VlwPLOMD76S3S3rpaC5taM7qbxvya/xmvlxDqRIo3sP
Az1552h86HPJEjDg2j5sF6YCvVl5Aq2dJfPqVy4ZuB7wyaKhk2JIFgIs/M4VFptH
AvJaE5FcMdAhz3eWHdCIqvSuTjmf/ZXn8BlbMugkSitKzbUvxVGoPv/gYzMKJhIl
SFCeyJxGl1t6tKYK3iXh+Ady4AzscjYXcfK9yCPtkITPQyRYN51qBDNWR55Raznf
SybLYbRRdiZz7XuiUozy+CjvduEjw3bmFFOwpE9HCkQeyu+PPf3PszbhFcm8Wav2
OM3fmLhCEcFnIh/mIn/SveTE8Br9tyHJpSmk11sWjPFkT+fAKDTq5YeIZHXVk2Av
X6P8Lxenfuj0+Grk8DEZnA3bTmNP52+kJ0v2UrdjIcheigPXrY5pY0iBOdG+/S1k
MUN9XbXKNxrx4CAwDKXY
=Lmvn
-----END PGP SIGNATURE-----
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Note que a mensagem em si é nitidamente legível; ela não está criptografada,
apenas verificada como escrita por uma pessoa em particular e não alterada
desde então.&lt;/p&gt;

&lt;p&gt;Agora, qualquer um que tenha sua chave pública no chaveiro (como nós mesmos)
pode verificar que ela foi realmente escrita por nós:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ gpg --verify mensagem.txt.asc
gpg: Signature made Qui 22 Ago 2013 21:01:39 BRT using RSA key ID 1FC2985D
gpg: Good signature from &quot;Timoteo Aspargos (Apenas para teste) &amp;lt;taspargos@exemplo.com.br&amp;gt;&quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Se alguém adulterar a mensagem, mesmo que remova apenas um ponto final de uma
frase, a verificação falhará, sugerindo que a mensagem foi alterada:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ gpg --verify mensagem.txt.asc
gpg: Signature made Qui 22 Ago 2013 21:01:39 BRT using RSA key ID 1FC2985D
gpg: BAD signature from &quot;Timoteo Aspargos (Apenas para teste) &amp;lt;taspargos@exemplo.com.br&amp;gt;&quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;assinando-e-verificando-arquivos-binários&quot;&gt;Assinando e verificando arquivos binários&lt;/h2&gt;

&lt;p&gt;Para todos os outros arquivos, provavelmente teremos de criar um arquivo de
assinatura separado com uma &lt;strong&gt;assinatura avulsa&lt;/strong&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ gpg --armor --detach-sign arquivo.tar.gz
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;O comando produz um arquivo chamado &lt;code&gt;arquivo.tar.gz.asc&lt;/code&gt; no mesmo diretório,
contendo a assinatura. Usamos &lt;code&gt;--armor&lt;/code&gt; para deixar a assinatura em ASCII, o
que a torna mais longa porém mais fácil para a distribuição online.&lt;/p&gt;

&lt;p&gt;Nesse caso, tanto o arquivo quanto a assinatura são necessários para a
verificação; coloque o arquivo de assinatura em primeiro lugar quando for
checar, dessa maneira:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ gpg --verify arquivo.tar.gz.asc arquivo.tar.gz
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Você pode usar esse método para verificar software baixado de fontes
confiáveis, como do &lt;a href=&quot;http://httpd.apache.org/dev/verification.html&quot;&gt;time de desenvolvimento do Apache HTTPD&lt;/a&gt;.
Primeiramente, faríamos o download e importaríamos todas as chaves públicas a
partir da URL que o time indica:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ wget http://www.apache.org/dist/httpd/KEYS
$ gpg --import KEYS
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Poderíamos, então, baixar uma versão do Apache HTTPD, juntamente de sua chave,
de um espelho arbitrário:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ wget http://www.example.com/apache/httpd/httpd-2.4.4.tar.gz
$ wget https://www.apache.org/dist/httpd/httpd-2.4.4.tar.gz.asc
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Podemos, então, usar a chave e a assinatura para verificar que essa é uma cópia
não comprometida do arquivo original assinado pelos desenvolvedores:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ gpg --verify httpd-2.4.4.tar.gz.asc httpd-2.4.4.tar.gz
gpg: Signature made Tue 19 Feb 2013 09:28:39 NZDT using RSA key ID 791485A8
gpg: Good signature from &quot;Jim Jagielski (Release Signing Key) &amp;lt;jim@apache.org&amp;gt;&quot;
gpg:                 aka &quot;Jim Jagielski &amp;lt;jim@jaguNET.com&amp;gt;&quot;
gpg:                 aka &quot;Jim Jagielski &amp;lt;jim@jimjag.com&amp;gt;&quot;
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: A93D 62EC C3C8 EA12 DB22  0EC9 34EA 76E6 7914 85A8
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Note que a saída do &lt;code&gt;gpg&lt;/code&gt; adverte que essa ainda não é uma garantia perfeita de
que a versão de fato veio de Jim Jaielski, porque nunca o encontramos e não
podemos absolutamente, definitivamente dizer que essa é sua chave pública. No
entanto, ao buscá-lo nos servidores públicos de chaves, podemos ver que muitos
outros dos desenvolvedores do Apache assinaram sua chave, o que parece
promissor. Mas nós sabemos quem &lt;em&gt;eles&lt;/em&gt; são?&lt;/p&gt;

&lt;p&gt;Quando baixamos de espelhos, apesar da falta de certeza absoluta, essa
verificação é muito melhor (e torna mais difícil explorar falhas de segurança)
do que simplesmente baixar sem validar ou executar uma soma de verificação,
dado que a assinatura e o arquivo &lt;code&gt;KEYS&lt;/code&gt; foi baixado do próprio site da Apache.&lt;/p&gt;

&lt;p&gt;Você terá de decidir por si só &lt;a href=&quot;http://www.gnupg.org/gph/en/manual.html#AEN335&quot;&gt;qual o grau de certeza
necessário&lt;/a&gt; para confiar que a chave pública de alguém
realmente corresponde a essa pessoa. Esse grau de certeza pode se estender até
o ponto de combinar um encontro com essa pessoa, verificando sua identidade com
documentos de identificação expedidos pelo governo!&lt;/p&gt;

&lt;h2 id=&quot;criptografando-um-arquivo&quot;&gt;Criptografando um arquivo&lt;/h2&gt;

&lt;p&gt;Podemos criptografar um arquivo de maneira que apenas as pessoas nomeadas
possam descriptografá-lo e lê-lo. Nesse caso, devemos criptografá-lo não com
nossa própria chave privada, mas com a chave pública do destinatário. Dessa
maneira, apenas ele será capaz de descriptografar o arquivo usando sua chave
privada.&lt;/p&gt;

&lt;p&gt;Esse é o conteúdo do arquivo &lt;code&gt;mensagem-secreta.txt&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Essa é uma mensagem secreta de Timoteo Aspargos.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Agora, precisamos de pelo menos um destinatário. Digamos que essa mensagem é
destinada ao meu amigo, João Público. Ele me entregou sua chave pública, em
pessoa, em um arquivo chamado &lt;code&gt;joao-publico.asc&lt;/code&gt; num pendrive; ele trouxe até
mesmo a sua carta de motorista e sua certidão de nascimento (o que é estranho,
porque o conheço desde que tinha quatro anos de idade).&lt;/p&gt;

&lt;p&gt;Para começar, irei importar sua chave para meu chaveiro:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ gpg --import joao-publico.asc
gpg: key 695195A5: public key &quot;João Público (Chave principal) &amp;lt;joaopublico@exemplo.com.br&amp;gt;&quot; imported
gpg: Número total processado: 1
gpg:               imported: 1  (RSA: 1)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Agora podemos criptografar a mensagem para que apenas o João leia. Gosto de
usar o código hexadecimal de oito dígitos para o &lt;code&gt;--recipient&lt;/code&gt;, para ter
certeza de que selecionei a pessoa certa. Você pode ver esse código na saída
acima, ou na saída de &lt;code&gt;gpg --list-keys&lt;/code&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ gpg --armor --recipient 695195A5 --encrypt mensagem-secreta.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;A mensagem secreta é gravada em &lt;code&gt;mensagem-secreta.txt.asc&lt;/code&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.10 (GNU/Linux)

hQEMAxiBb8eWSupuAQgAgOUQvqbTh60N6RQhDtP/bY9l+gjm4Grx5XcuhgQqK6pn
YtyPTKcpHdPK679lhbv0vE0RYe7pL+nBOngU1hCQYuGbRDZDxIXTIZW/rBvXbtHA
jgeSxrquad2totfh2nc7upePVCqXncPrLraJyDJBLLMrBHVvmOZymDabJbemOFuq
A/NbcmT3+osptvaEPFdlbgAW+J3vGxXMuQQYkT8GSnuutfEhZRb7SEL1ktaXwaMc
AA6NAan5ak7nCyDDHhDSDFMS9SQQHd8TDvQPF6OzRXlq26EOFD8HvlbDcgc51lbS
+N5nWaHM/CiuPh9dIOEV0H4Y8WDBdgkxp6kXKQfqb9JzAdwQ047r82SJAA7MSqCS
HRVtCRf5SNM12HqTRzF9XXum4uG+HXT6Bpy+K/lYpLgmHcHoUVKh8c2OcGaCHWQh
UC9B+aaThKdkxUfD/9tVIRmugjutgj7KdtDTGm+qLeCoJqp6HK5z5SX8Ha+P6/P5
hxinyw==
=kqUG
-----END PGP MESSAGE-----
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Note que até mesmo eu não posso lê-la, porque não me adicionei na lista de
destinatários e não tenho acesso à chave privada de João:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;tim@timbox:~$ gpg --decrypt mensagem-secreta.txt.asc
gpg: encrypted with 2048-bit RSA key, ID 964AEA6E, created 2013-03-10
    &quot;João Público (Chave principal) &amp;lt;joaopublico@exemplo.com.br&amp;gt;&quot;
    gpg: descriptografia falhou: chave secreta não disponível
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;No entanto, no computador do João, usando sua chave privada, ele pode
descriptografar e ler o arquivo:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;joao@joaobox:~$ gpg --decrypt mensagem-secreta.txt.asc
gpg: encrypted with 2048-bit RSA key, ID 964AEA6E, created 2013-03-10
    &quot;João Público (Chave principal) &amp;lt;joaopublico@exemplo.com.br&amp;gt;&quot;
Essa é uma mensagem secreta de Timoteo Aspargos.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Se eu quisesse ter certeza de que eu poderia ler a mensagem também, adicionaria
minha própria chave pública para me identificar como um destinatário quando
criptografasse a mensagem. Assim, ambos poderíamos ler a mensagem com nossas
chaves privadas (independentemente um do outro).&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ gpg --recipient 695195A5 --recipient 1FC2985D \
    --armor --encrypt mensagem-secreta.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Só para ser completos, podemos também assinar a mensagem para provar que ela veio de nós:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ gpg --recipient 695195A5 --recipient 1FC2985D \
    --armor --sign --encrypt mensagem-secreta.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Quando o João rodar a opção &lt;code&gt;--decrypt&lt;/code&gt;, o &lt;code&gt;gpg&lt;/code&gt; irá automaticamente verificar
a assinatura, desde que ele tenha minha chave pública em seu chaveiro:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ gpg --decrypt mensagem-secreta.txt.asc
gpg: encrypted with 2048-bit RSA key, ID 964AEA6E, created 2013-03-10
    &quot;João Público (Chave principal) &amp;lt;joaopublico@exemplo.com.br&amp;gt;&quot;
gpg: encrypted with 4096-bit RSA key, ID 1FC2985D, created 2013-08-22
    &quot;Timoteo Aspargos (Apenas para teste) &amp;lt;taspargos@exemplo.com.br&amp;gt;&quot;
Essa é uma mensagem secreta de Timoteo Aspargos.
gpg: Signature made Qui 22 Ago 2013 17:23:20 BRT using RSA key ID 1FC2985D
gpg: Good signature from &quot;Timoteo Aspargos (Apenas para teste) &amp;lt;taspargos@exemplo.com.br&amp;gt;&quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Essas são todas as funções básicas do GnuPG que são úteis para a maior parte
das pessoas. Nós não consideramos nesse artigo o &lt;a href=&quot;http://www.gnupg.org/gph/en/manual.html#AEN464&quot;&gt;envio de nossas chaves a
servidores públicos&lt;/a&gt; ou a participação em uma &lt;a href=&quot;http://en.wikipedia.org/wiki/Web_of_trust&quot;&gt;rede de
confiança&lt;/a&gt;. Você deve procurar mais informações sobre esses
assuntos apenas quanto que estiver feliz com a configuração e funcionamento de
suas chaves e estiver pronto para publicar suas chaves para uso público.&lt;/p&gt;

&lt;p&gt;Essa entrada é a parte 3 de 10 na série &lt;a href=&quot;/2013/09/16/linux_cripto_intro/&quot;&gt;Criptografia no
Linux&lt;/a&gt;.&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>Criptografia no Linux: Chaves do GnuPG</title>
        <link>http://cabaladada.org/2013/09/20/linux_cripto_gnupg_intro/</link>
        <pubDate>Fri, 20 Sep 2013</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2013/09/20/linux_cripto_gnupg_intro/</guid>
        <description>&lt;p&gt;Este é o segundo post de uma série de dez posts traduzindo o original de Tom
Ryder, &lt;a href=&quot;http://blog.sanctum.geek.nz/series/linux-crypto/&quot;&gt;Linux Crypto&lt;/a&gt;. Essa série está sob uma licença &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;Creative
Commons 3.0&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Para a lista de posts, veja a &lt;a href=&quot;/2013/09/16/linux_cripto_intro/&quot;&gt;introdução&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Muitas ferramentas que usam criptografia no Linux e na internet centram-se no
padrão de software Pretty Good Privacy (OpenPGP). O GNU Privacy Guard (GnuPG ou
GPG) é uma implementação em software livre popular desse padrão.&lt;/p&gt;

&lt;p&gt;No Debian, é possível instalar o GnuPG e sua interface, o &lt;code&gt;gpg(1)&lt;/code&gt;, da seguinte
maneira:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# apt-get install gnupg
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Você pode fazer muitas coisas legais com o GPG, mas ele se resume a quatro
ideias centrais:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;A geração de &lt;strong&gt;pares de chaves&lt;/strong&gt;, ou seja, pares de arquivos gerados
aleatoriamente e vinculados matematicamente, um dos quais deve ser mantido
permanentemente secreto (a &lt;strong&gt;chave privada&lt;/strong&gt;) e um que deve ser publicado (a
&lt;strong&gt;chave pública&lt;/strong&gt;). Essa é a base da &lt;strong&gt;criptografia de chave assimétrica&lt;/strong&gt;.&lt;/li&gt;
  &lt;li&gt;O &lt;strong&gt;gerenciamento&lt;/strong&gt; de chaves, tanto suas chaves públicas quanto as privadas,
além das chaves públicas de outras pessoas, para que você possa verificar as
suas mensagens e arquivos, ou criptografá-los para que apenas elas possam
ler. Isso pode incluir a publicação de sua chave pública em servidores de
chaves online e fazer com que outras pessoas assinem sua chave para confirmar
que ela realmente é sua.&lt;/li&gt;
  &lt;li&gt;A &lt;strong&gt;assinatura&lt;/strong&gt; de arquivos e mensagens com sua chave privada, para que
outras pessoas possam verificar que um arquivo ou mensagem foi criado ou
assinado por você, e não foi editado durante a transmissão por canais
não-confiáveis, como a internet. A mensagem em si ainda é legível por todos.&lt;/li&gt;
  &lt;li&gt;A &lt;strong&gt;criptografia&lt;/strong&gt; de arquivos e mensagens com as chaves públicas de outras
pessoas, para que apenas elas possam, com suas chaves privadas,
descriptografar e ler a mensagem. Você também pode assinar essas mensagens
com sua própria chave privada para que elas possam verificar que ela foi
enviada por você.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Iremos passar pelos fundamentais de cada uma dessas ideias. Não nos
preocuparemos demais com a matemática ou os algorítimos por trás dessas
operações; o artigo da Wikipédia sobre a &lt;a href=&quot;http://en.wikipedia.org/wiki/Public-key_cryptography&quot;&gt;criptografia de chave
assimétrica&lt;/a&gt; explica esse aspecto muito bem para aqueles curiosos
por mais detalhes.&lt;/p&gt;

&lt;h2 id=&quot;gerando-um-par-de-chaves&quot;&gt;Gerando um par de chaves&lt;/h2&gt;

&lt;p&gt;Vamos começar gerando um par de chaves RSA de 4096 bits, que deve ser mais do
que o suficiente para quase todos no momento da escrita deste artigo. Iremos
seguir algumas das &lt;a href=&quot;http://keyring.debian.org/creating-key.html&quot;&gt;melhores práticas&lt;/a&gt; recomendadas
pelos desenvolvedores do Debian.&lt;/p&gt;

&lt;p&gt;O ideal é realizar essas operações num computador privado e atualizado  uma vez
que é mais fácil gerar entropia dessa maneira. Isso ainda é possível num
servidor acessível apenas por SSH, mas você pode ter que recorrer a métodos
menos sãos, criptograficamente falando, para gerar a aleatoriedade apropriada.&lt;/p&gt;

&lt;p&gt;Crie ou edite o arquivo &lt;code&gt;~/.gnupg/gpg.conf&lt;/code&gt; no seu sistema, e adicione as
seguintes linhas:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;personal-digest-preferences SHA256
cert-digest-algo SHA256
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Essas linhas informarão o GnuPG para usar o algorítimo de hashing SHA256 para
assinaturas, que é criptograficamente mais forte, em preferência ao &lt;a href=&quot;http://www.schneier.com/blog/archives/2005/02/cryptanalysis_o.html&quot;&gt;algorítimo
SHA1, há muito tempo quebrado&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Isso feito, podemos começar a gerar algumas chaves:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ gpg --gen-key
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Você será solicitado a escolher o tipo de par de chaves que deseja. O padrão
deve ser RSA e RSA, o que significa que iremos gerar uma chave mestra para a
assinatura, e uma subchave para criptografia:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Por favor selecione o tipo de chave desejado:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (apenas assinatura)
(4) RSA (apenas assinatura)
Sua opção? 1
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Para o comprimento da chave, escolha o máximo (RSA 4096 bits):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;What keysize do you want? (2048) 4096
O tamanho de chave pedido é 4096 bits
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;A data de expiração cabe a você: se está apenas brincando com o GnuPG no
momento, sinta-se livre para configurar uma validade curta. No entanto, se você
pretende usar o GnuPG por bastante tempo e está certo de que pode manter sua
chave indefinidamente segura, sinta-se à vontade para configurá-la para nunca
expirar, como farei aqui:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Por favor especifique por quanto tempo a chave deve ser válida.
0 = chave não expira
&amp;lt;n&amp;gt;  = chave expira em n dias
&amp;lt;n&amp;gt;w = chave expira em n semanas
&amp;lt;n&amp;gt;m = chave expira em n meses
&amp;lt;n&amp;gt;y = chave expira em n anos
A chave é valida por? (0) 0
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;A seguir, algumas informações básicas são solicitadas para nomear a chave. Em
quase todas as circunstâncias você deveria usar seu nome real, já que sem um
meio de verificar sua identidade no mundo real, as chaves públicas são muito
menos úteis a longo prazo. Quanto ao comentário, você pode incluir o propósito
da chave, seus apelidos públicos ou qualquer outra informação relevante para a
chave:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Nome completo: Timoteo Aspargos
Endereço de correio eletrônico: taspargos@exemplo.com.br
Comentário: Apenas para teste
Você selecionou este identificador de usuário:
  &quot;Timoteo Aspargos (Apenas para teste) &amp;lt;taspargos@exemplo.com.br&amp;gt;&quot;

Muda (N)ome, (C)omentário, (E)ndereço ou (O)k/(S)air? O
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;senha-da-chave&quot;&gt;Senha da chave&lt;/h2&gt;

&lt;p&gt;A seguir, o programa pede uma senha para criptografar a chave. Assim, se ela
algum dia cair nas mãos erradas, ninguém poderá usá-la sem conhecer a senha.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Você precisa de uma frase secreta para proteger sua chave.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Escolha uma sequência aleatória de palavras, ou possivelmente uma sentença
única que &lt;a href=&quot;http://xkcd.com/936/&quot;&gt;você pode memorizar facilmente&lt;/a&gt; em qualquer língua. Quanto
maior, melhor. Não escolha nada que possa ser adivinhado na prática, como
provérbios ou frases de filmes. Você também terá de lembrar exatamente como
digitou a senha; recomendo utilizar todas as letras minúsculas e sem pontuação.
A Wikipédia tem &lt;a href=&quot;http://en.wikipedia.org/wiki/Passphrase#Passphrase_selection&quot;&gt;algumas orientações aqui&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Você precisará digitar a senha duas vezes para confirmá-la, e o programa não
irá mostrá-la no terminal, como se você estivesse digitando uma senha.&lt;/p&gt;

&lt;h2 id=&quot;geração-de-entropia&quot;&gt;Geração de entropia&lt;/h2&gt;

&lt;p&gt;Finalmente, o sistema irá pedir que geremos alguma entropia:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Precisamos gerar muitos bytes aleatórios. É uma boa idéia realizar outra
atividade (digitar no teclado, mover o mouse, usar os discos) durante a
geração dos números primos; isso dá ao gerador de números aleatórios
uma chance melhor de conseguir entropia suficiente.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Esse passo é necessário para que o computador gere informação aleatória o
suficiente para assegurar que a chave privada que está sendo gerada não possa
ser viavelmente reproduzida. Mover o mouse e usar o teclado é o ideal, mas
gerar qualquer tipo de atividade no hardware (incluindo girar os discos) deve
servir. Rodar operações dispendiosas com o &lt;code&gt;find(1)&lt;/code&gt; num sistema de arquivos
(com conteúdos que não possam ser razoavelmente preditos ou adivinhados) também
ajuda.&lt;/p&gt;

&lt;p&gt;Esse passo se beneficia de sua paciência. Você pode encontrar discussões online
sobre forçar o uso do gerador de números pseudo-aleatórios &lt;code&gt;/dev/urandom&lt;/code&gt; ao
invés disso, usado uma ferramenta como o &lt;code&gt;rngd(1)&lt;/code&gt;. Isso definitivamente
acelera o processo, mas se você irá usar a sua chave para qualquer atividade
séria, recomendo realmente interagir com o computador usando o ruído do
hardware para alimentar a aleatoriedade adequadamente, se puder.&lt;/p&gt;

&lt;p&gt;Quando entropia o suficiente é lida e a chave terminar de ser gerada, alguns
detalhes da sua chave mestra e sua subchave serão apresentados, e as chaves
privadas e públicas para cada uma serão automaticamente adicionadas ao seu
chaveiro para uso posterior:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;gpg: /home/tim/.gnupg/trustdb.gpg: banco de dados de confiabilidade criado
gpg: key 1FC2985D marked as ultimately trusted
chaves pública e privada criadas e assinadas.
gpg: a verificar a base de dados de confiança
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   3  signed:   1  trust: 0-, 0q, 0n, 0m, 0f, 3u
gpg: depth: 1  valid:   1  signed:   0  trust: 1-, 0q, 0n, 0m, 0f, 0u
pub   4096R/1FC2985D 2013-08-22
      Key fingerprint = A577 2F62 9827 BCF1 D03C  0817 DAB9 E4A0 1FC2 985D
      uid                  Timoteo Aspargos (Apenas para teste) &amp;lt;taspargos@exemplo.com.br&amp;gt;
      sub   4096R/E458D7E5 2013-08-22
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;gerenciando-chaves&quot;&gt;Gerenciando chaves&lt;/h2&gt;

&lt;p&gt;Com isso feito, nossas próprias chaves estão adicionadas ao chaveiro privado e
público:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$  gpg --list-secret-keys 
/home/tim/.gnupg/secring.gpg
-----------------------------------
sec   4096R/1FC2985D 2013-08-22
uid                  Timoteo Aspargos (Apenas para teste) &amp;lt;taspargos@exemplo.com.br&amp;gt;
ssb   4096R/E458D7E5 2013-08-22

$  gpg --list-public-keys 
/home/tim/.gnupg/pubring.gpg
-----------------------------------
pub   4096R/1FC2985D 2013-08-22
uid                  Timoteo Aspargos (Apenas para teste) &amp;lt;taspargos@exemplo.com.br&amp;gt;
sub   4096R/E458D7E5 2013-08-22
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;O diretório &lt;code&gt;~/.gnupg&lt;/code&gt; contém as chaves gerenciadas. É muito, mas muito
importante manter esse diretório privado e fazer o seu backup seguramente,
preferivelmente em uma mídia removível que você possa manter em algum local
fisicamente seguro. Não o perca!&lt;/p&gt;

&lt;p&gt;Na maior parte dos contextos no GnuPG, você pode se referir à chave pelo nome
do seu dono ou pela sua identificação hexadecimal de oito dígitos. Eu prefiro o
último método. Nesse caso, a identificação curta da minha chave principal é
&lt;code&gt;1FC2985D&lt;/code&gt;. Embora você não deva usá-la para fazer nenhum tipo de verificação,
ela é suficientemente única para identificar uma chave específica no seu
chaveiro.&lt;/p&gt;

&lt;p&gt;Por exemplo, se você desejar enviar uma cópia de sua chave púbica a alguém, uma
maneira amigável de fazê-lo é exportá-la no formato ASCII com a opção
&lt;code&gt;--armor&lt;/code&gt;, fornecendo a identificação curta da chave apropriada:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ gpg --armor --export 1FC2985D &amp;gt; tim-aspargos.public.asc
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Embora você possa exportar chaves privadas da mesma maneira, usando a opção
&lt;code&gt;--export-secret-key&lt;/code&gt;, você nunca, nunca mesmo, deve fornecer sua chave privada
a ninguém, então ela não deve ser necessária.&lt;/p&gt;

&lt;h2 id=&quot;o-certificado-de-revogação&quot;&gt;O certificado de revogação&lt;/h2&gt;

&lt;p&gt;Depois de gerar suas chaves, você deve gerar um &lt;strong&gt;certificado de revogação&lt;/strong&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;gpg --output revoke.asc --gen-revoke 1FC2985D 

sec  4096R/1FC2985D 2013-08-22 Timoteo Aspargos (Apenas para teste) &amp;lt;taspargos@exemplo.com.br&amp;gt;

Create a revocation certificate for this key? (y/N) y
Please select the reason for the revocation:
0 = Nenhum motivo especificado
1 = A chave foi comprometida
2 = A chave foi substituída
3 = A chave já não é utilizada
Q = Cancel
(Probably you want to select 1 here)
Sua decisão? 1
Enter an optional description; end it with an empty line:
&amp;gt; 
Reason for revocation: A chave foi comprometida
(No description given)
Is this okay? (y/N) y

You need a passphrase to unlock the secret key for
user: &quot;Timoteo Aspargos (Apenas para teste) &amp;lt;taspargos@exemplo.com.br&amp;gt;&quot;
4096-bit RSA key, ID 1FC2985D, created 2013-08-22

Please move it to a medium which you can hide away; if Mallory gets
access to this certificate he can use it to make your key unusable.
It is smart to print this certificate and store it away, just in case
your media become unreadable.  But have some caution:  The print system of
your machine might store the data and make it available to others!
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Você deve guardar o arquivo resultante, &lt;code&gt;revoke.asc&lt;/code&gt;, em algum local seguro.
Você pode usar esse certificado para &lt;a href=&quot;http://www.gnupg.org/gph/en/manual.html#AEN305&quot;&gt;revogar&lt;/a&gt; sua chave mais tarde,
caso a chave privada seja comprometida, para que as pessoas saibam que a chave
não é mais confiável nem pode ser usada. Você pode até mesmo imprimir e manter
uma cópia impressa, como o &lt;code&gt;gpg&lt;/code&gt; sugere.&lt;/p&gt;

&lt;p&gt;Com a configuração acima concluída, podemos proceder com o uso básico do GnupG,
como discutido no próximo artigo.&lt;/p&gt;

&lt;h2 id=&quot;subchaves&quot;&gt;Subchaves&lt;/h2&gt;

&lt;p&gt;Na saída de ambos os comandos, é possível notar que na verdade temos duas
chaves privadas e duas chaves públicas. A linha &lt;code&gt;sub&lt;/code&gt; se refere à subchave de
criptografia, gerada automaticamente para você. A chave mestra é usada para a
assinatura criptográfica, e a subchave para a encriptação; é assim que o GnuPG
opera por padrão com pares de chaves RSA.&lt;/p&gt;

&lt;p&gt;Para mais segurança, pode ser apropriado fisicamente mover a chave mestra do
seu computador para outro local e usar uma segunda subchave gerada para assinar
arquivos. Isso é desejável pois lhe permite manter sua chave mestra segura em
alguma mídia removível (preferivelmente com um backup) e não carregada no seu
computador principal, caso você seja comprometido.&lt;/p&gt;

&lt;p&gt;Dessa maneira, é possível assinar e criptografar arquivos normalmente com sua
subchave de assinatura e sua subchave de criptografia. Se essas chaves forem
algum dia comprometidas, você pode simplesmente revogá-las e gerar novas com
sua chave mestra, que não foi comprometida. Além disso, todos aqueles que já
assinaram ou de outra maneira demonstraram sua confiança em sua chave mestra
não terão de fazê-lo novamente.&lt;/p&gt;

&lt;p&gt;Para detalhes sobre como efetuar esse procedimento, sugiro a leitura desse
&lt;a href=&quot;http://wiki.debian.org/subkeys&quot;&gt;artigo na Debian Wiki sobre gerenciamento de subchaves&lt;/a&gt;.
Elas não são, no entanto, necessárias para efetuar operações básicas com o GPG.&lt;/p&gt;

&lt;p&gt;Essa entrada é a parte 2 de 10 na série &lt;a href=&quot;/2013/09/16/linux_cripto_intro/&quot;&gt;Criptografia no
Linux&lt;/a&gt;.&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>rsync options</title>
        <link>http://cabaladada.org/2013/09/19/rsync-options/</link>
        <pubDate>Thu, 19 Sep 2013</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2013/09/19/rsync-options/</guid>
        <description>&lt;p&gt;&lt;code&gt;rsync&lt;/code&gt; is a wonderful program. Three days ago, I forgot to use it and used
&lt;code&gt;scp&lt;/code&gt; instead to transfer the files of this blog from my netbook to the server,
destroying my &lt;code&gt;piwik&lt;/code&gt; installation in the process. In my defense, it was 7 am
and I was in a hurry to upload the &lt;a href=&quot;/2013/09/16/linux_cripto_intro/&quot;&gt;first post on the Linux Crypto
series&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I learned my lesson and used &lt;code&gt;rsync&lt;/code&gt; to transfer the subsequent changes. It has
so many options, though, that I’m never sure what to use. To help me with that,
I wrote them down on my Moleskine notebook and came up with a mnemonics.
Here’s what I use:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;rsync -zarc source destination
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;where &lt;code&gt;-z&lt;/code&gt; is &lt;code&gt;--compress&lt;/code&gt;, &lt;code&gt;-a&lt;/code&gt; is &lt;code&gt;--archive&lt;/code&gt;, &lt;code&gt;-r&lt;/code&gt; is &lt;code&gt;--recursive&lt;/code&gt; and &lt;code&gt;-c&lt;/code&gt;
is &lt;code&gt;--checksum&lt;/code&gt;. According to &lt;code&gt;man rsync&lt;/code&gt;, &lt;code&gt;--archive&lt;/code&gt; “ensures that symbolic
links, devices, attributes, permissions, ownerships, etc. are preserved in the
transfer”. It is a shorthand for &lt;code&gt;-rLptgoD&lt;/code&gt;!&lt;/p&gt;

&lt;p&gt;The mnemonics is pretty simple:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;code&gt;z&lt;/code&gt;ombies &lt;code&gt;a&lt;/code&gt;re &lt;code&gt;r&lt;/code&gt;eally &lt;code&gt;c&lt;/code&gt;areless&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      </item>
    
      <item>
        <title>Criptografia no Linux: Introdução</title>
        <link>http://cabaladada.org/2013/09/16/linux_cripto_intro/</link>
        <pubDate>Mon, 16 Sep 2013</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2013/09/16/linux_cripto_intro/</guid>
        <description>&lt;p&gt;Essa é uma série de posts que será publicada em dez partes, traduzindo o
original de Tom Ryder, &lt;a href=&quot;http://blog.sanctum.geek.nz/series/linux-crypto/&quot;&gt;Linux Crypto&lt;/a&gt;. Essa série está sob uma
licença &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;Creative Commons 3.0&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;A criptografia para a autenticação e encriptação é um campo complexo e que muda
com frequência e, para alguém novo no assunto, pode ser difícil saber onde
começar. Se você é um usuário de Linux confortável com o terminal, mas não tem
familiaridade com as ferramentas de criptografia disponíveis em sistemas
operacionais abertos estilo UNIX, essa é uma série de posts que visa ajudá-lo a
configurar algumas ferramentas básicas que permitirão manter suas informações
seguras, autenticar convenientemente e seguramente a servidores remotos e a
trabalhar com arquivos online assinados digitalmente e criptografados.&lt;/p&gt;

&lt;p&gt;Trabalharei com o Debian GNU/Linux, mas a maior parte dessas ferramentas deve
se adaptar bem em outros sistemas abertos no estilo UNIX, incluindo o BSD.
Aviso que não sou um expert em algorítimos criptográficos ou em segurança de
chaves. Se você é, e encontrar algum erro ou problema de segurança em qualquer
uma de minhas explicações ou sugestões, por favor, &lt;a href=&quot;mailto:rberaldo@cabaladada.org&quot;&gt;avise-me&lt;/a&gt; que
irei corrigi-los e lhe darei o crédito.&lt;/p&gt;

&lt;p&gt;Cobrirei os seguintes tópicos:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/2013/09/20/linux_cripto_gnupg_intro/&quot;&gt;Geração e manutenção de chaves para o GnuPG&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2013/09/23/linux_cripto_gnupg_uso/&quot;&gt;Assinando, verificando, criptografando e descriptografando com o GnuPG&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2013/09/27/linux_cripto_chaves_ssh/&quot;&gt;Geração e autenticação com chaves SSH&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2013/09/30/linux_cripto_agentes/&quot;&gt;&lt;code&gt;gpg-agent(1)&lt;/code&gt;, &lt;code&gt;ssh-agent(1)&lt;/code&gt; e o uso do &lt;code&gt;keychain(1)&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2013/10/04/linux_cripto_senhas/&quot;&gt;O gerenciador de senhas &lt;code&gt;pass(1)&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2013/11/04/linux_cripto_email/&quot;&gt;Emails criptografados/assinados com PGP usando o &lt;code&gt;mutt(1)&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2013/11/23/linux_cripto_backups/&quot;&gt;Backups incrementais e criptografados usando o &lt;code&gt;duplicity(1)&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Drives USB criptografados usando o LUKS&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#&quot;&gt;A importância da criptografia e sua ampla utilização&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Se você já conhece sobre um tópico específico, sinta-se livre para pular para
os outros artigos.&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>Iterando por itens em listas do Python</title>
        <link>http://cabaladada.org/2013/02/20/iterando-listas-python/</link>
        <pubDate>Wed, 20 Feb 2013</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2013/02/20/iterando-listas-python/</guid>
        <description>&lt;p&gt;Essa é uma pequena dica para os que são, como eu, newbies em Python.&lt;/p&gt;

&lt;p&gt;Para resolver &lt;a href=&quot;http://www.codecademy.com/courses/python-intermediate-en-rCQKw/2?curriculum_id=4f89dab3d788890003000096&quot;&gt;alguns exercícios no Codecademy&lt;/a&gt;
que envolviam operações nos itens de algumas listas, eu costumava criar
uma variável &lt;code&gt;count&lt;/code&gt; e atribuir a ela o valor &lt;code&gt;0&lt;/code&gt;. Para acessar cada
item das listas, eu utilizava o valor de &lt;code&gt;count&lt;/code&gt; para acessar o índice
equivalente. Ao final da operação, eu aumentava o valor da variável em
1 e, enquanto (&lt;code&gt;while&lt;/code&gt;) o valor de &lt;code&gt;count&lt;/code&gt; fosse menor do que o número
de itens de lista (determinado por &lt;code&gt;len(sequence)&lt;/code&gt;), essa operação seria
repetida.&lt;/p&gt;

&lt;p&gt;Para vocês entenderem melhor, aqui vai o código para uma função que
recebe uma lista como argumento (&lt;code&gt;sequence&lt;/code&gt;), remove todos os números
ímpares e retorna uma nova lista (&lt;code&gt;out_sequence&lt;/code&gt;):&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;purify&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;count&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;out_sequence&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;count&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;count&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;out_sequence&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;count&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;count&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;out_sequence&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h2 id=&quot;uma-maneira-mais-fácil&quot;&gt;Uma maneira mais fácil&lt;/h2&gt;

&lt;p&gt;Para aprender mais maneiras de conseguir o mesmo resultado, li o código
de outros usuários do Codecademy e descobri que é possível utilizar um
loop &lt;code&gt;for&lt;/code&gt;:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;purify&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;out_sequence&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;n&quot;&gt;out_sequence&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;out_sequence&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;O loop &lt;code&gt;for&lt;/code&gt; itera por cada item (&lt;code&gt;i&lt;/code&gt;) da lista &lt;code&gt;sequence&lt;/code&gt; e, se &lt;code&gt;i&lt;/code&gt; for
um número par (ou seja, divisível por 2), ele será adicionado à lista
&lt;code&gt;out_sequence&lt;/code&gt;. Muito mais elegante, devo admitir!&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>abnTeX2</title>
        <link>http://cabaladada.org/2013/02/07/abntex2/</link>
        <pubDate>Thu, 07 Feb 2013</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2013/02/07/abntex2/</guid>
        <description>&lt;p&gt;Como estudante em uma universidade brasileira, sou eternamente grato ao
&lt;a href=&quot;http://www.latex-project.org/&quot;&gt;LaTeX&lt;/a&gt; pela ajuda com a tipografia dos meus trabalhos e relatórios e ao
(finado) projeto &lt;a href=&quot;http://sourceforge.net/projects/abntex/&quot;&gt;abnTeX&lt;/a&gt; pela ajuda com as normas para trabalhos
científicos da &lt;a href=&quot;http://www.abnt.org.br/&quot;&gt;ABNT&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;O projeto abnTeX (&lt;em&gt;ABsurd Norms for TeX&lt;/em&gt;) não recebia contribuições ao código
desde 2006, no entanto, o que o tornava desatualizado em relação às normas da
ABNT. Além disso, o código tinha alguns bugs e incompatibilidades com outros
pacotes.&lt;/p&gt;

&lt;p&gt;Por isso, foi com grande felicidade que descobri o projeto &lt;a href=&quot;https://code.google.com/p/abntex2/&quot;&gt;abnTeX2&lt;/a&gt;,
liderado pelo &lt;a href=&quot;http://laurocesar.com/&quot;&gt;Lauro César&lt;/a&gt;, da UnB. O novo pacote para LaTeX é baseado
na classe &lt;code&gt;memoir&lt;/code&gt;, a minha preferida, e uma das classes mais completas para o
LaTeX.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/marca_abntex-2.png&quot; alt=&quot;Logo do abnTeX2&quot; title=&quot;Logo do abnTeX2&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Para instalar o pacote no Arch Linux usando o &lt;code&gt;yaourt&lt;/code&gt;, rode:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;yaourt -S abntex2
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Para mais informações sobre como instalar na sua distro, &lt;a href=&quot;https://code.google.com/p/abntex2/wiki/Instalacao&quot;&gt;consulte a wiki do
projeto abnTeX2&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Li brevemente o &lt;a href=&quot;http://mirrors.ctan.org/macros/latex/contrib/abntex2/doc/abntex2.pdf&quot;&gt;manual do pacote&lt;/a&gt;, que é bastante completo, e
notei algumas mudanças em relação ao antigo pacote &lt;code&gt;abntex&lt;/code&gt;. Muitas novidades
que eu esperava estão lá, incluindo suporte ao XeLaTeX (e &lt;code&gt;fontspec&lt;/code&gt;),
ambientes para errata e ficha catalográfica e a nova posição para rótulos e
legendas.&lt;/p&gt;

&lt;p&gt;Irei testar o pacote durante esse ano letivo para tipografar trabalhos meus e
de colegas. Posso até, eventualmente, publicar aqui um pequeno tutorial sobre o
pacote, incluindo hacks que descobrir ou desenvolver.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy LaTeXing!&lt;/em&gt;&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>Happy New Year</title>
        <link>http://cabaladada.org/2013/01/04/happy-new-year/</link>
        <pubDate>Fri, 04 Jan 2013</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2013/01/04/happy-new-year/</guid>
        <description>&lt;p&gt;As 3179 YOLD (or 2013) begins, I felt like writing a happy new year post. Happy
new year!&lt;/p&gt;

&lt;p&gt;Blogging-wise, 2012 was a very good year. I &lt;a href=&quot;/2012/harder-better-faster-stronger/&quot;&gt;gave Cabaladadá a fresh
start&lt;/a&gt; and felt generally happier writing
for it. I managed to write twelve posts — a small number, but writing a lot
wasn’t in my plans anyway. I wanted to write at least once a month, and I got
closer than ever.&lt;/p&gt;

&lt;p&gt;But I plan to write more. Over the years, as blogs blossomed and were adopted
by all kinds of journalists and specialists, blogging became a very
professional activity. It doesn’t have to be tiresome for me, though, and I
don’t have to demand from myself posts with content and quality that’ll make
people want read Cabaladadá. That simply means my posts should be about
whatever is bugging me at the moment, or whatever I’m doing with my life, the
Universe and everything else. I’d like to write more on cooking and using
GNU/Linux, for example. I often discover programs, fonts, podcasts, books and
many other things that might be interesting for my fellow hackers and nerds.&lt;/p&gt;

&lt;p&gt;This new year will be full of new and exciting challenges. I taught English for
one year and a half, and now I’m looking for a new job. Maybe I’ll end up
translating or giving English classes again, but I’ll try my best to get a job
related to computers in general, be it deploying GNU/Linux systems, taking care
of servers, teaching or coding in HTML. Although I currently study languages
and literature, I finally accepted that my real passion lies in everything
technology (actually, I find computational linguistics quite interesting), so
it makes sense to start working in a related area.&lt;/p&gt;

&lt;p&gt;My girlfriend and I wrote down some new year resolutions. Here are mine:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Finish college;&lt;/li&gt;
  &lt;li&gt;Get a new job;&lt;/li&gt;
  &lt;li&gt;Save about 500 reais;&lt;/li&gt;
  &lt;li&gt;Be less grumpy;&lt;/li&gt;
  &lt;li&gt;Cook more;&lt;/li&gt;
  &lt;li&gt;Finish started projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s not too ambitious, but still a number of good accomplishments to brag
about in the future.&lt;/p&gt;

&lt;p&gt;Here’s hoping I’ll be seeing you guys more often! Once more, happy new year!&lt;/p&gt;
</description>
      </item>
    
      <item>
        <title>News</title>
        <link>http://cabaladada.org/2012/11/05/news/</link>
        <pubDate>Mon, 05 Nov 2012</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2012/11/05/news/</guid>
        <description>&lt;p&gt;I’ve just uploaded the source code for this blog to &lt;a href=&quot;https://github.com/rberaldo/cabaladada&quot;&gt;GitHub&lt;/a&gt;, where I
keep the fews lines of code I write and some stuff written in LaTeX. So, if you
were ever wondering how I went about implementing Cabaladadá using Jekyll, go
and have a check!&lt;/p&gt;

&lt;p&gt;I’m also working on internationalizing Cabaladadá. Sometimes (like now), I’d
like to write a post in both English and Brazilian Portuguese but I see no need
to create separate pages for each language. The solution I’m working on is
rather simple: I’ll just include a link to the translation of a post beneath
its title on the front page and on the post page, before the text begins.&lt;/p&gt;

&lt;p&gt;I’m having some trouble figuring out where to put the translations and how to
tell Jekyll not to include them on the main page.&lt;/p&gt;

&lt;p&gt;Oh, and there’ll soon be a post on Vimperator and Firefox!&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>RSS</title>
        <link>http://cabaladada.org/2012/10/19/rss/</link>
        <pubDate>Fri, 19 Oct 2012</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2012/10/19/rss/</guid>
        <description>&lt;p&gt;Thanks to citizenparker’s &lt;a href=&quot;https://github.com/citizenparker/incrediblog&quot;&gt;Incrediblog source code&lt;/a&gt;, I was able to
add &lt;a href=&quot;/rss.xml&quot;&gt;an RSS feed&lt;/a&gt; to this very blog. Subscribe using your favorite RSS
reader and I promise you’ll never miss a rant!&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>GNU MediaGlobin</title>
        <link>http://cabaladada.org/2012/10/17/gnu-mediaglobin/</link>
        <pubDate>Wed, 17 Oct 2012</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2012/10/17/gnu-mediaglobin/</guid>
        <description>&lt;p&gt;Pelo &lt;a href=&quot;http://www.fsf.org/blogs/community/gnu-mediagoblin-offers-what-youve-been-missing-in-an-internet-media-sharing-system&quot;&gt;blog da Free Software Foundation (FSF)&lt;/a&gt; conheci o fantástico
&lt;a href=&quot;http://mediagoblin.org/&quot;&gt;MediaGlobin&lt;/a&gt;, um sistema livre de compartilhamento de imagens, vídeos e
áudio. Do site do projeto:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;O GNU MediaGlobin é um sistema livre de publicação de mídia para imagens,
vídeo e áudio. Estamos planejando suporte a descentralização e grande
extensibilidade. Pense nele como um substituto para sistemas como o Flickr, o
YouTube ou o SoundCloud que qualquer um pode executar.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;http://mediagoblin.org/pages/campaign.html&quot;&gt;Suporte o projeto e ganhe recompensas!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A &lt;a href=&quot;http://mediagoblin.org/pages/campaign.html&quot;&gt;página de doações&lt;/a&gt; tem um ótimo vídeo que discute o que o projeto é,
mas também algumas ideias sobre como a Internet funciona. Por uma questão de
design, a Internet é descentralizada; por isso, se um computador perde sua
conexão, os outros computadores ainda conseguem se comunicar. Por outro lado,
muitas das aplicações que usamos, como o YouTube ou o Flickr, são
centralizadas. Mas o que aconteceria com todas as suas fotos se o Flickr
sumisse? E com os seus vídeos, se o YouTube deixasse de existir?&lt;/p&gt;

&lt;video width=&quot;100%&quot; height=&quot;360&quot; controls=&quot;controls&quot; preload=&quot;metadata&quot; poster=&quot;/assets/images/campaign/support_mediagoblin-poster.png&quot; data-setup=&quot;&quot;&gt;
&lt;source src=&quot;http://7236508364c37fa9e75f-06885409aae278cdc67155c04400e3f7.r71.cf1.rackcdn.com/mediagoblin_campaign_pitch-small.webm&quot; type=&quot;video/webm; codecs=&amp;quot;vp8, vorbis&amp;quot;&quot; /&gt;
&lt;source src=&quot;http://7236508364c37fa9e75f-06885409aae278cdc67155c04400e3f7.r71.cf1.rackcdn.com/mediagoblin_campaign_pitch-small.mp4&quot; type=&quot;video/mp4&quot; /&gt;
&lt;/video&gt;

&lt;p&gt;O MediaGlobin parece ser um projeto bastante sólido, que surgiu para preencher
um problema real cuja tendência é crescer. Para os usuários da Internet, a
centralização significa maior poder em um só lugar. Com as legislações que vêm
sido aceitas ao redor do mundo, como na &lt;a href=&quot;http://en.wikipedia.org/wiki/HADOPI_law&quot;&gt;França&lt;/a&gt;, essas
ferramentas descentralizadas são cada vez mais bem-vindas.&lt;/p&gt;

&lt;p&gt;Mas não se deixe enganar pela palavra “descentralizado”. Como explicado no
vídeo acima, o MediaGlobin será descentralizado como o serviço de email é
atualmente, ou seja, todos podemos trocar mensagens como se estivéssemos na
mesma rede, mesmo que as pessoas usem serviços de email diferentes. Assim,
embora o conteúdo possa estar espalhado pela rede, poderemos acessá-lo como se
estivesse todo num mesmo lugar.&lt;/p&gt;

&lt;p&gt;Iniciativas como o GNU MediaGlobin são fundamentais para o futuro da Internet.
Como muitas coisas no mundo real, a tendência parece ser a descentralização e
divisão dos recursos. A educação e uso do software livre tem um papel central
nesse futuro e é legal saber que já estamos nos preparando.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/gatos_pingpong.gif&quot; alt=&quot;Gatos jogando ping pong.&quot; title=&quot;Gatos jogando ping
pong.&quot; /&gt;&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>Snippets</title>
        <link>http://cabaladada.org/2012/10/14/snippets/</link>
        <pubDate>Sun, 14 Oct 2012</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2012/10/14/snippets/</guid>
        <description>&lt;p&gt;Eu nunca fui um grande fã de modificar o funcionamento dos programas por meio de
plugins (especialmente porque isso pode levar a problemas de performance, além
de bugs inesperados), então nunca me impressionei muito com a capacidade do vim
de usar plugins. Recentemente ouvi um podcast na Hacker Public Radio sobre
&lt;a href=&quot;http://hackerpublicradio.org/eps.php?id=1091&quot;&gt;plugins para o vim&lt;/a&gt; e resolvi dar uma chance a um plugin chamado
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2540&quot;&gt;snipMate&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Eu não &lt;em&gt;era&lt;/em&gt; um grande fã de plugins. O snipMate é realmente uma mão na roda,
especialmente pra quem usa muito LaTeX, como eu. Mas vamos direto ao assunto.&lt;/p&gt;

&lt;h2 id=&quot;instalando-o-snipmate&quot;&gt;Instalando o snipMate&lt;/h2&gt;

&lt;p&gt;A melhor forma de instalar o snipMate é clonando o repositório do GitHub:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;git clone git://github.com/msanders/snipmate.vim.git
&lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;snipmate.vim
&lt;span class=&quot;nb&quot;&gt;cp&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-R&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;*&lt;/span&gt; ~/.vim&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Isso irá copiar os arquivos &lt;code&gt;README.markdown&lt;/code&gt; e &lt;code&gt;plugin-info.txt&lt;/code&gt;, então não se
esqueça de deletá-los. Pronto, o snipMate está instalado! Para instalar os
arquivos de ajuda, basta rodar &lt;code&gt;:helptags ~/.vim/doc&lt;/code&gt; dentro do vim.&lt;/p&gt;

&lt;h2 id=&quot;usando-snippets&quot;&gt;Usando snippets&lt;/h2&gt;

&lt;p&gt;Os snippets ficam guardados em &lt;code&gt;~/.vim/snippets&lt;/code&gt;. A sintaxe deles é simples
(mais sobre isso abaixo), e é uma boa ideia dar uma olhada nos arquivos padrões
para entender o que está acontecendo.&lt;/p&gt;

&lt;p&gt;Editando um HTML, você pode digitar &lt;code&gt;div&amp;lt;tab&amp;gt;&lt;/code&gt;, e &lt;code&gt;div&lt;/code&gt; será expandido para:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot; data-lang=&quot;html&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;id=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;1&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
2
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Onde &lt;code&gt;1&lt;/code&gt; e &lt;code&gt;2&lt;/code&gt; representam a primeira e segunda posições do cursor. Você pode
mover entre essas posições usando a tecla &lt;code&gt;&amp;lt;tab&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id=&quot;sintaxe-dos-snippets&quot;&gt;Sintaxe dos snippets&lt;/h2&gt;

&lt;p&gt;Os snippets são definidos assim:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;snippet nome
        texto expandido
        mais texto expandido
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Portanto, quando você digitar &lt;code&gt;nome&amp;lt;tab&amp;gt;&lt;/code&gt;, o texto expandido aparecerá
automaticamente onde estava o cursor.&lt;/p&gt;

&lt;p&gt;Para quem escreve muito em LaTeX, é possível criar algo como&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;snippet article
        \documentclass[${1}]{article}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;onde esse &lt;code&gt;${1}&lt;/code&gt; indica a primeira posição do cursor. Você pode especificar as
opções da classe ali. Mas digamos que eu queira algo mais complexo, como:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;snippet beginfig
        \begin{figure}[h]
          \centering
          \includegraphics[width=.7\textwidth]{${1:filename}}
          \caption{${2}}
          \label{${3}}
        \end{figure}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ali temos três posições do cursor, mas eu gosto de manter a &lt;code&gt;label&lt;/code&gt; das minhas
figuras igual ao nome do arquivo. Podemos usar um pouco da mágica do snipMate e:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;snippet beginfig
        \begin{figure}[h]
          \centering
          \includegraphics[width=.7\textwidth]{${1:filename}}
          \caption{${2}}
          \label{$1}
        \end{figure}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;O &lt;code&gt;$1&lt;/code&gt; depois de &lt;code&gt;\label&lt;/code&gt; significa que todo o texto colocado sob
&lt;code&gt;${1:filename}&lt;/code&gt; será replicado ali. Muito útil, especialmente para abrir e
fechar tags HTML e ambientes no LaTeX:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;snippet begin
        \begin{${1:env}}
          ${2}
        \end{$1}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Você também pode criar snippets para textos que repete com frequência, e mesmo
deixar espaços em branco para aquelas partes do texto que são variáveis. Chega
de digitar ou copiar/colar!&lt;/p&gt;

&lt;p&gt;Após escrever um novo snippet, é necessário rodar &lt;code&gt;:call ReloadAllSnippets()&lt;/code&gt;
ou reiniciar o vim.&lt;/p&gt;

&lt;h2 id=&quot;gedit&quot;&gt;gedit&lt;/h2&gt;

&lt;p&gt;O fantástico gedit vem com um plugin muito parecido por padrão. Vejam &lt;a href=&quot;http://www.ubuntubrsc.com/dica-rapida-ativando-snippets-no-gedit.html&quot;&gt;esse post
no ubuntu-br-sc&lt;/a&gt; para mais informações. A sintaxe é idêntica ou
muito parecida com a sintaxe acima, mas tem uma interface gráfica legal para
você gerenciar seus snippets.&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>LaTeX: Acentos em fórmulas</title>
        <link>http://cabaladada.org/2012/09/09/latex-acentos-em-formulas/</link>
        <pubDate>Sun, 09 Sep 2012</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2012/09/09/latex-acentos-em-formulas/</guid>
        <description>&lt;p&gt;Essa é uma breve dica pra quem tem ou teve problemas para escrever fórmulas que
contenham variáveis com acentos no LaTeX. Se você escrever uma fórmula como:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;\[ Variável = \frac{x}{y} \]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;O “á” em “Variável” não será mostrado como esperamos. Para resolver esse
problema, basta usar &lt;code&gt;\acute{a}&lt;/code&gt;. Assim:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;\[ Vari\acute{a}vel = \frac{x}{y} \]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;irá produzir o efeito desejado. Para mais acentos, vejam essa imagem que
encontrei &lt;a href=&quot;http://garsia.math.yorku.ca/~zabrocki/latexpanel/mathaccents.html&quot;&gt;num site por aí&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://garsia.math.yorku.ca/~zabrocki/latexpanel/mathaccents.jpg&quot; alt=&quot;Acentos em fórmulas no LaTeX&quot; title=&quot;Pequena tabela para colocar acentos em fórmulas no LaTeX&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Se as variáveis forem muito longas, como&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;\[ Variável muito longa que vai dar problema = \frac{x}{y} \]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;os espaços irão simplesmente desaparecer. Para evitar que isso aconteça, basta
encapsular (gostou, ãh?) o texto em &lt;code&gt;\textrm{}&lt;/code&gt;, assim:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;\[ \textrm{Variável muito longa que vai dar problema} = \frac{x}{y} \]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Nesse caso não é necessário marcar os acentos, apenas os escreva como faria com
textos normais.&lt;/p&gt;

&lt;p&gt;É isso aí, espero que isso ajude vocês!&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>Firefox e Vimperator</title>
        <link>http://cabaladada.org/2012/09/04/firefox-e-vimperator/</link>
        <pubDate>Tue, 04 Sep 2012</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2012/09/04/firefox-e-vimperator/</guid>
        <description>&lt;p&gt;O browser que usei durante mais tempo até hoje foi, sem dúvida, o Firefox. Na
época em que comecei a usar a Internet com frequência, era o melhor browser que
existia e foi assim durante muito tempo. Quando comecei a usar o GNU/Linux, nos
idos de 2007, com o Ubuntu 7.10 ou 7.04, o Firefox era o browser padrão e nos
dávamos muito bem.&lt;/p&gt;

&lt;p&gt;Mas tudo mudou em &lt;em&gt;ano&lt;/em&gt;, quando o Google Chrome foi lançado. Eu nunca usei o
Google Chrome, mas sim o &lt;a href=&quot;http://www.chromium.org/&quot;&gt;Chromium&lt;/a&gt;, o projeto de código aberto no
qual o browser do Google é baseado. Em questão de uma semana eu já havia parado
de usar o Firefox em favor do novo browser, que era mais rápido, iniciava em
segundos e renderizava as páginas em pouco tempo. O programa parecia mais
responsivo em geral; foi assim que virei um de seus fãs.&lt;/p&gt;

&lt;p&gt;Seja como for, eu sempre senti falta de usar o Firefox. Ele tinha uma magia
inexplicável, um carisma único. Eu o instalava e rodava a cada nova release
(antes delas se tornarem comuns), mas o browser nunca chegava à mesma
velocidade do Chromium, no entanto.&lt;/p&gt;

&lt;p&gt;Mesmo quando comprei meu computador atual, há uns três anos, ele ainda rodava
melhor. Meu computador é um modesto Asus Eee PC com 2 GB de RAM, um processador
Atom de 1,3 GHz e uma placa de vídeo da NVIDIA boa o suficiente para rodar
alguns filmes em alta definição. Uma máquina legal, mas longe do padrão dos
dias de hoje, onde os computadores têm pelo menos o dobro de RAM e
processadores com o dobro da velocidade e núcleos.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm1.staticflickr.com/114/263461011_dd26af08d7.jpg&quot; alt=&quot;firefox&quot; title=&quot;Uma imagem sobre o Firefox&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Um dia notei como o modo que navegamos pela web me incomodava. Nossos sites
dependem demais de mouses, o que não é muito confortável quando se passa 90% do
tempo no computador usando um trackpad. Os browsers também endossam bastante
esse paradigma. Então busquei por um plugin que permitisse rodar comandos
comuns a partir do teclado e foi quando encontrei o &lt;a href=&quot;http://vimium.github.com/&quot;&gt;Vimium&lt;/a&gt;, um plugin
para o Chromium. Eu adorei o plugin, e usava ele bastante na época; mas
encontrei, também, o fantástico Vimperator.&lt;/p&gt;

&lt;p&gt;O &lt;a href=&quot;http://www.vimperator.org/&quot;&gt;Vimperator&lt;/a&gt; é um plugin para o Firefox que o transforma
completamente. A navegação é feita totalmente pelo teclado, e você pode acessar
inclusive o menu do Firefox usando comandos. É baseado no Vim, meu editor
favorito, o que lhe rendeu muitos pontos positivos, sem falar do nome &lt;em&gt;cool&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Foi então que me apaixonei pelo Firefox novamente. Uma pena, pois eu não estava
disposto a usá-lo.&lt;/p&gt;

&lt;p&gt;Quando minha mãe comprou seu novo computador, um tanto mais potente que o meu,
instalei o Ubuntu 12.04 para ela. O Firefox veio por padrão, como sempre, e
imediatamente instalei o Vimperator no meu usuário. No final de semana passado
fiquei uns dias na casa de meus pais, usando bastante o computador de minha
mãe, para brincar um pouco com a interface do Ubuntu (sobre a qual tenho
&lt;em&gt;algumas&lt;/em&gt; ressalvas) e decidi que iria deixar de lado meu preconceito pelo
Firefox, fomentado por tantas experiências boas com o Chromium, e simplesmente
usar o Firefox com Vimperator durante duas semanas.&lt;/p&gt;

&lt;p&gt;Meu sistema já está configurado, e meu atalho no Fluxbox já chama o Firefox
quando aperto minha &lt;em&gt;hotkey&lt;/em&gt; para iniciar o browser. Vou analisar especialmente
a velocidade com que o Firefox e o Vimperator respondem aos meus comandos, que
é notavelmente lenta quando comparada à do Chromium, e dizer se vale a pena
mudar para ele.&lt;/p&gt;

&lt;p&gt;Abraços a todos e fiquem ligados para a minha conclusão daqui duas semanas!&lt;/p&gt;

&lt;p&gt;P.S.: Obrigado pela foto, &lt;a href=&quot;http://www.flickr.com/photos/alexbarros/263461011/&quot;&gt;Alex Barros&lt;/a&gt;!&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>Jekyll never finishes compiling and other stuff</title>
        <link>http://cabaladada.org/2012/08/29/jekyll-never-finishes-compiling-and-other-stuff/</link>
        <pubDate>Wed, 29 Aug 2012</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2012/08/29/jekyll-never-finishes-compiling-and-other-stuff/</guid>
        <description>&lt;p&gt;I use the monstrous &lt;a href=&quot;http://jekyllrb.com/&quot;&gt;Jekyll&lt;/a&gt; for all my blogging, and I love it. It’s
simple enough, though you can do some pretty awesome stuff with it. I was away
from my blog for quite a while so I completely lost the hang of Jekyll. Any
time I’d try to compile my site, it would stop on &lt;code&gt;regenerating: n files
changed&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I googled this message and found out that whenever the option &lt;code&gt;auto&lt;/code&gt; is on,
Jekyll will watch for any changes and recompile the site whenever it finds one.
Thus, it will never “finish” compiling, unless you stop it by hitting &lt;code&gt;Ctrl-C&lt;/code&gt;.
The solution was simple: I just had to change &lt;code&gt;auto: true&lt;/code&gt; to &lt;code&gt;auto: false&lt;/code&gt; in
the &lt;code&gt;_config.yml&lt;/code&gt; configuration file. Now it compiles just fine.&lt;/p&gt;

&lt;p&gt;As for the “other stuff” in the title of the post, I’d like to know from my
readers whether reading this blog is too difficult for you. Being a command
line geek myself, I think the readability is OK but I might consider changing
the font to a brighter green or even white. Please &lt;a href=&quot;mailto:rberaldo@cabaladada.org&quot;&gt;mail me&lt;/a&gt; with your
ideas!&lt;/p&gt;

&lt;p&gt;And here’s yet another cat by &lt;a href=&quot;http://www.flickr.com/photos/thefangmonster/490423135/&quot;&gt;Noah Sussman&lt;/a&gt; for your
appreciation!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm1.staticflickr.com/221/490423135_c2a908f3a0_o.jpg&quot; alt=&quot;CATML&quot; title=&quot;HTML can not do that!&quot; /&gt;&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>Um dos melhores livros que já li</title>
        <link>http://cabaladada.org/2012/08/27/um-dos-melhores-livros-que-ja-li/</link>
        <pubDate>Mon, 27 Aug 2012</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2012/08/27/um-dos-melhores-livros-que-ja-li/</guid>
        <description>&lt;p&gt;Durante as férias, estava olhando alguns livros na estante de história de &lt;a href=&quot;http://uraricoera.com.br/&quot;&gt;do
meu sebo favorito&lt;/a&gt;, quando encontrei um livro de H.G. Wells
intitulado &lt;em&gt;A Construção do Mundo&lt;/em&gt;, uma tradução que não faz jus ao título
original, &lt;em&gt;Work, Wealth and Happiness of Mankind&lt;/em&gt;. Uma rápida folheada me
despertou interesse pelo livro de 1935, que em certo momento discutia
locomotivas e barcos a vapor. Passados alguns dias, voltei ao sebo e comprei o
tal livro por dez reais.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/7/7f/H_G_Wells_pre_1922.jpg/430px-H_G_Wells_pre_1922.jpg&quot; alt=&quot;hgwells&quot; title=&quot;Foto de H.G. Wells&quot; /&gt;&lt;/p&gt;

&lt;p&gt;H.G. Wells foi o escritor de obras notórias como &lt;em&gt;Guerra dos Mundos&lt;/em&gt; e &lt;em&gt;A
Máquina do Tempo&lt;/em&gt; e um homem de ciências, com treinamento em biologia. Antes da
publicação de &lt;em&gt;A Construção do Mundo&lt;/em&gt;, publicou uma &lt;em&gt;História Universal&lt;/em&gt; e uma
&lt;em&gt;Ciência da Vida&lt;/em&gt;. Sobre a sua &lt;em&gt;História&lt;/em&gt;, ele diz em &lt;em&gt;A Construção do Mundo&lt;/em&gt;
(a grafia original é mantida):&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;A minha Historia Universal fornece um excelente exemplo do modo como se pode
levar o leitor adulto a corrigir as deformações de visão produzidas pelo
habito e pratica escolares. Embora tenha logrado uma enorme saida, essa obra
não foi planejada e escrita para o publico. Concebeu-a o autor como um
simples livro didático.&lt;/p&gt;

  &lt;p&gt;[…]&lt;/p&gt;

  &lt;p&gt;Ninguem, mais do que ele proprio [Wells, o autor da &lt;em&gt;História&lt;/em&gt;], se espantou
com a grande aceitação popular de sua obra. Foi dormir simples reformador
educacional e acordou um acontecimento de livraria. Verificou que existia no
mundo um imenso publico mal satisfeito com a historia aprendida nos colegios
e ansioso exatamente pelo que a &lt;em&gt;Historia Universal&lt;/em&gt; prometia ser — um
legivel e explicito sumario da aventura humana.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Duas páginas depois, Wells continua:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;[…] O segundo trabalho feito foi o escorço da Biologia. Houve razões para dar
ao livro o nome &lt;em&gt;Ciencia da Vida&lt;/em&gt;. A base da educação do autor havia sido
biologica e vivo sempre o interesse que sentia pelo assunto, mas a massa de
conhecimentos acumuluados depois dos seus dias de estudante impunha-lhe a
necessidade de alta assistencia. Encontrou-a em seu amigo Julian Huxley, neto
do grande Huxley e tambem em seu proprio filho, G.P. Wells. Juntos produziram
os tres um resumo do que o homem sabe a respeito do seu corpo e e de sua
mente, da origem e evolução da vida, do onímodo espetaculo das coisas vivas
na terra e no mar, das principais tendencias e correntes do pensamento
psicologico e por fim da peculiar biologia da humanidade. A publicação da
&lt;em&gt;Ciencia da Vida&lt;/em&gt; coroou o trabalho de dois anos de ardua colaboração, e
permitiu o empreendimento do mais difícil — este escorço de Economia, esta
descrição popular do comercio e do trabalho, do toma-lá-dá-cá dessa estranha
e singular especie de creaturas que somos nós.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;O projeto de Wells eram esses três livros — um sobre História, outro sobre
Biologia e um sobre Economia — a fim de permitir aos homens que compreendessem
seu mundo e atuassem nele de forma consciente. Fica clara, durante o livro e
nesse projeto, a orientação socialista de Wells.  Pessoalmente, há tempos que
não me simpatizo pela ideologia, mas a clareza de pensamento de H.G. Wells é
tão profunda que não há como não admirar a ideia. Em determinado ponto do
livro, o autor discute como essas três matérias, por assim dizer, estão
conectadas; a história e economia humanas são produtos da biologia e a biologia
das espécies tem uma história entrelaçada com a história e economia humanas.&lt;/p&gt;

&lt;p&gt;O livro começa discutindo, portanto, sua própria história. Posteriormente,
passa a discutir a história da humanidade, das especulações sobre seus
primórdios até a chegada da agricultura, a formação das sociedades e, enfim, o
debate grego do Realismo versus Nominalismo. De forma muito clara, Wells nos
mostra como esse debate se desenvolveu ao longo do tempo e veio a desembocar no
método científico, com a &lt;em&gt;inversão&lt;/em&gt; das palavras &lt;em&gt;realidade&lt;/em&gt; e &lt;em&gt;realismo&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Jamais serei capaz de resumir a questão como Wells resumiu. Me aventuro com
essa breve descrição do caso: na Grécia surge o primórdio do que o autor chama
de “pensamento dirigido”, em oposição ao “pensamento do cerebro primitivo”, ou
seja, o pensamento de uma época onde o ser humano não dispunha de “nenhum
elemento critico que indague: ‘Mas será isto certo? Será verdade?’”. Os gregos
foram os primeiros, segundo o livro, a se fazerem essas perguntas. Havia, no
entanto, um embate a ser resolvido:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;[…] ha tres modos de julgar as palavras; podemos julga-las mais verdadeiras
que o fato [pense em platonismo], menos verdadeiras que o fato, ou &lt;em&gt;exatas&lt;/em&gt;,
isto é, coincidindo com o fato. Para o Realista a palavra era mais verdadeira
que o fato; para o Nominalista o fato era mais verdadeiro que a palavra.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;E, por mais espanto que isso cause, o Realismo era a visão mais aceita na
Grécia, e não só na Grécia, como durante quase toda a Idade Média. Durante todo
esse tempo — desde os filósofos gregos até hoje — essa discussão prossegue. O
platonismo, ou seja, a ideia de que vivemos em um mundo imperfeito, sombra de
um mundo &lt;em&gt;ideal&lt;/em&gt;, encaixa-se muito bem com a cisão terra/céu da Igreja
Católica, e melhor ainda com algumas concepções, como aquela de que somos
feitos à &lt;em&gt;imagem e semelhança de um ser perfeito&lt;/em&gt;, Deus, embora nós mesmos
sejamos imperfeitos.&lt;/p&gt;

&lt;p&gt;Se, de fato, as palavras fossem mais reais que a realidade, e apenas a lógica
nos permitisse alcançar um entendimento pleno do mundo, a experiência — o
método empírico — era besteira completa. Mas desde o fim da Idade Média o
pensamento científico, autocrítico, cético e experimental ganhou força e
modificou nosso mundo.&lt;/p&gt;

&lt;p&gt;Desse ponto, Wells prossegue dando um rápido panorama da história da ciência.
Suas opiniões sobre a ciência são extremamente afinadas com o que eu acredito
que ela seja: não uma busca pela Verdade Absoluta, mas uma constante revisão de
nossas pequenas verdades, rigorosamente escolhidas por um método que aceita
calorosamente qualquer ideia &lt;em&gt;testada&lt;/em&gt;, não aquelas que mais gostamos.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;A logica podia provar certa coisa; mas a experimentação tinha de dizer se era
assim. “Observa, experimenta, registra, especula logicamente, experimenta a
tua especulação, confirma-a ou corrije-a, &lt;em&gt;comunica-a a outros
investigadores, ouve as suas comunicações, compara-as, discute-as,
logicamente, estabelece o que ficar comprovado”&lt;/em&gt;, e assim por diante; para
todos os propositos praticos, este é o metodo da ciencia.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Mas…&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;A libertação do espirito humano das prediposições Realisticas permanece
incompleta. A humanidade ainda acreditava, até um seculo atrás, na fixidez
das especies animais e vegetais — que se supunham variar em torno de um tipo
perfeito; e ha apenas vinte e tantos anos admitia a similaridade absoluta dos
atomos; e na politica internacional até hoje o Realismo ainda domina por
completo. Esse erro intelectual dorme na raiz dos maiores peris que ameaçam a
especie humana. Os corações dos homens podem estar no logar certo, as as
pobres cabeças dos homens acham-se mergulhadas no nevoeiro dos nomes magicos.
Porque é claro que um nominalista que considera a palavra “França” apenas
como o nome designador de uma grande area geografica de ais e tais
caracteristicas climatericas e sociais e cerca de quarenta milhões de seres
humanos das mais diversas qualidades (muitos deles nem sequer falando o
francês), ha de ver a politica internacional de um angulo inteiramente
diverso do de um Realista que encontra na palavra França algo mais real e
vital do que qualquer das coisas ou individuos que contribuem para o conjunto
daquela idea. “Russia” é outro termo magico para os Realistas; “Mãe Índia”,
outro; outro é “Mãe Patria”, seja qual for a patria. Desde que em nossas
escolas não ensinamos a significação dessas palavras — nominalista e Realista
— nem damos qualquer especie de treino ao pensamento analitico, seremos
nominalistas ou Realistas segundo o nosso temperamento ou a nossa sorte.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Wells prossegue, discutindo como a ciência nada tem a ver com dogmas ou
tradição e como, frequentemente, a mídia entende isso ao avesso, dizendo que um
ou outro cientista “derrubou um dogma da ciência”. Discute como as
universidades tiveram uma aceitação muito ruim da ciência, uma vez que eram
tradicionais, e como impuseram graus de conhecimento da ciência — que existem
até hoje, e se chamam Bacharel, Mestre e Doutor.&lt;/p&gt;

&lt;p&gt;É fascinante como Wells consegue, nesse livro de 1935, ensinar as coisas de
forma tão bem entrelaçadas, coisa que minha educação, meio século depois, não
conseguiu. O autor britânico compreendia a necessidade de tornar as coisas não
só cotidianas como relevantes; fazia isso tão bem, que as partes sobre a
conquista das substâncias — parte na qual ele discorre até mesmo sobre os
vários tipos de ferro e aço e como sua invenção foi fundamental para o avanço
em outras áreas — e sobre a conquista da força (diríamos energia hoje em dia)
são extremamente saborosas.&lt;/p&gt;

&lt;p&gt;Menti no título desse post; ainda não &lt;em&gt;li&lt;/em&gt; o livro, mas estou na metade. Parei
na parte em que Wells discute a história da conquista da distância. A máquina a
vapor ainda era o grande meio de transporte, e as máquinas a Diesel estavam
começando a serem testadas. Vejam esses trechos, sobre o uso de energia:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;O Dr. Herbert Levenstein fala da era da força-carvão e da força-petroleo, ou
“era da força fossil”, como mero incidente na evolução econômica da
humanidade. “Terá durado, quando chegar ao fim, menos tempo que a ocupação
moura na Espanha”.&lt;/p&gt;

  &lt;p&gt;Agora, com a corrente eletrica descoberta e a sua disposição, o homem não tem
dificuldades em transmitir a força do moinho de vento ou da roda d’agua aos
mais distantes pontos de aplicação.&lt;/p&gt;

  &lt;p&gt;[…]&lt;/p&gt;

  &lt;p&gt;Haverá ainda possibilidades não desenvolvidas de se extrair força dos
movimentos do ar ou da agua? Um exaustivo Livro da Força teria de resumir a
fase atual do problema, ainda não resolvido, da utilização da energia das
marés. E descreveria um ou dois dos estranhos e até agora impraticaveis
aparelhos para a captura direta da energia radiante do sol. No Instituto
Kaiser Wilhelm, em Dahlem, o Dr. Lange fez funcionar um pequeno motor
eletrico por meio da luz solar, fazendo-a passar através de uma celula
foto-eletrica. Esse pequeno motor do Dr. Lange talvez venha a figurar nas
historias economicas do futuro como a maquina a vapor de Hero figura nas de
hoje.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As previsões de Wells soam tão fantásticas que é difícil se dar conta de que
muitas delas se realizaram. O método de Wells ao escrever seu livro — não
contar a história dos reis e Estados, mas das ideias e conquistas da humanidade
— produz um efeito maravilhoso de te jogar no meio dessa verdadeira aventura.&lt;/p&gt;

&lt;p&gt;Para finalizar, chamo atenção para o terceiro parágrafo citado acima, no qual o
autor fala sobre um Livro da Força. Wells frequentemente fala de uma
enciclopédia eternamente revisada, expandida, para incluir toda a história do
progresso, invenções e ideias humanas, um livro de consultas, a &lt;em&gt;Ciência do
Trabalho e da Riqueza&lt;/em&gt;, que aparece em trechos como:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Uma enciclopedica &lt;em&gt;Ciencia do Trabalho e da Riqueza&lt;/em&gt;, com ilimitadas
ilustrações, contaria toda a historia da via ferrea, e encenaria os seus mais
vivos episodios. Mostraria, por meio de mapas feitos para cada periodo, o
modo como as estradas de ferro se espalharam, á guisa de nervos em um embrião
em desenvolvimento.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Fico muito feliz em ver que &lt;a href=&quot;http://en.wikipedia.org/wiki/History_of_rail_transport&quot;&gt;Wells estava certo&lt;/a&gt;.&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>FLISoL 2012 em São Carlos</title>
        <link>http://cabaladada.org/2012/03/08/flisol-sao-carlos/</link>
        <pubDate>Thu, 08 Mar 2012</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2012/03/08/flisol-sao-carlos/</guid>
        <description>&lt;p&gt;São Carlos vai ganhar uma edição do &lt;a href=&quot;http://flisol.info/&quot;&gt;FLISoL&lt;/a&gt;, que acontece no quarto
sábado de cada ano — que esse ano cai no dia 28 de abril. Entre os objetivos do
evento estão a divulgação do software livre e sua filosofia ao público em geral,
a realização de palestras e simplesmente ser uma oportunidade para a comunidade
local de software livre se encontrar.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/flisol.png&quot; alt=&quot;FLISOL 2012&quot; title=&quot;Logo do FLISOL&quot; /&gt;&lt;/p&gt;

&lt;p&gt;O &lt;a href=&quot;http://www.ifspsaocarlos.edu.br/flisol/&quot;&gt;evento em São Carlos&lt;/a&gt; deve acontecer no campus do &lt;a href=&quot;http://www.ifspsaocarlos.edu.br/portal/&quot;&gt;Instituto
Federal&lt;/a&gt; de São Carlos, que fica dentro da UFSCar. O FLISOL 2012 São
Carlos também conta com um &lt;a href=&quot;https://groups.google.com/forum/?fromgroups#!forum/flisol-2012-sao-carlos&quot;&gt;grupo no Google Groups&lt;/a&gt; e um &lt;a href=&quot;https://www.facebook.com/groups/201227069962021/&quot;&gt;grupo no
Facebook&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Já estou pensando no trabalho que irei enviar, e ainda não me decidi entre LaTeX
e as humanidades, ou apenas LaTeX na academia, ou ainda LaTeX e noções básicas
de tipografia. Também posso falar sobre o &lt;a href=&quot;http://savannah.gnu.org/projects/www-pt-br/&quot;&gt;grupo de traduções para português
brasileiro do gnu.org&lt;/a&gt;, e ver se consigo mais gente para o projeto.
De qualquer forma, a chamada para trabalhos, ao que parece, ainda não foi
divulgada.&lt;/p&gt;

&lt;p&gt;Vai ser o primeiro evento de software livre que vou participar e foi, na
verdade,
uma surpresa descobrir que haverá uma edição em São Carlos. Nos vemos lá!&lt;/p&gt;

&lt;p&gt;E agora uma imagem dos nossos patrocinadores (uma cortesia de
&lt;a href=&quot;http://www.flickr.com/photos/protohiro/85504626/&quot;&gt;protohiro&lt;/a&gt;):&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/cat_linux.jpg&quot; alt=&quot;Cat using Linux&quot; title=&quot;Gatos naturalmente preferem Linux&quot; /&gt;&lt;/p&gt;

</description>
      </item>
    
      <item>
        <title>The sky above the port</title>
        <link>http://cabaladada.org/2012/02/29/sky-above-port/</link>
        <pubDate>Wed, 29 Feb 2012</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2012/02/29/sky-above-port/</guid>
        <description>&lt;p&gt;Every story should start with a memorable line. I can quote Gibson’s
&lt;em&gt;Neuromancer&lt;/em&gt; first sentence from my head:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The sky above the port was the color of television, tuned to a dead channel.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With this single sentence, Gibson sets the mood of his entire book. The first
obvious element is the port, which is frequently associated with crime, a
suspect place to be, where all kinds of things come from overseas. And
&lt;em&gt;Neuromancer&lt;/em&gt; has all to do with crime, suspect places and activities, not to
mention weird objects.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Color of television&lt;/em&gt; is a beautifully crafted expression that caries both the
sadness of the gray sky and the mention of technology. Finally, this television
is &lt;em&gt;tuned to a dead channel&lt;/em&gt; — I think we can all clearly see this image, and
how the word &lt;em&gt;dead&lt;/em&gt; plays a role here.&lt;/p&gt;

&lt;p&gt;I have lots of books here. (I’d have many more, but I don’t have room for more
than a few!) I like to browse through them, looking for better opening lines.
Today I opened Graham Greene’s &lt;em&gt;The Power and the Glory&lt;/em&gt; by chance, only to read
this amazing sentence:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Mr Tench went out to look for his ether cylinder, into the blazing Mexican sun
and the bleaching dust.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I immediately pictured the vast western movie scenarios and &lt;em&gt;No Country for Old
Men&lt;/em&gt;. I saw particles of dust sweeping through the sky, sweat, mustaches and
bottles of tequila.&lt;/p&gt;

&lt;p&gt;But should there be an opening line contest, there’d be already a clear winner.
The best opening line of all is from Douglas Adams’ &lt;em&gt;The Hitchhiker’s Guide to
the Galaxy&lt;/em&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Far out in the uncharted backwaters of the unfashionable end of the western
spiral arm of the Galaxy lies a small, unregarded yellow sun.&lt;/p&gt;
&lt;/blockquote&gt;
</description>
      </item>
    
      <item>
        <title>Harder, better, faster, stronger</title>
        <link>http://cabaladada.org/2012/02/19/harder-better-faster-stronger/</link>
        <pubDate>Sun, 19 Feb 2012</pubDate>
        <author>Rafael Beraldo</author>
        <guid>http://www.cabaladada.org/2012/02/19/harder-better-faster-stronger/</guid>
        <description>&lt;p&gt;Last month or so I deleted everything I had posted on Cabaladadá so far. For
more than a month, Business Cat gave the good news to every visitor.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/cat400.jpg&quot; alt=&quot;Business Cat.&quot; title=&quot;Business Cat: I need you to stay late
tonight. We really have to catch that red dot.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I finally took a deep breath and decided to start working on the blog again.
This is the “final” result. It’ll probably change over the years to come but
this is a good starting point for someone who can barely code in CSS.&lt;/p&gt;

&lt;p&gt;I wanted to make Cabaladadá more personal. It was too brainy, too serious. I
couldn’t write because every time I tried to, it felt overwhelmingly painful. I
realized I was trying to rewrite Goethe’s &lt;em&gt;Faust&lt;/em&gt; every time I opened vim
and I needed a fresh start. Now I can start having fun again (I hope).&lt;/p&gt;

&lt;p&gt;There was something else annoying me. &lt;a href=&quot;http://wordpress.org/&quot;&gt;WordPress&lt;/a&gt;. But don’t get me
wrong: I love WordPress, and I really recommend it if you’re new to blogging and
wants something that is robust and customizable. It just wasn’t the right tool
for me. The upgrades were distressing and, lately, something would often break.
Also, my netbook isn’t very powerful, so the admin interface itself was too
CPU-consuming.&lt;/p&gt;

&lt;p&gt;And then I remembered of jekyll. &lt;a href=&quot;http://devio.us/~dudektria/&quot;&gt;dudektria&lt;/a&gt; introduced me to
&lt;a href=&quot;https://github.com/mojombo/jekyll/wiki&quot;&gt;jekyll&lt;/a&gt; a long time ago. He later would recommend &lt;a href=&quot;http://nanoc.stoneship.org/&quot;&gt;nanoc&lt;/a&gt; over
jekyll but, I don’t know exactly why, I decided to go with the first one.  Maybe
because I had already installed it on my computer.&lt;/p&gt;

&lt;p&gt;jekyll is beautiful. It is simple, I can write my posts in markdown and it
converts them automatically to HTML, and I don’t need a fancy administration web
interface. I can write plain text files using vim, and then upload a static
website to my server. I can use git to keep track of changes. It is &lt;a href=&quot;http://tom.preston-werner.com/2008/11/17/blogging-like-a-hacker.html&quot;&gt;blogging
the hacker way&lt;/a&gt;, and I love it.&lt;/p&gt;

&lt;p&gt;It’s exactly what I wanted. Oh, and did I mention it’s written in Ruby?&lt;/p&gt;

&lt;p&gt;Another decision that I had taken several months ago was that Cabaladadá should
be in English. I probably read more English than Portuguese these days but I
don’t get enough writing. Blogging is a great way to correct this. I may
eventually publish in Portuguese or translate a few articles, but Cabaladadá
will be mostly in Douglas Adams’ language.&lt;/p&gt;

&lt;p&gt;Finally, I hope you like the terminal theme. It isn’t perfect yet—maybe the font
is too big or too small depending on your browser—but I think it is simple and
reflects this new phase of Cabaladadá: more hackerish, still nerdy, a bit
technical, and certainly discordian.&lt;/p&gt;

</description>
      </item>
    

  </channel>
</rss>
