Curso Livre de Segurança de Sistemas/Tecnologia e Princípios de Segurança de Computadores/Ferramentas Criptográficas/Caderno Colaborativo

Algoritmos de criptografia editar

Criptografia é um elemento muito importante em aplicações, e para isso existem diversos algoritmos, como:

  • Cifração simétrica: um dos primeiros métodos de criptografia, a cifração simétrica tem alguns componentes, como: texto às claras, algoritmo de cifração, chave secreta, texto cifrado e algoritmo de cifração. Para seu uso é necessário que o algoritmo de cifração seja forte e que tanto o remetente quanto o destinatário possuam a chave secreta.
  • Funções de hash segura: essa função produz uma impressão digital das informações, sendo que o bloco de dados pode ser de qualquer tamanho e a saída deve ter um comprimento fixo. Existem muitos algoritmos de hash segura, mas ultimamente o mais utilizado tem sido o Secure Hash Algorithm.
  • Chave pública: desenvolvida em 1976, a chave pública é assimétrica, ou seja, utiliza duas chaves separadas. Seus componentes são parecidos com a cifração simétrica, sendo que ao invés de uma chave secreta temos chave pública e privada e o algoritmo não é mais de cifração, e sim de decifração.


Chave pública encriptografada editar

A criptografia de chave pública, ou criptografia assimétrica, é um esquema de criptografia que usa duas chaves matematicamente relacionadas, mas não idênticas - uma chave pública e uma chave privada. Ao contrário dos algoritmos de chave simétrica que dependem de uma chave para criptografar e descriptografar, cada chave executa uma função exclusiva. A chave pública é usada para criptografar e a chave privada é usada para descriptografar.

É computacionalmente inviável calcular a chave privada com base na chave pública. Por causa disso, as chaves públicas podem ser compartilhadas livremente, permitindo aos usuários um método fácil e conveniente para criptografar conteúdo e verificar assinaturas digitais, e as chaves privadas podem ser mantidas em segredo, garantindo que apenas os proprietários das chaves privadas possam descriptografar o conteúdo e criar assinaturas digitais.

Como as chaves públicas precisam ser compartilhadas, mas são grandes demais para serem facilmente lembradas, elas são armazenadas em certificados digitais para transporte e compartilhamento seguros. Uma vez que as chaves privadas não são compartilhadas, elas são simplesmente armazenadas no software ou sistema operacional que você usa, ou no hardware (por exemplo, token USB, módulo de segurança de hardware) contendo drivers que permitem que sejam usados ​​com seu software ou sistema operacional.

As chaves são geradas pela multiplicação de dois primos incrivelmente grandes. O algoritmo gera repetidamente grandes números aleatórios e verifica se eles são primos, até finalmente encontrar dois grandes números primos aleatórios. Toda aquela verificação de números primos pode demorar, e essas chaves têm apenas 512 bits. O atual comprimento de chave recomendado é 2.048, ou mesmo 3.072 bits.

Segurança da Criptografia Simétrica editar

A segurança fornecida por essa criptografia pode ser ampliada com o simples aumento dos comprimentos das chaves. Para cada bit adicionado ao comprimento de uma chave simétrica, a dificuldade de se decifrar a encriptação por meio de um ataque de forçado aumenta exponencialmente, porém tal criptografia não é tão segura quanto o criptografia assimétrica.

A criptografia simétrica apresenta algumas falhas de segurança, como o problema da gestão de chaves, que acaba se tornando mais complexa conforme o número de pessoas que se comunicam aumenta (para N usuários, são necessárias N2 chaves). Ela também não possui meios para verificar a identidade de quem envia ou recebe um conteúdo, mas seu maior problema é a distribuição da chave secreta, que poderá ser transmitida através de um canal de comunicação inseguro, e para resolver tal problema, muitos protocolos web utilizam uma combinação das criptografias simétricas e assimétricas para estabelecer conexões mais seguras. Um exemplo desse sistema hibrido é o protocolo Transport Layer Security(TLS).

