Criptologia, criptografia e criptoanálise

Vamos pular para o conhecimento teórico que você precisará ao escrever o projeto final. Vamos aprender mais sobre criptografia e suas partes constituintes. E, ao mesmo tempo, aprenderemos mais sobre a cifra que você usará ao escrever o projeto final.

1. Criptologia e suas partes constituintes

Criptologia é uma área do conhecimento que inclui:

  • Criptografia (a ciência das cifras).

    A criptografia tem tudo a ver com criptografar informações para protegê-las contra acesso não autorizado. Esta informação pode ser um texto, uma imagem digital, um sinal de áudio, etc. O processo de criptografia produz uma versão criptografada da informação (dados), que é chamada de texto cifrado ou texto de código.

  • Criptoanálise (métodos para quebrar essas cifras).

    A criptoanálise examina métodos de quebra de cifras e como esses métodos podem ser aplicados. Em outras palavras, a criptoanálise realiza a tarefa inversa, estudando formas de transformar informações criptografadas em texto simples.

2. Chave criptográfica

Uma chave é uma seleção de dados usados ​​para criptografar e descriptografar informações. A capacidade de descriptografar informações com sucesso depende de qual chave é usada. Se uma chave for perdida por algum motivo, será impossível descriptografar os dados.

O tamanho das chaves criptográficas é medido em bits. E isso significa que uma chave criptográfica tem um comprimento . Boa força de criptografia é fornecida com um comprimento de 128 bits.

Tipos de chaves criptográficas:

  1. Chaves simétricas (chaves secretas). Sem surpresa, essas chaves são usadas nos chamados algoritmos de chave simétrica. Seu principal objetivo é realizar transformações criptográficas diretas ou reversas (criptografia/descriptografia, verificação do código de autenticação da mensagem).

  2. Chaves assimétricas. Eles são usados ​​em algoritmos de criptografia de chave assimétrica (por exemplo, ao verificar uma assinatura digital eletrônica).

Como trabalharemos com um algoritmo de criptografia de chave simétrica, não entraremos em muitos detalhes aqui.

3. Alfabeto de substituição

Um alfabeto de substituição é um conjunto completo de caracteres usados ​​para codificar caracteres de entrada.

4. Abordagens à criptoanálise

Existem muitas abordagens e métodos diferentes de criptoanálise, ou seja, maneiras de decifrar cifras.

Descreveremos o mais simples deles:

  1. Força bruta (ou busca de força bruta) está tentando todas as chaves possíveis até encontrar a correta. A vantagem deste método é a sua simplicidade. A desvantagem é que não é adequado para cifras envolvendo um grande número de chaves possíveis.

  2. Criptoanálise baseada em dados estatísticos — nesta abordagem, reunimos estatísticas sobre a ocorrência de diferentes caracteres no texto cifrado e, em seguida, descriptografamos com base em estatísticas sobre a frequência de ocorrência de diferentes caracteres em texto simples.

    Por exemplo: sabemos que a frequência da letra P em textos em inglês é de 1,9%. Ao analisarmos o texto cifrado, procuramos um símbolo que ocorra com a mesma frequência e então concluímos que é a letra P.

    A desvantagem dessa abordagem é sua dependência da linguagem, do autor e do estilo específicos do texto.

5. Cifra de César

Este é um dos métodos de criptografia mais simples e conhecidos. Seu nome, é claro, vem do imperador Caio Júlio César, que usava esse método para se corresponder secretamente com os generais.

Uma cifra de César é uma cifra de substituição na qual cada caractere no texto simples é substituído por um caractere que é um número constante de posições à sua esquerda ou direita no alfabeto.

Digamos que definimos o deslocamento para 3. Nesse caso, A será substituído por D, B se tornará E e assim por diante.

Esta é a quantidade mínima de teoria que você precisará para concluir o projeto final. Vamos passar para a descrição da tarefa!

Projeto final do módulo Java Syntax. Vamos escrever um criptoanalisador

Sua tarefa é escrever um programa que funcione com cifras de César.

Deixe seu alfabeto criptográfico consistir em todas as letras do alfabeto inglês, bem como sinais de pontuação (. , ”” : - ! ? SPACE). Se você encontrar caracteres que não fazem parte do nosso alfabeto de substituição, basta ignorá-los.

Requisitos obrigatórios

O programa deve ter 2 modos:

  1. Criptografia/descriptografia. O programa deve criptografar e descriptografar o texto usando uma determinada chave criptográfica.

    O programa deve receber um caminho para um arquivo de texto contendo o texto fonte e criar um arquivo contendo o texto cifrado correspondente.

  2. Criptoanálise por ataque de força bruta

    Nesse modo, o programa deve quebrar o texto cifrado contido em um arquivo de texto de entrada.

    Se o usuário selecionar força bruta, o programa deverá enumerar independentemente as chaves possíveis, selecionar a chave correta e descriptografar o texto.

    Pense em quais critérios o programa deve usar para identificar com sucesso a chave correta. Pode ser necessário prestar atenção aos espaços entre as palavras ou ao uso correto dos sinais de pontuação.

Requisitos adicionais (opcionais)

1. Criptanálise por análise estatística

O usuário deve ser capaz de escolher um dos dois métodos de criptoanálise. Se o usuário selecionar o modo de análise estatística, solicite ao usuário que carregue um arquivo de texto adicional em texto simples, de preferência do mesmo autor e no mesmo estilo. Com base no conteúdo do segundo arquivo, o programa deve compilar estatísticas sobre a ocorrência de caracteres e tentar usar essas estatísticas para realizar a análise criptográfica do texto cifrado.

2. Interface do usuário

Faça caixas de diálogo para interação com o usuário a seu critério. Se desejar, você pode usar as estruturas gráficas Swing e JavaFX.

Carregue sua solução finalizada em um repositório Git público.

O projeto será verificado quando o grupo passar por ele