domingo, 27 de março de 2022

Criptografia

Introdução

A palavra criptografia tem origem no Grego e significa "escrita secreta".

Há distinção entre cifra e código. Na cifragem, a transformação ocorre caractere por caractere ou bit por bit. É o que se faz hoje em dia. No código, as palavras são substituídas por palavras ou símbolos. Exemplo de uso de código: os EUA recrutaram índios navajos na 2a. Guerra Mundial que transmitiam, na língua deles, as ordens militares aos marines.

 

Terminologia


  • Texto simples (plaintext):  mensagem a ser criptografada;
  • Texto cifrado (ciphertext): mensagem na saída do processo de criptografia; 
  • Algoritmo de cifragem: função parametrizada por uma chave;
  • Chave: é a informação (protocolo conhecido pelo remetente e destinatário) que, aplicada ao algoritmo, permite criptografar ou decifrar a mensagem;
  • Criptologia: arte de criar mensagens cifradas (criptografia);
  • Criptoanálise: arte de solucionar mensagens cifradas;
  • Fator de trabalho: é o nível de dificuldade para decifrar a mensagem. Aumenta exponencialmente conforme o tamanho da chave.

 

Algoritmo

Questão interessante na criptografia é que, em regra, o algoritmo é conhecido de todos. Pelo princípio de Kerckhoff se estabelece que:

  • "Todos os algoritmos devem ser públicos: apenas as chaves são secretas".

 

Criptografia simétrica

Na criptografia simétrica uma mesma chave é usada para codificar e decodificar a mensagem.

Métodos:

  • substituição;
  • transposição;
  • multiplicação de matrizes.

 

Criptografia assimétrica (ou de chave pública)

Utiliza um par de chaves (pública e privada) para a codificação e a decodificação das mensagens. 

Aplicações:

  • assinatura digital;
  • autenticação.

 

Hash

É um algoritmo usado para mapear (resumir) dados de qualquer tamanho em dados pequenos e de tamanho fixo. 

Outra denominação: Message Digest (MD), ou “sumário da mensagem”.

Aplicações:

  • busca de elementos em base de dados;
  • verificação de integridade de dados grandes; e
  • armazenamento de senhas com segurança.

 

Fonte: TANENBAUM, Andrew S.; WETHERALL, David. Redes de computadores. 5a. ed. Trad. Daniel Vieira. São Paulo: Pearson Prentice Hall, 2011, p. 481-506.


segunda-feira, 21 de março de 2022

O básico da rede SOHO (Small Office Home Office)

Introdução

As redes de computadores permitem que os dispositivos eletrônicos se comuniquem uns com os outros e compartilhem recursos.


A interconexão entre os equipamentos ocorre, normalmente,  por cabos de cobre, cabos de fibra óptica ou rádio (wireless).


As regras e requisitos para que a comunicação se estabeleça são conhecidos como protocolos, dos quais o IP (Internet Protocol) é exemplo.


Podemos pensar numa rede interna básica de pequeno porte (SOHO ou Small Office Home Office) constituída por:

  1. um roteador, que reúne os serviços de:

    1. conexão externa (para a Internet), que usa o endereço IP atribuído pelo provedor de internet (ISP ou Internet Service Provider), ao qual está conectado;

    2. uma conexão interna (ou placa de rede), com um endereço privado (normalmente 192.168.1.1);

    3. DHCP (Dynamic Host Configuration Protocol), que faz a configuração automática dos hosts;

    4. Firewall básico;

    5. DNS (Domain Name Service), que resolve (traduz) os endereços IP para torná-los mais adequados aos usuários.  

  2. computador A;

  3. computador B.


Endereços privados

Quando se olha para os dispositivos da rede interna, vê-se que possuem endereços privados (ou IPs privados), que foram configurados manualmente ou pelo DHCP. 


Esses endereços privados (que se repetem em outras redes) não se comunicam com a Internet. São rejeitados pelos demais roteadores.


É aí que entra o NAT (Network Address Translation), também conhecido como masquerading, que é uma função do roteador que converte os endereços privados dos computadores A e B (da rede interna) em endereços válidos para a Internet.


Gateway default

Roteadores possuem um caminho para que as redes internas possam "sair" para a Internet, que é conhecido como Gateway default. Funciona como a única estrada que serve para sair de uma cidadezinha.






Referência:

BROAD, James e BINDER, Andrew. Hacking com Kali Linux: técnicas práticas para testes de invasão. São Paulo: Novatec, 2014, p. 61-66.


segunda-feira, 24 de janeiro de 2022

O Menino da Internet