Na tabela abaixo é possível verificar o tempo médio para quebrar a chave de criptografia simétrica utilizando o método de força bruta. As colunas são: tamanho da chave, quantidade das possíveis chaves para decifrar, tempo estimado em minutos para a quebra (levando em consideração que cada chave testada levasse um microssegundo), e o tempo necessário para que um sistema capaz de processar um milhão de chaves por microssegundo pudesse achar a chave secreta.

Tempo médio de busca, através do método de força bruta para a quebra da chave de criptografia simétrica
Tamanho da Chave Número de Chaves Tempo Requerido

(1 cripto/μs)

Tempo Requerido

(106 cripto/μs)

32 232 = 4,3x109 35,8 minutos 2,15 milisegundos
56 256 = 7,2x1016 1.142 anos 10,01 horas
128 2128 = 3,4x1038 5,4x1024 5,4x1018 anos
26 Caracteres

(permutação)

26! = 4x1026 6,4x1012 6,4x106

Algoritmos simétricos de cifração de bloco editar

Os algoritmos de cifração utilizam geralmente a cifra de blocos. Esta, recebe recebe um texto e processa esse texto em blocos de tamanho fixo de forma a gerar um texto cifrado com o tamanho igual ao bloco do texto inicial. Este algoritmo processa as cadeias maiores de texto em uma séries de blocos de tamanho fixo. Dentre os principais algoritmos simétricos que utilizam a cifra de blocos temos, o Advanced Encryption Standard (AES), o Data Encryption Standard (DES), e o Triple DES (3DES).

Data Encryption Standard editar

Utiliza o algoritmo conhecido como Data Encryption Algorithm (DEA). Adotado em 1977 pelo Instituto Nacional de Padrões e Tecnologia, que até então se chamava Escritório Nacional de Padrões, e sendo publicado na Federal Information Processing Standard. O DES recebe como entrada, um bloco de texto de 64 bits e uma chave de 56 bits, e retorna um texto em bloco cifrado de 64 bits.

Existem algumas preocupações em relação ao uso do DES, pelo fato da chave ser de apenas 56 bits, possibilitando assim a criptoanálise por exploração de variáveis do algoritmo. Diversos estudos foram feitos, testes de força bruta e outros métodos foram utilizados, todos sem sucesso até o ano de 1998, quando a máquina DES cracker, criada pela Electronic Frontier Foundation (EFF), obteve sucesso na decifração do DES, custando pouco menos de 250 mil dólares na época, e levando menos 3 dias para o resultado. Com isso a EFF publicou sobre o problema encontrado, e logo o DES se tornou praticamente inútil, pois os preços de hardware tendem a baixar e a medida que as velocidades de máquinas tendem a aumentar, a cifração desse algoritmo seria algo simples.

Triple DES editar

O Trible DES utiliza o DES básico três vezes repetidas, utilizando geralmente duas ou três chaves únicas, de forma a possuir o tamanho de chave de 112 ou 168 bits. Sendo padronizado em 1985, no padrão ANSI X9.1 para aplicações financeiras, e utilizado segundamente em 1999, como parte do Data Encryption Standard, publicado na FIPS PUB 46-3. Por questões de eficiência e segurança em função do bloco de tamanho de 64 bits de retorno, o 3DES não é um algoritmo muito recomendado para a utilização, porém até então, o algoritmo apresenta forte resistência a criptoanálise.

Advanced Encryption Standard editar

Em 1997, o Instituto Nacional de Padrões e Tecnologia publicou uma chamada de propostas, para alguém que conseguisse um algoritmo com um nível de segurança igual ou maior que o 3DES, e com um eficiência estatísticamente melhor, sendo obrigatóriamente uma sifra de bloco de 128 bits, com suporte para a 192 e 256 bits também. Sendo os principais critérios avaliados, a eficiência computacional, segurança, adequabilidade de software e hardware, flexibilidade e requisitos de memória. Concluíndo o processo de avaliação e publicando o padrão decidido em 2001, pela FIPS PUB 197, com o algoritmo proposto por Rijndael.

