DESENVOLVIMENTO DE UM SIMULADOR DA MÁQUINA ENIGMA UTILIZANDO O PARADIGMA ORIENTADO A OBJETOS EM JAVA Ricardo Peixoto Robaina(1), Ânderson Fischoeder Soares(2), Carlos Michel Betemps(3) Estudante; Universidade Federal do Pampa; Bagé, RS; [email protected] ; Estudante; Universidade Federal do Pampa; Bagé, RS; [email protected]; (3) Orientador; Universidade Federal do Pampa; (1) (2) Palavras-Chave: criptografia, enigma, java, computação. INTRODUÇÃO Um dos primeiros grandes embates da história da computação aconteceu durante a Segunda Guerra Mundial e esteve relacionado ao uso de mensagens criptografadas. Dentre outras máquinas, os alemães usavam uma que ficou muito famosa, a Enigma. Essa máquina foi inventada logo depois do fim da Primeira Guerra Mundial por Arthur Scherbius (WAZLAWICK, 2016). A técnica de criptografia usada pela Enigma era extremamente difícil de decifrar de maneira manual. A tarefa tornava-se quase impossível pois a cada 24 horas os alemães trocavam as configurações da máquina. Assim, para tentar decifrar as mensagens da Enigma, Alan Turing e outros cientistas foram contratados pelo governo britânico. Em 1939, Turing conseguiu apoio para construir uma máquina eletromecânica chamada de “Bomba Criptológica” ou “Bomba Eletromecânica”, com a qual se conseguiu quebrar a criptografia da Enigma. Em virtude da relevância da Enigma para a história da computação, o objetivo do presente estudo foi desenvolver um simulador do funcionamento dessa máquina, no qual o usuário possa ter uma experiência do seu uso, além de conhecer e entender o seu complexo funcionamento. Este trabalho foi desenvolvido no contexto da disciplina de Programação Orientada a Objetos do curso de Engenharia de Computação do Campus Bagé da Universidade Federal do Pampa, visando aplicar os conceitos, as técnicas e as ferramentas estudadas. METODOLOGIA Para o desenvolvimento do trabalho, inicialmente, realizou-se um estudo acerca do funcionamento da máquina Enigma. Para tanto, as principais fontes consultadas foram livros, artigos científicos e máquinas de busca na Internet. A metodologia também contou com a utilização do paradigma orientado a objetos, especificamente por meio da linguagem de programação Java (DEITEL, 2005). Isso porque, através dele, torna-se possível fazer uma analogia entre os objetos do paradigma com os objetos da máquina real, isto é, com as peças componentes da Enigma. Dessa forma, cada parte da máquina foi implementada separadamente por uma classe Java. Logo, o simulador, como um todo, nada mais é que a composição de objetos instanciados a partir das classes programadas, que interagem para simular o funcionamento da Enigma, assim como acontece com a própria máquina, que é uma composição de suas peças, cada uma com seu papel a desempenhar. Visto que mais de 50 modelos diferentes da máquina Enigma foram fabricados, optou-se pelo modelo M3 como objeto de estudo desse trabalho, por ter sido o mais famoso. A grande diferença entre os modelos das máquinas é o número de configurações disponíveis. O modelo escolhido possui três rotores, um refletor tipo B e um painel de plugs. O desenvolvimento do simulador ocorreu a partir da definição dos nove componentes (que foram implementados como classes Java) do simulador da máquina Enigma. Esta definição teve por objetivo claramente definir as classes Java que seriam implementadas, assim como facilitar o desenvolvimento e testes do Simulador. O diagrama de classes da UML (DEITEL, 2005) da Figura 1c apresenta, de forma simplificada, as classes construídas e o relacionamento estrutural existente entre os objetos destas classes utilizados na implementação do simulador. Toda a interação do usuário com o simulador é dada através de interfaces gráficas com o usuário (GUI´s), como pode ser visto na Figura 1a. A figura 1b apresenta uma foto do modelo da máquina Enigma usado como base neste trabalho. RESULTADOS E DISCUSSÃO Para o correto processo de criptografia de uma mensagem, ambos os lados da máquina Enigma envolvidos na comunicação deveriam conhecer sua configuração. Ou seja, remetente e destinatário de Anais do 8º Salão Internacional de Ensino, Pesquisa e Extensão – Universidade Federal do Pampa mensagens precisavam saber a ordem dos rotores, a posição de cada rotor, o ajuste do anel (para colocar cada posição combinada os anéis de índices ajustáveis de cada rotor) e também a conexão dos plugues – uma descrição completa do funcionamento da máquina Enigma pode ser encontrado no trabalho de KRISCHER (2012). Dessa maneira, com o desconhecimento da configuração de qualquer um dos participantes da comunicação, a codificação/decodificação não ocorreria de maneira correta. Os testes no simulador basearam-se nesse princípio, isto é, foi colocada uma palavra como entrada na máquina (simulador) e ajustada a configuração inicial dos rotores, anéis e conexão dos plugues. Através disso, foi obtido uma codificação. A decodificação deu-se a partir do processo inverso. Ao utilizar a mesma configuração da máquina, foi obtida a palavra inicial. Após a execução de vários testes com a obtenção de resultados como esse foi comprovado que o simulador da máquina Enigma funcionava da maneira esperada e corretamente (pelo menos para o conjunto de testes realizados). Assim como na máquina original, o usuário clica em uma letra no teclado e obtém como resposta, no painel de saída, uma luz (um destaque) na letra correspondente codificada. Por meio de uma interface adicional disponível no simulador é possível ver todo o processo de cifragem/decifragem da máquina Enigma, conforme Figura 1d. Esta experiência visual facilita o entendimento do usuário no aprendizado dos conceitos básicos de criptografia desta máquina. Figura 1 – Enigma: a) Interface do Simulador, b) Foto da Máquina Enigma Original, c) Diagrama de Classes UML do Simulador e d) Interface Descritiva do Funcionamento do Simulador CONCLUSÕES O simulador implementado apresenta uma criptografia equivalente àquela da máquina original, já que consegue utilizar todas as configurações de cifra disponíveis originalmente na Enigma. Além disso, pôde-se verificar que a aparência da interface com o usuário do software é fiel à da máquina original. Em suma, o simulador construído neste trabalho é uma ferramenta adicional para o ensino de conceitos de criptografia, bem como no entendimento do contexto histórico e social que propiciou o desenvolvimento da área de computação. Existe a intenção de tornar o simulador disponível via internet para poder ser utilizado nos mais diversos fins por qualquer pessoa. REFERÊNCIAS DEITEL, H. M.; Education, 2010. DEITEL, P. J. Java: Como Programar. 8. Ed. São Paulo: Pearson KRISCHER, T. C. Um estudo da máquina Enigma [Trabalho de Conclusão de Curso]. Porto Alegre: Graduação em Ciência da Computação da UFRGS, 2012. 98 f.:il. Disponível em: <https://www.lume.ufrgs.br/bitstream/handle/10183/66106/000870987.pdf?sequence=1>. Acesso em: 26 set. 2016. WAZLAWICK, R. S. História da Computação. 1ª ed. Rio de Janeiro: Elsevier, 2016. Anais do 8º Salão Internacional de Ensino, Pesquisa e Extensão – Universidade Federal do Pampa