No último fim de semana, assisti ao documentário "O Menino da Internet: a história de Aaron Swartz" (The Internet's Own Boy: The Story of Aaron Swartz, 2014), distribuído pela Filmbuff e Participant Media, e que está disponível em vários canais do YouTube, inclusive com legenda. Trata-se da biografia do hackativista americano Aaron Swartz (1986-2013), co-criador do RSS, da linguagem de marcação Markdown (uso bastante...), das licenças Creative Commons (CC), do framework Web.py e da Reddit. 


A produção realça o empenho de Aaron em compartilhar artigos da revista científica JSTOR, de acesso restrito, que ele obtinha rodando um script feito em Python (o keepgrabbing.py) nos computadores do MIT.


O documentário também interessa aos operadores do Direito, porque mostra bastidores dos acordos de colaboração premiada, já que o FBI pretendia enquadrar Swartz na Lei de Fraude e Abuso de Computadores (Computer Fraud and Abuse Act - CFAA), com previsão de penas altíssimas.


Nesse ponto, a curiosidade fica por conta da participação de Quinn Norton, uma ex-namorada de Aaron e co-autora do Guerilla Open Access Manifesto (vale a pena pesquisar sobre o tema), falando do seu dia de rainha (Queen for a day), ou seja, da ocasião em que o Promotor e o suspeito tentam acordar os termos da delação e que, por razões ético-processuais, se garante à parte que o conversado não será usado contra ela caso o ajuste não seja concretizado. 


____________


Observações:


1. O promotor de justiça do MPSP Cleber Masson explica, em menos de 5 minutos, de que se trata o "Queen for a day". Cf. em: <https://www.youtube.com/watch?v=jGZuJHtfzmE>. Acesso em 24 jan. 2022.


2. O código-fonte do keepgrabbing.py pode ser facilmente encontrado. A título de exemplo, com explicações: AKMUT, Camille. Aaron Swartz’s JSTOR Code : Keepgrabbing.py. Further Research Notes. OSF Preprints. 2019. Disponível em: <https://osf.io/bnd2h>. Acesso em 24 jan. 2022.

domingo, 23 de janeiro de 2022

Instalação do MySQL no MacOS

 A instalação do MySQL no Mac deve ser feita via Terminal, usando a linha de comando:

brew install mysql


Para que tudo funcione bem, dois outros comandos devem ser dados previamente:


sudo chown -R $(whoami) /usr/local/share/man    /usr/local/share/man/man1              


e


chmod u+w /usr/local/share/man /usr/local/share/man/man1


O primeiro comando faz de você o “proprietário” (owner) dos diretórios man e man/man1. O segundo comando lhe dá permissão de escrita nesses diretórios.


Após a instalação, pode ser necessários inicializar o serviço com:


brew services start mysql


Para iterar com o shell do MySQL:


mysql -u root -p


Obs. O comando brew invoca o gerenciador de pacotes Homebrew. É um software não nativo do S.O., de código aberto e muito popular. Cf. em: <https://brew.sh/>





quarta-feira, 6 de outubro de 2021

Marco Legal da Inteligência Artificial


A Câmara dos Deputados aprovou, no dia 29 p.p., o PL 21/2020, do Dep. Eduardo Bismark, que “estabelece fundamentos, princípios e diretrizes para o desenvolvimento e a aplicação da inteligência artificial no Brasil e dá outras providências”. O projeto seguiu para o Senado Federal.

Para contribuir com as discussões sobre as regras propostas, publiquei no GitHub uma versão on line do meu ebook. 

Confira em: https://jespimentel.github.io/direito_e_etica_ia/


quinta-feira, 16 de setembro de 2021

Python, IA e eSAJ: transcrição de audiências judiciais

Juízes, Promotores de Justiça e Advogados podem ser mais produtivos se, ao invés de reproduzirem o vídeo da audiência judicial baixado do e-SAJ (normalmente do tipo “asf”), consultarem um arquivo texto (“txt”) contendo a transcrição das falas feita por inteligência artificial.

No programa abaixo, escrito em Python, são gerados arquivos “wav” a partir do arquivo “asf” da audiência. Esses arquivos são transcritos, um a um, pelas “inteligências artificiais” do Google e da IBM e os resultados são reunidos num único documento, como mostra o tutorial que segue.


Tutorial: 

YouTube


Código da aplicação no GitHub: 

https://github.com/jespimentel/AudiPy

quinta-feira, 15 de julho de 2021

Curiosidades do @mpsp_oficial no Twitter

O MPSP está firme e forte no Twitter, inclusive interagindo com o público.

A análise automatizada dos 3000 últimos tweets do @mpsp_oficial (que abrangeu o período de 09/11/2018 a 14/07/2021) revela:

O tweet mais curtido (284 likes): #MPSPcontraCovid Prefeito de Mirandópolis é multado por ilegalidades no combate à pandemia, após ação do Ministério Público. A mesma decisão revogou o Decreto Municipal que autorizava abertura do comércio em geral, com afrontamentos ao Plano São Paulo. https://t.co/o0S2E1ag1X

O tweet mais compartilhado (171 vezes): #PLdaImpunidadeNÃO O texto do PL que afrouxa a Lei de Improbidade Administrativa foi protocolado ontem à tarde e, na sequência, teve seu requerimento de urgência aprovado para ser votado hj na Câmara. Sem diálogo c/ instituições ou sociedade. O projeto 👉 https://t.co/vvyzcPBCbC

O MP respondeu diretamente pelo Twitter a 89 pessoas (excluídas as respostas ao próprio @mpsp_oficial).

Os dois meses de maior atividade no Twitter foram março e abril de 2020 (214 e 218 tweets respectivamente).







Quando o dataset é cortado para o período da atual gestão (Dr. Sarrubbo), o WordCloud (gráfico hierarquizado pelas palavras de maior frequência, excluídas as “stopwords”) dos tweets tem a forma que segue (a plotagem não tem edição):








-------

Obs.:

Toda a análise foi feita em Python e sem ajustes manuais (salvo adição de “stopwords”).

O código e arquivos gerados durante o processamento estão disponíveis em repositório público (GitHub) para permitir outras análises aos interessados.

Cf. em: 

https://github.com/jespimentel/mpsp_no_twitter