Funções de hash seguras editar

Também conhecida como função de hash de uma via, esse tipo de função é importante não só em autenticação de mensagens, como também em assinaturas digitais. As funções de hash, em geral, tem como objetivo gerar algo como uma impressão digital de uma determinada entrada. Para ela ser útil na autenticação de mensagens, é necessario que possua as propriedades a seguir:

  1. Deve ser aplicável a uma entrada de blocos de qualquer tamanho.
  2. Produzir uma saída de comprimento fixo;
  3. Ser relativamente fácil de computar qualquer dado de entrada, sendo viável a sua implementação em hardwares e softwares.
  4. Resistente à pré-imagem, onde qualquer h não deve achar x tal que H(x) = h. Ou seja, é possível gerar um código a partir de uma mensagem, mas não uma mensagem a partir de um código.
  5. Resistente à segunda pré-imagem ou resistente à colisão fraca, onde não deve-se achar x ≠ y tal que H(y) = H(x). Em outras palavras, significa que é impossível encontrar uma mensagem alternativa com o mesmo valor de hash.
  6. Resistente à colisão ou resistente à colisão forte, onde não deve-se achar qualquer par (x, y) tal que H(x) = H(y).

Uma função que possui apenas as cinco primeiras propriedades, é denominada função de hash fraca, caso ela implemente a sexta também, é denominada como hash forte.[1]


Segurança da Criptografia Assimétrica editar

Como já citado anteriormente, a criptografia assimétrica é mais usada do que a criptografia simétrica, conhecida também como chave publica, ela funciona com dois tipos de chaves, uma privada e outra publica, assim elas são usadas para cifrar/converter mensagens e fazer a verificação de identidade do usuário.

Ou seja, a chave privada = decifra mensagem, chave publica = converte um conteúdo. assim o remetente, quem envia um conteúdo precisa apenas da chave publica do destinatário na qual usa a chave privada para decifrar a mensagem.

Contudo, esse simples sistema garante uma grande privacidade ao usuário, assim aumenta a confiabilidade na troca de dados, pois o acesso a chave privada é restrito.

Segundo o site Crypto [2] Em 1999, o Instituto Nacional de Pesquisa da Holanda promoveu um trabalho com cientistas de 6 países. Com 300 computadores e 7 meses de trabalho, foi possível quebrar uma chave RSA com 512 bits.

Vantagens das cifras assimétricas sobre as simétricas:

- Não há necessidade de pré-transmitir a chave secreta por um canal seguro;

- Apenas uma parte conhece a chave de descriptografia, que deve ser mantida em segredo (na criptografia simétrica, essa chave é conhecida por ambas as partes e deve ser mantida em segredo por ambas);

- Em grandes redes, o número de chaves em um criptosistema assimétrico é muito menor do que em um simétrico;

Desvantagens do algoritmo de criptografia assimétrica em comparação com o simétrico:

- É mais difícil fazer alterações no algoritmo;

- Chaves mais longas;

- A criptografia-descriptografia usando um par de chaves é duas a três ordens de magnitude mais lenta do que a criptografia-descriptografia do mesmo texto usando um algoritmo simétrico. [3]

Números Aleatórios editar

Diversos algoritmos de segurança embasados em criptografia usam números aleatórios, desempenhando assim um importante papel na utilização desse método para várias aplicações de segurança de rede.

Nessa área é normal que surjam preocupações sobre se a sequência de números gerados é realmente feita de forma aleatória, sendo utilizado dois critérios para validar a aleatoriedade. Uma delas é a distribuição uniforme, consiste no fato de que a sequência de número precisa ser uniforme, em outras palavras, a frequência de ocorrência dos números precisa ser aproximadamente a mesma. O outro critério é a independência, onde nenhum valor na sequência pode ser inferido dos outros.

