Pular para o conteúdo

Introdução

Inicialmente devemos ter em mente que a criptografia assimétrica nos coloca de frente a situação de operações que não podem ser desfeitas por uma simples operação inversa, como, por exemplo, a função quadrática no domínio dos números reais, que não pode ser desfeita com uma radiciação.

Base Teórica

A explicação de tais características nos remete à teoria dos conjuntos. Inicialmente devemos ter em mente que na criptografia assimétrica encontramos a situação matemática de função sobrejetora, que é aquela cujo conjunto imagem é coincidente com o conjunto contradomínio, ou seja, não há qualquer elemento do contradomínio que não seja elemento do conjunto imagem da tal função, e em contrapartida não encontramos a situação matemática de função injetora, que é aquela que a cada elemento do domínio corresponde diferente valor no contradomínio, não havendo, portanto, um mesmo elemento na imagem sendo obtido por dois (ou mais) elementos do domínio, tão pouco bijetoras, isto porque são utilizados algoritmos não reversíveis, ou seja uma vez aplicada a função aos dados sendo encriptados, não há uma operação contrária que os desencripte

Na criptografia assimétrica empregamos funções de transferência do tipo sobrejetoras que, absolutamente, não sejam dos tipos injetoras ou bijetoras.

Recordemos das seguintes definições:

  • Uma função injetora é aquela que leva todos os elementos de seu domínio a diferentes, porém não todos os elementos do seu contradomínio;
  • Uma função sobrejetora é aquela que leva todos os elementos de seu domínio a todos os elementos de sua imagem, ainda que ocorram coincidências no contradomínio;
  • Uma função é bijetora é aquela que leva todos os elementos de seu domínio a todos e diferentes elementos de seu contradomínio.
Representação das funções em diagrama de Venn

Em termos de teoria dos conjuntos diremos que dado um conjunto domínio da função de transferência, corresponde a esta função um conjunto imagem que é subconjunto do contradomínio.

Nas funções sobrejetoras encontramos a situação de conjunto imagem coincidente com o conjunto contradomínio. Característica emprestada às funções bijetoras, que emprestam das injetoras a característica de levar todos os elementos de seu conjunto domínio ao seu conjunto contradomínio. Temos então que as bijetoras são um caso especial das injetoras e das sobrejetoras simultaneamente.

Analogia com o mundo real

Suponhamos o cenário seguinte. Alguém, digamos eu, darei uma festa. É claro que não desejo a entrada de não convidados ao meu evento. Portanto, distribuo convites aos meus convidados e anoto seus nomes em uma lista, a qual entrego à recepção do salão. Os convidados por sua vez, ao chegarem apresentam seus convites, o recepcionista confere o nome do conviva na lista e permite sua entrada se tudo estiver de correto.

Podemos ver o convite como a chave pública que é distribuída aos autorizados e a lista destes como a chave privada usada para validar a aquela chave.

Processo Real efetivo

Quando vamos interagir com máquinas além da nossa, antes da entrada do canal de comunicação utilizamos a chave pública distribuída por nossa contraparte para criptografar a mensagem a ser enviada (esta pode ser uma senha, um arquivo, e etc.), então o envio efetivo acontece.

Ao receber o pacote de dados nossa contraparte aplica a sua chave privada para decriptar o tal pacote recebido. Ocorrendo sucesso nesta operação o pacote de dados que enviamos é aceito, ou se não lograr sucesso na decriptação, o mesmo será descartado e nossa comunicação falha.

Se a comunicação for sniffada (interceptada) o espião/intruso não tem a chave apropriada para decriptar o pacote, ficando assim sem acesso a seu conteúdo como desejado, garantindo a segurança dos dados e conexões.

Como gerar chaves no Linux

Para gerar o par de chaves (privada + pública) de cada usuário, deve-se estar logado como o usuário, e executar o comando ssh-keygen como mostrado a seguir:

ssh-keygen -t rsa

Ainda logado com cada usuário, implantar as chaves públicas nos servidores remotos devidos com o comando ssh-copy-id como mostrado a seguir:

ssh-copy-id -i ~/.ssh/id_rsa.pub login@servidor

Após a execução dos dois comandos anteriores o usuário para o qual se executou os comandos já pode efetuar login nos servidores remotos com segurança.

Referências

GONÇALVES, Amanda. O que é função. Escola Brasil – Rede Omnia. Disponível em: <https://brasilescola.uol.com.br/o-que-e/matematica/o-que-e-funcao.htm>, acesso em 13/jun./2018

Recentemente, uma questão estranha vem atrapalhando as distribuições do Linux que usam o apt para se atualizar (em geral as derivadas do Debian).

Ao executar o comando sudo apt-get update (ou sudo apt update), o processo fica parado ao se conectar a qualquer dos repositórios padrão ou lento ao rastrear e baixar cabeçalhos durante o processo de atualização.

Depois de muitas tentativas de solução e de perseguir pistas falsas (como problemas de DNS, cache e gateway), finalmente, as buscas pela Internet apontaram para uma solução surpreendente.

Anteriormente a solução era mudar o servidor para baixar as atualizações, alterando sources.list (/etc/apt/source.list). Em circunstâncias normais, isso corrigia os problemas, mas não agora.

O problema

Demorou bastante tempo para descobrir isso, mas o problema está no IPv6.

Com o IPv6 ativado, a nova pilha de rede parece tropeçar, especialmente quando tenta atualizar com o apt.

O contorno

Para bloquear uso de IPv6 para operações de atualização (update) com o apt, podemos fazer uma adequação na configuração do apt, criando um arquivo (usamos chama-lo de 99force-ipv4) com a diretiva que define uso exclusivo do protocolo IP desejado, como mostrado a seguir:

sudoedit /etc/apt/apt.conf.d/99force-ipv4

O arquivo deve conter a linha

Acquire::ForceIPv4 "true";

Se for o caso de inibir o uso de IPv4, altere o nome para 99force-ipv6 e use a linha:

Acquire::ForceIPv6 "true";


Caso queira fazê-lo por apenas uma execução existe a possibilidade de uso da opção no comando apt

-o Acquire::ForceIPv4=true

ou

-o Acquire::ForceIPv6=true

conforme o protocolo a ser forçado, como exemplificado para uso de IPv4 a seguir:

apt-get -o Acquire::ForceIPv4=true update
apt-ger -o Acquire::ForceIPv4=true upgrade

Até a próxima