Existem testes hoje para validar qual é o tipo de distribuição uma sequência de números corresponde, por exemplo, se é distribuição uniforme, entretanto não existe teste para comprovar se uma sequência de números é independente. Para solucionar esse problema, são realizados diversos testes para avaliar se não exibe independência por parte da sequência, até que possa ser acreditado que exista na sequência uma independência forte.

Em aplicações como autenticação mútua e geração de chaves de sessão, o requisito deixa de ser números estatisticamente aleatório, e sim que os números da sequência sejam considerados imprevisíveis, tendo assim sequenciais realmente aleatórios. Para isso, cada número da sequência é estatisticamente independente um do outro.


Números Aleatórios e Pseudoaleatórios editar

Números pseudoaleatórios são números que são gerados a partir de alguma técnica algorítmica, entretanto, essas técnicas são determinísticas. Devido a natureza dessas técnicas, estes números não podem ser totalmente aleatórios por mais que a maioria deles passem em testes de aleatoriedade.

Alguns exemplos de números aleatórios, que são conhecidos como TRNG ou True Random Number Generator, tubos de descarga de gás, capacitores com fuga de fluxo, detectores de pulso de eventos de radiação ionizantes, variações no tempo de resposta de requisições de leitura de um disco rígido e amostras de ruído térmico [4].


Aplicação Pratica : Cifração de dados armazenados editar

Em se tratando de segurança de sistemas, um dos principais requisitos de um sistema de computador é a sua proteção de dados armazenados. Ferramentas que são incluídas nesta característica são: o controle de acesso, a detecção de intrusão e esquemas que conseguem prevenir os intrusos, apesar de existir estes mecanismos, ainda sim, existem variáveis que os podem deixar vulneráveis como o fator humano, como nos exemplos a seguir:

  • No mês de dezembro de 2004, os empregados do Bank of America realizaram um backup para enviar a central de backups, com o detalhe de que dos 1,2 milhões de dados dos funcionários do governo enviados, aonde haviam informações como: nome, endereço, numero de conta bancaria e os números de identificação, nenhum desses valores estava cifrado, por fim, o pior esta em que este backup se perdeu. O maior problema a respeito deste tipo de backup sem cifração é que, na época, ainda era comum as empresas usarem este tipo de envio de dados de banco sem o uso de cifração para a proteção de seus dados em caso de perda ou interceptação;
  • No ano de 2005 algo semelhante ao caso acima ocorreu com o grupo San Jose Medical, porem, se tratou de um roubo a um computador que possuía 185 mil registros não cifrados de usuários;
  • Por fim, um dos tipos de incidentes mais comuns que empresas sofrem, esta relacionado a perda de um componente, como notebooks ou laptops em aeroportos, ou furtos destes mesmos componentes, e ai o problema esta na não cifração dos dados importantes, visto que sem ela, a pessoa/ladrão que estiver em posse da maquina, terá acesso aos dados

Como visto, apesar das empresas investirem em sistemas de criptografia e proteção de dados através da rede, muitas vezes os dados que permanecem na central ou em um estado imóvel, tendem a não receber tanta ênfase no que diz respeito a cifração de seus dados em "repouso", algo que vem sido cobrado no decorrer dos anos como um padrão que deve ser estabelecido.

Nos últimos anos, a tecnologia e seus softwares vem avançando, no que, hoje existem inúmeros modos de cifração de dados em repouso, seja através de seus fabricantes que incluem um sistema de suporte no hardware do aparelho, ou que oferecem o uso de softwares para a realização de tal cifração, como exemplo temos o Pretty Good Privacy (PGP), que a simples modo de funcionamento, se utiliza de uma senha dada pelo usuário para cria a sua chave de cifração

  1. STALLINGS, William. BROWN, Lawrie. Segurança de Computadores. 2ed.
  2. CRYPTO, Crypto.com. Criptografia Simétrica e Assimétrica: Qual a diferença entre elas?. 2017
  3. https://www.researchgate.net/publication/333118027_A_Review_on_Symmetric_Key_Encryption_Techniques_in_Cryptography
  4. STALLINGS, William. BROWN, Lawrie. Segurança de Computadores. 2ed.